<?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>226119</bug_id>
          
          <creation_ts>2021-05-21 16:09:30 -0700</creation_ts>
          <short_desc>Stop using holdLock() in WebCore as it is not compatible with Clang thread safety analysis</short_desc>
          <delta_ts>2021-05-24 02:31:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=226116</see_also>
          <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="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>aboya</cc>
    
    <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>jer.noble</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>tommyw</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1762636</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 16:09:30 -0700</bug_when>
    <thetext>Stop using holdLock() in WebCore as it is not compatible with Clang thread safety analysis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762638</commentid>
    <comment_count>1</comment_count>
      <attachid>429357</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 16:11:27 -0700</bug_when>
    <thetext>Created attachment 429357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762670</commentid>
    <comment_count>2</comment_count>
      <attachid>429365</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 16:52:18 -0700</bug_when>
    <thetext>Created attachment 429365
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762677</commentid>
    <comment_count>3</comment_count>
      <attachid>429367</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 17:04:18 -0700</bug_when>
    <thetext>Created attachment 429367
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762682</commentid>
    <comment_count>4</comment_count>
      <attachid>429370</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 17:08:12 -0700</bug_when>
    <thetext>Created attachment 429370
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762708</commentid>
    <comment_count>5</comment_count>
      <attachid>429370</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2021-05-21 18:31:29 -0700</bug_when>
    <thetext>Comment on attachment 429370
Patch

Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762717</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-21 18:54:21 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 429370 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762720</commentid>
    <comment_count>7</comment_count>
      <attachid>429386</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-05-21 19:07:54 -0700</bug_when>
    <thetext>Created attachment 429386
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762738</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-05-21 20:04:35 -0700</bug_when>
    <thetext>Committed r277908 (238041@main): &lt;https://commits.webkit.org/238041@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 429386.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1762740</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-05-21 20:05:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/78340445&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429357</attachid>
            <date>2021-05-21 16:11:27 -0700</date>
            <delta_ts>2021-05-21 16:52:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226119-20210521161125.patch</filename>
            <type>text/plain</type>
            <size>121281</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3ODk0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWQ2MTcwYzAzOTFkOGE4
ZjRmYjBiYTVmZjA1MzE1ZWIxMjY0ZmM2NS4uMjRmYTU5NGI4OGEzY2UwMzJhNTIyYjUyZmJiNzNh
M2MwNDk3M2Q3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4NSBAQAorMjAyMS0wNS0yMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgdXNpbmcgaG9sZExv
Y2soKSBpbiBXZWJDb3JlIGFzIGl0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggQ2xhbmcgdGhyZWFk
IHNhZmV0eSBhbmFseXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI2MTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU3RvcCB1c2luZyBob2xkTG9jaygpIGluIFdlYkNvcmUgYXMgaXQgaXMgbm90IGNv
bXBhdGlibGUgd2l0aCBDbGFuZyB0aHJlYWQgc2FmZXR5IGFuYWx5c2lzCisgICAgICAgIChXVEY6
OkNoZWNrZWRMb2NrKS4gVXNlIHRoZSBMb2NrZXIgY29uc3RydWN0b3IgZGlyZWN0bHkgaW5zdGVh
ZC4KKworICAgICAgICBUaGlzIGlzIGEgc3RlcCB0b3dhcmRzIGdldHRpbmcgcmlkIG9mIGhvbGRM
b2NrKCkgZW50aXJlbHkuCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvbkNhcHR1cmVTb3VyY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ2FwdHVyZVNvdXJjZUltcGw6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0J1ZmZlcjo6cmVsZWFzZU1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZl
cjo6bWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1
ZmZlclNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VO
b2RlOjpzZXRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2Rl
OjpzdGFydFBsYXlpbmcpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXROb2RlOjp+QXVkaW9Xb3Jr
bGV0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXROb2RlOjppbml0aWFsaXpl
QXVkaW9QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldE5vZGU6OnNl
dFByb2Nlc3Nvcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OnNldEJ1ZmZlcik6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OnNldEZvcm1h
dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpPc2NpbGxhdG9yTm9kZTo6c2V0UGVyaW9kaWNXYXZlKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFu
bmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6
OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnNldE9yaWVudGF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnNldERpc3RhbmNlTW9kZWwpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6c2V0UmVmRGlzdGFuY2UpOgorICAgICAgICAo
V2ViQ29yZTo6UGFubmVyTm9kZTo6c2V0TWF4RGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6
UGFubmVyTm9kZTo6c2V0Um9sbG9mZkZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXJO
b2RlOjpzZXRDb25lT3V0ZXJHYWluKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnNl
dENvbmVPdXRlckFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnNldENvbmVJ
bm5lckFuZ2xlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6dW5pbml0aWFs
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OnByb2Nlc3MpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRDdXJ2ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRPdmVyc2FtcGxlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2Vy
OjphZGRQcm9wb3NlZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6cmVtb3ZlUHJvcG9zZWREYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1h
bmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VN
YW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbik6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VU
cmFja2VyOjpzY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXI6Om5vdGlmeURhdGFiYXNlc0NoYW5nZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
R2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAg
ICAgICogY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YWludEltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldDo6YWRkTW9kdWxlKToKKyAgICAg
ICAgKiBkb20vRXZlbnRMaXN0ZW5lck1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudExp
c3RlbmVyTWFwOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudExpc3RlbmVyTWFwOjpy
ZXBsYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJNYXA6OmFkZCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudExpc3RlbmVyTWFwOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRMaXN0ZW5lck1hcDo6cmVtb3ZlRmlyc3RFdmVudExpc3RlbmVyQ3JlYXRlZEZyb21N
YXJrdXApOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudFRhcmdldDo6dmlzaXRKU0V2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKiBkb20vTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y2xlYXJFdmVudFRhcmdldERhdGEpOgorICAgICAgICAq
IGh0bWwvQ2FudmFzQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjptZW1v
cnlDb3N0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0Jhc2U6OmV4dGVybmFsTWVt
b3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjpzZXRJbWFnZUJ1
ZmZlciBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6aW52YWxpZGF0ZU5hbWVkRWxlbWVudENhY2hlIGNv
bnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQ29sbGVjdGlvbjo6bWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQ29sbGVjdGlvbjo6c2V0TmFtZWRJdGVtQ2FjaGUgY29uc3QpOgorICAgICAgICAqIGh0bWwv
T2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6
cHVzaEJ1ZmZlclRvUGxhY2Vob2xkZXIpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2Fu
dmFzOjpjb21taXRUb1BsYWNlaG9sZGVyQ2FudmFzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9P
RVNWZXJ0ZXhBcnJheU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhBcnJh
eU9iamVjdDo6ZGVsZXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViQ29yZTo6T0VTVmVy
dGV4QXJyYXlPYmplY3Q6OmJpbmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSVBvaW50ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlUXVlcnkpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5RdWVyeSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjplbmRRdWVyeSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVTYW1wbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRTYW1wbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJl
Z2luVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6c2V0SW5kZXhlZEJ1ZmZlckJpbmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFZlcnRleEFycmF5KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmFkZE1lbWJlcnNUb09wYXF1ZVJvb3RzKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRHcm91cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTENvbnRleHRHcm91cDo6ZGV0YWNoQW5kUmVtb3ZlQWxsT2JqZWN0cyk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppbml0aWFsaXplQXR0YWNobWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6c2V0QXR0YWNobWVudEludGVybmFsKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TE9iamVjdDo6cnVuRGVzdHJ1Y3Rvcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6YmluZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxldGVCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlRnJhbWVidWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlUHJv
Z3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxl
dGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6ZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliUG9pbnRlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmFkZE1lbWJl
cnNUb09wYXF1ZVJvb3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjp+UmV2ZXJiQ29udm9s
dmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29j
b2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0b3ApOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRJc1BsYXlpbmcpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6Omhh
bmRsZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVh
bWVyOjpjbGVhckFkYXB0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
V2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2Via2l0V2ViQXVk
aW9Tb3VyY2VTZXREaXNwYXRjaFRvUmVuZGVyVGhyZWFkRnVuY3Rpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5TGlua0ZpcmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheURpZFJlZnJl
c2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FjaGU6OmNhY2hlZEZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhY2hlOjpmb250Rm9yUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYWNoZTo6cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYWNoZTo6aW5hY3RpdmVGb250Q291bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpkZXN0cm95TWl4SWZOZWVkZWQp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OmNyZWF0ZU1p
eElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpD
OjpwcmVwYXJlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakM6OnVucHJlcGFyZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDOjpwcm9jZXNzQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6ZGVzdHJveUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJvb3RMYXllckJvdW5kc0RpZENoYW5nZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjYWNoZWRDR0NvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFzRmlyc3RWaWRlb1NhbXBsZVJlYWNoZWRTaW5r
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
cHVzaFRleHR1cmVUb0NvbXBvc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjp0cmlnZ2VyUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmZsdXNoQ3VycmVudEJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6d2FpdEZvckNETUF0dGFjaG1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0
V2ViU3JjQ29uc3RydWN0ZWQpOgorICAgICAgICAod2ViS2l0V2ViU3JjR2V0UHJvcGVydHkpOgor
ICAgICAgICAod2ViS2l0V2ViU3JjU2V0Q29udGV4dCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmND
cmVhdGUpOgorICAgICAgICAod2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QpOgorICAgICAgICAod2Vi
S2l0V2ViU3JjU3RvcCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNHZXRTaXplKToKKyAgICAgICAg
KHdlYktpdFdlYlNyY0lzU2Vla2FibGUpOgorICAgICAgICAod2ViS2l0V2ViU3JjRG9TZWVrKToK
KyAgICAgICAgKHdlYktpdFdlYlNyY1F1ZXJ5KToKKyAgICAgICAgKHdlYktpdFdlYlNyY1VuTG9j
ayk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNVbkxvY2tTdG9wKToKKyAgICAgICAgKHdlYktpdFdl
YlNyY1NldE1lZGlhUGxheWVyKToKKyAgICAgICAgKHdlYktpdFNyY1Bhc3NlZENPUlNBY2Nlc3ND
aGVjayk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VS
ZWNlaXZlZCk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjphY2Nlc3ND
b250cm9sQ2hlY2tGYWlsZWQpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGll
bnQ6OmxvYWRGYWlsZWQpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6
OmxvYWRGaW5pc2hlZCk6CisgICAgICAgICh3ZWJLaXRTcmNXb3VsZFRhaW50T3JpZ2luKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5
cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuY3BwOgorICAgICAgICAoaXNDRE1Qcm94eUF2YWlsYWJs
ZSk6CisgICAgICAgIChhdHRhY2hDRE1Qcm94eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU291cmNlVHJhY2tHU3RyZWFtZXI6OmlzUmVhZHlGb3JNb3JlU2FtcGxl
cyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyOjpub3RpZnlX
aGVuUmVhZHlGb3JNb3JlU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVRy
YWNrR1N0cmVhbWVyOjplbnF1ZXVlT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291
cmNlVHJhY2tHU3RyZWFtZXI6OmNsZWFyUXVldWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAod2ViS2l0TWVkaWFTcmNBY3RpdmF0ZU1vZGUpOgorICAgICAgICAod2ViS2l0TWVkaWFTcmNQ
YWRMaW5rZWQpOgorICAgICAgICAod2ViS2l0TWVkaWFTcmNMb29wKToKKyAgICAgICAgKHdlYktp
dE1lZGlhU3JjU3RyZWFtRmx1c2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9D
b2xvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om5zQ29sb3IpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHA6CisgICAgICAg
IChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAgKEhhbmRsZURl
bGVnYXRlU291cmNlKToKKyAgICAgICAgKFdlYlRocmVhZEFkb3B0QW5kUmVsZWFzZSk6CisgICAg
ICAgIChXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwpOgorICAgICAgICAoV2ViQ29y
ZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2tJbXBsKToKKyAgICAgICAgKEhhbmRsZVdlYlRo
cmVhZFJlbGVhc2VTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRo
cmVhZFJ1bi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4pOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6dmlkZW9TYW1wbGVB
dmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjph
dWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclBy
aXZhdGVNb2NrOjpmZXRjaERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjphZGRBdWRpb1NhbXBsZU9ic2VydmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92ZUF1ZGlvU2FtcGxlT2Jz
ZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRkVmlkZW9T
YW1wbGVPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpy
ZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2U6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2U6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6flJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2U6OkFkZFNpbmspOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlOjpSZW1vdmVTaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZTo6c2VuZEF1ZGlvRnJhbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjp+UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6QWRkT3JVcGRh
dGVTaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6
UmVtb3ZlU2luayk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2U6OnNlbmRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VB
dWRpb1NoYXJlZFVuaXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvU2hhcmVkVW5p
dDo6YWRkQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VBdWRpb1NoYXJlZFVuaXQ6OnJl
bW92ZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQXVkaW9TaGFyZWRVbml0Ojpmb3JF
YWNoQ2xpZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VBdWRpb1NoYXJlZFVuaXQ6
OmNsZWFyQ2xpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQXVkaW9TaGFyZWRVbml0Ojph
dWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJB
dWRpb1NvdXJjZVByb3ZpZGVyQ29jb2E6OnByZXBhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRlclJ1
bkxvb3ApOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0Ojppc0NhbmNlbGxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVx
dWVzdDo6aXNDb21wbGV0ZWRPckNhbmNlbGxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVx
dWVzdDo6ZGlkQ29tcGxldGVUcmFuc2Zlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1
ZXN0U2NoZWR1bGVyOjpjYWxsT25Xb3JrZXJUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bFJlcXVlc3RTY2hlZHVsZXI6OnN0YXJ0VGhyZWFkSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OnN0b3BUaHJlYWRJZk5vTW9yZUpvYlJ1bm5pbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OnN0b3BUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OmV4ZWN1dGVUYXNrcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6d29ya2VyVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpzdGFydFRyYW5zZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpmaW5hbGl6ZVRyYW5zZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbVNjaGVkdWxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsU3RyZWFtU2NoZWR1bGVyOjpjYWxsT25Xb3JrZXJUaHJlYWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybFN0cmVhbVNjaGVkdWxlcjo6c3RhcnRUaHJlYWRJZk5l
ZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsU3RyZWFtU2NoZWR1bGVyOjpzdG9wVGhyZWFk
SWZOb01vcmVKb2JSdW5uaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxTdHJlYW1TY2hlZHVs
ZXI6OmV4ZWN1dGVUYXNrcyk6CisgICAgICAgICogc3R5bGUvU3R5bGVCdWlsZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyOjphcHBseVByb3BlcnR5KToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRocmVhZCk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRUaHJlYWQ6OnN0YXJ0KToKKyAgICAgICAgKiB3b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdv
cmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludCk6CisgICAgICAgICogd29ya2xldHMvUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUuaDoKKwogMjAyMS0wNS0yMSAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IENoZWNrZWRMb2NrIGluIFNjcm9sbGluZ1Ry
ZWUgYW5kIGZpeCB0aHJlYWRpbmcgYnVnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUlt
cGwuY3BwCmluZGV4IDYxYjI2ZjFmOTViYTAwMzMxYjM5MGMxMGY0ZjA5YTIwMDk5ZGQ0MzUuLjk0
YzFiNTU3ZWNhMzk1OWFkODEzMjhkZGQzZjczZjg1ZGU1ZGI1YzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUlt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0
aW9uQ2FwdHVyZVNvdXJjZUltcGwuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBTcGVlY2hS
ZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3Qg
TWVkaWFUaW1lJgogCiAgICAgICAgIGF1dG8gZGF0YSA9IFdlYkF1ZGlvQnVmZmVyTGlzdCB7IGF1
ZGlvRGVzY3JpcHRpb24sIHN0YXRpY19jYXN0PHVpbnQzMl90PihzYW1wbGVDb3VudCkgfTsKICAg
ICAgICAgewotICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2RhdGFTb3VyY2VM
b2NrKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFTb3VyY2VMb2NrIH07CiAg
ICAgICAgICAgICBtX2RhdGFTb3VyY2UtPnB1bGxTYW1wbGVzKCpkYXRhLmxpc3QoKSwgc2FtcGxl
Q291bnQsIHRpbWUudGltZVZhbHVlKCksIDAsIEF1ZGlvU2FtcGxlRGF0YVNvdXJjZTo6Q29weSk7
CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
QnVmZmVyLmNwcAppbmRleCAxNTc5ZjgxNTUzMjg3MDAxZjAwMTc0ZTkyYmFjNjQyYWQ3NmRkMjNm
Li5jYjdlODRkNDUzODNlOThmODJlNjgyNDNmNTJiMmE3NTY4ZmJmZTgxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcApAQCAtMTMxLDcgKzEz
MSw3IEBAIHZvaWQgQXVkaW9CdWZmZXI6OmludmFsaWRhdGUoKQogCiB2b2lkIEF1ZGlvQnVmZmVy
OjpyZWxlYXNlTWVtb3J5KCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fY2hhbm5l
bHNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFubmVsc0xvY2sgfTsKICAgICBtX2No
YW5uZWxzLmNsZWFyKCk7CiAgICAgbV9jaGFubmVsV3JhcHBlcnMuY2xlYXIoKTsKIH0KQEAgLTI1
Miw3ICsyNTIsNyBAQCBzaXplX3QgQXVkaW9CdWZmZXI6Om1lbW9yeUNvc3QoKSBjb25zdAogICAg
IC8vIGZyb20gYmVpbmcgY2hhbmdlZCB3aGlsZSB3ZSBpdGVyYXRlIGl0LCBidXQgY2FsbGluZyBj
aGFubmVsLT5ieXRlTGVuZ3RoKCkgaXMgc2FmZQogICAgIC8vIGJlY2F1c2UgaXQgZG9lc24ndCBp
bnZvbHZlIGNoYXNpbmcgYW55IHBvaW50ZXJzIHRoYXQgY2FuIGJlIG51bGxpZmllZCB3aGlsZSB0
aGUKICAgICAvLyBBdWRpb0J1ZmZlciBpcyBhbGl2ZS4KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fY2hhbm5lbHNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jaGFubmVsc0xvY2sg
fTsKICAgICBzaXplX3QgY29zdCA9IDA7CiAgICAgZm9yIChhdXRvJiBjaGFubmVsIDogbV9jaGFu
bmVscykKICAgICAgICAgY29zdCArPSBjaGFubmVsLT5ieXRlTGVuZ3RoKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9k
ZS5jcHAKaW5kZXggOGI0M2RkMjNkMzE4NTM4NTFiODc3N2JmYmY5Yjk4ZTMyYmZhYjIwZS4uNjMz
YzUwNmEwMDc2N2ZmYjg4NThjYjA2MGY1MWQ3Njk5NmJhMTcyYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNw
cApAQCAtNDE5LDcgKzQxOSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEF1ZGlvQnVmZmVyU291cmNl
Tm9kZTo6c2V0QnVmZmVyKFJlZlB0cjxBdWRpb0J1ZmZlcj4mJiBidWZmZXIpCiAgICAgTG9ja2Vy
IGNvbnRleHRMb2NrZXIgeyBjb250ZXh0KCkuZ3JhcGhMb2NrKCkgfTsKICAgICAKICAgICAvLyBU
aGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fcHJvY2Vzc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb2Nlc3NMb2NrIH07
CiAgICAgCiAgICAgaWYgKGJ1ZmZlcikgewogICAgICAgICBtX3dhc0J1ZmZlclNldCA9IHRydWU7
CkBAIC00NzcsNyArNDc3LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQXVkaW9CdWZmZXJTb3VyY2VO
b2RlOjpzdGFydFBsYXlpbmcoZG91YmxlIHdoZW4sIGRvdWJsZSBncmFpbk8KICAgICBjb250ZXh0
KCkuc291cmNlTm9kZVdpbGxCZWdpblBsYXliYWNrKCp0aGlzKTsKIAogICAgIC8vIFRoaXMgc3lu
Y2hyb25pemVzIHdpdGggcHJvY2VzcygpLgotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9w
cm9jZXNzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsKIAogICAg
IG1faXNHcmFpbiA9IHRydWU7CiAgICAgbV9ncmFpbk9mZnNldCA9IGdyYWluT2Zmc2V0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2Rl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5j
cHAKaW5kZXggMzk2YjI4MjVkNjZkZjdjODNkMDU2ZWM1N2YwYzliMjNiYmFmNTYzOS4uMzQ5NjI2
ZmE0ZDQzZWQyNTNmY2Y5MDczMmI2NDJhZjJiYzVhYTQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwCkBAIC0xNDQsNyAr
MTQ0LDcgQEAgQXVkaW9Xb3JrbGV0Tm9kZTo6fkF1ZGlvV29ya2xldE5vZGUoKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fcHJvY2Vzc0xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9j
ayB9OwogICAgICAgICBpZiAobV9wcm9jZXNzb3IpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiB3
b3JrbGV0UHJveHkgPSBjb250ZXh0KCkuYXVkaW9Xb3JrbGV0KCkucHJveHkoKSkKICAgICAgICAg
ICAgICAgICB3b3JrbGV0UHJveHktPnBvc3RUYXNrRm9yTW9kZVRvV29ya2xldEdsb2JhbFNjb3Bl
KFttX3Byb2Nlc3NvciA9IFdURk1vdmUobV9wcm9jZXNzb3IpXShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JikgeyB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKQEAgLTE1OCw3ICsxNTgs
NyBAQCB2b2lkIEF1ZGlvV29ya2xldE5vZGU6OmluaXRpYWxpemVBdWRpb1BhcmFtZXRlcnMoY29u
c3QgVmVjdG9yPEF1ZGlvUGFyYW1EZXNjcmlwdAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgQVNTRVJUKG1fcGFyYW1ldGVycy0+bWFwKCkuaXNFbXB0eSgpKTsKIAotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
cHJvY2Vzc0xvY2sgfTsKIAogICAgIGZvciAoYXV0byYgZGVzY3JpcHRvciA6IGRlc2NyaXB0b3Jz
KSB7CiAgICAgICAgIGF1dG8gcGFyYW1ldGVyID0gQXVkaW9QYXJhbTo6Y3JlYXRlKGNvbnRleHQo
KSwgZGVzY3JpcHRvci5uYW1lLCBkZXNjcmlwdG9yLmRlZmF1bHRWYWx1ZSwgZGVzY3JpcHRvci5t
aW5WYWx1ZSwgZGVzY3JpcHRvci5tYXhWYWx1ZSwgZGVzY3JpcHRvci5hdXRvbWF0aW9uUmF0ZSk7
CkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBBdWRpb1dvcmtsZXROb2RlOjpzZXRQcm9jZXNzb3Io
UmVmUHRyPEF1ZGlvV29ya2xldFByb2Nlc3Nvcj4mJiBwcm9jZXNzb3IpCiB7CiAgICAgQVNTRVJU
KCFpc01haW5UaHJlYWQoKSk7CiAgICAgaWYgKHByb2Nlc3NvcikgewotICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9wcm9jZXNzTG9jayB9OwogICAgICAgICBtX3Byb2Nlc3NvciA9IFdURk1vdmUocHJvY2Vzc29y
KTsKICAgICAgICAgbV93b3JrbGV0VGhyZWFkID0gJlRocmVhZDo6Y3VycmVudCgpOwogICAgIH0g
ZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2
ZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9k
ZS5jcHAKaW5kZXggMmI4YTE5ZDEzOGUzYTIxZDFmNGMwMDZiMThiZjdmOTU4ZmZiOTNjMS4uNTk3
MWZkMDAyMjViY2FjY2MwZTUzNzNlNjcwMmRiNGNkMjllODUwMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCkBAIC0xNDcsNyArMTQ3
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ29udm9sdmVyTm9kZTo6c2V0QnVmZmVyKFJlZlB0cjxB
dWRpb0J1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgIExvY2tlciBjb250ZXh0TG9ja2VyIHsgY29u
dGV4dCgpLmdyYXBoTG9jaygpIH07CiAKICAgICAgICAgLy8gU3luY2hyb25pemUgd2l0aCBwcm9j
ZXNzKCkuCi0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9jayk7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb2Nlc3NMb2NrIH07CiAKICAgICAgICAgbV9yZXZl
cmIgPSBXVEZNb3ZlKHJldmVyYik7CiAgICAgICAgIG1fYnVmZmVyID0gV1RGTW92ZShidWZmZXIp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1l
bnRBdWRpb1NvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9N
ZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwCmluZGV4IGI0YmU1NzU3MTVmNzBiMDkyZTMy
ZjI2ODk4ZjAxNGI2OWU4NjlhNzIuLmExYTQ2YTY3ZWVhMjNjNTU5MjEzYTczMDg4ODJjZTUwNjc0
YmIyNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTk4LDcgKzk4LDcgQEAg
dm9pZCBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OnNldEZvcm1hdChzaXplX3QgbnVtYmVy
T2ZDaGFubmVscywgZmxvYXQgc291cmMKICAgICAgICAgbV9zb3VyY2VTYW1wbGVSYXRlID0gc291
cmNlU2FtcGxlUmF0ZTsKIAogICAgICAgICAvLyBTeW5jaHJvbml6ZSB3aXRoIHByb2Nlc3MoKS4K
LSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsKIAogICAgICAgICBpZiAoc291cmNlU2Ft
cGxlUmF0ZSAhPSBzYW1wbGVSYXRlKCkpIHsKICAgICAgICAgICAgIGRvdWJsZSBzY2FsZUZhY3Rv
ciA9IHNvdXJjZVNhbXBsZVJhdGUgLyBzYW1wbGVSYXRlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5v
ZGUuY3BwCmluZGV4IGY2OGU5ZjQ3NzhjMzc5MTUxZGU0Nzk4OGQ1NjFjOGQzZWFiZDY4YzEuLmM1
NjYyZDYwOWFmNjBhNmFlYmE2ZGE3MjFhMzVkMWQ1ODhhZDUxNzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZU5vZGUuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBNZWRpYVN0cmVhbUF1ZGlvU291
cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzb3VyY2UK
ICAgICB9CiAKICAgICAvLyBTeW5jaHJvbml6ZSB3aXRoIHByb2Nlc3MoKS4KLSAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3By
b2Nlc3NMb2NrIH07CiAKICAgICBtX3NvdXJjZU51bWJlck9mQ2hhbm5lbHMgPSBudW1iZXJPZkNo
YW5uZWxzOwogICAgIG1fc291cmNlU2FtcGxlUmF0ZSA9IHNvdXJjZVNhbXBsZVJhdGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCmlu
ZGV4IDIzZjJmMzc1ZjNhOTEzMDljNzA0YjFmODg5NDUzNTU2ODBmMjVmODcuLmM2ZjY5ZDIzMDVj
MjE1OTk2NzEzOWE4NDc5ZmFlNWQzMTgyMjI1ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwCkBAIC00MzEsNyArNDMxLDcgQEAg
dm9pZCBPc2NpbGxhdG9yTm9kZTo6c2V0UGVyaW9kaWNXYXZlKFBlcmlvZGljV2F2ZSYgcGVyaW9k
aWNXYXZlKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgCiAgICAgLy8gVGhpcyBz
eW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X3Byb2Nlc3NMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogICAg
IG1fcGVyaW9kaWNXYXZlID0gJnBlcmlvZGljV2F2ZTsKICAgICBtX3R5cGUgPSBPc2NpbGxhdG9y
VHlwZTo6Q3VzdG9tOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9QYW5uZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFu
bmVyTm9kZS5jcHAKaW5kZXggOTcxODlmZjA1YjNjMzQxMGE0Zjk4NWNjZTMyYjk3Y2E1YThkMGQ1
NC4uN2NjZjI0ZDY3MGI3ZjZlMWVmMWEzNzc5ZjliNzA0ODY4MmZmY2VkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCkBAIC0yNzUsNyArMjc1
LDcgQEAgdm9pZCBQYW5uZXJOb2RlOjpzZXRQYW5uaW5nTW9kZWwoUGFubmluZ01vZGVsVHlwZSBt
b2RlbCkKIAogICAgIGlmICghbV9wYW5uZXIuZ2V0KCkgfHwgbW9kZWwgIT0gbV9wYW5uaW5nTW9k
ZWwpIHsKICAgICAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCi0gICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9jayk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX3Byb2Nlc3NMb2NrIH07CiAKICAgICAgICAgbV9wYW5uZXIgPSBQYW5uZXI6
OmNyZWF0ZShtb2RlbCwgc2FtcGxlUmF0ZSgpLCBtX2hydGZEYXRhYmFzZUxvYWRlci5nZXQoKSk7
CiAgICAgICAgIG1fcGFubmluZ01vZGVsID0gbW9kZWw7CkBAIC0yOTIsNyArMjkyLDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gUGFubmVyTm9kZTo6c2V0UG9zaXRpb24oZmxvYXQgeCwgZmxvYXQgeSwg
ZmxvYXQgeikKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgLy8gVGhpcyBzeW5j
aHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3By
b2Nlc3NMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCiAgICAg
YXV0byBub3cgPSBjb250ZXh0KCkuY3VycmVudFRpbWUoKTsKIApAQCAtMzE5LDcgKzMxOSw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IFBhbm5lck5vZGU6OnNldE9yaWVudGF0aW9uKGZsb2F0IHgsIGZs
b2F0IHksIGZsb2F0IHopCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIC8vIFRo
aXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgotICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9wcm9jZXNzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsK
IAogICAgIGF1dG8gbm93ID0gY29udGV4dCgpLmN1cnJlbnRUaW1lKCk7CiAKQEAgLTM0Niw3ICsz
NDYsNyBAQCB2b2lkIFBhbm5lck5vZGU6OnNldERpc3RhbmNlTW9kZWwoRGlzdGFuY2VNb2RlbFR5
cGUgbW9kZWwpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIC8vIFRoaXMgc3lu
Y2hyb25pemVzIHdpdGggcHJvY2VzcygpLgotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9w
cm9jZXNzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsKIAogICAg
IG1fZGlzdGFuY2VFZmZlY3Quc2V0TW9kZWwobW9kZWwsIHRydWUpOwogfQpAQCAtMzU5LDcgKzM1
OSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBhbm5lck5vZGU6OnNldFJlZkRpc3RhbmNlKGRvdWJs
ZSByZWZEaXN0YW5jZSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJyb3IsICJy
ZWZEaXN0YW5jZSBjYW5ub3QgYmUgc2V0IHRvIGEgbmVnYXRpdmUgdmFsdWUiX3MgfTsKICAgICAK
ICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KLSAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb2Nl
c3NMb2NrIH07CiAKICAgICBtX2Rpc3RhbmNlRWZmZWN0LnNldFJlZkRpc3RhbmNlKHJlZkRpc3Rh
bmNlKTsKICAgICByZXR1cm4geyB9OwpAQCAtMzczLDcgKzM3Myw3IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IFBhbm5lck5vZGU6OnNldE1heERpc3RhbmNlKGRvdWJsZSBtYXhEaXN0YW5jZSkKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJyb3IsICJtYXhEaXN0YW5jZSBjYW5ub3QgYmUg
c2V0IHRvIGEgbm9uLXBvc2l0aXZlIHZhbHVlIl9zIH07CiAgICAgCiAgICAgLy8gVGhpcyBzeW5j
aHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3By
b2Nlc3NMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCiAgICAg
bV9kaXN0YW5jZUVmZmVjdC5zZXRNYXhEaXN0YW5jZShtYXhEaXN0YW5jZSk7CiAgICAgcmV0dXJu
IHsgfTsKQEAgLTM4Nyw3ICszODcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYW5uZXJOb2RlOjpz
ZXRSb2xsb2ZmRmFjdG9yKGRvdWJsZSByb2xsb2ZmRmFjdG9yKQogICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgUmFuZ2VFcnJvciwgInJvbGxvZmZGYWN0b3IgY2Fubm90IGJlIHNldCB0byBhIG5l
Z2F0aXZlIHZhbHVlIl9zIH07CiAgICAgCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBw
cm9jZXNzKCkuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCiAgICAgbV9kaXN0YW5jZUVmZmVj
dC5zZXRSb2xsb2ZmRmFjdG9yKHJvbGxvZmZGYWN0b3IpOwogICAgIHJldHVybiB7IH07CkBAIC00
MDEsNyArNDAxLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGFubmVyTm9kZTo6c2V0Q29uZU91dGVy
R2Fpbihkb3VibGUgZ2FpbikKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0
ZUVycm9yLCAiY29uZU91dGVyR2FpbiBtdXN0IGJlIGluIFswLCAxXSJfcyB9OwogICAgIAogICAg
IC8vIFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgotICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9wcm9jZXNzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvY2Vzc0xv
Y2sgfTsKIAogICAgIG1fY29uZUVmZmVjdC5zZXRPdXRlckdhaW4oZ2Fpbik7CiAgICAgcmV0dXJu
IHsgfTsKQEAgLTQxMiw3ICs0MTIsNyBAQCB2b2lkIFBhbm5lck5vZGU6OnNldENvbmVPdXRlckFu
Z2xlKGRvdWJsZSBhbmdsZSkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgLy8g
VGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCi0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9
OwogCiAgICAgbV9jb25lRWZmZWN0LnNldE91dGVyQW5nbGUoYW5nbGUpOwogfQpAQCAtNDIyLDcg
KzQyMiw3IEBAIHZvaWQgUGFubmVyTm9kZTo6c2V0Q29uZUlubmVyQW5nbGUoZG91YmxlIGFuZ2xl
KQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICAvLyBUaGlzIHN5bmNocm9uaXpl
cyB3aXRoIHByb2Nlc3MoKS4KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb2Nlc3NMb2NrIH07CiAKICAgICBtX2NvbmVF
ZmZlY3Quc2V0SW5uZXJBbmdsZShhbmdsZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAppbmRleCAyNTYxZmZh
ODU1MTZhMzk4NjFkZTBmMjhkMGM3ZjZmOTBhMmMwMWFkLi4yMmU5N2U4YWEyNWVhYzJmNzA4ZTIz
Zjc2YTg5YjI4ZDkzMDMwMTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2
b2lkIFNjcmlwdFByb2Nlc3Nvck5vZGU6OnVuaW5pdGlhbGl6ZSgpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBidWZmZXJDb3VudDsgKytpKSB7Ci0gICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9idWZmZXJMb2Nrc1tpXSk7CisgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX2J1ZmZlckxvY2tzW2ldIH07CiAgICAgICAgIG1faW5wdXRCdWZmZXJz
W2ldID0gbnVsbHB0cjsKICAgICAgICAgbV9vdXRwdXRCdWZmZXJzW2ldID0gbnVsbHB0cjsKICAg
ICB9CkBAIC0yMjIsNyArMjIyLDcgQEAgdm9pZCBTY3JpcHRQcm9jZXNzb3JOb2RlOjpwcm9jZXNz
KHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGJ1ZmZlckluZGV4LCBwcm90
ZWN0b3IgPSBtYWtlUmVmKCp0aGlzKV0gewotICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9idWZmZXJMb2Nrc1tidWZmZXJJbmRleF0pOworICAgICAgICAgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX2J1ZmZlckxvY2tzW2J1ZmZlckluZGV4XSB9OwogICAgICAgICAgICAg
ICAgIGZpcmVQcm9jZXNzRXZlbnQoYnVmZmVySW5kZXgpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNo
YXBlclByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVT
aGFwZXJQcm9jZXNzb3IuY3BwCmluZGV4IGQyNGRlMmViNGQwY2UxYWU5ODUwMGM2MTE3Y2Y4YWY0
YWM5ZTFkZDYuLjEyMDg4NTA4MDg5MDM2MWQ0YzQwYWE2YWNhYjk1NGJhNzAwYjU3MjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJv
Y2Vzc29yLmNwcApAQCAtNTEsNyArNTEsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EU1BLZXJu
ZWw+IFdhdmVTaGFwZXJQcm9jZXNzb3I6OmNyZWF0ZUtlcm5lbCgpCiB2b2lkIFdhdmVTaGFwZXJQ
cm9jZXNzb3I6OnNldEN1cnZlKEZsb2F0MzJBcnJheSogY3VydmUpCiB7CiAgICAgLy8gVGhpcyBz
eW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X3Byb2Nlc3NMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCiAg
ICAgbV9jdXJ2ZSA9IGN1cnZlOwogfQpAQCAtNTksNyArNTksNyBAQCB2b2lkIFdhdmVTaGFwZXJQ
cm9jZXNzb3I6OnNldEN1cnZlKEZsb2F0MzJBcnJheSogY3VydmUpCiB2b2lkIFdhdmVTaGFwZXJQ
cm9jZXNzb3I6OnNldE92ZXJzYW1wbGUoT3ZlclNhbXBsZVR5cGUgb3ZlcnNhbXBsZSkKIHsKICAg
ICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KLSAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb2Nlc3NM
b2NrIH07CiAKICAgICBtX292ZXJzYW1wbGUgPSBvdmVyc2FtcGxlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IGMxZGI4ZWZhMGIw
MGYzZTMyMWE5MGUyOTY0OWQ3ZTYzMzQxODcxMTYuLjNhNGNkODVlNWVjMTAwYzg3MTMyODc2Mzg0
NDk5NTUyOTBjZGMzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJh
c2UvRGF0YWJhc2UuY3BwCkBAIC0zMzMsNyArMzMzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRGF0
YWJhc2U6OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KGJvb2wgc2hvdWxkU2V0VmVyc2lvbkluTmV3RGF0
YWIKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIHsKICAgICAgICAgLy8gTWFrZSBzdXJl
IHdlIHdhaXQgdGlsbCB0aGUgYmFja2dyb3VuZCByZW1vdmFsIG9mIHRoZSBlbXB0eSBkYXRhYmFz
ZSBmaWxlcyBmaW5pc2hlZCBiZWZvcmUgdHJ5aW5nIHRvIG9wZW4gYW55IGRhdGFiYXNlLgotICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKERhdGFiYXNlVHJhY2tlcjo6b3BlbkRhdGFiYXNl
TXV0ZXgoKSk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBEYXRhYmFzZVRyYWNrZXI6Om9wZW5E
YXRhYmFzZU11dGV4KCkgfTsKICAgICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3BwCmluZGV4IDUxYWQ4
YThmMzRiMmE3NTExNjNkMGQ4YmUyNGI4ZGZjODRjZDE2MGIuLjk1MGI0NWZjNzFhYWIxNmYxNGUx
NWUyYTBhZmYxMWYxMjg1MjJhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKQEAgLTE4MSwxMyArMTgxLDEzIEBA
IEV4Y2VwdGlvbk9yPFJlZjxEYXRhYmFzZT4+IERhdGFiYXNlTWFuYWdlcjo6dHJ5VG9PcGVuRGF0
YWJhc2VCYWNrZW5kKERvY3VtZW50JiBkCiAKIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjphZGRQcm9w
b3NlZERhdGFiYXNlKFByb3Bvc2VkRGF0YWJhc2UmIGRhdGFiYXNlKQogewotICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9wcm9wb3NlZERhdGFiYXNlc011dGV4KTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9wcm9wb3NlZERhdGFiYXNlc011dGV4IH07CiAgICAgbV9wcm9wb3NlZERhdGFiYXNl
cy5hZGQoJmRhdGFiYXNlKTsKIH0KIAogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OnJlbW92ZVByb3Bv
c2VkRGF0YWJhc2UoUHJvcG9zZWREYXRhYmFzZSYgZGF0YWJhc2UpCiB7Ci0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX3Byb3Bvc2VkRGF0YWJhc2VzTXV0ZXgpOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3Byb3Bvc2VkRGF0YWJhc2VzTXV0ZXggfTsKICAgICBtX3Byb3Bvc2VkRGF0YWJhc2Vz
LnJlbW92ZSgmZGF0YWJhc2UpOwogfQogCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBEYXRhYmFz
ZU1hbmFnZXI6OnN0b3BEYXRhYmFzZXMoRG9jdW1lbnQmIGRvY3VtZW50LCBEYXRhYmFzZVRhc2tT
eW5jaHJvbml6ZXIKIFN0cmluZyBEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2Uo
U2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lLCBib29sIGNyZWF0ZUlm
RG9lc05vdEV4aXN0KQogewogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X3Byb3Bvc2VkRGF0YWJhc2VzTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9w
b3NlZERhdGFiYXNlc011dGV4IH07CiAgICAgICAgIGZvciAoYXV0byogcHJvcG9zZWREYXRhYmFz
ZSA6IG1fcHJvcG9zZWREYXRhYmFzZXMpIHsKICAgICAgICAgICAgIGlmIChwcm9wb3NlZERhdGFi
YXNlLT5kZXRhaWxzKCkubmFtZSgpID09IG5hbWUgJiYgcHJvcG9zZWREYXRhYmFzZS0+b3JpZ2lu
KCkuZXF1YWwoJm9yaWdpbikpCiAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAt
MjUzLDcgKzI1Myw3IEBAIFN0cmluZyBEYXRhYmFzZU1hbmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJh
c2UoU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgY29uc3QgU3RyaW5nCiBEYXRhYmFzZURldGFpbHMg
RGF0YWJhc2VNYW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbihjb25zdCBTdHJpbmcmIG5h
bWUsIFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4pCiB7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1fcHJvcG9zZWREYXRhYmFzZXNNdXRleCk7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX3Byb3Bvc2VkRGF0YWJhc2VzTXV0ZXggfTsKICAgICAgICAgZm9yIChhdXRvKiBw
cm9wb3NlZERhdGFiYXNlIDogbV9wcm9wb3NlZERhdGFiYXNlcykgewogICAgICAgICAgICAgaWYg
KHByb3Bvc2VkRGF0YWJhc2UtPmRldGFpbHMoKS5uYW1lKCkgPT0gbmFtZSAmJiBwcm9wb3NlZERh
dGFiYXNlLT5vcmlnaW4oKS5lcXVhbCgmb3JpZ2luKSkgewogICAgICAgICAgICAgICAgIEFTU0VS
VCgmcHJvcG9zZWREYXRhYmFzZS0+ZGV0YWlscygpLnRocmVhZCgpID09ICZUaHJlYWQ6OmN1cnJl
bnQoKSB8fCBpc01haW5UaHJlYWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggMjkxMDgzYjFmMzk3MmQy
Njk3Yjk1YmY1ZDRkZTcxZmE5OTExMjAzYS4uYTAzODIzNGI3NTU2YmNiNWViZTM3MWIzYzU4MmE2
ODU1OGFiYjU5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZVRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0
YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtMTMyMSw3ICsxMzIxLDcgQEAgc3RhdGljIE5v
dGlmaWNhdGlvblF1ZXVlJiBub3RpZmljYXRpb25RdWV1ZSgpCiAKIHZvaWQgRGF0YWJhc2VUcmFj
a2VyOjpzY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdlZChjb25zdCBTZWN1cml0eU9yaWdpbkRh
dGEmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBuYW1lKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobm90aWZpY2F0aW9uTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG5vdGlmaWNhdGlv
bkxvY2sgfTsKICAgICBub3RpZmljYXRpb25RdWV1ZSgpLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihv
cmlnaW4uaXNvbGF0ZWRDb3B5KCksIG5hbWUuaXNvbGF0ZWRDb3B5KCkpKTsKICAgICBzY2hlZHVs
ZUZvck5vdGlmaWNhdGlvbigpOwogfQpAQCAtMTM0OCw3ICsxMzQ4LDcgQEAgdm9pZCBEYXRhYmFz
ZVRyYWNrZXI6Om5vdGlmeURhdGFiYXNlc0NoYW5nZWQoKQogCiAgICAgTm90aWZpY2F0aW9uUXVl
dWUgbm90aWZpY2F0aW9uczsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bm90aWZpY2F0aW9uTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBub3RpZmljYXRpb25M
b2NrIH07CiAgICAgICAgIG5vdGlmaWNhdGlvbnMuc3dhcChub3RpZmljYXRpb25RdWV1ZSgpKTsK
ICAgICAgICAgbm90aWZpY2F0aW9uU2NoZWR1bGVkID0gZmFsc2U7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCmluZGV4IGMzMGZi
ODk0ZGFhOWYzMTJjZWYxMzk1OTQ1Y2I0NzFjZGNmMGNhNzEuLmVmMmVhY2UzZGVlYTg4NzllNDc5
ODQ0Y2MxMDE4OGM0NmE1ZjA3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCB2b2lkIEpTRE9NR2xv
YmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0
b3IpCiAgICAgQmFzZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKIAogICAg
IHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0aGlzT2JqZWN0LT5tX2djTG9jayk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyB0aGlzT2JqZWN0LT5tX2djTG9jayB9OwogCiAgICAg
ICAgIGZvciAoYXV0byYgc3RydWN0dXJlIDogdGhpc09iamVjdC0+c3RydWN0dXJlcyhsb2NrZXIp
LnZhbHVlcygpKQogICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoc3RydWN0dXJlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2Nv
cGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYWludFdvcmtsZXRH
bG9iYWxTY29wZUN1c3RvbS5jcHAKaW5kZXggYjNjNDVjN2UxNTc4NjM4NDNkMDVhYjU3MDlhNzAy
NDdlMjY2OTg3My4uYmI4ZDdlMGMxYTE0NWNmYjI0YWYyMzcxY2E4ZWUzYzEzMTE4Mjk3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYWludFdvcmtsZXRHbG9iYWxT
Y29wZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYWludFdv
cmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAgdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIHRlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+CiB2b2lkIEpTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKFZpc2l0b3ImIHZpc2l0b3IpCiB7
Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3cmFwcGVkKCkucGFpbnREZWZpbml0aW9uTG9j
aygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgd3JhcHBlZCgpLnBhaW50RGVmaW5pdGlvbkxvY2so
KSB9OwogICAgIGZvciAoYXV0byYgcmVnaXN0ZXJlZCA6IHdyYXBwZWQoKS5wYWludERlZmluaXRp
b25NYXAoKS52YWx1ZXMoKSkgewogICAgICAgICByZWdpc3RlcmVkLT5wYWludENhbGxiYWNrLT52
aXNpdEpTRnVuY3Rpb24odmlzaXRvcik7CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kVW5iYXJyaWVy
ZWQocmVnaXN0ZXJlZC0+cGFpbnRDb25zdHJ1Y3Rvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
YWludEltYWdlVmFsdWUuY3BwCmluZGV4IDhjYTZlNWUyMGM1NGU3NmMxZTY5NmVhMjhiZWQ0NDAx
MjEyNDEzZWIuLmNlMTVlYWNjYWRkMzJiZDAxOGIxNDUzYzMwNTMxNGM5MDcyOWFmN2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFsdWUuY3BwCkBAIC01NCw3ICs1NCw3IEBA
IFJlZlB0cjxJbWFnZT4gQ1NTUGFpbnRJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50JiBy
ZW5kZXJFbGVtZW50LCBjb25zdCBGbG9hCiAgICAgYXV0byogc2VsZWN0ZWRHbG9iYWxTY29wZSA9
IHJlbmRlckVsZW1lbnQuZG9jdW1lbnQoKS5wYWludFdvcmtsZXRHbG9iYWxTY29wZUZvck5hbWUo
bV9uYW1lKTsKICAgICBpZiAoIXNlbGVjdGVkR2xvYmFsU2NvcGUpCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soc2VsZWN0ZWRHbG9iYWxTY29wZS0+
cGFpbnREZWZpbml0aW9uTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc2VsZWN0ZWRHbG9i
YWxTY29wZS0+cGFpbnREZWZpbml0aW9uTG9jaygpIH07CiAgICAgYXV0byogcmVnaXN0cmF0aW9u
ID0gc2VsZWN0ZWRHbG9iYWxTY29wZS0+cGFpbnREZWZpbml0aW9uTWFwKCkuZ2V0KG1fbmFtZSk7
CiAKICAgICBpZiAoIXJlZ2lzdHJhdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9ET01DU1NQYWludFdvcmtsZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50
V29ya2xldC5jcHAKaW5kZXggNmEwZTE5NjY0NTQyZTgxNjgxYzdhNjk3ZWNjNzExNWI3YTRkZmMx
MS4uMmZhNGUyMGIwNjdjNWE3YzhlYzBlZjI2NDQzY2JlZjA1YTBhY2NjMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBQ
YWludFdvcmtsZXQ6OmFkZE1vZHVsZShjb25zdCBTdHJpbmcmIG1vZHVsZVVSTCwgV29ya2xldE9w
dGlvbnMmJiwgRE9NUHJvbWkKICAgICBhdXRvIGNvbnRleHQgPSBtYXliZUNvbnRleHQucmVsZWFz
ZU5vbk51bGwoKTsKICAgICBjb250ZXh0LT5ldmFsdWF0ZSgpOwogCi0gICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhjb250ZXh0LT5wYWludERlZmluaXRpb25Mb2NrKCkpOworICAgIExvY2tlciBs
b2NrZXIgeyBjb250ZXh0LT5wYWludERlZmluaXRpb25Mb2NrKCkgfTsKICAgICBmb3IgKGF1dG8m
IG5hbWUgOiBjb250ZXh0LT5wYWludERlZmluaXRpb25NYXAoKS5rZXlzKCkpCiAgICAgICAgIGRv
Y3VtZW50LT5zZXRQYWludFdvcmtsZXRHbG9iYWxTY29wZUZvck5hbWUobmFtZSwgbWFrZVJlZihj
b250ZXh0LmdldCgpKSk7CiAgICAgcHJvbWlzZS5yZXNvbHZlKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRMaXN0ZW5lck1hcC5jcHAKaW5kZXggZmMzNjNhZTMzYWY5Mjc2ZmZjNWNhNmEyYjZiMWNm
Mjc1YmE4MDA5NS4uNTljMGIyOTE3M2JhNDY0OTBkZTllZTBmZjdhYjAzYzAzMjQ2ZDhjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcApAQCAtODIsNyArODIsNyBAQCBi
b29sIEV2ZW50TGlzdGVuZXJNYXA6OmNvbnRhaW5zQWN0aXZlKGNvbnN0IEF0b21TdHJpbmcmIGV2
ZW50VHlwZSkgY29uc3QKIAogdm9pZCBFdmVudExpc3RlbmVyTWFwOjpjbGVhcigpCiB7Ci0gICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xv
Y2sgfTsKICAgICAKICAgICBhc3NlcnROb0FjdGl2ZUl0ZXJhdG9ycygpOwogCkBAIC0xMTcsNyAr
MTE3LDcgQEAgc3RhdGljIGlubGluZSBzaXplX3QgZmluZExpc3RlbmVyKGNvbnN0IEV2ZW50TGlz
dGVuZXJWZWN0b3ImIGxpc3RlbmVycywgRXZlbnRMaXMKIAogdm9pZCBFdmVudExpc3RlbmVyTWFw
OjpyZXBsYWNlKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgb2xk
TGlzdGVuZXIsIFJlZjxFdmVudExpc3RlbmVyPiYmIG5ld0xpc3RlbmVyLCBjb25zdCBSZWdpc3Rl
cmVkRXZlbnRMaXN0ZW5lcjo6T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIAog
ICAgIGFzc2VydE5vQWN0aXZlSXRlcmF0b3JzKCk7CiAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lk
IEV2ZW50TGlzdGVuZXJNYXA6OnJlcGxhY2UoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBF
dmVudExpc3RlbmVyJiBvbGRMaQogCiBib29sIEV2ZW50TGlzdGVuZXJNYXA6OmFkZChjb25zdCBB
dG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBjb25z
dCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lcjo6T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OwogICAgIAogICAgIGFzc2VydE5vQWN0aXZlSXRlcmF0b3JzKCk7CiAKQEAgLTE2Miw3ICsxNjIs
NyBAQCBzdGF0aWMgYm9vbCByZW1vdmVMaXN0ZW5lckZyb21WZWN0b3IoRXZlbnRMaXN0ZW5lclZl
Y3RvciYgbGlzdGVuZXJzLCBFdmVudExpc3RlbgogCiBib29sIEV2ZW50TGlzdGVuZXJNYXA6OnJl
bW92ZShjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVy
LCBib29sIHVzZUNhcHR1cmUpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2sp
OworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAKICAgICBhc3NlcnROb0FjdGl2
ZUl0ZXJhdG9ycygpOwogCkBAIC0yMDIsNyArMjAyLDcgQEAgc3RhdGljIHZvaWQgcmVtb3ZlRmly
c3RMaXN0ZW5lckNyZWF0ZWRGcm9tTWFya3VwKEV2ZW50TGlzdGVuZXJWZWN0b3ImIGxpc3RlbmVy
VmUKIAogdm9pZCBFdmVudExpc3RlbmVyTWFwOjpyZW1vdmVGaXJzdEV2ZW50TGlzdGVuZXJDcmVh
dGVkRnJvbU1hcmt1cChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUpCiB7Ci0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsK
ICAgICAKICAgICBhc3NlcnROb0FjdGl2ZUl0ZXJhdG9ycygpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
VGFyZ2V0LmNwcAppbmRleCAxMjA0MDFmODg4YmNhNjc3NjgxMWQ5MGQyNWY4MjQxZjU1MTcxNzQx
Li4zZDRhNmZkZjEwZjViZGMyZmFkY2ZkMzcxYjgwM2E2ZjgxNDBiZmZhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5jcHAKQEAgLTM5Myw3ICszOTMsNyBAQCB2b2lkIEV2ZW50VGFyZ2V0Ojp2
aXNpdEpTRXZlbnRMaXN0ZW5lcnMoVmlzaXRvciYgdmlzaXRvcikKICAgICBpZiAoIWRhdGEpCiAg
ICAgICAgIHJldHVybjsKICAgICAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRhdGEtPmV2
ZW50TGlzdGVuZXJNYXAubG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgZGF0YS0+ZXZlbnRM
aXN0ZW5lck1hcC5sb2NrKCkgfTsKICAgICBFdmVudExpc3RlbmVySXRlcmF0b3IgaXRlcmF0b3Io
JmRhdGEtPmV2ZW50TGlzdGVuZXJNYXApOwogICAgIHdoaWxlIChhdXRvKiBsaXN0ZW5lciA9IGl0
ZXJhdG9yLm5leHRMaXN0ZW5lcigpKQogICAgICAgICBsaXN0ZW5lci0+dmlzaXRKU0Z1bmN0aW9u
KHZpc2l0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IGIyZmEzYTIyNWU0NWJiOTg3Yzk0N2ZmNmI0
MWUzYTRkMGJiYWNjNTguLjkxNjkzYjQyOWMzZTJlMjE2Yzc0YzYxYjYxNDZiZTM0NjFlOTQ5NTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKQEAgLTIyMzksNyArMjIzOSw3IEBAIEV2ZW50VGFyZ2V0RGF0YSYg
Tm9kZTo6ZW5zdXJlRXZlbnRUYXJnZXREYXRhKCkKICAgICBKU0M6OlZNKiB2bSA9IGNvbW1vblZN
T3JOdWxsKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXZtIHx8IHZtLT5oZWFwLndvcmxkSXNSdW5u
aW5nKCkpOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhzX2V2ZW50VGFyZ2V0RGF0YU1h
cExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBzX2V2ZW50VGFyZ2V0RGF0YU1hcExvY2sgfTsK
ICAgICBzZXRIYXNFdmVudFRhcmdldERhdGEodHJ1ZSk7CiAgICAgcmV0dXJuICpldmVudFRhcmdl
dERhdGFNYXAoKS5hZGQodGhpcywgbWFrZVVuaXF1ZTxFdmVudFRhcmdldERhdGE+KCkpLml0ZXJh
dG9yLT52YWx1ZTsKIH0KQEAgLTIyNDgsNyArMjI0OCw3IEBAIHZvaWQgTm9kZTo6Y2xlYXJFdmVu
dFRhcmdldERhdGEoKQogewogICAgIEpTQzo6Vk0qIHZtID0gY29tbW9uVk1Pck51bGwoKTsKICAg
ICBSRUxFQVNFX0FTU0VSVCghdm0gfHwgdm0tPmhlYXAud29ybGRJc1J1bm5pbmcoKSk7Ci0gICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhzX2V2ZW50VGFyZ2V0RGF0YU1hcExvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBzX2V2ZW50VGFyZ2V0RGF0YU1hcExvY2sgfTsKICAgICBldmVudFRhcmdl
dERhdGFNYXAoKS5yZW1vdmUodGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvQ2FudmFzQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3Bw
CmluZGV4IDNlNDI0OWMwYTk1YzU2MWJlMzhkMzExMmMzM2JlNDM0MzNjNjBlMjEuLjA3ZWI2NTE0
OWZjOTk2NzA1N2U4MmFjNjQ5NWRkMTIwYzJkNWUyNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvQ2FudmFzQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNC
YXNlLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHNpemVfdCBDYW52YXNCYXNlOjptZW1vcnlDb3N0
KCkgY29uc3QKICAgICAvLyBtZW1vcnlDb3N0KCkgbWF5IGJlIGludm9rZWQgY29uY3VycmVudGx5
IGZyb20gYSBHQyB0aHJlYWQsIGFuZCB3ZSBuZWVkIHRvIGJlIGNhcmVmdWwKICAgICAvLyBhYm91
dCB3aGF0IGRhdGEgd2UgYWNjZXNzIGhlcmUgYW5kIGhvdy4gV2UgbmVlZCB0byBob2xkIGEgbG9j
ayB0byBwcmV2ZW50IG1faW1hZ2VCdWZmZXIKICAgICAvLyBmcm9tIGJlaW5nIGNoYW5nZWQgd2hp
bGUgd2UgYWNjZXNzIGl0LgotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9pbWFnZUJ1ZmZl
ckFzc2lnbm1lbnRMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9pbWFnZUJ1ZmZlckFzc2ln
bm1lbnRMb2NrIH07CiAgICAgaWYgKCFtX2ltYWdlQnVmZmVyKQogICAgICAgICByZXR1cm4gMDsK
ICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci0+bWVtb3J5Q29zdCgpOwpAQCAtMTE0LDcgKzExNCw3
IEBAIHNpemVfdCBDYW52YXNCYXNlOjpleHRlcm5hbE1lbW9yeUNvc3QoKSBjb25zdAogICAgIC8v
IGV4dGVybmFsTWVtb3J5Q29zdCgpIG1heSBiZSBpbnZva2VkIGNvbmN1cnJlbnRseSBmcm9tIGEg
R0MgdGhyZWFkLCBhbmQgd2UgbmVlZCB0byBiZSBjYXJlZnVsCiAgICAgLy8gYWJvdXQgd2hhdCBk
YXRhIHdlIGFjY2VzcyBoZXJlIGFuZCBob3cuIFdlIG5lZWQgdG8gaG9sZCBhIGxvY2sgdG8gcHJl
dmVudCBtX2ltYWdlQnVmZmVyCiAgICAgLy8gZnJvbSBiZWluZyBjaGFuZ2VkIHdoaWxlIHdlIGFj
Y2VzcyBpdC4KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW1hZ2VCdWZmZXJBc3NpZ25t
ZW50TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1faW1hZ2VCdWZmZXJBc3NpZ25tZW50TG9j
ayB9OwogICAgIGlmICghbV9pbWFnZUJ1ZmZlcikKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0
dXJuIG1faW1hZ2VCdWZmZXItPmV4dGVybmFsTWVtb3J5Q29zdCgpOwpAQCAtMTg4LDcgKzE4OCw3
IEBAIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gQ2FudmFzQmFzZTo6c2V0SW1hZ2VCdWZmZXIoUmVmUHRy
PEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikgY29uCiB7CiAgICAgUmVmUHRyPEltYWdlQnVmZmVyPiBy
ZXR1cm5CdWZmZXI7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW1h
Z2VCdWZmZXJBc3NpZ25tZW50TG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2ltYWdl
QnVmZmVyQXNzaWdubWVudExvY2sgfTsKICAgICAgICAgbV9jb250ZXh0U3RhdGVTYXZlciA9IG51
bGxwdHI7CiAgICAgICAgIHJldHVybkJ1ZmZlciA9IHN0ZDo6ZXhjaGFuZ2UobV9pbWFnZUJ1ZmZl
ciwgV1RGTW92ZShidWZmZXIpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rp
b24uY3BwCmluZGV4IGRmMmEzYTcwOGZjZDc2ODhlNTQwZGJlNDY4ODdlNTI0MGYyMzQzZWIuLmVl
MDhmODMwZGQ0YzUxYzQ3ZTZhNjBhNjJiMzU0ZTE3MGFhMTdjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTENvbGxlY3Rpb24uY3BwCkBAIC0xNTMsNyArMTUzLDcgQEAgdm9pZCBIVE1MQ29sbGVj
dGlvbjo6aW52YWxpZGF0ZU5hbWVkRWxlbWVudENhY2hlKERvY3VtZW50JiBkb2N1bWVudCkgY29u
c3QKICAgICBBU1NFUlQoaGFzTmFtZWRFbGVtZW50Q2FjaGUoKSk7CiAgICAgZG9jdW1lbnQuY29s
bGVjdGlvbldpbGxDbGVhcklkTmFtZU1hcCgqdGhpcyk7CiAgICAgewotICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fbmFtZWRFbGVtZW50Q2FjaGVBc3NpZ25tZW50TG9jayk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX25hbWVkRWxlbWVudENhY2hlQXNzaWdubWVudExvY2sgfTsK
ICAgICAgICAgbV9uYW1lZEVsZW1lbnRDYWNoZSA9IG51bGxwdHI7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCmluZGV4IDg5MzdiMDM2YzIzODIyZjFlZjE5NTdlODNk
ZGM1MzA5YzQyNTc0M2YuLjRlMjMwYTBhZjhkOTc1MmIwMDJlN2M3YzkwNzg3OWZmMzk3NWQ3YzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKQEAgLTE3NSw3ICsxNzUsNyBAQCBp
bmxpbmUgc2l6ZV90IEhUTUxDb2xsZWN0aW9uOjptZW1vcnlDb3N0KCkgY29uc3QKIHsKICAgICAv
LyBtZW1vcnlDb3N0KCkgbWF5IGJlIGludm9rZWQgY29uY3VycmVudGx5IGZyb20gYSBHQyB0aHJl
YWQsIGFuZCB3ZSBuZWVkIHRvIGJlIGNhcmVmdWwgYWJvdXQgd2hhdCBkYXRhIHdlIGFjY2VzcyBo
ZXJlIGFuZCBob3cuCiAgICAgLy8gSGVuY2UsIHdlIG5lZWQgdG8gZ3VhcmQgbV9uYW1lZEVsZW1l
bnRDYWNoZSBmcm9tIGJlaW5nIHJlcGxhY2VkIHdoaWxlIGFjY2Vzc2luZyBpdC4KLSAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fbmFtZWRFbGVtZW50Q2FjaGVBc3NpZ25tZW50TG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbmFtZWRFbGVtZW50Q2FjaGVBc3NpZ25tZW50TG9jayB9Owog
ICAgIHJldHVybiBtX25hbWVkRWxlbWVudENhY2hlID8gbV9uYW1lZEVsZW1lbnRDYWNoZS0+bWVt
b3J5Q29zdCgpIDogMDsKIH0KIApAQCAtMjIzLDcgKzIyMyw3IEBAIGlubGluZSB2b2lkIEhUTUxD
b2xsZWN0aW9uOjpzZXROYW1lZEl0ZW1DYWNoZShzdGQ6OnVuaXF1ZV9wdHI8Q29sbGVjdGlvbk5h
bWVkRWxlCiAgICAgQVNTRVJUKCFtX25hbWVkRWxlbWVudENhY2hlKTsKICAgICBjYWNoZS0+ZGlk
UG9wdWxhdGUoKTsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9uYW1l
ZEVsZW1lbnRDYWNoZUFzc2lnbm1lbnRMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
bmFtZWRFbGVtZW50Q2FjaGVBc3NpZ25tZW50TG9jayB9OwogICAgICAgICBtX25hbWVkRWxlbWVu
dENhY2hlID0gV1RGTW92ZShjYWNoZSk7CiAgICAgfQogICAgIGRvY3VtZW50KCkuY29sbGVjdGlv
bkNhY2hlZElkTmFtZU1hcCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L09mZnNjcmVlbkNhbnZhcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZh
cy5jcHAKaW5kZXggM2E1NDNiY2IyYmRhN2M2OTI1MzI0MDA1YzU1YmJkNWY3Njk5OGUzNi4uM2Vm
MjNhYjNiN2JjZGUxZjBlYmQ1ZDM3MGMwMTk1Mjg3Y2EzMjdlNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcApAQCAtNDMzLDcgKzQzMyw3IEBAIHZvaWQgT2Zmc2NyZWVu
Q2FudmFzOjpzZXRQbGFjZWhvbGRlckNhbnZhcyhIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzKQog
dm9pZCBPZmZzY3JlZW5DYW52YXM6OnB1c2hCdWZmZXJUb1BsYWNlaG9sZGVyKCkKIHsKICAgICBj
YWxsT25NYWluVGhyZWFkKFtwbGFjZWhvbGRlckRhdGEgPSBtYWtlUmVmKCptX3BsYWNlaG9sZGVy
RGF0YSldICgpIG11dGFibGUgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHBsYWNl
aG9sZGVyRGF0YS0+YnVmZmVyTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBwbGFjZWhv
bGRlckRhdGEtPmJ1ZmZlckxvY2sgfTsKICAgICAgICAgaWYgKHBsYWNlaG9sZGVyRGF0YS0+Y2Fu
dmFzICYmIHBsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlcikKICAgICAgICAgICAg
IHBsYWNlaG9sZGVyRGF0YS0+Y2FudmFzLT5zZXRJbWFnZUJ1ZmZlckFuZE1hcmtEaXJ0eShXVEZN
b3ZlKHBsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlcikpOwogICAgICAgICBwbGFj
ZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRCdWZmZXIgPSBudWxscHRyOwpAQCAtNDU2LDcgKzQ1
Niw3IEBAIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpjb21taXRUb1BsYWNlaG9sZGVyQ2FudmFzKCkK
ICAgICAgICAgICAgIG1fcGxhY2Vob2xkZXJEYXRhLT5idWZmZXJQaXBlU291cmNlLT5oYW5kbGUo
V1RGTW92ZShidWZmZXJDb3B5KSk7CiAgICAgfQogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX3BsYWNlaG9sZGVyRGF0YS0+YnVmZmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
cGxhY2Vob2xkZXJEYXRhLT5idWZmZXJMb2NrIH07CiAgICAgYm9vbCBzaG91bGRQdXNoQnVmZmVy
ID0gIW1fcGxhY2Vob2xkZXJEYXRhLT5wZW5kaW5nQ29tbWl0QnVmZmVyOwogICAgIG1fcGxhY2Vo
b2xkZXJEYXRhLT5wZW5kaW5nQ29tbWl0QnVmZmVyID0gaW1hZ2VCdWZmZXItPmNvcHlSZWN0VG9C
dWZmZXIoRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgaW1hZ2VCdWZmZXItPmxvZ2ljYWxTaXplKCkp
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IsIGltYWdlQnVmZmVyLT5jb250ZXh0KCkpOwog
ICAgIGlmIChtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciAmJiBzaG91bGRQ
dXNoQnVmZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVy
dGV4QXJyYXlPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VTVmVydGV4
QXJyYXlPYmplY3QuY3BwCmluZGV4IGRiZTU0ZGM2ODgxMmJiZDMwNjU1YjliOTFmZWIxNzYyOTFl
YTJjMTEuLjMwZDRiM2ZmMGNiZDI0ZjUzODA4NjMwYmNjNDMwNjdkOGNlOGYwNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAK
QEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6ZGVsZXRlVmVydGV4
QXJyYXlPRVMoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUyogYXJyYXkKICAgICBpZiAoIW1fY29u
dGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2Nv
bnRleHQtPm9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb250ZXh0
LT5vYmplY3RHcmFwaExvY2soKSB9OwogCiAgICAgaWYgKCFhcnJheU9iamVjdCB8fCBtX2NvbnRl
eHQtPmlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtODgsNyArODgsNyBAQCB2
b2lkIE9FU1ZlcnRleEFycmF5T2JqZWN0OjpiaW5kVmVydGV4QXJyYXlPRVMoV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdE9FUyogYXJyYXlPYgogICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICByZXR1
cm47CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fY29udGV4dC0+b2JqZWN0R3JhcGhM
b2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2NvbnRleHQtPm9iamVjdEdyYXBoTG9jaygp
IH07CiAKICAgICBpZiAobV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5n
Q29udGV4dC5jcHAKaW5kZXggYTFhNDI5ZjM1NWJiMzAxMTc1NDFiNWQ3ODJmZTk4YjE5NDJkN2M0
MC4uZWIyZDNhYThkNjM3ZTRkNGJhNjNhMTM4MTgwYTA3ZGIyOWM0MDZmNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAK
QEAgLTY5NCw3ICs2OTQsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmdldEJ1ZmZl
clN1YkRhdGEoR0NHTGVudW0gdGFyZ2V0LCBsb25nIGxvbmcgc3JjQnl0ZQogCiB2b2lkIFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRGcmFtZWJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFdlYkdM
RnJhbWVidWZmZXIqIGJ1ZmZlcikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVj
dEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsK
IAogICAgIGlmICghdmFsaWRhdGVOdWxsYWJsZVdlYkdMT2JqZWN0KCJiaW5kRnJhbWVidWZmZXIi
LCBidWZmZXIpKQogICAgICAgICByZXR1cm47CkBAIC03MjQsNyArNzI0LDcgQEAgdm9pZCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpibGl0RnJhbWVidWZmZXIoR0NHTGludCBzcmNYMCwgR0NHTGlu
dCBzcmNZMCwgR0NHTGkKIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVGcmFt
ZWJ1ZmZlcihXZWJHTEZyYW1lYnVmZmVyKiBmcmFtZWJ1ZmZlcikKIHsKLSAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2Jq
ZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmICghZGVsZXRlT2JqZWN0KGxvY2tlciwgZnJhbWVi
dWZmZXIpKQogICAgICAgICByZXR1cm47CkBAIC0xNzExLDcgKzE3MTEsNyBAQCB2b2lkIFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYkk0dWl2KEdDR0x1aW50IGluZGV4LCBVaW50
MzJMaXN0JiYgbGlzdAogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJp
YklQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xlbnVtIHR5cGUsIEdD
R0xzaXplaSBzdHJpZGUsIEdDR0xpbnQ2NCBvZmZzZXQpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdy
YXBoTG9jaygpIH07CiAKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAg
ICByZXR1cm47CkBAIC0xOTEwLDcgKzE5MTAsNyBAQCBSZWZQdHI8V2ViR0xRdWVyeT4gV2ViR0wy
UmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlUXVlcnkoKQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0Nv
bnRleHQ6OmRlbGV0ZVF1ZXJ5KFdlYkdMUXVlcnkqIHF1ZXJ5KQogewotICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmpl
Y3RHcmFwaExvY2soKSB9OwogCiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAh
cXVlcnkgfHwgIXF1ZXJ5LT5vYmplY3QoKSB8fCAhdmFsaWRhdGVXZWJHTE9iamVjdCgiZGVsZXRl
UXVlcnkiLCBxdWVyeSkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5NDUsNyArMTk0NSw3IEBAIGJv
b2wgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmFsaWRhdGVRdWVyeVRhcmdldChjb25zdCBjaGFy
KiBmdW5jdGlvbk5hbWUsIEdDR0xlCiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVn
aW5RdWVyeShHQ0dMZW51bSB0YXJnZXQsIFdlYkdMUXVlcnkmIHF1ZXJ5KQogewotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIg
eyBvYmplY3RHcmFwaExvY2soKSB9OwogCiAgICAgR0NHTGVudW0gdGFyZ2V0S2V5OwogICAgIGlm
ICghdmFsaWRhdGVXZWJHTE9iamVjdCgiYmVnaW5RdWVyeSIsICZxdWVyeSkgfHwgIXZhbGlkYXRl
UXVlcnlUYXJnZXQoImJlZ2luUXVlcnkiLCB0YXJnZXQsICZ0YXJnZXRLZXkpKQpAQCAtMTk3MCw3
ICsxOTcwLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiZWdpblF1ZXJ5KEdDR0xl
bnVtIHRhcmdldCwgV2ViR0xRdWVyeSYgcXVlcnkpCiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6ZW5kUXVlcnkoR0NHTGVudW0gdGFyZ2V0KQogewotICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFw
aExvY2soKSB9OwogCiAgICAgR0NHTGVudW0gdGFyZ2V0S2V5OwogICAgIGlmIChpc0NvbnRleHRM
b3N0T3JQZW5kaW5nKCkgfHwgIXNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSB8fCAhdmFsaWRhdGVR
dWVyeVRhcmdldCgiYmVnaW5RdWVyeSIsIHRhcmdldCwgJnRhcmdldEtleSkpCkBAIC0yMDQxLDcg
KzIwNDEsNyBAQCBSZWZQdHI8V2ViR0xTYW1wbGVyPiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojpj
cmVhdGVTYW1wbGVyKCkKIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVTYW1w
bGVyKFdlYkdMU2FtcGxlciogc2FtcGxlcikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2Nr
KCkgfTsKIAogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTIwNjcsNyArMjA2Nyw3IEBAIEdDR0xib29sZWFuIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmlzU2FtcGxlcihXZWJHTFNhbXBsZXIqIHNhbXBsZXIpCiAKIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6YmluZFNhbXBsZXIoR0NHTHVpbnQgdW5pdCwgV2ViR0xTYW1wbGVyKiBzYW1w
bGVyKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2soKSB9OwogCiAgICAgaWYgKGlzQ29u
dGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjE1OSw3ICsyMTU5LDcg
QEAgR0NHTGJvb2xlYW4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aXNTeW5jKFdlYkdMU3luYyog
c3luYykKIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVTeW5jKFdlYkdMU3lu
Yyogc3luYykKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygp
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGRlbGV0
ZU9iamVjdChsb2NrZXIsIHN5bmMpOwogfQpAQCAtMjIzMCw3ICsyMjMwLDcgQEAgUmVmUHRyPFdl
YkdMVHJhbnNmb3JtRmVlZGJhY2s+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVRyYW5z
Zm9ybUZlZWRiYWNrKCkKIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVUcmFu
c2Zvcm1GZWVkYmFjayhXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKiBmZWVkYmFja09iamVjdCkKIHsK
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIC8vIFdlIGhhdmUgdG8gc2hv
cnQtY2lyY3VpdCB0aGUgZGVsZXRpb24gcHJvY2VzcyBpZiB0aGUgdHJhbnNmb3JtIGZlZWRiYWNr
IGlzCiAgICAgLy8gYWN0aXZlLiBUaGlzIHJlcXVpcmVzIGR1cGxpY2F0aW9uIG9mIHNvbWUgdmFs
aWRhdGlvbiBsb2dpYy4KQEAgLTIyNjUsNyArMjI2NSw3IEBAIEdDR0xib29sZWFuIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmlzVHJhbnNmb3JtRmVlZGJhY2soV2ViR0xUcmFuc2Zvcm1GZWVkYmFj
ayoKIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kVHJhbnNmb3JtRmVlZGJhY2so
R0NHTGVudW0gdGFyZ2V0LCBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKiBmZWVkYmFja09iamVjdCkK
IHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmICghdmFsaWRhdGVO
dWxsYWJsZVdlYkdMT2JqZWN0KCJiaW5kVHJhbnNmb3JtRmVlZGJhY2siLCBmZWVkYmFja09iamVj
dCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIzMjYsNyArMjMyNiw3IEBAIHZvaWQgV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dDo6YmVnaW5UcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSBwcmltaXRpdmVN
b2RlKQogCiAgICAgbV9jb250ZXh0LT5iZWdpblRyYW5zZm9ybUZlZWRiYWNrKHByaW1pdGl2ZU1v
ZGUpOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAgICAgbV9ib3VuZFRyYW5z
Zm9ybUZlZWRiYWNrLT5zZXRQcm9ncmFtKGxvY2tlciwgKm1fY3VycmVudFByb2dyYW0pOwogICAg
IG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFjay0+c2V0QWN0aXZlKHRydWUpOwogICAgIG1fYm91bmRU
cmFuc2Zvcm1GZWVkYmFjay0+c2V0UGF1c2VkKGZhbHNlKTsKQEAgLTI0MjQsNyArMjQyNCw3IEBA
IHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6cmVzdW1lVHJhbnNmb3JtRmVlZGJhY2soKQog
CiBib29sIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnNldEluZGV4ZWRCdWZmZXJCaW5kaW5nKGNv
bnN0IGNoYXIgKmZ1bmN0aW9uTmFtZSwgR0NHTGVudW0gdGFyZ2V0LCBHQ0dMdWludCBpbmRleCwg
V2ViR0xCdWZmZXIqIGJ1ZmZlcikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVj
dEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsK
IAogICAgIGlmICghdmFsaWRhdGVOdWxsYWJsZVdlYkdMT2JqZWN0KGZ1bmN0aW9uTmFtZSwgYnVm
ZmVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjYxNiw3ICsyNjE2LDcgQEAgUmVmUHRy
PFdlYkdMVmVydGV4QXJyYXlPYmplY3Q+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVZl
cnRleEFycmF5KCkKIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVWZXJ0ZXhB
cnJheShXZWJHTFZlcnRleEFycmF5T2JqZWN0KiBhcnJheU9iamVjdCkKIHsKLSAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
b2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIC8vIHZhbGlkYXRlV2ViR0xPYmplY3QgZ2VuZXJh
dGVzIGFuIGVycm9yIGlmIHRoZSBvYmplY3QgaGFzIGFscmVhZHkgYmVlbgogICAgIC8vIGRlbGV0
ZWQsIHNvIHdlIG11c3QgcmVwbGljYXRlIG1vc3Qgb2YgaXRzIGNoZWNrcyBoZXJlLgpAQCAtMjYz
NSw3ICsyNjM1LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVWZXJ0ZXhB
cnJheShXZWJHTFZlcnRleEFycmF5T2JqZWN0KiBhcnJheU9iamUKICAgICAgICAgLy8gYmluZFZl
cnRleEFycmF5IGdyYWJzIHRoZSBsb2NrIGludGVybmFsbHkuCiAgICAgICAgIGxvY2tlci51bmxv
Y2tFYXJseSgpOwogICAgICAgICBiaW5kVmVydGV4QXJyYXkobnVsbHB0cik7IC8vIFRoZSBkZWZh
dWx0IFZBTyB3YXMgcmVtb3ZlZCBpbiBPcGVuR0wgMy4zIGJ1dCBub3QgZnJvbSBXZWJHTCAyOyBi
aW5kIHRoZSBkZWZhdWx0IGZvciBXZWJHTCB0byB1c2UuCi0gICAgICAgIGxvY2tlciA9IGhvbGRM
b2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICAgICAgbG9ja2VyID0gTG9ja2VyIHsgb2JqZWN0
R3JhcGhMb2NrKCkgfTsKICAgICB9CiAKICAgICBhcnJheU9iamVjdC0+ZGVsZXRlT2JqZWN0KGxv
Y2tlciwgZ3JhcGhpY3NDb250ZXh0R0woKSk7CkBAIC0yNjU2LDcgKzI2NTYsNyBAQCBHQ0dMYm9v
bGVhbiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppc1ZlcnRleEFycmF5KFdlYkdMVmVydGV4QXJy
YXlPYmplY3QqIGFycmF5TwogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRWZXJ0
ZXhBcnJheShXZWJHTFZlcnRleEFycmF5T2JqZWN0KiBhcnJheU9iamVjdCkKIHsKLSAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmICghdmFsaWRhdGVOdWxsYWJsZVdlYkdM
T2JqZWN0KCJiaW5kVmVydGV4QXJyYXkiLCBhcnJheU9iamVjdCkpCiAgICAgICAgIHJldHVybjsK
QEAgLTMwOTYsNyArMzA5Niw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YWRkTWVt
YmVyc1RvT3BhcXVlUm9vdHMoSlNDOjpBYnN0cmFjdFNsb3RWaXNpdG9yJiB2CiB7CiAgICAgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YWRkTWVtYmVyc1RvT3BhcXVlUm9vdHModmlzaXRvcik7
CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKICAgICB2aXNpdG9yLmFkZE9wYXF1
ZVJvb3QobV9yZWFkRnJhbWVidWZmZXJCaW5kaW5nLmdldCgpKTsKICAgICBpZiAobV9yZWFkRnJh
bWVidWZmZXJCaW5kaW5nKQogICAgICAgICBtX3JlYWRGcmFtZWJ1ZmZlckJpbmRpbmctPmFkZE1l
bWJlcnNUb09wYXF1ZVJvb3RzKGxvY2tlciwgdmlzaXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRHcm91cC5jcHAKaW5kZXggZDZhYjUxNmFlMmZhMmE2
Zjc5NjI5YjQyYjZmODFmMDBjZjg2YmFjNi4uYWJkOGYyNzM2ODM5MWUzZTFkN2ZjZjlkMzdiOWQ3
Nzk2YWYzMzYxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xD
b250ZXh0R3JvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29u
dGV4dEdyb3VwLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgV2ViR0xDb250ZXh0R3JvdXA6
OmRldGFjaEFuZFJlbW92ZUFsbE9iamVjdHMoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2tGb3JBQ29udGV4dCgpKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrRm9yQUNvbnRleHQoKSB9OwogICAg
IHdoaWxlICghbV9ncm91cE9iamVjdHMuaXNFbXB0eSgpKQogICAgICAgICAoKm1fZ3JvdXBPYmpl
Y3RzLmJlZ2luKCkpLT5kZXRhY2hDb250ZXh0R3JvdXAobG9ja2VyKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKaW5kZXggOTVhYmMwMzNl
MmM2ZWQ0ZmVhMjU5NDk0MzNjZDEzMGQ3ZjM1ZmI1Ny4uYTk2MGNmNWMyMzdlYzg0NDI5OGIwOWJi
NmVkYWFkZTI5ZGViY2U4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xGcmFtZWJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xGcmFtZWJ1ZmZlci5jcHAKQEAgLTYwMiw3ICs2MDIsNyBAQCBib29sIFdlYkdMRnJhbWVidWZm
ZXI6OmluaXRpYWxpemVBdHRhY2htZW50cyhHcmFwaGljc0NvbnRleHRHTCogZzNkLCBjb25zdCBj
aGFyKgogICAgICAgICAvLyBDb250ZXh0IGhhcyBiZWVuIGRlbGV0ZWQgLSBzaG91bGQgbm90IGJl
IGNhbGxpbmcgdGhpcy4KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9ja0ZvckNvbnRleHQoKSk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG9iamVjdEdyYXBoTG9ja0ZvckNvbnRleHQoKSB9OwogCiAgICAgQVNTRVJUKG9i
amVjdCgpKTsKICAgICBHQ0dMYml0ZmllbGQgbWFzayA9IDA7CkBAIC03NTQsNyArNzU0LDcgQEAg
dm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpzZXRBdHRhY2htZW50SW50ZXJuYWwoR0NHTGVudW0gYXR0
YWNobWVudCwgR0NHTGVudW0gdGV4VGEKICAgICAgICAgLy8gQ29udGV4dCBoYXMgYmVlbiBkZWxl
dGVkIC0gc2hvdWxkIG5vdCBiZSBjYWxsaW5nIHRoaXMuCiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2tGb3JDb250ZXh0KCkp
OworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2tGb3JDb250ZXh0KCkgfTsKIAog
ICAgIHJlbW92ZUF0dGFjaG1lbnRJbnRlcm5hbChsb2NrZXIsIGF0dGFjaG1lbnQpOwogICAgIGlm
ICh0ZXh0dXJlICYmIHRleHR1cmUtPm9iamVjdCgpKSB7CkBAIC03NzAsNyArNzcwLDcgQEAgdm9p
ZCBXZWJHTEZyYW1lYnVmZmVyOjpzZXRBdHRhY2htZW50SW50ZXJuYWwoR0NHTGVudW0gYXR0YWNo
bWVudCwgV2ViR0xSZW5kZXJidWYKICAgICAgICAgLy8gQ29udGV4dCBoYXMgYmVlbiBkZWxldGVk
IC0gc2hvdWxkIG5vdCBiZSBjYWxsaW5nIHRoaXMuCiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2tGb3JDb250ZXh0KCkpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2tGb3JDb250ZXh0KCkgfTsKIAogICAg
IHJlbW92ZUF0dGFjaG1lbnRJbnRlcm5hbChsb2NrZXIsIGF0dGFjaG1lbnQpOwogICAgIGlmIChy
ZW5kZXJidWZmZXIgJiYgcmVuZGVyYnVmZmVyLT5vYmplY3QoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwCmluZGV4IGRiMmI3MjVhYzFiMTNmNjkzZDhkNThi
YzU2MTQ0YjdmOTBlNGMwZDIuLmYyODA4MDMzNjFiZWM2MDI5YjIwZGNjYWYwODEyMzA4YTEyMmNk
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHAKQEAgLTUz
LDcgKzUzLDcgQEAgdm9pZCBXZWJHTE9iamVjdDo6cnVuRGVzdHJ1Y3RvcigpCiAgICAgICAgIGF1
dG8gbG9ja2VyID0gQWJzdHJhY3RMb2NrZXIoTm9Mb2NraW5nTmVjZXNzYXJ5KTsKICAgICAgICAg
ZGVsZXRlT2JqZWN0KGxvY2tlciwgbnVsbHB0cik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhsb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IGxvY2sg
fTsKICAgICAgICAgZGVsZXRlT2JqZWN0KGxvY2tlciwgbnVsbHB0cik7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcAppbmRleCBjMjRhODRkYThkMzA2ODdjNjJlZTljNTgyYTRkZGQ5YTI4MGI1MjEx
Li41MTU1NDg4ZDdlZDFkYTk1MGQ1YWY2NzhkNDZkMjM0MGI4YmE5Y2VlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcApAQCAtMTM0NSw3ICsxMzQ1LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjphY3RpdmVUZXh0dXJlKEdDR0xlbnVtIHRleHR1cmUpCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6YXR0YWNoU2hhZGVyKFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgV2ViR0xTaGFk
ZXImIHNoYWRlcikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9j
aygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlm
ICghdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigiYXR0YWNoU2hhZGVyIiwgJnByb2dyYW0p
IHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJhdHRhY2hTaGFkZXIiLCAmc2hhZGVy
KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ0NSw3ICsxNDQ1LDcgQEAgYm9vbCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp2YWxpZGF0ZUFuZENhY2hlQnVmZmVyQmluZGluZyhjb25zdCBBYnN0
cmFjdExvY2sKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kQnVmZmVyKEdD
R0xlbnVtIHRhcmdldCwgV2ViR0xCdWZmZXIqIGJ1ZmZlcikKIHsKLSAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0
R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmICghdmFsaWRhdGVOdWxsYWJsZVdlYkdMT2JqZWN0KCJi
aW5kQnVmZmVyIiwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ1OCw3ICsxNDU4LDcg
QEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kQnVmZmVyKEdDR0xlbnVtIHRh
cmdldCwgV2ViR0xCdWZmZXIqIGJ1ZmZlcikKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpiaW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBi
dWZmZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAoIXZh
bGlkYXRlTnVsbGFibGVXZWJHTE9iamVjdCgiYmluZEZyYW1lYnVmZmVyIiwgYnVmZmVyKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTQ3Myw3ICsxNDczLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpiaW5kRnJhbWVidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVm
ZmUKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kUmVuZGVyYnVmZmVyKEdD
R0xlbnVtIHRhcmdldCwgV2ViR0xSZW5kZXJidWZmZXIqIHJlbmRlckJ1ZmZlcikKIHsKLSAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmICghdmFsaWRhdGVOdWxsYWJsZVdl
YkdMT2JqZWN0KCJiaW5kUmVuZGVyYnVmZmVyIiwgcmVuZGVyQnVmZmVyKSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMTQ4OSw3ICsxNDg5LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpiaW5kUmVuZGVyYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgV2ViR0xSZW5kZXJidWYKIAogdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kVGV4dHVyZShHQ0dMZW51bSB0YXJnZXQs
IFdlYkdMVGV4dHVyZSogdGV4dHVyZSkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9i
amVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkg
fTsKIAogICAgIGlmICghdmFsaWRhdGVOdWxsYWJsZVdlYkdMT2JqZWN0KCJiaW5kVGV4dHVyZSIs
IHRleHR1cmUpKQogICAgICAgICByZXR1cm47CkBAIC0yMDQ2LDcgKzIwNDYsNyBAQCB2b2lkIFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnNldEJvdW5kVmVydGV4QXJyYXlPYmplY3QoY29uc3Qg
QWJzdHJhY3RMb2NrZXImLAogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRlbGV0
ZUJ1ZmZlcihXZWJHTEJ1ZmZlciogYnVmZmVyKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExv
Y2soKSB9OwogCiAgICAgaWYgKCFkZWxldGVPYmplY3QobG9ja2VyLCBidWZmZXIpKQogICAgICAg
ICByZXR1cm47CkBAIC0yMDU2LDcgKzIwNTYsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmRlbGV0ZUJ1ZmZlcihXZWJHTEJ1ZmZlciogYnVmZmVyKQogCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmRlbGV0ZUZyYW1lYnVmZmVyKFdlYkdMRnJhbWVidWZmZXIqIGZy
YW1lYnVmZmVyKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2Nr
KCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2soKSB9OwogCiAjaWYgRU5B
QkxFKFdFQlhSKQogICAgIGlmIChmcmFtZWJ1ZmZlciAmJiBmcmFtZWJ1ZmZlci0+aXNPcGFxdWUo
KSkgewpAQCAtMjA3OSw3ICsyMDc5LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpkZWxldGVQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKICAgICBpZiAocHJvZ3JhbSkK
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGVzdHJveVdlYkdMUHJvZ3Jh
bSgqcHJvZ3JhbSk7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9j
aygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGRl
bGV0ZU9iamVjdChsb2NrZXIsIHByb2dyYW0pOwogICAgIC8vIFdlIGRvbid0IHJlc2V0IG1fY3Vy
cmVudFByb2dyYW0gdG8gMCBoZXJlIGJlY2F1c2UgdGhlIGRlbGV0aW9uIG9mIHRoZQpAQCAtMjA4
OCw3ICsyMDg4LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxldGVQcm9n
cmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpkZWxldGVSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJidWZmZXIqIHJlbmRlcmJ1ZmZlcikK
IHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmICghZGVsZXRlT2Jq
ZWN0KGxvY2tlciwgcmVuZGVyYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjEwMywxMyAr
MjEwMywxMyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRlbGV0ZVJlbmRlcmJ1
ZmZlcihXZWJHTFJlbmRlcmJ1ZmZlciogcmVuZGVyYnVmZgogCiB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmRlbGV0ZVNoYWRlcihXZWJHTFNoYWRlciogc2hhZGVyKQogewotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2Nr
ZXIgeyBvYmplY3RHcmFwaExvY2soKSB9OwogICAgIGRlbGV0ZU9iamVjdChsb2NrZXIsIHNoYWRl
cik7CiB9CiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlVGV4dHVyZShX
ZWJHTFRleHR1cmUqIHRleHR1cmUpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmpl
Y3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07
CiAKICAgICBpZiAoIWRlbGV0ZU9iamVjdChsb2NrZXIsIHRleHR1cmUpKQogICAgICAgICByZXR1
cm47CkBAIC0yMTcxLDcgKzIxNzEsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OmRlcHRoUmFuZ2UoR0NHTGZsb2F0IHpOZWFyLCBHQ0dMZmxvYXQgekZhcikKIAogdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZXRhY2hTaGFkZXIoV2ViR0xQcm9ncmFtJiBwcm9ncmFt
LCBXZWJHTFNoYWRlciYgc2hhZGVyKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2Jq
ZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2soKSB9
OwogCiAgICAgaWYgKCF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9yU2hhZGVyKCJkZXRhY2hTaGFkZXIi
LCAmcHJvZ3JhbSkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImRldGFjaFNoYWRl
ciIsICZzaGFkZXIpKQogICAgICAgICByZXR1cm47CkBAIC02MDQ1LDcgKzYwNDUsNyBAQCB2b2lk
IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVuaWZvcm1NYXRyaXg0ZnYoY29uc3QgV2ViR0xV
bmlmb3JtTG9jYXRpb24qIGxvYwogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnVz
ZVByb2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFw
aExvY2soKSB9OwogCiAgICAgaWYgKCF2YWxpZGF0ZU51bGxhYmxlV2ViR0xPYmplY3QoInVzZVBy
b2dyYW0iLCBwcm9ncmFtKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNjExMiw3ICs2MTEyLDcgQEAg
dm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWI0ZnYoR0NHTHVpbnQg
aW5kZXgsIEZsb2F0MzJMaXN0JiYgdikKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
Ojp2ZXJ0ZXhBdHRyaWJQb2ludGVyKEdDR0x1aW50IGluZGV4LCBHQ0dMaW50IHNpemUsIEdDR0xl
bnVtIHR5cGUsIEdDR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdDR0xzaXplaSBzdHJpZGUsIGxvbmcg
bG9uZyBvZmZzZXQpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExv
Y2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBp
ZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAgICAgICByZXR1cm47CkBAIC02MzA3LDcg
KzYzMDcsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRldGFjaEFuZFJlbW92
ZUFsbE9iamVjdHMoKQogICAgIGlmIChtX2lzUGVuZGluZ1BvbGljeVJlc29sdXRpb24pCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2Nr
KCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2soKSB9OwogCiAgICAgd2hp
bGUgKG1fY29udGV4dE9iamVjdHMuc2l6ZSgpID4gMCkgewogICAgICAgICBIYXNoU2V0PFdlYkdM
Q29udGV4dE9iamVjdCo+OjppdGVyYXRvciBpdCA9IG1fY29udGV4dE9iamVjdHMuYmVnaW4oKTsK
QEAgLTc5NTgsNyArNzk1OCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGlz
cGF0Y2hDb250ZXh0Q2hhbmdlZE5vdGlmaWNhdGlvbigpCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6YWRkTWVtYmVyc1RvT3BhcXVlUm9vdHMoSlNDOjpBYnN0cmFjdFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhM
b2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2soKSB9OwogCiAgICAg
dmlzaXRvci5hZGRPcGFxdWVSb290KG1fYm91bmRBcnJheUJ1ZmZlci5nZXQoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCmluZGV4
IDI3OWNhZWNiNzJkOGE0NTI5YTNkMjIzYTRhZmRjOTgxNzQyM2NjNGEuLjI3YjI5ODJkYzNmZDkx
Njg1ZDMxN2E3ZWQxYTljMWU2ZWU0N2IyNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIFJldmVy
YkNvbnZvbHZlcjo6flJldmVyYkNvbnZvbHZlcigpCiAKICAgICAgICAgLy8gV2FrZSB1cCB0aHJl
YWQgc28gaXQgY2FuIHJldHVybgogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fYmFja2dyb3VuZFRocmVhZExvY2spOworICAgICAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fYmFja2dyb3VuZFRocmVhZExvY2sgfTsKICAgICAgICAgICAgIG1fbW9yZUlucHV0
QnVmZmVyZWQgPSB0cnVlOwogICAgICAgICAgICAgbV9iYWNrZ3JvdW5kVGhyZWFkQ29uZGl0aW9u
VmFyaWFibGUubm90aWZ5T25lKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3Bw
CmluZGV4IGU1ODkxNGQ5OGM5NmE5MDdjMTVmOTYzZjc3Yjg0MTJhMTk3NmZkODMuLmI0Y2MxM2Ri
ZGI4ZWYzY2JkZGJmNjk1Y2E2MjZkOTJlNDEwYTZjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVkaW9EZXN0aW5hdGlvbkNvY29h
LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdGFy
dChGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgZGlzcGF0Y2hUCiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9uQ29j
b2E6OnN0YXJ0Iik7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fZGlz
cGF0Y2hUb1JlbmRlclRocmVhZExvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9kaXNw
YXRjaFRvUmVuZGVyVGhyZWFkTG9jayB9OwogICAgICAgICBtX2Rpc3BhdGNoVG9SZW5kZXJUaHJl
YWQgPSBXVEZNb3ZlKGRpc3BhdGNoVG9SZW5kZXJUaHJlYWQpOwogICAgIH0KICAgICBzdGFydFJl
bmRlcmluZyhXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CkBAIC0xMzEsNyArMTMxLDcgQEAg
dm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0b3AoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGwKICAgICBMT0coTWVkaWEsICJBdWRpb0Rlc3RpbmF0aW9u
Q29jb2E6OnN0b3AiKTsKICAgICBzdG9wUmVuZGVyaW5nKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9kaXNwYXRjaFRv
UmVuZGVyVGhyZWFkTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2Rpc3BhdGNoVG9S
ZW5kZXJUaHJlYWRMb2NrIH07CiAgICAgICAgIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZCA9IG51
bGxwdHI7CiAgICAgfQogfQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlv
bkNvY29hOjpzZXRJc1BsYXlpbmcoYm9vbCBpc1BsYXlpbmcpCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9pc1Bs
YXlpbmdMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1faXNQbGF5aW5nTG9jayB9Owog
ICAgICAgICBpZiAobV9pc1BsYXlpbmcgPT0gaXNQbGF5aW5nKQogICAgICAgICAgICAgcmV0dXJu
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hdWRpby9nc3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAKaW5kZXgg
YTk2MjQ2YTQ4ODUwMTQxYzM3NTA0OWU5YmI5OTQyZTI2NDI4NGNlNC4uNjkwYzFkYjk3NTkyOTRl
NGNiMDc0NDQwMzQxMWJmOWQ1NjVlMmE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVBy
b3ZpZGVyR1N0cmVhbWVyLmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIEdzdEZsb3dSZXR1cm4gQXVk
aW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6aGFuZGxlU2FtcGxlKEdzdEFwcFNpbmsqIHNpbmss
IGJvb2wKIAogICAgIEdTVF9UUkFDRSgiU3RvcmluZyBhdWRpbyBzYW1wbGUgJSIgR1NUX1BUUl9G
T1JNQVQsIHNhbXBsZS5nZXQoKSk7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fYWRhcHRlck11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYWRhcHRlck11
dGV4IH07CiAgICAgICAgIEdRdWFyayBxdWFyayA9IGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5n
KCJjaGFubmVsLWlkIik7CiAgICAgICAgIGludCBjaGFubmVsSWQgPSBHUE9JTlRFUl9UT19JTlQo
Z19vYmplY3RfZ2V0X3FkYXRhKEdfT0JKRUNUKHNpbmspLCBxdWFyaykpOwogICAgICAgICBHU1Rf
REVCVUcoIkNoYW5uZWwgSUQ6ICVkIiwgY2hhbm5lbElkKTsKQEAgLTM4NCw3ICszODQsNyBAQCB2
b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmRlaW50ZXJsZWF2ZVBhZHNDb25maWd1
cmVkKCkKIAogdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpjbGVhckFkYXB0ZXJz
KCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYWRhcHRlck11dGV4KTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9hZGFwdGVyTXV0ZXggfTsKICAgICBmb3IgKGF1dG8mIGFkYXB0ZXIg
OiBtX2FkYXB0ZXJzLnZhbHVlcygpKQogICAgICAgICBnc3RfYWRhcHRlcl9jbGVhcihhZGFwdGVy
LmdldCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dz
dHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIu
Y3BwCmluZGV4IDhjZWIxOGMxODFjMWM4MTNiY2FjNzU4MjQ1MDJhMjkwOTlmOTc1ODAuLjRkYzM3
YjIyZjAxMjA4YWQxYzczMWVlZmQ3ZmU2NDBhZWExZDY2NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJl
YW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dl
YktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcApAQCAtNDg5LDcgKzQ4OSw3IEBAIHN0YXRp
YyBHc3RTdGF0ZUNoYW5nZVJldHVybiB3ZWJLaXRXZWJBdWRpb1NyY0NoYW5nZVN0YXRlKEdzdEVs
ZW1lbnQqIGVsZW1lbnQsIEdzCiAKIHZvaWQgd2Via2l0V2ViQXVkaW9Tb3VyY2VTZXREaXNwYXRj
aFRvUmVuZGVyVGhyZWFkRnVuY3Rpb24oV2ViS2l0V2ViQXVkaW9TcmMqIHNyYywgRnVuY3Rpb248
dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGZ1bmN0aW9uKQogewotICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2soc3JjLT5wcml2LT5kaXNwYXRjaFRvUmVuZGVyVGhyZWFkTG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IHNyYy0+cHJpdi0+ZGlzcGF0Y2hUb1JlbmRlclRocmVhZExvY2sgfTsK
ICAgICBzcmMtPnByaXYtPmRpc3BhdGNoVG9SZW5kZXJUaHJlYWRGdW5jdGlvbiA9IFdURk1vdmUo
ZnVuY3Rpb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAppbmRleCA3MGQ0N2FmNmJiZjQ1OThi
MDNmMzAxNmZjNWNhODc2Yjc2NGYxMmVlLi5hZTY4ZDM0N2M3ZjJkMzFmNDkzZmIyODNiOWQ5MmQz
MjU3OTM3ODY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9E
aXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKQEAgLTEzOCw3ICsxMzgsNyBAQCB2b2lk
IERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6Y2xpZW50UHJlZmVycmVkRnJhbWVzUGVyU2Vjb25kQ2hh
bmdlZChEaXNwbGF5UmVmcmVzaAogCiBib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6cmVxdWVz
dFJlZnJlc2hDYWxsYmFjaygpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2sp
OworICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAKICAgICBpZiAoaXNTY2hlZHVs
ZWQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xNjYsNyArMTY2LDcgQEAgYm9vbCBEaXNw
bGF5UmVmcmVzaE1vbml0b3I6OmZpcmVkQW5kUmVhY2hlZE1heFVuc2NoZWR1bGVkRmlyZUNvdW50
KCkKIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5TGlua0ZpcmVkKGNvbnN0IERp
c3BsYXlVcGRhdGUmIGRpc3BsYXlVcGRhdGUpCiB7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsK
IAogICAgICAgICAvLyBUaGlzIG1heSBiZSBvZmYgdGhlIG1haW4gdGhyZWFkLgogICAgICAgICBp
ZiAoIWlzUHJldmlvdXNGcmFtZURvbmUoKSkKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIERpc3Bs
YXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheURpZFJlZnJlc2goY29uc3QgRGlzcGxheVVwZGF0ZSYg
ZGlzcGxheVVwZGF0ZQogICAgICAgICBtX2NsaWVudHNUb0JlTm90aWZpZWQgPSBudWxscHRyOwog
CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAgICAgc2V0SXNQcmV2aW91c0ZyYW1lRG9u
ZSh0cnVlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuY3BwCmluZGV4IDNhM2IyNWMzMzk0MjY1OGFkOTY1NmQ3N2RjZDYxM2JiMzJlZDcw
MjIuLmI4OGMwNDk1YzU3MWFhN2Q1ZjRhOGJlNTUwMGZmOTZjNTdhNjJlNzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApAQCAtMjEwLDcgKzIx
MCw3IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y2FjaGVkRm9udFBsYXRmb3JtRGF0
YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnRECiAgICAgY29uc3QgRm9udEZlYXR1cmVTZXR0
aW5ncyogZmVhdHVyZXMsIEZvbnRTZWxlY3Rpb25TcGVjaWZpZWRDYXBhYmlsaXRpZXMgY2FwYWJp
bGl0aWVzLCBib29sIGNoZWNraW5nQWx0ZXJuYXRlTmFtZSkKIHsKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9mb250TG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fZm9udExvY2sgfTsKICNlbmRpZgogCiAjaWYgT1MoV0lORE9XUykgJiYg
RU5BQkxFKE9QRU5UWVBFX1ZFUlRJQ0FMKQpAQCAtMjc2LDcgKzI3Niw3IEBAIFJlZlB0cjxGb250
PiBGb250Q2FjaGU6OmZvbnRGb3JGYW1pbHkoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVz
Y3JpcHRpb24sIGNvCiBSZWY8Rm9udD4gRm9udENhY2hlOjpmb250Rm9yUGxhdGZvcm1EYXRhKGNv
bnN0IEZvbnRQbGF0Zm9ybURhdGEmIHBsYXRmb3JtRGF0YSkKIHsKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9mb250TG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fZm9udExvY2sgfTsKICNlbmRpZgogCiAgICAgYXV0byBhZGRSZXN1bHQg
PSBtX2ZvbnREYXRhQ2FjaGVzLT5kYXRhLmVuc3VyZShwbGF0Zm9ybURhdGEsIFsmXSB7CkBAIC0z
MTMsNyArMzEzLDcgQEAgdm9pZCBGb250Q2FjaGU6OnB1cmdlSW5hY3RpdmVGb250RGF0YSh1bnNp
Z25lZCBwdXJnZUNvdW50KQogICAgIHBydW5lU3lzdGVtRmFsbGJhY2tGb250cygpOwogCiAjaWYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fZm9udExv
Y2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2ZvbnRMb2NrIH07CiAjZW5kaWYKIAogICAgIHdo
aWxlIChwdXJnZUNvdW50KSB7CkBAIC00NDksNyArNDQ5LDcgQEAgc2l6ZV90IEZvbnRDYWNoZTo6
Zm9udENvdW50KCkKIHNpemVfdCBGb250Q2FjaGU6OmluYWN0aXZlRm9udENvdW50KCkKIHsKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9mb250
TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fZm9udExvY2sgfTsKICNlbmRpZgogICAgIHVu
c2lnbmVkIGNvdW50ID0gMDsKICAgICBmb3IgKGF1dG8mIGZvbnQgOiBtX2ZvbnREYXRhQ2FjaGVz
LT5kYXRhLnZhbHVlcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92
aWRlckFWRk9iakMubW0KaW5kZXggZjQzZTMzMjBjOTcwOTgyNDg4ZTI4NzNiODViM2U3ZGJlMjY2
MzVhZi4uNDc5NzY4M2I4MGJiNDkwNWE3YTgxNjg4N2E0MzU0ZDEyOThlY2Q0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQpAQCAtMTgzLDcg
KzE4Myw3IEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OmRlc3Ryb3lNaXhJZk5l
ZWRlZCgpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQobV90YXBTdG9yYWdlKTsKICAgICB7
Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV90YXBTdG9yYWdlLT5sb2NrKTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGFwU3RvcmFnZS0+bG9jayB9OwogICAgICAgICBpZiAo
bV9hdlBsYXllckl0ZW0pCiAgICAgICAgICAgICBbbV9hdlBsYXllckl0ZW0gc2V0QXVkaW9NaXg6
bmlsXTsKICAgICAgICAgW21fYXZBdWRpb01peCBzZXRJbnB1dFBhcmFtZXRlcnM6QFsgXV07CkBA
IC0yMDcsNyArMjA3LDcgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6Y3JlYXRl
TWl4SWZOZWVkZWQoKQogICAgIEFTU0VSVCghbV90YXApOwogCiAgICAgYXV0byB0YXBTdG9yYWdl
ID0gYWRvcHRSZWYobmV3IFRhcFN0b3JhZ2UodGhpcykpOwotICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sodGFwU3RvcmFnZS0+bG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHRhcFN0b3JhZ2Ut
PmxvY2sgfTsKIAogICAgIE1UQXVkaW9Qcm9jZXNzaW5nVGFwQ2FsbGJhY2tzIGNhbGxiYWNrcyA9
IHsKICAgICAgICAgMCwKQEAgLTI2Miw3ICsyNjIsNyBAQCB2b2lkIEF1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDOjpwcmVwYXJlQ2FsbGJhY2soTVRBdWRpb1Byb2Nlc3NpbmdUYXBSZWYgdGFwLCBD
TQogICAgIEFTU0VSVCh0YXApOwogICAgIFRhcFN0b3JhZ2UqIHRhcFN0b3JhZ2UgPSBzdGF0aWNf
Y2FzdDxUYXBTdG9yYWdlKj4oTVRBdWRpb1Byb2Nlc3NpbmdUYXBHZXRTdG9yYWdlKHRhcCkpOwog
Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0YXBTdG9yYWdlLT5sb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgdGFwU3RvcmFnZS0+bG9jayB9OwogCiAgICAgaWYgKHRhcFN0b3JhZ2UtPl90
aGlzKQogICAgICAgICB0YXBTdG9yYWdlLT5fdGhpcy0+cHJlcGFyZShtYXhGcmFtZXMsIHByb2Nl
c3NpbmdGb3JtYXQpOwpAQCAtMjczLDcgKzI3Myw3IEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakM6OnVucHJlcGFyZUNhbGxiYWNrKE1UQXVkaW9Qcm9jZXNzaW5nVGFwUmVmIHRhcCkK
ICAgICBBU1NFUlQodGFwKTsKICAgICBUYXBTdG9yYWdlKiB0YXBTdG9yYWdlID0gc3RhdGljX2Nh
c3Q8VGFwU3RvcmFnZSo+KE1UQXVkaW9Qcm9jZXNzaW5nVGFwR2V0U3RvcmFnZSh0YXApKTsKIAot
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGFwU3RvcmFnZS0+bG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IHRhcFN0b3JhZ2UtPmxvY2sgfTsKIAogICAgIGlmICh0YXBTdG9yYWdlLT5fdGhp
cykKICAgICAgICAgdGFwU3RvcmFnZS0+X3RoaXMtPnVucHJlcGFyZSgpOwpAQCAtMjg0LDcgKzI4
NCw3IEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByb2Nlc3NDYWxsYmFjayhN
VEF1ZGlvUHJvY2Vzc2luZ1RhcFJlZiB0YXAsIENNCiAgICAgQVNTRVJUKHRhcCk7CiAgICAgVGFw
U3RvcmFnZSogdGFwU3RvcmFnZSA9IHN0YXRpY19jYXN0PFRhcFN0b3JhZ2UqPihNVEF1ZGlvUHJv
Y2Vzc2luZ1RhcEdldFN0b3JhZ2UodGFwKSk7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KHRhcFN0b3JhZ2UtPmxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyB0YXBTdG9yYWdlLT5sb2Nr
IH07CiAKICAgICBpZiAodGFwU3RvcmFnZS0+X3RoaXMpCiAgICAgICAgIHRhcFN0b3JhZ2UtPl90
aGlzLT5wcm9jZXNzKHRhcCwgbnVtYmVyRnJhbWVzLCBmbGFncywgYnVmZmVyTGlzdEluT3V0LCBu
dW1iZXJGcmFtZXNPdXQsIGZsYWdzT3V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlh
U3RyZWFtQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQppbmRl
eCBhZTk0NDg2ODdmZGRmMWU0NmY3MTZkNWVhM2NjY2RmOGI1ZjRkNjMzLi44MTM5OTZjNzZjNjQx
YjdjYWUwNDZmNTk3MWVjNzQ3Y2Y5MWNlOWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1t
CkBAIC00MDMsNyArNDAzLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OmxheWVyc0FyZUluaXRpYWxpemVkKEludFNpemUgc2l6ZSwgYm8KIAogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmRlc3Ryb3lMYXllcnMoKQogewotICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJMb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJMb2NrIH07CiAK
ICAgICBtX2NhbkVucXVldWVEaXNwbGF5TGF5ZXIgPSBmYWxzZTsKICAgICBpZiAobV9zYW1wbGVC
dWZmZXJEaXNwbGF5TGF5ZXIpCkBAIC0xMDYyLDcgKzEwNjIsNyBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6Q3VycmVudEZyYW1lUGFpbnRlcjo6cmVzZXQoKQog
CiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cm9vdExheWVyQm91
bmRzRGlkQ2hhbmdlKCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTG9jayB9OwogICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikK
ICAgICAgICAgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXItPnVwZGF0ZUJvdW5kc0FuZFBvc2l0
aW9uKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyLT5yb290TGF5ZXIoKS5ib3VuZHMsIG1fdmlk
ZW9Sb3RhdGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9Db2xvckNHLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nn
L0NvbG9yQ0cuY3BwCmluZGV4IDY4MDRmMDY5YjUxNDIxMjgzYzlkZDAwZmE5MmNlOGZiYzc5MTZh
M2QuLmRkYzBkYTA5M2M4YmNkM2JlNDM3NmQxNTE4ZWM3ZDFhMTNlNzc0NDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwCkBAIC0xNTUsNyAr
MTU1LDcgQEAgQ0dDb2xvclJlZiBjYWNoZWRDR0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAg
ICB9CiAKICAgICBzdGF0aWMgTG9jayBjYWNoZWRDb2xvckxvY2s7Ci0gICAgYXV0byBob2xkZXIg
PSBob2xkTG9jayhjYWNoZWRDb2xvckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBjYWNoZWRD
b2xvckxvY2sgfTsKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaW55TFJVQ2FjaGU8Q29s
b3IsIFJldGFpblB0cjxDR0NvbG9yUmVmPiwgMzI+PiBjYWNoZTsKICAgICByZXR1cm4gY2FjaGUu
Z2V0KCkuZ2V0KGNvbG9yKS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggMDdiM2Q5ZmJlODA0YzRmODAxMDA1NTFhZWYwMTIzNjJh
ZTIzODBlZi4uM2U5MDUzZWRmNTFjN2RmZjk2Nzk0NTIzNmMzMjYxNTRkZjVjNmE0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTEwMjks
NyArMTAyOSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlQbGF5
ZXJPZlZpZGVvKCkKIH0KIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYXNGaXJz
dFZpZGVvU2FtcGxlUmVhY2hlZFNpbmsoKSBjb25zdAogewotICAgIGF1dG8gc2FtcGxlTG9ja2Vy
ID0gaG9sZExvY2sobV9zYW1wbGVNdXRleCk7CisgICAgTG9ja2VyIHNhbXBsZUxvY2tlciB7IG1f
c2FtcGxlTXV0ZXggfTsKICAgICByZXR1cm4gISFtX3NhbXBsZTsKIH0KIApAQCAtMjg5Myw3ICsy
ODkzLDcgQEAgcHJpdmF0ZToKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnB1
c2hUZXh0dXJlVG9Db21wb3NpdG9yKCkKIHsKLSAgICBhdXRvIHNhbXBsZUxvY2tlciA9IGhvbGRM
b2NrKG1fc2FtcGxlTXV0ZXgpOworICAgIExvY2tlciBzYW1wbGVMb2NrZXIgeyBtX3NhbXBsZU11
dGV4IH07CiAgICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlLmdldCgpKSkKICAgICAgICAg
cmV0dXJuOwogCkBAIC0zMDc0LDcgKzMwNzQsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lcjo6dHJpZ2dlclJlcGFpbnQoR3N0U2FtcGxlKiBzYW1wbGUpCiAKICAgICBib29sIHNo
b3VsZFRyaWdnZXJSZXNpemU7CiAgICAgewotICAgICAgICBhdXRvIHNhbXBsZUxvY2tlciA9IGhv
bGRMb2NrKG1fc2FtcGxlTXV0ZXgpOworICAgICAgICBMb2NrZXIgc2FtcGxlTG9ja2VyIHsgbV9z
YW1wbGVNdXRleCB9OwogICAgICAgICBzaG91bGRUcmlnZ2VyUmVzaXplID0gIW1fc2FtcGxlOwog
ICAgICAgICBtX3NhbXBsZSA9IHNhbXBsZTsKICAgICB9CkBAIC0zMTY0LDcgKzMxNjQsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cmVwYWludENhbmNlbGxlZENhbGxiYWNr
KE1lZGlhUGxheWVyUHJpdmF0ZUdTdAogI2lmIFVTRShHU1RSRUFNRVJfR0wpCiB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Zmx1c2hDdXJyZW50QnVmZmVyKCkKIHsKLSAgICBhdXRv
IHNhbXBsZUxvY2tlciA9IGhvbGRMb2NrKG1fc2FtcGxlTXV0ZXgpOworICAgIExvY2tlciBzYW1w
bGVMb2NrZXIgeyBtX3NhbXBsZU11dGV4IH07CiAKICAgICBpZiAobV9zYW1wbGUpIHsKICAgICAg
ICAgLy8gQWxsb2NhdGUgYSBuZXcgY29weSBvZiB0aGUgc2FtcGxlIHdoaWNoIGhhcyB0byBiZSBy
ZWxlYXNlZC4gVGhlIGNvcHkgaXMgbmVjZXNzYXJ5IHNvIHRoYXQKQEAgLTMyMDcsNyArMzIwNyw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwYWludChHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjCiAgICAgaWYgKCFtX3Zpc2libGUpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGF1dG8gc2FtcGxlTG9ja2VyID0gaG9sZExvY2sobV9zYW1wbGVNdXRl
eCk7CisgICAgTG9ja2VyIHNhbXBsZUxvY2tlciB7IG1fc2FtcGxlTXV0ZXggfTsKICAgICBpZiAo
IUdTVF9JU19TQU1QTEUobV9zYW1wbGUuZ2V0KCkpKQogICAgICAgICByZXR1cm47CiAKQEAgLTMy
NzYsNyArMzI3Niw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb3B5Vmlk
ZW9UZXh0dXJlVG9QbGF0Zm9ybVRleHR1cmUoR3JhcGhpY3NDb250CiAgICAgaWYgKHByZW11bHRp
cGx5QWxwaGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8gc2FtcGxlTG9ja2Vy
ID0gaG9sZExvY2sobV9zYW1wbGVNdXRleCk7CisgICAgTG9ja2VyIHNhbXBsZUxvY2tlciB7IG1f
c2FtcGxlTXV0ZXggfTsKIAogICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5nZXQoKSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM1NzYsNyArMzU3Niw3IEBAIGJvb2wgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp3YWl0Rm9yQ0RNQXR0YWNobWVudCgpCiAKICAgICBib29s
IGRpZENETUF0dGFjaCA9IGZhbHNlOwogICAgIHsKLSAgICAgICAgYXV0byBjZG1BdHRhY2htZW50
TG9ja2VyID0gaG9sZExvY2sobV9jZG1BdHRhY2htZW50TXV0ZXgpOworICAgICAgICBMb2NrZXIg
Y2RtQXR0YWNobWVudExvY2tlciB7IG1fY2RtQXR0YWNobWVudE11dGV4IH07CiAgICAgICAgIGRp
ZENETUF0dGFjaCA9IG1fY2RtQXR0YWNobWVudENvbmRpdGlvbi53YWl0Rm9yKG1fY2RtQXR0YWNo
bWVudE11dGV4LCA0X3MsIFt0aGlzXSgpIHsKICAgICAgICAgICAgIHJldHVybiBpc0NETUF0dGFj
aGVkKCk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0cmVh
bWVyLmNwcAppbmRleCBkNDc2ZTQxNzcxZTI5YTEwZjg3YTAyZDA2M2QyOWQ1Y2JhNjQ1YTAxLi5k
NzdhZDRjZDllOTRlMDU5MDg1ZDg4OWM4M2EzNDU3OTg3NDBhYTAzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNlR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvV2ViS2l0V2ViU291cmNlR1N0cmVhbWVyLmNwcApAQCAtMzAxLDcgKzMwMSw3IEBAIHN0YXRp
YyB2b2lkIHdlYktpdFdlYlNyY0NvbnN0cnVjdGVkKEdPYmplY3QqIG9iamVjdCkKIAogICAgIHBy
aXYtPm1pbmltdW1CbG9ja3NpemUgPSBnc3RfYmFzZV9zcmNfZ2V0X2Jsb2Nrc2l6ZShHU1RfQkFT
RV9TUkNfQ0FTVChzcmMpKTsKIAotICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2NrKHByaXYtPmRh
dGFNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IHByaXYtPmRhdGFNdXRleCB9OwogICAgIG1l
bWJlcnMtPmFkYXB0ZXIgPSBhZG9wdEdSZWYoZ3N0X2FkYXB0ZXJfbmV3KCkpOwogICAgIHdlYmtp
dFdlYlNyY1Jlc2V0KHNyYywgbWVtYmVycywgUmVzZXRUeXBlOjpIYXJkKTsKIApAQCAtMzQ2LDcg
KzM0Niw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdFdlYlNyY0dldFByb3BlcnR5KEdPYmplY3QqIG9i
amVjdCwgZ3VpbnQgcHJvcElELCBHVmFsdWUqIHZhbHVlCiAgICAgICAgIGdfdmFsdWVfc2V0X3N0
cmluZyh2YWx1ZSwgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpKTsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBQUk9QX1JFU09MVkVEX0xPQ0FUSU9OOiB7Ci0gICAgICAgIGF1dG8gbWVtYmVycyA9
IGhvbGRMb2NrKHByaXYtPmRhdGFNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBwcml2
LT5kYXRhTXV0ZXggfTsKICAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCBtZW1iZXJz
LT5yZWRpcmVjdGVkVVJJLmlzTnVsbCgpID8gcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpIDogbWVt
YmVycy0+cmVkaXJlY3RlZFVSSS5kYXRhKCkpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0z
NzYsNyArMzc2LDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0V2ViU3JjU2V0Q29udGV4dChHc3RFbGVt
ZW50KiBlbGVtZW50LCBHc3RDb250ZXh0KiBjb250ZXh0KQogICAgIEdTVF9ERUJVR19PQkpFQ1Qo
c3JjLCAiY29udGV4dCB0eXBlOiAlcyIsIGdzdF9jb250ZXh0X2dldF9jb250ZXh0X3R5cGUoY29u
dGV4dCkpOwogICAgIGlmIChnc3RfY29udGV4dF9oYXNfY29udGV4dF90eXBlKGNvbnRleHQsIFdF
QktJVF9XRUJfU1JDX1BMQVlFUl9DT05URVhUX1RZUEVfTkFNRSkpIHsKICAgICAgICAgY29uc3Qg
R1ZhbHVlKiB2YWx1ZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3ZhbHVlKGdzdF9jb250ZXh0X2dldF9z
dHJ1Y3R1cmUoY29udGV4dCksICJwbGF5ZXIiKTsKLSAgICAgICAgYXV0byBtZW1iZXJzID0gaG9s
ZExvY2socHJpdi0+ZGF0YU11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHByaXYtPmRh
dGFNdXRleCB9OwogICAgICAgICBtZW1iZXJzLT5wbGF5ZXIgPSByZWludGVycHJldF9jYXN0PE1l
ZGlhUGxheWVyKj4oZ192YWx1ZV9nZXRfcG9pbnRlcih2YWx1ZSkpOwogICAgIH0KICAgICBHU1Rf
RUxFTUVOVF9DTEFTUyhwYXJlbnRfY2xhc3MpLT5zZXRfY29udGV4dChlbGVtZW50LCBjb250ZXh0
KTsKQEAgLTQ1OSw3ICs0NTksNyBAQCBzdGF0aWMgR3N0Rmxvd1JldHVybiB3ZWJLaXRXZWJTcmND
cmVhdGUoR3N0UHVzaFNyYyogcHVzaFNyYywgR3N0QnVmZmVyKiogYnVmZmVyKQogICAgIEdzdEJh
c2VTcmMqIGJhc2VTcmMgPSBHU1RfQkFTRV9TUkNfQ0FTVChwdXNoU3JjKTsKICAgICBXZWJLaXRX
ZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKGJhc2VTcmMpOwogICAgIFdlYktpdFdlYlNyY1By
aXZhdGUqIHByaXYgPSBzcmMtPnByaXY7Ci0gICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2socHJp
di0+ZGF0YU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgcHJpdi0+ZGF0YU11dGV4IH07CiAK
ICAgICAvLyBXZSBuZWVkIG1lbWJlcnMtPnBsYXllciB0byBtYWtlIHJlcXVlc3RzLiBUaGVyZSBh
cmUgdHdvIG1lY2hhbmlzbXMgZm9yIHRoaXMuCiAgICAgLy8KQEAgLTY4OSw3ICs2ODksNyBAQCBz
dGF0aWMgdm9pZCB3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdChXZWJLaXRXZWJTcmMqIHNyYywgRGF0
YU11dGV4PFdlYktpdFdlYlNyY1ByaQogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAg
IFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbcHJvdGVjdG9yID0gV1RGOjplbnN1cmVHUmVmKHNy
YyksIHJlcXVlc3QgPSBXVEZNb3ZlKHJlcXVlc3QpLCByZXF1ZXN0TnVtYmVyID0gbWVtYmVycy0+
cmVxdWVzdE51bWJlcl0gewogICAgICAgICBXZWJLaXRXZWJTcmNQcml2YXRlKiBwcml2ID0gcHJv
dGVjdG9yLT5wcml2OwotICAgICAgICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhwcml2LT5kYXRh
TXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcHJpdi0+ZGF0YU11dGV4IH07CiAgICAg
ICAgIC8vIElnbm9yZSB0aGlzIHRhc2sgKG5vdCBtYWtpbmcgYW55IEhUVFAgcmVxdWVzdCkgaWYg
Ynkgbm93IFdlYktpdFdlYlNyYyBzdHJlYW1pbmcgdGhyZWFkIGlzIGFscmVhZHkgd2FpdGluZwog
ICAgICAgICAvLyBmb3IgYSBkaWZmZXJlbnQgcmVxdWVzdC4gVGhlcmUgaXMgbm8gcG9pbnQgYW55
bW9yZSBpbiBzZW5kaW5nIHRoaXMgb25lLgogICAgICAgICBpZiAobWVtYmVycy0+cmVxdWVzdE51
bWJlciAhPSByZXF1ZXN0TnVtYmVyKSB7CkBAIC03MTYsNyArNzE2LDcgQEAgc3RhdGljIGdib29s
ZWFuIHdlYktpdFdlYlNyY1N0b3AoR3N0QmFzZVNyYyogYmFzZVNyYykKIHsKICAgICBXZWJLaXRX
ZWJTcmMqIHNyYyA9IFdFQktJVF9XRUJfU1JDKGJhc2VTcmMpOwogICAgIC8vIGJhc2VzcmMgd2ls
bCBhbHdheXMgY2FsbCB1bkxvY2soKSBhbmQgdW5Mb2NrU3RvcCgpIGJlZm9yZSBjYWxsaW5nIHRo
aXMuIFNlZSBnc3RfYmFzZV9zcmNfc3RvcCgpLgotICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2Nr
KHNyYy0+cHJpdi0+ZGF0YU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc3JjLT5wcml2LT5k
YXRhTXV0ZXggfTsKICAgICB3ZWJraXRXZWJTcmNSZXNldChzcmMsIG1lbWJlcnMsIFJlc2V0VHlw
ZTo6SGFyZCk7CiAgICAgR1NUX0RFQlVHX09CSkVDVChzcmMsICJTdG9wcGVkIFdlYktpdFdlYlNy
YyIpOwogICAgIHJldHVybiBUUlVFOwpAQCAtNzI1LDcgKzcyNSw3IEBAIHN0YXRpYyBnYm9vbGVh
biB3ZWJLaXRXZWJTcmNTdG9wKEdzdEJhc2VTcmMqIGJhc2VTcmMpCiBzdGF0aWMgZ2Jvb2xlYW4g
d2ViS2l0V2ViU3JjR2V0U2l6ZShHc3RCYXNlU3JjKiBiYXNlU3JjLCBndWludDY0KiBzaXplKQog
ewogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMoYmFzZVNyYyk7Ci0gICAg
YXV0byBtZW1iZXJzID0gaG9sZExvY2soc3JjLT5wcml2LT5kYXRhTXV0ZXgpOworICAgIExvY2tl
ciBsb2NrZXIgeyBzcmMtPnByaXYtPmRhdGFNdXRleCB9OwogCiAgICAgR1NUX0RFQlVHX09CSkVD
VChzcmMsICJoYXZlU2l6ZTogJXMsIHNpemU6ICUiIEdfR1VJTlQ2NF9GT1JNQVQsIGJvb2xGb3JQ
cmludGluZyhtZW1iZXJzLT5oYXZlU2l6ZSksIG1lbWJlcnMtPnNpemUpOwogICAgIGlmIChtZW1i
ZXJzLT5oYXZlU2l6ZSkgewpAQCAtNzM5LDcgKzczOSw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJL
aXRXZWJTcmNHZXRTaXplKEdzdEJhc2VTcmMqIGJhc2VTcmMsIGd1aW50NjQqIHNpemUpCiBzdGF0
aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjSXNTZWVrYWJsZShHc3RCYXNlU3JjKiBiYXNlU3JjKQog
ewogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMoYmFzZVNyYyk7Ci0gICAg
YXV0byBtZW1iZXJzID0gaG9sZExvY2soc3JjLT5wcml2LT5kYXRhTXV0ZXgpOworICAgIExvY2tl
ciBsb2NrZXIgeyBzcmMtPnByaXYtPmRhdGFNdXRleCB9OwogICAgIEdTVF9ERUJVR19PQkpFQ1Qo
c3JjLCAiaXNTZWVrYWJsZTogJXMiLCBib29sRm9yUHJpbnRpbmcobWVtYmVycy0+aXNTZWVrYWJs
ZSkpOwogICAgIHJldHVybiBtZW1iZXJzLT5pc1NlZWthYmxlOwogfQpAQCAtNzU2LDcgKzc1Niw3
IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRXZWJTcmNEb1NlZWsoR3N0QmFzZVNyYyogYmFzZVNy
YywgR3N0U2VnbWVudCogc2VnbWVudCkKICAgICBBU1NFUlQoR1NUX0VMRU1FTlQoYmFzZVNyYykt
PmN1cnJlbnRfc3RhdGUgPCBHU1RfU1RBVEVfUEFVU0VEIHx8IHdlYktpdFdlYlNyY0lzU2Vla2Fi
bGUoYmFzZVNyYykpOwogCiAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhi
YXNlU3JjKTsKLSAgICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhzcmMtPnByaXYtPmRhdGFNdXRl
eCk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNyYy0+cHJpdi0+ZGF0YU11dGV4IH07CiAKICAgICBH
U1RfREVCVUdfT0JKRUNUKHNyYywgIlNlZWsgc2VnbWVudDogKCUiIEdfR1VJTlQ2NF9GT1JNQVQg
Ii0lIiBHX0dVSU5UNjRfRk9STUFUICIpIFBvc2l0aW9uIHByZXZpb3VzIHRvIHNlZWs6ICUiIEdf
R1VJTlQ2NF9GT1JNQVQsIHNlZ21lbnQtPnN0YXJ0LCBzZWdtZW50LT5zdG9wLCBtZW1iZXJzLT5y
ZWFkUG9zaXRpb24pOwogCkBAIC03ODYsNyArNzg2LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktp
dFdlYlNyY1F1ZXJ5KEdzdEJhc2VTcmMqIGJhc2VTcmMsIEdzdFF1ZXJ5KiBxdWVyeSkKIAogICAg
IGlmIChHU1RfUVVFUllfVFlQRShxdWVyeSkgPT0gR1NUX1FVRVJZX1VSSSkgewogICAgICAgICBn
c3RfcXVlcnlfc2V0X3VyaShxdWVyeSwgcHJpdi0+b3JpZ2luYWxVUkkuZGF0YSgpKTsKLSAgICAg
ICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2soc3JjLT5wcml2LT5kYXRhTXV0ZXgpOworICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgc3JjLT5wcml2LT5kYXRhTXV0ZXggfTsKICAgICAgICAgaWYgKCFt
ZW1iZXJzLT5yZWRpcmVjdGVkVVJJLmlzTnVsbCgpKQogICAgICAgICAgICAgZ3N0X3F1ZXJ5X3Nl
dF91cmlfcmVkaXJlY3Rpb24ocXVlcnksIG1lbWJlcnMtPnJlZGlyZWN0ZWRVUkkuZGF0YSgpKTsK
ICAgICAgICAgcmVzdWx0ID0gVFJVRTsKQEAgLTgwOSw3ICs4MDksNyBAQCBzdGF0aWMgZ2Jvb2xl
YW4gd2ViS2l0V2ViU3JjUXVlcnkoR3N0QmFzZVNyYyogYmFzZVNyYywgR3N0UXVlcnkqIHF1ZXJ5
KQogc3RhdGljIGdib29sZWFuIHdlYktpdFdlYlNyY1VuTG9jayhHc3RCYXNlU3JjKiBiYXNlU3Jj
KQogewogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMoYmFzZVNyYyk7Ci0g
ICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2soc3JjLT5wcml2LT5kYXRhTXV0ZXgpOworICAgIExv
Y2tlciBsb2NrZXIgeyBzcmMtPnByaXYtPmRhdGFNdXRleCB9OwogCiAgICAgR1NUX0RFQlVHX09C
SkVDVChzcmMsICJVbmxvY2siKTsKICAgICBtZW1iZXJzLT5pc0ZsdXNoaW5nID0gdHJ1ZTsKQEAg
LTg0MCw3ICs4NDAsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjVW5Mb2NrKEdzdEJh
c2VTcmMqIGJhc2VTcmMpCiBzdGF0aWMgZ2Jvb2xlYW4gd2ViS2l0V2ViU3JjVW5Mb2NrU3RvcChH
c3RCYXNlU3JjKiBiYXNlU3JjKQogewogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dF
Ql9TUkMoYmFzZVNyYyk7Ci0gICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2soc3JjLT5wcml2LT5k
YXRhTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBzcmMtPnByaXYtPmRhdGFNdXRleCB9Owog
ICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3JjLCAiVW5sb2NrIHN0b3AiKTsKICAgICBtZW1iZXJzLT5p
c0ZsdXNoaW5nID0gZmFsc2U7CiAgICAgd2Via2l0V2ViU3JjUmVzZXQoc3JjLCBtZW1iZXJzLCBS
ZXNldFR5cGU6OlNvZnQpOwpAQCAtOTI2LDE0ICs5MjYsMTQgQEAgc3RhdGljIHZvaWQgd2ViS2l0
V2ViU3JjVXJpSGFuZGxlckluaXQoZ3BvaW50ZXIgZ0lmYWNlLCBncG9pbnRlcikKIHZvaWQgd2Vi
S2l0V2ViU3JjU2V0TWVkaWFQbGF5ZXIoV2ViS2l0V2ViU3JjKiBzcmMsIFdlYkNvcmU6Ok1lZGlh
UGxheWVyKiBwbGF5ZXIsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpCiB7CiAgICAgQVNTRVJUKHBs
YXllcik7Ci0gICAgYXV0byBtZW1iZXJzID0gaG9sZExvY2soc3JjLT5wcml2LT5kYXRhTXV0ZXgp
OworICAgIExvY2tlciBsb2NrZXIgeyBzcmMtPnByaXYtPmRhdGFNdXRleCB9OwogICAgIG1lbWJl
cnMtPnBsYXllciA9IHBsYXllcjsKICAgICBtZW1iZXJzLT5yZWZlcnJlciA9IHJlZmVycmVyOwog
fQogCiBib29sIHdlYktpdFNyY1Bhc3NlZENPUlNBY2Nlc3NDaGVjayhXZWJLaXRXZWJTcmMqIHNy
YykKIHsKLSAgICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhzcmMtPnByaXYtPmRhdGFNdXRleCk7
CisgICAgTG9ja2VyIGxvY2tlciB7IHNyYy0+cHJpdi0+ZGF0YU11dGV4IH07CiAgICAgcmV0dXJu
IG1lbWJlcnMtPmRpZFBhc3NBY2Nlc3NDb250cm9sQ2hlY2s7CiB9CiAKQEAgLTk4OCw3ICs5ODgs
NyBAQCB2b2lkIENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2VpdmVk
KFBsYXRmb3JtTWVkaWFSZXNvdXJjZSYsIGNvbgogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgV2ViS2l0V2ViU3JjKiBzcmMgPSBXRUJLSVRfV0VCX1NSQyhtX3NyYy5nZXQoKSk7CiAg
ICAgV2ViS2l0V2ViU3JjUHJpdmF0ZSogcHJpdiA9IHNyYy0+cHJpdjsKLSAgICBhdXRvIG1lbWJl
cnMgPSBob2xkTG9jayhwcml2LT5kYXRhTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBwcml2
LT5kYXRhTXV0ZXggfTsKICAgICBpZiAobWVtYmVycy0+cmVxdWVzdE51bWJlciAhPSBtX3JlcXVl
c3ROdW1iZXIpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoU2hvdWxkQ29udGludWVQb2xp
Y3lDaGVjazo6Tm8pOwogICAgICAgICByZXR1cm47CkBAIC0xMDk0LDcgKzEwOTQsNyBAQCB2b2lk
IENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2ZWQoUGxhdGZvcm1NZWRp
YVJlc291cmNlJiwgY29uc3QgYwogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9T
UkMobV9zcmMuZ2V0KCkpOwogICAgIFdlYktpdFdlYlNyY1ByaXZhdGUqIHByaXYgPSBzcmMtPnBy
aXY7CiAKLSAgICBhdXRvIG1lbWJlcnMgPSBob2xkTG9jayhwcml2LT5kYXRhTXV0ZXgpOworICAg
IExvY2tlciBsb2NrZXIgeyBwcml2LT5kYXRhTXV0ZXggfTsKICAgICBpZiAobWVtYmVycy0+cmVx
dWVzdE51bWJlciAhPSBtX3JlcXVlc3ROdW1iZXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTEz
MCw3ICsxMTMwLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6YWNjZXNz
Q29udHJvbENoZWNrRmFpbGVkKFBsYXRmb3JtTWVkaWFSZXNvdXIKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMobV9z
cmMuZ2V0KCkpOwotICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2NrKHNyYy0+cHJpdi0+ZGF0YU11
dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc3JjLT5wcml2LT5kYXRhTXV0ZXggfTsKICAgICBp
ZiAobWVtYmVycy0+cmVxdWVzdE51bWJlciAhPSBtX3JlcXVlc3ROdW1iZXIpCiAgICAgICAgIHJl
dHVybjsKIApAQCAtMTE0Myw3ICsxMTQzLDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWlu
Z0NsaWVudDo6bG9hZEZhaWxlZChQbGF0Zm9ybU1lZGlhUmVzb3VyY2UmLCBjb25zdCBSZXMKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIFdlYktpdFdlYlNyYyogc3JjID0gV0VC
S0lUX1dFQl9TUkMobV9zcmMuZ2V0KCkpOwotICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2NrKHNy
Yy0+cHJpdi0+ZGF0YU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc3JjLT5wcml2LT5kYXRh
TXV0ZXggfTsKICAgICBpZiAobWVtYmVycy0+cmVxdWVzdE51bWJlciAhPSBtX3JlcXVlc3ROdW1i
ZXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTE2MCw3ICsxMTYwLDcgQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6bG9hZEZpbmlzaGVkKFBsYXRmb3JtTWVkaWFSZXNvdXJj
ZSYsIGNvbnN0IE4KIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIFdlYktpdFdl
YlNyYyogc3JjID0gV0VCS0lUX1dFQl9TUkMobV9zcmMuZ2V0KCkpOwotICAgIGF1dG8gbWVtYmVy
cyA9IGhvbGRMb2NrKHNyYy0+cHJpdi0+ZGF0YU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
c3JjLT5wcml2LT5kYXRhTXV0ZXggfTsKICAgICBpZiAobWVtYmVycy0+cmVxdWVzdE51bWJlciAh
PSBtX3JlcXVlc3ROdW1iZXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTE3MCw3ICsxMTcwLDcg
QEAgdm9pZCBDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6bG9hZEZpbmlzaGVkKFBsYXRm
b3JtTWVkaWFSZXNvdXJjZSYsIGNvbnN0IE4KIAogYm9vbCB3ZWJLaXRTcmNXb3VsZFRhaW50T3Jp
Z2luKFdlYktpdFdlYlNyYyogc3JjLCBjb25zdCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQogewot
ICAgIGF1dG8gbWVtYmVycyA9IGhvbGRMb2NrKHNyYy0+cHJpdi0+ZGF0YU11dGV4KTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgc3JjLT5wcml2LT5kYXRhTXV0ZXggfTsKIAogICAgIGF1dG8qIGNhY2hl
ZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50ID0gcmVpbnRlcnByZXRfY2FzdDxDYWNoZWRSZXNvdXJj
ZVN0cmVhbWluZ0NsaWVudCo+KG1lbWJlcnMtPnJlc291cmNlLT5jbGllbnQoKSk7CiAgICAgZm9y
IChhdXRvJiByZXNwb25zZU9yaWdpbiA6IGNhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50LT5z
ZWN1cml0eU9yaWdpbnMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9l
bWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHAKaW5kZXggNjll
MjdmNDg1YTg1YWRmZDRlZTFlMjgxMzJjMTgzNzBkN2EzMzFlOS4uMTgwZTI2MGY5OGVjMDYwNmRj
ODQ5YzQ0YWEzMmI1OTc2ODliNmEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9y
R1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuY3BwCkBA
IC0zMTIsNyArMzEyLDcgQEAgc3RhdGljIEdzdEZsb3dSZXR1cm4gdHJhbnNmb3JtSW5QbGFjZShH
c3RCYXNlVHJhbnNmb3JtKiBiYXNlLCBHc3RCdWZmZXIqIGJ1ZmZlcikKIHN0YXRpYyBib29sIGlz
Q0RNUHJveHlBdmFpbGFibGUoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2Vs
ZikKIHsKICAgICBXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0UHJpdmF0ZSogcHJp
diA9IFdFQktJVF9NRURJQV9DRU5DX0RFQ1JZUFRfR0VUX1BSSVZBVEUoc2VsZik7Ci0gICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhwcml2LT5tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IHBy
aXYtPm11dGV4IH07CiAgICAgcmV0dXJuIHByaXYtPmNkbVByb3h5OwogfQogCkBAIC0zNDUsNyAr
MzQ1LDcgQEAgc3RhdGljIHZvaWQgYXR0YWNoQ0RNUHJveHkoV2ViS2l0TWVkaWFDb21tb25FbmNy
eXB0aW9uRGVjcnlwdCogc2VsZiwgQ0RNUHJveHkqIHAKICAgICBXZWJLaXRNZWRpYUNvbW1vbkVu
Y3J5cHRpb25EZWNyeXB0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9NRURJQV9DRU5DX0RFQ1JZUFRf
R0VUX1BSSVZBVEUoc2VsZik7CiAgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlw
dENsYXNzKiBrbGFzcyA9IFdFQktJVF9NRURJQV9DRU5DX0RFQ1JZUFRfR0VUX0NMQVNTKHNlbGYp
OwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhwcml2LT5tdXRleCk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IHByaXYtPm11dGV4IH07CiAgICAgR1NUX0VSUk9SX09CSkVDVChzZWxmLCAiQXR0
YWNoaW5nIENETVByb3h5ICVwIiwgcHJveHkpOwogICAgIHByaXYtPmNkbVByb3h5ID0gcHJveHk7
CiAgICAga2xhc3MtPmNkbVByb3h5QXR0YWNoZWQoc2VsZiwgcHJpdi0+Y2RtUHJveHkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lci5jcHAKaW5kZXgg
ODYyYjE2OTUxOTQ3ZWQ1NWJkZmFkMzIzODg3MTk3YmM2ZTBmZDM3Ni4uNDNmZWE1YTExZWNkZjQ2
NzE1OGNjZmZiNjc3OTZkOTE1YTFjMTk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01l
ZGlhU291cmNlVHJhY2tHU3RyZWFtZXIuY3BwCkBAIC02MSwyOCArNjEsMjggQEAgUmVmPE1lZGlh
U291cmNlVHJhY2tHU3RyZWFtZXI+IE1lZGlhU291cmNlVHJhY2tHU3RyZWFtZXI6OmNyZWF0ZShU
cmFja1ByaXZhdGVCYXMKIGJvb2wgTWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lcjo6aXNSZWFkeUZv
ck1vcmVTYW1wbGVzKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8g
cXVldWUgPSBob2xkTG9jayhtX3F1ZXVlRGF0YU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9xdWV1ZURhdGFNdXRleCB9OwogICAgIHJldHVybiAhcXVldWUtPmlzRnVsbCgpOwogfQogCiB2
b2lkIE1lZGlhU291cmNlVHJhY2tHU3RyZWFtZXI6Om5vdGlmeVdoZW5SZWFkeUZvck1vcmVTYW1w
bGVzKFRyYWNrUXVldWU6Okxvd0xldmVsSGFuZGxlciYmIGhhbmRsZXIpCiB7CiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvIHF1ZXVlID0gaG9sZExvY2sobV9xdWV1ZURhdGFN
dXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcXVldWVEYXRhTXV0ZXggfTsKICAgICBxdWV1
ZS0+bm90aWZ5V2hlbkxvd0xldmVsKFdURk1vdmUoaGFuZGxlcikpOwogfQogCiB2b2lkIE1lZGlh
U291cmNlVHJhY2tHU3RyZWFtZXI6OmVucXVldWVPYmplY3QoR1JlZlB0cjxHc3RNaW5pT2JqZWN0
PiYmIG9iamVjdCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8gcXVl
dWUgPSBob2xkTG9jayhtX3F1ZXVlRGF0YU11dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9x
dWV1ZURhdGFNdXRleCB9OwogICAgIHF1ZXVlLT5lbnF1ZXVlT2JqZWN0KFdURk1vdmUob2JqZWN0
KSk7CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lcjo6Y2xlYXJRdWV1ZSgpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvIHF1ZXVlID0gaG9sZExvY2so
bV9xdWV1ZURhdGFNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcXVldWVEYXRhTXV0ZXgg
fTsKICAgICBxdWV1ZS0+Y2xlYXIoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1l
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dl
YktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA2ZDAzZGY5NmFkNDM3OTBkNWFmM2Qy
YjcyZDc3MDBkMTZmZjJhNGZhLi5hY2EwOWQzNWUxMGUzYTA4N2M4MTRkNGU0Yjc3MTc4MDkwYWI1
NDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1dlYktpdE1lZGlhU291cmNlR1N0cmVh
bWVyLmNwcApAQCAtMzQ0LDcgKzM0NCw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYVNy
Y0FjdGl2YXRlTW9kZShHc3RQYWQqIHBhZCwgR3N0T2JqZWN0KiBzb3VyY2UsIEdzdFBhCiAgICAg
ICAgIC8vIFVuYmxvY2sgdGhlIHN0cmVhbWluZyB0aHJlYWQuCiAgICAgICAgIFJlZlB0cjxTdHJl
YW0+JiBzdHJlYW0gPSBXRUJLSVRfTUVESUFfU1JDX1BBRChwYWQpLT5wcml2LT5zdHJlYW07CiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gc3RyZWFtaW5nTWVtYmVycyA9IGhvbGRMb2NrKHN0
cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCk7CisgICAgICAgICAgICBMb2NrZXIgc3Ry
ZWFtaW5nTWVtYmVycyB7IHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCB9OwogICAg
ICAgICAgICAgc3RyZWFtaW5nTWVtYmVycy0+aXNGbHVzaGluZyA9IHRydWU7CiAgICAgICAgICAg
ICBzdHJlYW1pbmdNZW1iZXJzLT5wYWRMaW5rZWRPckZsdXNoZWRDb25kaXRpb24ubm90aWZ5T25l
KCk7CiAgICAgICAgICAgICBzdHJlYW1pbmdNZW1iZXJzLT5xdWV1ZUNoYW5nZWRPckZsdXNoZWRD
b25kaXRpb24ubm90aWZ5T25lKCk7CkBAIC0zNTQsNyArMzU0LDcgQEAgc3RhdGljIGdib29sZWFu
IHdlYktpdE1lZGlhU3JjQWN0aXZhdGVNb2RlKEdzdFBhZCogcGFkLCBHc3RPYmplY3QqIHNvdXJj
ZSwgR3N0UGEKICAgICAgICAgLy8gT3RoZXJ3aXNlIGEgZGVhZGxvY2sgd291bGQgb2NjdXIgYXMg
dGhlIG5leHQgZnVuY3Rpb24gdHJpZXMgdG8gam9pbiB0aGUgdGhyZWFkLgogICAgICAgICBnc3Rf
cGFkX3N0b3BfdGFzayhwYWQpOwogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIHN0cmVhbWlu
Z01lbWJlcnMgPSBob2xkTG9jayhzdHJlYW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXgpOwor
ICAgICAgICAgICAgTG9ja2VyIHN0cmVhbWluZ01lbWJlcnMgeyBzdHJlYW0tPnN0cmVhbWluZ01l
bWJlcnNEYXRhTXV0ZXggfTsKICAgICAgICAgICAgIHN0cmVhbWluZ01lbWJlcnMtPmlzRmx1c2hp
bmcgPSBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTM2NCw3ICszNjQsNyBAQCBzdGF0aWMg
Z2Jvb2xlYW4gd2ViS2l0TWVkaWFTcmNBY3RpdmF0ZU1vZGUoR3N0UGFkKiBwYWQsIEdzdE9iamVj
dCogc291cmNlLCBHc3RQYQogc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFTcmNQYWRMaW5rZWQoR3N0
UGFkKiBwYWQsIEdzdFBhZCosIHZvaWQqKQogewogICAgIFJlZlB0cjxTdHJlYW0+JiBzdHJlYW0g
PSBXRUJLSVRfTUVESUFfU1JDX1BBRChwYWQpLT5wcml2LT5zdHJlYW07Ci0gICAgYXV0byBzdHJl
YW1pbmdNZW1iZXJzID0gaG9sZExvY2soc3RyZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4
KTsKKyAgICBMb2NrZXIgc3RyZWFtaW5nTWVtYmVycyB7IHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVy
c0RhdGFNdXRleCB9OwogICAgIHN0cmVhbWluZ01lbWJlcnMtPnBhZExpbmtlZE9yRmx1c2hlZENv
bmRpdGlvbi5ub3RpZnlPbmUoKTsKIH0KIApAQCAtMzc0LDcgKzM3NCw3IEBAIHN0YXRpYyB2b2lk
IHdlYktpdE1lZGlhU3JjTG9vcCh2b2lkKiB1c2VyRGF0YSkKICAgICBHc3RQYWQqIHBhZCA9IEdT
VF9QQUQodXNlckRhdGEpOwogICAgIFJlZlB0cjxTdHJlYW0+JiBzdHJlYW0gPSBXRUJLSVRfTUVE
SUFfU1JDX1BBRChwYWQpLT5wcml2LT5zdHJlYW07CiAKLSAgICBhdXRvIHN0cmVhbWluZ01lbWJl
cnMgPSBob2xkTG9jayhzdHJlYW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXgpOworICAgIExv
Y2tlciBzdHJlYW1pbmdNZW1iZXJzIHsgc3RyZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4
IH07CiAgICAgaWYgKHN0cmVhbWluZ01lbWJlcnMtPmlzRmx1c2hpbmcpIHsKICAgICAgICAgZ3N0
X3BhZF9wYXVzZV90YXNrKHBhZCk7CiAgICAgICAgIHJldHVybjsKQEAgLTQ0MCw3ICs0NDAsNyBA
QCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY0xvb3Aodm9pZCogdXNlckRhdGEpCiAKICAgICBH
UmVmUHRyPEdzdE1pbmlPYmplY3Q+IG9iamVjdDsKICAgICB7Ci0gICAgICAgIGF1dG8gcXVldWUg
PSBob2xkTG9jayhzdHJlYW0tPnRyYWNrLT5xdWV1ZURhdGFNdXRleCgpKTsKKyAgICAgICAgTG9j
a2VyIHF1ZXVlIHsgc3RyZWFtLT50cmFjay0+cXVldWVEYXRhTXV0ZXgoKSB9OwogICAgICAgICBp
ZiAoIXF1ZXVlLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIG9iamVjdCA9IHF1ZXVlLT5wb3Ao
KTsKICAgICAgICAgICAgIHN0cmVhbWluZ01lbWJlcnMtPmhhc1BvcHBlZEZpcnN0T2JqZWN0ID0g
dHJ1ZTsKQEAgLTQ0OCw3ICs0NDgsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY0xvb3Ao
dm9pZCogdXNlckRhdGEpCiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBxdWV1ZS0+bm90
aWZ5V2hlbk5vdEVtcHR5KFsmb2JqZWN0LCBzdHJlYW1dKEdSZWZQdHI8R3N0TWluaU9iamVjdD4m
JiByZWNlaXZlZE9iamVjdCkgewogICAgICAgICAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgICAgICAgICAgICAgYXV0byBzdHJlYW1pbmdNZW1iZXJzID0gaG9sZExvY2soc3Ry
ZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4KTsKKyAgICAgICAgICAgICAgICBMb2NrZXIg
c3RyZWFtaW5nTWVtYmVycyB7IHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCB9Owog
ICAgICAgICAgICAgICAgIEFTU0VSVCghc3RyZWFtaW5nTWVtYmVycy0+aXNGbHVzaGluZyk7CiAK
ICAgICAgICAgICAgICAgICBvYmplY3QgPSBXVEZNb3ZlKHJlY2VpdmVkT2JqZWN0KTsKQEAgLTQ2
NSw3ICs0NjUsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY0xvb3Aodm9pZCogdXNlckRh
dGEpCiAgICAgfSk7CiAgICAgewogICAgICAgICAvLyBFbnN1cmUgdGhhdCBub3RpZnlXaGVuTm90
RW1wdHkoKSdzIGNhbGxiYWNrIChpZiBhbnkpIGlzIGNsZWFyZWQgYWZ0ZXIgdGhpcyBwb2ludC4K
LSAgICAgICAgYXV0byBxdWV1ZSA9IGhvbGRMb2NrKHN0cmVhbS0+dHJhY2stPnF1ZXVlRGF0YU11
dGV4KCkpOworICAgICAgICBMb2NrZXIgcXVldWUgeyBzdHJlYW0tPnRyYWNrLT5xdWV1ZURhdGFN
dXRleCgpIH07CiAgICAgICAgIHF1ZXVlLT5yZXNldE5vdEVtcHR5SGFuZGxlcigpOwogICAgIH0K
ICAgICBpZiAoc3RyZWFtaW5nTWVtYmVycy0+aXNGbHVzaGluZykgewpAQCAtNTQwLDExICs1NDAs
MTEgQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFTcmNTdHJlYW1GbHVzaChTdHJlYW0qIHN0cmVh
bSwgYm9vbCBpc1NlZWtpbmdGbHVzaCkKICAgICBib29sIHNraXBGbHVzaCA9IGZhbHNlOwogCiAg
ICAgewotICAgICAgICBhdXRvIHN0cmVhbWluZ01lbWJlcnMgPSBob2xkTG9jayhzdHJlYW0tPnN0
cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXgpOworICAgICAgICBMb2NrZXIgc3RyZWFtaW5nTWVtYmVy
cyB7IHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCB9OwogCiAgICAgICAgIGlmICgh
c3RyZWFtaW5nTWVtYmVycy0+aGFzUG9wcGVkRmlyc3RPYmplY3QpIHsKICAgICAgICAgICAgIEdT
VF9ERUJVR19PQkpFQ1Qoc3RyZWFtLT5zb3VyY2UsICJGbHVzaCByZXF1ZXN0IGZvciBzdHJlYW0g
JyVzJyBvY2N1cnJlZCBiZWZvcmUgaGFzUG9wcGVkRmlyc3RPYmplY3QsIGp1c3QgY2xlYXJpbmcg
dGhlIHF1ZXVlIGFuZCByZWFkanVzdGluZyB0aGUgc2VnbWVudC4iLCBzdHJlYW0tPnRyYWNrLT50
cmFja0lkKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgICAgICAgICBhdXRvIHF1ZXVl
ID0gaG9sZExvY2soc3RyZWFtLT50cmFjay0+cXVldWVEYXRhTXV0ZXgoKSk7CisgICAgICAgICAg
ICBMb2NrZXIgcXVldWUgeyBzdHJlYW0tPnRyYWNrLT5xdWV1ZURhdGFNdXRleCgpIH07CiAgICAg
ICAgICAgICAvLyBXZSB1c2UgY2xlYXIoKSBpbnN0ZWFkIG9mIGZsdXNoKCkgYmVjYXVzZSB0aGUg
V2ViS2l0TWVkaWFTcmMgc3RyZWFtaW5nIHRocmVhZCBjb3VsZCBiZSB3YWl0aW5nCiAgICAgICAg
ICAgICAvLyBmb3IgdGhlIHF1ZXVlLiBmbHVzaCgpIHdvdWxkIGNhbmNlbCB0aGUgbm90RW1wdHlD
YWxsYmFjayB0aGVyZWZvcmUgbGVhdmluZyB0aGUgc3RyZWFtaW5nIHRocmVhZAogICAgICAgICAg
ICAgLy8gc3R1Y2sgd2FpdGluZyBmb3JldmVyLgpAQCAtNTU4LDggKzU1OCw4IEBAIHN0YXRpYyB2
b2lkIHdlYktpdE1lZGlhU3JjU3RyZWFtRmx1c2goU3RyZWFtKiBzdHJlYW0sIGJvb2wgaXNTZWVr
aW5nRmx1c2gpCiAgICAgICAgIC8vIHdoaWNoIHdpbGwga2VlcGluZyB0aGUgc3RyZWFtaW5nIHRo
cmVhZCBpZGxlLgogICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHN0cmVhbS0+cGFkLmdldCgpLCAi
VGFraW5nIHRoZSBTdHJlYW1pbmdNZW1iZXJzIG11dGV4IGFuZCBzZXR0aW5nIGlzRmx1c2hpbmcg
PSB0cnVlLiIpOwogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIHN0cmVhbWluZ01lbWJlcnMg
PSBob2xkTG9jayhzdHJlYW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXgpOwotICAgICAgICAg
ICAgYXV0byBxdWV1ZSA9IGhvbGRMb2NrKHN0cmVhbS0+dHJhY2stPnF1ZXVlRGF0YU11dGV4KCkp
OworICAgICAgICAgICAgTG9ja2VyIHN0cmVhbWluZ01lbWJlcnMgeyBzdHJlYW0tPnN0cmVhbWlu
Z01lbWJlcnNEYXRhTXV0ZXggfTsKKyAgICAgICAgICAgIExvY2tlciBxdWV1ZSB7IHN0cmVhbS0+
dHJhY2stPnF1ZXVlRGF0YU11dGV4KCkgfTsKIAogICAgICAgICAgICAgc3RyZWFtaW5nTWVtYmVy
cy0+aXNGbHVzaGluZyA9IHRydWU7CiAgICAgICAgICAgICBxdWV1ZS0+Zmx1c2goKTsgLy8gQ2xl
YXIgdGhlIHF1ZXVlIGFuZCBjYW5jZWwgYW55IHdhaXRpbmcgY2FsbGJhY2suCkBAIC01ODEsNyAr
NTgxLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFTcmNTdHJlYW1GbHVzaChTdHJlYW0qIHN0
cmVhbSwgYm9vbCBpc1NlZWtpbmdGbHVzaCkKICAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2Ygc2Vl
a2luZyBmbHVzaCB3ZSBhcmUgcmVzZXR0aW5nIHRoZSB0aW1lbGluZSAoc2VlIHRoZSBmbHVzaCBz
dG9wIGxhdGVyKS4KICAgICAgICAgLy8gVGhlIHJlc3VsdGluZyBzZWdtZW50IGlzIGJyYW5kIG5l
dywgYnV0IHdpdGggYSBkaWZmZXJlbnQgc3RhcnQgdGltZS4KICAgICAgICAgV2ViS2l0TWVkaWFT
cmNQcml2YXRlKiBwcml2ID0gc3RyZWFtLT5zb3VyY2UtPnByaXY7Ci0gICAgICAgIGF1dG8gc3Ry
ZWFtaW5nTWVtYmVycyA9IGhvbGRMb2NrKHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRl
eCk7CisgICAgICAgIExvY2tlciBzdHJlYW1pbmdNZW1iZXJzIHsgc3RyZWFtLT5zdHJlYW1pbmdN
ZW1iZXJzRGF0YU11dGV4IH07CiAgICAgICAgIHN0cmVhbWluZ01lbWJlcnMtPnNlZ21lbnQuYmFz
ZSA9IDA7CiAgICAgICAgIHN0cmVhbWluZ01lbWJlcnMtPnNlZ21lbnQucmF0ZSA9IHByaXYtPnJh
dGU7CiAgICAgICAgIHN0cmVhbWluZ01lbWJlcnMtPnNlZ21lbnQuc3RhcnQgPSBzdHJlYW1pbmdN
ZW1iZXJzLT5zZWdtZW50LnRpbWUgPSBwcml2LT5zdGFydFRpbWU7CkBAIC01OTUsNyArNTk1LDcg
QEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFTcmNTdHJlYW1GbHVzaChTdHJlYW0qIHN0cmVhbSwg
Ym9vbCBpc1NlZWtpbmdGbHVzaCkKICAgICAgICAgLy8gR1NUX0NMT0NLX1RJTUVfTk9ORSBpcyBy
ZXR1cm5lZCB3aGVuIHRoZSBwaXBlbGluZSBpcyBub3QgeWV0IHByZS1yb2xsZWQgKGUuZy4ganVz
dCBhZnRlciBhIHNlZWspLiBJbiB0aGlzIGNhc2UKICAgICAgICAgLy8gd2UgZG9uJ3QgbmVlZCB0
byBhZGp1c3QgdGhlIHNlZ21lbnQgdGhvdWdoLCBhcyBydW5uaW5nIHRpbWUgaGFzIG5vdCBhZHZh
bmNlZC4KICAgICAgICAgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEKHBpcGVsaW5lU3RyZWFt
VGltZSkpIHsKLSAgICAgICAgICAgIGF1dG8gc3RyZWFtaW5nTWVtYmVycyA9IGhvbGRMb2NrKHN0
cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCk7CisgICAgICAgICAgICBMb2NrZXIgc3Ry
ZWFtaW5nTWVtYmVycyB7IHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCB9OwogICAg
ICAgICAgICAgLy8gV2UgbmVlZCB0byBpbmNyZWFzZSB0aGUgYmFzZSBieSB0aGUgcnVubmluZyB0
aW1lIGFjY3VtdWxhdGVkIGR1cmluZyB0aGUgcHJldmlvdXMgc2VnbWVudC4KIAogICAgICAgICAg
ICAgR3N0Q2xvY2tUaW1lIHBpcGVsaW5lUnVubmluZ1RpbWUgPSBnc3Rfc2VnbWVudF90b19ydW5u
aW5nX3RpbWUoJnN0cmVhbWluZ01lbWJlcnMtPnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSwgcGlw
ZWxpbmVTdHJlYW1UaW1lKTsKQEAgLTYxNCw3ICs2MTQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRN
ZWRpYVNyY1N0cmVhbUZsdXNoKFN0cmVhbSogc3RyZWFtLCBib29sIGlzU2Vla2luZ0ZsdXNoKQog
ICAgICAgICBHU1RfUEFEX1NUUkVBTV9MT0NLKHN0cmVhbS0+cGFkLmdldCgpKTsKICAgICAgICAg
ewogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChzdHJlYW0tPnBhZC5nZXQoKSwgIlRha2lu
ZyB0aGUgU3RyZWFtaW5nTWVtYmVycyBtdXRleCBhZ2Fpbi4iKTsKLSAgICAgICAgICAgIGF1dG8g
c3RyZWFtaW5nTWVtYmVycyA9IGhvbGRMb2NrKHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFN
dXRleCk7CisgICAgICAgICAgICBMb2NrZXIgc3RyZWFtaW5nTWVtYmVycyB7IHN0cmVhbS0+c3Ry
ZWFtaW5nTWVtYmVyc0RhdGFNdXRleCB9OwogICAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVChz
dHJlYW0tPnBhZC5nZXQoKSwgIlN0cmVhbWluZ01lbWJlcnMgbXV0ZXggdGFrZW4sIHVzaW5nIGl0
IHRvIHNldCBpc0ZsdXNoaW5nID0gZmFsc2UuIik7CiAgICAgICAgICAgICBzdHJlYW1pbmdNZW1i
ZXJzLT5pc0ZsdXNoaW5nID0gZmFsc2U7CiAgICAgICAgICAgICBzdHJlYW1pbmdNZW1iZXJzLT5k
b2VzTmVlZFNlZ21lbnRFdmVudCA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KaW5kZXggNTc3YjAwNzYxM2MzMzExNDAzZDlhNDcw
NDQ3NDcxMDM4ZWM3NjQ1My4uNjViY2E2NzBmOTI4NmQyNWExOTUxOTIxYjg1ZjBhMDVhMDE1MmQ1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9y
TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1h
Yy5tbQpAQCAtMTQ0LDcgKzE0NCw3IEBAIE5TQ29sb3IgKm5zQ29sb3IoY29uc3QgQ29sb3ImIGNv
bG9yKQogICAgIH0KIAogICAgIHN0YXRpYyBMb2NrIGNhY2hlZENvbG9yTG9jazsKLSAgICBhdXRv
IGhvbGRlciA9IGhvbGRMb2NrKGNhY2hlZENvbG9yTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IGNhY2hlZENvbG9yTG9jayB9OwogCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRpbnlMUlVD
YWNoZTxDb2xvciwgUmV0YWluUHRyPE5TQ29sb3I+LCAzMj4+IGNhY2hlOwogICAgIHJldHVybiBj
YWNoZS5nZXQoKS5nZXQoY29sb3IpLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVy
UGlwZS5jcHAKaW5kZXggOWYxMTI0ZmVhNzA3NjZlNmUxYzY0YmRiNWM3YzYzYjBhZTlhNDU5NC4u
ZTM2ZDM2YjFlZjA2OGIwNTM0ZTNhYTZlMWU3NTBjODk1MTI3ODA5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05p
Y29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgTmljb3NpYUlt
YWdlQnVmZmVyUGlwZVNvdXJjZTo6aGFuZGxlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIp
CiAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9pbWFnZUJ1ZmZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2ltYWdl
QnVmZmVyTG9jayB9OwogCiAgICAgaWYgKCFtX2ltYWdlQnVmZmVyKSB7CiAgICAgICAgIGF1dG8g
cHJveHlPcGVyYXRpb24gPSBbdGhpc10gKFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkm
IHByb3h5KSBtdXRhYmxlIHsKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIE5pY29zaWFJbWFnZUJ1
ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVyKQogICAg
ICAgICAgICAgICAgIGF1dG8gdGV4dHVyZSA9IEJpdG1hcFRleHR1cmVHTDo6Y3JlYXRlKFRleHR1
cmVNYXBwZXJDb250ZXh0QXR0cmlidXRlczo6Z2V0KCkpOwogCiAgICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW1hZ2VCdWZmZXJM
b2NrKTsKKyAgICAgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1faW1hZ2VCdWZmZXJM
b2NrIH07CiAKICAgICAgICAgICAgICAgICAgICAgaWYgKCFtX2ltYWdlQnVmZmVyKQogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCmluZGV4IDEwNTRjNjRjYWYxMjFkODg2NjY0NmIwNmJh
ZjQ4NzIwM2ZjYmMzMjEuLjE5ZmZkZWViNTFkNmY4NzFlZDdhNmNlOWM1NWNkOTQ0ZDZiMjQxMWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVh
ZC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQu
bW0KQEAgLTIxNyw3ICsyMTcsNyBAQCBzdGF0aWMgdm9pZCBIYW5kbGVEZWxlZ2F0ZVNvdXJjZSh2
b2lkKikKICAgICBfV2ViVGhyZWFkQXV0b0xvY2soKTsKIAogICAgIHsKLSAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhkZWxlZ2F0ZUxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
ZGVsZWdhdGVMb2NrIH07CiAKICNpZiBMT0dfTUVTU0FHRVMKICAgICAgICAgaWYgKFtbZGVsZWdh
dGVJbnZvY2F0aW9uKCkgdGFyZ2V0XSBpc0tpbmRPZkNsYXNzOltOU05vdGlmaWNhdGlvbkNlbnRl
ciBjbGFzc11dKSB7CkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBXZWJUaHJlYWRBZG9wdEFuZFJl
bGVhc2UoaWQgb2JqKQogICAgIE5TTG9nKEAiUmVsZWFzZSBzZW5kIFttYWluIHRocmVhZF06ICVA
Iiwgb2JqKTsKICNlbmRpZiAgICAgICAgCiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdl
YlRocmVhZFJlbGVhc2VMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgd2ViVGhyZWFkUmVsZWFz
ZUxvY2sgfTsKIAogICAgIGlmICh3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKSA9PSBuaWwpCiAg
ICAgICAgIHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgpID0gYWRvcHRDRihDRkFycmF5Q3JlYXRl
TXV0YWJsZShrQ0ZBbGxvY2F0b3JTeXN0ZW1EZWZhdWx0LCAwLCBudWxscHRyKSk7CkBAIC0zOTEs
NyArMzkxLDcgQEAgdm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwoaWQgc2Vs
ZiwgU0VMKQogICAgIH0KIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3
ZWJDb3JlUmVsZWFzZUxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgd2ViQ29yZVJlbGVh
c2VMb2NrIH07CiAgICAgICAgIGlmIChbc2VsZiByZXRhaW5Db3VudF0gIT0gMSkgewogICAgICAg
ICAgICAgLy8gVGhpcyBpcyBub3QgdGhlIG9ubHkgcmVmZXJlbmNlIHJldGFpbmluZyB0aGUgb2Jq
ZWN0LCBzbyBhbm90aGVyCiAgICAgICAgICAgICAvLyB0aHJlYWQgY291bGQgYWxzbyBjYWxsIHJl
bGVhc2UgLSBob2xkIHRoZSBsb2NrIHdoaWxzdCBjYWxsaW5nCkBAIC00MTAsNyArNDEwLDcgQEAg
dm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwoaWQgc2VsZiwgU0VMKQogCiB2
b2lkIFdlYkNvcmVPYmpDRGVhbGxvY1dpdGhXZWJUaHJlYWRMb2NrSW1wbChpZCBzZWxmLCBTRUwp
CiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3ZWJDb3JlUmVsZWFzZUxvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyB3ZWJDb3JlUmVsZWFzZUxvY2sgfTsKICAgICBpZiAoV2ViVGhyZWFk
SXNMb2NrZWRPckRpc2FibGVkKCkgfHwgMSAhPSBbc2VsZiByZXRhaW5Db3VudF0pCiAgICAgICAg
IFtzZWxmIF93ZWJjb3JlX3JlbGVhc2VXaXRoV2ViVGhyZWFkTG9ja107CiAgICAgZWxzZQpAQCAt
NDIzLDcgKzQyMyw3IEBAIHN0YXRpYyB2b2lkIEhhbmRsZVdlYlRocmVhZFJlbGVhc2VTb3VyY2Uo
dm9pZCopCiAKICAgICBSZXRhaW5QdHI8Q0ZNdXRhYmxlQXJyYXlSZWY+IG9iamVjdHM7CiAgICAg
ewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdlYlRocmVhZFJlbGVhc2VMb2NrKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHdlYlRocmVhZFJlbGVhc2VMb2NrIH07CiAgICAgICAg
IGlmIChDRkFycmF5R2V0Q291bnQod2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KCkuZ2V0KCkpKSB7
CiAgICAgICAgICAgICBvYmplY3RzID0gYWRvcHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZUNvcHko
bnVsbHB0ciwgMCwgd2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KCkuZ2V0KCkpKTsKICAgICAgICAg
ICAgIENGQXJyYXlSZW1vdmVBbGxWYWx1ZXMod2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KCkuZ2V0
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3Jl
VGhyZWFkUnVuLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRo
cmVhZFJ1bi5jcHAKaW5kZXggY2E5OGE4ZmNiNDk3NjI1MWEyY2MxOWJkY2YyNzFmN2Y2NDk2ZTMx
Ny4uOGY4MWQ3YzFhY2E0Njk1NTUxZmM0NDBiNDdlOTA2MWQ0YjM1ZGYyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRSdW4uY3BwCkBA
IC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0Q29tcGxldGVkKCkKICAgICB7
Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdGF0ZU11dGV4KTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fc3RhdGVNdXRleCB9OwogCiAgICAgICAgIEFTU0VSVCghbV9jb21w
bGV0ZWQpOwogICAgICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CkBAIC0xMjksNyArMTI5LDcgQEAg
c3RhdGljIHZvaWQgSGFuZGxlUnVuU291cmNlKHZvaWQgKmluZm8pCiAKICAgICBXZWJUaHJlYWRS
dW5RdWV1ZSBxdWV1ZUNvcHk7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KHJ1blF1ZXVlTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcnVuUXVldWVNdXRleCB9
OwogICAgICAgICBxdWV1ZUNvcHkgPSAqcnVuUXVldWU7CiAgICAgICAgIHJ1blF1ZXVlLT5jbGVh
cigpOwogICAgIH0KQEAgLTE1Myw3ICsxNTMsNyBAQCBzdGF0aWMgdm9pZCBfV2ViVGhyZWFkUnVu
KHZvaWQgKF5ibG9jaykodm9pZCksIGJvb2wgc3luY2hyb25vdXMpCiAgICAgICAgIHN0YXRlID0g
bmV3IFdlYlRocmVhZEJsb2NrU3RhdGU7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2socnVuUXVldWVNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBydW5RdWV1
ZU11dGV4IH07CiAgICAgICAgIHJ1blF1ZXVlLT5hcHBlbmQoV2ViVGhyZWFkQmxvY2soYmxvY2ss
IHN0YXRlKSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUHVibGljU3VmZml4TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1Ymxp
Y1N1ZmZpeE1hYy5tbQppbmRleCBiODUwNmFiNzZlMzI0OGM1NTlkZTU5YmViZDhhYmMxYWJmNjY1
ZGE1Li5hMWJmYzIxYjU5ZTQwZjhjYmIxZmIzOTYxZWVjMzgwYTE5ZWIzMzI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0KQEAgLTUxLDcgKzUx
LDcgQEAgU3RyaW5nIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oY29uc3QgU3RyaW5nJiBk
b21haW4pCiAgICAgICAgIHJldHVybiBkb21haW47CiAKICAgICBzdGF0aWMgTG9jayBjYWNoZUxv
Y2s7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhjYWNoZUxvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyBjYWNoZUxvY2sgfTsKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoTWFw
PFN0cmluZywgU3RyaW5nLCBBU0NJSUNhc2VJbnNlbnNpdGl2ZUhhc2g+PiBjYWNoZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZU1vY2suY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCmluZGV4IDU5OTY3NGE5MmFkMjZjYmY4Yzc3
NGI3ODViNWI0ZDJmNWM2ZmNmZjYuLjdhMGViZTM4ZjJhMjA5MjMxNzk4NWY4NDE4NzljYWFhODk3
MmU3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIv
TWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKQEAgLTY5LDcgKzY5
LDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6OnJlc3VtZVJlY29yZGluZyhDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGwKIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0
ZU1vY2s6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1lZGlhU2FtcGxlJikKIHsKLSAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fYnVmZmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYnVm
ZmVyTG9jayB9OwogICAgIG1fYnVmZmVyLmFwcGVuZCgiVmlkZW8gVHJhY2sgSUQ6ICIpOwogICAg
IG1fYnVmZmVyLmFwcGVuZChtX3ZpZGVvVHJhY2tJRCk7CiAgICAgZ2VuZXJhdGVNb2NrQ291bnRl
clN0cmluZygpOwpAQCAtODAsNyArODAsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9j
azo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IFdURjo6TWVkaWFUaW1lJiwgY29ucwogICAg
IC8vIEhlYXAgYWxsb2NhdGlvbnMgYXJlIGZvcmJpZGRlbiBvbiB0aGUgYXVkaW8gdGhyZWFkIGZv
ciBwZXJmb3JtYW5jZSByZWFzb25zIHNvIHdlIG5lZWQgdG8KICAgICAvLyBleHBsaWNpdGx5IGFs
bG93IHRoZSBmb2xsb3dpbmcgYWxsb2NhdGlvbihzKS4KICAgICBEaXNhYmxlTWFsbG9jUmVzdHJp
Y3Rpb25zRm9yQ3VycmVudFRocmVhZFNjb3BlIGRpc2FibGVNYWxsb2NSZXN0cmljdGlvbnM7Ci0g
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2J1ZmZlckxvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2J1ZmZlckxvY2sgfTsKICAgICBtX2J1ZmZlci5hcHBlbmQoIkF1ZGlvIFRyYWNrIElE
OiAiKTsKICAgICBtX2J1ZmZlci5hcHBlbmQobV9hdWRpb1RyYWNrSUQpOwogICAgIGdlbmVyYXRl
TW9ja0NvdW50ZXJTdHJpbmcoKTsKQEAgLTk1LDcgKzk1LDcgQEAgdm9pZCBNZWRpYVJlY29yZGVy
UHJpdmF0ZU1vY2s6OmZldGNoRGF0YShGZXRjaERhdGFDYWxsYmFjayYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlcjsKICAgICB7Ci0gICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9idWZmZXJMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fYnVmZmVyTG9jayB9OwogICAgICAgICBWZWN0b3I8dWludDhfdD4gdmFsdWUobV9i
dWZmZXIubGVuZ3RoKCkpOwogICAgICAgICBtZW1jcHkodmFsdWUuZGF0YSgpLCBtX2J1ZmZlci5j
aGFyYWN0ZXJzOCgpLCBtX2J1ZmZlci5sZW5ndGgoKSk7CiAgICAgICAgIG1fYnVmZmVyLmNsZWFy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EubW0KaW5kZXggNGQ1ZjBjZWNiZDcxZDk1NTkyYWM2NWQ1YjYwYWU3ZjI2M2NjZmQ3ZC4uOTIz
YTM2MGQ1M2U0ZjU1NDRlNWIwYmZiOGRmZmJkNTU5NWQ1YTAwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0
ZVdyaXRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3Jk
ZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQpAQCAtNTQzLDcgKzU0
Myw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmNvbXBsZXRlRmV0Y2hEYXRh
KCkKIAogdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
ZGF0YUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07CiAgICAgaWYgKCFt
X2RhdGEpIHsKICAgICAgICAgbV9kYXRhID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoZGF0YSwgc2l6
ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTU1Myw3ICs1NTMsNyBAQCB2b2lkIE1lZGlhUmVjb3Jk
ZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXpl
KQogCiBSZWZQdHI8U2hhcmVkQnVmZmVyPiBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6dGFr
ZURhdGEoKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9kYXRhTG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKICAgICBhdXRvIGRhdGEgPSBXVEZNb3ZlKG1f
ZGF0YSk7CiAgICAgcmV0dXJuIGRhdGE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCmluZGV4IDI3
OGQxOTY3OGRiM2VhMzQ0ZDU3NzMxNWZkZjAwMzBjMTBlOTBjYTAuLmM5YmMwNzcxMzhhODBiNThi
Y2M0OTdlMGM0MWExNWVlY2I3NjE0ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwCkBAIC02Mywy
OCArNjMsMjggQEAgUmVhbHRpbWVNZWRpYVNvdXJjZTo6UmVhbHRpbWVNZWRpYVNvdXJjZShUeXBl
IHR5cGUsIFN0cmluZyYmIG5hbWUsIFN0cmluZyYmIGRldmkKIHZvaWQgUmVhbHRpbWVNZWRpYVNv
dXJjZTo6YWRkQXVkaW9TYW1wbGVPYnNlcnZlcihBdWRpb1NhbXBsZU9ic2VydmVyJiBvYnNlcnZl
cikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9hdWRpb1NhbXBsZU9ic2VydmVyc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBt
X2F1ZGlvU2FtcGxlT2JzZXJ2ZXJzTG9jayB9OwogICAgIG1fYXVkaW9TYW1wbGVPYnNlcnZlcnMu
YWRkKCZvYnNlcnZlcik7CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3ZlQXVk
aW9TYW1wbGVPYnNlcnZlcihBdWRpb1NhbXBsZU9ic2VydmVyJiBvYnNlcnZlcikKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9hdWRp
b1NhbXBsZU9ic2VydmVyc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2F1ZGlvU2FtcGxl
T2JzZXJ2ZXJzTG9jayB9OwogICAgIG1fYXVkaW9TYW1wbGVPYnNlcnZlcnMucmVtb3ZlKCZvYnNl
cnZlcik7CiB9CiAKIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRkVmlkZW9TYW1wbGVPYnNl
cnZlcihWaWRlb1NhbXBsZU9ic2VydmVyJiBvYnNlcnZlcikKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV92aWRlb1NhbXBsZU9ic2Vy
dmVyc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3ZpZGVvU2FtcGxlT2JzZXJ2ZXJzTG9j
ayB9OwogICAgIG1fdmlkZW9TYW1wbGVPYnNlcnZlcnMuYWRkKCZvYnNlcnZlcik7CiB9CiAKIHZv
aWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3ZlVmlkZW9TYW1wbGVPYnNlcnZlcihWaWRlb1Nh
bXBsZU9ic2VydmVyJiBvYnNlcnZlcikKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwot
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV92aWRlb1NhbXBsZU9ic2VydmVyc0xvY2spOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX3ZpZGVvU2FtcGxlT2JzZXJ2ZXJzTG9jayB9OwogICAgIG1f
dmlkZW9TYW1wbGVPYnNlcnZlcnMucmVtb3ZlKCZvYnNlcnZlcik7CiB9CiAKQEAgLTIwNiw3ICsy
MDYsNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKE1l
ZGlhU2FtcGxlJiBtZWRpYVNhbXBsZSkKIAogICAgIHVwZGF0ZUhhc1N0YXJ0ZWRQcm9kdWNpbmdE
YXRhKCk7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdmlkZW9TYW1wbGVPYnNlcnZl
cnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV92aWRlb1NhbXBsZU9ic2VydmVyc0xvY2sg
fTsKICAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDogbV92aWRlb1NhbXBsZU9ic2VydmVycykKICAg
ICAgICAgb2JzZXJ2ZXItPnZpZGVvU2FtcGxlQXZhaWxhYmxlKG1lZGlhU2FtcGxlKTsKIH0KQEAg
LTIxNSw3ICsyMTUsNyBAQCB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmF1ZGlvU2FtcGxlc0F2
YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFBsYQogewogICAgIHVwZGF0ZUhh
c1N0YXJ0ZWRQcm9kdWNpbmdEYXRhKCk7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
YXVkaW9TYW1wbGVPYnNlcnZlcnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9hdWRpb1Nh
bXBsZU9ic2VydmVyc0xvY2sgfTsKICAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDogbV9hdWRpb1Nh
bXBsZU9ic2VydmVycykKICAgICAgICAgb2JzZXJ2ZXItPmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSh0
aW1lLCBhdWRpb0RhdGEsIGRlc2NyaXB0aW9uLCBudW1iZXJPZkZyYW1lcyk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5n
QXVkaW9Tb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVh
bHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAppbmRleCBjMjdlNjBmNjZjY2NlOTI2MjBlMjY1
NzhmZjU4YTNiMGU1NzQ4MDQ4Li40MDM3ZjUxM2YyYzgyMzgxODE2ZDJjNjQzNTQyYWEyMTViNmMw
MGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAKQEAgLTQ3LDcgKzQ3
LDcgQEAgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjp+UmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlKCkKIHsKICAgICBBU1NFUlQoIW1fYXVkaW9Tb3VyY2UtPmhhc09ic2VydmVyKCp0aGlz
KSk7CiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2lu
a3NMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zaW5rc0xvY2sgfTsKICNlbmRpZgogICAg
IEFTU0VSVChtX3NpbmtzLmlzRW1wdHkoKSk7CiAKQEAgLTk1LDEzICs5NSwxMyBAQCB2b2lkIFJl
YWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c291cmNlRW5hYmxlZENoYW5nZWQoKQogCiB2b2lk
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6QWRkU2luayh3ZWJydGM6OkF1ZGlvVHJhY2tT
aW5rSW50ZXJmYWNlKiBzaW5rKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zaW5r
c0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NpbmtzTG9jayB9OwogICAgIG1fc2lua3Mu
YWRkKHNpbmspOwogfQogCiB2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6UmVtb3Zl
U2luayh3ZWJydGM6OkF1ZGlvVHJhY2tTaW5rSW50ZXJmYWNlKiBzaW5rKQogewotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9zaW5rc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Np
bmtzTG9jayB9OwogICAgIG1fc2lua3MucmVtb3ZlKHNpbmspOwogfQogCkBAIC0xMTIsNyArMTEy
LDcgQEAgdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNlbmRBdWRpb0ZyYW1lcyhj
b25zdCB2b2lkKiBhdWRpb0RhdGEsIGludCBiaXQKICAgICAgICAgQUxXQVlTX0xPRyhMT0dJREVO
VElGSUVSLCAiY2h1bmsgIiwgbV9jaHVua3NTZW50KTsKICNlbmRpZgogCi0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX3NpbmtzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2lua3NM
b2NrIH07CiAgICAgZm9yIChhdXRvIHNpbmsgOiBtX3NpbmtzKQogICAgICAgICBzaW5rLT5PbkRh
dGEoYXVkaW9EYXRhLCBiaXRzUGVyU2FtcGxlLCBzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxz
LCBudW1iZXJPZkZyYW1lcyk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNw
cAppbmRleCBmYTk0NjY1ZTVmYmFkMzg3ZDMzZGRlMGIwMjdmYmUxOTRiMjVkMzBlLi4xMmNlZDc5
ZmNmNmE2ZTUzMGRkN2I5ZTEwMjU2NWQ4Zjc1YzJkYTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29p
bmdWaWRlb1NvdXJjZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgUmVhbHRpbWVPdXRnb2luZ1ZpZGVv
U291cmNlOjp+UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlKCkKIHsKIEFTU0VSVCghbV92aWRl
b1NvdXJjZS0+aGFzT2JzZXJ2ZXIoKnRoaXMpKTsKICNpZiBBU1NFUlRfRU5BQkxFRAotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9zaW5rc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBt
X3NpbmtzTG9jayB9OwogI2VuZGlmCiAgICAgQVNTRVJUKG1fc2lua3MuaXNFbXB0eSgpKTsKICAg
ICBzdG9wKCk7CkBAIC0xNTgsMTMgKzE1OCwxMyBAQCB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRl
b1NvdXJjZTo6QWRkT3JVcGRhdGVTaW5rKHJ0Yzo6VmlkZW9TaW5rSW50ZXJmYWNlPHdlYnJ0Ywog
ICAgIGlmIChzaW5rV2FudHMucm90YXRpb25fYXBwbGllZCkKICAgICAgICAgYXBwbHlSb3RhdGlv
bigpOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3NpbmtzTG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fc2lua3NMb2NrIH07CiAgICAgbV9zaW5rcy5hZGQoc2luayk7CiB9CiAK
IHZvaWQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpSZW1vdmVTaW5rKHJ0Yzo6VmlkZW9T
aW5rSW50ZXJmYWNlPHdlYnJ0Yzo6VmlkZW9GcmFtZT4qIHNpbmspCiB7Ci0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX3NpbmtzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2lua3NM
b2NrIH07CiAgICAgbV9zaW5rcy5yZW1vdmUoc2luayk7CiB9CiAKQEAgLTIxOSw3ICsyMTksNyBA
QCB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6c2VuZEZyYW1lKHJ0Yzo6c2NvcGVk
X3JlZnB0cjx3ZWJydGM6OlZpZGVvRnJhbQogICAgIH0KICNlbmRpZgogCi0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX3NpbmtzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2lua3NM
b2NrIH07CiAgICAgZm9yIChhdXRvKiBzaW5rIDogbV9zaW5rcykKICAgICAgICAgc2luay0+T25G
cmFtZShmcmFtZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9tYWMvQmFzZUF1ZGlvU2hhcmVkVW5pdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQmFzZUF1ZGlvU2hhcmVkVW5pdC5jcHAKaW5kZXggNTNjN2U3
YmNlMzQ1NzYyODI4ZTdhM2IzOWE3OGU5YmE1ZTIzMjE3NC4uYTJiZTUyMjUzNDcyMTVkNGU3Nzkw
MDdiNjY2NjAyMzY4MGQ4N2IyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0Jhc2VBdWRpb1NoYXJlZFVuaXQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9CYXNlQXVkaW9TaGFyZWRVbml0LmNwcApAQCAt
NDUsMTQgKzQ1LDE0IEBAIEJhc2VBdWRpb1NoYXJlZFVuaXQ6OkJhc2VBdWRpb1NoYXJlZFVuaXQo
KQogdm9pZCBCYXNlQXVkaW9TaGFyZWRVbml0OjphZGRDbGllbnQoQ29yZUF1ZGlvQ2FwdHVyZVNv
dXJjZSYgY2xpZW50KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2NsaWVudHNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9j
bGllbnRzTG9jayB9OwogICAgIG1fY2xpZW50cy5hZGQoJmNsaWVudCk7CiB9CiAKIHZvaWQgQmFz
ZUF1ZGlvU2hhcmVkVW5pdDo6cmVtb3ZlQ2xpZW50KENvcmVBdWRpb0NhcHR1cmVTb3VyY2UmIGNs
aWVudCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9jbGllbnRzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2xpZW50c0xv
Y2sgfTsKICAgICBtX2NsaWVudHMucmVtb3ZlKCZjbGllbnQpOwogfQogCkBAIC02MCwxMSArNjAs
MTEgQEAgdm9pZCBCYXNlQXVkaW9TaGFyZWRVbml0Ojpmb3JFYWNoQ2xpZW50KGNvbnN0IEZ1bmN0
aW9uPHZvaWQoQ29yZUF1ZGlvQ2FwdHVyZVNvdXIKIHsKICAgICBWZWN0b3I8Q29yZUF1ZGlvQ2Fw
dHVyZVNvdXJjZSo+IGNsaWVudHNDb3B5OwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX2NsaWVudHNMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY2xpZW50
c0xvY2sgfTsKICAgICAgICAgY2xpZW50c0NvcHkgPSBjb3B5VG9WZWN0b3IobV9jbGllbnRzKTsK
ICAgICB9CiAgICAgZm9yIChhdXRvKiBjbGllbnQgOiBjbGllbnRzQ29weSkgewotICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fY2xpZW50c0xvY2spOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9jbGllbnRzTG9jayB9OwogICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIGNsaWVudCBo
YXMgbm90IGJlZW4gZGVzdHJveWVkLgogICAgICAgICBpZiAoIW1fY2xpZW50cy5jb250YWlucyhj
bGllbnQpKQogICAgICAgICAgICAgY29udGludWU7CkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgQmFz
ZUF1ZGlvU2hhcmVkVW5pdDo6Zm9yRWFjaENsaWVudChjb25zdCBGdW5jdGlvbjx2b2lkKENvcmVB
dWRpb0NhcHR1cmVTb3VyCiAKIHZvaWQgQmFzZUF1ZGlvU2hhcmVkVW5pdDo6Y2xlYXJDbGllbnRz
KCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fY2xpZW50c0xvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2NsaWVudHNMb2NrIH07CiAgICAgbV9jbGllbnRzLmNsZWFyKCk7CiB9
CiAKQEAgLTIxNyw3ICsyMTcsNyBAQCBPU1N0YXR1cyBCYXNlQXVkaW9TaGFyZWRVbml0OjpzdXNw
ZW5kKCkKIHZvaWQgQmFzZUF1ZGlvU2hhcmVkVW5pdDo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNv
bnN0IE1lZGlhVGltZSYgdGltZSwgY29uc3QgUGxhdGZvcm1BdWRpb0RhdGEmIGRhdGEsIGNvbnN0
IEF1ZGlvU3RyZWFtRGVzY3JpcHRpb24mIGRlc2NyaXB0aW9uLCBzaXplX3QgbnVtYmVyT2ZGcmFt
ZXMpCiB7CiAgICAgLy8gV2UgaG9sZCB0aGUgbG9jayBoZXJlIHNpbmNlIGFkZGluZy9yZW1vdmlu
ZyBjbGllbnRzIGNhbiBvbmx5IGhhcHBlbiBpbiBtYWluIHRocmVhZC4KLSAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1fY2xpZW50c0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2NsaWVu
dHNMb2NrIH07CiAKICAgICAvLyBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgd2UgZm9yYmlkIGhl
YXAgYWxsb2NhdGlvbnMgd2hpbGUgZG9pbmcgcmVuZGVyaW5nIG9uIHRoZSBjYXB0dXJlIGF1ZGlv
IHRocmVhZC4KICAgICBGb3JiaWRNYWxsb2NVc2VGb3JDdXJyZW50VGhyZWFkU2NvcGUgZm9yYmlk
TWFsbG9jVXNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EubW0KaW5k
ZXggYmYzYTMzOTFmMWZlYmIzODRlNzU5ZTRiYzg5NzZlMTc3Y2ExOTU2NS4uNTc2ZjQ0ZTkyYzU4
YjkzYzBiNDBkNjY0OTk4MGJjN2U5MGE1ZWFmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3Vy
Y2VQcm92aWRlckNvY29hLm1tCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBXZWJBdWRpb1NvdXJj
ZVByb3ZpZGVyQ29jb2E6OnByZXBhcmUoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9u
JiBmb3IKIHsKICAgICBEaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25zRm9yQ3VycmVudFRocmVhZFNj
b3BlIHNjb3BlOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKIAogICAgIExPRyhNZWRpYSwgIldlYkF1ZGlvU291cmNl
UHJvdmlkZXJDb2NvYTo6cHJlcGFyZSglcCkiLCB0aGlzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCmluZGV4IDk3
ZmMzZDBiY2FhYmVlOTBlM2RiNGY1YWE2OTEyMzZkZDRkZTJhYzMuLjA1YTI0ZjUyNTI1YjU0Yjdm
ZjgxZDQ3MTFjNWVjMDBjOTg2Yzk4NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKQEAgLTU4LDcgKzU4LDcgQEAg
Q0ZSdW5Mb29wUmVmIGxvYWRlclJ1bkxvb3AoKQogICAgIGlmICghbG9hZGVyUnVuTG9vcE9iamVj
dCkgewogICAgICAgICBUaHJlYWQ6OmNyZWF0ZSgiV2ViQ29yZTogQ0ZOZXR3b3JrIExvYWRlciIs
IFtdIHsKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKGxvYWRlclJ1bkxvb3BNdXRleCk7CisgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7
IGxvYWRlclJ1bkxvb3BNdXRleCB9OwogCiAgICAgICAgICAgICAgICAgbG9hZGVyUnVuTG9vcE9i
amVjdCA9IENGUnVuTG9vcEdldEN1cnJlbnQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKaW5kZXggYWEwNzQxMzMwYzYw
NGQ5YTU2Nzk1NDYzZWVmZTlkNzk5N2Y1YTY2MC4uZDlhMzE5NGFhZGI2Y2Y3OWUxMDgzODgxNzI4
MmI3YWMyNGJmZDFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBDdXJsUmVx
dWVzdDo6Y2FuY2VsKCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgewotICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RhdHVzTXV0ZXgpOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9zdGF0dXNNdXRleCB9OwogICAgICAgICBpZiAobV9jYW5jZWxsZWQpCiAg
ICAgICAgICAgICByZXR1cm47CiAKQEAgLTE1MiwxMyArMTUyLDEzIEBAIHZvaWQgQ3VybFJlcXVl
c3Q6OmNhbmNlbCgpCiAKIGJvb2wgQ3VybFJlcXVlc3Q6OmlzQ2FuY2VsbGVkKCkKIHsKLSAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RhdHVzTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIg
eyBtX3N0YXR1c011dGV4IH07CiAgICAgcmV0dXJuIG1fY2FuY2VsbGVkOwogfQogCiBib29sIEN1
cmxSZXF1ZXN0Ojppc0NvbXBsZXRlZE9yQ2FuY2VsbGVkKCkKIHsKLSAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fc3RhdHVzTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3N0YXR1c011
dGV4IH07CiAgICAgcmV0dXJuIG1fY29tcGxldGVkIHx8IG1fY2FuY2VsbGVkOwogfQogCkBAIC00
NzksNyArNDc5LDcgQEAgdm9pZCBDdXJsUmVxdWVzdDo6ZGlkQ29tcGxldGVUcmFuc2ZlcihDVVJM
Y29kZSByZXN1bHQpCiAgICAgfQogCiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fc3RhdHVzTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zdGF0dXNNdXRl
eCB9OwogICAgICAgICBtX2NvbXBsZXRlZCA9IHRydWU7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNj
aGVkdWxlci5jcHAKaW5kZXggNGQwOWU2YjViN2U1OWI5M2M0ODQxYmYzNDkwNmZhMjI5MTkyMWFl
ZC4uNGEyMDVmOGIwZTBkYWE2ZjA4M2U4ODkwOThhNzMzMmU3MmZmZjJkMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3RTY2hlZHVsZXIuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVs
ZXI6OmNhbmNlbChDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCogY2xpZW50KQogdm9pZCBDdXJs
UmVxdWVzdFNjaGVkdWxlcjo6Y2FsbE9uV29ya2VyVGhyZWFkKFdURjo6RnVuY3Rpb248dm9pZCgp
PiYmIHRhc2spCiB7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0
ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICBtX3Rhc2tR
dWV1ZS5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CiAgICAgfQogCkBAIC03OSw3ICs3OSw3IEBAIHZv
aWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OnN0YXJ0VGhyZWFkSWZOZWVkZWQoKQogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAg
IGlmIChtX3J1blRocmVhZCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC04OCwxNCAr
ODgsMTQgQEAgdm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6c3RhcnRUaHJlYWRJZk5lZWRlZCgp
CiAgICAgICAgIG1fdGhyZWFkLT53YWl0Rm9yQ29tcGxldGlvbigpOwogCiAgICAgewotICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9tdXRleCB9OwogICAgICAgICBtX3J1blRocmVhZCA9IHRydWU7CiAgICAgfQogCiAgICAg
bV90aHJlYWQgPSBUaHJlYWQ6OmNyZWF0ZSgiY3VybFRocmVhZCIsIFt0aGlzXSB7CiAgICAgICAg
IHdvcmtlclRocmVhZCgpOwogCi0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9tdXRl
eCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgIG1fcnVuVGhy
ZWFkID0gZmFsc2U7CiAgICAgfSwgVGhyZWFkVHlwZTo6TmV0d29yayk7CiB9CkBAIC0xMDQsNyAr
MTA0LDcgQEAgdm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6c3RvcFRocmVhZElmTm9Nb3JlSm9i
UnVubmluZygpCiB7CiAgICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CiAKLSAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07
CiAgICAgaWYgKG1fYWN0aXZlSm9icy5zaXplKCkgfHwgbV90YXNrUXVldWUuc2l6ZSgpKQogICAg
ICAgICByZXR1cm47CiAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1
bGVyOjpzdG9wVGhyZWFkSWZOb01vcmVKb2JSdW5uaW5nKCkKIHZvaWQgQ3VybFJlcXVlc3RTY2hl
ZHVsZXI6OnN0b3BUaHJlYWQoKQogewogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX211dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAg
ICAgbV9ydW5UaHJlYWQgPSBmYWxzZTsKICAgICB9CiAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lk
IEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpleGVjdXRlVGFza3MoKQogICAgIFZlY3RvcjxXVEY6OkZ1
bmN0aW9uPHZvaWQoKT4+IHRhc2tRdWV1ZTsKIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX211dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsK
ICAgICAgICAgdGFza1F1ZXVlID0gV1RGTW92ZShtX3Rhc2tRdWV1ZSk7CiAgICAgfQogCkBAIC0x
NTAsNyArMTUwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6d29ya2VyVGhyZWFkKCkK
IAogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9tdXRleCk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRl
eCB9OwogICAgICAgICAgICAgaWYgKCFtX3J1blRocmVhZCkKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVs
ZXI6OnN0YXJ0VHJhbnNmZXIoQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqIGNsaWVudCkKICAg
ICAgICAgbV9jbGllbnRNYXBzLnNldChoYW5kbGUsIGNsaWVudCk7CiAgICAgfTsKIAotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0
ZXggfTsKICAgICBtX2FjdGl2ZUpvYnMuYWRkKGNsaWVudCk7CiAgICAgbV90YXNrUXVldWUuYXBw
ZW5kKFdURk1vdmUodGFzaykpOwogfQpAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgQ3VybFJlcXVl
c3RTY2hlZHVsZXI6OmNhbmNlbFRyYW5zZmVyKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50KiBj
bGllbnQpCiAKIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OmZpbmFsaXplVHJhbnNmZXIoQ3Vy
bFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqIGNsaWVudCwgRnVuY3Rpb248dm9pZCgpPiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOworICAg
IExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAKICAgICBpZiAoIW1fYWN0aXZlSm9icy5jb250
YWlucyhjbGllbnQpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbVNjaGVkdWxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbVNjaGVkdWxlci5jcHAKaW5k
ZXggM2ZiODc1OTk4NGFhMzFhN2Q0NGJhYTJmNjlhZmUyZmVlNDYxZWE0Zi4uYjRhOWFiZDQ1MzA3
ZTE0YjFiMDA4MGM1ZmQ4NDkwYWNhZjdiYjU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW1TY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtU2NoZWR1bGVyLmNwcApA
QCAtODYsNyArODYsNyBAQCB2b2lkIEN1cmxTdHJlYW1TY2hlZHVsZXI6OmNhbGxPbldvcmtlclRo
cmVhZChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9tdXRleCk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgIG1fdGFza1F1ZXVl
LmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKICAgICB9CiAKQEAgLTEwNiw3ICsxMDYsNyBAQCB2b2lk
IEN1cmxTdHJlYW1TY2hlZHVsZXI6OmNhbGxDbGllbnRPbk1haW5UaHJlYWQoQ3VybFN0cmVhbUlE
IHN0cmVhbUlELCBXVEY6OkZ1bgogdm9pZCBDdXJsU3RyZWFtU2NoZWR1bGVyOjpzdGFydFRocmVh
ZElmTmVlZGVkKCkKIHsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9t
dXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgIGlmICht
X3J1blRocmVhZCkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjgsNyArMTI4LDcg
QEAgdm9pZCBDdXJsU3RyZWFtU2NoZWR1bGVyOjpzdG9wVGhyZWFkSWZOb01vcmVKb2JSdW5uaW5n
KCkKICAgICBpZiAobV9zdHJlYW1MaXN0LnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9t
dXRleCB9OwogICAgIGlmIChtX3Rhc2tRdWV1ZS5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIApA
QCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgQ3VybFN0cmVhbVNjaGVkdWxlcjo6ZXhlY3V0ZVRhc2tz
KCkKICAgICBWZWN0b3I8V1RGOjpGdW5jdGlvbjx2b2lkKCk+PiB0YXNrUXVldWU7CiAKICAgICB7
Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9tdXRleCk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgIHRhc2tRdWV1ZSA9IFdURk1vdmUobV90YXNr
UXVldWUpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVC
dWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlci5jcHAKaW5kZXgg
OGIxNDBkYWRiM2MzMzA2MGEwNWE4YWYzYzU2NmIyMjBlYWY5NjlkZC4uNTY5Njk2ZWVlMjE3ZmY2
MmM1ZjliZGYwNTY1NGYzNDAwNThiYmU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxk
ZXIuY3BwCkBAIC0zNDAsNyArMzQwLDcgQEAgdm9pZCBCdWlsZGVyOjphcHBseVByb3BlcnR5KENT
U1Byb3BlcnR5SUQgaWQsIENTU1ZhbHVlJiB2YWx1ZSwgU2VsZWN0b3JDaGVja2VyOjoKICAgICBp
ZiAoaXM8Q1NTUGFpbnRJbWFnZVZhbHVlPih2YWx1ZVRvQXBwbHkpKSB7CiAgICAgICAgIGF1dG8m
IG5hbWUgPSBkb3duY2FzdDxDU1NQYWludEltYWdlVmFsdWU+KHZhbHVlVG9BcHBseS5nZXQoKSku
bmFtZSgpOwogICAgICAgICBpZiAoYXV0byogcGFpbnRXb3JrbGV0ID0gY29uc3RfY2FzdDxEb2N1
bWVudCY+KG1fc3RhdGUuZG9jdW1lbnQoKSkucGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVGb3JOYW1l
KG5hbWUpKSB7Ci0gICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHBhaW50V29ya2xl
dC0+cGFpbnREZWZpbml0aW9uTG9jaygpKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBw
YWludFdvcmtsZXQtPnBhaW50RGVmaW5pdGlvbkxvY2soKSB9OwogICAgICAgICAgICAgaWYgKGF1
dG8qIHJlZ2lzdHJhdGlvbiA9IHBhaW50V29ya2xldC0+cGFpbnREZWZpbml0aW9uTWFwKCkuZ2V0
KG5hbWUpKSB7CiAgICAgICAgICAgICAgICAgZm9yIChhdXRvJiBwcm9wZXJ0eSA6IHJlZ2lzdHJh
dGlvbi0+aW5wdXRQcm9wZXJ0aWVzKQogICAgICAgICAgICAgICAgICAgICBtX3N0YXRlLnN0eWxl
KCkuYWRkQ3VzdG9tUGFpbnRXYXRjaFByb3BlcnR5KHByb3BlcnR5KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmNwcAppbmRleCBhOGVhOTliYzVm
ZmVkMWEzY2NkODYyOGVmOWM3YTA1MTZmYWJiYTJlLi40NzdkOTY3MmM3MTJiNDZmYzRlYmQ3YTI4
OTdlNzdlYjE1ODA4NDg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ck9yV29ya2xldFRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJP
cldvcmtsZXRUaHJlYWQuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBXb3JrZXJPcldvcmts
ZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRocmVhZCgpCiAgICAgICAgIC8vIE11dGV4IHByb3Rl
Y3Rpb24gaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGF0IHdlIGRvbid0IGNoYW5nZSBtX2dsb2Jh
bFNjb3BlCiAgICAgICAgIC8vIHdoaWxlIFdvcmtlclRocmVhZDo6c3RvcCgpIGlzIGFjY2Vzc2lu
ZyBpdC4gTm90ZSB0aGF0IFdvcmtlclRocmVhZDo6c3RvcCgpIGNhbgogICAgICAgICAvLyBiZSBj
YWxsZWQgYmVmb3JlIHdlJ3ZlIGZpbmlzaGVkIGNyZWF0aW5nIHRoZSBXb3JrZXJHbG9iYWxTY29w
ZS4KLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3RocmVhZENyZWF0aW9uQW5kR2xv
YmFsU2NvcGVMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGhyZWFkQ3JlYXRpb25B
bmRHbG9iYWxTY29wZUxvY2sgfTsKICAgICAgICAgbV9nbG9iYWxTY29wZSA9IGNyZWF0ZUdsb2Jh
bFNjb3BlKCk7CiAKICAgICAgICAgLy8gV2hlbiBydW5uaW5nIG91dCBvZiBtZW1vcnksIGNyZWF0
ZUdsb2JhbFNjb3BlKCkgbWF5IHJldHVybiBudWxsIGJlY2F1c2Ugd2UgY291bGQgbm90IGFsbG9j
YXRlIGEgSlNDOjpWTS4KQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIFdvcmtlck9yV29ya2xldFRo
cmVhZDo6d29ya2VyT3JXb3JrbGV0VGhyZWFkKCkKICAgICB7CiAgICAgICAgIC8vIE11dGV4IHBy
b3RlY3Rpb24gaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGF0IHdlIGRvbid0IGNoYW5nZSBtX2ds
b2JhbFNjb3BlCiAgICAgICAgIC8vIHdoaWxlIFdvcmtlclRocmVhZDo6c3RvcCBpcyBhY2Nlc3Np
bmcgaXQuCi0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV90aHJlYWRDcmVhdGlvbkFu
ZEdsb2JhbFNjb3BlTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3RocmVhZENyZWF0
aW9uQW5kR2xvYmFsU2NvcGVMb2NrIH07CiAKICAgICAgICAgLy8gRGVsYXkgdGhlIGRlc3RydWN0
aW9uIG9mIHRoZSBXb3JrZXJHbG9iYWxTY29wZSBjb250ZXh0IHVudGlsIGFmdGVyIHdlJ3ZlIHVu
bG9ja2VkIHRoZQogICAgICAgICAvLyBtX3RocmVhZENyZWF0aW9uQW5kV29ya2VyR2xvYmFsU2Nv
cGVNdXRleC4gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBkZXN0cnVjdGluZyB0aGUKQEAgLTE4Nyw3
ICsxODcsNyBAQCB2b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6d29ya2VyT3JXb3JrbGV0VGhy
ZWFkKCkKIHZvaWQgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjpzdGFydChXVEY6OkZ1bmN0aW9uPHZv
aWQoY29uc3QgU3RyaW5nJik+JiYgZXZhbHVhdGVDYWxsYmFjaykKIHsKICAgICAvLyBNdXRleCBw
cm90ZWN0aW9uIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhhdCBtX3RocmVhZCBpcyBpbml0aWFs
aXplZCB3aGVuIHRoZSB0aHJlYWQgc3RhcnRzLgotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV90aHJlYWRDcmVhdGlvbkFuZEdsb2JhbFNjb3BlTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fdGhyZWFkQ3JlYXRpb25BbmRHbG9iYWxTY29wZUxvY2sgfTsKIAogICAgIGlmIChtX3RocmVh
ZCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMv
UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IDA0ZjE4YzYzMTcyNWY4ZDc1ODc1ODM5MWJj
ZTFkNTkxZmI2OTkwZjYuLmIwNzgzNzVmYTczZGZlMjljZDJjZDIwMTcxYWQyNjgyMjI4NTliMDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNj
b3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxT
Y29wZS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGU6OnJlZ2lzdGVyUGFpbnQoSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2wKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlRoZSBmaXJzdCBhcmd1bWVudCBtdXN0
IG5vdCBiZSB0aGUgZW1wdHkgc3RyaW5nIiB9OwogCiAgICAgewotICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKHBhaW50RGVmaW5pdGlvbkxvY2soKSk7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBwYWludERlZmluaXRpb25Mb2NrKCkgfTsKIAogICAgICAgICBpZiAocGFpbnREZWZpbml0
aW9uTWFwKCkuY29udGFpbnMobmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
SW52YWxpZE1vZGlmaWNhdGlvbkVycm9yLCAiVGhpcyBuYW1lIGhhcyBhbHJlYWR5IGJlZW4gcmVn
aXN0ZXJlZCIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29y
a2xldEdsb2JhbFNjb3BlLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRH
bG9iYWxTY29wZS5oCmluZGV4IGQwNzZlZTlkMzVlYjdmNzM5OGUwZDQwOWU4ODdlNjU3ZjIyNjAy
MGYuLjlhMmM0OTdjOTI5NDgwMmUxZTY3YjI0ZDA3YWZiMjgzMWUyMjhiMzUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaApAQCAtNzAs
NyArNzAsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1faGFzUHJlcGFyZWRGb3JEZXN0cnVjdGlvbiA9
IHRydWU7CiAKICAgICAgICAgewotICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhw
YWludERlZmluaXRpb25Mb2NrKCkpOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHBhaW50
RGVmaW5pdGlvbkxvY2soKSB9OwogICAgICAgICAgICAgcGFpbnREZWZpbml0aW9uTWFwKCkuY2xl
YXIoKTsKICAgICAgICAgfQogICAgICAgICBXb3JrbGV0R2xvYmFsU2NvcGU6OnByZXBhcmVGb3JE
ZXN0cnVjdGlvbigpOwpAQCAtODQsNyArODQsNyBAQCBwcml2YXRlOgogICAgIH5QYWludFdvcmts
ZXRHbG9iYWxTY29wZSgpCiAgICAgewogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2socGFpbnREZWZpbml0aW9uTG9jaygpKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IHBhaW50RGVmaW5pdGlvbkxvY2soKSB9OwogICAgICAgICBBU1NFUlQocGFpbnRE
ZWZpbml0aW9uTWFwKCkuaXNFbXB0eSgpKTsKICNlbmRpZgogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429365</attachid>
            <date>2021-05-21 16:52:18 -0700</date>
            <delta_ts>2021-05-21 17:06:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226119-20210521165217.patch</filename>
            <type>text/plain</type>
            <size>112240</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3ODk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTlkMmI2NzMzYmY4Mjc5
MGU3NjNkZDAwYzQ1NjNjOTUxNWJhZTBiZC4uNzRiMDhhMzdlZmM1ZTRjZmNjMTJjN2I0NmJhMWYx
OTk1YjNjMDAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4NSBAQAorMjAyMS0wNS0yMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgdXNpbmcgaG9sZExv
Y2soKSBpbiBXZWJDb3JlIGFzIGl0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggQ2xhbmcgdGhyZWFk
IHNhZmV0eSBhbmFseXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI2MTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU3RvcCB1c2luZyBob2xkTG9jaygpIGluIFdlYkNvcmUgYXMgaXQgaXMgbm90IGNv
bXBhdGlibGUgd2l0aCBDbGFuZyB0aHJlYWQgc2FmZXR5IGFuYWx5c2lzCisgICAgICAgIChXVEY6
OkNoZWNrZWRMb2NrKS4gVXNlIHRoZSBMb2NrZXIgY29uc3RydWN0b3IgZGlyZWN0bHkgaW5zdGVh
ZC4KKworICAgICAgICBUaGlzIGlzIGEgc3RlcCB0b3dhcmRzIGdldHRpbmcgcmlkIG9mIGhvbGRM
b2NrKCkgZW50aXJlbHkuCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvbkNhcHR1cmVTb3VyY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ2FwdHVyZVNvdXJjZUltcGw6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0J1ZmZlcjo6cmVsZWFzZU1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZl
cjo6bWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1
ZmZlclNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VO
b2RlOjpzZXRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2Rl
OjpzdGFydFBsYXlpbmcpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXROb2RlOjp+QXVkaW9Xb3Jr
bGV0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXROb2RlOjppbml0aWFsaXpl
QXVkaW9QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldE5vZGU6OnNl
dFByb2Nlc3Nvcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OnNldEJ1ZmZlcik6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OnNldEZvcm1h
dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpPc2NpbGxhdG9yTm9kZTo6c2V0UGVyaW9kaWNXYXZlKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFu
bmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6
OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnNldE9yaWVudGF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnNldERpc3RhbmNlTW9kZWwpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6c2V0UmVmRGlzdGFuY2UpOgorICAgICAgICAo
V2ViQ29yZTo6UGFubmVyTm9kZTo6c2V0TWF4RGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6
UGFubmVyTm9kZTo6c2V0Um9sbG9mZkZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXJO
b2RlOjpzZXRDb25lT3V0ZXJHYWluKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnNl
dENvbmVPdXRlckFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnNldENvbmVJ
bm5lckFuZ2xlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6dW5pbml0aWFs
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OnByb2Nlc3MpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRDdXJ2ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRPdmVyc2FtcGxlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2Vy
OjphZGRQcm9wb3NlZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6cmVtb3ZlUHJvcG9zZWREYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1h
bmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VN
YW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbik6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VU
cmFja2VyOjpzY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXI6Om5vdGlmeURhdGFiYXNlc0NoYW5nZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
R2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAg
ICAgICogY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YWludEltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldDo6YWRkTW9kdWxlKToKKyAgICAg
ICAgKiBkb20vRXZlbnRMaXN0ZW5lck1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudExp
c3RlbmVyTWFwOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudExpc3RlbmVyTWFwOjpy
ZXBsYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJNYXA6OmFkZCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudExpc3RlbmVyTWFwOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRMaXN0ZW5lck1hcDo6cmVtb3ZlRmlyc3RFdmVudExpc3RlbmVyQ3JlYXRlZEZyb21N
YXJrdXApOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudFRhcmdldDo6dmlzaXRKU0V2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKiBkb20vTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y2xlYXJFdmVudFRhcmdldERhdGEpOgorICAgICAgICAq
IGh0bWwvQ2FudmFzQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjptZW1v
cnlDb3N0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0Jhc2U6OmV4dGVybmFsTWVt
b3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjpzZXRJbWFnZUJ1
ZmZlciBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6aW52YWxpZGF0ZU5hbWVkRWxlbWVudENhY2hlIGNv
bnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQ29sbGVjdGlvbjo6bWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQ29sbGVjdGlvbjo6c2V0TmFtZWRJdGVtQ2FjaGUgY29uc3QpOgorICAgICAgICAqIGh0bWwv
T2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6
cHVzaEJ1ZmZlclRvUGxhY2Vob2xkZXIpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2Fu
dmFzOjpjb21taXRUb1BsYWNlaG9sZGVyQ2FudmFzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9P
RVNWZXJ0ZXhBcnJheU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhBcnJh
eU9iamVjdDo6ZGVsZXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViQ29yZTo6T0VTVmVy
dGV4QXJyYXlPYmplY3Q6OmJpbmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSVBvaW50ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlUXVlcnkpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5RdWVyeSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjplbmRRdWVyeSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVTYW1wbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRTYW1wbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJl
Z2luVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6c2V0SW5kZXhlZEJ1ZmZlckJpbmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFZlcnRleEFycmF5KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmFkZE1lbWJlcnNUb09wYXF1ZVJvb3RzKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRHcm91cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTENvbnRleHRHcm91cDo6ZGV0YWNoQW5kUmVtb3ZlQWxsT2JqZWN0cyk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppbml0aWFsaXplQXR0YWNobWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6c2V0QXR0YWNobWVudEludGVybmFsKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TE9iamVjdDo6cnVuRGVzdHJ1Y3Rvcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6YmluZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxldGVCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlRnJhbWVidWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlUHJv
Z3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxl
dGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6ZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliUG9pbnRlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmFkZE1lbWJl
cnNUb09wYXF1ZVJvb3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjp+UmV2ZXJiQ29udm9s
dmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29j
b2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0b3ApOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRJc1BsYXlpbmcpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6Omhh
bmRsZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVh
bWVyOjpjbGVhckFkYXB0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
V2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2Via2l0V2ViQXVk
aW9Tb3VyY2VTZXREaXNwYXRjaFRvUmVuZGVyVGhyZWFkRnVuY3Rpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5TGlua0ZpcmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheURpZFJlZnJl
c2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FjaGU6OmNhY2hlZEZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhY2hlOjpmb250Rm9yUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYWNoZTo6cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYWNoZTo6aW5hY3RpdmVGb250Q291bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpkZXN0cm95TWl4SWZOZWVkZWQp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OmNyZWF0ZU1p
eElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpD
OjpwcmVwYXJlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakM6OnVucHJlcGFyZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDOjpwcm9jZXNzQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6ZGVzdHJveUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJvb3RMYXllckJvdW5kc0RpZENoYW5nZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjYWNoZWRDR0NvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFzRmlyc3RWaWRlb1NhbXBsZVJlYWNoZWRTaW5r
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
cHVzaFRleHR1cmVUb0NvbXBvc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjp0cmlnZ2VyUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmZsdXNoQ3VycmVudEJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6d2FpdEZvckNETUF0dGFjaG1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0
V2ViU3JjQ29uc3RydWN0ZWQpOgorICAgICAgICAod2ViS2l0V2ViU3JjR2V0UHJvcGVydHkpOgor
ICAgICAgICAod2ViS2l0V2ViU3JjU2V0Q29udGV4dCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmND
cmVhdGUpOgorICAgICAgICAod2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QpOgorICAgICAgICAod2Vi
S2l0V2ViU3JjU3RvcCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNHZXRTaXplKToKKyAgICAgICAg
KHdlYktpdFdlYlNyY0lzU2Vla2FibGUpOgorICAgICAgICAod2ViS2l0V2ViU3JjRG9TZWVrKToK
KyAgICAgICAgKHdlYktpdFdlYlNyY1F1ZXJ5KToKKyAgICAgICAgKHdlYktpdFdlYlNyY1VuTG9j
ayk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNVbkxvY2tTdG9wKToKKyAgICAgICAgKHdlYktpdFdl
YlNyY1NldE1lZGlhUGxheWVyKToKKyAgICAgICAgKHdlYktpdFNyY1Bhc3NlZENPUlNBY2Nlc3ND
aGVjayk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VS
ZWNlaXZlZCk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjphY2Nlc3ND
b250cm9sQ2hlY2tGYWlsZWQpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGll
bnQ6OmxvYWRGYWlsZWQpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6
OmxvYWRGaW5pc2hlZCk6CisgICAgICAgICh3ZWJLaXRTcmNXb3VsZFRhaW50T3JpZ2luKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5
cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuY3BwOgorICAgICAgICAoaXNDRE1Qcm94eUF2YWlsYWJs
ZSk6CisgICAgICAgIChhdHRhY2hDRE1Qcm94eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU291cmNlVHJhY2tHU3RyZWFtZXI6OmlzUmVhZHlGb3JNb3JlU2FtcGxl
cyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyOjpub3RpZnlX
aGVuUmVhZHlGb3JNb3JlU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVRy
YWNrR1N0cmVhbWVyOjplbnF1ZXVlT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291
cmNlVHJhY2tHU3RyZWFtZXI6OmNsZWFyUXVldWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAod2ViS2l0TWVkaWFTcmNBY3RpdmF0ZU1vZGUpOgorICAgICAgICAod2ViS2l0TWVkaWFTcmNQ
YWRMaW5rZWQpOgorICAgICAgICAod2ViS2l0TWVkaWFTcmNMb29wKToKKyAgICAgICAgKHdlYktp
dE1lZGlhU3JjU3RyZWFtRmx1c2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9D
b2xvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om5zQ29sb3IpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHA6CisgICAgICAg
IChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAgKEhhbmRsZURl
bGVnYXRlU291cmNlKToKKyAgICAgICAgKFdlYlRocmVhZEFkb3B0QW5kUmVsZWFzZSk6CisgICAg
ICAgIChXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwpOgorICAgICAgICAoV2ViQ29y
ZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2tJbXBsKToKKyAgICAgICAgKEhhbmRsZVdlYlRo
cmVhZFJlbGVhc2VTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRo
cmVhZFJ1bi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4pOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6dmlkZW9TYW1wbGVB
dmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjph
dWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclBy
aXZhdGVNb2NrOjpmZXRjaERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjphZGRBdWRpb1NhbXBsZU9ic2VydmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92ZUF1ZGlvU2FtcGxlT2Jz
ZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRkVmlkZW9T
YW1wbGVPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpy
ZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2U6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2U6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6flJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2U6OkFkZFNpbmspOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlOjpSZW1vdmVTaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZTo6c2VuZEF1ZGlvRnJhbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjp+UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6QWRkT3JVcGRh
dGVTaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6
UmVtb3ZlU2luayk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2U6OnNlbmRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VB
dWRpb1NoYXJlZFVuaXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvU2hhcmVkVW5p
dDo6YWRkQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VBdWRpb1NoYXJlZFVuaXQ6OnJl
bW92ZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQXVkaW9TaGFyZWRVbml0Ojpmb3JF
YWNoQ2xpZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VBdWRpb1NoYXJlZFVuaXQ6
OmNsZWFyQ2xpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQXVkaW9TaGFyZWRVbml0Ojph
dWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJB
dWRpb1NvdXJjZVByb3ZpZGVyQ29jb2E6OnByZXBhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRlclJ1
bkxvb3ApOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0Ojppc0NhbmNlbGxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVx
dWVzdDo6aXNDb21wbGV0ZWRPckNhbmNlbGxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVx
dWVzdDo6ZGlkQ29tcGxldGVUcmFuc2Zlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1
ZXN0U2NoZWR1bGVyOjpjYWxsT25Xb3JrZXJUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bFJlcXVlc3RTY2hlZHVsZXI6OnN0YXJ0VGhyZWFkSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OnN0b3BUaHJlYWRJZk5vTW9yZUpvYlJ1bm5pbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OnN0b3BUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OmV4ZWN1dGVUYXNrcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6d29ya2VyVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpzdGFydFRyYW5zZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpmaW5hbGl6ZVRyYW5zZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbVNjaGVkdWxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsU3RyZWFtU2NoZWR1bGVyOjpjYWxsT25Xb3JrZXJUaHJlYWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybFN0cmVhbVNjaGVkdWxlcjo6c3RhcnRUaHJlYWRJZk5l
ZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsU3RyZWFtU2NoZWR1bGVyOjpzdG9wVGhyZWFk
SWZOb01vcmVKb2JSdW5uaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxTdHJlYW1TY2hlZHVs
ZXI6OmV4ZWN1dGVUYXNrcyk6CisgICAgICAgICogc3R5bGUvU3R5bGVCdWlsZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyOjphcHBseVByb3BlcnR5KToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRocmVhZCk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRUaHJlYWQ6OnN0YXJ0KToKKyAgICAgICAgKiB3b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdv
cmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludCk6CisgICAgICAgICogd29ya2xldHMvUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUuaDoKKwogMjAyMS0wNS0yMSAgRGllZ28gUGlubyBHYXJjaWEg
IDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFNldCBDYW52YXNJbWFnZVNtb290aGluZy5p
bWFnZVNtb290aGluZ1F1YWxpdHkgdmFsdWUgdG8gJ2xvdycgYXMgZGVmYXVsdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJl
U291cmNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmNwcAppbmRleCA2MWIyNmYxZjk1YmEwMDMzMWIzOTBj
MTBmNGYwOWEyMDA5OWRkNDM1Li45NGMxYjU1N2VjYTM5NTlhZDgxMzI4ZGRkM2Y3M2Y4NWRlNWRi
NWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmNwcApAQCAtMTE4LDcg
KzExOCw3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbDo6YXVkaW9T
YW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYKIAogICAgICAgICBhdXRvIGRhdGEgPSBX
ZWJBdWRpb0J1ZmZlckxpc3QgeyBhdWRpb0Rlc2NyaXB0aW9uLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oc2FtcGxlQ291bnQpIH07CiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9kYXRhU291cmNlTG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9kYXRhU291cmNlTG9jayB9OwogICAgICAgICAgICAgbV9kYXRhU291cmNlLT5wdWxsU2FtcGxl
cygqZGF0YS5saXN0KCksIHNhbXBsZUNvdW50LCB0aW1lLnRpbWVWYWx1ZSgpLCAwLCBBdWRpb1Nh
bXBsZURhdGFTb3VyY2U6OkNvcHkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKaW5kZXggMTU3OWY4MTU1MzI4NzAwMWYw
MDE3NGU5MmJhYzY0MmFkNzZkZDIzZi4uY2I3ZTg0ZDQ1MzgzZTk4ZjgyZTY4MjQzZjUyYjJhNzU2
OGZiZmU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1
ZmZlci5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIEF1ZGlvQnVmZmVyOjppbnZhbGlkYXRl
KCkKIAogdm9pZCBBdWRpb0J1ZmZlcjo6cmVsZWFzZU1lbW9yeSgpCiB7Ci0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX2NoYW5uZWxzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hh
bm5lbHNMb2NrIH07CiAgICAgbV9jaGFubmVscy5jbGVhcigpOwogICAgIG1fY2hhbm5lbFdyYXBw
ZXJzLmNsZWFyKCk7CiB9CkBAIC0yNTIsNyArMjUyLDcgQEAgc2l6ZV90IEF1ZGlvQnVmZmVyOjpt
ZW1vcnlDb3N0KCkgY29uc3QKICAgICAvLyBmcm9tIGJlaW5nIGNoYW5nZWQgd2hpbGUgd2UgaXRl
cmF0ZSBpdCwgYnV0IGNhbGxpbmcgY2hhbm5lbC0+Ynl0ZUxlbmd0aCgpIGlzIHNhZmUKICAgICAv
LyBiZWNhdXNlIGl0IGRvZXNuJ3QgaW52b2x2ZSBjaGFzaW5nIGFueSBwb2ludGVycyB0aGF0IGNh
biBiZSBudWxsaWZpZWQgd2hpbGUgdGhlCiAgICAgLy8gQXVkaW9CdWZmZXIgaXMgYWxpdmUuCi0g
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2NoYW5uZWxzTG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fY2hhbm5lbHNMb2NrIH07CiAgICAgc2l6ZV90IGNvc3QgPSAwOwogICAgIGZvciAo
YXV0byYgY2hhbm5lbCA6IG1fY2hhbm5lbHMpCiAgICAgICAgIGNvc3QgKz0gY2hhbm5lbC0+Ynl0
ZUxlbmd0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IDhiNDNkZDIzZDMxODUzODUxYjg3Nzdi
ZmJmOWI5OGUzMmJmYWIyMGUuLjYzM2M1MDZhMDA3NjdmZmI4ODU4Y2IwNjBmNTFkNzY5OTZiYTE3
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTQxOSw3ICs0MTksNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcihSZWZQdHI8QXVkaW9CdWZmZXI+
JiYgYnVmZmVyKQogICAgIExvY2tlciBjb250ZXh0TG9ja2VyIHsgY29udGV4dCgpLmdyYXBoTG9j
aygpIH07CiAgICAgCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCi0g
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9wcm9jZXNzTG9jayB9OwogICAgIAogICAgIGlmIChidWZmZXIpIHsKICAgICAgICAg
bV93YXNCdWZmZXJTZXQgPSB0cnVlOwpAQCAtNDc3LDcgKzQ3Nyw3IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c3RhcnRQbGF5aW5nKGRvdWJsZSB3aGVuLCBkb3Vi
bGUgZ3JhaW5PCiAgICAgY29udGV4dCgpLnNvdXJjZU5vZGVXaWxsQmVnaW5QbGF5YmFjaygqdGhp
cyk7CiAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KLSAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBt
X3Byb2Nlc3NMb2NrIH07CiAKICAgICBtX2lzR3JhaW4gPSB0cnVlOwogICAgIG1fZ3JhaW5PZmZz
ZXQgPSBncmFpbk9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwCmluZGV4IDM5NmIyODI1ZDY2ZGY3YzgzZDA1NmVjNTdm
MGM5YjIzYmJhZjU2MzkuLjM0OTYyNmZhNGQ0M2VkMjUzZmNmOTA3MzJiNjQyYWYyYmM1YWE0NjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXROb2RlLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIEF1ZGlvV29ya2xldE5vZGU6On5BdWRpb1dv
cmtsZXROb2RlKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIHsKLSAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsKICAgICAgICAgaWYgKG1fcHJvY2Vzc29yKSB7CiAg
ICAgICAgICAgICBpZiAoYXV0byogd29ya2xldFByb3h5ID0gY29udGV4dCgpLmF1ZGlvV29ya2xl
dCgpLnByb3h5KCkpCiAgICAgICAgICAgICAgICAgd29ya2xldFByb3h5LT5wb3N0VGFza0Zvck1v
ZGVUb1dvcmtsZXRHbG9iYWxTY29wZShbbV9wcm9jZXNzb3IgPSBXVEZNb3ZlKG1fcHJvY2Vzc29y
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1v
ZGUoKSk7CkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBBdWRpb1dvcmtsZXROb2RlOjppbml0aWFs
aXplQXVkaW9QYXJhbWV0ZXJzKGNvbnN0IFZlY3RvcjxBdWRpb1BhcmFtRGVzY3JpcHQKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3BhcmFtZXRlcnMtPm1hcCgpLmlz
RW1wdHkoKSk7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb2Nlc3NMb2NrIH07CiAKICAgICBmb3IgKGF1dG8mIGRl
c2NyaXB0b3IgOiBkZXNjcmlwdG9ycykgewogICAgICAgICBhdXRvIHBhcmFtZXRlciA9IEF1ZGlv
UGFyYW06OmNyZWF0ZShjb250ZXh0KCksIGRlc2NyaXB0b3IubmFtZSwgZGVzY3JpcHRvci5kZWZh
dWx0VmFsdWUsIGRlc2NyaXB0b3IubWluVmFsdWUsIGRlc2NyaXB0b3IubWF4VmFsdWUsIGRlc2Ny
aXB0b3IuYXV0b21hdGlvblJhdGUpOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgQXVkaW9Xb3Jr
bGV0Tm9kZTo6c2V0UHJvY2Vzc29yKFJlZlB0cjxBdWRpb1dvcmtsZXRQcm9jZXNzb3I+JiYgcHJv
Y2Vzc29yKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChwcm9jZXNz
b3IpIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsKICAgICAgICAgbV9wcm9jZXNz
b3IgPSBXVEZNb3ZlKHByb2Nlc3Nvcik7CiAgICAgICAgIG1fd29ya2xldFRocmVhZCA9ICZUaHJl
YWQ6OmN1cnJlbnQoKTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCmluZGV4IDJiOGExOWQxMzhlM2EyMWQxZjRjMDA2
YjE4YmY3Zjk1OGZmYjkzYzEuLjU5NzFmZDAwMjI1YmNhY2NjMGU1MzczZTY3MDJkYjRjZDI5ZTg1
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVy
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJO
b2RlLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnZvbHZlck5v
ZGU6OnNldEJ1ZmZlcihSZWZQdHI8QXVkaW9CdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICBMb2Nr
ZXIgY29udGV4dExvY2tlciB7IGNvbnRleHQoKS5ncmFwaExvY2soKSB9OwogCiAgICAgICAgIC8v
IFN5bmNocm9uaXplIHdpdGggcHJvY2VzcygpLgotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fcHJvY2Vzc0xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9j
ayB9OwogCiAgICAgICAgIG1fcmV2ZXJiID0gV1RGTW92ZShyZXZlcmIpOwogICAgICAgICBtX2J1
ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRl
eCBiNGJlNTc1NzE1ZjcwYjA5MmUzMmYyNjg5OGYwMTRiNjllODY5YTcyLi5hMWE0NmE2N2VlYTIz
YzU1OTIxM2E3MzA4ODgyY2U1MDY3NGJiMjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUu
Y3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpz
ZXRGb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNvdXJjCiAgICAgICAgIG1f
c291cmNlU2FtcGxlUmF0ZSA9IHNvdXJjZVNhbXBsZVJhdGU7CiAKICAgICAgICAgLy8gU3luY2hy
b25pemUgd2l0aCBwcm9jZXNzKCkuCi0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9w
cm9jZXNzTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb2Nlc3NMb2NrIH07CiAK
ICAgICAgICAgaWYgKHNvdXJjZVNhbXBsZVJhdGUgIT0gc2FtcGxlUmF0ZSgpKSB7CiAgICAgICAg
ICAgICBkb3VibGUgc2NhbGVGYWN0b3IgPSBzb3VyY2VTYW1wbGVSYXRlIC8gc2FtcGxlUmF0ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVh
bUF1ZGlvU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRleCBmNjhlOWY0Nzc4YzM3OTE1MWRlNDc5
ODhkNTYxYzhkM2VhYmQ2OGMxLi5jNTY2MmQ2MDlhZjYwYTZhZWJhNmRhNzIxYTM1ZDFkNTg4YWQ1
MTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZv
aWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OnNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZD
aGFubmVscywgZmxvYXQgc291cmNlCiAgICAgfQogCiAgICAgLy8gU3luY2hyb25pemUgd2l0aCBw
cm9jZXNzKCkuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCiAgICAgbV9zb3VyY2VOdW1iZXJP
ZkNoYW5uZWxzID0gbnVtYmVyT2ZDaGFubmVsczsKICAgICBtX3NvdXJjZVNhbXBsZVJhdGUgPSBz
b3VyY2VTYW1wbGVSYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmNwcAppbmRleCAyM2YyZjM3NWYzYTkxMzA5YzcwNGIxZjg4OTQ1MzU1
NjgwZjI1Zjg3Li5jNmY2OWQyMzA1YzIxNTk5NjcxMzlhODQ3OWZhZTVkMzE4MjIyNTg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNw
cApAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgT3NjaWxsYXRvck5vZGU6OnNldFBlcmlvZGljV2F2
ZShQZXJpb2RpY1dhdmUmIHBlcmlvZGljV2F2ZSkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fcHJvY2Vzc0xvY2sgfTsKICAgICBtX3BlcmlvZGljV2F2ZSA9ICZwZXJpb2RpY1dhdmU7CiAg
ICAgbV90eXBlID0gT3NjaWxsYXRvclR5cGU6OkN1c3RvbTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCmluZGV4IDk3MTg5ZmYwNWIzYzM0MTBh
NGY5ODVjY2UzMmI5N2NhNWE4ZDBkNTQuLjdjY2YyNGQ2NzBiN2Y2ZTFlZjFhMzc3OWY5YjcwNDg2
ODJmZmNlZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFu
bmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJO
b2RlLmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgUGFubmVyTm9kZTo6c2V0UGFubmluZ01v
ZGVsKFBhbm5pbmdNb2RlbFR5cGUgbW9kZWwpCiAKICAgICBpZiAoIW1fcGFubmVyLmdldCgpIHx8
IG1vZGVsICE9IG1fcGFubmluZ01vZGVsKSB7CiAgICAgICAgIC8vIFRoaXMgc3luY2hyb25pemVz
IHdpdGggcHJvY2VzcygpLgotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vz
c0xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCiAgICAg
ICAgIG1fcGFubmVyID0gUGFubmVyOjpjcmVhdGUobW9kZWwsIHNhbXBsZVJhdGUoKSwgbV9ocnRm
RGF0YWJhc2VMb2FkZXIuZ2V0KCkpOwogICAgICAgICBtX3Bhbm5pbmdNb2RlbCA9IG1vZGVsOwpA
QCAtMjkyLDcgKzI5Miw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBhbm5lck5vZGU6OnNldFBvc2l0
aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
cHJvY2Vzc0xvY2sgfTsKIAogICAgIGF1dG8gbm93ID0gY29udGV4dCgpLmN1cnJlbnRUaW1lKCk7
CiAKQEAgLTMxOSw3ICszMTksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYW5uZXJOb2RlOjpzZXRP
cmllbnRhdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KLSAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3Byb2Nlc3NMb2NrIH07CiAKICAgICBhdXRvIG5vdyA9IGNvbnRleHQoKS5jdXJyZW50
VGltZSgpOwogCkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBQYW5uZXJOb2RlOjpzZXREaXN0YW5j
ZU1vZGVsKERpc3RhbmNlTW9kZWxUeXBlIG1vZGVsKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KLSAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBt
X3Byb2Nlc3NMb2NrIH07CiAKICAgICBtX2Rpc3RhbmNlRWZmZWN0LnNldE1vZGVsKG1vZGVsLCB0
cnVlKTsKIH0KQEAgLTM1OSw3ICszNTksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYW5uZXJOb2Rl
OjpzZXRSZWZEaXN0YW5jZShkb3VibGUgcmVmRGlzdGFuY2UpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBSYW5nZUVycm9yLCAicmVmRGlzdGFuY2UgY2Fubm90IGJlIHNldCB0byBhIG5lZ2F0
aXZlIHZhbHVlIl9zIH07CiAgICAgCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9j
ZXNzKCkuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCiAgICAgbV9kaXN0YW5jZUVmZmVjdC5z
ZXRSZWZEaXN0YW5jZShyZWZEaXN0YW5jZSk7CiAgICAgcmV0dXJuIHsgfTsKQEAgLTM3Myw3ICsz
NzMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYW5uZXJOb2RlOjpzZXRNYXhEaXN0YW5jZShkb3Vi
bGUgbWF4RGlzdGFuY2UpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAi
bWF4RGlzdGFuY2UgY2Fubm90IGJlIHNldCB0byBhIG5vbi1wb3NpdGl2ZSB2YWx1ZSJfcyB9Owog
ICAgIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
cHJvY2Vzc0xvY2sgfTsKIAogICAgIG1fZGlzdGFuY2VFZmZlY3Quc2V0TWF4RGlzdGFuY2UobWF4
RGlzdGFuY2UpOwogICAgIHJldHVybiB7IH07CkBAIC0zODcsNyArMzg3LDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gUGFubmVyTm9kZTo6c2V0Um9sbG9mZkZhY3Rvcihkb3VibGUgcm9sbG9mZkZhY3Rv
cikKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJyb3IsICJyb2xsb2ZmRmFjdG9y
IGNhbm5vdCBiZSBzZXQgdG8gYSBuZWdhdGl2ZSB2YWx1ZSJfcyB9OwogICAgIAogICAgIC8vIFRo
aXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgotICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9wcm9jZXNzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsK
IAogICAgIG1fZGlzdGFuY2VFZmZlY3Quc2V0Um9sbG9mZkZhY3Rvcihyb2xsb2ZmRmFjdG9yKTsK
ICAgICByZXR1cm4geyB9OwpAQCAtNDAxLDcgKzQwMSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBh
bm5lck5vZGU6OnNldENvbmVPdXRlckdhaW4oZG91YmxlIGdhaW4pCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgImNvbmVPdXRlckdhaW4gbXVzdCBiZSBpbiBb
MCwgMV0iX3MgfTsKICAgICAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3Mo
KS4KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX3Byb2Nlc3NMb2NrIH07CiAKICAgICBtX2NvbmVFZmZlY3Quc2V0T3V0ZXJH
YWluKGdhaW4pOwogICAgIHJldHVybiB7IH07CkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBQYW5u
ZXJOb2RlOjpzZXRDb25lT3V0ZXJBbmdsZShkb3VibGUgYW5nbGUpCiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgot
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsKIAogICAgIG1fY29uZUVmZmVjdC5zZXRPdXRlckFuZ2xl
KGFuZ2xlKTsKIH0KQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIFBhbm5lck5vZGU6OnNldENvbmVJ
bm5lckFuZ2xlKGRvdWJsZSBhbmdsZSkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAg
ICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCi0gICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNz
TG9jayB9OwogCiAgICAgbV9jb25lRWZmZWN0LnNldElubmVyQW5nbGUoYW5nbGUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29y
Tm9kZS5jcHAKaW5kZXggMjU2MWZmYTg1NTE2YTM5ODYxZGUwZjI4ZDBjN2Y2ZjkwYTJjMDFhZC4u
MjJlOTdlOGFhMjVlYWMyZjcwOGUyM2Y3NmE4OWIyOGQ5MzAzMDEzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3Bw
CkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBTY3JpcHRQcm9jZXNzb3JOb2RlOjp1bmluaXRpYWxp
emUoKQogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVm
ZmVyQ291bnQ7ICsraSkgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYnVmZmVy
TG9ja3NbaV0pOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9idWZmZXJMb2Nrc1tpXSB9Owog
ICAgICAgICBtX2lucHV0QnVmZmVyc1tpXSA9IG51bGxwdHI7CiAgICAgICAgIG1fb3V0cHV0QnVm
ZmVyc1tpXSA9IG51bGxwdHI7CiAgICAgfQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgU2NyaXB0
UHJvY2Vzc29yTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0
aGlzLCBidWZmZXJJbmRleCwgcHJvdGVjdG9yID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAg
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYnVmZmVyTG9ja3NbYnVmZmVySW5kZXhd
KTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9idWZmZXJMb2Nrc1tidWZmZXJJ
bmRleF0gfTsKICAgICAgICAgICAgICAgICBmaXJlUHJvY2Vzc0V2ZW50KGJ1ZmZlckluZGV4KTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAppbmRleCBkMjRkZTJlYjRk
MGNlMWFlOTg1MDBjNjExN2NmOGFmNGFjOWUxZGQ2Li4xMjA4ODUwODA4OTAzNjFkNGM0MGFhNmFj
YWI5NTRiYTcwMGI1NzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvRFNQS2VybmVsPiBXYXZlU2hhcGVyUHJvY2Vzc29yOjpjcmVhdGVLZXJu
ZWwoKQogdm9pZCBXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRDdXJ2ZShGbG9hdDMyQXJyYXkqIGN1
cnZlKQogewogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fcHJvY2Vzc0xvY2sgfTsKIAogICAgIG1fY3VydmUgPSBjdXJ2ZTsKIH0KQEAgLTU5LDcgKzU5
LDcgQEAgdm9pZCBXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRDdXJ2ZShGbG9hdDMyQXJyYXkqIGN1
cnZlKQogdm9pZCBXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRPdmVyc2FtcGxlKE92ZXJTYW1wbGVU
eXBlIG92ZXJzYW1wbGUpCiB7CiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNz
KCkuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCiAgICAgbV9vdmVyc2FtcGxlID0gb3ZlcnNh
bXBsZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
LmNwcAppbmRleCBjMWRiOGVmYTBiMDBmM2UzMjFhOTBlMjk2NDlkN2U2MzM0MTg3MTE2Li4zYTRj
ZDg1ZTVlYzEwMGM4NzEzMjg3NjM4NDQ5OTU1MjkwY2RjM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtMzMzLDcgKzMzMyw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShib29sIHNo
b3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB7
CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSB3YWl0IHRpbGwgdGhlIGJhY2tncm91bmQgcmVtb3Zh
bCBvZiB0aGUgZW1wdHkgZGF0YWJhc2UgZmlsZXMgZmluaXNoZWQgYmVmb3JlIHRyeWluZyB0byBv
cGVuIGFueSBkYXRhYmFzZS4KLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhEYXRhYmFz
ZVRyYWNrZXI6Om9wZW5EYXRhYmFzZU11dGV4KCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
RGF0YWJhc2VUcmFja2VyOjpvcGVuRGF0YWJhc2VNdXRleCgpIH07CiAgICAgfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmNwcAppbmRleCA1MWFkOGE4ZjM0YjJhNzUxMTYzZDBkOGJlMjRiOGRmYzg0Y2QxNjBi
Li45NTBiNDVmYzcxYWFiMTZmMTRlMTVlMmEwYWZmMTFmMTI4NTIyYTg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3Bw
CkBAIC0xODEsMTMgKzE4MSwxMyBAQCBFeGNlcHRpb25PcjxSZWY8RGF0YWJhc2U+PiBEYXRhYmFz
ZU1hbmFnZXI6OnRyeVRvT3BlbkRhdGFiYXNlQmFja2VuZChEb2N1bWVudCYgZAogCiB2b2lkIERh
dGFiYXNlTWFuYWdlcjo6YWRkUHJvcG9zZWREYXRhYmFzZShQcm9wb3NlZERhdGFiYXNlJiBkYXRh
YmFzZSkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvcG9zZWREYXRhYmFzZXNN
dXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRhYmFzZXNNdXRleCB9Owog
ICAgIG1fcHJvcG9zZWREYXRhYmFzZXMuYWRkKCZkYXRhYmFzZSk7CiB9CiAKIHZvaWQgRGF0YWJh
c2VNYW5hZ2VyOjpyZW1vdmVQcm9wb3NlZERhdGFiYXNlKFByb3Bvc2VkRGF0YWJhc2UmIGRhdGFi
YXNlKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9wb3NlZERhdGFiYXNlc011
dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9wb3NlZERhdGFiYXNlc011dGV4IH07CiAg
ICAgbV9wcm9wb3NlZERhdGFiYXNlcy5yZW1vdmUoJmRhdGFiYXNlKTsKIH0KIApAQCAtMjQxLDcg
KzI0MSw3IEBAIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzdG9wRGF0YWJhc2VzKERvY3VtZW50JiBk
b2N1bWVudCwgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyCiBTdHJpbmcgRGF0YWJhc2VNYW5hZ2Vy
OjpmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkKIHsKICAgICB7Ci0gICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9wb3NlZERhdGFiYXNlc011dGV4KTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRhYmFzZXNNdXRleCB9OwogICAgICAgICBmb3Ig
KGF1dG8qIHByb3Bvc2VkRGF0YWJhc2UgOiBtX3Byb3Bvc2VkRGF0YWJhc2VzKSB7CiAgICAgICAg
ICAgICBpZiAocHJvcG9zZWREYXRhYmFzZS0+ZGV0YWlscygpLm5hbWUoKSA9PSBuYW1lICYmIHBy
b3Bvc2VkRGF0YWJhc2UtPm9yaWdpbigpLmVxdWFsKCZvcmlnaW4pKQogICAgICAgICAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKQEAgLTI1Myw3ICsyNTMsNyBAQCBTdHJpbmcgRGF0YWJhc2VNYW5h
Z2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0
cmluZwogRGF0YWJhc2VEZXRhaWxzIERhdGFiYXNlTWFuYWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRP
cmlnaW4oY29uc3QgU3RyaW5nJiBuYW1lLCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQogewogICAg
IHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb3Bvc2VkRGF0YWJhc2VzTXV0
ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9wb3NlZERhdGFiYXNlc011dGV4IH07
CiAgICAgICAgIGZvciAoYXV0byogcHJvcG9zZWREYXRhYmFzZSA6IG1fcHJvcG9zZWREYXRhYmFz
ZXMpIHsKICAgICAgICAgICAgIGlmIChwcm9wb3NlZERhdGFiYXNlLT5kZXRhaWxzKCkubmFtZSgp
ID09IG5hbWUgJiYgcHJvcG9zZWREYXRhYmFzZS0+b3JpZ2luKCkuZXF1YWwoJm9yaWdpbikpIHsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoJnByb3Bvc2VkRGF0YWJhc2UtPmRldGFpbHMoKS50aHJl
YWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkgfHwgaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3Bw
CmluZGV4IDI5MTA4M2IxZjM5NzJkMjY5N2I5NWJmNWQ0ZGU3MWZhOTkxMTIwM2EuLmEwMzgyMzRi
NzU1NmJjYjVlYmUzNzFiM2M1ODJhNjg1NThhYmI1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTEzMjEs
NyArMTMyMSw3IEBAIHN0YXRpYyBOb3RpZmljYXRpb25RdWV1ZSYgbm90aWZpY2F0aW9uUXVldWUo
KQogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6c2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQo
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsK
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG5vdGlmaWNhdGlvbkxvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBub3RpZmljYXRpb25Mb2NrIH07CiAgICAgbm90aWZpY2F0aW9uUXVldWUoKS5h
cHBlbmQoc3RkOjptYWtlX3BhaXIob3JpZ2luLmlzb2xhdGVkQ29weSgpLCBuYW1lLmlzb2xhdGVk
Q29weSgpKSk7CiAgICAgc2NoZWR1bGVGb3JOb3RpZmljYXRpb24oKTsKIH0KQEAgLTEzNDgsNyAr
MTM0OCw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpub3RpZnlEYXRhYmFzZXNDaGFuZ2VkKCkK
IAogICAgIE5vdGlmaWNhdGlvblF1ZXVlIG5vdGlmaWNhdGlvbnM7CiAgICAgewotICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG5vdGlmaWNhdGlvbkxvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbm90aWZpY2F0aW9uTG9jayB9OwogICAgICAgICBub3RpZmljYXRpb25zLnN3YXAo
bm90aWZpY2F0aW9uUXVldWUoKSk7CiAgICAgICAgIG5vdGlmaWNhdGlvblNjaGVkdWxlZCA9IGZh
bHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcAppbmRleCBjMzBmYjg5NGRhYTlmMzEyY2VmMTM5NTk0NWNiNDcxY2RjZjBjYTcx
Li5lZjJlYWNlM2RlZWE4ODc5ZTQ3OTg0NGNjMTAxODhjNDZhNWYwN2I0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC0yNTYsNyAr
MjU2LDcgQEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxs
KiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
dGhpc09iamVjdC0+bV9nY0xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgdGhpc09iamVj
dC0+bV9nY0xvY2sgfTsKIAogICAgICAgICBmb3IgKGF1dG8mIHN0cnVjdHVyZSA6IHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZXMobG9ja2VyKS52YWx1ZXMoKSkKICAgICAgICAgICAgIHZpc2l0b3IuYXBw
ZW5kKHN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCmluZGV4IGIzYzQ1Yzdl
MTU3ODYzODQzZDA1YWI1NzA5YTcwMjQ3ZTI2Njk4NzMuLmJiOGQ3ZTBjMWExNDVjZmIyNGFmMjM3
MWNhOGVlM2MxMzExODI5NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCkBAIC0zNCw3
ICszNCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9y
Pgogdm9pZCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJl
bihWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod3JhcHBl
ZCgpLnBhaW50RGVmaW5pdGlvbkxvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IHdyYXBwZWQo
KS5wYWludERlZmluaXRpb25Mb2NrKCkgfTsKICAgICBmb3IgKGF1dG8mIHJlZ2lzdGVyZWQgOiB3
cmFwcGVkKCkucGFpbnREZWZpbml0aW9uTWFwKCkudmFsdWVzKCkpIHsKICAgICAgICAgcmVnaXN0
ZXJlZC0+cGFpbnRDYWxsYmFjay0+dmlzaXRKU0Z1bmN0aW9uKHZpc2l0b3IpOwogICAgICAgICB2
aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKHJlZ2lzdGVyZWQtPnBhaW50Q29uc3RydWN0b3IpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcAppbmRleCA4Y2E2ZTVlMjBj
NTRlNzZjMWU2OTZlYTI4YmVkNDQwMTIxMjQxM2ViLi5jZTE1ZWFjY2FkZDMyYmQwMThiMTQ1M2Mz
MDUzMTRjOTA3MjlhZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJ
bWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVl
LmNwcApAQCAtNTQsNyArNTQsNyBAQCBSZWZQdHI8SW1hZ2U+IENTU1BhaW50SW1hZ2VWYWx1ZTo6
aW1hZ2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyRWxlbWVudCwgY29uc3QgRmxvYQogICAgIGF1dG8q
IHNlbGVjdGVkR2xvYmFsU2NvcGUgPSByZW5kZXJFbGVtZW50LmRvY3VtZW50KCkucGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVGb3JOYW1lKG1fbmFtZSk7CiAgICAgaWYgKCFzZWxlY3RlZEdsb2JhbFNj
b3BlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KHNlbGVjdGVkR2xvYmFsU2NvcGUtPnBhaW50RGVmaW5pdGlvbkxvY2soKSk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IHNlbGVjdGVkR2xvYmFsU2NvcGUtPnBhaW50RGVmaW5pdGlvbkxvY2soKSB9Owog
ICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHNlbGVjdGVkR2xvYmFsU2NvcGUtPnBhaW50RGVmaW5p
dGlvbk1hcCgpLmdldChtX25hbWUpOwogCiAgICAgaWYgKCFyZWdpc3RyYXRpb24pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCmluZGV4IDZhMGUxOTY2NDU0MmU4MTY4
MWM3YTY5N2VjYzcxMTViN2E0ZGZjMTEuLjJmYTRlMjBiMDY3YzVhN2M4ZWMwZWYyNjQ0M2NiZWYw
NWEwYWNjYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmts
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCkBA
IC03Niw3ICs3Niw3IEBAIHZvaWQgUGFpbnRXb3JrbGV0OjphZGRNb2R1bGUoY29uc3QgU3RyaW5n
JiBtb2R1bGVVUkwsIFdvcmtsZXRPcHRpb25zJiYsIERPTVByb21pCiAgICAgYXV0byBjb250ZXh0
ID0gbWF5YmVDb250ZXh0LnJlbGVhc2VOb25OdWxsKCk7CiAgICAgY29udGV4dC0+ZXZhbHVhdGUo
KTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY29udGV4dC0+cGFpbnREZWZpbml0aW9u
TG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgY29udGV4dC0+cGFpbnREZWZpbml0aW9uTG9j
aygpIH07CiAgICAgZm9yIChhdXRvJiBuYW1lIDogY29udGV4dC0+cGFpbnREZWZpbml0aW9uTWFw
KCkua2V5cygpKQogICAgICAgICBkb2N1bWVudC0+c2V0UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVG
b3JOYW1lKG5hbWUsIG1ha2VSZWYoY29udGV4dC5nZXQoKSkpOwogICAgIHByb21pc2UucmVzb2x2
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCmluZGV4IGZjMzYzYWUz
M2FmOTI3NmZmYzVjYTZhMmI2YjFjZjI3NWJhODAwOTUuLjU5YzBiMjkxNzNiYTQ2NDkwZGU5ZWUw
ZmY3YWIwM2MwMzI0NmQ4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExp
c3RlbmVyTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5j
cHAKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBFdmVudExpc3RlbmVyTWFwOjpjb250YWluc0FjdGl2
ZShjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUpIGNvbnN0CiAKIHZvaWQgRXZlbnRMaXN0ZW5l
ck1hcDo6Y2xlYXIoKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgCiAgICAgYXNzZXJ0Tm9BY3RpdmVJdGVy
YXRvcnMoKTsKIApAQCAtMTE3LDcgKzExNyw3IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGZpbmRM
aXN0ZW5lcihjb25zdCBFdmVudExpc3RlbmVyVmVjdG9yJiBsaXN0ZW5lcnMsIEV2ZW50TGlzCiAK
IHZvaWQgRXZlbnRMaXN0ZW5lck1hcDo6cmVwbGFjZShjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5
cGUsIEV2ZW50TGlzdGVuZXImIG9sZExpc3RlbmVyLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBuZXdM
aXN0ZW5lciwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI6Ok9wdGlvbnMmIG9wdGlvbnMp
CiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xvY2sgfTsKICAgICAKICAgICBhc3NlcnROb0FjdGl2ZUl0ZXJhdG9ycygpOwogCkBA
IC0xMzIsNyArMTMyLDcgQEAgdm9pZCBFdmVudExpc3RlbmVyTWFwOjpyZXBsYWNlKGNvbnN0IEF0
b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgb2xkTGkKIAogYm9vbCBFdmVudExp
c3RlbmVyTWFwOjphZGQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0
ZW5lcj4mJiBsaXN0ZW5lciwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI6Ok9wdGlvbnMm
IG9wdGlvbnMpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAKICAgICBhc3NlcnROb0FjdGl2ZUl0ZXJhdG9y
cygpOwogCkBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGljIGJvb2wgcmVtb3ZlTGlzdGVuZXJGcm9t
VmVjdG9yKEV2ZW50TGlzdGVuZXJWZWN0b3ImIGxpc3RlbmVycywgRXZlbnRMaXN0ZW4KIAogYm9v
bCBFdmVudExpc3RlbmVyTWFwOjpyZW1vdmUoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBF
dmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewotICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAg
ICAgCiAgICAgYXNzZXJ0Tm9BY3RpdmVJdGVyYXRvcnMoKTsKIApAQCAtMjAyLDcgKzIwMiw3IEBA
IHN0YXRpYyB2b2lkIHJlbW92ZUZpcnN0TGlzdGVuZXJDcmVhdGVkRnJvbU1hcmt1cChFdmVudExp
c3RlbmVyVmVjdG9yJiBsaXN0ZW5lclZlCiAKIHZvaWQgRXZlbnRMaXN0ZW5lck1hcDo6cmVtb3Zl
Rmlyc3RFdmVudExpc3RlbmVyQ3JlYXRlZEZyb21NYXJrdXAoY29uc3QgQXRvbVN0cmluZyYgZXZl
bnRUeXBlKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgCiAgICAgYXNzZXJ0Tm9BY3RpdmVJdGVyYXRvcnMo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggMTIwNDAxZjg4OGJjYTY3NzY4
MTFkOTBkMjVmODI0MWY1NTE3MTc0MS4uM2Q0YTZmZGYxMGY1YmRjMmZhZGNmZDM3MWI4MDNhNmY4
MTQwYmZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC0zOTMsNyArMzkzLDcg
QEAgdm9pZCBFdmVudFRhcmdldDo6dmlzaXRKU0V2ZW50TGlzdGVuZXJzKFZpc2l0b3ImIHZpc2l0
b3IpCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhkYXRhLT5ldmVudExpc3RlbmVyTWFwLmxvY2soKSk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IGRhdGEtPmV2ZW50TGlzdGVuZXJNYXAubG9jaygpIH07CiAgICAgRXZlbnRMaXN0
ZW5lckl0ZXJhdG9yIGl0ZXJhdG9yKCZkYXRhLT5ldmVudExpc3RlbmVyTWFwKTsKICAgICB3aGls
ZSAoYXV0byogbGlzdGVuZXIgPSBpdGVyYXRvci5uZXh0TGlzdGVuZXIoKSkKICAgICAgICAgbGlz
dGVuZXItPnZpc2l0SlNGdW5jdGlvbih2aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBiMmZh
M2EyMjVlNDViYjk4N2M5NDdmZjZiNDFlM2E0ZDBiYmFjYzU4Li45MTY5M2I0MjljM2UyZTIxNmM3
NGM2MWI2MTQ2YmUzNDYxZTk0OTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yMjM5LDcgKzIyMzks
NyBAQCBFdmVudFRhcmdldERhdGEmIE5vZGU6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCiAgICAg
SlNDOjpWTSogdm0gPSBjb21tb25WTU9yTnVsbCgpOwogICAgIFJFTEVBU0VfQVNTRVJUKCF2bSB8
fCB2bS0+aGVhcC53b3JsZElzUnVubmluZygpKTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2soc19ldmVudFRhcmdldERhdGFNYXBMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc19ldmVu
dFRhcmdldERhdGFNYXBMb2NrIH07CiAgICAgc2V0SGFzRXZlbnRUYXJnZXREYXRhKHRydWUpOwog
ICAgIHJldHVybiAqZXZlbnRUYXJnZXREYXRhTWFwKCkuYWRkKHRoaXMsIG1ha2VVbmlxdWU8RXZl
bnRUYXJnZXREYXRhPigpKS5pdGVyYXRvci0+dmFsdWU7CiB9CkBAIC0yMjQ4LDcgKzIyNDgsNyBA
QCB2b2lkIE5vZGU6OmNsZWFyRXZlbnRUYXJnZXREYXRhKCkKIHsKICAgICBKU0M6OlZNKiB2bSA9
IGNvbW1vblZNT3JOdWxsKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXZtIHx8IHZtLT5oZWFwLndv
cmxkSXNSdW5uaW5nKCkpOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soc19ldmVudFRhcmdl
dERhdGFNYXBMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc19ldmVudFRhcmdldERhdGFNYXBM
b2NrIH07CiAgICAgZXZlbnRUYXJnZXREYXRhTWFwKCkucmVtb3ZlKHRoaXMpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9DYW52YXNCYXNlLmNwcAppbmRleCAzZTQyNDljMGE5NWM1NjFiZTM4ZDMxMTJjMzNi
ZTQzNDMzYzYwZTIxLi4wN2ViNjUxNDlmYzk5NjcwNTdlODJhYzY0OTVkZDEyMGMyZDVlMjU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzaXplX3Qg
Q2FudmFzQmFzZTo6bWVtb3J5Q29zdCgpIGNvbnN0CiAgICAgLy8gbWVtb3J5Q29zdCgpIG1heSBi
ZSBpbnZva2VkIGNvbmN1cnJlbnRseSBmcm9tIGEgR0MgdGhyZWFkLCBhbmQgd2UgbmVlZCB0byBi
ZSBjYXJlZnVsCiAgICAgLy8gYWJvdXQgd2hhdCBkYXRhIHdlIGFjY2VzcyBoZXJlIGFuZCBob3cu
IFdlIG5lZWQgdG8gaG9sZCBhIGxvY2sgdG8gcHJldmVudCBtX2ltYWdlQnVmZmVyCiAgICAgLy8g
ZnJvbSBiZWluZyBjaGFuZ2VkIHdoaWxlIHdlIGFjY2VzcyBpdC4KLSAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1faW1hZ2VCdWZmZXJBc3NpZ25tZW50TG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1faW1hZ2VCdWZmZXJBc3NpZ25tZW50TG9jayB9OwogICAgIGlmICghbV9pbWFnZUJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXItPm1lbW9yeUNv
c3QoKTsKQEAgLTExNCw3ICsxMTQsNyBAQCBzaXplX3QgQ2FudmFzQmFzZTo6ZXh0ZXJuYWxNZW1v
cnlDb3N0KCkgY29uc3QKICAgICAvLyBleHRlcm5hbE1lbW9yeUNvc3QoKSBtYXkgYmUgaW52b2tl
ZCBjb25jdXJyZW50bHkgZnJvbSBhIEdDIHRocmVhZCwgYW5kIHdlIG5lZWQgdG8gYmUgY2FyZWZ1
bAogICAgIC8vIGFib3V0IHdoYXQgZGF0YSB3ZSBhY2Nlc3MgaGVyZSBhbmQgaG93LiBXZSBuZWVk
IHRvIGhvbGQgYSBsb2NrIHRvIHByZXZlbnQgbV9pbWFnZUJ1ZmZlcgogICAgIC8vIGZyb20gYmVp
bmcgY2hhbmdlZCB3aGlsZSB3ZSBhY2Nlc3MgaXQuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX2ltYWdlQnVmZmVyQXNzaWdubWVudExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2lt
YWdlQnVmZmVyQXNzaWdubWVudExvY2sgfTsKICAgICBpZiAoIW1faW1hZ2VCdWZmZXIpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIHJldHVybiBtX2ltYWdlQnVmZmVyLT5leHRlcm5hbE1lbW9yeUNv
c3QoKTsKQEAgLTE4OCw3ICsxODgsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IENhbnZhc0Jhc2U6
OnNldEltYWdlQnVmZmVyKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpIGNvbgogewogICAg
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gcmV0dXJuQnVmZmVyOwogICAgIHsKLSAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2ltYWdlQnVmZmVyQXNzaWdubWVudExvY2spOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9pbWFnZUJ1ZmZlckFzc2lnbm1lbnRMb2NrIH07CiAgICAgICAgIG1f
Y29udGV4dFN0YXRlU2F2ZXIgPSBudWxscHRyOwogICAgICAgICByZXR1cm5CdWZmZXIgPSBzdGQ6
OmV4Y2hhbmdlKG1faW1hZ2VCdWZmZXIsIFdURk1vdmUoYnVmZmVyKSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAppbmRleCBkZjJhM2E3MDhmY2Q3Njg4ZTU0MGRi
ZTQ2ODg3ZTUyNDBmMjM0M2ViLi5lZTA4ZjgzMGRkNGM1MWM0N2U2YTYwYTYyYjM1NGUxNzBhYTE3
YzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcApAQCAtMTUzLDcgKzE1
Myw3IEBAIHZvaWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRhdGVOYW1lZEVsZW1lbnRDYWNoZShE
b2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiAgICAgQVNTRVJUKGhhc05hbWVkRWxlbWVudENhY2hl
KCkpOwogICAgIGRvY3VtZW50LmNvbGxlY3Rpb25XaWxsQ2xlYXJJZE5hbWVNYXAoKnRoaXMpOwog
ICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX25hbWVkRWxlbWVudENhY2hl
QXNzaWdubWVudExvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9uYW1lZEVsZW1lbnRD
YWNoZUFzc2lnbm1lbnRMb2NrIH07CiAgICAgICAgIG1fbmFtZWRFbGVtZW50Q2FjaGUgPSBudWxs
cHRyOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxl
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAppbmRleCA4OTM3
YjAzNmMyMzgyMmYxZWYxOTU3ZTgzZGRjNTMwOWM0MjU3NDNmLi40ZTIzMGEwYWY4ZDk3NTJiMDAy
ZTdjN2M5MDc4NzlmZjM5NzVkN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5o
CkBAIC0xNzUsNyArMTc1LDcgQEAgaW5saW5lIHNpemVfdCBIVE1MQ29sbGVjdGlvbjo6bWVtb3J5
Q29zdCgpIGNvbnN0CiB7CiAgICAgLy8gbWVtb3J5Q29zdCgpIG1heSBiZSBpbnZva2VkIGNvbmN1
cnJlbnRseSBmcm9tIGEgR0MgdGhyZWFkLCBhbmQgd2UgbmVlZCB0byBiZSBjYXJlZnVsIGFib3V0
IHdoYXQgZGF0YSB3ZSBhY2Nlc3MgaGVyZSBhbmQgaG93LgogICAgIC8vIEhlbmNlLCB3ZSBuZWVk
IHRvIGd1YXJkIG1fbmFtZWRFbGVtZW50Q2FjaGUgZnJvbSBiZWluZyByZXBsYWNlZCB3aGlsZSBh
Y2Nlc3NpbmcgaXQuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX25hbWVkRWxlbWVudENh
Y2hlQXNzaWdubWVudExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX25hbWVkRWxlbWVudENh
Y2hlQXNzaWdubWVudExvY2sgfTsKICAgICByZXR1cm4gbV9uYW1lZEVsZW1lbnRDYWNoZSA/IG1f
bmFtZWRFbGVtZW50Q2FjaGUtPm1lbW9yeUNvc3QoKSA6IDA7CiB9CiAKQEAgLTIyMyw3ICsyMjMs
NyBAQCBpbmxpbmUgdm9pZCBIVE1MQ29sbGVjdGlvbjo6c2V0TmFtZWRJdGVtQ2FjaGUoc3RkOjp1
bmlxdWVfcHRyPENvbGxlY3Rpb25OYW1lZEVsZQogICAgIEFTU0VSVCghbV9uYW1lZEVsZW1lbnRD
YWNoZSk7CiAgICAgY2FjaGUtPmRpZFBvcHVsYXRlKCk7CiAgICAgewotICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fbmFtZWRFbGVtZW50Q2FjaGVBc3NpZ25tZW50TG9jayk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX25hbWVkRWxlbWVudENhY2hlQXNzaWdubWVudExvY2sgfTsK
ICAgICAgICAgbV9uYW1lZEVsZW1lbnRDYWNoZSA9IFdURk1vdmUoY2FjaGUpOwogICAgIH0KICAg
ICBkb2N1bWVudCgpLmNvbGxlY3Rpb25DYWNoZWRJZE5hbWVNYXAoKnRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCmluZGV4IDNhNTQzYmNiMmJkYTdjNjkyNTMyNDAw
NWM1NWJiZDVmNzY5OThlMzYuLjNlZjIzYWIzYjdiY2RlMWYwZWJkNWQzNzBjMDE5NTI4N2NhMzI3
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKQEAgLTQzMyw3ICs0
MzMsNyBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6c2V0UGxhY2Vob2xkZXJDYW52YXMoSFRNTENh
bnZhc0VsZW1lbnQmIGNhbnZhcykKIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpwdXNoQnVmZmVyVG9Q
bGFjZWhvbGRlcigpCiB7CiAgICAgY2FsbE9uTWFpblRocmVhZChbcGxhY2Vob2xkZXJEYXRhID0g
bWFrZVJlZigqbV9wbGFjZWhvbGRlckRhdGEpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhwbGFjZWhvbGRlckRhdGEtPmJ1ZmZlckxvY2spOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgcGxhY2Vob2xkZXJEYXRhLT5idWZmZXJMb2NrIH07CiAgICAgICAgIGlm
IChwbGFjZWhvbGRlckRhdGEtPmNhbnZhcyAmJiBwbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21t
aXRCdWZmZXIpCiAgICAgICAgICAgICBwbGFjZWhvbGRlckRhdGEtPmNhbnZhcy0+c2V0SW1hZ2VC
dWZmZXJBbmRNYXJrRGlydHkoV1RGTW92ZShwbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRC
dWZmZXIpKTsKICAgICAgICAgcGxhY2Vob2xkZXJEYXRhLT5wZW5kaW5nQ29tbWl0QnVmZmVyID0g
bnVsbHB0cjsKQEAgLTQ1Niw3ICs0NTYsNyBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6Y29tbWl0
VG9QbGFjZWhvbGRlckNhbnZhcygpCiAgICAgICAgICAgICBtX3BsYWNlaG9sZGVyRGF0YS0+YnVm
ZmVyUGlwZVNvdXJjZS0+aGFuZGxlKFdURk1vdmUoYnVmZmVyQ29weSkpOwogICAgIH0KIAotICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlckxvY2spOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX3BsYWNlaG9sZGVyRGF0YS0+YnVmZmVyTG9jayB9OwogICAg
IGJvb2wgc2hvdWxkUHVzaEJ1ZmZlciA9ICFtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlcjsKICAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciA9IGlt
YWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
QnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpKTsKICAgICBpZiAobV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdD
b21taXRCdWZmZXIgJiYgc2hvdWxkUHVzaEJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcAppbmRleCBkYmU1NGRjNjg4MTJi
YmQzMDY1NWI5YjkxZmViMTc2MjkxZWEyYzExLi4zMGQ0YjNmZjBjYmQyNGY1MzgwODYzMGJjYzQz
MDY3ZDhjZThmMDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNW
ZXJ0ZXhBcnJheU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VT
VmVydGV4QXJyYXlPYmplY3QuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgT0VTVmVydGV4QXJy
YXlPYmplY3Q6OmRlbGV0ZVZlcnRleEFycmF5T0VTKFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMq
IGFycmF5CiAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9jb250ZXh0LT5vYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fY29udGV4dC0+b2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmICgh
YXJyYXlPYmplY3QgfHwgbV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6YmluZFZlcnRl
eEFycmF5T0VTKFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMqIGFycmF5T2IKICAgICBpZiAoIW1f
Y29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2NvbnRleHQtPm9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb250
ZXh0LT5vYmplY3RHcmFwaExvY2soKSB9OwogCiAgICAgaWYgKG1fY29udGV4dC0+aXNDb250ZXh0
TG9zdCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGExYTQyOWYzNTViYjMwMTE3
NTQxYjVkNzgyZmU5OGIxOTQyZDdjNDAuLmViMmQzYWE4ZDYzN2U0ZDRiYTYzYTEzODE4MGEwN2Ri
MjljNDA2ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
MlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC02OTQsNyArNjk0LDcgQEAgdm9pZCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgbG9uZyBsb25n
IHNyY0J5dGUKIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kRnJhbWVidWZmZXIo
R0NHTGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBidWZmZXIpCiB7Ci0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAoIXZhbGlkYXRlTnVsbGFibGVXZWJHTE9i
amVjdCgiYmluZEZyYW1lYnVmZmVyIiwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzI0
LDcgKzcyNCw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmxpdEZyYW1lYnVmZmVy
KEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpCiAKIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6ZGVsZXRlRnJhbWVidWZmZXIoV2ViR0xGcmFtZWJ1ZmZlciogZnJhbWVidWZm
ZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAoIWRlbGV0
ZU9iamVjdChsb2NrZXIsIGZyYW1lYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTcxMSw3
ICsxNzExLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNHVp
dihHQ0dMdWludCBpbmRleCwgVWludDMyTGlzdCYmIGxpc3QKIAogdm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBz
aXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50NjQgb2Zmc2V0KQog
ewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExv
Y2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2soKSB9OwogCiAgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTkxMCw3ICsxOTEwLDcgQEAgUmVm
UHRyPFdlYkdMUXVlcnk+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVF1ZXJ5KCkKIAog
dm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVRdWVyeShXZWJHTFF1ZXJ5KiBxdWVy
eSkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXF1ZXJ5IHx8ICFxdWVyeS0+b2JqZWN0KCkgfHwgIXZhbGlk
YXRlV2ViR0xPYmplY3QoImRlbGV0ZVF1ZXJ5IiwgcXVlcnkpKQogICAgICAgICByZXR1cm47CkBA
IC0xOTQ1LDcgKzE5NDUsNyBAQCBib29sIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRl
UXVlcnlUYXJnZXQoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZQogCiB2b2lkIFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luUXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBXZWJHTFF1ZXJ5
JiBxdWVyeSkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygp
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIEdDR0xl
bnVtIHRhcmdldEtleTsKICAgICBpZiAoIXZhbGlkYXRlV2ViR0xPYmplY3QoImJlZ2luUXVlcnki
LCAmcXVlcnkpIHx8ICF2YWxpZGF0ZVF1ZXJ5VGFyZ2V0KCJiZWdpblF1ZXJ5IiwgdGFyZ2V0LCAm
dGFyZ2V0S2V5KSkKQEAgLTE5NzAsNyArMTk3MCw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6YmVnaW5RdWVyeShHQ0dMZW51bSB0YXJnZXQsIFdlYkdMUXVlcnkmIHF1ZXJ5KQogCiB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkKIHsK
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIEdDR0xlbnVtIHRhcmdldEtl
eTsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgfHwgIXZhbGlkYXRlUXVlcnlUYXJnZXQoImJlZ2luUXVlcnkiLCB0YXJnZXQsICZ0
YXJnZXRLZXkpKQpAQCAtMjA0MSw3ICsyMDQxLDcgQEAgUmVmUHRyPFdlYkdMU2FtcGxlcj4gV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlU2FtcGxlcigpCiAKIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6ZGVsZXRlU2FtcGxlcihXZWJHTFNhbXBsZXIqIHNhbXBsZXIpCiB7Ci0gICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVu
ZGluZygpKQogICAgICAgICByZXR1cm47CkBAIC0yMDY3LDcgKzIwNjcsNyBAQCBHQ0dMYm9vbGVh
biBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppc1NhbXBsZXIoV2ViR0xTYW1wbGVyKiBzYW1wbGVy
KQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRTYW1wbGVyKEdDR0x1aW50IHVu
aXQsIFdlYkdMU2FtcGxlciogc2FtcGxlcikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2Nr
KCkgfTsKIAogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTIxNTksNyArMjE1OSw3IEBAIEdDR0xib29sZWFuIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmlzU3luYyhXZWJHTFN5bmMqIHN5bmMpCiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6ZGVsZXRlU3luYyhXZWJHTFN5bmMqIHN5bmMpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBo
TG9jaygpIH07CiAKICAgICBkZWxldGVPYmplY3QobG9ja2VyLCBzeW5jKTsKIH0KQEAgLTIyMzAs
NyArMjIzMCw3IEBAIFJlZlB0cjxXZWJHTFRyYW5zZm9ybUZlZWRiYWNrPiBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpCiAKIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soV2ViR0xUcmFuc2Zvcm1GZWVkYmFj
ayogZmVlZGJhY2tPYmplY3QpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RH
cmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAK
ICAgICAvLyBXZSBoYXZlIHRvIHNob3J0LWNpcmN1aXQgdGhlIGRlbGV0aW9uIHByb2Nlc3MgaWYg
dGhlIHRyYW5zZm9ybSBmZWVkYmFjayBpcwogICAgIC8vIGFjdGl2ZS4gVGhpcyByZXF1aXJlcyBk
dXBsaWNhdGlvbiBvZiBzb21lIHZhbGlkYXRpb24gbG9naWMuCkBAIC0yMjY1LDcgKzIyNjUsNyBA
QCBHQ0dMYm9vbGVhbiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppc1RyYW5zZm9ybUZlZWRiYWNr
KFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqCiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
YmluZFRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHRhcmdldCwgV2ViR0xUcmFuc2Zvcm1GZWVk
YmFjayogZmVlZGJhY2tPYmplY3QpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmpl
Y3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07
CiAKICAgICBpZiAoIXZhbGlkYXRlTnVsbGFibGVXZWJHTE9iamVjdCgiYmluZFRyYW5zZm9ybUZl
ZWRiYWNrIiwgZmVlZGJhY2tPYmplY3QpKQogICAgICAgICByZXR1cm47CkBAIC0yMzI2LDcgKzIz
MjYsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVlZGJh
Y2soR0NHTGVudW0gcHJpbWl0aXZlTW9kZSkKIAogICAgIG1fY29udGV4dC0+YmVnaW5UcmFuc2Zv
cm1GZWVkYmFjayhwcmltaXRpdmVNb2RlKTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
b2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2so
KSB9OwogICAgIG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFjay0+c2V0UHJvZ3JhbShsb2NrZXIsICpt
X2N1cnJlbnRQcm9ncmFtKTsKICAgICBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2stPnNldEFjdGl2
ZSh0cnVlKTsKICAgICBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2stPnNldFBhdXNlZChmYWxzZSk7
CkBAIC0yNDI0LDcgKzI0MjQsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlc3Vt
ZVRyYW5zZm9ybUZlZWRiYWNrKCkKIAogYm9vbCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpzZXRJ
bmRleGVkQnVmZmVyQmluZGluZyhjb25zdCBjaGFyICpmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIHRh
cmdldCwgR0NHTHVpbnQgaW5kZXgsIFdlYkdMQnVmZmVyKiBidWZmZXIpCiB7Ci0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAoIXZhbGlkYXRlTnVsbGFibGVXZWJHTE9i
amVjdChmdW5jdGlvbk5hbWUsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2
MTYsNyArMjYxNiw3IEBAIFJlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0PiBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGVWZXJ0ZXhBcnJheSgpCiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6ZGVsZXRlVmVydGV4QXJyYXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogYXJyYXlP
YmplY3QpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICAvLyB2YWxp
ZGF0ZVdlYkdMT2JqZWN0IGdlbmVyYXRlcyBhbiBlcnJvciBpZiB0aGUgb2JqZWN0IGhhcyBhbHJl
YWR5IGJlZW4KICAgICAvLyBkZWxldGVkLCBzbyB3ZSBtdXN0IHJlcGxpY2F0ZSBtb3N0IG9mIGl0
cyBjaGVja3MgaGVyZS4KQEAgLTI2MzUsNyArMjYzNSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6ZGVsZXRlVmVydGV4QXJyYXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogYXJyYXlP
YmplCiAgICAgICAgIC8vIGJpbmRWZXJ0ZXhBcnJheSBncmFicyB0aGUgbG9jayBpbnRlcm5hbGx5
LgogICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKICAgICAgICAgYmluZFZlcnRleEFycmF5
KG51bGxwdHIpOyAvLyBUaGUgZGVmYXVsdCBWQU8gd2FzIHJlbW92ZWQgaW4gT3BlbkdMIDMuMyBi
dXQgbm90IGZyb20gV2ViR0wgMjsgYmluZCB0aGUgZGVmYXVsdCBmb3IgV2ViR0wgdG8gdXNlLgot
ICAgICAgICBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgICAgIGxv
Y2tlciA9IExvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAgICAgfQogCiAgICAgYXJyYXlP
YmplY3QtPmRlbGV0ZU9iamVjdChsb2NrZXIsIGdyYXBoaWNzQ29udGV4dEdMKCkpOwpAQCAtMjY1
Niw3ICsyNjU2LDcgQEAgR0NHTGJvb2xlYW4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aXNWZXJ0
ZXhBcnJheShXZWJHTFZlcnRleEFycmF5T2JqZWN0KiBhcnJheU8KIAogdm9pZCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpiaW5kVmVydGV4QXJyYXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogYXJy
YXlPYmplY3QpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2so
KSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAo
IXZhbGlkYXRlTnVsbGFibGVXZWJHTE9iamVjdCgiYmluZFZlcnRleEFycmF5IiwgYXJyYXlPYmpl
Y3QpKQogICAgICAgICByZXR1cm47CkBAIC0zMDk2LDcgKzMwOTYsNyBAQCB2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmFkZE1lbWJlcnNUb09wYXF1ZVJvb3RzKEpTQzo6QWJzdHJhY3RTbG90
VmlzaXRvciYgdgogewogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmFkZE1lbWJlcnNU
b09wYXF1ZVJvb3RzKHZpc2l0b3IpOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmpl
Y3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07
CiAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KG1fcmVhZEZyYW1lYnVmZmVyQmluZGluZy5nZXQo
KSk7CiAgICAgaWYgKG1fcmVhZEZyYW1lYnVmZmVyQmluZGluZykKICAgICAgICAgbV9yZWFkRnJh
bWVidWZmZXJCaW5kaW5nLT5hZGRNZW1iZXJzVG9PcGFxdWVSb290cyhsb2NrZXIsIHZpc2l0b3Ip
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0R3Jv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0R3JvdXAuY3Bw
CmluZGV4IGQ2YWI1MTZhZTJmYTJhNmY3OTYyOWI0MmI2ZjgxZjAwY2Y4NmJhYzYuLmFiZDhmMjcz
NjgzOTFlM2UxZDdmY2Y5ZDM3YjlkNzc5NmFmMzM2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRHcm91cC5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2
b2lkIFdlYkdMQ29udGV4dEdyb3VwOjpkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3RzKCkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3Jh
cGhMb2NrRm9yQUNvbnRleHQoKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9j
a0ZvckFDb250ZXh0KCkgfTsKICAgICB3aGlsZSAoIW1fZ3JvdXBPYmplY3RzLmlzRW1wdHkoKSkK
ICAgICAgICAgKCptX2dyb3VwT2JqZWN0cy5iZWdpbigpKS0+ZGV0YWNoQ29udGV4dEdyb3VwKGxv
Y2tlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZy
YW1lYnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZm
ZXIuY3BwCmluZGV4IDk1YWJjMDMzZTJjNmVkNGZlYTI1OTQ5NDMzY2QxMzBkN2YzNWZiNTcuLmE5
NjBjZjVjMjM3ZWM4NDQyOThiMDliYjZlZGFhZGUyOWRlYmNlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCkBAIC02MDIsNyArNjAyLDcg
QEAgYm9vbCBXZWJHTEZyYW1lYnVmZmVyOjppbml0aWFsaXplQXR0YWNobWVudHMoR3JhcGhpY3ND
b250ZXh0R0wqIGczZCwgY29uc3QgY2hhcioKICAgICAgICAgLy8gQ29udGV4dCBoYXMgYmVlbiBk
ZWxldGVkIC0gc2hvdWxkIG5vdCBiZSBjYWxsaW5nIHRoaXMuCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2tGb3JD
b250ZXh0KCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2tGb3JDb250ZXh0
KCkgfTsKIAogICAgIEFTU0VSVChvYmplY3QoKSk7CiAgICAgR0NHTGJpdGZpZWxkIG1hc2sgPSAw
OwpAQCAtNzU0LDcgKzc1NCw3IEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6c2V0QXR0YWNobWVu
dEludGVybmFsKEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHRleFRhCiAgICAgICAgIC8v
IENvbnRleHQgaGFzIGJlZW4gZGVsZXRlZCAtIHNob3VsZCBub3QgYmUgY2FsbGluZyB0aGlzLgog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0
R3JhcGhMb2NrRm9yQ29udGV4dCgpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhM
b2NrRm9yQ29udGV4dCgpIH07CiAKICAgICByZW1vdmVBdHRhY2htZW50SW50ZXJuYWwobG9ja2Vy
LCBhdHRhY2htZW50KTsKICAgICBpZiAodGV4dHVyZSAmJiB0ZXh0dXJlLT5vYmplY3QoKSkgewpA
QCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6c2V0QXR0YWNobWVudElu
dGVybmFsKEdDR0xlbnVtIGF0dGFjaG1lbnQsIFdlYkdMUmVuZGVyYnVmCiAgICAgICAgIC8vIENv
bnRleHQgaGFzIGJlZW4gZGVsZXRlZCAtIHNob3VsZCBub3QgYmUgY2FsbGluZyB0aGlzLgogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3Jh
cGhMb2NrRm9yQ29udGV4dCgpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2Nr
Rm9yQ29udGV4dCgpIH07CiAKICAgICByZW1vdmVBdHRhY2htZW50SW50ZXJuYWwobG9ja2VyLCBh
dHRhY2htZW50KTsKICAgICBpZiAocmVuZGVyYnVmZmVyICYmIHJlbmRlcmJ1ZmZlci0+b2JqZWN0
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcAppbmRleCBk
YjJiNzI1YWMxYjEzZjY5M2Q4ZDU4YmM1NjE0NGI3ZjkwZTRjMGQyLi5mMjgwODAzMzYxYmVjNjAy
OWIyMGRjY2FmMDgxMjMwOGExMjJjZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xPYmplY3QuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgV2ViR0xPYmplY3Q6OnJ1bkRl
c3RydWN0b3IoKQogICAgICAgICBhdXRvIGxvY2tlciA9IEFic3RyYWN0TG9ja2VyKE5vTG9ja2lu
Z05lY2Vzc2FyeSk7CiAgICAgICAgIGRlbGV0ZU9iamVjdChsb2NrZXIsIG51bGxwdHIpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobG9jayk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBsb2NrIH07CiAgICAgICAgIGRlbGV0ZU9iamVjdChsb2NrZXIsIG51
bGxwdHIpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggYzI0YTg0ZGE4ZDMwNjg3YzYy
ZWU5YzU4MmE0ZGRkOWEyODBiNTIxMS4uNTE1NTQ4OGQ3ZWQxZGE5NTBkNWFmNjc4ZDQ2ZDIzNDBi
OGJhOWNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTEzNDUsNyArMTM0NSw3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKQog
CiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmF0dGFjaFNoYWRlcihXZWJHTFByb2dy
YW0mIHByb2dyYW0sIFdlYkdMU2hhZGVyJiBzaGFkZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdy
YXBoTG9jaygpIH07CiAKICAgICBpZiAoIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImF0
dGFjaFNoYWRlciIsICZwcm9ncmFtKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigi
YXR0YWNoU2hhZGVyIiwgJnNoYWRlcikpCiAgICAgICAgIHJldHVybjsKQEAgLTE0NDUsNyArMTQ0
NSw3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVBbmRDYWNoZUJ1
ZmZlckJpbmRpbmcoY29uc3QgQWJzdHJhY3RMb2NrCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6YmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIp
CiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAoIXZhbGlkYXRl
TnVsbGFibGVXZWJHTE9iamVjdCgiYmluZEJ1ZmZlciIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVy
bjsKQEAgLTE0NTgsNyArMTQ1OCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
YmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIpCiAKIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdl
dCwgV2ViR0xGcmFtZWJ1ZmZlciogYnVmZmVyKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExv
Y2soKSB9OwogCiAgICAgaWYgKCF2YWxpZGF0ZU51bGxhYmxlV2ViR0xPYmplY3QoImJpbmRGcmFt
ZWJ1ZmZlciIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybjsKQEAgLTE0NzMsNyArMTQ3Myw3IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVt
IHRhcmdldCwgV2ViR0xGcmFtZWJ1ZmZlCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6YmluZFJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFdlYkdMUmVuZGVyYnVmZmVyKiBy
ZW5kZXJCdWZmZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExv
Y2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBp
ZiAoIXZhbGlkYXRlTnVsbGFibGVXZWJHTE9iamVjdCgiYmluZFJlbmRlcmJ1ZmZlciIsIHJlbmRl
ckJ1ZmZlcikpCiAgICAgICAgIHJldHVybjsKQEAgLTE0ODksNyArMTQ4OSw3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZFJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQs
IFdlYkdMUmVuZGVyYnVmCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZFRl
eHR1cmUoR0NHTGVudW0gdGFyZ2V0LCBXZWJHTFRleHR1cmUqIHRleHR1cmUpCiB7Ci0gICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAoIXZhbGlkYXRlTnVsbGFibGVXZWJH
TE9iamVjdCgiYmluZFRleHR1cmUiLCB0ZXh0dXJlKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjA0
Niw3ICsyMDQ2LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzZXRCb3VuZFZl
cnRleEFycmF5T2JqZWN0KGNvbnN0IEFic3RyYWN0TG9ja2VyJiwKIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpkZWxldGVCdWZmZXIoV2ViR0xCdWZmZXIqIGJ1ZmZlcikKIHsKLSAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmICghZGVsZXRlT2JqZWN0KGxv
Y2tlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjA1Niw3ICsyMDU2LDcgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxldGVCdWZmZXIoV2ViR0xCdWZmZXIqIGJ1
ZmZlcikKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxldGVGcmFtZWJ1ZmZl
cihXZWJHTEZyYW1lYnVmZmVyKiBmcmFtZWJ1ZmZlcikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3Jh
cGhMb2NrKCkgfTsKIAogI2lmIEVOQUJMRShXRUJYUikKICAgICBpZiAoZnJhbWVidWZmZXIgJiYg
ZnJhbWVidWZmZXItPmlzT3BhcXVlKCkpIHsKQEAgLTIwNzksNyArMjA3OSw3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlUHJvZ3JhbShXZWJHTFByb2dyYW0qIHByb2dy
YW0pCiAgICAgaWYgKHByb2dyYW0pCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbERlc3Ryb3lXZWJHTFByb2dyYW0oKnByb2dyYW0pOwogCi0gICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdy
YXBoTG9jaygpIH07CiAKICAgICBkZWxldGVPYmplY3QobG9ja2VyLCBwcm9ncmFtKTsKICAgICAv
LyBXZSBkb24ndCByZXNldCBtX2N1cnJlbnRQcm9ncmFtIHRvIDAgaGVyZSBiZWNhdXNlIHRoZSBk
ZWxldGlvbiBvZiB0aGUKQEAgLTIwODgsNyArMjA4OCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6ZGVsZXRlUHJvZ3JhbShXZWJHTFByb2dyYW0qIHByb2dyYW0pCiAKIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlUmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVy
YnVmZmVyKiByZW5kZXJidWZmZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmpl
Y3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07
CiAKICAgICBpZiAoIWRlbGV0ZU9iamVjdChsb2NrZXIsIHJlbmRlcmJ1ZmZlcikpCiAgICAgICAg
IHJldHVybjsKQEAgLTIxMDMsMTMgKzIxMDMsMTMgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpkZWxldGVSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJidWZmZXIqIHJlbmRlcmJ1ZmYK
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxldGVTaGFkZXIoV2ViR0xTaGFk
ZXIqIHNoYWRlcikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9j
aygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKICAgICBkZWxl
dGVPYmplY3QobG9ja2VyLCBzaGFkZXIpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmRlbGV0ZVRleHR1cmUoV2ViR0xUZXh0dXJlKiB0ZXh0dXJlKQogewotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIg
eyBvYmplY3RHcmFwaExvY2soKSB9OwogCiAgICAgaWYgKCFkZWxldGVPYmplY3QobG9ja2VyLCB0
ZXh0dXJlKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjE3MSw3ICsyMTcxLDcgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZXB0aFJhbmdlKEdDR0xmbG9hdCB6TmVhciwgR0NHTGZs
b2F0IHpGYXIpCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGV0YWNoU2hhZGVy
KFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgV2ViR0xTaGFkZXImIHNoYWRlcikKIHsKLSAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmICghdmFsaWRhdGVXZWJHTFByb2dyYW1P
clNoYWRlcigiZGV0YWNoU2hhZGVyIiwgJnByb2dyYW0pIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3Jh
bU9yU2hhZGVyKCJkZXRhY2hTaGFkZXIiLCAmc2hhZGVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NjA0NSw3ICs2MDQ1LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
TWF0cml4NGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2MKIAogdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1c2VQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKIHsK
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmICghdmFsaWRhdGVOdWxs
YWJsZVdlYkdMT2JqZWN0KCJ1c2VQcm9ncmFtIiwgcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybjsK
QEAgLTYxMTIsNyArNjExMiw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVy
dGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBGbG9hdDMyTGlzdCYmIHYpCiAKIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliUG9pbnRlcihHQ0dMdWludCBpbmRl
eCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBH
Q0dMc2l6ZWkgc3RyaWRlLCBsb25nIGxvbmcgb2Zmc2V0KQogewotICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RH
cmFwaExvY2soKSB9OwogCiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNjMwNyw3ICs2MzA3LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3RzKCkKICAgICBpZiAobV9pc1BlbmRpbmdQ
b2xpY3lSZXNvbHV0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3Jh
cGhMb2NrKCkgfTsKIAogICAgIHdoaWxlIChtX2NvbnRleHRPYmplY3RzLnNpemUoKSA+IDApIHsK
ICAgICAgICAgSGFzaFNldDxXZWJHTENvbnRleHRPYmplY3QqPjo6aXRlcmF0b3IgaXQgPSBtX2Nv
bnRleHRPYmplY3RzLmJlZ2luKCk7CkBAIC03OTU4LDcgKzc5NTgsNyBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKQog
CiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmFkZE1lbWJlcnNUb09wYXF1ZVJvb3Rz
KEpTQzo6QWJzdHJhY3RTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0
R3JhcGhMb2NrKCkgfTsKIAogICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChtX2JvdW5kQXJyYXlC
dWZmZXIuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9SZXZlcmJDb252b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiQ29udm9sdmVyLmNwcAppbmRleCAyNzljYWVjYjcyZDhhNDUyOWEzZDIyM2E0YWZkYzk4MTc0
MjNjYzRhLi4yN2IyOTgyZGMzZmQ5MTY4NWQzMTdhN2VkMWE5YzFlNmVlNDdiMjZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKQEAg
LTEzMyw3ICsxMzMsNyBAQCBSZXZlcmJDb252b2x2ZXI6On5SZXZlcmJDb252b2x2ZXIoKQogCiAg
ICAgICAgIC8vIFdha2UgdXAgdGhyZWFkIHNvIGl0IGNhbiByZXR1cm4KICAgICAgICAgewotICAg
ICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2JhY2tncm91bmRUaHJlYWRMb2NrKTsK
KyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2JhY2tncm91bmRUaHJlYWRMb2NrIH07CiAg
ICAgICAgICAgICBtX21vcmVJbnB1dEJ1ZmZlcmVkID0gdHJ1ZTsKICAgICAgICAgICAgIG1fYmFj
a2dyb3VuZFRocmVhZENvbmRpdGlvblZhcmlhYmxlLm5vdGlmeU9uZSgpOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3Rp
bmF0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9EZXN0aW5hdGlvbkNvY29hLmNwcAppbmRleCBlNTg5MTRkOThjOTZhOTA3YzE1Zjk2M2Y3N2I4
NDEyYTE5NzZmZDgzLi5iNGNjMTNkYmRiOGVmM2NiZGRiZjY5NWNhNjI2ZDkyZTQxMGE2YzNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3Rp
bmF0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIEF1ZGlv
RGVzdGluYXRpb25Db2NvYTo6c3RhcnQoRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYp
PiYmIGRpc3BhdGNoVAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKE1lZGlh
LCAiQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdGFydCIpOwogICAgIHsKLSAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWRMb2NrKTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZExvY2sgfTsKICAgICAgICAg
bV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkID0gV1RGTW92ZShkaXNwYXRjaFRvUmVuZGVyVGhyZWFk
KTsKICAgICB9CiAgICAgc3RhcnRSZW5kZXJpbmcoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdG9wKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsCiAgICAgTE9HKE1l
ZGlhLCAiQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdG9wIik7CiAgICAgc3RvcFJlbmRlcmluZyhX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZExvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkTG9jayB9OwogICAgICAgICBtX2Rpc3Bh
dGNoVG9SZW5kZXJUaHJlYWQgPSBudWxscHRyOwogICAgIH0KIH0KQEAgLTE1Miw3ICsxNTIsNyBA
QCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5n
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgewotICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1faXNQbGF5aW5nTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBtX2lzUGxheWluZ0xvY2sgfTsKICAgICAgICAgaWYgKG1faXNQbGF5aW5nID09IGlzUGxheWlu
ZykKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlk
ZXJHU3RyZWFtZXIuY3BwCmluZGV4IGE5NjI0NmE0ODg1MDE0MWMzNzUwNDllOWJiOTk0MmUyNjQy
ODRjZTQuLjY5MGMxZGI5NzU5Mjk0ZTRjYjA3NDQ0MDM0MTFiZjlkNTY1ZTJhNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVBy
b3ZpZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAKQEAgLTE4Miw3ICsxODIs
NyBAQCBHc3RGbG93UmV0dXJuIEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmhhbmRsZVNh
bXBsZShHc3RBcHBTaW5rKiBzaW5rLCBib29sCiAKICAgICBHU1RfVFJBQ0UoIlN0b3JpbmcgYXVk
aW8gc2FtcGxlICUiIEdTVF9QVFJfRk9STUFULCBzYW1wbGUuZ2V0KCkpOwogICAgIHsKLSAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2FkYXB0ZXJNdXRleCk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX2FkYXB0ZXJNdXRleCB9OwogICAgICAgICBHUXVhcmsgcXVhcmsgPSBnX3F1
YXJrX2Zyb21fc3RhdGljX3N0cmluZygiY2hhbm5lbC1pZCIpOwogICAgICAgICBpbnQgY2hhbm5l
bElkID0gR1BPSU5URVJfVE9fSU5UKGdfb2JqZWN0X2dldF9xZGF0YShHX09CSkVDVChzaW5rKSwg
cXVhcmspKTsKICAgICAgICAgR1NUX0RFQlVHKCJDaGFubmVsIElEOiAlZCIsIGNoYW5uZWxJZCk7
CkBAIC0zODQsNyArMzg0LDcgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpk
ZWludGVybGVhdmVQYWRzQ29uZmlndXJlZCgpCiAKIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdT
dHJlYW1lcjo6Y2xlYXJBZGFwdGVycygpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2FkYXB0ZXJNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYWRhcHRlck11dGV4IH07CiAg
ICAgZm9yIChhdXRvJiBhZGFwdGVyIDogbV9hZGFwdGVycy52YWx1ZXMoKSkKICAgICAgICAgZ3N0
X2FkYXB0ZXJfY2xlYXIoYWRhcHRlci5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdl
YkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA4Y2ViMThjMTgxYzFjODEzYmNhYzc1ODI0
NTAyYTI5MDk5Zjk3NTgwLi40ZGMzN2IyMmYwMTIwOGFkMWM3MzFlZWZkN2ZlNjQwYWVhMWQ2NjU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2Vi
S2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKQEAg
LTQ4OSw3ICs0ODksNyBAQCBzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gd2ViS2l0V2ViQXVk
aW9TcmNDaGFuZ2VTdGF0ZShHc3RFbGVtZW50KiBlbGVtZW50LCBHcwogCiB2b2lkIHdlYmtpdFdl
YkF1ZGlvU291cmNlU2V0RGlzcGF0Y2hUb1JlbmRlclRocmVhZEZ1bmN0aW9uKFdlYktpdFdlYkF1
ZGlvU3JjKiBzcmMsIEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBmdW5jdGlv
bikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHNyYy0+cHJpdi0+ZGlzcGF0Y2hUb1Jl
bmRlclRocmVhZExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBzcmMtPnByaXYtPmRpc3BhdGNo
VG9SZW5kZXJUaHJlYWRMb2NrIH07CiAgICAgc3JjLT5wcml2LT5kaXNwYXRjaFRvUmVuZGVyVGhy
ZWFkRnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAK
aW5kZXggNzBkNDdhZjZiYmY0NTk4YjAzZjMwMTZmYzVjYTg3NmI3NjRmMTJlZS4uYWU2OGQzNDdj
N2YyZDMxZjQ5M2ZiMjgzYjlkOTJkMzI1NzkzNzg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCkBA
IC0xMzgsNyArMTM4LDcgQEAgdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmNsaWVudFByZWZl
cnJlZEZyYW1lc1BlclNlY29uZENoYW5nZWQoRGlzcGxheVJlZnJlc2gKIAogYm9vbCBEaXNwbGF5
UmVmcmVzaE1vbml0b3I6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKQogewotICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAg
ICAgCiAgICAgaWYgKGlzU2NoZWR1bGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTY2
LDcgKzE2Niw3IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpmaXJlZEFuZFJlYWNoZWRN
YXhVbnNjaGVkdWxlZEZpcmVDb3VudCgpCiB2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlz
cGxheUxpbmtGaXJlZChjb25zdCBEaXNwbGF5VXBkYXRlJiBkaXNwbGF5VXBkYXRlKQogewogICAg
IHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICAgICAgLy8gVGhpcyBtYXkgYmUgb2ZmIHRoZSBt
YWluIHRocmVhZC4KICAgICAgICAgaWYgKCFpc1ByZXZpb3VzRnJhbWVEb25lKCkpCkBAIC0yMTks
NyArMjE5LDcgQEAgdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlEaWRSZWZyZXNo
KGNvbnN0IERpc3BsYXlVcGRhdGUmIGRpc3BsYXlVcGRhdGUKICAgICAgICAgbV9jbGllbnRzVG9C
ZU5vdGlmaWVkID0gbnVsbHB0cjsKIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAg
IHNldElzUHJldmlvdXNGcmFtZURvbmUodHJ1ZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAppbmRleCAzYTNiMjVjMzM5NDI2NThh
ZDk2NTZkNzdkY2Q2MTNiYjMyZWQ3MDIyLi5iODhjMDQ5NWM1NzFhYTdkNWY0YThiZTU1MDBmZjk2
YzU3YTYyZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YWNoZS5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6
OmNhY2hlZEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RAogICAg
IGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MqIGZlYXR1cmVzLCBGb250U2VsZWN0aW9uU3BlY2lm
aWVkQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllcywgYm9vbCBjaGVja2luZ0FsdGVybmF0ZU5hbWUp
CiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fZm9udExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2ZvbnRMb2NrIH07CiAjZW5kaWYK
IAogI2lmIE9TKFdJTkRPV1MpICYmIEVOQUJMRShPUEVOVFlQRV9WRVJUSUNBTCkKQEAgLTI3Niw3
ICsyNzYsNyBAQCBSZWZQdHI8Rm9udD4gRm9udENhY2hlOjpmb250Rm9yRmFtaWx5KGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjbwogUmVmPEZvbnQ+IEZvbnRDYWNoZTo6
Zm9udEZvclBsYXRmb3JtRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEp
CiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fZm9udExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2ZvbnRMb2NrIH07CiAjZW5kaWYK
IAogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9mb250RGF0YUNhY2hlcy0+ZGF0YS5lbnN1cmUocGxh
dGZvcm1EYXRhLCBbJl0gewpAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgRm9udENhY2hlOjpwdXJn
ZUluYWN0aXZlRm9udERhdGEodW5zaWduZWQgcHVyZ2VDb3VudCkKICAgICBwcnVuZVN5c3RlbUZh
bGxiYWNrRm9udHMoKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX2ZvbnRMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9mb250TG9j
ayB9OwogI2VuZGlmCiAKICAgICB3aGlsZSAocHVyZ2VDb3VudCkgewpAQCAtNDQ5LDcgKzQ0OSw3
IEBAIHNpemVfdCBGb250Q2FjaGU6OmZvbnRDb3VudCgpCiBzaXplX3QgRm9udENhY2hlOjppbmFj
dGl2ZUZvbnRDb3VudCgpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fZm9udExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2ZvbnRM
b2NrIH07CiAjZW5kaWYKICAgICB1bnNpZ25lZCBjb3VudCA9IDA7CiAgICAgZm9yIChhdXRvJiBm
b250IDogbV9mb250RGF0YUNhY2hlcy0+ZGF0YS52YWx1ZXMoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCmluZGV4IGY0M2UzMzIwYzk3MDk4
MjQ4OGUyODczYjg1YjNlN2RiZTI2NjM1YWYuLjQ3OTc2ODNiODBiYjQ5MDVhN2E4MTY4ODdhNDM1
NGQxMjk4ZWNkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakMubW0KQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJB
VkZPYmpDOjpkZXN0cm95TWl4SWZOZWVkZWQoKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJU
KG1fdGFwU3RvcmFnZSk7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
dGFwU3RvcmFnZS0+bG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3RhcFN0b3JhZ2Ut
PmxvY2sgfTsKICAgICAgICAgaWYgKG1fYXZQbGF5ZXJJdGVtKQogICAgICAgICAgICAgW21fYXZQ
bGF5ZXJJdGVtIHNldEF1ZGlvTWl4Om5pbF07CiAgICAgICAgIFttX2F2QXVkaW9NaXggc2V0SW5w
dXRQYXJhbWV0ZXJzOkBbIF1dOwpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgQXVkaW9Tb3VyY2VQ
cm92aWRlckFWRk9iakM6OmNyZWF0ZU1peElmTmVlZGVkKCkKICAgICBBU1NFUlQoIW1fdGFwKTsK
IAogICAgIGF1dG8gdGFwU3RvcmFnZSA9IGFkb3B0UmVmKG5ldyBUYXBTdG9yYWdlKHRoaXMpKTsK
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHRhcFN0b3JhZ2UtPmxvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyB0YXBTdG9yYWdlLT5sb2NrIH07CiAKICAgICBNVEF1ZGlvUHJvY2Vzc2luZ1Rh
cENhbGxiYWNrcyBjYWxsYmFja3MgPSB7CiAgICAgICAgIDAsCkBAIC0yNjIsNyArMjYyLDcgQEAg
dm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZUNhbGxiYWNrKE1UQXVkaW9Q
cm9jZXNzaW5nVGFwUmVmIHRhcCwgQ00KICAgICBBU1NFUlQodGFwKTsKICAgICBUYXBTdG9yYWdl
KiB0YXBTdG9yYWdlID0gc3RhdGljX2Nhc3Q8VGFwU3RvcmFnZSo+KE1UQXVkaW9Qcm9jZXNzaW5n
VGFwR2V0U3RvcmFnZSh0YXApKTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGFwU3Rv
cmFnZS0+bG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHRhcFN0b3JhZ2UtPmxvY2sgfTsKIAog
ICAgIGlmICh0YXBTdG9yYWdlLT5fdGhpcykKICAgICAgICAgdGFwU3RvcmFnZS0+X3RoaXMtPnBy
ZXBhcmUobWF4RnJhbWVzLCBwcm9jZXNzaW5nRm9ybWF0KTsKQEAgLTI3Myw3ICsyNzMsNyBAQCB2
b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjp1bnByZXBhcmVDYWxsYmFjayhNVEF1ZGlv
UHJvY2Vzc2luZ1RhcFJlZiB0YXApCiAgICAgQVNTRVJUKHRhcCk7CiAgICAgVGFwU3RvcmFnZSog
dGFwU3RvcmFnZSA9IHN0YXRpY19jYXN0PFRhcFN0b3JhZ2UqPihNVEF1ZGlvUHJvY2Vzc2luZ1Rh
cEdldFN0b3JhZ2UodGFwKSk7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHRhcFN0b3Jh
Z2UtPmxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyB0YXBTdG9yYWdlLT5sb2NrIH07CiAKICAg
ICBpZiAodGFwU3RvcmFnZS0+X3RoaXMpCiAgICAgICAgIHRhcFN0b3JhZ2UtPl90aGlzLT51bnBy
ZXBhcmUoKTsKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDOjpwcm9jZXNzQ2FsbGJhY2soTVRBdWRpb1Byb2Nlc3NpbmdUYXBSZWYgdGFwLCBDTQogICAg
IEFTU0VSVCh0YXApOwogICAgIFRhcFN0b3JhZ2UqIHRhcFN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxU
YXBTdG9yYWdlKj4oTVRBdWRpb1Byb2Nlc3NpbmdUYXBHZXRTdG9yYWdlKHRhcCkpOwogCi0gICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayh0YXBTdG9yYWdlLT5sb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgdGFwU3RvcmFnZS0+bG9jayB9OwogCiAgICAgaWYgKHRhcFN0b3JhZ2UtPl90aGlzKQog
ICAgICAgICB0YXBTdG9yYWdlLT5fdGhpcy0+cHJvY2Vzcyh0YXAsIG51bWJlckZyYW1lcywgZmxh
Z3MsIGJ1ZmZlckxpc3RJbk91dCwgbnVtYmVyRnJhbWVzT3V0LCBmbGFnc091dCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMubW0KaW5kZXggYWU5NDQ4Njg3ZmRkZjFlNDZmNzE2ZDVlYTNjY2NkZjhi
NWY0ZDYzMy4uODEzOTk2Yzc2YzY0MWI3Y2FlMDQ2ZjU5NzFlYzc0N2NmOTFjZTlkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpsYXllcnNBcmVJbml0aWFsaXplZChJbnRTaXpl
IHNpemUsIGJvCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpk
ZXN0cm95TGF5ZXJzKCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTG9jayB9OwogCiAgICAgbV9jYW5FbnF1ZXVlRGlzcGxheUxheWVyID0gZmFs
c2U7CiAgICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQpAQCAtMTA2Miw3ICsxMDYy
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OkN1cnJlbnRG
cmFtZVBhaW50ZXI6OnJlc2V0KCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnJvb3RMYXllckJvdW5kc0RpZENoYW5nZSgpCiB7Ci0gICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckxvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckxvY2sgfTsKICAgICBpZiAobV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIpCiAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LT51cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+cm9v
dExheWVyKCkuYm91bmRzLCBtX3ZpZGVvUm90YXRpb24pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAppbmRleCA2ODA0ZjA2OWI1MTQyMTI4
M2M5ZGQwMGZhOTJjZThmYmM3OTE2YTNkLi5kZGMwZGEwOTNjOGJjZDNiZTQzNzZkMTUxOGVjN2Qx
YTEzZTc3NDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9Db2xvckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9D
b2xvckNHLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihj
b25zdCBDb2xvciYgY29sb3IpCiAgICAgfQogCiAgICAgc3RhdGljIExvY2sgY2FjaGVkQ29sb3JM
b2NrOwotICAgIGF1dG8gaG9sZGVyID0gaG9sZExvY2soY2FjaGVkQ29sb3JMb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgY2FjaGVkQ29sb3JMb2NrIH07CiAKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VGlueUxSVUNhY2hlPENvbG9yLCBSZXRhaW5QdHI8Q0dDb2xvclJlZj4sIDMyPj4gY2Fj
aGU7CiAgICAgcmV0dXJuIGNhY2hlLmdldCgpLmdldChjb2xvcikuZ2V0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDA3YjNkOWZiZTgw
NGM0ZjgwMTAwNTUxYWVmMDEyMzYyYWUyMzgwZWYuLjNlOTA1M2VkZjUxYzdkZmY5Njc5NDUyMzZj
MzI2MTU0ZGY1YzZhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCkBAIC0xMDI5LDcgKzEwMjksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZWaWRlbygpCiB9CiBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6aGFzRmlyc3RWaWRlb1NhbXBsZVJlYWNoZWRTaW5rKCkgY29uc3QKIHsK
LSAgICBhdXRvIHNhbXBsZUxvY2tlciA9IGhvbGRMb2NrKG1fc2FtcGxlTXV0ZXgpOworICAgIExv
Y2tlciBzYW1wbGVMb2NrZXIgeyBtX3NhbXBsZU11dGV4IH07CiAgICAgcmV0dXJuICEhbV9zYW1w
bGU7CiB9CiAKQEAgLTI4OTMsNyArMjg5Myw3IEBAIHByaXZhdGU6CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpwdXNoVGV4dHVyZVRvQ29tcG9zaXRvcigpCiB7Ci0gICAgYXV0
byBzYW1wbGVMb2NrZXIgPSBob2xkTG9jayhtX3NhbXBsZU11dGV4KTsKKyAgICBMb2NrZXIgc2Ft
cGxlTG9ja2VyIHsgbV9zYW1wbGVNdXRleCB9OwogICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3Nh
bXBsZS5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzA3NCw3ICszMDc0LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRyaWdnZXJSZXBhaW50KEdzdFNhbXBsZSog
c2FtcGxlKQogCiAgICAgYm9vbCBzaG91bGRUcmlnZ2VyUmVzaXplOwogICAgIHsKLSAgICAgICAg
YXV0byBzYW1wbGVMb2NrZXIgPSBob2xkTG9jayhtX3NhbXBsZU11dGV4KTsKKyAgICAgICAgTG9j
a2VyIHNhbXBsZUxvY2tlciB7IG1fc2FtcGxlTXV0ZXggfTsKICAgICAgICAgc2hvdWxkVHJpZ2dl
clJlc2l6ZSA9ICFtX3NhbXBsZTsKICAgICAgICAgbV9zYW1wbGUgPSBzYW1wbGU7CiAgICAgfQpA
QCAtMzE2NCw3ICszMTY0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnJl
cGFpbnRDYW5jZWxsZWRDYWxsYmFjayhNZWRpYVBsYXllclByaXZhdGVHU3QKICNpZiBVU0UoR1NU
UkVBTUVSX0dMKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmZsdXNoQ3VycmVu
dEJ1ZmZlcigpCiB7Ci0gICAgYXV0byBzYW1wbGVMb2NrZXIgPSBob2xkTG9jayhtX3NhbXBsZU11
dGV4KTsKKyAgICBMb2NrZXIgc2FtcGxlTG9ja2VyIHsgbV9zYW1wbGVNdXRleCB9OwogCiAgICAg
aWYgKG1fc2FtcGxlKSB7CiAgICAgICAgIC8vIEFsbG9jYXRlIGEgbmV3IGNvcHkgb2YgdGhlIHNh
bXBsZSB3aGljaCBoYXMgdG8gYmUgcmVsZWFzZWQuIFRoZSBjb3B5IGlzIG5lY2Vzc2FyeSBzbyB0
aGF0CkBAIC0zMjA3LDcgKzMyMDcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlYwogICAgIGlm
ICghbV92aXNpYmxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHNhbXBsZUxvY2tlciA9
IGhvbGRMb2NrKG1fc2FtcGxlTXV0ZXgpOworICAgIExvY2tlciBzYW1wbGVMb2NrZXIgeyBtX3Nh
bXBsZU11dGV4IH07CiAgICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlLmdldCgpKSkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0zMjc2LDcgKzMyNzYsNyBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNz
Q29udAogICAgIGlmIChwcmVtdWx0aXBseUFscGhhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBhdXRvIHNhbXBsZUxvY2tlciA9IGhvbGRMb2NrKG1fc2FtcGxlTXV0ZXgpOworICAgIExv
Y2tlciBzYW1wbGVMb2NrZXIgeyBtX3NhbXBsZU11dGV4IH07CiAKICAgICBpZiAoIUdTVF9JU19T
QU1QTEUobV9zYW1wbGUuZ2V0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNTc2LDcg
KzM1NzYsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6d2FpdEZvckNETUF0
dGFjaG1lbnQoKQogCiAgICAgYm9vbCBkaWRDRE1BdHRhY2ggPSBmYWxzZTsKICAgICB7Ci0gICAg
ICAgIGF1dG8gY2RtQXR0YWNobWVudExvY2tlciA9IGhvbGRMb2NrKG1fY2RtQXR0YWNobWVudE11
dGV4KTsKKyAgICAgICAgTG9ja2VyIGNkbUF0dGFjaG1lbnRMb2NrZXIgeyBtX2NkbUF0dGFjaG1l
bnRNdXRleCB9OwogICAgICAgICBkaWRDRE1BdHRhY2ggPSBtX2NkbUF0dGFjaG1lbnRDb25kaXRp
b24ud2FpdEZvcihtX2NkbUF0dGFjaG1lbnRNdXRleCwgNF9zLCBbdGhpc10oKSB7CiAgICAgICAg
ICAgICByZXR1cm4gaXNDRE1BdHRhY2hlZCgpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9u
RW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JH
U3RyZWFtZXIuY3BwCmluZGV4IDY5ZTI3ZjQ4NWE4NWFkZmQ0ZWUxZTI4MTMyYzE4MzcwZDdhMzMx
ZTkuLjE4MGUyNjBmOThlYzA2MDZkYzg0OWM0NGFhMzJiNTk3Njg5YjZhMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29t
bW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVj
cnlwdG9yR1N0cmVhbWVyLmNwcApAQCAtMzEyLDcgKzMxMiw3IEBAIHN0YXRpYyBHc3RGbG93UmV0
dXJuIHRyYW5zZm9ybUluUGxhY2UoR3N0QmFzZVRyYW5zZm9ybSogYmFzZSwgR3N0QnVmZmVyKiBi
dWZmZXIpCiBzdGF0aWMgYm9vbCBpc0NETVByb3h5QXZhaWxhYmxlKFdlYktpdE1lZGlhQ29tbW9u
RW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYpCiB7CiAgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0
aW9uRGVjcnlwdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfTUVESUFfQ0VOQ19ERUNSWVBUX0dFVF9Q
UklWQVRFKHNlbGYpOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socHJpdi0+bXV0ZXgpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBwcml2LT5tdXRleCB9OwogICAgIHJldHVybiBwcml2LT5jZG1Q
cm94eTsKIH0KIApAQCAtMzQ1LDcgKzM0NSw3IEBAIHN0YXRpYyB2b2lkIGF0dGFjaENETVByb3h5
KFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYsIENETVByb3h5KiBwCiAg
ICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFByaXZhdGUqIHByaXYgPSBXRUJL
SVRfTUVESUFfQ0VOQ19ERUNSWVBUX0dFVF9QUklWQVRFKHNlbGYpOwogICAgIFdlYktpdE1lZGlh
Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRDbGFzcyoga2xhc3MgPSBXRUJLSVRfTUVESUFfQ0VOQ19E
RUNSWVBUX0dFVF9DTEFTUyhzZWxmKTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socHJp
di0+bXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBwcml2LT5tdXRleCB9OwogICAgIEdTVF9F
UlJPUl9PQkpFQ1Qoc2VsZiwgIkF0dGFjaGluZyBDRE1Qcm94eSAlcCIsIHByb3h5KTsKICAgICBw
cml2LT5jZG1Qcm94eSA9IHByb3h5OwogICAgIGtsYXNzLT5jZG1Qcm94eUF0dGFjaGVkKHNlbGYs
IHByaXYtPmNkbVByb3h5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlVHJh
Y2tHU3RyZWFtZXIuY3BwCmluZGV4IDg2MmIxNjk1MTk0N2VkNTViZGZhZDMyMzg4NzE5N2JjNmUw
ZmQzNzYuLjQzZmVhNWExMWVjZGY0NjcxNThjY2ZmYjY3Nzk2ZDkxNWExYzE5NjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFT
b3VyY2VUcmFja0dTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyLmNwcApAQCAtNjEs
MjggKzYxLDI4IEBAIFJlZjxNZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyPiBNZWRpYVNvdXJjZVRy
YWNrR1N0cmVhbWVyOjpjcmVhdGUoVHJhY2tQcml2YXRlQmFzCiBib29sIE1lZGlhU291cmNlVHJh
Y2tHU3RyZWFtZXI6OmlzUmVhZHlGb3JNb3JlU2FtcGxlcygpCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICBhdXRvIHF1ZXVlID0gaG9sZExvY2sobV9xdWV1ZURhdGFNdXRleCk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcXVldWVEYXRhTXV0ZXggfTsKICAgICByZXR1cm4gIXF1
ZXVlLT5pc0Z1bGwoKTsKIH0KIAogdm9pZCBNZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyOjpub3Rp
ZnlXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhUcmFja1F1ZXVlOjpMb3dMZXZlbEhhbmRsZXImJiBo
YW5kbGVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBxdWV1ZSA9
IGhvbGRMb2NrKG1fcXVldWVEYXRhTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3F1ZXVl
RGF0YU11dGV4IH07CiAgICAgcXVldWUtPm5vdGlmeVdoZW5Mb3dMZXZlbChXVEZNb3ZlKGhhbmRs
ZXIpKTsKIH0KIAogdm9pZCBNZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyOjplbnF1ZXVlT2JqZWN0
KEdSZWZQdHI8R3N0TWluaU9iamVjdD4mJiBvYmplY3QpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLSAgICBhdXRvIHF1ZXVlID0gaG9sZExvY2sobV9xdWV1ZURhdGFNdXRleCk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fcXVldWVEYXRhTXV0ZXggfTsKICAgICBxdWV1ZS0+ZW5xdWV1
ZU9iamVjdChXVEZNb3ZlKG9iamVjdCkpOwogfQogCiB2b2lkIE1lZGlhU291cmNlVHJhY2tHU3Ry
ZWFtZXI6OmNsZWFyUXVldWUoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
YXV0byBxdWV1ZSA9IGhvbGRMb2NrKG1fcXVldWVEYXRhTXV0ZXgpOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3F1ZXVlRGF0YU11dGV4IH07CiAgICAgcXVldWUtPmNsZWFyKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvV2Vi
S2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXgg
NmQwM2RmOTZhZDQzNzkwZDVhZjNkMmI3MmQ3NzAwZDE2ZmYyYTRmYS4uYWNhMDlkMzVlMTBlM2Ew
ODdjODE0ZDRlNGI3NzE3ODA5MGFiNTQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9X
ZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHAKQEAgLTM0NCw3ICszNDQsNyBAQCBzdGF0aWMg
Z2Jvb2xlYW4gd2ViS2l0TWVkaWFTcmNBY3RpdmF0ZU1vZGUoR3N0UGFkKiBwYWQsIEdzdE9iamVj
dCogc291cmNlLCBHc3RQYQogICAgICAgICAvLyBVbmJsb2NrIHRoZSBzdHJlYW1pbmcgdGhyZWFk
LgogICAgICAgICBSZWZQdHI8U3RyZWFtPiYgc3RyZWFtID0gV0VCS0lUX01FRElBX1NSQ19QQUQo
cGFkKS0+cHJpdi0+c3RyZWFtOwogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIHN0cmVhbWlu
Z01lbWJlcnMgPSBob2xkTG9jayhzdHJlYW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXgpOwor
ICAgICAgICAgICAgTG9ja2VyIHN0cmVhbWluZ01lbWJlcnMgeyBzdHJlYW0tPnN0cmVhbWluZ01l
bWJlcnNEYXRhTXV0ZXggfTsKICAgICAgICAgICAgIHN0cmVhbWluZ01lbWJlcnMtPmlzRmx1c2hp
bmcgPSB0cnVlOwogICAgICAgICAgICAgc3RyZWFtaW5nTWVtYmVycy0+cGFkTGlua2VkT3JGbHVz
aGVkQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwogICAgICAgICAgICAgc3RyZWFtaW5nTWVtYmVycy0+
cXVldWVDaGFuZ2VkT3JGbHVzaGVkQ29uZGl0aW9uLm5vdGlmeU9uZSgpOwpAQCAtMzU0LDcgKzM1
NCw3IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJLaXRNZWRpYVNyY0FjdGl2YXRlTW9kZShHc3RQYWQq
IHBhZCwgR3N0T2JqZWN0KiBzb3VyY2UsIEdzdFBhCiAgICAgICAgIC8vIE90aGVyd2lzZSBhIGRl
YWRsb2NrIHdvdWxkIG9jY3VyIGFzIHRoZSBuZXh0IGZ1bmN0aW9uIHRyaWVzIHRvIGpvaW4gdGhl
IHRocmVhZC4KICAgICAgICAgZ3N0X3BhZF9zdG9wX3Rhc2socGFkKTsKICAgICAgICAgewotICAg
ICAgICAgICAgYXV0byBzdHJlYW1pbmdNZW1iZXJzID0gaG9sZExvY2soc3RyZWFtLT5zdHJlYW1p
bmdNZW1iZXJzRGF0YU11dGV4KTsKKyAgICAgICAgICAgIExvY2tlciBzdHJlYW1pbmdNZW1iZXJz
IHsgc3RyZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4IH07CiAgICAgICAgICAgICBzdHJl
YW1pbmdNZW1iZXJzLT5pc0ZsdXNoaW5nID0gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0z
NjQsNyArMzY0LDcgQEAgc3RhdGljIGdib29sZWFuIHdlYktpdE1lZGlhU3JjQWN0aXZhdGVNb2Rl
KEdzdFBhZCogcGFkLCBHc3RPYmplY3QqIHNvdXJjZSwgR3N0UGEKIHN0YXRpYyB2b2lkIHdlYktp
dE1lZGlhU3JjUGFkTGlua2VkKEdzdFBhZCogcGFkLCBHc3RQYWQqLCB2b2lkKikKIHsKICAgICBS
ZWZQdHI8U3RyZWFtPiYgc3RyZWFtID0gV0VCS0lUX01FRElBX1NSQ19QQUQocGFkKS0+cHJpdi0+
c3RyZWFtOwotICAgIGF1dG8gc3RyZWFtaW5nTWVtYmVycyA9IGhvbGRMb2NrKHN0cmVhbS0+c3Ry
ZWFtaW5nTWVtYmVyc0RhdGFNdXRleCk7CisgICAgTG9ja2VyIHN0cmVhbWluZ01lbWJlcnMgeyBz
dHJlYW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXggfTsKICAgICBzdHJlYW1pbmdNZW1iZXJz
LT5wYWRMaW5rZWRPckZsdXNoZWRDb25kaXRpb24ubm90aWZ5T25lKCk7CiB9CiAKQEAgLTM3NCw3
ICszNzQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY0xvb3Aodm9pZCogdXNlckRhdGEp
CiAgICAgR3N0UGFkKiBwYWQgPSBHU1RfUEFEKHVzZXJEYXRhKTsKICAgICBSZWZQdHI8U3RyZWFt
PiYgc3RyZWFtID0gV0VCS0lUX01FRElBX1NSQ19QQUQocGFkKS0+cHJpdi0+c3RyZWFtOwogCi0g
ICAgYXV0byBzdHJlYW1pbmdNZW1iZXJzID0gaG9sZExvY2soc3RyZWFtLT5zdHJlYW1pbmdNZW1i
ZXJzRGF0YU11dGV4KTsKKyAgICBMb2NrZXIgc3RyZWFtaW5nTWVtYmVycyB7IHN0cmVhbS0+c3Ry
ZWFtaW5nTWVtYmVyc0RhdGFNdXRleCB9OwogICAgIGlmIChzdHJlYW1pbmdNZW1iZXJzLT5pc0Zs
dXNoaW5nKSB7CiAgICAgICAgIGdzdF9wYWRfcGF1c2VfdGFzayhwYWQpOwogICAgICAgICByZXR1
cm47CkBAIC00NDAsNyArNDQwLDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFTcmNMb29wKHZv
aWQqIHVzZXJEYXRhKQogCiAgICAgR1JlZlB0cjxHc3RNaW5pT2JqZWN0PiBvYmplY3Q7CiAgICAg
ewotICAgICAgICBhdXRvIHF1ZXVlID0gaG9sZExvY2soc3RyZWFtLT50cmFjay0+cXVldWVEYXRh
TXV0ZXgoKSk7CisgICAgICAgIExvY2tlciBxdWV1ZSB7IHN0cmVhbS0+dHJhY2stPnF1ZXVlRGF0
YU11dGV4KCkgfTsKICAgICAgICAgaWYgKCFxdWV1ZS0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICBvYmplY3QgPSBxdWV1ZS0+cG9wKCk7CiAgICAgICAgICAgICBzdHJlYW1pbmdNZW1iZXJzLT5o
YXNQb3BwZWRGaXJzdE9iamVjdCA9IHRydWU7CkBAIC00NDgsNyArNDQ4LDcgQEAgc3RhdGljIHZv
aWQgd2ViS2l0TWVkaWFTcmNMb29wKHZvaWQqIHVzZXJEYXRhKQogICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgcXVldWUtPm5vdGlmeVdoZW5Ob3RFbXB0eShbJm9iamVjdCwgc3RyZWFtXShH
UmVmUHRyPEdzdE1pbmlPYmplY3Q+JiYgcmVjZWl2ZWRPYmplY3QpIHsKICAgICAgICAgICAgICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICAgICAgICAgIGF1dG8gc3RyZWFtaW5n
TWVtYmVycyA9IGhvbGRMb2NrKHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCk7Cisg
ICAgICAgICAgICAgICAgTG9ja2VyIHN0cmVhbWluZ01lbWJlcnMgeyBzdHJlYW0tPnN0cmVhbWlu
Z01lbWJlcnNEYXRhTXV0ZXggfTsKICAgICAgICAgICAgICAgICBBU1NFUlQoIXN0cmVhbWluZ01l
bWJlcnMtPmlzRmx1c2hpbmcpOwogCiAgICAgICAgICAgICAgICAgb2JqZWN0ID0gV1RGTW92ZShy
ZWNlaXZlZE9iamVjdCk7CkBAIC00NjUsNyArNDY1LDcgQEAgc3RhdGljIHZvaWQgd2ViS2l0TWVk
aWFTcmNMb29wKHZvaWQqIHVzZXJEYXRhKQogICAgIH0pOwogICAgIHsKICAgICAgICAgLy8gRW5z
dXJlIHRoYXQgbm90aWZ5V2hlbk5vdEVtcHR5KCkncyBjYWxsYmFjayAoaWYgYW55KSBpcyBjbGVh
cmVkIGFmdGVyIHRoaXMgcG9pbnQuCi0gICAgICAgIGF1dG8gcXVldWUgPSBob2xkTG9jayhzdHJl
YW0tPnRyYWNrLT5xdWV1ZURhdGFNdXRleCgpKTsKKyAgICAgICAgTG9ja2VyIHF1ZXVlIHsgc3Ry
ZWFtLT50cmFjay0+cXVldWVEYXRhTXV0ZXgoKSB9OwogICAgICAgICBxdWV1ZS0+cmVzZXROb3RF
bXB0eUhhbmRsZXIoKTsKICAgICB9CiAgICAgaWYgKHN0cmVhbWluZ01lbWJlcnMtPmlzRmx1c2hp
bmcpIHsKQEAgLTU0MCwxMSArNTQwLDExIEBAIHN0YXRpYyB2b2lkIHdlYktpdE1lZGlhU3JjU3Ry
ZWFtRmx1c2goU3RyZWFtKiBzdHJlYW0sIGJvb2wgaXNTZWVraW5nRmx1c2gpCiAgICAgYm9vbCBz
a2lwRmx1c2ggPSBmYWxzZTsKIAogICAgIHsKLSAgICAgICAgYXV0byBzdHJlYW1pbmdNZW1iZXJz
ID0gaG9sZExvY2soc3RyZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4KTsKKyAgICAgICAg
TG9ja2VyIHN0cmVhbWluZ01lbWJlcnMgeyBzdHJlYW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0
ZXggfTsKIAogICAgICAgICBpZiAoIXN0cmVhbWluZ01lbWJlcnMtPmhhc1BvcHBlZEZpcnN0T2Jq
ZWN0KSB7CiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUKHN0cmVhbS0+c291cmNlLCAiRmx1
c2ggcmVxdWVzdCBmb3Igc3RyZWFtICclcycgb2NjdXJyZWQgYmVmb3JlIGhhc1BvcHBlZEZpcnN0
T2JqZWN0LCBqdXN0IGNsZWFyaW5nIHRoZSBxdWV1ZSBhbmQgcmVhZGp1c3RpbmcgdGhlIHNlZ21l
bnQuIiwgc3RyZWFtLT50cmFjay0+dHJhY2tJZCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwot
ICAgICAgICAgICAgYXV0byBxdWV1ZSA9IGhvbGRMb2NrKHN0cmVhbS0+dHJhY2stPnF1ZXVlRGF0
YU11dGV4KCkpOworICAgICAgICAgICAgTG9ja2VyIHF1ZXVlIHsgc3RyZWFtLT50cmFjay0+cXVl
dWVEYXRhTXV0ZXgoKSB9OwogICAgICAgICAgICAgLy8gV2UgdXNlIGNsZWFyKCkgaW5zdGVhZCBv
ZiBmbHVzaCgpIGJlY2F1c2UgdGhlIFdlYktpdE1lZGlhU3JjIHN0cmVhbWluZyB0aHJlYWQgY291
bGQgYmUgd2FpdGluZwogICAgICAgICAgICAgLy8gZm9yIHRoZSBxdWV1ZS4gZmx1c2goKSB3b3Vs
ZCBjYW5jZWwgdGhlIG5vdEVtcHR5Q2FsbGJhY2sgdGhlcmVmb3JlIGxlYXZpbmcgdGhlIHN0cmVh
bWluZyB0aHJlYWQKICAgICAgICAgICAgIC8vIHN0dWNrIHdhaXRpbmcgZm9yZXZlci4KQEAgLTU1
OCw4ICs1NTgsOCBAQCBzdGF0aWMgdm9pZCB3ZWJLaXRNZWRpYVNyY1N0cmVhbUZsdXNoKFN0cmVh
bSogc3RyZWFtLCBib29sIGlzU2Vla2luZ0ZsdXNoKQogICAgICAgICAvLyB3aGljaCB3aWxsIGtl
ZXBpbmcgdGhlIHN0cmVhbWluZyB0aHJlYWQgaWRsZS4KICAgICAgICAgR1NUX0RFQlVHX09CSkVD
VChzdHJlYW0tPnBhZC5nZXQoKSwgIlRha2luZyB0aGUgU3RyZWFtaW5nTWVtYmVycyBtdXRleCBh
bmQgc2V0dGluZyBpc0ZsdXNoaW5nID0gdHJ1ZS4iKTsKICAgICAgICAgewotICAgICAgICAgICAg
YXV0byBzdHJlYW1pbmdNZW1iZXJzID0gaG9sZExvY2soc3RyZWFtLT5zdHJlYW1pbmdNZW1iZXJz
RGF0YU11dGV4KTsKLSAgICAgICAgICAgIGF1dG8gcXVldWUgPSBob2xkTG9jayhzdHJlYW0tPnRy
YWNrLT5xdWV1ZURhdGFNdXRleCgpKTsKKyAgICAgICAgICAgIExvY2tlciBzdHJlYW1pbmdNZW1i
ZXJzIHsgc3RyZWFtLT5zdHJlYW1pbmdNZW1iZXJzRGF0YU11dGV4IH07CisgICAgICAgICAgICBM
b2NrZXIgcXVldWUgeyBzdHJlYW0tPnRyYWNrLT5xdWV1ZURhdGFNdXRleCgpIH07CiAKICAgICAg
ICAgICAgIHN0cmVhbWluZ01lbWJlcnMtPmlzRmx1c2hpbmcgPSB0cnVlOwogICAgICAgICAgICAg
cXVldWUtPmZsdXNoKCk7IC8vIENsZWFyIHRoZSBxdWV1ZSBhbmQgY2FuY2VsIGFueSB3YWl0aW5n
IGNhbGxiYWNrLgpAQCAtNTgxLDcgKzU4MSw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdE1lZGlhU3Jj
U3RyZWFtRmx1c2goU3RyZWFtKiBzdHJlYW0sIGJvb2wgaXNTZWVraW5nRmx1c2gpCiAgICAgICAg
IC8vIEluIHRoZSBjYXNlIG9mIHNlZWtpbmcgZmx1c2ggd2UgYXJlIHJlc2V0dGluZyB0aGUgdGlt
ZWxpbmUgKHNlZSB0aGUgZmx1c2ggc3RvcCBsYXRlcikuCiAgICAgICAgIC8vIFRoZSByZXN1bHRp
bmcgc2VnbWVudCBpcyBicmFuZCBuZXcsIGJ1dCB3aXRoIGEgZGlmZmVyZW50IHN0YXJ0IHRpbWUu
CiAgICAgICAgIFdlYktpdE1lZGlhU3JjUHJpdmF0ZSogcHJpdiA9IHN0cmVhbS0+c291cmNlLT5w
cml2OwotICAgICAgICBhdXRvIHN0cmVhbWluZ01lbWJlcnMgPSBob2xkTG9jayhzdHJlYW0tPnN0
cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXgpOworICAgICAgICBMb2NrZXIgc3RyZWFtaW5nTWVtYmVy
cyB7IHN0cmVhbS0+c3RyZWFtaW5nTWVtYmVyc0RhdGFNdXRleCB9OwogICAgICAgICBzdHJlYW1p
bmdNZW1iZXJzLT5zZWdtZW50LmJhc2UgPSAwOwogICAgICAgICBzdHJlYW1pbmdNZW1iZXJzLT5z
ZWdtZW50LnJhdGUgPSBwcml2LT5yYXRlOwogICAgICAgICBzdHJlYW1pbmdNZW1iZXJzLT5zZWdt
ZW50LnN0YXJ0ID0gc3RyZWFtaW5nTWVtYmVycy0+c2VnbWVudC50aW1lID0gcHJpdi0+c3RhcnRU
aW1lOwpAQCAtNTk1LDcgKzU5NSw3IEBAIHN0YXRpYyB2b2lkIHdlYktpdE1lZGlhU3JjU3RyZWFt
Rmx1c2goU3RyZWFtKiBzdHJlYW0sIGJvb2wgaXNTZWVraW5nRmx1c2gpCiAgICAgICAgIC8vIEdT
VF9DTE9DS19USU1FX05PTkUgaXMgcmV0dXJuZWQgd2hlbiB0aGUgcGlwZWxpbmUgaXMgbm90IHll
dCBwcmUtcm9sbGVkIChlLmcuIGp1c3QgYWZ0ZXIgYSBzZWVrKS4gSW4gdGhpcyBjYXNlCiAgICAg
ICAgIC8vIHdlIGRvbid0IG5lZWQgdG8gYWRqdXN0IHRoZSBzZWdtZW50IHRob3VnaCwgYXMgcnVu
bmluZyB0aW1lIGhhcyBub3QgYWR2YW5jZWQuCiAgICAgICAgIGlmIChHU1RfQ0xPQ0tfVElNRV9J
U19WQUxJRChwaXBlbGluZVN0cmVhbVRpbWUpKSB7Ci0gICAgICAgICAgICBhdXRvIHN0cmVhbWlu
Z01lbWJlcnMgPSBob2xkTG9jayhzdHJlYW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXgpOwor
ICAgICAgICAgICAgTG9ja2VyIHN0cmVhbWluZ01lbWJlcnMgeyBzdHJlYW0tPnN0cmVhbWluZ01l
bWJlcnNEYXRhTXV0ZXggfTsKICAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gaW5jcmVhc2UgdGhl
IGJhc2UgYnkgdGhlIHJ1bm5pbmcgdGltZSBhY2N1bXVsYXRlZCBkdXJpbmcgdGhlIHByZXZpb3Vz
IHNlZ21lbnQuCiAKICAgICAgICAgICAgIEdzdENsb2NrVGltZSBwaXBlbGluZVJ1bm5pbmdUaW1l
ID0gZ3N0X3NlZ21lbnRfdG9fcnVubmluZ190aW1lKCZzdHJlYW1pbmdNZW1iZXJzLT5zZWdtZW50
LCBHU1RfRk9STUFUX1RJTUUsIHBpcGVsaW5lU3RyZWFtVGltZSk7CkBAIC02MTQsNyArNjE0LDcg
QEAgc3RhdGljIHZvaWQgd2ViS2l0TWVkaWFTcmNTdHJlYW1GbHVzaChTdHJlYW0qIHN0cmVhbSwg
Ym9vbCBpc1NlZWtpbmdGbHVzaCkKICAgICAgICAgR1NUX1BBRF9TVFJFQU1fTE9DSyhzdHJlYW0t
PnBhZC5nZXQoKSk7CiAgICAgICAgIHsKICAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3Ry
ZWFtLT5wYWQuZ2V0KCksICJUYWtpbmcgdGhlIFN0cmVhbWluZ01lbWJlcnMgbXV0ZXggYWdhaW4u
Iik7Ci0gICAgICAgICAgICBhdXRvIHN0cmVhbWluZ01lbWJlcnMgPSBob2xkTG9jayhzdHJlYW0t
PnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXgpOworICAgICAgICAgICAgTG9ja2VyIHN0cmVhbWlu
Z01lbWJlcnMgeyBzdHJlYW0tPnN0cmVhbWluZ01lbWJlcnNEYXRhTXV0ZXggfTsKICAgICAgICAg
ICAgIEdTVF9ERUJVR19PQkpFQ1Qoc3RyZWFtLT5wYWQuZ2V0KCksICJTdHJlYW1pbmdNZW1iZXJz
IG11dGV4IHRha2VuLCB1c2luZyBpdCB0byBzZXQgaXNGbHVzaGluZyA9IGZhbHNlLiIpOwogICAg
ICAgICAgICAgc3RyZWFtaW5nTWVtYmVycy0+aXNGbHVzaGluZyA9IGZhbHNlOwogICAgICAgICAg
ICAgc3RyZWFtaW5nTWVtYmVycy0+ZG9lc05lZWRTZWdtZW50RXZlbnQgPSB0cnVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCmluZGV4IDU3
N2IwMDc2MTNjMzMxMTQwM2Q5YTQ3MDQ0NzQ3MTAzOGVjNzY0NTMuLjY1YmNhNjcwZjkyODZkMjVh
MTk1MTkyMWI4NWYwYTA1YTAxNTJkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KQEAgLTE0NCw3ICsxNDQsNyBAQCBOU0NvbG9yICpu
c0NvbG9yKGNvbnN0IENvbG9yJiBjb2xvcikKICAgICB9CiAKICAgICBzdGF0aWMgTG9jayBjYWNo
ZWRDb2xvckxvY2s7Ci0gICAgYXV0byBob2xkZXIgPSBob2xkTG9jayhjYWNoZWRDb2xvckxvY2sp
OworICAgIExvY2tlciBsb2NrZXIgeyBjYWNoZWRDb2xvckxvY2sgfTsKIAogICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxUaW55TFJVQ2FjaGU8Q29sb3IsIFJldGFpblB0cjxOU0NvbG9yPiwgMzI+
PiBjYWNoZTsKICAgICByZXR1cm4gY2FjaGUuZ2V0KCkuZ2V0KGNvbG9yKS5nZXQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUlt
YWdlQnVmZmVyUGlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCmluZGV4IDlmMTEyNGZlYTcwNzY2ZTZlMWM2
NGJkYjVjN2M2M2IwYWU5YTQ1OTQuLmUzNmQzNmIxZWYwNjhiMDUzNGUzYWE2ZTFlNzUwYzg5NTEy
NzgwOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcApAQCAtODksNyAr
ODksNyBAQCB2b2lkIE5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShSZWZQdHI8
SW1hZ2VCdWZmZXI+JiYgYnVmZmVyKQogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47
CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1faW1hZ2VCdWZmZXJMb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9pbWFnZUJ1ZmZlckxvY2sgfTsKIAogICAgIGlmICghbV9pbWFnZUJ1
ZmZlcikgewogICAgICAgICBhdXRvIHByb3h5T3BlcmF0aW9uID0gW3RoaXNdIChUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5JiBwcm94eSkgbXV0YWJsZSB7CkBAIC0xMDMsNyArMTAzLDcg
QEAgdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUoUmVmUHRyPEltYWdl
QnVmZmVyPiYmIGJ1ZmZlcikKICAgICAgICAgICAgICAgICBhdXRvIHRleHR1cmUgPSBCaXRtYXBU
ZXh0dXJlR0w6OmNyZWF0ZShUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM6OmdldCgpKTsK
IAogICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX2ltYWdlQnVmZmVyTG9jayk7CisgICAgICAgICAgICAgICAgICAgIExvY2tlciBs
b2NrZXIgeyBtX2ltYWdlQnVmZmVyTG9jayB9OwogCiAgICAgICAgICAgICAgICAgICAgIGlmICgh
bV9pbWFnZUJ1ZmZlcikKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQppbmRleCAxMDU0
YzY0Y2FmMTIxZDg4NjY2NDZiMDZiYWY0ODcyMDNmY2JjMzIxLi4xOWZmZGVlYjUxZDZmODcxZWQ3
YTZjZTljNTVjZDk0NGQ2YjI0MTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCkBAIC0yMTcsNyArMjE3LDcgQEAgc3RhdGljIHZvaWQg
SGFuZGxlRGVsZWdhdGVTb3VyY2Uodm9pZCopCiAgICAgX1dlYlRocmVhZEF1dG9Mb2NrKCk7CiAK
ICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soZGVsZWdhdGVMb2NrKTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IGRlbGVnYXRlTG9jayB9OwogCiAjaWYgTE9HX01FU1NBR0VT
CiAgICAgICAgIGlmIChbW2RlbGVnYXRlSW52b2NhdGlvbigpIHRhcmdldF0gaXNLaW5kT2ZDbGFz
czpbTlNOb3RpZmljYXRpb25DZW50ZXIgY2xhc3NdXSkgewpAQCAtMzIyLDcgKzMyMiw3IEBAIHZv
aWQgV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNlKGlkIG9iaikKICAgICBOU0xvZyhAIlJlbGVhc2Ug
c2VuZCBbbWFpbiB0aHJlYWRdOiAlQCIsIG9iaik7CiAjZW5kaWYgICAgICAgIAogCi0gICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayh3ZWJUaHJlYWRSZWxlYXNlTG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IHdlYlRocmVhZFJlbGVhc2VMb2NrIH07CiAKICAgICBpZiAod2ViVGhyZWFkUmVsZWFz
ZU9iakFycmF5KCkgPT0gbmlsKQogICAgICAgICB3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKSA9
IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yU3lzdGVtRGVmYXVsdCwg
MCwgbnVsbHB0cikpOwpAQCAtMzkxLDcgKzM5MSw3IEBAIHZvaWQgV2ViQ29yZU9iakNEZWFsbG9j
T25XZWJUaHJlYWRJbXBsKGlkIHNlbGYsIFNFTCkKICAgICB9CiAKICAgICB7Ci0gICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sod2ViQ29yZVJlbGVhc2VMb2NrKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IHdlYkNvcmVSZWxlYXNlTG9jayB9OwogICAgICAgICBpZiAoW3NlbGYgcmV0YWlu
Q291bnRdICE9IDEpIHsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgbm90IHRoZSBvbmx5IHJlZmVy
ZW5jZSByZXRhaW5pbmcgdGhlIG9iamVjdCwgc28gYW5vdGhlcgogICAgICAgICAgICAgLy8gdGhy
ZWFkIGNvdWxkIGFsc28gY2FsbCByZWxlYXNlIC0gaG9sZCB0aGUgbG9jayB3aGlsc3QgY2FsbGlu
ZwpAQCAtNDEwLDcgKzQxMCw3IEBAIHZvaWQgV2ViQ29yZU9iakNEZWFsbG9jT25XZWJUaHJlYWRJ
bXBsKGlkIHNlbGYsIFNFTCkKIAogdm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NXaXRoV2ViVGhyZWFk
TG9ja0ltcGwoaWQgc2VsZiwgU0VMKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod2Vi
Q29yZVJlbGVhc2VMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgd2ViQ29yZVJlbGVhc2VMb2Nr
IH07CiAgICAgaWYgKFdlYlRocmVhZElzTG9ja2VkT3JEaXNhYmxlZCgpIHx8IDEgIT0gW3NlbGYg
cmV0YWluQ291bnRdKQogICAgICAgICBbc2VsZiBfd2ViY29yZV9yZWxlYXNlV2l0aFdlYlRocmVh
ZExvY2tdOwogICAgIGVsc2UKQEAgLTQyMyw3ICs0MjMsNyBAQCBzdGF0aWMgdm9pZCBIYW5kbGVX
ZWJUaHJlYWRSZWxlYXNlU291cmNlKHZvaWQqKQogCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZUFy
cmF5UmVmPiBvYmplY3RzOwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3
ZWJUaHJlYWRSZWxlYXNlTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyB3ZWJUaHJlYWRS
ZWxlYXNlTG9jayB9OwogICAgICAgICBpZiAoQ0ZBcnJheUdldENvdW50KHdlYlRocmVhZFJlbGVh
c2VPYmpBcnJheSgpLmdldCgpKSkgewogICAgICAgICAgICAgb2JqZWN0cyA9IGFkb3B0Q0YoQ0ZB
cnJheUNyZWF0ZU11dGFibGVDb3B5KG51bGxwdHIsIDAsIHdlYlRocmVhZFJlbGVhc2VPYmpBcnJh
eSgpLmdldCgpKSk7CiAgICAgICAgICAgICBDRkFycmF5UmVtb3ZlQWxsVmFsdWVzKHdlYlRocmVh
ZFJlbGVhc2VPYmpBcnJheSgpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRSdW4uY3BwCmluZGV4IGNhOThhOGZjYjQ5NzYyNTFh
MmNjMTliZGNmMjcxZjdmNjQ5NmUzMTcuLjhmODFkN2MxYWNhNDY5NTU1MWZjNDQwYjQ3ZTkwNjFk
NGIzNWRmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2Vi
Q29yZVRocmVhZFJ1bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9X
ZWJDb3JlVGhyZWFkUnVuLmNwcApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lk
IHNldENvbXBsZXRlZCgpCiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
c3RhdGVNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3N0YXRlTXV0ZXggfTsKIAog
ICAgICAgICBBU1NFUlQoIW1fY29tcGxldGVkKTsKICAgICAgICAgbV9jb21wbGV0ZWQgPSB0cnVl
OwpAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyB2b2lkIEhhbmRsZVJ1blNvdXJjZSh2b2lkICpp
bmZvKQogCiAgICAgV2ViVGhyZWFkUnVuUXVldWUgcXVldWVDb3B5OwogICAgIHsKLSAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhydW5RdWV1ZU11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IHJ1blF1ZXVlTXV0ZXggfTsKICAgICAgICAgcXVldWVDb3B5ID0gKnJ1blF1ZXVlOwog
ICAgICAgICBydW5RdWV1ZS0+Y2xlYXIoKTsKICAgICB9CkBAIC0xNTMsNyArMTUzLDcgQEAgc3Rh
dGljIHZvaWQgX1dlYlRocmVhZFJ1bih2b2lkICheYmxvY2spKHZvaWQpLCBib29sIHN5bmNocm9u
b3VzKQogICAgICAgICBzdGF0ZSA9IG5ldyBXZWJUaHJlYWRCbG9ja1N0YXRlOwogCiAgICAgewot
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHJ1blF1ZXVlTXV0ZXgpOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgcnVuUXVldWVNdXRleCB9OwogICAgICAgICBydW5RdWV1ZS0+YXBwZW5k
KFdlYlRocmVhZEJsb2NrKGJsb2NrLCBzdGF0ZSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0KaW5kZXggYjg1MDZhYjc2ZTMyNDhj
NTU5ZGU1OWJlYmQ4YWJjMWFiZjY2NWRhNS4uYTFiZmMyMWI1OWU0MGY4Y2JiMWZiMzk2MWVlYzM4
MGExOWViMzMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1Ymxp
Y1N1ZmZpeE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3Vm
Zml4TWFjLm1tCkBAIC01MSw3ICs1MSw3IEBAIFN0cmluZyB0b3BQcml2YXRlbHlDb250cm9sbGVk
RG9tYWluKGNvbnN0IFN0cmluZyYgZG9tYWluKQogICAgICAgICByZXR1cm4gZG9tYWluOwogCiAg
ICAgc3RhdGljIExvY2sgY2FjaGVMb2NrOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2Fj
aGVMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgY2FjaGVMb2NrIH07CiAKICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8SGFzaE1hcDxTdHJpbmcsIFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRp
dmVIYXNoPj4gY2FjaGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcAppbmRl
eCA1OTk2NzRhOTJhZDI2Y2JmOGM3NzRiNzg1YjViNGQyZjVjNmZjZmY2Li43YTBlYmUzOGYyYTIw
OTIzMTc5ODVmODQxODc5Y2FhYTg5NzJlNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0
ZU1vY2suY3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2Nr
OjpyZXN1bWVSZWNvcmRpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsCiAKIHZv
aWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNh
bXBsZSYpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2J1ZmZlckxvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBtX2J1ZmZlckxvY2sgfTsKICAgICBtX2J1ZmZlci5hcHBlbmQoIlZp
ZGVvIFRyYWNrIElEOiAiKTsKICAgICBtX2J1ZmZlci5hcHBlbmQobV92aWRlb1RyYWNrSUQpOwog
ICAgIGdlbmVyYXRlTW9ja0NvdW50ZXJTdHJpbmcoKTsKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBN
ZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBXVEY6
Ok1lZGlhVGltZSYsIGNvbnMKICAgICAvLyBIZWFwIGFsbG9jYXRpb25zIGFyZSBmb3JiaWRkZW4g
b24gdGhlIGF1ZGlvIHRocmVhZCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyBzbyB3ZSBuZWVkIHRv
CiAgICAgLy8gZXhwbGljaXRseSBhbGxvdyB0aGUgZm9sbG93aW5nIGFsbG9jYXRpb24ocykuCiAg
ICAgRGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uc0ZvckN1cnJlbnRUaHJlYWRTY29wZSBkaXNhYmxl
TWFsbG9jUmVzdHJpY3Rpb25zOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9idWZmZXJM
b2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9idWZmZXJMb2NrIH07CiAgICAgbV9idWZmZXIu
YXBwZW5kKCJBdWRpbyBUcmFjayBJRDogIik7CiAgICAgbV9idWZmZXIuYXBwZW5kKG1fYXVkaW9U
cmFja0lEKTsKICAgICBnZW5lcmF0ZU1vY2tDb3VudGVyU3RyaW5nKCk7CkBAIC05NSw3ICs5NSw3
IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpmZXRjaERhdGEoRmV0Y2hEYXRhQ2Fs
bGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXI7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYnVmZmVyTG9j
ayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2J1ZmZlckxvY2sgfTsKICAgICAgICAgVmVj
dG9yPHVpbnQ4X3Q+IHZhbHVlKG1fYnVmZmVyLmxlbmd0aCgpKTsKICAgICAgICAgbWVtY3B5KHZh
bHVlLmRhdGEoKSwgbV9idWZmZXIuY2hhcmFjdGVyczgoKSwgbV9idWZmZXIubGVuZ3RoKCkpOwog
ICAgICAgICBtX2J1ZmZlci5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCmluZGV4IDRkNWYwY2VjYmQ3MWQ5NTU5MmFjNjVk
NWI2MGFlN2YyNjNjY2ZkN2QuLjkyM2EzNjBkNTNlNGY1NTQ0ZTViMGJmYjhkZmZiZDU1OTVkNWEw
MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29j
b2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVy
Q29jb2EubW0KQEAgLTU0Myw3ICs1NDMsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjpjb21wbGV0ZUZldGNoRGF0YSgpCiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0
ZXI6OmFwcGVuZERhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX2RhdGFMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9k
YXRhTG9jayB9OwogICAgIGlmICghbV9kYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKGRhdGEsIHNpemUpOwogICAgICAgICByZXR1cm47CkBAIC01NTMsNyArNTUz
LDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShjb25zdCBj
aGFyKiBkYXRhLCBzaXplX3Qgc2l6ZSkKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNv
cmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fZGF0YUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07CiAgICAg
YXV0byBkYXRhID0gV1RGTW92ZShtX2RhdGEpOwogICAgIHJldHVybiBkYXRhOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlLmNwcAppbmRleCAyNzhkMTk2NzhkYjNlYTM0NGQ1NzczMTVmZGYwMDMwYzEwZTkw
Y2EwLi5jOWJjMDc3MTM4YTgwYjU4YmNjNDk3ZTBjNDFhMTVlZWNiNzYxNGYxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1l
ZGlhU291cmNlLmNwcApAQCAtNjMsMjggKzYzLDI4IEBAIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlJl
YWx0aW1lTWVkaWFTb3VyY2UoVHlwZSB0eXBlLCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBkZXZp
CiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFkZEF1ZGlvU2FtcGxlT2JzZXJ2ZXIoQXVkaW9T
YW1wbGVPYnNlcnZlciYgb2JzZXJ2ZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYXVkaW9TYW1wbGVPYnNlcnZlcnNMb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9hdWRpb1NhbXBsZU9ic2VydmVyc0xvY2sgfTsKICAgICBt
X2F1ZGlvU2FtcGxlT2JzZXJ2ZXJzLmFkZCgmb2JzZXJ2ZXIpOwogfQogCiB2b2lkIFJlYWx0aW1l
TWVkaWFTb3VyY2U6OnJlbW92ZUF1ZGlvU2FtcGxlT2JzZXJ2ZXIoQXVkaW9TYW1wbGVPYnNlcnZl
ciYgb2JzZXJ2ZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fYXVkaW9TYW1wbGVPYnNlcnZlcnNMb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9hdWRpb1NhbXBsZU9ic2VydmVyc0xvY2sgfTsKICAgICBtX2F1ZGlvU2FtcGxl
T2JzZXJ2ZXJzLnJlbW92ZSgmb2JzZXJ2ZXIpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3Vy
Y2U6OmFkZFZpZGVvU2FtcGxlT2JzZXJ2ZXIoVmlkZW9TYW1wbGVPYnNlcnZlciYgb2JzZXJ2ZXIp
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fdmlkZW9TYW1wbGVPYnNlcnZlcnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV92
aWRlb1NhbXBsZU9ic2VydmVyc0xvY2sgfTsKICAgICBtX3ZpZGVvU2FtcGxlT2JzZXJ2ZXJzLmFk
ZCgmb2JzZXJ2ZXIpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92ZVZpZGVv
U2FtcGxlT2JzZXJ2ZXIoVmlkZW9TYW1wbGVPYnNlcnZlciYgb2JzZXJ2ZXIpCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdmlkZW9T
YW1wbGVPYnNlcnZlcnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV92aWRlb1NhbXBsZU9i
c2VydmVyc0xvY2sgfTsKICAgICBtX3ZpZGVvU2FtcGxlT2JzZXJ2ZXJzLnJlbW92ZSgmb2JzZXJ2
ZXIpOwogfQogCkBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjp2
aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpCiAKICAgICB1cGRh
dGVIYXNTdGFydGVkUHJvZHVjaW5nRGF0YSgpOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX3ZpZGVvU2FtcGxlT2JzZXJ2ZXJzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdmlk
ZW9TYW1wbGVPYnNlcnZlcnNMb2NrIH07CiAgICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG1fdmlk
ZW9TYW1wbGVPYnNlcnZlcnMpCiAgICAgICAgIG9ic2VydmVyLT52aWRlb1NhbXBsZUF2YWlsYWJs
ZShtZWRpYVNhbXBsZSk7CiB9CkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBSZWFsdGltZU1lZGlh
U291cmNlOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25z
dCBQbGEKIHsKICAgICB1cGRhdGVIYXNTdGFydGVkUHJvZHVjaW5nRGF0YSgpOwogCi0gICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX2F1ZGlvU2FtcGxlT2JzZXJ2ZXJzTG9jayk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fYXVkaW9TYW1wbGVPYnNlcnZlcnNMb2NrIH07CiAgICAgZm9yIChhdXRv
KiBvYnNlcnZlciA6IG1fYXVkaW9TYW1wbGVPYnNlcnZlcnMpCiAgICAgICAgIG9ic2VydmVyLT5h
dWRpb1NhbXBsZXNBdmFpbGFibGUodGltZSwgYXVkaW9EYXRhLCBkZXNjcmlwdGlvbiwgbnVtYmVy
T2ZGcmFtZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAKaW5kZXgg
YzI3ZTYwZjY2Y2NjZTkyNjIwZTI2NTc4ZmY1OGEzYjBlNTc0ODA0OC4uNDAzN2Y1MTNmMmM4MjM4
MTgxNmQyYzY0MzU0MmFhMjE1YjZjMDBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9T
b3VyY2UuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6
flJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZSgpCiB7CiAgICAgQVNTRVJUKCFtX2F1ZGlvU291
cmNlLT5oYXNPYnNlcnZlcigqdGhpcykpOwogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3NpbmtzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2lu
a3NMb2NrIH07CiAjZW5kaWYKICAgICBBU1NFUlQobV9zaW5rcy5pc0VtcHR5KCkpOwogCkBAIC05
NSwxMyArOTUsMTMgQEAgdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNvdXJjZUVu
YWJsZWRDaGFuZ2VkKCkKIAogdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OkFkZFNp
bmsod2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSogc2luaykKIHsKLSAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fc2lua3NMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zaW5r
c0xvY2sgfTsKICAgICBtX3NpbmtzLmFkZChzaW5rKTsKIH0KIAogdm9pZCBSZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2U6OlJlbW92ZVNpbmsod2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFj
ZSogc2luaykKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2lua3NMb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9zaW5rc0xvY2sgfTsKICAgICBtX3NpbmtzLnJlbW92ZShzaW5r
KTsKIH0KIApAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlOjpzZW5kQXVkaW9GcmFtZXMoY29uc3Qgdm9pZCogYXVkaW9EYXRhLCBpbnQgYml0CiAgICAg
ICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgImNodW5rICIsIG1fY2h1bmtzU2VudCk7CiAj
ZW5kaWYKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zaW5rc0xvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX3NpbmtzTG9jayB9OwogICAgIGZvciAoYXV0byBzaW5rIDogbV9zaW5r
cykKICAgICAgICAgc2luay0+T25EYXRhKGF1ZGlvRGF0YSwgYml0c1BlclNhbXBsZSwgc2FtcGxl
UmF0ZSwgbnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVv
U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAKaW5kZXggZmE5NDY2NWU1ZmJhZDM4N2QzM2RkZTBiMDI3
ZmJlMTk0YjI1ZDMwZS4uMTJjZWQ3OWZjZjZhNmU1MzBkZDdiOWUxMDI1NjVkOGY3NWMyZGEzNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVP
dXRnb2luZ1ZpZGVvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRp
YXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwCkBAIC01OCw3ICs1OCw3IEBA
IFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6flJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJj
ZSgpCiB7CiBBU1NFUlQoIW1fdmlkZW9Tb3VyY2UtPmhhc09ic2VydmVyKCp0aGlzKSk7CiAjaWYg
QVNTRVJUX0VOQUJMRUQKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2lua3NMb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zaW5rc0xvY2sgfTsKICNlbmRpZgogICAgIEFTU0VSVCht
X3NpbmtzLmlzRW1wdHkoKSk7CiAgICAgc3RvcCgpOwpAQCAtMTU4LDEzICsxNTgsMTMgQEAgdm9p
ZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OkFkZE9yVXBkYXRlU2luayhydGM6OlZpZGVv
U2lua0ludGVyZmFjZTx3ZWJydGMKICAgICBpZiAoc2lua1dhbnRzLnJvdGF0aW9uX2FwcGxpZWQp
CiAgICAgICAgIGFwcGx5Um90YXRpb24oKTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9zaW5rc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3NpbmtzTG9jayB9OwogICAgIG1f
c2lua3MuYWRkKHNpbmspOwogfQogCiB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6
UmVtb3ZlU2luayhydGM6OlZpZGVvU2lua0ludGVyZmFjZTx3ZWJydGM6OlZpZGVvRnJhbWU+KiBz
aW5rKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zaW5rc0xvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX3NpbmtzTG9jayB9OwogICAgIG1fc2lua3MucmVtb3ZlKHNpbmspOwog
fQogCkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6
OnNlbmRGcmFtZShydGM6OnNjb3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW0KICAgICB9CiAj
ZW5kaWYKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zaW5rc0xvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX3NpbmtzTG9jayB9OwogICAgIGZvciAoYXV0byogc2luayA6IG1fc2lu
a3MpCiAgICAgICAgIHNpbmstPk9uRnJhbWUoZnJhbWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VBdWRpb1NoYXJlZFVuaXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VBdWRpb1NoYXJl
ZFVuaXQuY3BwCmluZGV4IDUzYzdlN2JjZTM0NTc2MjgyOGU3YTNiMzlhNzhlOWJhNWUyMzIxNzQu
LmEyYmU1MjI1MzQ3MjE1ZDRlNzc5MDA3YjY2NjYwMjM2ODBkODdiMjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9CYXNlQXVkaW9TaGFyZWRVbml0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQmFzZUF1
ZGlvU2hhcmVkVW5pdC5jcHAKQEAgLTQ1LDE0ICs0NSwxNCBAQCBCYXNlQXVkaW9TaGFyZWRVbml0
OjpCYXNlQXVkaW9TaGFyZWRVbml0KCkKIHZvaWQgQmFzZUF1ZGlvU2hhcmVkVW5pdDo6YWRkQ2xp
ZW50KENvcmVBdWRpb0NhcHR1cmVTb3VyY2UmIGNsaWVudCkKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9jbGllbnRzTG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fY2xpZW50c0xvY2sgfTsKICAgICBtX2NsaWVudHMuYWRkKCZj
bGllbnQpOwogfQogCiB2b2lkIEJhc2VBdWRpb1NoYXJlZFVuaXQ6OnJlbW92ZUNsaWVudChDb3Jl
QXVkaW9DYXB0dXJlU291cmNlJiBjbGllbnQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fY2xpZW50c0xvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX2NsaWVudHNMb2NrIH07CiAgICAgbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50
KTsKIH0KIApAQCAtNjAsMTEgKzYwLDExIEBAIHZvaWQgQmFzZUF1ZGlvU2hhcmVkVW5pdDo6Zm9y
RWFjaENsaWVudChjb25zdCBGdW5jdGlvbjx2b2lkKENvcmVBdWRpb0NhcHR1cmVTb3VyCiB7CiAg
ICAgVmVjdG9yPENvcmVBdWRpb0NhcHR1cmVTb3VyY2UqPiBjbGllbnRzQ29weTsKICAgICB7Ci0g
ICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9jbGllbnRzTG9jayk7CisgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBtX2NsaWVudHNMb2NrIH07CiAgICAgICAgIGNsaWVudHNDb3B5ID0gY29w
eVRvVmVjdG9yKG1fY2xpZW50cyk7CiAgICAgfQogICAgIGZvciAoYXV0byogY2xpZW50IDogY2xp
ZW50c0NvcHkpIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2NsaWVudHNMb2Nr
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fY2xpZW50c0xvY2sgfTsKICAgICAgICAgLy8g
TWFrZSBzdXJlIHRoZSBjbGllbnQgaGFzIG5vdCBiZWVuIGRlc3Ryb3llZC4KICAgICAgICAgaWYg
KCFtX2NsaWVudHMuY29udGFpbnMoY2xpZW50KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
NzQsNyArNzQsNyBAQCB2b2lkIEJhc2VBdWRpb1NoYXJlZFVuaXQ6OmZvckVhY2hDbGllbnQoY29u
c3QgRnVuY3Rpb248dm9pZChDb3JlQXVkaW9DYXB0dXJlU291cgogCiB2b2lkIEJhc2VBdWRpb1No
YXJlZFVuaXQ6OmNsZWFyQ2xpZW50cygpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2NsaWVudHNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jbGllbnRzTG9jayB9OwogICAg
IG1fY2xpZW50cy5jbGVhcigpOwogfQogCkBAIC0yMTcsNyArMjE3LDcgQEAgT1NTdGF0dXMgQmFz
ZUF1ZGlvU2hhcmVkVW5pdDo6c3VzcGVuZCgpCiB2b2lkIEJhc2VBdWRpb1NoYXJlZFVuaXQ6OmF1
ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFBsYXRmb3Jt
QXVkaW9EYXRhJiBkYXRhLCBjb25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlv
biwgc2l6ZV90IG51bWJlck9mRnJhbWVzKQogewogICAgIC8vIFdlIGhvbGQgdGhlIGxvY2sgaGVy
ZSBzaW5jZSBhZGRpbmcvcmVtb3ZpbmcgY2xpZW50cyBjYW4gb25seSBoYXBwZW4gaW4gbWFpbiB0
aHJlYWQuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2NsaWVudHNMb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9jbGllbnRzTG9jayB9OwogCiAgICAgLy8gRm9yIHBlcmZvcm1hbmNl
IHJlYXNvbnMsIHdlIGZvcmJpZCBoZWFwIGFsbG9jYXRpb25zIHdoaWxlIGRvaW5nIHJlbmRlcmlu
ZyBvbiB0aGUgY2FwdHVyZSBhdWRpbyB0aHJlYWQuCiAgICAgRm9yYmlkTWFsbG9jVXNlRm9yQ3Vy
cmVudFRocmVhZFNjb3BlIGZvcmJpZE1hbGxvY1VzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3Vy
Y2VQcm92aWRlckNvY29hLm1tCmluZGV4IGJmM2EzMzkxZjFmZWJiMzg0ZTc1OWU0YmM4OTc2ZTE3
N2NhMTk1NjUuLjU3NmY0NGU5MmM1OGI5M2MwYjQwZDY2NDk5ODBiYzdlOTBhNWVhZmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1Nv
dXJjZVByb3ZpZGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJDb2NvYS5tbQpAQCAtMTAyLDcgKzEwMiw3
IEBAIHZvaWQgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckNvY29hOjpwcmVwYXJlKGNvbnN0IEF1ZGlv
U3RyZWFtQmFzaWNEZXNjcmlwdGlvbiYgZm9yCiB7CiAgICAgRGlzYWJsZU1hbGxvY1Jlc3RyaWN0
aW9uc0ZvckN1cnJlbnRUaHJlYWRTY29wZSBzY29wZTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBMT0co
TWVkaWEsICJXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2E6OnByZXBhcmUoJXApIiwgdGhpcyk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVy
UnVuTG9vcENGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVy
UnVuTG9vcENGLmNwcAppbmRleCA5N2ZjM2QwYmNhYWJlZTkwZTNkYjRmNWFhNjkxMjM2ZGQ0ZGUy
YWMzLi4wNWEyNGY1MjUyNWI1NGI3ZmY4MWQ0NzExYzVlYzAwYzk4NmM5ODQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0Yu
Y3BwCkBAIC01OCw3ICs1OCw3IEBAIENGUnVuTG9vcFJlZiBsb2FkZXJSdW5Mb29wKCkKICAgICBp
ZiAoIWxvYWRlclJ1bkxvb3BPYmplY3QpIHsKICAgICAgICAgVGhyZWFkOjpjcmVhdGUoIldlYkNv
cmU6IENGTmV0d29yayBMb2FkZXIiLCBbXSB7CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhsb2FkZXJSdW5Mb29wTXV0ZXgpOworICAgICAgICAg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBsb2FkZXJSdW5Mb29wTXV0ZXggfTsKIAogICAgICAgICAg
ICAgICAgIGxvYWRlclJ1bkxvb3BPYmplY3QgPSBDRlJ1bkxvb3BHZXRDdXJyZW50KCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3Qu
Y3BwCmluZGV4IGFhMDc0MTMzMGM2MDRkOWE1Njc5NTQ2M2VlZmU5ZDc5OTdmNWE2NjAuLmQ5YTMx
OTRhYWRiNmNmNzllMTA4Mzg4MTcyODJiN2FjMjRiZmQxZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtMTMxLDcg
KzEzMSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OmNhbmNlbCgpCiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0YXR1
c011dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc3RhdHVzTXV0ZXggfTsKICAgICAg
ICAgaWYgKG1fY2FuY2VsbGVkKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTIsMTMgKzE1
MiwxMyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpjYW5jZWwoKQogCiBib29sIEN1cmxSZXF1ZXN0Ojpp
c0NhbmNlbGxlZCgpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0YXR1c011dGV4
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zdGF0dXNNdXRleCB9OwogICAgIHJldHVybiBtX2Nh
bmNlbGxlZDsKIH0KIAogYm9vbCBDdXJsUmVxdWVzdDo6aXNDb21wbGV0ZWRPckNhbmNlbGxlZCgp
CiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0YXR1c011dGV4KTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9zdGF0dXNNdXRleCB9OwogICAgIHJldHVybiBtX2NvbXBsZXRlZCB8fCBt
X2NhbmNlbGxlZDsKIH0KIApAQCAtNDc5LDcgKzQ3OSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OmRp
ZENvbXBsZXRlVHJhbnNmZXIoQ1VSTGNvZGUgcmVzdWx0KQogICAgIH0KIAogICAgIHsKLSAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0YXR1c011dGV4KTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fc3RhdHVzTXV0ZXggfTsKICAgICAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCmluZGV4IDRkMDllNmI1YjdlNTliOTNj
NDg0MWJmMzQ5MDZmYTIyOTE5MjFhZWQuLjRhMjA1ZjhiMGUwZGFhNmYwODNlODg5MDk4YTczMzJl
NzJmZmYyZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2
b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpjYW5jZWwoQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGll
bnQqIGNsaWVudCkKIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OmNhbGxPbldvcmtlclRocmVh
ZChXVEY6OkZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrKQogewogICAgIHsKLSAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0
ZXggfTsKICAgICAgICAgbV90YXNrUXVldWUuYXBwZW5kKFdURk1vdmUodGFzaykpOwogICAgIH0K
IApAQCAtNzksNyArNzksNyBAQCB2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpzdGFydFRocmVh
ZElmTmVlZGVkKCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgewotICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9tdXRleCB9OwogICAgICAgICBpZiAobV9ydW5UaHJlYWQpCiAgICAgICAgICAgICByZXR1
cm47CiAgICAgfQpAQCAtODgsMTQgKzg4LDE0IEBAIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6
OnN0YXJ0VGhyZWFkSWZOZWVkZWQoKQogICAgICAgICBtX3RocmVhZC0+d2FpdEZvckNvbXBsZXRp
b24oKTsKIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgbV9ydW5UaHJlYWQg
PSB0cnVlOwogICAgIH0KIAogICAgIG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoImN1cmxUaHJl
YWQiLCBbdGhpc10gewogICAgICAgICB3b3JrZXJUaHJlYWQoKTsKIAotICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRl
eCB9OwogICAgICAgICBtX3J1blRocmVhZCA9IGZhbHNlOwogICAgIH0sIFRocmVhZFR5cGU6Ok5l
dHdvcmspOwogfQpAQCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6
OnN0b3BUaHJlYWRJZk5vTW9yZUpvYlJ1bm5pbmcoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhy
ZWFkKCkpOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgIGlmIChtX2FjdGl2ZUpvYnMuc2l6ZSgpIHx8IG1f
dGFza1F1ZXVlLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMTQsNyArMTE0LDcgQEAg
dm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6c3RvcFRocmVhZElmTm9Nb3JlSm9iUnVubmluZygp
CiB2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpzdG9wVGhyZWFkKCkKIHsKICAgICB7Ci0gICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX211dGV4IH07CiAgICAgICAgIG1fcnVuVGhyZWFkID0gZmFsc2U7CiAgICAgfQogCkBA
IC0xMzEsNyArMTMxLDcgQEAgdm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6ZXhlY3V0ZVRhc2tz
KCkKICAgICBWZWN0b3I8V1RGOjpGdW5jdGlvbjx2b2lkKCk+PiB0YXNrUXVldWU7CiAKICAgICB7
Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9tdXRleCk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgIHRhc2tRdWV1ZSA9IFdURk1vdmUobV90YXNr
UXVldWUpOwogICAgIH0KIApAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgQ3VybFJlcXVlc3RTY2hl
ZHVsZXI6OndvcmtlclRocmVhZCgpCiAKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICB7Ci0g
ICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOworICAgICAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgICAgIGlmICghbV9ydW5UaHJlYWQp
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTIxOSw3ICsyMTksNyBAQCB2
b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpzdGFydFRyYW5zZmVyKEN1cmxSZXF1ZXN0U2NoZWR1
bGVyQ2xpZW50KiBjbGllbnQpCiAgICAgICAgIG1fY2xpZW50TWFwcy5zZXQoaGFuZGxlLCBjbGll
bnQpOwogICAgIH07CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOworICAg
IExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgbV9hY3RpdmVKb2JzLmFkZChjbGllbnQp
OwogICAgIG1fdGFza1F1ZXVlLmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKIH0KQEAgLTI0MCw3ICsy
NDAsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpjYW5jZWxUcmFuc2ZlcihDdXJsUmVx
dWVzdFNjaGVkdWxlckNsaWVudCogY2xpZW50KQogCiB2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVy
OjpmaW5hbGl6ZVRyYW5zZmVyKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50KiBjbGllbnQsIEZ1
bmN0aW9uPHZvaWQoKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogCiAgICAg
aWYgKCFtX2FjdGl2ZUpvYnMuY29udGFpbnMoY2xpZW50KSkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW1T
Y2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxT
dHJlYW1TY2hlZHVsZXIuY3BwCmluZGV4IDNmYjg3NTk5ODRhYTMxYTdkNDRiYWEyZjY5YWZlMmZl
ZTQ2MWVhNGYuLmI0YTlhYmQ0NTMwN2UxNGIxYjAwODBjNWZkODQ5MGFjYWY3YmI1OTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtU2No
ZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFN0cmVhbVNjaGVkdWxlci5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBDdXJsU3RyZWFtU2No
ZWR1bGVyOjpjYWxsT25Xb3JrZXJUaHJlYWQoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgewotICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9
OwogICAgICAgICBtX3Rhc2tRdWV1ZS5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CiAgICAgfQogCkBA
IC0xMDYsNyArMTA2LDcgQEAgdm9pZCBDdXJsU3RyZWFtU2NoZWR1bGVyOjpjYWxsQ2xpZW50T25N
YWluVGhyZWFkKEN1cmxTdHJlYW1JRCBzdHJlYW1JRCwgV1RGOjpGdW4KIHZvaWQgQ3VybFN0cmVh
bVNjaGVkdWxlcjo6c3RhcnRUaHJlYWRJZk5lZWRlZCgpCiB7CiAgICAgewotICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9t
dXRleCB9OwogICAgICAgICBpZiAobV9ydW5UaHJlYWQpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgQ3VybFN0cmVhbVNjaGVkdWxlcjo6c3RvcFRo
cmVhZElmTm9Nb3JlSm9iUnVubmluZygpCiAgICAgaWYgKG1fc3RyZWFtTGlzdC5zaXplKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9tdXRleCk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICBpZiAobV90YXNrUXVldWUuc2l6ZSgp
KQogICAgICAgICByZXR1cm47CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIEN1cmxTdHJlYW1T
Y2hlZHVsZXI6OmV4ZWN1dGVUYXNrcygpCiAgICAgVmVjdG9yPFdURjo6RnVuY3Rpb248dm9pZCgp
Pj4gdGFza1F1ZXVlOwogCiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
bXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICB0YXNr
UXVldWUgPSBXVEZNb3ZlKG1fdGFza1F1ZXVlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZUJ1aWxkZXIuY3BwCmluZGV4IDhiMTQwZGFkYjNjMzMwNjBhMDVhOGFmM2M1NjZiMjIwZWFm
OTY5ZGQuLjU2OTY5NmVlZTIxN2ZmNjJjNWY5YmRmMDU2NTRmMzQwMDU4YmJlNzggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcApAQCAtMzQwLDcgKzM0MCw3IEBAIHZvaWQgQnVp
bGRlcjo6YXBwbHlQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSYgdmFsdWUsIFNl
bGVjdG9yQ2hlY2tlcjo6CiAgICAgaWYgKGlzPENTU1BhaW50SW1hZ2VWYWx1ZT4odmFsdWVUb0Fw
cGx5KSkgewogICAgICAgICBhdXRvJiBuYW1lID0gZG93bmNhc3Q8Q1NTUGFpbnRJbWFnZVZhbHVl
Pih2YWx1ZVRvQXBwbHkuZ2V0KCkpLm5hbWUoKTsKICAgICAgICAgaWYgKGF1dG8qIHBhaW50V29y
a2xldCA9IGNvbnN0X2Nhc3Q8RG9jdW1lbnQmPihtX3N0YXRlLmRvY3VtZW50KCkpLnBhaW50V29y
a2xldEdsb2JhbFNjb3BlRm9yTmFtZShuYW1lKSkgewotICAgICAgICAgICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhwYWludFdvcmtsZXQtPnBhaW50RGVmaW5pdGlvbkxvY2soKSk7CisgICAgICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgcGFpbnRXb3JrbGV0LT5wYWludERlZmluaXRpb25Mb2NrKCkg
fTsKICAgICAgICAgICAgIGlmIChhdXRvKiByZWdpc3RyYXRpb24gPSBwYWludFdvcmtsZXQtPnBh
aW50RGVmaW5pdGlvbk1hcCgpLmdldChuYW1lKSkgewogICAgICAgICAgICAgICAgIGZvciAoYXV0
byYgcHJvcGVydHkgOiByZWdpc3RyYXRpb24tPmlucHV0UHJvcGVydGllcykKICAgICAgICAgICAg
ICAgICAgICAgbV9zdGF0ZS5zdHlsZSgpLmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eShwcm9w
ZXJ0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xl
dFRocmVhZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVh
ZC5jcHAKaW5kZXggYThlYTk5YmM1ZmZlZDFhM2NjZDg2MjhlZjljN2EwNTE2ZmFiYmEyZS4uNDc3
ZDk2NzJjNzEyYjQ2ZmM0ZWJkN2EyODk3ZTc3ZWIxNTgwODQ4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmNwcApAQCAtMTA5LDcgKzEwOSw3
IEBAIHZvaWQgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWQoKQog
ICAgICAgICAvLyBNdXRleCBwcm90ZWN0aW9uIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhhdCB3
ZSBkb24ndCBjaGFuZ2UgbV9nbG9iYWxTY29wZQogICAgICAgICAvLyB3aGlsZSBXb3JrZXJUaHJl
YWQ6OnN0b3AoKSBpcyBhY2Nlc3NpbmcgaXQuIE5vdGUgdGhhdCBXb3JrZXJUaHJlYWQ6OnN0b3Ao
KSBjYW4KICAgICAgICAgLy8gYmUgY2FsbGVkIGJlZm9yZSB3ZSd2ZSBmaW5pc2hlZCBjcmVhdGlu
ZyB0aGUgV29ya2VyR2xvYmFsU2NvcGUuCi0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV90aHJlYWRDcmVhdGlvbkFuZEdsb2JhbFNjb3BlTG9jayk7CisgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3RocmVhZENyZWF0aW9uQW5kR2xvYmFsU2NvcGVMb2NrIH07CiAgICAgICAgIG1fZ2xv
YmFsU2NvcGUgPSBjcmVhdGVHbG9iYWxTY29wZSgpOwogCiAgICAgICAgIC8vIFdoZW4gcnVubmlu
ZyBvdXQgb2YgbWVtb3J5LCBjcmVhdGVHbG9iYWxTY29wZSgpIG1heSByZXR1cm4gbnVsbCBiZWNh
dXNlIHdlIGNvdWxkIG5vdCBhbGxvY2F0ZSBhIEpTQzo6Vk0uCkBAIC0xNTgsNyArMTU4LDcgQEAg
dm9pZCBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRocmVhZCgpCiAgICAg
ewogICAgICAgICAvLyBNdXRleCBwcm90ZWN0aW9uIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhh
dCB3ZSBkb24ndCBjaGFuZ2UgbV9nbG9iYWxTY29wZQogICAgICAgICAvLyB3aGlsZSBXb3JrZXJU
aHJlYWQ6OnN0b3AgaXMgYWNjZXNzaW5nIGl0LgotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fdGhyZWFkQ3JlYXRpb25BbmRHbG9iYWxTY29wZUxvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV90aHJlYWRDcmVhdGlvbkFuZEdsb2JhbFNjb3BlTG9jayB9OwogCiAgICAgICAg
IC8vIERlbGF5IHRoZSBkZXN0cnVjdGlvbiBvZiB0aGUgV29ya2VyR2xvYmFsU2NvcGUgY29udGV4
dCB1bnRpbCBhZnRlciB3ZSd2ZSB1bmxvY2tlZCB0aGUKICAgICAgICAgLy8gbV90aHJlYWRDcmVh
dGlvbkFuZFdvcmtlckdsb2JhbFNjb3BlTXV0ZXguIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgZGVz
dHJ1Y3RpbmcgdGhlCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBXb3JrZXJPcldvcmtsZXRUaHJl
YWQ6Ondvcmtlck9yV29ya2xldFRocmVhZCgpCiB2b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6
c3RhcnQoV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGV2YWx1YXRlQ2FsbGJh
Y2spCiB7CiAgICAgLy8gTXV0ZXggcHJvdGVjdGlvbiBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRo
YXQgbV90aHJlYWQgaXMgaW5pdGlhbGl6ZWQgd2hlbiB0aGUgdGhyZWFkIHN0YXJ0cy4KLSAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdGhyZWFkQ3JlYXRpb25BbmRHbG9iYWxTY29wZUxvY2sp
OworICAgIExvY2tlciBsb2NrZXIgeyBtX3RocmVhZENyZWF0aW9uQW5kR2xvYmFsU2NvcGVMb2Nr
IH07CiAKICAgICBpZiAobV90aHJlYWQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCAwNGYx
OGM2MzE3MjVmOGQ3NTg3NTgzOTFiY2UxZDU5MWZiNjk5MGY2Li5iMDc4Mzc1ZmE3M2RmZTI5Y2Qy
Y2QyMDE3MWFkMjY4MjIyODU5YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCkBAIC04NSw3ICs4NSw3IEBAIEV4Y2VwdGlv
bk9yPHZvaWQ+IFBhaW50V29ya2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KEpTQzo6SlNH
bG9iYWxPYmplY3QmIGdsCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJU
aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBub3QgYmUgdGhlIGVtcHR5IHN0cmluZyIgfTsKIAogICAg
IHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhwYWludERlZmluaXRpb25Mb2NrKCkp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcGFpbnREZWZpbml0aW9uTG9jaygpIH07CiAKICAg
ICAgICAgaWYgKHBhaW50RGVmaW5pdGlvbk1hcCgpLmNvbnRhaW5zKG5hbWUpKQogICAgICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRNb2RpZmljYXRpb25FcnJvciwgIlRoaXMgbmFt
ZSBoYXMgYWxyZWFkeSBiZWVuIHJlZ2lzdGVyZWQiIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUv
d29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAppbmRleCBkMDc2ZWU5ZDM1ZWI3Zjcz
OThlMGQ0MDllODg3ZTY1N2YyMjYwMjBmLi45YTJjNDk3YzkyOTQ4MDJlMWU2N2IyNGQwN2FmYjI4
MzFlMjI4YjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmts
ZXRHbG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xl
dEdsb2JhbFNjb3BlLmgKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgICAgICBtX2hhc1By
ZXBhcmVkRm9yRGVzdHJ1Y3Rpb24gPSB0cnVlOwogCiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2socGFpbnREZWZpbml0aW9uTG9jaygpKTsKKyAgICAgICAgICAg
IExvY2tlciBsb2NrZXIgeyBwYWludERlZmluaXRpb25Mb2NrKCkgfTsKICAgICAgICAgICAgIHBh
aW50RGVmaW5pdGlvbk1hcCgpLmNsZWFyKCk7CiAgICAgICAgIH0KICAgICAgICAgV29ya2xldEds
b2JhbFNjb3BlOjpwcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKTsKQEAgLTg0LDcgKzg0LDcgQEAgcHJp
dmF0ZToKICAgICB+UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUoKQogICAgIHsKICNpZiBBU1NFUlRf
RU5BQkxFRAotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHBhaW50RGVmaW5pdGlvbkxv
Y2soKSk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBwYWludERlZmluaXRpb25Mb2NrKCkgfTsK
ICAgICAgICAgQVNTRVJUKHBhaW50RGVmaW5pdGlvbk1hcCgpLmlzRW1wdHkoKSk7CiAjZW5kaWYK
ICAgICB9Cg==
</data>
<flag name="commit-queue"
          id="450537"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429367</attachid>
            <date>2021-05-21 17:04:18 -0700</date>
            <delta_ts>2021-05-21 17:10:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226119-20210521170417.patch</filename>
            <type>text/plain</type>
            <size>104888</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3ODk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTlkMmI2NzMzYmY4Mjc5
MGU3NjNkZDAwYzQ1NjNjOTUxNWJhZTBiZC4uNzRiMDhhMzdlZmM1ZTRjZmNjMTJjN2I0NmJhMWYx
OTk1YjNjMDAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4NSBAQAorMjAyMS0wNS0yMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgdXNpbmcgaG9sZExv
Y2soKSBpbiBXZWJDb3JlIGFzIGl0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggQ2xhbmcgdGhyZWFk
IHNhZmV0eSBhbmFseXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI2MTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU3RvcCB1c2luZyBob2xkTG9jaygpIGluIFdlYkNvcmUgYXMgaXQgaXMgbm90IGNv
bXBhdGlibGUgd2l0aCBDbGFuZyB0aHJlYWQgc2FmZXR5IGFuYWx5c2lzCisgICAgICAgIChXVEY6
OkNoZWNrZWRMb2NrKS4gVXNlIHRoZSBMb2NrZXIgY29uc3RydWN0b3IgZGlyZWN0bHkgaW5zdGVh
ZC4KKworICAgICAgICBUaGlzIGlzIGEgc3RlcCB0b3dhcmRzIGdldHRpbmcgcmlkIG9mIGhvbGRM
b2NrKCkgZW50aXJlbHkuCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvbkNhcHR1cmVTb3VyY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ2FwdHVyZVNvdXJjZUltcGw6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0J1ZmZlcjo6cmVsZWFzZU1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZl
cjo6bWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1
ZmZlclNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VO
b2RlOjpzZXRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2Rl
OjpzdGFydFBsYXlpbmcpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXROb2RlOjp+QXVkaW9Xb3Jr
bGV0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXROb2RlOjppbml0aWFsaXpl
QXVkaW9QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldE5vZGU6OnNl
dFByb2Nlc3Nvcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OnNldEJ1ZmZlcik6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OnNldEZvcm1h
dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpPc2NpbGxhdG9yTm9kZTo6c2V0UGVyaW9kaWNXYXZlKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFu
bmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6
OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnNldE9yaWVudGF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnNldERpc3RhbmNlTW9kZWwpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6c2V0UmVmRGlzdGFuY2UpOgorICAgICAgICAo
V2ViQ29yZTo6UGFubmVyTm9kZTo6c2V0TWF4RGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6
UGFubmVyTm9kZTo6c2V0Um9sbG9mZkZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXJO
b2RlOjpzZXRDb25lT3V0ZXJHYWluKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnNl
dENvbmVPdXRlckFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnNldENvbmVJ
bm5lckFuZ2xlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6dW5pbml0aWFs
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OnByb2Nlc3MpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRDdXJ2ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRPdmVyc2FtcGxlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2Vy
OjphZGRQcm9wb3NlZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6cmVtb3ZlUHJvcG9zZWREYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1h
bmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VN
YW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbik6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VU
cmFja2VyOjpzY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXI6Om5vdGlmeURhdGFiYXNlc0NoYW5nZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
R2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAg
ICAgICogY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YWludEltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldDo6YWRkTW9kdWxlKToKKyAgICAg
ICAgKiBkb20vRXZlbnRMaXN0ZW5lck1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudExp
c3RlbmVyTWFwOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudExpc3RlbmVyTWFwOjpy
ZXBsYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJNYXA6OmFkZCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudExpc3RlbmVyTWFwOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRMaXN0ZW5lck1hcDo6cmVtb3ZlRmlyc3RFdmVudExpc3RlbmVyQ3JlYXRlZEZyb21N
YXJrdXApOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudFRhcmdldDo6dmlzaXRKU0V2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKiBkb20vTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y2xlYXJFdmVudFRhcmdldERhdGEpOgorICAgICAgICAq
IGh0bWwvQ2FudmFzQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjptZW1v
cnlDb3N0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0Jhc2U6OmV4dGVybmFsTWVt
b3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjpzZXRJbWFnZUJ1
ZmZlciBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6aW52YWxpZGF0ZU5hbWVkRWxlbWVudENhY2hlIGNv
bnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQ29sbGVjdGlvbjo6bWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQ29sbGVjdGlvbjo6c2V0TmFtZWRJdGVtQ2FjaGUgY29uc3QpOgorICAgICAgICAqIGh0bWwv
T2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6
cHVzaEJ1ZmZlclRvUGxhY2Vob2xkZXIpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2Fu
dmFzOjpjb21taXRUb1BsYWNlaG9sZGVyQ2FudmFzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9P
RVNWZXJ0ZXhBcnJheU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhBcnJh
eU9iamVjdDo6ZGVsZXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViQ29yZTo6T0VTVmVy
dGV4QXJyYXlPYmplY3Q6OmJpbmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSVBvaW50ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlUXVlcnkpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5RdWVyeSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjplbmRRdWVyeSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVTYW1wbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRTYW1wbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJl
Z2luVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6c2V0SW5kZXhlZEJ1ZmZlckJpbmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFZlcnRleEFycmF5KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmFkZE1lbWJlcnNUb09wYXF1ZVJvb3RzKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRHcm91cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTENvbnRleHRHcm91cDo6ZGV0YWNoQW5kUmVtb3ZlQWxsT2JqZWN0cyk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppbml0aWFsaXplQXR0YWNobWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6c2V0QXR0YWNobWVudEludGVybmFsKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TE9iamVjdDo6cnVuRGVzdHJ1Y3Rvcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6YmluZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxldGVCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlRnJhbWVidWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlUHJv
Z3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxl
dGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6ZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliUG9pbnRlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmFkZE1lbWJl
cnNUb09wYXF1ZVJvb3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjp+UmV2ZXJiQ29udm9s
dmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29j
b2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0b3ApOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRJc1BsYXlpbmcpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6Omhh
bmRsZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVh
bWVyOjpjbGVhckFkYXB0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
V2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2Via2l0V2ViQXVk
aW9Tb3VyY2VTZXREaXNwYXRjaFRvUmVuZGVyVGhyZWFkRnVuY3Rpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5TGlua0ZpcmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheURpZFJlZnJl
c2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FjaGU6OmNhY2hlZEZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhY2hlOjpmb250Rm9yUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYWNoZTo6cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYWNoZTo6aW5hY3RpdmVGb250Q291bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpkZXN0cm95TWl4SWZOZWVkZWQp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OmNyZWF0ZU1p
eElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpD
OjpwcmVwYXJlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakM6OnVucHJlcGFyZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDOjpwcm9jZXNzQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6ZGVzdHJveUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJvb3RMYXllckJvdW5kc0RpZENoYW5nZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjYWNoZWRDR0NvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFzRmlyc3RWaWRlb1NhbXBsZVJlYWNoZWRTaW5r
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
cHVzaFRleHR1cmVUb0NvbXBvc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjp0cmlnZ2VyUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmZsdXNoQ3VycmVudEJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6d2FpdEZvckNETUF0dGFjaG1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0
V2ViU3JjQ29uc3RydWN0ZWQpOgorICAgICAgICAod2ViS2l0V2ViU3JjR2V0UHJvcGVydHkpOgor
ICAgICAgICAod2ViS2l0V2ViU3JjU2V0Q29udGV4dCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmND
cmVhdGUpOgorICAgICAgICAod2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QpOgorICAgICAgICAod2Vi
S2l0V2ViU3JjU3RvcCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNHZXRTaXplKToKKyAgICAgICAg
KHdlYktpdFdlYlNyY0lzU2Vla2FibGUpOgorICAgICAgICAod2ViS2l0V2ViU3JjRG9TZWVrKToK
KyAgICAgICAgKHdlYktpdFdlYlNyY1F1ZXJ5KToKKyAgICAgICAgKHdlYktpdFdlYlNyY1VuTG9j
ayk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNVbkxvY2tTdG9wKToKKyAgICAgICAgKHdlYktpdFdl
YlNyY1NldE1lZGlhUGxheWVyKToKKyAgICAgICAgKHdlYktpdFNyY1Bhc3NlZENPUlNBY2Nlc3ND
aGVjayk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VS
ZWNlaXZlZCk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjphY2Nlc3ND
b250cm9sQ2hlY2tGYWlsZWQpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGll
bnQ6OmxvYWRGYWlsZWQpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6
OmxvYWRGaW5pc2hlZCk6CisgICAgICAgICh3ZWJLaXRTcmNXb3VsZFRhaW50T3JpZ2luKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5
cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuY3BwOgorICAgICAgICAoaXNDRE1Qcm94eUF2YWlsYWJs
ZSk6CisgICAgICAgIChhdHRhY2hDRE1Qcm94eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU291cmNlVHJhY2tHU3RyZWFtZXI6OmlzUmVhZHlGb3JNb3JlU2FtcGxl
cyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyOjpub3RpZnlX
aGVuUmVhZHlGb3JNb3JlU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVRy
YWNrR1N0cmVhbWVyOjplbnF1ZXVlT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291
cmNlVHJhY2tHU3RyZWFtZXI6OmNsZWFyUXVldWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAod2ViS2l0TWVkaWFTcmNBY3RpdmF0ZU1vZGUpOgorICAgICAgICAod2ViS2l0TWVkaWFTcmNQ
YWRMaW5rZWQpOgorICAgICAgICAod2ViS2l0TWVkaWFTcmNMb29wKToKKyAgICAgICAgKHdlYktp
dE1lZGlhU3JjU3RyZWFtRmx1c2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9D
b2xvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om5zQ29sb3IpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHA6CisgICAgICAg
IChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAgKEhhbmRsZURl
bGVnYXRlU291cmNlKToKKyAgICAgICAgKFdlYlRocmVhZEFkb3B0QW5kUmVsZWFzZSk6CisgICAg
ICAgIChXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwpOgorICAgICAgICAoV2ViQ29y
ZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2tJbXBsKToKKyAgICAgICAgKEhhbmRsZVdlYlRo
cmVhZFJlbGVhc2VTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRo
cmVhZFJ1bi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4pOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6dmlkZW9TYW1wbGVB
dmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjph
dWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclBy
aXZhdGVNb2NrOjpmZXRjaERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjphZGRBdWRpb1NhbXBsZU9ic2VydmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92ZUF1ZGlvU2FtcGxlT2Jz
ZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRkVmlkZW9T
YW1wbGVPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpy
ZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2U6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2U6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6flJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2U6OkFkZFNpbmspOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlOjpSZW1vdmVTaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZTo6c2VuZEF1ZGlvRnJhbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjp+UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6QWRkT3JVcGRh
dGVTaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6
UmVtb3ZlU2luayk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2U6OnNlbmRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VB
dWRpb1NoYXJlZFVuaXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvU2hhcmVkVW5p
dDo6YWRkQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VBdWRpb1NoYXJlZFVuaXQ6OnJl
bW92ZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQXVkaW9TaGFyZWRVbml0Ojpmb3JF
YWNoQ2xpZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VBdWRpb1NoYXJlZFVuaXQ6
OmNsZWFyQ2xpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQXVkaW9TaGFyZWRVbml0Ojph
dWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJB
dWRpb1NvdXJjZVByb3ZpZGVyQ29jb2E6OnByZXBhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRlclJ1
bkxvb3ApOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0Ojppc0NhbmNlbGxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVx
dWVzdDo6aXNDb21wbGV0ZWRPckNhbmNlbGxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVx
dWVzdDo6ZGlkQ29tcGxldGVUcmFuc2Zlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1
ZXN0U2NoZWR1bGVyOjpjYWxsT25Xb3JrZXJUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bFJlcXVlc3RTY2hlZHVsZXI6OnN0YXJ0VGhyZWFkSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OnN0b3BUaHJlYWRJZk5vTW9yZUpvYlJ1bm5pbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OnN0b3BUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OmV4ZWN1dGVUYXNrcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6d29ya2VyVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpzdGFydFRyYW5zZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpmaW5hbGl6ZVRyYW5zZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbVNjaGVkdWxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsU3RyZWFtU2NoZWR1bGVyOjpjYWxsT25Xb3JrZXJUaHJlYWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybFN0cmVhbVNjaGVkdWxlcjo6c3RhcnRUaHJlYWRJZk5l
ZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsU3RyZWFtU2NoZWR1bGVyOjpzdG9wVGhyZWFk
SWZOb01vcmVKb2JSdW5uaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxTdHJlYW1TY2hlZHVs
ZXI6OmV4ZWN1dGVUYXNrcyk6CisgICAgICAgICogc3R5bGUvU3R5bGVCdWlsZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyOjphcHBseVByb3BlcnR5KToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRocmVhZCk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRUaHJlYWQ6OnN0YXJ0KToKKyAgICAgICAgKiB3b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdv
cmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludCk6CisgICAgICAgICogd29ya2xldHMvUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUuaDoKKwogMjAyMS0wNS0yMSAgRGllZ28gUGlubyBHYXJjaWEg
IDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFNldCBDYW52YXNJbWFnZVNtb290aGluZy5p
bWFnZVNtb290aGluZ1F1YWxpdHkgdmFsdWUgdG8gJ2xvdycgYXMgZGVmYXVsdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJl
U291cmNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmNwcAppbmRleCA2MWIyNmYxZjk1YmEwMDMzMWIzOTBj
MTBmNGYwOWEyMDA5OWRkNDM1Li45NGMxYjU1N2VjYTM5NTlhZDgxMzI4ZGRkM2Y3M2Y4NWRlNWRi
NWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmNwcApAQCAtMTE4LDcg
KzExOCw3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbDo6YXVkaW9T
YW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYKIAogICAgICAgICBhdXRvIGRhdGEgPSBX
ZWJBdWRpb0J1ZmZlckxpc3QgeyBhdWRpb0Rlc2NyaXB0aW9uLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oc2FtcGxlQ291bnQpIH07CiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9kYXRhU291cmNlTG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9kYXRhU291cmNlTG9jayB9OwogICAgICAgICAgICAgbV9kYXRhU291cmNlLT5wdWxsU2FtcGxl
cygqZGF0YS5saXN0KCksIHNhbXBsZUNvdW50LCB0aW1lLnRpbWVWYWx1ZSgpLCAwLCBBdWRpb1Nh
bXBsZURhdGFTb3VyY2U6OkNvcHkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKaW5kZXggMTU3OWY4MTU1MzI4NzAwMWYw
MDE3NGU5MmJhYzY0MmFkNzZkZDIzZi4uY2I3ZTg0ZDQ1MzgzZTk4ZjgyZTY4MjQzZjUyYjJhNzU2
OGZiZmU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1
ZmZlci5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIEF1ZGlvQnVmZmVyOjppbnZhbGlkYXRl
KCkKIAogdm9pZCBBdWRpb0J1ZmZlcjo6cmVsZWFzZU1lbW9yeSgpCiB7Ci0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX2NoYW5uZWxzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hh
bm5lbHNMb2NrIH07CiAgICAgbV9jaGFubmVscy5jbGVhcigpOwogICAgIG1fY2hhbm5lbFdyYXBw
ZXJzLmNsZWFyKCk7CiB9CkBAIC0yNTIsNyArMjUyLDcgQEAgc2l6ZV90IEF1ZGlvQnVmZmVyOjpt
ZW1vcnlDb3N0KCkgY29uc3QKICAgICAvLyBmcm9tIGJlaW5nIGNoYW5nZWQgd2hpbGUgd2UgaXRl
cmF0ZSBpdCwgYnV0IGNhbGxpbmcgY2hhbm5lbC0+Ynl0ZUxlbmd0aCgpIGlzIHNhZmUKICAgICAv
LyBiZWNhdXNlIGl0IGRvZXNuJ3QgaW52b2x2ZSBjaGFzaW5nIGFueSBwb2ludGVycyB0aGF0IGNh
biBiZSBudWxsaWZpZWQgd2hpbGUgdGhlCiAgICAgLy8gQXVkaW9CdWZmZXIgaXMgYWxpdmUuCi0g
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2NoYW5uZWxzTG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fY2hhbm5lbHNMb2NrIH07CiAgICAgc2l6ZV90IGNvc3QgPSAwOwogICAgIGZvciAo
YXV0byYgY2hhbm5lbCA6IG1fY2hhbm5lbHMpCiAgICAgICAgIGNvc3QgKz0gY2hhbm5lbC0+Ynl0
ZUxlbmd0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IDhiNDNkZDIzZDMxODUzODUxYjg3Nzdi
ZmJmOWI5OGUzMmJmYWIyMGUuLjYzM2M1MDZhMDA3NjdmZmI4ODU4Y2IwNjBmNTFkNzY5OTZiYTE3
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTQxOSw3ICs0MTksNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcihSZWZQdHI8QXVkaW9CdWZmZXI+
JiYgYnVmZmVyKQogICAgIExvY2tlciBjb250ZXh0TG9ja2VyIHsgY29udGV4dCgpLmdyYXBoTG9j
aygpIH07CiAgICAgCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCi0g
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9wcm9jZXNzTG9jayB9OwogICAgIAogICAgIGlmIChidWZmZXIpIHsKICAgICAgICAg
bV93YXNCdWZmZXJTZXQgPSB0cnVlOwpAQCAtNDc3LDcgKzQ3Nyw3IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c3RhcnRQbGF5aW5nKGRvdWJsZSB3aGVuLCBkb3Vi
bGUgZ3JhaW5PCiAgICAgY29udGV4dCgpLnNvdXJjZU5vZGVXaWxsQmVnaW5QbGF5YmFjaygqdGhp
cyk7CiAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KLSAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBt
X3Byb2Nlc3NMb2NrIH07CiAKICAgICBtX2lzR3JhaW4gPSB0cnVlOwogICAgIG1fZ3JhaW5PZmZz
ZXQgPSBncmFpbk9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwCmluZGV4IDM5NmIyODI1ZDY2ZGY3YzgzZDA1NmVjNTdm
MGM5YjIzYmJhZjU2MzkuLjM0OTYyNmZhNGQ0M2VkMjUzZmNmOTA3MzJiNjQyYWYyYmM1YWE0NjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXROb2RlLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIEF1ZGlvV29ya2xldE5vZGU6On5BdWRpb1dv
cmtsZXROb2RlKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIHsKLSAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsKICAgICAgICAgaWYgKG1fcHJvY2Vzc29yKSB7CiAg
ICAgICAgICAgICBpZiAoYXV0byogd29ya2xldFByb3h5ID0gY29udGV4dCgpLmF1ZGlvV29ya2xl
dCgpLnByb3h5KCkpCiAgICAgICAgICAgICAgICAgd29ya2xldFByb3h5LT5wb3N0VGFza0Zvck1v
ZGVUb1dvcmtsZXRHbG9iYWxTY29wZShbbV9wcm9jZXNzb3IgPSBXVEZNb3ZlKG1fcHJvY2Vzc29y
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1v
ZGUoKSk7CkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBBdWRpb1dvcmtsZXROb2RlOjppbml0aWFs
aXplQXVkaW9QYXJhbWV0ZXJzKGNvbnN0IFZlY3RvcjxBdWRpb1BhcmFtRGVzY3JpcHQKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3BhcmFtZXRlcnMtPm1hcCgpLmlz
RW1wdHkoKSk7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb2Nlc3NMb2NrIH07CiAKICAgICBmb3IgKGF1dG8mIGRl
c2NyaXB0b3IgOiBkZXNjcmlwdG9ycykgewogICAgICAgICBhdXRvIHBhcmFtZXRlciA9IEF1ZGlv
UGFyYW06OmNyZWF0ZShjb250ZXh0KCksIGRlc2NyaXB0b3IubmFtZSwgZGVzY3JpcHRvci5kZWZh
dWx0VmFsdWUsIGRlc2NyaXB0b3IubWluVmFsdWUsIGRlc2NyaXB0b3IubWF4VmFsdWUsIGRlc2Ny
aXB0b3IuYXV0b21hdGlvblJhdGUpOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgQXVkaW9Xb3Jr
bGV0Tm9kZTo6c2V0UHJvY2Vzc29yKFJlZlB0cjxBdWRpb1dvcmtsZXRQcm9jZXNzb3I+JiYgcHJv
Y2Vzc29yKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChwcm9jZXNz
b3IpIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsKICAgICAgICAgbV9wcm9jZXNz
b3IgPSBXVEZNb3ZlKHByb2Nlc3Nvcik7CiAgICAgICAgIG1fd29ya2xldFRocmVhZCA9ICZUaHJl
YWQ6OmN1cnJlbnQoKTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCmluZGV4IDJiOGExOWQxMzhlM2EyMWQxZjRjMDA2
YjE4YmY3Zjk1OGZmYjkzYzEuLjU5NzFmZDAwMjI1YmNhY2NjMGU1MzczZTY3MDJkYjRjZDI5ZTg1
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVy
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJO
b2RlLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnZvbHZlck5v
ZGU6OnNldEJ1ZmZlcihSZWZQdHI8QXVkaW9CdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICBMb2Nr
ZXIgY29udGV4dExvY2tlciB7IGNvbnRleHQoKS5ncmFwaExvY2soKSB9OwogCiAgICAgICAgIC8v
IFN5bmNocm9uaXplIHdpdGggcHJvY2VzcygpLgotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fcHJvY2Vzc0xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9j
ayB9OwogCiAgICAgICAgIG1fcmV2ZXJiID0gV1RGTW92ZShyZXZlcmIpOwogICAgICAgICBtX2J1
ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRl
eCBiNGJlNTc1NzE1ZjcwYjA5MmUzMmYyNjg5OGYwMTRiNjllODY5YTcyLi5hMWE0NmE2N2VlYTIz
YzU1OTIxM2E3MzA4ODgyY2U1MDY3NGJiMjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUu
Y3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpz
ZXRGb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNvdXJjCiAgICAgICAgIG1f
c291cmNlU2FtcGxlUmF0ZSA9IHNvdXJjZVNhbXBsZVJhdGU7CiAKICAgICAgICAgLy8gU3luY2hy
b25pemUgd2l0aCBwcm9jZXNzKCkuCi0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9w
cm9jZXNzTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb2Nlc3NMb2NrIH07CiAK
ICAgICAgICAgaWYgKHNvdXJjZVNhbXBsZVJhdGUgIT0gc2FtcGxlUmF0ZSgpKSB7CiAgICAgICAg
ICAgICBkb3VibGUgc2NhbGVGYWN0b3IgPSBzb3VyY2VTYW1wbGVSYXRlIC8gc2FtcGxlUmF0ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVh
bUF1ZGlvU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRleCBmNjhlOWY0Nzc4YzM3OTE1MWRlNDc5
ODhkNTYxYzhkM2VhYmQ2OGMxLi5jNTY2MmQ2MDlhZjYwYTZhZWJhNmRhNzIxYTM1ZDFkNTg4YWQ1
MTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZv
aWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OnNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZD
aGFubmVscywgZmxvYXQgc291cmNlCiAgICAgfQogCiAgICAgLy8gU3luY2hyb25pemUgd2l0aCBw
cm9jZXNzKCkuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCiAgICAgbV9zb3VyY2VOdW1iZXJP
ZkNoYW5uZWxzID0gbnVtYmVyT2ZDaGFubmVsczsKICAgICBtX3NvdXJjZVNhbXBsZVJhdGUgPSBz
b3VyY2VTYW1wbGVSYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmNwcAppbmRleCAyM2YyZjM3NWYzYTkxMzA5YzcwNGIxZjg4OTQ1MzU1
NjgwZjI1Zjg3Li5jNmY2OWQyMzA1YzIxNTk5NjcxMzlhODQ3OWZhZTVkMzE4MjIyNTg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNw
cApAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgT3NjaWxsYXRvck5vZGU6OnNldFBlcmlvZGljV2F2
ZShQZXJpb2RpY1dhdmUmIHBlcmlvZGljV2F2ZSkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fcHJvY2Vzc0xvY2sgfTsKICAgICBtX3BlcmlvZGljV2F2ZSA9ICZwZXJpb2RpY1dhdmU7CiAg
ICAgbV90eXBlID0gT3NjaWxsYXRvclR5cGU6OkN1c3RvbTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCmluZGV4IDk3MTg5ZmYwNWIzYzM0MTBh
NGY5ODVjY2UzMmI5N2NhNWE4ZDBkNTQuLjdjY2YyNGQ2NzBiN2Y2ZTFlZjFhMzc3OWY5YjcwNDg2
ODJmZmNlZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFu
bmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJO
b2RlLmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgUGFubmVyTm9kZTo6c2V0UGFubmluZ01v
ZGVsKFBhbm5pbmdNb2RlbFR5cGUgbW9kZWwpCiAKICAgICBpZiAoIW1fcGFubmVyLmdldCgpIHx8
IG1vZGVsICE9IG1fcGFubmluZ01vZGVsKSB7CiAgICAgICAgIC8vIFRoaXMgc3luY2hyb25pemVz
IHdpdGggcHJvY2VzcygpLgotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vz
c0xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCiAgICAg
ICAgIG1fcGFubmVyID0gUGFubmVyOjpjcmVhdGUobW9kZWwsIHNhbXBsZVJhdGUoKSwgbV9ocnRm
RGF0YWJhc2VMb2FkZXIuZ2V0KCkpOwogICAgICAgICBtX3Bhbm5pbmdNb2RlbCA9IG1vZGVsOwpA
QCAtMjkyLDcgKzI5Miw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBhbm5lck5vZGU6OnNldFBvc2l0
aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
cHJvY2Vzc0xvY2sgfTsKIAogICAgIGF1dG8gbm93ID0gY29udGV4dCgpLmN1cnJlbnRUaW1lKCk7
CiAKQEAgLTMxOSw3ICszMTksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYW5uZXJOb2RlOjpzZXRP
cmllbnRhdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KLSAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3Byb2Nlc3NMb2NrIH07CiAKICAgICBhdXRvIG5vdyA9IGNvbnRleHQoKS5jdXJyZW50
VGltZSgpOwogCkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBQYW5uZXJOb2RlOjpzZXREaXN0YW5j
ZU1vZGVsKERpc3RhbmNlTW9kZWxUeXBlIG1vZGVsKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KLSAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBt
X3Byb2Nlc3NMb2NrIH07CiAKICAgICBtX2Rpc3RhbmNlRWZmZWN0LnNldE1vZGVsKG1vZGVsLCB0
cnVlKTsKIH0KQEAgLTM1OSw3ICszNTksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYW5uZXJOb2Rl
OjpzZXRSZWZEaXN0YW5jZShkb3VibGUgcmVmRGlzdGFuY2UpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBSYW5nZUVycm9yLCAicmVmRGlzdGFuY2UgY2Fubm90IGJlIHNldCB0byBhIG5lZ2F0
aXZlIHZhbHVlIl9zIH07CiAgICAgCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9j
ZXNzKCkuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCiAgICAgbV9kaXN0YW5jZUVmZmVjdC5z
ZXRSZWZEaXN0YW5jZShyZWZEaXN0YW5jZSk7CiAgICAgcmV0dXJuIHsgfTsKQEAgLTM3Myw3ICsz
NzMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYW5uZXJOb2RlOjpzZXRNYXhEaXN0YW5jZShkb3Vi
bGUgbWF4RGlzdGFuY2UpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAi
bWF4RGlzdGFuY2UgY2Fubm90IGJlIHNldCB0byBhIG5vbi1wb3NpdGl2ZSB2YWx1ZSJfcyB9Owog
ICAgIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
cHJvY2Vzc0xvY2sgfTsKIAogICAgIG1fZGlzdGFuY2VFZmZlY3Quc2V0TWF4RGlzdGFuY2UobWF4
RGlzdGFuY2UpOwogICAgIHJldHVybiB7IH07CkBAIC0zODcsNyArMzg3LDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gUGFubmVyTm9kZTo6c2V0Um9sbG9mZkZhY3Rvcihkb3VibGUgcm9sbG9mZkZhY3Rv
cikKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJyb3IsICJyb2xsb2ZmRmFjdG9y
IGNhbm5vdCBiZSBzZXQgdG8gYSBuZWdhdGl2ZSB2YWx1ZSJfcyB9OwogICAgIAogICAgIC8vIFRo
aXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgotICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9wcm9jZXNzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsK
IAogICAgIG1fZGlzdGFuY2VFZmZlY3Quc2V0Um9sbG9mZkZhY3Rvcihyb2xsb2ZmRmFjdG9yKTsK
ICAgICByZXR1cm4geyB9OwpAQCAtNDAxLDcgKzQwMSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBh
bm5lck5vZGU6OnNldENvbmVPdXRlckdhaW4oZG91YmxlIGdhaW4pCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgImNvbmVPdXRlckdhaW4gbXVzdCBiZSBpbiBb
MCwgMV0iX3MgfTsKICAgICAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3Mo
KS4KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX3Byb2Nlc3NMb2NrIH07CiAKICAgICBtX2NvbmVFZmZlY3Quc2V0T3V0ZXJH
YWluKGdhaW4pOwogICAgIHJldHVybiB7IH07CkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBQYW5u
ZXJOb2RlOjpzZXRDb25lT3V0ZXJBbmdsZShkb3VibGUgYW5nbGUpCiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgot
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsKIAogICAgIG1fY29uZUVmZmVjdC5zZXRPdXRlckFuZ2xl
KGFuZ2xlKTsKIH0KQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIFBhbm5lck5vZGU6OnNldENvbmVJ
bm5lckFuZ2xlKGRvdWJsZSBhbmdsZSkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAg
ICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCi0gICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNz
TG9jayB9OwogCiAgICAgbV9jb25lRWZmZWN0LnNldElubmVyQW5nbGUoYW5nbGUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29y
Tm9kZS5jcHAKaW5kZXggMjU2MWZmYTg1NTE2YTM5ODYxZGUwZjI4ZDBjN2Y2ZjkwYTJjMDFhZC4u
MjJlOTdlOGFhMjVlYWMyZjcwOGUyM2Y3NmE4OWIyOGQ5MzAzMDEzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3Bw
CkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBTY3JpcHRQcm9jZXNzb3JOb2RlOjp1bmluaXRpYWxp
emUoKQogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVm
ZmVyQ291bnQ7ICsraSkgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYnVmZmVy
TG9ja3NbaV0pOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9idWZmZXJMb2Nrc1tpXSB9Owog
ICAgICAgICBtX2lucHV0QnVmZmVyc1tpXSA9IG51bGxwdHI7CiAgICAgICAgIG1fb3V0cHV0QnVm
ZmVyc1tpXSA9IG51bGxwdHI7CiAgICAgfQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgU2NyaXB0
UHJvY2Vzc29yTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0
aGlzLCBidWZmZXJJbmRleCwgcHJvdGVjdG9yID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAg
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYnVmZmVyTG9ja3NbYnVmZmVySW5kZXhd
KTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9idWZmZXJMb2Nrc1tidWZmZXJJ
bmRleF0gfTsKICAgICAgICAgICAgICAgICBmaXJlUHJvY2Vzc0V2ZW50KGJ1ZmZlckluZGV4KTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAppbmRleCBkMjRkZTJlYjRk
MGNlMWFlOTg1MDBjNjExN2NmOGFmNGFjOWUxZGQ2Li4xMjA4ODUwODA4OTAzNjFkNGM0MGFhNmFj
YWI5NTRiYTcwMGI1NzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvRFNQS2VybmVsPiBXYXZlU2hhcGVyUHJvY2Vzc29yOjpjcmVhdGVLZXJu
ZWwoKQogdm9pZCBXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRDdXJ2ZShGbG9hdDMyQXJyYXkqIGN1
cnZlKQogewogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fcHJvY2Vzc0xvY2sgfTsKIAogICAgIG1fY3VydmUgPSBjdXJ2ZTsKIH0KQEAgLTU5LDcgKzU5
LDcgQEAgdm9pZCBXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRDdXJ2ZShGbG9hdDMyQXJyYXkqIGN1
cnZlKQogdm9pZCBXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRPdmVyc2FtcGxlKE92ZXJTYW1wbGVU
eXBlIG92ZXJzYW1wbGUpCiB7CiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNz
KCkuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCiAgICAgbV9vdmVyc2FtcGxlID0gb3ZlcnNh
bXBsZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
LmNwcAppbmRleCBjMWRiOGVmYTBiMDBmM2UzMjFhOTBlMjk2NDlkN2U2MzM0MTg3MTE2Li4zYTRj
ZDg1ZTVlYzEwMGM4NzEzMjg3NjM4NDQ5OTU1MjkwY2RjM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtMzMzLDcgKzMzMyw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShib29sIHNo
b3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB7
CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSB3YWl0IHRpbGwgdGhlIGJhY2tncm91bmQgcmVtb3Zh
bCBvZiB0aGUgZW1wdHkgZGF0YWJhc2UgZmlsZXMgZmluaXNoZWQgYmVmb3JlIHRyeWluZyB0byBv
cGVuIGFueSBkYXRhYmFzZS4KLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhEYXRhYmFz
ZVRyYWNrZXI6Om9wZW5EYXRhYmFzZU11dGV4KCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
RGF0YWJhc2VUcmFja2VyOjpvcGVuRGF0YWJhc2VNdXRleCgpIH07CiAgICAgfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmNwcAppbmRleCA1MWFkOGE4ZjM0YjJhNzUxMTYzZDBkOGJlMjRiOGRmYzg0Y2QxNjBi
Li45NTBiNDVmYzcxYWFiMTZmMTRlMTVlMmEwYWZmMTFmMTI4NTIyYTg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3Bw
CkBAIC0xODEsMTMgKzE4MSwxMyBAQCBFeGNlcHRpb25PcjxSZWY8RGF0YWJhc2U+PiBEYXRhYmFz
ZU1hbmFnZXI6OnRyeVRvT3BlbkRhdGFiYXNlQmFja2VuZChEb2N1bWVudCYgZAogCiB2b2lkIERh
dGFiYXNlTWFuYWdlcjo6YWRkUHJvcG9zZWREYXRhYmFzZShQcm9wb3NlZERhdGFiYXNlJiBkYXRh
YmFzZSkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvcG9zZWREYXRhYmFzZXNN
dXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRhYmFzZXNNdXRleCB9Owog
ICAgIG1fcHJvcG9zZWREYXRhYmFzZXMuYWRkKCZkYXRhYmFzZSk7CiB9CiAKIHZvaWQgRGF0YWJh
c2VNYW5hZ2VyOjpyZW1vdmVQcm9wb3NlZERhdGFiYXNlKFByb3Bvc2VkRGF0YWJhc2UmIGRhdGFi
YXNlKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9wb3NlZERhdGFiYXNlc011
dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9wb3NlZERhdGFiYXNlc011dGV4IH07CiAg
ICAgbV9wcm9wb3NlZERhdGFiYXNlcy5yZW1vdmUoJmRhdGFiYXNlKTsKIH0KIApAQCAtMjQxLDcg
KzI0MSw3IEBAIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzdG9wRGF0YWJhc2VzKERvY3VtZW50JiBk
b2N1bWVudCwgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyCiBTdHJpbmcgRGF0YWJhc2VNYW5hZ2Vy
OjpmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkKIHsKICAgICB7Ci0gICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9wb3NlZERhdGFiYXNlc011dGV4KTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRhYmFzZXNNdXRleCB9OwogICAgICAgICBmb3Ig
KGF1dG8qIHByb3Bvc2VkRGF0YWJhc2UgOiBtX3Byb3Bvc2VkRGF0YWJhc2VzKSB7CiAgICAgICAg
ICAgICBpZiAocHJvcG9zZWREYXRhYmFzZS0+ZGV0YWlscygpLm5hbWUoKSA9PSBuYW1lICYmIHBy
b3Bvc2VkRGF0YWJhc2UtPm9yaWdpbigpLmVxdWFsKCZvcmlnaW4pKQogICAgICAgICAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKQEAgLTI1Myw3ICsyNTMsNyBAQCBTdHJpbmcgRGF0YWJhc2VNYW5h
Z2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0
cmluZwogRGF0YWJhc2VEZXRhaWxzIERhdGFiYXNlTWFuYWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRP
cmlnaW4oY29uc3QgU3RyaW5nJiBuYW1lLCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQogewogICAg
IHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb3Bvc2VkRGF0YWJhc2VzTXV0
ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9wb3NlZERhdGFiYXNlc011dGV4IH07
CiAgICAgICAgIGZvciAoYXV0byogcHJvcG9zZWREYXRhYmFzZSA6IG1fcHJvcG9zZWREYXRhYmFz
ZXMpIHsKICAgICAgICAgICAgIGlmIChwcm9wb3NlZERhdGFiYXNlLT5kZXRhaWxzKCkubmFtZSgp
ID09IG5hbWUgJiYgcHJvcG9zZWREYXRhYmFzZS0+b3JpZ2luKCkuZXF1YWwoJm9yaWdpbikpIHsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoJnByb3Bvc2VkRGF0YWJhc2UtPmRldGFpbHMoKS50aHJl
YWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkgfHwgaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3Bw
CmluZGV4IDI5MTA4M2IxZjM5NzJkMjY5N2I5NWJmNWQ0ZGU3MWZhOTkxMTIwM2EuLmEwMzgyMzRi
NzU1NmJjYjVlYmUzNzFiM2M1ODJhNjg1NThhYmI1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTEzMjEs
NyArMTMyMSw3IEBAIHN0YXRpYyBOb3RpZmljYXRpb25RdWV1ZSYgbm90aWZpY2F0aW9uUXVldWUo
KQogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6c2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQo
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsK
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG5vdGlmaWNhdGlvbkxvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBub3RpZmljYXRpb25Mb2NrIH07CiAgICAgbm90aWZpY2F0aW9uUXVldWUoKS5h
cHBlbmQoc3RkOjptYWtlX3BhaXIob3JpZ2luLmlzb2xhdGVkQ29weSgpLCBuYW1lLmlzb2xhdGVk
Q29weSgpKSk7CiAgICAgc2NoZWR1bGVGb3JOb3RpZmljYXRpb24oKTsKIH0KQEAgLTEzNDgsNyAr
MTM0OCw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpub3RpZnlEYXRhYmFzZXNDaGFuZ2VkKCkK
IAogICAgIE5vdGlmaWNhdGlvblF1ZXVlIG5vdGlmaWNhdGlvbnM7CiAgICAgewotICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG5vdGlmaWNhdGlvbkxvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbm90aWZpY2F0aW9uTG9jayB9OwogICAgICAgICBub3RpZmljYXRpb25zLnN3YXAo
bm90aWZpY2F0aW9uUXVldWUoKSk7CiAgICAgICAgIG5vdGlmaWNhdGlvblNjaGVkdWxlZCA9IGZh
bHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcAppbmRleCBjMzBmYjg5NGRhYTlmMzEyY2VmMTM5NTk0NWNiNDcxY2RjZjBjYTcx
Li5lZjJlYWNlM2RlZWE4ODc5ZTQ3OTg0NGNjMTAxODhjNDZhNWYwN2I0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC0yNTYsNyAr
MjU2LDcgQEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxs
KiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
dGhpc09iamVjdC0+bV9nY0xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgdGhpc09iamVj
dC0+bV9nY0xvY2sgfTsKIAogICAgICAgICBmb3IgKGF1dG8mIHN0cnVjdHVyZSA6IHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZXMobG9ja2VyKS52YWx1ZXMoKSkKICAgICAgICAgICAgIHZpc2l0b3IuYXBw
ZW5kKHN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCmluZGV4IGIzYzQ1Yzdl
MTU3ODYzODQzZDA1YWI1NzA5YTcwMjQ3ZTI2Njk4NzMuLmJiOGQ3ZTBjMWExNDVjZmIyNGFmMjM3
MWNhOGVlM2MxMzExODI5NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCkBAIC0zNCw3
ICszNCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9y
Pgogdm9pZCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJl
bihWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod3JhcHBl
ZCgpLnBhaW50RGVmaW5pdGlvbkxvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IHdyYXBwZWQo
KS5wYWludERlZmluaXRpb25Mb2NrKCkgfTsKICAgICBmb3IgKGF1dG8mIHJlZ2lzdGVyZWQgOiB3
cmFwcGVkKCkucGFpbnREZWZpbml0aW9uTWFwKCkudmFsdWVzKCkpIHsKICAgICAgICAgcmVnaXN0
ZXJlZC0+cGFpbnRDYWxsYmFjay0+dmlzaXRKU0Z1bmN0aW9uKHZpc2l0b3IpOwogICAgICAgICB2
aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKHJlZ2lzdGVyZWQtPnBhaW50Q29uc3RydWN0b3IpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcAppbmRleCA4Y2E2ZTVlMjBj
NTRlNzZjMWU2OTZlYTI4YmVkNDQwMTIxMjQxM2ViLi5jZTE1ZWFjY2FkZDMyYmQwMThiMTQ1M2Mz
MDUzMTRjOTA3MjlhZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJ
bWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVl
LmNwcApAQCAtNTQsNyArNTQsNyBAQCBSZWZQdHI8SW1hZ2U+IENTU1BhaW50SW1hZ2VWYWx1ZTo6
aW1hZ2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyRWxlbWVudCwgY29uc3QgRmxvYQogICAgIGF1dG8q
IHNlbGVjdGVkR2xvYmFsU2NvcGUgPSByZW5kZXJFbGVtZW50LmRvY3VtZW50KCkucGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVGb3JOYW1lKG1fbmFtZSk7CiAgICAgaWYgKCFzZWxlY3RlZEdsb2JhbFNj
b3BlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KHNlbGVjdGVkR2xvYmFsU2NvcGUtPnBhaW50RGVmaW5pdGlvbkxvY2soKSk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IHNlbGVjdGVkR2xvYmFsU2NvcGUtPnBhaW50RGVmaW5pdGlvbkxvY2soKSB9Owog
ICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHNlbGVjdGVkR2xvYmFsU2NvcGUtPnBhaW50RGVmaW5p
dGlvbk1hcCgpLmdldChtX25hbWUpOwogCiAgICAgaWYgKCFyZWdpc3RyYXRpb24pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCmluZGV4IDZhMGUxOTY2NDU0MmU4MTY4
MWM3YTY5N2VjYzcxMTViN2E0ZGZjMTEuLjJmYTRlMjBiMDY3YzVhN2M4ZWMwZWYyNjQ0M2NiZWYw
NWEwYWNjYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmts
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCkBA
IC03Niw3ICs3Niw3IEBAIHZvaWQgUGFpbnRXb3JrbGV0OjphZGRNb2R1bGUoY29uc3QgU3RyaW5n
JiBtb2R1bGVVUkwsIFdvcmtsZXRPcHRpb25zJiYsIERPTVByb21pCiAgICAgYXV0byBjb250ZXh0
ID0gbWF5YmVDb250ZXh0LnJlbGVhc2VOb25OdWxsKCk7CiAgICAgY29udGV4dC0+ZXZhbHVhdGUo
KTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY29udGV4dC0+cGFpbnREZWZpbml0aW9u
TG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgY29udGV4dC0+cGFpbnREZWZpbml0aW9uTG9j
aygpIH07CiAgICAgZm9yIChhdXRvJiBuYW1lIDogY29udGV4dC0+cGFpbnREZWZpbml0aW9uTWFw
KCkua2V5cygpKQogICAgICAgICBkb2N1bWVudC0+c2V0UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVG
b3JOYW1lKG5hbWUsIG1ha2VSZWYoY29udGV4dC5nZXQoKSkpOwogICAgIHByb21pc2UucmVzb2x2
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCmluZGV4IGZjMzYzYWUz
M2FmOTI3NmZmYzVjYTZhMmI2YjFjZjI3NWJhODAwOTUuLjU5YzBiMjkxNzNiYTQ2NDkwZGU5ZWUw
ZmY3YWIwM2MwMzI0NmQ4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExp
c3RlbmVyTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5j
cHAKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBFdmVudExpc3RlbmVyTWFwOjpjb250YWluc0FjdGl2
ZShjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUpIGNvbnN0CiAKIHZvaWQgRXZlbnRMaXN0ZW5l
ck1hcDo6Y2xlYXIoKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgCiAgICAgYXNzZXJ0Tm9BY3RpdmVJdGVy
YXRvcnMoKTsKIApAQCAtMTE3LDcgKzExNyw3IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGZpbmRM
aXN0ZW5lcihjb25zdCBFdmVudExpc3RlbmVyVmVjdG9yJiBsaXN0ZW5lcnMsIEV2ZW50TGlzCiAK
IHZvaWQgRXZlbnRMaXN0ZW5lck1hcDo6cmVwbGFjZShjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5
cGUsIEV2ZW50TGlzdGVuZXImIG9sZExpc3RlbmVyLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBuZXdM
aXN0ZW5lciwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI6Ok9wdGlvbnMmIG9wdGlvbnMp
CiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xvY2sgfTsKICAgICAKICAgICBhc3NlcnROb0FjdGl2ZUl0ZXJhdG9ycygpOwogCkBA
IC0xMzIsNyArMTMyLDcgQEAgdm9pZCBFdmVudExpc3RlbmVyTWFwOjpyZXBsYWNlKGNvbnN0IEF0
b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgb2xkTGkKIAogYm9vbCBFdmVudExp
c3RlbmVyTWFwOjphZGQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0
ZW5lcj4mJiBsaXN0ZW5lciwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI6Ok9wdGlvbnMm
IG9wdGlvbnMpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAKICAgICBhc3NlcnROb0FjdGl2ZUl0ZXJhdG9y
cygpOwogCkBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGljIGJvb2wgcmVtb3ZlTGlzdGVuZXJGcm9t
VmVjdG9yKEV2ZW50TGlzdGVuZXJWZWN0b3ImIGxpc3RlbmVycywgRXZlbnRMaXN0ZW4KIAogYm9v
bCBFdmVudExpc3RlbmVyTWFwOjpyZW1vdmUoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBF
dmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewotICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAg
ICAgCiAgICAgYXNzZXJ0Tm9BY3RpdmVJdGVyYXRvcnMoKTsKIApAQCAtMjAyLDcgKzIwMiw3IEBA
IHN0YXRpYyB2b2lkIHJlbW92ZUZpcnN0TGlzdGVuZXJDcmVhdGVkRnJvbU1hcmt1cChFdmVudExp
c3RlbmVyVmVjdG9yJiBsaXN0ZW5lclZlCiAKIHZvaWQgRXZlbnRMaXN0ZW5lck1hcDo6cmVtb3Zl
Rmlyc3RFdmVudExpc3RlbmVyQ3JlYXRlZEZyb21NYXJrdXAoY29uc3QgQXRvbVN0cmluZyYgZXZl
bnRUeXBlKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgCiAgICAgYXNzZXJ0Tm9BY3RpdmVJdGVyYXRvcnMo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggMTIwNDAxZjg4OGJjYTY3NzY4
MTFkOTBkMjVmODI0MWY1NTE3MTc0MS4uM2Q0YTZmZGYxMGY1YmRjMmZhZGNmZDM3MWI4MDNhNmY4
MTQwYmZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC0zOTMsNyArMzkzLDcg
QEAgdm9pZCBFdmVudFRhcmdldDo6dmlzaXRKU0V2ZW50TGlzdGVuZXJzKFZpc2l0b3ImIHZpc2l0
b3IpCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhkYXRhLT5ldmVudExpc3RlbmVyTWFwLmxvY2soKSk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IGRhdGEtPmV2ZW50TGlzdGVuZXJNYXAubG9jaygpIH07CiAgICAgRXZlbnRMaXN0
ZW5lckl0ZXJhdG9yIGl0ZXJhdG9yKCZkYXRhLT5ldmVudExpc3RlbmVyTWFwKTsKICAgICB3aGls
ZSAoYXV0byogbGlzdGVuZXIgPSBpdGVyYXRvci5uZXh0TGlzdGVuZXIoKSkKICAgICAgICAgbGlz
dGVuZXItPnZpc2l0SlNGdW5jdGlvbih2aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBiMmZh
M2EyMjVlNDViYjk4N2M5NDdmZjZiNDFlM2E0ZDBiYmFjYzU4Li45MTY5M2I0MjljM2UyZTIxNmM3
NGM2MWI2MTQ2YmUzNDYxZTk0OTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yMjM5LDcgKzIyMzks
NyBAQCBFdmVudFRhcmdldERhdGEmIE5vZGU6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCiAgICAg
SlNDOjpWTSogdm0gPSBjb21tb25WTU9yTnVsbCgpOwogICAgIFJFTEVBU0VfQVNTRVJUKCF2bSB8
fCB2bS0+aGVhcC53b3JsZElzUnVubmluZygpKTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2soc19ldmVudFRhcmdldERhdGFNYXBMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc19ldmVu
dFRhcmdldERhdGFNYXBMb2NrIH07CiAgICAgc2V0SGFzRXZlbnRUYXJnZXREYXRhKHRydWUpOwog
ICAgIHJldHVybiAqZXZlbnRUYXJnZXREYXRhTWFwKCkuYWRkKHRoaXMsIG1ha2VVbmlxdWU8RXZl
bnRUYXJnZXREYXRhPigpKS5pdGVyYXRvci0+dmFsdWU7CiB9CkBAIC0yMjQ4LDcgKzIyNDgsNyBA
QCB2b2lkIE5vZGU6OmNsZWFyRXZlbnRUYXJnZXREYXRhKCkKIHsKICAgICBKU0M6OlZNKiB2bSA9
IGNvbW1vblZNT3JOdWxsKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXZtIHx8IHZtLT5oZWFwLndv
cmxkSXNSdW5uaW5nKCkpOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soc19ldmVudFRhcmdl
dERhdGFNYXBMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc19ldmVudFRhcmdldERhdGFNYXBM
b2NrIH07CiAgICAgZXZlbnRUYXJnZXREYXRhTWFwKCkucmVtb3ZlKHRoaXMpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9DYW52YXNCYXNlLmNwcAppbmRleCAzZTQyNDljMGE5NWM1NjFiZTM4ZDMxMTJjMzNi
ZTQzNDMzYzYwZTIxLi4wN2ViNjUxNDlmYzk5NjcwNTdlODJhYzY0OTVkZDEyMGMyZDVlMjU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzaXplX3Qg
Q2FudmFzQmFzZTo6bWVtb3J5Q29zdCgpIGNvbnN0CiAgICAgLy8gbWVtb3J5Q29zdCgpIG1heSBi
ZSBpbnZva2VkIGNvbmN1cnJlbnRseSBmcm9tIGEgR0MgdGhyZWFkLCBhbmQgd2UgbmVlZCB0byBi
ZSBjYXJlZnVsCiAgICAgLy8gYWJvdXQgd2hhdCBkYXRhIHdlIGFjY2VzcyBoZXJlIGFuZCBob3cu
IFdlIG5lZWQgdG8gaG9sZCBhIGxvY2sgdG8gcHJldmVudCBtX2ltYWdlQnVmZmVyCiAgICAgLy8g
ZnJvbSBiZWluZyBjaGFuZ2VkIHdoaWxlIHdlIGFjY2VzcyBpdC4KLSAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1faW1hZ2VCdWZmZXJBc3NpZ25tZW50TG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1faW1hZ2VCdWZmZXJBc3NpZ25tZW50TG9jayB9OwogICAgIGlmICghbV9pbWFnZUJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXItPm1lbW9yeUNv
c3QoKTsKQEAgLTExNCw3ICsxMTQsNyBAQCBzaXplX3QgQ2FudmFzQmFzZTo6ZXh0ZXJuYWxNZW1v
cnlDb3N0KCkgY29uc3QKICAgICAvLyBleHRlcm5hbE1lbW9yeUNvc3QoKSBtYXkgYmUgaW52b2tl
ZCBjb25jdXJyZW50bHkgZnJvbSBhIEdDIHRocmVhZCwgYW5kIHdlIG5lZWQgdG8gYmUgY2FyZWZ1
bAogICAgIC8vIGFib3V0IHdoYXQgZGF0YSB3ZSBhY2Nlc3MgaGVyZSBhbmQgaG93LiBXZSBuZWVk
IHRvIGhvbGQgYSBsb2NrIHRvIHByZXZlbnQgbV9pbWFnZUJ1ZmZlcgogICAgIC8vIGZyb20gYmVp
bmcgY2hhbmdlZCB3aGlsZSB3ZSBhY2Nlc3MgaXQuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX2ltYWdlQnVmZmVyQXNzaWdubWVudExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2lt
YWdlQnVmZmVyQXNzaWdubWVudExvY2sgfTsKICAgICBpZiAoIW1faW1hZ2VCdWZmZXIpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIHJldHVybiBtX2ltYWdlQnVmZmVyLT5leHRlcm5hbE1lbW9yeUNv
c3QoKTsKQEAgLTE4OCw3ICsxODgsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IENhbnZhc0Jhc2U6
OnNldEltYWdlQnVmZmVyKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpIGNvbgogewogICAg
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gcmV0dXJuQnVmZmVyOwogICAgIHsKLSAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2ltYWdlQnVmZmVyQXNzaWdubWVudExvY2spOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9pbWFnZUJ1ZmZlckFzc2lnbm1lbnRMb2NrIH07CiAgICAgICAgIG1f
Y29udGV4dFN0YXRlU2F2ZXIgPSBudWxscHRyOwogICAgICAgICByZXR1cm5CdWZmZXIgPSBzdGQ6
OmV4Y2hhbmdlKG1faW1hZ2VCdWZmZXIsIFdURk1vdmUoYnVmZmVyKSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAppbmRleCBkZjJhM2E3MDhmY2Q3Njg4ZTU0MGRi
ZTQ2ODg3ZTUyNDBmMjM0M2ViLi5lZTA4ZjgzMGRkNGM1MWM0N2U2YTYwYTYyYjM1NGUxNzBhYTE3
YzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcApAQCAtMTUzLDcgKzE1
Myw3IEBAIHZvaWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRhdGVOYW1lZEVsZW1lbnRDYWNoZShE
b2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiAgICAgQVNTRVJUKGhhc05hbWVkRWxlbWVudENhY2hl
KCkpOwogICAgIGRvY3VtZW50LmNvbGxlY3Rpb25XaWxsQ2xlYXJJZE5hbWVNYXAoKnRoaXMpOwog
ICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX25hbWVkRWxlbWVudENhY2hl
QXNzaWdubWVudExvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9uYW1lZEVsZW1lbnRD
YWNoZUFzc2lnbm1lbnRMb2NrIH07CiAgICAgICAgIG1fbmFtZWRFbGVtZW50Q2FjaGUgPSBudWxs
cHRyOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxl
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAppbmRleCA4OTM3
YjAzNmMyMzgyMmYxZWYxOTU3ZTgzZGRjNTMwOWM0MjU3NDNmLi40ZTIzMGEwYWY4ZDk3NTJiMDAy
ZTdjN2M5MDc4NzlmZjM5NzVkN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5o
CkBAIC0xNzUsNyArMTc1LDcgQEAgaW5saW5lIHNpemVfdCBIVE1MQ29sbGVjdGlvbjo6bWVtb3J5
Q29zdCgpIGNvbnN0CiB7CiAgICAgLy8gbWVtb3J5Q29zdCgpIG1heSBiZSBpbnZva2VkIGNvbmN1
cnJlbnRseSBmcm9tIGEgR0MgdGhyZWFkLCBhbmQgd2UgbmVlZCB0byBiZSBjYXJlZnVsIGFib3V0
IHdoYXQgZGF0YSB3ZSBhY2Nlc3MgaGVyZSBhbmQgaG93LgogICAgIC8vIEhlbmNlLCB3ZSBuZWVk
IHRvIGd1YXJkIG1fbmFtZWRFbGVtZW50Q2FjaGUgZnJvbSBiZWluZyByZXBsYWNlZCB3aGlsZSBh
Y2Nlc3NpbmcgaXQuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX25hbWVkRWxlbWVudENh
Y2hlQXNzaWdubWVudExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX25hbWVkRWxlbWVudENh
Y2hlQXNzaWdubWVudExvY2sgfTsKICAgICByZXR1cm4gbV9uYW1lZEVsZW1lbnRDYWNoZSA/IG1f
bmFtZWRFbGVtZW50Q2FjaGUtPm1lbW9yeUNvc3QoKSA6IDA7CiB9CiAKQEAgLTIyMyw3ICsyMjMs
NyBAQCBpbmxpbmUgdm9pZCBIVE1MQ29sbGVjdGlvbjo6c2V0TmFtZWRJdGVtQ2FjaGUoc3RkOjp1
bmlxdWVfcHRyPENvbGxlY3Rpb25OYW1lZEVsZQogICAgIEFTU0VSVCghbV9uYW1lZEVsZW1lbnRD
YWNoZSk7CiAgICAgY2FjaGUtPmRpZFBvcHVsYXRlKCk7CiAgICAgewotICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fbmFtZWRFbGVtZW50Q2FjaGVBc3NpZ25tZW50TG9jayk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX25hbWVkRWxlbWVudENhY2hlQXNzaWdubWVudExvY2sgfTsK
ICAgICAgICAgbV9uYW1lZEVsZW1lbnRDYWNoZSA9IFdURk1vdmUoY2FjaGUpOwogICAgIH0KICAg
ICBkb2N1bWVudCgpLmNvbGxlY3Rpb25DYWNoZWRJZE5hbWVNYXAoKnRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCmluZGV4IDNhNTQzYmNiMmJkYTdjNjkyNTMyNDAw
NWM1NWJiZDVmNzY5OThlMzYuLjNlZjIzYWIzYjdiY2RlMWYwZWJkNWQzNzBjMDE5NTI4N2NhMzI3
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKQEAgLTQzMyw3ICs0
MzMsNyBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6c2V0UGxhY2Vob2xkZXJDYW52YXMoSFRNTENh
bnZhc0VsZW1lbnQmIGNhbnZhcykKIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpwdXNoQnVmZmVyVG9Q
bGFjZWhvbGRlcigpCiB7CiAgICAgY2FsbE9uTWFpblRocmVhZChbcGxhY2Vob2xkZXJEYXRhID0g
bWFrZVJlZigqbV9wbGFjZWhvbGRlckRhdGEpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhwbGFjZWhvbGRlckRhdGEtPmJ1ZmZlckxvY2spOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgcGxhY2Vob2xkZXJEYXRhLT5idWZmZXJMb2NrIH07CiAgICAgICAgIGlm
IChwbGFjZWhvbGRlckRhdGEtPmNhbnZhcyAmJiBwbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21t
aXRCdWZmZXIpCiAgICAgICAgICAgICBwbGFjZWhvbGRlckRhdGEtPmNhbnZhcy0+c2V0SW1hZ2VC
dWZmZXJBbmRNYXJrRGlydHkoV1RGTW92ZShwbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRC
dWZmZXIpKTsKICAgICAgICAgcGxhY2Vob2xkZXJEYXRhLT5wZW5kaW5nQ29tbWl0QnVmZmVyID0g
bnVsbHB0cjsKQEAgLTQ1Niw3ICs0NTYsNyBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6Y29tbWl0
VG9QbGFjZWhvbGRlckNhbnZhcygpCiAgICAgICAgICAgICBtX3BsYWNlaG9sZGVyRGF0YS0+YnVm
ZmVyUGlwZVNvdXJjZS0+aGFuZGxlKFdURk1vdmUoYnVmZmVyQ29weSkpOwogICAgIH0KIAotICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlckxvY2spOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX3BsYWNlaG9sZGVyRGF0YS0+YnVmZmVyTG9jayB9OwogICAg
IGJvb2wgc2hvdWxkUHVzaEJ1ZmZlciA9ICFtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlcjsKICAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciA9IGlt
YWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
QnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpKTsKICAgICBpZiAobV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdD
b21taXRCdWZmZXIgJiYgc2hvdWxkUHVzaEJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcAppbmRleCBkYmU1NGRjNjg4MTJi
YmQzMDY1NWI5YjkxZmViMTc2MjkxZWEyYzExLi4zMGQ0YjNmZjBjYmQyNGY1MzgwODYzMGJjYzQz
MDY3ZDhjZThmMDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNW
ZXJ0ZXhBcnJheU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VT
VmVydGV4QXJyYXlPYmplY3QuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgT0VTVmVydGV4QXJy
YXlPYmplY3Q6OmRlbGV0ZVZlcnRleEFycmF5T0VTKFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMq
IGFycmF5CiAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9jb250ZXh0LT5vYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fY29udGV4dC0+b2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmICgh
YXJyYXlPYmplY3QgfHwgbV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6YmluZFZlcnRl
eEFycmF5T0VTKFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMqIGFycmF5T2IKICAgICBpZiAoIW1f
Y29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2NvbnRleHQtPm9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb250
ZXh0LT5vYmplY3RHcmFwaExvY2soKSB9OwogCiAgICAgaWYgKG1fY29udGV4dC0+aXNDb250ZXh0
TG9zdCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGExYTQyOWYzNTViYjMwMTE3
NTQxYjVkNzgyZmU5OGIxOTQyZDdjNDAuLmViMmQzYWE4ZDYzN2U0ZDRiYTYzYTEzODE4MGEwN2Ri
MjljNDA2ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
MlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC02OTQsNyArNjk0LDcgQEAgdm9pZCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgbG9uZyBsb25n
IHNyY0J5dGUKIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kRnJhbWVidWZmZXIo
R0NHTGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBidWZmZXIpCiB7Ci0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAoIXZhbGlkYXRlTnVsbGFibGVXZWJHTE9i
amVjdCgiYmluZEZyYW1lYnVmZmVyIiwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzI0
LDcgKzcyNCw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmxpdEZyYW1lYnVmZmVy
KEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpCiAKIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6ZGVsZXRlRnJhbWVidWZmZXIoV2ViR0xGcmFtZWJ1ZmZlciogZnJhbWVidWZm
ZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAoIWRlbGV0
ZU9iamVjdChsb2NrZXIsIGZyYW1lYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTcxMSw3
ICsxNzExLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNHVp
dihHQ0dMdWludCBpbmRleCwgVWludDMyTGlzdCYmIGxpc3QKIAogdm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBz
aXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50NjQgb2Zmc2V0KQog
ewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExv
Y2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2soKSB9OwogCiAgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTkxMCw3ICsxOTEwLDcgQEAgUmVm
UHRyPFdlYkdMUXVlcnk+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVF1ZXJ5KCkKIAog
dm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVRdWVyeShXZWJHTFF1ZXJ5KiBxdWVy
eSkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXF1ZXJ5IHx8ICFxdWVyeS0+b2JqZWN0KCkgfHwgIXZhbGlk
YXRlV2ViR0xPYmplY3QoImRlbGV0ZVF1ZXJ5IiwgcXVlcnkpKQogICAgICAgICByZXR1cm47CkBA
IC0xOTQ1LDcgKzE5NDUsNyBAQCBib29sIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRl
UXVlcnlUYXJnZXQoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZQogCiB2b2lkIFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luUXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBXZWJHTFF1ZXJ5
JiBxdWVyeSkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygp
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIEdDR0xl
bnVtIHRhcmdldEtleTsKICAgICBpZiAoIXZhbGlkYXRlV2ViR0xPYmplY3QoImJlZ2luUXVlcnki
LCAmcXVlcnkpIHx8ICF2YWxpZGF0ZVF1ZXJ5VGFyZ2V0KCJiZWdpblF1ZXJ5IiwgdGFyZ2V0LCAm
dGFyZ2V0S2V5KSkKQEAgLTE5NzAsNyArMTk3MCw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6YmVnaW5RdWVyeShHQ0dMZW51bSB0YXJnZXQsIFdlYkdMUXVlcnkmIHF1ZXJ5KQogCiB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkKIHsK
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIEdDR0xlbnVtIHRhcmdldEtl
eTsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgfHwgIXZhbGlkYXRlUXVlcnlUYXJnZXQoImJlZ2luUXVlcnkiLCB0YXJnZXQsICZ0
YXJnZXRLZXkpKQpAQCAtMjA0MSw3ICsyMDQxLDcgQEAgUmVmUHRyPFdlYkdMU2FtcGxlcj4gV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlU2FtcGxlcigpCiAKIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6ZGVsZXRlU2FtcGxlcihXZWJHTFNhbXBsZXIqIHNhbXBsZXIpCiB7Ci0gICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVu
ZGluZygpKQogICAgICAgICByZXR1cm47CkBAIC0yMDY3LDcgKzIwNjcsNyBAQCBHQ0dMYm9vbGVh
biBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppc1NhbXBsZXIoV2ViR0xTYW1wbGVyKiBzYW1wbGVy
KQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRTYW1wbGVyKEdDR0x1aW50IHVu
aXQsIFdlYkdMU2FtcGxlciogc2FtcGxlcikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2Nr
KCkgfTsKIAogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTIxNTksNyArMjE1OSw3IEBAIEdDR0xib29sZWFuIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmlzU3luYyhXZWJHTFN5bmMqIHN5bmMpCiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6ZGVsZXRlU3luYyhXZWJHTFN5bmMqIHN5bmMpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBo
TG9jaygpIH07CiAKICAgICBkZWxldGVPYmplY3QobG9ja2VyLCBzeW5jKTsKIH0KQEAgLTIyMzAs
NyArMjIzMCw3IEBAIFJlZlB0cjxXZWJHTFRyYW5zZm9ybUZlZWRiYWNrPiBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpCiAKIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soV2ViR0xUcmFuc2Zvcm1GZWVkYmFj
ayogZmVlZGJhY2tPYmplY3QpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RH
cmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAK
ICAgICAvLyBXZSBoYXZlIHRvIHNob3J0LWNpcmN1aXQgdGhlIGRlbGV0aW9uIHByb2Nlc3MgaWYg
dGhlIHRyYW5zZm9ybSBmZWVkYmFjayBpcwogICAgIC8vIGFjdGl2ZS4gVGhpcyByZXF1aXJlcyBk
dXBsaWNhdGlvbiBvZiBzb21lIHZhbGlkYXRpb24gbG9naWMuCkBAIC0yMjY1LDcgKzIyNjUsNyBA
QCBHQ0dMYm9vbGVhbiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppc1RyYW5zZm9ybUZlZWRiYWNr
KFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqCiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
YmluZFRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHRhcmdldCwgV2ViR0xUcmFuc2Zvcm1GZWVk
YmFjayogZmVlZGJhY2tPYmplY3QpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmpl
Y3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07
CiAKICAgICBpZiAoIXZhbGlkYXRlTnVsbGFibGVXZWJHTE9iamVjdCgiYmluZFRyYW5zZm9ybUZl
ZWRiYWNrIiwgZmVlZGJhY2tPYmplY3QpKQogICAgICAgICByZXR1cm47CkBAIC0yMzI2LDcgKzIz
MjYsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVlZGJh
Y2soR0NHTGVudW0gcHJpbWl0aXZlTW9kZSkKIAogICAgIG1fY29udGV4dC0+YmVnaW5UcmFuc2Zv
cm1GZWVkYmFjayhwcmltaXRpdmVNb2RlKTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
b2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2so
KSB9OwogICAgIG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFjay0+c2V0UHJvZ3JhbShsb2NrZXIsICpt
X2N1cnJlbnRQcm9ncmFtKTsKICAgICBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2stPnNldEFjdGl2
ZSh0cnVlKTsKICAgICBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2stPnNldFBhdXNlZChmYWxzZSk7
CkBAIC0yNDI0LDcgKzI0MjQsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlc3Vt
ZVRyYW5zZm9ybUZlZWRiYWNrKCkKIAogYm9vbCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpzZXRJ
bmRleGVkQnVmZmVyQmluZGluZyhjb25zdCBjaGFyICpmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIHRh
cmdldCwgR0NHTHVpbnQgaW5kZXgsIFdlYkdMQnVmZmVyKiBidWZmZXIpCiB7Ci0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAoIXZhbGlkYXRlTnVsbGFibGVXZWJHTE9i
amVjdChmdW5jdGlvbk5hbWUsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2
MTYsNyArMjYxNiw3IEBAIFJlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0PiBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGVWZXJ0ZXhBcnJheSgpCiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6ZGVsZXRlVmVydGV4QXJyYXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogYXJyYXlP
YmplY3QpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICAvLyB2YWxp
ZGF0ZVdlYkdMT2JqZWN0IGdlbmVyYXRlcyBhbiBlcnJvciBpZiB0aGUgb2JqZWN0IGhhcyBhbHJl
YWR5IGJlZW4KICAgICAvLyBkZWxldGVkLCBzbyB3ZSBtdXN0IHJlcGxpY2F0ZSBtb3N0IG9mIGl0
cyBjaGVja3MgaGVyZS4KQEAgLTI2MzUsNyArMjYzNSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6ZGVsZXRlVmVydGV4QXJyYXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogYXJyYXlP
YmplCiAgICAgICAgIC8vIGJpbmRWZXJ0ZXhBcnJheSBncmFicyB0aGUgbG9jayBpbnRlcm5hbGx5
LgogICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKICAgICAgICAgYmluZFZlcnRleEFycmF5
KG51bGxwdHIpOyAvLyBUaGUgZGVmYXVsdCBWQU8gd2FzIHJlbW92ZWQgaW4gT3BlbkdMIDMuMyBi
dXQgbm90IGZyb20gV2ViR0wgMjsgYmluZCB0aGUgZGVmYXVsdCBmb3IgV2ViR0wgdG8gdXNlLgot
ICAgICAgICBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgICAgIGxv
Y2tlciA9IExvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAgICAgfQogCiAgICAgYXJyYXlP
YmplY3QtPmRlbGV0ZU9iamVjdChsb2NrZXIsIGdyYXBoaWNzQ29udGV4dEdMKCkpOwpAQCAtMjY1
Niw3ICsyNjU2LDcgQEAgR0NHTGJvb2xlYW4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aXNWZXJ0
ZXhBcnJheShXZWJHTFZlcnRleEFycmF5T2JqZWN0KiBhcnJheU8KIAogdm9pZCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpiaW5kVmVydGV4QXJyYXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogYXJy
YXlPYmplY3QpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2so
KSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAo
IXZhbGlkYXRlTnVsbGFibGVXZWJHTE9iamVjdCgiYmluZFZlcnRleEFycmF5IiwgYXJyYXlPYmpl
Y3QpKQogICAgICAgICByZXR1cm47CkBAIC0zMDk2LDcgKzMwOTYsNyBAQCB2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmFkZE1lbWJlcnNUb09wYXF1ZVJvb3RzKEpTQzo6QWJzdHJhY3RTbG90
VmlzaXRvciYgdgogewogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmFkZE1lbWJlcnNU
b09wYXF1ZVJvb3RzKHZpc2l0b3IpOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmpl
Y3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07
CiAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KG1fcmVhZEZyYW1lYnVmZmVyQmluZGluZy5nZXQo
KSk7CiAgICAgaWYgKG1fcmVhZEZyYW1lYnVmZmVyQmluZGluZykKICAgICAgICAgbV9yZWFkRnJh
bWVidWZmZXJCaW5kaW5nLT5hZGRNZW1iZXJzVG9PcGFxdWVSb290cyhsb2NrZXIsIHZpc2l0b3Ip
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0R3Jv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0R3JvdXAuY3Bw
CmluZGV4IGQ2YWI1MTZhZTJmYTJhNmY3OTYyOWI0MmI2ZjgxZjAwY2Y4NmJhYzYuLmFiZDhmMjcz
NjgzOTFlM2UxZDdmY2Y5ZDM3YjlkNzc5NmFmMzM2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRHcm91cC5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2
b2lkIFdlYkdMQ29udGV4dEdyb3VwOjpkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3RzKCkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3Jh
cGhMb2NrRm9yQUNvbnRleHQoKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9j
a0ZvckFDb250ZXh0KCkgfTsKICAgICB3aGlsZSAoIW1fZ3JvdXBPYmplY3RzLmlzRW1wdHkoKSkK
ICAgICAgICAgKCptX2dyb3VwT2JqZWN0cy5iZWdpbigpKS0+ZGV0YWNoQ29udGV4dEdyb3VwKGxv
Y2tlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZy
YW1lYnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZm
ZXIuY3BwCmluZGV4IDk1YWJjMDMzZTJjNmVkNGZlYTI1OTQ5NDMzY2QxMzBkN2YzNWZiNTcuLmE5
NjBjZjVjMjM3ZWM4NDQyOThiMDliYjZlZGFhZGUyOWRlYmNlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCkBAIC02MDIsNyArNjAyLDcg
QEAgYm9vbCBXZWJHTEZyYW1lYnVmZmVyOjppbml0aWFsaXplQXR0YWNobWVudHMoR3JhcGhpY3ND
b250ZXh0R0wqIGczZCwgY29uc3QgY2hhcioKICAgICAgICAgLy8gQ29udGV4dCBoYXMgYmVlbiBk
ZWxldGVkIC0gc2hvdWxkIG5vdCBiZSBjYWxsaW5nIHRoaXMuCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2tGb3JD
b250ZXh0KCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2tGb3JDb250ZXh0
KCkgfTsKIAogICAgIEFTU0VSVChvYmplY3QoKSk7CiAgICAgR0NHTGJpdGZpZWxkIG1hc2sgPSAw
OwpAQCAtNzU0LDcgKzc1NCw3IEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6c2V0QXR0YWNobWVu
dEludGVybmFsKEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHRleFRhCiAgICAgICAgIC8v
IENvbnRleHQgaGFzIGJlZW4gZGVsZXRlZCAtIHNob3VsZCBub3QgYmUgY2FsbGluZyB0aGlzLgog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0
R3JhcGhMb2NrRm9yQ29udGV4dCgpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhM
b2NrRm9yQ29udGV4dCgpIH07CiAKICAgICByZW1vdmVBdHRhY2htZW50SW50ZXJuYWwobG9ja2Vy
LCBhdHRhY2htZW50KTsKICAgICBpZiAodGV4dHVyZSAmJiB0ZXh0dXJlLT5vYmplY3QoKSkgewpA
QCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6c2V0QXR0YWNobWVudElu
dGVybmFsKEdDR0xlbnVtIGF0dGFjaG1lbnQsIFdlYkdMUmVuZGVyYnVmCiAgICAgICAgIC8vIENv
bnRleHQgaGFzIGJlZW4gZGVsZXRlZCAtIHNob3VsZCBub3QgYmUgY2FsbGluZyB0aGlzLgogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3Jh
cGhMb2NrRm9yQ29udGV4dCgpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2Nr
Rm9yQ29udGV4dCgpIH07CiAKICAgICByZW1vdmVBdHRhY2htZW50SW50ZXJuYWwobG9ja2VyLCBh
dHRhY2htZW50KTsKICAgICBpZiAocmVuZGVyYnVmZmVyICYmIHJlbmRlcmJ1ZmZlci0+b2JqZWN0
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcAppbmRleCBk
YjJiNzI1YWMxYjEzZjY5M2Q4ZDU4YmM1NjE0NGI3ZjkwZTRjMGQyLi5mMjgwODAzMzYxYmVjNjAy
OWIyMGRjY2FmMDgxMjMwOGExMjJjZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xPYmplY3QuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgV2ViR0xPYmplY3Q6OnJ1bkRl
c3RydWN0b3IoKQogICAgICAgICBhdXRvIGxvY2tlciA9IEFic3RyYWN0TG9ja2VyKE5vTG9ja2lu
Z05lY2Vzc2FyeSk7CiAgICAgICAgIGRlbGV0ZU9iamVjdChsb2NrZXIsIG51bGxwdHIpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobG9jayk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBsb2NrIH07CiAgICAgICAgIGRlbGV0ZU9iamVjdChsb2NrZXIsIG51
bGxwdHIpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggYzI0YTg0ZGE4ZDMwNjg3YzYy
ZWU5YzU4MmE0ZGRkOWEyODBiNTIxMS4uNTE1NTQ4OGQ3ZWQxZGE5NTBkNWFmNjc4ZDQ2ZDIzNDBi
OGJhOWNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTEzNDUsNyArMTM0NSw3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKQog
CiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmF0dGFjaFNoYWRlcihXZWJHTFByb2dy
YW0mIHByb2dyYW0sIFdlYkdMU2hhZGVyJiBzaGFkZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdy
YXBoTG9jaygpIH07CiAKICAgICBpZiAoIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImF0
dGFjaFNoYWRlciIsICZwcm9ncmFtKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigi
YXR0YWNoU2hhZGVyIiwgJnNoYWRlcikpCiAgICAgICAgIHJldHVybjsKQEAgLTE0NDUsNyArMTQ0
NSw3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVBbmRDYWNoZUJ1
ZmZlckJpbmRpbmcoY29uc3QgQWJzdHJhY3RMb2NrCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6YmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIp
CiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAoIXZhbGlkYXRl
TnVsbGFibGVXZWJHTE9iamVjdCgiYmluZEJ1ZmZlciIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVy
bjsKQEAgLTE0NTgsNyArMTQ1OCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
YmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIpCiAKIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdl
dCwgV2ViR0xGcmFtZWJ1ZmZlciogYnVmZmVyKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExv
Y2soKSB9OwogCiAgICAgaWYgKCF2YWxpZGF0ZU51bGxhYmxlV2ViR0xPYmplY3QoImJpbmRGcmFt
ZWJ1ZmZlciIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybjsKQEAgLTE0NzMsNyArMTQ3Myw3IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVt
IHRhcmdldCwgV2ViR0xGcmFtZWJ1ZmZlCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6YmluZFJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFdlYkdMUmVuZGVyYnVmZmVyKiBy
ZW5kZXJCdWZmZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExv
Y2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBp
ZiAoIXZhbGlkYXRlTnVsbGFibGVXZWJHTE9iamVjdCgiYmluZFJlbmRlcmJ1ZmZlciIsIHJlbmRl
ckJ1ZmZlcikpCiAgICAgICAgIHJldHVybjsKQEAgLTE0ODksNyArMTQ4OSw3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZFJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQs
IFdlYkdMUmVuZGVyYnVmCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZFRl
eHR1cmUoR0NHTGVudW0gdGFyZ2V0LCBXZWJHTFRleHR1cmUqIHRleHR1cmUpCiB7Ci0gICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAoIXZhbGlkYXRlTnVsbGFibGVXZWJH
TE9iamVjdCgiYmluZFRleHR1cmUiLCB0ZXh0dXJlKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjA0
Niw3ICsyMDQ2LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzZXRCb3VuZFZl
cnRleEFycmF5T2JqZWN0KGNvbnN0IEFic3RyYWN0TG9ja2VyJiwKIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpkZWxldGVCdWZmZXIoV2ViR0xCdWZmZXIqIGJ1ZmZlcikKIHsKLSAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmICghZGVsZXRlT2JqZWN0KGxv
Y2tlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjA1Niw3ICsyMDU2LDcgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxldGVCdWZmZXIoV2ViR0xCdWZmZXIqIGJ1
ZmZlcikKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxldGVGcmFtZWJ1ZmZl
cihXZWJHTEZyYW1lYnVmZmVyKiBmcmFtZWJ1ZmZlcikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3Jh
cGhMb2NrKCkgfTsKIAogI2lmIEVOQUJMRShXRUJYUikKICAgICBpZiAoZnJhbWVidWZmZXIgJiYg
ZnJhbWVidWZmZXItPmlzT3BhcXVlKCkpIHsKQEAgLTIwNzksNyArMjA3OSw3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlUHJvZ3JhbShXZWJHTFByb2dyYW0qIHByb2dy
YW0pCiAgICAgaWYgKHByb2dyYW0pCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbERlc3Ryb3lXZWJHTFByb2dyYW0oKnByb2dyYW0pOwogCi0gICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdy
YXBoTG9jaygpIH07CiAKICAgICBkZWxldGVPYmplY3QobG9ja2VyLCBwcm9ncmFtKTsKICAgICAv
LyBXZSBkb24ndCByZXNldCBtX2N1cnJlbnRQcm9ncmFtIHRvIDAgaGVyZSBiZWNhdXNlIHRoZSBk
ZWxldGlvbiBvZiB0aGUKQEAgLTIwODgsNyArMjA4OCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6ZGVsZXRlUHJvZ3JhbShXZWJHTFByb2dyYW0qIHByb2dyYW0pCiAKIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlUmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVy
YnVmZmVyKiByZW5kZXJidWZmZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmpl
Y3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07
CiAKICAgICBpZiAoIWRlbGV0ZU9iamVjdChsb2NrZXIsIHJlbmRlcmJ1ZmZlcikpCiAgICAgICAg
IHJldHVybjsKQEAgLTIxMDMsMTMgKzIxMDMsMTMgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpkZWxldGVSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJidWZmZXIqIHJlbmRlcmJ1ZmYK
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxldGVTaGFkZXIoV2ViR0xTaGFk
ZXIqIHNoYWRlcikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9j
aygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKICAgICBkZWxl
dGVPYmplY3QobG9ja2VyLCBzaGFkZXIpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmRlbGV0ZVRleHR1cmUoV2ViR0xUZXh0dXJlKiB0ZXh0dXJlKQogewotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIg
eyBvYmplY3RHcmFwaExvY2soKSB9OwogCiAgICAgaWYgKCFkZWxldGVPYmplY3QobG9ja2VyLCB0
ZXh0dXJlKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjE3MSw3ICsyMTcxLDcgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZXB0aFJhbmdlKEdDR0xmbG9hdCB6TmVhciwgR0NHTGZs
b2F0IHpGYXIpCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGV0YWNoU2hhZGVy
KFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgV2ViR0xTaGFkZXImIHNoYWRlcikKIHsKLSAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmICghdmFsaWRhdGVXZWJHTFByb2dyYW1P
clNoYWRlcigiZGV0YWNoU2hhZGVyIiwgJnByb2dyYW0pIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3Jh
bU9yU2hhZGVyKCJkZXRhY2hTaGFkZXIiLCAmc2hhZGVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NjA0NSw3ICs2MDQ1LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
TWF0cml4NGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2MKIAogdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1c2VQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKIHsK
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmICghdmFsaWRhdGVOdWxs
YWJsZVdlYkdMT2JqZWN0KCJ1c2VQcm9ncmFtIiwgcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybjsK
QEAgLTYxMTIsNyArNjExMiw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVy
dGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBGbG9hdDMyTGlzdCYmIHYpCiAKIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliUG9pbnRlcihHQ0dMdWludCBpbmRl
eCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBH
Q0dMc2l6ZWkgc3RyaWRlLCBsb25nIGxvbmcgb2Zmc2V0KQogewotICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RH
cmFwaExvY2soKSB9OwogCiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNjMwNyw3ICs2MzA3LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3RzKCkKICAgICBpZiAobV9pc1BlbmRpbmdQ
b2xpY3lSZXNvbHV0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3Jh
cGhMb2NrKCkgfTsKIAogICAgIHdoaWxlIChtX2NvbnRleHRPYmplY3RzLnNpemUoKSA+IDApIHsK
ICAgICAgICAgSGFzaFNldDxXZWJHTENvbnRleHRPYmplY3QqPjo6aXRlcmF0b3IgaXQgPSBtX2Nv
bnRleHRPYmplY3RzLmJlZ2luKCk7CkBAIC03OTU4LDcgKzc5NTgsNyBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKQog
CiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmFkZE1lbWJlcnNUb09wYXF1ZVJvb3Rz
KEpTQzo6QWJzdHJhY3RTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0
R3JhcGhMb2NrKCkgfTsKIAogICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChtX2JvdW5kQXJyYXlC
dWZmZXIuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9SZXZlcmJDb252b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiQ29udm9sdmVyLmNwcAppbmRleCAyNzljYWVjYjcyZDhhNDUyOWEzZDIyM2E0YWZkYzk4MTc0
MjNjYzRhLi4yN2IyOTgyZGMzZmQ5MTY4NWQzMTdhN2VkMWE5YzFlNmVlNDdiMjZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKQEAg
LTEzMyw3ICsxMzMsNyBAQCBSZXZlcmJDb252b2x2ZXI6On5SZXZlcmJDb252b2x2ZXIoKQogCiAg
ICAgICAgIC8vIFdha2UgdXAgdGhyZWFkIHNvIGl0IGNhbiByZXR1cm4KICAgICAgICAgewotICAg
ICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2JhY2tncm91bmRUaHJlYWRMb2NrKTsK
KyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2JhY2tncm91bmRUaHJlYWRMb2NrIH07CiAg
ICAgICAgICAgICBtX21vcmVJbnB1dEJ1ZmZlcmVkID0gdHJ1ZTsKICAgICAgICAgICAgIG1fYmFj
a2dyb3VuZFRocmVhZENvbmRpdGlvblZhcmlhYmxlLm5vdGlmeU9uZSgpOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3Rp
bmF0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9EZXN0aW5hdGlvbkNvY29hLmNwcAppbmRleCBlNTg5MTRkOThjOTZhOTA3YzE1Zjk2M2Y3N2I4
NDEyYTE5NzZmZDgzLi5iNGNjMTNkYmRiOGVmM2NiZGRiZjY5NWNhNjI2ZDkyZTQxMGE2YzNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3Rp
bmF0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIEF1ZGlv
RGVzdGluYXRpb25Db2NvYTo6c3RhcnQoRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYp
PiYmIGRpc3BhdGNoVAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKE1lZGlh
LCAiQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdGFydCIpOwogICAgIHsKLSAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWRMb2NrKTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZExvY2sgfTsKICAgICAgICAg
bV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkID0gV1RGTW92ZShkaXNwYXRjaFRvUmVuZGVyVGhyZWFk
KTsKICAgICB9CiAgICAgc3RhcnRSZW5kZXJpbmcoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdG9wKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsCiAgICAgTE9HKE1l
ZGlhLCAiQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdG9wIik7CiAgICAgc3RvcFJlbmRlcmluZyhX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZExvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkTG9jayB9OwogICAgICAgICBtX2Rpc3Bh
dGNoVG9SZW5kZXJUaHJlYWQgPSBudWxscHRyOwogICAgIH0KIH0KQEAgLTE1Miw3ICsxNTIsNyBA
QCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5n
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgewotICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1faXNQbGF5aW5nTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBtX2lzUGxheWluZ0xvY2sgfTsKICAgICAgICAgaWYgKG1faXNQbGF5aW5nID09IGlzUGxheWlu
ZykKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlk
ZXJHU3RyZWFtZXIuY3BwCmluZGV4IGE5NjI0NmE0ODg1MDE0MWMzNzUwNDllOWJiOTk0MmUyNjQy
ODRjZTQuLjY5MGMxZGI5NzU5Mjk0ZTRjYjA3NDQ0MDM0MTFiZjlkNTY1ZTJhNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVBy
b3ZpZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAKQEAgLTE4Miw3ICsxODIs
NyBAQCBHc3RGbG93UmV0dXJuIEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmhhbmRsZVNh
bXBsZShHc3RBcHBTaW5rKiBzaW5rLCBib29sCiAKICAgICBHU1RfVFJBQ0UoIlN0b3JpbmcgYXVk
aW8gc2FtcGxlICUiIEdTVF9QVFJfRk9STUFULCBzYW1wbGUuZ2V0KCkpOwogICAgIHsKLSAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2FkYXB0ZXJNdXRleCk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX2FkYXB0ZXJNdXRleCB9OwogICAgICAgICBHUXVhcmsgcXVhcmsgPSBnX3F1
YXJrX2Zyb21fc3RhdGljX3N0cmluZygiY2hhbm5lbC1pZCIpOwogICAgICAgICBpbnQgY2hhbm5l
bElkID0gR1BPSU5URVJfVE9fSU5UKGdfb2JqZWN0X2dldF9xZGF0YShHX09CSkVDVChzaW5rKSwg
cXVhcmspKTsKICAgICAgICAgR1NUX0RFQlVHKCJDaGFubmVsIElEOiAlZCIsIGNoYW5uZWxJZCk7
CkBAIC0zODQsNyArMzg0LDcgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpk
ZWludGVybGVhdmVQYWRzQ29uZmlndXJlZCgpCiAKIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdT
dHJlYW1lcjo6Y2xlYXJBZGFwdGVycygpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2FkYXB0ZXJNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYWRhcHRlck11dGV4IH07CiAg
ICAgZm9yIChhdXRvJiBhZGFwdGVyIDogbV9hZGFwdGVycy52YWx1ZXMoKSkKICAgICAgICAgZ3N0
X2FkYXB0ZXJfY2xlYXIoYWRhcHRlci5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdl
YkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA4Y2ViMThjMTgxYzFjODEzYmNhYzc1ODI0
NTAyYTI5MDk5Zjk3NTgwLi40ZGMzN2IyMmYwMTIwOGFkMWM3MzFlZWZkN2ZlNjQwYWVhMWQ2NjU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2Vi
S2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKQEAg
LTQ4OSw3ICs0ODksNyBAQCBzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gd2ViS2l0V2ViQXVk
aW9TcmNDaGFuZ2VTdGF0ZShHc3RFbGVtZW50KiBlbGVtZW50LCBHcwogCiB2b2lkIHdlYmtpdFdl
YkF1ZGlvU291cmNlU2V0RGlzcGF0Y2hUb1JlbmRlclRocmVhZEZ1bmN0aW9uKFdlYktpdFdlYkF1
ZGlvU3JjKiBzcmMsIEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBmdW5jdGlv
bikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHNyYy0+cHJpdi0+ZGlzcGF0Y2hUb1Jl
bmRlclRocmVhZExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBzcmMtPnByaXYtPmRpc3BhdGNo
VG9SZW5kZXJUaHJlYWRMb2NrIH07CiAgICAgc3JjLT5wcml2LT5kaXNwYXRjaFRvUmVuZGVyVGhy
ZWFkRnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAK
aW5kZXggNzBkNDdhZjZiYmY0NTk4YjAzZjMwMTZmYzVjYTg3NmI3NjRmMTJlZS4uYWU2OGQzNDdj
N2YyZDMxZjQ5M2ZiMjgzYjlkOTJkMzI1NzkzNzg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCkBA
IC0xMzgsNyArMTM4LDcgQEAgdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmNsaWVudFByZWZl
cnJlZEZyYW1lc1BlclNlY29uZENoYW5nZWQoRGlzcGxheVJlZnJlc2gKIAogYm9vbCBEaXNwbGF5
UmVmcmVzaE1vbml0b3I6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKQogewotICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAg
ICAgCiAgICAgaWYgKGlzU2NoZWR1bGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTY2
LDcgKzE2Niw3IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpmaXJlZEFuZFJlYWNoZWRN
YXhVbnNjaGVkdWxlZEZpcmVDb3VudCgpCiB2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlz
cGxheUxpbmtGaXJlZChjb25zdCBEaXNwbGF5VXBkYXRlJiBkaXNwbGF5VXBkYXRlKQogewogICAg
IHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICAgICAgLy8gVGhpcyBtYXkgYmUgb2ZmIHRoZSBt
YWluIHRocmVhZC4KICAgICAgICAgaWYgKCFpc1ByZXZpb3VzRnJhbWVEb25lKCkpCkBAIC0yMTks
NyArMjE5LDcgQEAgdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlEaWRSZWZyZXNo
KGNvbnN0IERpc3BsYXlVcGRhdGUmIGRpc3BsYXlVcGRhdGUKICAgICAgICAgbV9jbGllbnRzVG9C
ZU5vdGlmaWVkID0gbnVsbHB0cjsKIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAg
IHNldElzUHJldmlvdXNGcmFtZURvbmUodHJ1ZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAppbmRleCAzYTNiMjVjMzM5NDI2NThh
ZDk2NTZkNzdkY2Q2MTNiYjMyZWQ3MDIyLi5iODhjMDQ5NWM1NzFhYTdkNWY0YThiZTU1MDBmZjk2
YzU3YTYyZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YWNoZS5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6
OmNhY2hlZEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RAogICAg
IGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MqIGZlYXR1cmVzLCBGb250U2VsZWN0aW9uU3BlY2lm
aWVkQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllcywgYm9vbCBjaGVja2luZ0FsdGVybmF0ZU5hbWUp
CiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fZm9udExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2ZvbnRMb2NrIH07CiAjZW5kaWYK
IAogI2lmIE9TKFdJTkRPV1MpICYmIEVOQUJMRShPUEVOVFlQRV9WRVJUSUNBTCkKQEAgLTI3Niw3
ICsyNzYsNyBAQCBSZWZQdHI8Rm9udD4gRm9udENhY2hlOjpmb250Rm9yRmFtaWx5KGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjbwogUmVmPEZvbnQ+IEZvbnRDYWNoZTo6
Zm9udEZvclBsYXRmb3JtRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEp
CiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fZm9udExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2ZvbnRMb2NrIH07CiAjZW5kaWYK
IAogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9mb250RGF0YUNhY2hlcy0+ZGF0YS5lbnN1cmUocGxh
dGZvcm1EYXRhLCBbJl0gewpAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgRm9udENhY2hlOjpwdXJn
ZUluYWN0aXZlRm9udERhdGEodW5zaWduZWQgcHVyZ2VDb3VudCkKICAgICBwcnVuZVN5c3RlbUZh
bGxiYWNrRm9udHMoKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX2ZvbnRMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9mb250TG9j
ayB9OwogI2VuZGlmCiAKICAgICB3aGlsZSAocHVyZ2VDb3VudCkgewpAQCAtNDQ5LDcgKzQ0OSw3
IEBAIHNpemVfdCBGb250Q2FjaGU6OmZvbnRDb3VudCgpCiBzaXplX3QgRm9udENhY2hlOjppbmFj
dGl2ZUZvbnRDb3VudCgpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fZm9udExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2ZvbnRM
b2NrIH07CiAjZW5kaWYKICAgICB1bnNpZ25lZCBjb3VudCA9IDA7CiAgICAgZm9yIChhdXRvJiBm
b250IDogbV9mb250RGF0YUNhY2hlcy0+ZGF0YS52YWx1ZXMoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCmluZGV4IGY0M2UzMzIwYzk3MDk4
MjQ4OGUyODczYjg1YjNlN2RiZTI2NjM1YWYuLjQ3OTc2ODNiODBiYjQ5MDVhN2E4MTY4ODdhNDM1
NGQxMjk4ZWNkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakMubW0KQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJB
VkZPYmpDOjpkZXN0cm95TWl4SWZOZWVkZWQoKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJU
KG1fdGFwU3RvcmFnZSk7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
dGFwU3RvcmFnZS0+bG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3RhcFN0b3JhZ2Ut
PmxvY2sgfTsKICAgICAgICAgaWYgKG1fYXZQbGF5ZXJJdGVtKQogICAgICAgICAgICAgW21fYXZQ
bGF5ZXJJdGVtIHNldEF1ZGlvTWl4Om5pbF07CiAgICAgICAgIFttX2F2QXVkaW9NaXggc2V0SW5w
dXRQYXJhbWV0ZXJzOkBbIF1dOwpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgQXVkaW9Tb3VyY2VQ
cm92aWRlckFWRk9iakM6OmNyZWF0ZU1peElmTmVlZGVkKCkKICAgICBBU1NFUlQoIW1fdGFwKTsK
IAogICAgIGF1dG8gdGFwU3RvcmFnZSA9IGFkb3B0UmVmKG5ldyBUYXBTdG9yYWdlKHRoaXMpKTsK
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHRhcFN0b3JhZ2UtPmxvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyB0YXBTdG9yYWdlLT5sb2NrIH07CiAKICAgICBNVEF1ZGlvUHJvY2Vzc2luZ1Rh
cENhbGxiYWNrcyBjYWxsYmFja3MgPSB7CiAgICAgICAgIDAsCkBAIC0yNjIsNyArMjYyLDcgQEAg
dm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZUNhbGxiYWNrKE1UQXVkaW9Q
cm9jZXNzaW5nVGFwUmVmIHRhcCwgQ00KICAgICBBU1NFUlQodGFwKTsKICAgICBUYXBTdG9yYWdl
KiB0YXBTdG9yYWdlID0gc3RhdGljX2Nhc3Q8VGFwU3RvcmFnZSo+KE1UQXVkaW9Qcm9jZXNzaW5n
VGFwR2V0U3RvcmFnZSh0YXApKTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGFwU3Rv
cmFnZS0+bG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHRhcFN0b3JhZ2UtPmxvY2sgfTsKIAog
ICAgIGlmICh0YXBTdG9yYWdlLT5fdGhpcykKICAgICAgICAgdGFwU3RvcmFnZS0+X3RoaXMtPnBy
ZXBhcmUobWF4RnJhbWVzLCBwcm9jZXNzaW5nRm9ybWF0KTsKQEAgLTI3Myw3ICsyNzMsNyBAQCB2
b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjp1bnByZXBhcmVDYWxsYmFjayhNVEF1ZGlv
UHJvY2Vzc2luZ1RhcFJlZiB0YXApCiAgICAgQVNTRVJUKHRhcCk7CiAgICAgVGFwU3RvcmFnZSog
dGFwU3RvcmFnZSA9IHN0YXRpY19jYXN0PFRhcFN0b3JhZ2UqPihNVEF1ZGlvUHJvY2Vzc2luZ1Rh
cEdldFN0b3JhZ2UodGFwKSk7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHRhcFN0b3Jh
Z2UtPmxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyB0YXBTdG9yYWdlLT5sb2NrIH07CiAKICAg
ICBpZiAodGFwU3RvcmFnZS0+X3RoaXMpCiAgICAgICAgIHRhcFN0b3JhZ2UtPl90aGlzLT51bnBy
ZXBhcmUoKTsKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDOjpwcm9jZXNzQ2FsbGJhY2soTVRBdWRpb1Byb2Nlc3NpbmdUYXBSZWYgdGFwLCBDTQogICAg
IEFTU0VSVCh0YXApOwogICAgIFRhcFN0b3JhZ2UqIHRhcFN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxU
YXBTdG9yYWdlKj4oTVRBdWRpb1Byb2Nlc3NpbmdUYXBHZXRTdG9yYWdlKHRhcCkpOwogCi0gICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayh0YXBTdG9yYWdlLT5sb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgdGFwU3RvcmFnZS0+bG9jayB9OwogCiAgICAgaWYgKHRhcFN0b3JhZ2UtPl90aGlzKQog
ICAgICAgICB0YXBTdG9yYWdlLT5fdGhpcy0+cHJvY2Vzcyh0YXAsIG51bWJlckZyYW1lcywgZmxh
Z3MsIGJ1ZmZlckxpc3RJbk91dCwgbnVtYmVyRnJhbWVzT3V0LCBmbGFnc091dCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMubW0KaW5kZXggYWU5NDQ4Njg3ZmRkZjFlNDZmNzE2ZDVlYTNjY2NkZjhi
NWY0ZDYzMy4uODEzOTk2Yzc2YzY0MWI3Y2FlMDQ2ZjU5NzFlYzc0N2NmOTFjZTlkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpsYXllcnNBcmVJbml0aWFsaXplZChJbnRTaXpl
IHNpemUsIGJvCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpk
ZXN0cm95TGF5ZXJzKCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTG9jayB9OwogCiAgICAgbV9jYW5FbnF1ZXVlRGlzcGxheUxheWVyID0gZmFs
c2U7CiAgICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQpAQCAtMTA2Miw3ICsxMDYy
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OkN1cnJlbnRG
cmFtZVBhaW50ZXI6OnJlc2V0KCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnJvb3RMYXllckJvdW5kc0RpZENoYW5nZSgpCiB7Ci0gICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckxvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckxvY2sgfTsKICAgICBpZiAobV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIpCiAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LT51cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+cm9v
dExheWVyKCkuYm91bmRzLCBtX3ZpZGVvUm90YXRpb24pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAppbmRleCA2ODA0ZjA2OWI1MTQyMTI4
M2M5ZGQwMGZhOTJjZThmYmM3OTE2YTNkLi5kZGMwZGEwOTNjOGJjZDNiZTQzNzZkMTUxOGVjN2Qx
YTEzZTc3NDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9Db2xvckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9D
b2xvckNHLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihj
b25zdCBDb2xvciYgY29sb3IpCiAgICAgfQogCiAgICAgc3RhdGljIExvY2sgY2FjaGVkQ29sb3JM
b2NrOwotICAgIGF1dG8gaG9sZGVyID0gaG9sZExvY2soY2FjaGVkQ29sb3JMb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgY2FjaGVkQ29sb3JMb2NrIH07CiAKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VGlueUxSVUNhY2hlPENvbG9yLCBSZXRhaW5QdHI8Q0dDb2xvclJlZj4sIDMyPj4gY2Fj
aGU7CiAgICAgcmV0dXJuIGNhY2hlLmdldCgpLmdldChjb2xvcikuZ2V0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDA3YjNkOWZiZTgw
NGM0ZjgwMTAwNTUxYWVmMDEyMzYyYWUyMzgwZWYuLjNlOTA1M2VkZjUxYzdkZmY5Njc5NDUyMzZj
MzI2MTU0ZGY1YzZhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCkBAIC0xMDI5LDcgKzEwMjksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZWaWRlbygpCiB9CiBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6aGFzRmlyc3RWaWRlb1NhbXBsZVJlYWNoZWRTaW5rKCkgY29uc3QKIHsK
LSAgICBhdXRvIHNhbXBsZUxvY2tlciA9IGhvbGRMb2NrKG1fc2FtcGxlTXV0ZXgpOworICAgIExv
Y2tlciBzYW1wbGVMb2NrZXIgeyBtX3NhbXBsZU11dGV4IH07CiAgICAgcmV0dXJuICEhbV9zYW1w
bGU7CiB9CiAKQEAgLTI4OTMsNyArMjg5Myw3IEBAIHByaXZhdGU6CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpwdXNoVGV4dHVyZVRvQ29tcG9zaXRvcigpCiB7Ci0gICAgYXV0
byBzYW1wbGVMb2NrZXIgPSBob2xkTG9jayhtX3NhbXBsZU11dGV4KTsKKyAgICBMb2NrZXIgc2Ft
cGxlTG9ja2VyIHsgbV9zYW1wbGVNdXRleCB9OwogICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3Nh
bXBsZS5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzA3NCw3ICszMDc0LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRyaWdnZXJSZXBhaW50KEdzdFNhbXBsZSog
c2FtcGxlKQogCiAgICAgYm9vbCBzaG91bGRUcmlnZ2VyUmVzaXplOwogICAgIHsKLSAgICAgICAg
YXV0byBzYW1wbGVMb2NrZXIgPSBob2xkTG9jayhtX3NhbXBsZU11dGV4KTsKKyAgICAgICAgTG9j
a2VyIHNhbXBsZUxvY2tlciB7IG1fc2FtcGxlTXV0ZXggfTsKICAgICAgICAgc2hvdWxkVHJpZ2dl
clJlc2l6ZSA9ICFtX3NhbXBsZTsKICAgICAgICAgbV9zYW1wbGUgPSBzYW1wbGU7CiAgICAgfQpA
QCAtMzE2NCw3ICszMTY0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnJl
cGFpbnRDYW5jZWxsZWRDYWxsYmFjayhNZWRpYVBsYXllclByaXZhdGVHU3QKICNpZiBVU0UoR1NU
UkVBTUVSX0dMKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmZsdXNoQ3VycmVu
dEJ1ZmZlcigpCiB7Ci0gICAgYXV0byBzYW1wbGVMb2NrZXIgPSBob2xkTG9jayhtX3NhbXBsZU11
dGV4KTsKKyAgICBMb2NrZXIgc2FtcGxlTG9ja2VyIHsgbV9zYW1wbGVNdXRleCB9OwogCiAgICAg
aWYgKG1fc2FtcGxlKSB7CiAgICAgICAgIC8vIEFsbG9jYXRlIGEgbmV3IGNvcHkgb2YgdGhlIHNh
bXBsZSB3aGljaCBoYXMgdG8gYmUgcmVsZWFzZWQuIFRoZSBjb3B5IGlzIG5lY2Vzc2FyeSBzbyB0
aGF0CkBAIC0zMjA3LDcgKzMyMDcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlYwogICAgIGlm
ICghbV92aXNpYmxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHNhbXBsZUxvY2tlciA9
IGhvbGRMb2NrKG1fc2FtcGxlTXV0ZXgpOworICAgIExvY2tlciBzYW1wbGVMb2NrZXIgeyBtX3Nh
bXBsZU11dGV4IH07CiAgICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlLmdldCgpKSkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0zMjc2LDcgKzMyNzYsNyBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNz
Q29udAogICAgIGlmIChwcmVtdWx0aXBseUFscGhhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBhdXRvIHNhbXBsZUxvY2tlciA9IGhvbGRMb2NrKG1fc2FtcGxlTXV0ZXgpOworICAgIExv
Y2tlciBzYW1wbGVMb2NrZXIgeyBtX3NhbXBsZU11dGV4IH07CiAKICAgICBpZiAoIUdTVF9JU19T
QU1QTEUobV9zYW1wbGUuZ2V0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNTc2LDcg
KzM1NzYsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6d2FpdEZvckNETUF0
dGFjaG1lbnQoKQogCiAgICAgYm9vbCBkaWRDRE1BdHRhY2ggPSBmYWxzZTsKICAgICB7Ci0gICAg
ICAgIGF1dG8gY2RtQXR0YWNobWVudExvY2tlciA9IGhvbGRMb2NrKG1fY2RtQXR0YWNobWVudE11
dGV4KTsKKyAgICAgICAgTG9ja2VyIGNkbUF0dGFjaG1lbnRMb2NrZXIgeyBtX2NkbUF0dGFjaG1l
bnRNdXRleCB9OwogICAgICAgICBkaWRDRE1BdHRhY2ggPSBtX2NkbUF0dGFjaG1lbnRDb25kaXRp
b24ud2FpdEZvcihtX2NkbUF0dGFjaG1lbnRNdXRleCwgNF9zLCBbdGhpc10oKSB7CiAgICAgICAg
ICAgICByZXR1cm4gaXNDRE1BdHRhY2hlZCgpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9u
RW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JH
U3RyZWFtZXIuY3BwCmluZGV4IDY5ZTI3ZjQ4NWE4NWFkZmQ0ZWUxZTI4MTMyYzE4MzcwZDdhMzMx
ZTkuLjE4MGUyNjBmOThlYzA2MDZkYzg0OWM0NGFhMzJiNTk3Njg5YjZhMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29t
bW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVj
cnlwdG9yR1N0cmVhbWVyLmNwcApAQCAtMzEyLDcgKzMxMiw3IEBAIHN0YXRpYyBHc3RGbG93UmV0
dXJuIHRyYW5zZm9ybUluUGxhY2UoR3N0QmFzZVRyYW5zZm9ybSogYmFzZSwgR3N0QnVmZmVyKiBi
dWZmZXIpCiBzdGF0aWMgYm9vbCBpc0NETVByb3h5QXZhaWxhYmxlKFdlYktpdE1lZGlhQ29tbW9u
RW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYpCiB7CiAgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0
aW9uRGVjcnlwdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfTUVESUFfQ0VOQ19ERUNSWVBUX0dFVF9Q
UklWQVRFKHNlbGYpOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socHJpdi0+bXV0ZXgpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBwcml2LT5tdXRleCB9OwogICAgIHJldHVybiBwcml2LT5jZG1Q
cm94eTsKIH0KIApAQCAtMzQ1LDcgKzM0NSw3IEBAIHN0YXRpYyB2b2lkIGF0dGFjaENETVByb3h5
KFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYsIENETVByb3h5KiBwCiAg
ICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFByaXZhdGUqIHByaXYgPSBXRUJL
SVRfTUVESUFfQ0VOQ19ERUNSWVBUX0dFVF9QUklWQVRFKHNlbGYpOwogICAgIFdlYktpdE1lZGlh
Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRDbGFzcyoga2xhc3MgPSBXRUJLSVRfTUVESUFfQ0VOQ19E
RUNSWVBUX0dFVF9DTEFTUyhzZWxmKTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socHJp
di0+bXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBwcml2LT5tdXRleCB9OwogICAgIEdTVF9F
UlJPUl9PQkpFQ1Qoc2VsZiwgIkF0dGFjaGluZyBDRE1Qcm94eSAlcCIsIHByb3h5KTsKICAgICBw
cml2LT5jZG1Qcm94eSA9IHByb3h5OwogICAgIGtsYXNzLT5jZG1Qcm94eUF0dGFjaGVkKHNlbGYs
IHByaXYtPmNkbVByb3h5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlVHJh
Y2tHU3RyZWFtZXIuY3BwCmluZGV4IDg2MmIxNjk1MTk0N2VkNTViZGZhZDMyMzg4NzE5N2JjNmUw
ZmQzNzYuLjQzZmVhNWExMWVjZGY0NjcxNThjY2ZmYjY3Nzk2ZDkxNWExYzE5NjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFT
b3VyY2VUcmFja0dTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyLmNwcApAQCAtNjEs
MjggKzYxLDI4IEBAIFJlZjxNZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyPiBNZWRpYVNvdXJjZVRy
YWNrR1N0cmVhbWVyOjpjcmVhdGUoVHJhY2tQcml2YXRlQmFzCiBib29sIE1lZGlhU291cmNlVHJh
Y2tHU3RyZWFtZXI6OmlzUmVhZHlGb3JNb3JlU2FtcGxlcygpCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICBhdXRvIHF1ZXVlID0gaG9sZExvY2sobV9xdWV1ZURhdGFNdXRleCk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcXVldWVEYXRhTXV0ZXggfTsKICAgICByZXR1cm4gIXF1
ZXVlLT5pc0Z1bGwoKTsKIH0KIAogdm9pZCBNZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyOjpub3Rp
ZnlXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhUcmFja1F1ZXVlOjpMb3dMZXZlbEhhbmRsZXImJiBo
YW5kbGVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBxdWV1ZSA9
IGhvbGRMb2NrKG1fcXVldWVEYXRhTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3F1ZXVl
RGF0YU11dGV4IH07CiAgICAgcXVldWUtPm5vdGlmeVdoZW5Mb3dMZXZlbChXVEZNb3ZlKGhhbmRs
ZXIpKTsKIH0KIAogdm9pZCBNZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyOjplbnF1ZXVlT2JqZWN0
KEdSZWZQdHI8R3N0TWluaU9iamVjdD4mJiBvYmplY3QpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLSAgICBhdXRvIHF1ZXVlID0gaG9sZExvY2sobV9xdWV1ZURhdGFNdXRleCk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fcXVldWVEYXRhTXV0ZXggfTsKICAgICBxdWV1ZS0+ZW5xdWV1
ZU9iamVjdChXVEZNb3ZlKG9iamVjdCkpOwogfQogCiB2b2lkIE1lZGlhU291cmNlVHJhY2tHU3Ry
ZWFtZXI6OmNsZWFyUXVldWUoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
YXV0byBxdWV1ZSA9IGhvbGRMb2NrKG1fcXVldWVEYXRhTXV0ZXgpOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3F1ZXVlRGF0YU11dGV4IH07CiAgICAgcXVldWUtPmNsZWFyKCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbQppbmRleCA1
NzdiMDA3NjEzYzMzMTE0MDNkOWE0NzA0NDc0NzEwMzhlYzc2NDUzLi42NWJjYTY3MGY5Mjg2ZDI1
YTE5NTE5MjFiODVmMGEwNWEwMTUyZDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCkBAIC0xNDQsNyArMTQ0LDcgQEAgTlNDb2xvciAq
bnNDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAgfQogCiAgICAgc3RhdGljIExvY2sgY2Fj
aGVkQ29sb3JMb2NrOwotICAgIGF1dG8gaG9sZGVyID0gaG9sZExvY2soY2FjaGVkQ29sb3JMb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgY2FjaGVkQ29sb3JMb2NrIH07CiAKICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hlPENvbG9yLCBSZXRhaW5QdHI8TlNDb2xvcj4sIDMy
Pj4gY2FjaGU7CiAgICAgcmV0dXJuIGNhY2hlLmdldCgpLmdldChjb2xvcikuZ2V0KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJ
bWFnZUJ1ZmZlclBpcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcAppbmRleCA5ZjExMjRmZWE3MDc2NmU2ZTFj
NjRiZGI1YzdjNjNiMGFlOWE0NTk0Li5lMzZkMzZiMWVmMDY4YjA1MzRlM2FhNmUxZTc1MGM4OTUx
Mjc4MDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNv
c2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAKQEAgLTg5LDcg
Kzg5LDcgQEAgdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUoUmVmUHRy
PEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2ltYWdlQnVmZmVyTG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1faW1hZ2VCdWZmZXJMb2NrIH07CiAKICAgICBpZiAoIW1faW1hZ2VC
dWZmZXIpIHsKICAgICAgICAgYXV0byBwcm94eU9wZXJhdGlvbiA9IFt0aGlzXSAoVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXJQcm94eSYgcHJveHkpIG11dGFibGUgewpAQCAtMTAzLDcgKzEwMyw3
IEBAIHZvaWQgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNvdXJjZTo6aGFuZGxlKFJlZlB0cjxJbWFn
ZUJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgICAgICAgICAgYXV0byB0ZXh0dXJlID0gQml0bWFw
VGV4dHVyZUdMOjpjcmVhdGUoVGV4dHVyZU1hcHBlckNvbnRleHRBdHRyaWJ1dGVzOjpnZXQoKSk7
CiAKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9pbWFnZUJ1ZmZlckxvY2spOworICAgICAgICAgICAgICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9pbWFnZUJ1ZmZlckxvY2sgfTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAo
IW1faW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWQubW0KaW5kZXggMTA1
NGM2NGNhZjEyMWQ4ODY2NjQ2YjA2YmFmNDg3MjAzZmNiYzMyMS4uMTlmZmRlZWI1MWQ2Zjg3MWVk
N2E2Y2U5YzU1Y2Q5NDRkNmIyNDExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtMjE3LDcgKzIxNyw3IEBAIHN0YXRpYyB2b2lk
IEhhbmRsZURlbGVnYXRlU291cmNlKHZvaWQqKQogICAgIF9XZWJUaHJlYWRBdXRvTG9jaygpOwog
CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGRlbGVnYXRlTG9jayk7Cisg
ICAgICAgIExvY2tlciBsb2NrZXIgeyBkZWxlZ2F0ZUxvY2sgfTsKIAogI2lmIExPR19NRVNTQUdF
UwogICAgICAgICBpZiAoW1tkZWxlZ2F0ZUludm9jYXRpb24oKSB0YXJnZXRdIGlzS2luZE9mQ2xh
c3M6W05TTm90aWZpY2F0aW9uQ2VudGVyIGNsYXNzXV0pIHsKQEAgLTMyMiw3ICszMjIsNyBAQCB2
b2lkIFdlYlRocmVhZEFkb3B0QW5kUmVsZWFzZShpZCBvYmopCiAgICAgTlNMb2coQCJSZWxlYXNl
IHNlbmQgW21haW4gdGhyZWFkXTogJUAiLCBvYmopOwogI2VuZGlmICAgICAgICAKIAotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sod2ViVGhyZWFkUmVsZWFzZUxvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyB3ZWJUaHJlYWRSZWxlYXNlTG9jayB9OwogCiAgICAgaWYgKHdlYlRocmVhZFJlbGVh
c2VPYmpBcnJheSgpID09IG5pbCkKICAgICAgICAgd2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KCkg
PSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvclN5c3RlbURlZmF1bHQs
IDAsIG51bGxwdHIpKTsKQEAgLTM5MSw3ICszOTEsNyBAQCB2b2lkIFdlYkNvcmVPYmpDRGVhbGxv
Y09uV2ViVGhyZWFkSW1wbChpZCBzZWxmLCBTRUwpCiAgICAgfQogCiAgICAgewotICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKHdlYkNvcmVSZWxlYXNlTG9jayk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyB3ZWJDb3JlUmVsZWFzZUxvY2sgfTsKICAgICAgICAgaWYgKFtzZWxmIHJldGFp
bkNvdW50XSAhPSAxKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIG5vdCB0aGUgb25seSByZWZl
cmVuY2UgcmV0YWluaW5nIHRoZSBvYmplY3QsIHNvIGFub3RoZXIKICAgICAgICAgICAgIC8vIHRo
cmVhZCBjb3VsZCBhbHNvIGNhbGwgcmVsZWFzZSAtIGhvbGQgdGhlIGxvY2sgd2hpbHN0IGNhbGxp
bmcKQEAgLTQxMCw3ICs0MTAsNyBAQCB2b2lkIFdlYkNvcmVPYmpDRGVhbGxvY09uV2ViVGhyZWFk
SW1wbChpZCBzZWxmLCBTRUwpCiAKIHZvaWQgV2ViQ29yZU9iakNEZWFsbG9jV2l0aFdlYlRocmVh
ZExvY2tJbXBsKGlkIHNlbGYsIFNFTCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdl
YkNvcmVSZWxlYXNlTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHdlYkNvcmVSZWxlYXNlTG9j
ayB9OwogICAgIGlmIChXZWJUaHJlYWRJc0xvY2tlZE9yRGlzYWJsZWQoKSB8fCAxICE9IFtzZWxm
IHJldGFpbkNvdW50XSkKICAgICAgICAgW3NlbGYgX3dlYmNvcmVfcmVsZWFzZVdpdGhXZWJUaHJl
YWRMb2NrXTsKICAgICBlbHNlCkBAIC00MjMsNyArNDIzLDcgQEAgc3RhdGljIHZvaWQgSGFuZGxl
V2ViVGhyZWFkUmVsZWFzZVNvdXJjZSh2b2lkKikKIAogICAgIFJldGFpblB0cjxDRk11dGFibGVB
cnJheVJlZj4gb2JqZWN0czsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
d2ViVGhyZWFkUmVsZWFzZUxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgd2ViVGhyZWFk
UmVsZWFzZUxvY2sgfTsKICAgICAgICAgaWYgKENGQXJyYXlHZXRDb3VudCh3ZWJUaHJlYWRSZWxl
YXNlT2JqQXJyYXkoKS5nZXQoKSkpIHsKICAgICAgICAgICAgIG9iamVjdHMgPSBhZG9wdENGKENG
QXJyYXlDcmVhdGVNdXRhYmxlQ29weShudWxscHRyLCAwLCB3ZWJUaHJlYWRSZWxlYXNlT2JqQXJy
YXkoKS5nZXQoKSkpOwogICAgICAgICAgICAgQ0ZBcnJheVJlbW92ZUFsbFZhbHVlcyh3ZWJUaHJl
YWRSZWxlYXNlT2JqQXJyYXkoKS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRSdW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNwcAppbmRleCBjYTk4YThmY2I0OTc2MjUx
YTJjYzE5YmRjZjI3MWY3ZjY0OTZlMzE3Li44ZjgxZDdjMWFjYTQ2OTU1NTFmYzQ0MGI0N2U5MDYx
ZDRiMzVkZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dl
YkNvcmVUaHJlYWRSdW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsv
V2ViQ29yZVRocmVhZFJ1bi5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBzZXRDb21wbGV0ZWQoKQogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X3N0YXRlTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9zdGF0ZU11dGV4IH07CiAK
ICAgICAgICAgQVNTRVJUKCFtX2NvbXBsZXRlZCk7CiAgICAgICAgIG1fY29tcGxldGVkID0gdHJ1
ZTsKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgdm9pZCBIYW5kbGVSdW5Tb3VyY2Uodm9pZCAq
aW5mbykKIAogICAgIFdlYlRocmVhZFJ1blF1ZXVlIHF1ZXVlQ29weTsKICAgICB7Ci0gICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2socnVuUXVldWVNdXRleCk7CisgICAgICAgIExvY2tlciBs
b2NrZXIgeyBydW5RdWV1ZU11dGV4IH07CiAgICAgICAgIHF1ZXVlQ29weSA9ICpydW5RdWV1ZTsK
ICAgICAgICAgcnVuUXVldWUtPmNsZWFyKCk7CiAgICAgfQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0
YXRpYyB2b2lkIF9XZWJUaHJlYWRSdW4odm9pZCAoXmJsb2NrKSh2b2lkKSwgYm9vbCBzeW5jaHJv
bm91cykKICAgICAgICAgc3RhdGUgPSBuZXcgV2ViVGhyZWFkQmxvY2tTdGF0ZTsKIAogICAgIHsK
LSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhydW5RdWV1ZU11dGV4KTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IHJ1blF1ZXVlTXV0ZXggfTsKICAgICAgICAgcnVuUXVldWUtPmFwcGVu
ZChXZWJUaHJlYWRCbG9jayhibG9jaywgc3RhdGUpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tCmluZGV4IGI4NTA2YWI3NmUzMjQ4
YzU1OWRlNTliZWJkOGFiYzFhYmY2NjVkYTUuLmExYmZjMjFiNTllNDBmOGNiYjFmYjM5NjFlZWMz
ODBhMTllYjMzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJs
aWNTdWZmaXhNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1
ZmZpeE1hYy5tbQpAQCAtNTEsNyArNTEsNyBAQCBTdHJpbmcgdG9wUHJpdmF0ZWx5Q29udHJvbGxl
ZERvbWFpbihjb25zdCBTdHJpbmcmIGRvbWFpbikKICAgICAgICAgcmV0dXJuIGRvbWFpbjsKIAog
ICAgIHN0YXRpYyBMb2NrIGNhY2hlTG9jazsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNh
Y2hlTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGNhY2hlTG9jayB9OwogCiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8U3RyaW5nLCBTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0
aXZlSGFzaD4+IGNhY2hlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKaW5k
ZXggNTk5Njc0YTkyYWQyNmNiZjhjNzc0Yjc4NWI1YjRkMmY1YzZmY2ZmNi4uN2EwZWJlMzhmMmEy
MDkyMzE3OTg1Zjg0MTg3OWNhYWE4OTcyZTc0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZh
dGVNb2NrLmNwcApAQCAtNjksNyArNjksNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9j
azo6cmVzdW1lUmVjb3JkaW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbAogCiB2
b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFT
YW1wbGUmKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9idWZmZXJMb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9idWZmZXJMb2NrIH07CiAgICAgbV9idWZmZXIuYXBwZW5kKCJW
aWRlbyBUcmFjayBJRDogIik7CiAgICAgbV9idWZmZXIuYXBwZW5kKG1fdmlkZW9UcmFja0lEKTsK
ICAgICBnZW5lcmF0ZU1vY2tDb3VudGVyU3RyaW5nKCk7CkBAIC04MCw3ICs4MCw3IEBAIHZvaWQg
TWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgV1RG
OjpNZWRpYVRpbWUmLCBjb25zCiAgICAgLy8gSGVhcCBhbGxvY2F0aW9ucyBhcmUgZm9yYmlkZGVu
IG9uIHRoZSBhdWRpbyB0aHJlYWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgc28gd2UgbmVlZCB0
bwogICAgIC8vIGV4cGxpY2l0bHkgYWxsb3cgdGhlIGZvbGxvd2luZyBhbGxvY2F0aW9uKHMpLgog
ICAgIERpc2FibGVNYWxsb2NSZXN0cmljdGlvbnNGb3JDdXJyZW50VGhyZWFkU2NvcGUgZGlzYWJs
ZU1hbGxvY1Jlc3RyaWN0aW9uczsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYnVmZmVy
TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYnVmZmVyTG9jayB9OwogICAgIG1fYnVmZmVy
LmFwcGVuZCgiQXVkaW8gVHJhY2sgSUQ6ICIpOwogICAgIG1fYnVmZmVyLmFwcGVuZChtX2F1ZGlv
VHJhY2tJRCk7CiAgICAgZ2VuZXJhdGVNb2NrQ291bnRlclN0cmluZygpOwpAQCAtOTUsNyArOTUs
NyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6ZmV0Y2hEYXRhKEZldGNoRGF0YUNh
bGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4g
YnVmZmVyOwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2J1ZmZlckxv
Y2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9idWZmZXJMb2NrIH07CiAgICAgICAgIFZl
Y3Rvcjx1aW50OF90PiB2YWx1ZShtX2J1ZmZlci5sZW5ndGgoKSk7CiAgICAgICAgIG1lbWNweSh2
YWx1ZS5kYXRhKCksIG1fYnVmZmVyLmNoYXJhY3RlcnM4KCksIG1fYnVmZmVyLmxlbmd0aCgpKTsK
ICAgICAgICAgbV9idWZmZXIuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2Nv
YS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRleCA0ZDVmMGNlY2JkNzFkOTU1OTJhYzY1
ZDViNjBhZTdmMjYzY2NmZDdkLi45MjNhMzYwZDUzZTRmNTU0NGU1YjBiZmI4ZGZmYmQ1NTk1ZDVh
MDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL2Nv
Y29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLm1tCkBAIC01NDMsNyArNTQzLDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdy
aXRlcjo6Y29tcGxldGVGZXRjaERhdGEoKQogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3Jp
dGVyOjphcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBzaXplKQogewotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9kYXRhTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
ZGF0YUxvY2sgfTsKICAgICBpZiAoIW1fZGF0YSkgewogICAgICAgICBtX2RhdGEgPSBTaGFyZWRC
dWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNTUzLDcgKzU1
Myw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoY29uc3Qg
Y2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiAKIFJlZlB0cjxTaGFyZWRCdWZmZXI+IE1lZGlhUmVj
b3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSgpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2RhdGFMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwogICAg
IGF1dG8gZGF0YSA9IFdURk1vdmUobV9kYXRhKTsKICAgICByZXR1cm4gZGF0YTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFT
b3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHAKaW5kZXggMjc4ZDE5Njc4ZGIzZWEzNDRkNTc3MzE1ZmRmMDAzMGMxMGU5
MGNhMC4uYzliYzA3NzEzOGE4MGI1OGJjYzQ5N2UwYzQxYTE1ZWVjYjc2MTRmMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVN
ZWRpYVNvdXJjZS5jcHAKQEAgLTYzLDI4ICs2MywyOCBAQCBSZWFsdGltZU1lZGlhU291cmNlOjpS
ZWFsdGltZU1lZGlhU291cmNlKFR5cGUgdHlwZSwgU3RyaW5nJiYgbmFtZSwgU3RyaW5nJiYgZGV2
aQogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphZGRBdWRpb1NhbXBsZU9ic2VydmVyKEF1ZGlv
U2FtcGxlT2JzZXJ2ZXImIG9ic2VydmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2F1ZGlvU2FtcGxlT2JzZXJ2ZXJzTG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYXVkaW9TYW1wbGVPYnNlcnZlcnNMb2NrIH07CiAgICAg
bV9hdWRpb1NhbXBsZU9ic2VydmVycy5hZGQoJm9ic2VydmVyKTsKIH0KIAogdm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpyZW1vdmVBdWRpb1NhbXBsZU9ic2VydmVyKEF1ZGlvU2FtcGxlT2JzZXJ2
ZXImIG9ic2VydmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2F1ZGlvU2FtcGxlT2JzZXJ2ZXJzTG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fYXVkaW9TYW1wbGVPYnNlcnZlcnNMb2NrIH07CiAgICAgbV9hdWRpb1NhbXBs
ZU9ic2VydmVycy5yZW1vdmUoJm9ic2VydmVyKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291
cmNlOjphZGRWaWRlb1NhbXBsZU9ic2VydmVyKFZpZGVvU2FtcGxlT2JzZXJ2ZXImIG9ic2VydmVy
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX3ZpZGVvU2FtcGxlT2JzZXJ2ZXJzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
dmlkZW9TYW1wbGVPYnNlcnZlcnNMb2NrIH07CiAgICAgbV92aWRlb1NhbXBsZU9ic2VydmVycy5h
ZGQoJm9ic2VydmVyKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdmVWaWRl
b1NhbXBsZU9ic2VydmVyKFZpZGVvU2FtcGxlT2JzZXJ2ZXImIG9ic2VydmVyKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3ZpZGVv
U2FtcGxlT2JzZXJ2ZXJzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdmlkZW9TYW1wbGVP
YnNlcnZlcnNMb2NrIH07CiAgICAgbV92aWRlb1NhbXBsZU9ic2VydmVycy5yZW1vdmUoJm9ic2Vy
dmVyKTsKIH0KIApAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmIG1lZGlhU2FtcGxlKQogCiAgICAgdXBk
YXRlSGFzU3RhcnRlZFByb2R1Y2luZ0RhdGEoKTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV92aWRlb1NhbXBsZU9ic2VydmVyc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Zp
ZGVvU2FtcGxlT2JzZXJ2ZXJzTG9jayB9OwogICAgIGZvciAoYXV0byogb2JzZXJ2ZXIgOiBtX3Zp
ZGVvU2FtcGxlT2JzZXJ2ZXJzKQogICAgICAgICBvYnNlcnZlci0+dmlkZW9TYW1wbGVBdmFpbGFi
bGUobWVkaWFTYW1wbGUpOwogfQpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgUmVhbHRpbWVNZWRp
YVNvdXJjZTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYgdGltZSwgY29u
c3QgUGxhCiB7CiAgICAgdXBkYXRlSGFzU3RhcnRlZFByb2R1Y2luZ0RhdGEoKTsKIAotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9hdWRpb1NhbXBsZU9ic2VydmVyc0xvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2F1ZGlvU2FtcGxlT2JzZXJ2ZXJzTG9jayB9OwogICAgIGZvciAoYXV0
byogb2JzZXJ2ZXIgOiBtX2F1ZGlvU2FtcGxlT2JzZXJ2ZXJzKQogICAgICAgICBvYnNlcnZlci0+
YXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUsIGF1ZGlvRGF0YSwgZGVzY3JpcHRpb24sIG51bWJl
ck9mRnJhbWVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCmluZGV4
IGMyN2U2MGY2NmNjY2U5MjYyMGUyNjU3OGZmNThhM2IwZTU3NDgwNDguLjQwMzdmNTEzZjJjODIz
ODE4MTZkMmM2NDM1NDJhYTIxNWI2YzAwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6
On5SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoKQogewogICAgIEFTU0VSVCghbV9hdWRpb1Nv
dXJjZS0+aGFzT2JzZXJ2ZXIoKnRoaXMpKTsKICNpZiBBU1NFUlRfRU5BQkxFRAotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9zaW5rc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Np
bmtzTG9jayB9OwogI2VuZGlmCiAgICAgQVNTRVJUKG1fc2lua3MuaXNFbXB0eSgpKTsKIApAQCAt
OTUsMTMgKzk1LDEzIEBAIHZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzb3VyY2VF
bmFibGVkQ2hhbmdlZCgpCiAKIHZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpBZGRT
aW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqIHNpbmspCiB7Ci0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3NpbmtzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2lu
a3NMb2NrIH07CiAgICAgbV9zaW5rcy5hZGQoc2luayk7CiB9CiAKIHZvaWQgUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlOjpSZW1vdmVTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZh
Y2UqIHNpbmspCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3NpbmtzTG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fc2lua3NMb2NrIH07CiAgICAgbV9zaW5rcy5yZW1vdmUoc2lu
ayk7CiB9CiAKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1Nv
dXJjZTo6c2VuZEF1ZGlvRnJhbWVzKGNvbnN0IHZvaWQqIGF1ZGlvRGF0YSwgaW50IGJpdAogICAg
ICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJjaHVuayAiLCBtX2NodW5rc1NlbnQpOwog
I2VuZGlmCiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2lua3NMb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9zaW5rc0xvY2sgfTsKICAgICBmb3IgKGF1dG8gc2luayA6IG1fc2lu
a3MpCiAgICAgICAgIHNpbmstPk9uRGF0YShhdWRpb0RhdGEsIGJpdHNQZXJTYW1wbGUsIHNhbXBs
ZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9mRnJhbWVzKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRl
b1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwCmluZGV4IGZhOTQ2NjVlNWZiYWQzODdkMzNkZGUwYjAy
N2ZiZTE5NGIyNWQzMGUuLjEyY2VkNzlmY2Y2YTZlNTMwZGQ3YjllMTAyNTY1ZDhmNzVjMmRhMzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1l
T3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcApAQCAtNTgsNyArNTgsNyBA
QCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6On5SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2UoKQogewogQVNTRVJUKCFtX3ZpZGVvU291cmNlLT5oYXNPYnNlcnZlcigqdGhpcykpOwogI2lm
IEFTU0VSVF9FTkFCTEVECi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3NpbmtzTG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2lua3NMb2NrIH07CiAjZW5kaWYKICAgICBBU1NFUlQo
bV9zaW5rcy5pc0VtcHR5KCkpOwogICAgIHN0b3AoKTsKQEAgLTE1OCwxMyArMTU4LDEzIEBAIHZv
aWQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpBZGRPclVwZGF0ZVNpbmsocnRjOjpWaWRl
b1NpbmtJbnRlcmZhY2U8d2VicnRjCiAgICAgaWYgKHNpbmtXYW50cy5yb3RhdGlvbl9hcHBsaWVk
KQogICAgICAgICBhcHBseVJvdGF0aW9uKCk7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fc2lua3NMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zaW5rc0xvY2sgfTsKICAgICBt
X3NpbmtzLmFkZChzaW5rKTsKIH0KIAogdm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6
OlJlbW92ZVNpbmsocnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8d2VicnRjOjpWaWRlb0ZyYW1lPiog
c2luaykKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2lua3NMb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9zaW5rc0xvY2sgfTsKICAgICBtX3NpbmtzLnJlbW92ZShzaW5rKTsK
IH0KIApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
OjpzZW5kRnJhbWUocnRjOjpzY29wZWRfcmVmcHRyPHdlYnJ0Yzo6VmlkZW9GcmFtCiAgICAgfQog
I2VuZGlmCiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2lua3NMb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9zaW5rc0xvY2sgfTsKICAgICBmb3IgKGF1dG8qIHNpbmsgOiBtX3Np
bmtzKQogICAgICAgICBzaW5rLT5PbkZyYW1lKGZyYW1lKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9CYXNlQXVkaW9TaGFyZWRVbml0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9CYXNlQXVkaW9TaGFy
ZWRVbml0LmNwcAppbmRleCA1M2M3ZTdiY2UzNDU3NjI4MjhlN2EzYjM5YTc4ZTliYTVlMjMyMTc0
Li5hMmJlNTIyNTM0NzIxNWQ0ZTc3OTAwN2I2NjY2MDIzNjgwZDg3YjI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQmFzZUF1ZGlvU2hhcmVkVW5p
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VB
dWRpb1NoYXJlZFVuaXQuY3BwCkBAIC00NSwxNCArNDUsMTQgQEAgQmFzZUF1ZGlvU2hhcmVkVW5p
dDo6QmFzZUF1ZGlvU2hhcmVkVW5pdCgpCiB2b2lkIEJhc2VBdWRpb1NoYXJlZFVuaXQ6OmFkZENs
aWVudChDb3JlQXVkaW9DYXB0dXJlU291cmNlJiBjbGllbnQpCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fY2xpZW50c0xvY2spOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX2NsaWVudHNMb2NrIH07CiAgICAgbV9jbGllbnRzLmFkZCgm
Y2xpZW50KTsKIH0KIAogdm9pZCBCYXNlQXVkaW9TaGFyZWRVbml0OjpyZW1vdmVDbGllbnQoQ29y
ZUF1ZGlvQ2FwdHVyZVNvdXJjZSYgY2xpZW50KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2NsaWVudHNMb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9jbGllbnRzTG9jayB9OwogICAgIG1fY2xpZW50cy5yZW1vdmUoJmNsaWVu
dCk7CiB9CiAKQEAgLTYwLDExICs2MCwxMSBAQCB2b2lkIEJhc2VBdWRpb1NoYXJlZFVuaXQ6OmZv
ckVhY2hDbGllbnQoY29uc3QgRnVuY3Rpb248dm9pZChDb3JlQXVkaW9DYXB0dXJlU291cgogewog
ICAgIFZlY3RvcjxDb3JlQXVkaW9DYXB0dXJlU291cmNlKj4gY2xpZW50c0NvcHk7CiAgICAgewot
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fY2xpZW50c0xvY2spOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9jbGllbnRzTG9jayB9OwogICAgICAgICBjbGllbnRzQ29weSA9IGNv
cHlUb1ZlY3RvcihtX2NsaWVudHMpOwogICAgIH0KICAgICBmb3IgKGF1dG8qIGNsaWVudCA6IGNs
aWVudHNDb3B5KSB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9jbGllbnRzTG9j
ayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2NsaWVudHNMb2NrIH07CiAgICAgICAgIC8v
IE1ha2Ugc3VyZSB0aGUgY2xpZW50IGhhcyBub3QgYmVlbiBkZXN0cm95ZWQuCiAgICAgICAgIGlm
ICghbV9jbGllbnRzLmNvbnRhaW5zKGNsaWVudCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAg
LTc0LDcgKzc0LDcgQEAgdm9pZCBCYXNlQXVkaW9TaGFyZWRVbml0Ojpmb3JFYWNoQ2xpZW50KGNv
bnN0IEZ1bmN0aW9uPHZvaWQoQ29yZUF1ZGlvQ2FwdHVyZVNvdXIKIAogdm9pZCBCYXNlQXVkaW9T
aGFyZWRVbml0OjpjbGVhckNsaWVudHMoKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9jbGllbnRzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2xpZW50c0xvY2sgfTsKICAg
ICBtX2NsaWVudHMuY2xlYXIoKTsKIH0KIApAQCAtMjE3LDcgKzIxNyw3IEBAIE9TU3RhdHVzIEJh
c2VBdWRpb1NoYXJlZFVuaXQ6OnN1c3BlbmQoKQogdm9pZCBCYXNlQXVkaW9TaGFyZWRVbml0Ojph
dWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBQbGF0Zm9y
bUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJlYW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRp
b24sIHNpemVfdCBudW1iZXJPZkZyYW1lcykKIHsKICAgICAvLyBXZSBob2xkIHRoZSBsb2NrIGhl
cmUgc2luY2UgYWRkaW5nL3JlbW92aW5nIGNsaWVudHMgY2FuIG9ubHkgaGFwcGVuIGluIG1haW4g
dGhyZWFkLgotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9jbGllbnRzTG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fY2xpZW50c0xvY2sgfTsKIAogICAgIC8vIEZvciBwZXJmb3JtYW5j
ZSByZWFzb25zLCB3ZSBmb3JiaWQgaGVhcCBhbGxvY2F0aW9ucyB3aGlsZSBkb2luZyByZW5kZXJp
bmcgb24gdGhlIGNhcHR1cmUgYXVkaW8gdGhyZWFkLgogICAgIEZvcmJpZE1hbGxvY1VzZUZvckN1
cnJlbnRUaHJlYWRTY29wZSBmb3JiaWRNYWxsb2NVc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291
cmNlUHJvdmlkZXJDb2NvYS5tbQppbmRleCBiZjNhMzM5MWYxZmViYjM4NGU3NTllNGJjODk3NmUx
NzdjYTE5NTY1Li41NzZmNDRlOTJjNThiOTNjMGI0MGQ2NjQ5OTgwYmM3ZTkwYTVlYWZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9T
b3VyY2VQcm92aWRlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EubW0KQEAgLTEwMiw3ICsxMDIs
NyBAQCB2b2lkIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJDb2NvYTo6cHJlcGFyZShjb25zdCBBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mIGZvcgogewogICAgIERpc2FibGVNYWxsb2NSZXN0cmlj
dGlvbnNGb3JDdXJyZW50VGhyZWFkU2NvcGUgc2NvcGU7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgTE9H
KE1lZGlhLCAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlckNvY29hOjpwcmVwYXJlKCVwKSIsIHRoaXMp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRl
clJ1bkxvb3BDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRl
clJ1bkxvb3BDRi5jcHAKaW5kZXggOTdmYzNkMGJjYWFiZWU5MGUzZGI0ZjVhYTY5MTIzNmRkNGRl
MmFjMy4uMDVhMjRmNTI1MjViNTRiN2ZmODFkNDcxMWM1ZWMwMGM5ODZjOTg0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENG
LmNwcApAQCAtNTgsNyArNTgsNyBAQCBDRlJ1bkxvb3BSZWYgbG9hZGVyUnVuTG9vcCgpCiAgICAg
aWYgKCFsb2FkZXJSdW5Mb29wT2JqZWN0KSB7CiAgICAgICAgIFRocmVhZDo6Y3JlYXRlKCJXZWJD
b3JlOiBDRk5ldHdvcmsgTG9hZGVyIiwgW10gewogICAgICAgICAgICAgewotICAgICAgICAgICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobG9hZGVyUnVuTG9vcE11dGV4KTsKKyAgICAgICAg
ICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbG9hZGVyUnVuTG9vcE11dGV4IH07CiAKICAgICAgICAg
ICAgICAgICBsb2FkZXJSdW5Mb29wT2JqZWN0ID0gQ0ZSdW5Mb29wR2V0Q3VycmVudCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0
LmNwcAppbmRleCBhYTA3NDEzMzBjNjA0ZDlhNTY3OTU0NjNlZWZlOWQ3OTk3ZjVhNjYwLi5kOWEz
MTk0YWFkYjZjZjc5ZTEwODM4ODE3MjgyYjdhYzI0YmZkMWVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKQEAgLTEzMSw3
ICsxMzEsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpjYW5jZWwoKQogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdGF0
dXNNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3N0YXR1c011dGV4IH07CiAgICAg
ICAgIGlmIChtX2NhbmNlbGxlZCkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTUyLDEzICsx
NTIsMTMgQEAgdm9pZCBDdXJsUmVxdWVzdDo6Y2FuY2VsKCkKIAogYm9vbCBDdXJsUmVxdWVzdDo6
aXNDYW5jZWxsZWQoKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdGF0dXNNdXRl
eCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc3RhdHVzTXV0ZXggfTsKICAgICByZXR1cm4gbV9j
YW5jZWxsZWQ7CiB9CiAKIGJvb2wgQ3VybFJlcXVlc3Q6OmlzQ29tcGxldGVkT3JDYW5jZWxsZWQo
KQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdGF0dXNNdXRleCk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fc3RhdHVzTXV0ZXggfTsKICAgICByZXR1cm4gbV9jb21wbGV0ZWQgfHwg
bV9jYW5jZWxsZWQ7CiB9CiAKQEAgLTQ3OSw3ICs0NzksNyBAQCB2b2lkIEN1cmxSZXF1ZXN0Ojpk
aWRDb21wbGV0ZVRyYW5zZmVyKENVUkxjb2RlIHJlc3VsdCkKICAgICB9CiAKICAgICB7Ci0gICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdGF0dXNNdXRleCk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX3N0YXR1c011dGV4IH07CiAgICAgICAgIG1fY29tcGxldGVkID0gdHJ1ZTsK
ICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcAppbmRleCA0ZDA5ZTZiNWI3ZTU5Yjkz
YzQ4NDFiZjM0OTA2ZmEyMjkxOTIxYWVkLi40YTIwNWY4YjBlMGRhYTZmMDgzZTg4OTA5OGE3MzMy
ZTcyZmZmMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxlci5jcHAKQEAgLTY3LDcgKzY3LDcgQEAg
dm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6Y2FuY2VsKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xp
ZW50KiBjbGllbnQpCiB2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpjYWxsT25Xb3JrZXJUaHJl
YWQoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKIHsKICAgICB7Ci0gICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211
dGV4IH07CiAgICAgICAgIG1fdGFza1F1ZXVlLmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKICAgICB9
CiAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6c3RhcnRUaHJl
YWRJZk5lZWRlZCgpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIHsKLSAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbXV0ZXggfTsKICAgICAgICAgaWYgKG1fcnVuVGhyZWFkKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTg4LDE0ICs4OCwxNCBAQCB2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVy
OjpzdGFydFRocmVhZElmTmVlZGVkKCkKICAgICAgICAgbV90aHJlYWQtPndhaXRGb3JDb21wbGV0
aW9uKCk7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9tdXRleCk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgIG1fcnVuVGhyZWFk
ID0gdHJ1ZTsKICAgICB9CiAKICAgICBtX3RocmVhZCA9IFRocmVhZDo6Y3JlYXRlKCJjdXJsVGhy
ZWFkIiwgW3RoaXNdIHsKICAgICAgICAgd29ya2VyVGhyZWFkKCk7CiAKLSAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0
ZXggfTsKICAgICAgICAgbV9ydW5UaHJlYWQgPSBmYWxzZTsKICAgICB9LCBUaHJlYWRUeXBlOjpO
ZXR3b3JrKTsKIH0KQEAgLTEwNCw3ICsxMDQsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVy
OjpzdG9wVGhyZWFkSWZOb01vcmVKb2JSdW5uaW5nKCkKIHsKICAgICBBU1NFUlQoIWlzTWFpblRo
cmVhZCgpKTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9tdXRleCk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICBpZiAobV9hY3RpdmVKb2JzLnNpemUoKSB8fCBt
X3Rhc2tRdWV1ZS5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTE0LDcgKzExNCw3IEBA
IHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OnN0b3BUaHJlYWRJZk5vTW9yZUpvYlJ1bm5pbmco
KQogdm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6c3RvcFRocmVhZCgpCiB7CiAgICAgewotICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9tdXRleCB9OwogICAgICAgICBtX3J1blRocmVhZCA9IGZhbHNlOwogICAgIH0KIApA
QCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OmV4ZWN1dGVUYXNr
cygpCiAgICAgVmVjdG9yPFdURjo6RnVuY3Rpb248dm9pZCgpPj4gdGFza1F1ZXVlOwogCiAgICAg
ewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICB0YXNrUXVldWUgPSBXVEZNb3ZlKG1fdGFz
a1F1ZXVlKTsKICAgICB9CiAKQEAgLTE1MCw3ICsxNTAsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0U2No
ZWR1bGVyOjp3b3JrZXJUaHJlYWQoKQogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgewot
ICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKKyAgICAgICAgICAg
IExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgICAgICBpZiAoIW1fcnVuVGhyZWFk
KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMTksNyArMjE5LDcgQEAg
dm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6c3RhcnRUcmFuc2ZlcihDdXJsUmVxdWVzdFNjaGVk
dWxlckNsaWVudCogY2xpZW50KQogICAgICAgICBtX2NsaWVudE1hcHMuc2V0KGhhbmRsZSwgY2xp
ZW50KTsKICAgICB9OwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgIG1fYWN0aXZlSm9icy5hZGQoY2xpZW50
KTsKICAgICBtX3Rhc2tRdWV1ZS5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CiB9CkBAIC0yNDAsNyAr
MjQwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6Y2FuY2VsVHJhbnNmZXIoQ3VybFJl
cXVlc3RTY2hlZHVsZXJDbGllbnQqIGNsaWVudCkKIAogdm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxl
cjo6ZmluYWxpemVUcmFuc2ZlcihDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCogY2xpZW50LCBG
dW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKIAogICAg
IGlmICghbV9hY3RpdmVKb2JzLmNvbnRhaW5zKGNsaWVudCkpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFt
U2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJs
U3RyZWFtU2NoZWR1bGVyLmNwcAppbmRleCAzZmI4NzU5OTg0YWEzMWE3ZDQ0YmFhMmY2OWFmZTJm
ZWU0NjFlYTRmLi5iNGE5YWJkNDUzMDdlMTRiMWIwMDgwYzVmZDg0OTBhY2FmN2JiNTk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbVNj
aGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxTdHJlYW1TY2hlZHVsZXIuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgQ3VybFN0cmVhbVNj
aGVkdWxlcjo6Y2FsbE9uV29ya2VyVGhyZWFkKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIHRhc2sp
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIHsKLSAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX211dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXgg
fTsKICAgICAgICAgbV90YXNrUXVldWUuYXBwZW5kKFdURk1vdmUodGFzaykpOwogICAgIH0KIApA
QCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQ3VybFN0cmVhbVNjaGVkdWxlcjo6Y2FsbENsaWVudE9u
TWFpblRocmVhZChDdXJsU3RyZWFtSUQgc3RyZWFtSUQsIFdURjo6RnVuCiB2b2lkIEN1cmxTdHJl
YW1TY2hlZHVsZXI6OnN0YXJ0VGhyZWFkSWZOZWVkZWQoKQogewogICAgIHsKLSAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
bXV0ZXggfTsKICAgICAgICAgaWYgKG1fcnVuVGhyZWFkKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEN1cmxTdHJlYW1TY2hlZHVsZXI6OnN0b3BU
aHJlYWRJZk5vTW9yZUpvYlJ1bm5pbmcoKQogICAgIGlmIChtX3N0cmVhbUxpc3Quc2l6ZSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgaWYgKG1fdGFza1F1ZXVlLnNpemUo
KSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBDdXJsU3RyZWFt
U2NoZWR1bGVyOjpleGVjdXRlVGFza3MoKQogICAgIFZlY3RvcjxXVEY6OkZ1bmN0aW9uPHZvaWQo
KT4+IHRhc2tRdWV1ZTsKIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X211dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgdGFz
a1F1ZXVlID0gV1RGTW92ZShtX3Rhc2tRdWV1ZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVCdWlsZGVyLmNwcAppbmRleCA4YjE0MGRhZGIzYzMzMDYwYTA1YThhZjNjNTY2YjIyMGVh
Zjk2OWRkLi41Njk2OTZlZWUyMTdmZjYyYzVmOWJkZjA1NjU0ZjM0MDA1OGJiZTc4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlci5jcHAKQEAgLTM0MCw3ICszNDAsNyBAQCB2b2lkIEJ1
aWxkZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NTVmFsdWUmIHZhbHVlLCBT
ZWxlY3RvckNoZWNrZXI6OgogICAgIGlmIChpczxDU1NQYWludEltYWdlVmFsdWU+KHZhbHVlVG9B
cHBseSkpIHsKICAgICAgICAgYXV0byYgbmFtZSA9IGRvd25jYXN0PENTU1BhaW50SW1hZ2VWYWx1
ZT4odmFsdWVUb0FwcGx5LmdldCgpKS5uYW1lKCk7CiAgICAgICAgIGlmIChhdXRvKiBwYWludFdv
cmtsZXQgPSBjb25zdF9jYXN0PERvY3VtZW50Jj4obV9zdGF0ZS5kb2N1bWVudCgpKS5wYWludFdv
cmtsZXRHbG9iYWxTY29wZUZvck5hbWUobmFtZSkpIHsKLSAgICAgICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2socGFpbnRXb3JrbGV0LT5wYWludERlZmluaXRpb25Mb2NrKCkpOworICAgICAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IHBhaW50V29ya2xldC0+cGFpbnREZWZpbml0aW9uTG9jaygp
IH07CiAgICAgICAgICAgICBpZiAoYXV0byogcmVnaXN0cmF0aW9uID0gcGFpbnRXb3JrbGV0LT5w
YWludERlZmluaXRpb25NYXAoKS5nZXQobmFtZSkpIHsKICAgICAgICAgICAgICAgICBmb3IgKGF1
dG8mIHByb3BlcnR5IDogcmVnaXN0cmF0aW9uLT5pbnB1dFByb3BlcnRpZXMpCiAgICAgICAgICAg
ICAgICAgICAgIG1fc3RhdGUuc3R5bGUoKS5hZGRDdXN0b21QYWludFdhdGNoUHJvcGVydHkocHJv
cGVydHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmts
ZXRUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJl
YWQuY3BwCmluZGV4IGE4ZWE5OWJjNWZmZWQxYTNjY2Q4NjI4ZWY5YzdhMDUxNmZhYmJhMmUuLjQ3
N2Q5NjcyYzcxMmI0NmZjNGViZDdhMjg5N2U3N2ViMTU4MDg0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5jcHAKQEAgLTEwOSw3ICsxMDks
NyBAQCB2b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6d29ya2VyT3JXb3JrbGV0VGhyZWFkKCkK
ICAgICAgICAgLy8gTXV0ZXggcHJvdGVjdGlvbiBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoYXQg
d2UgZG9uJ3QgY2hhbmdlIG1fZ2xvYmFsU2NvcGUKICAgICAgICAgLy8gd2hpbGUgV29ya2VyVGhy
ZWFkOjpzdG9wKCkgaXMgYWNjZXNzaW5nIGl0LiBOb3RlIHRoYXQgV29ya2VyVGhyZWFkOjpzdG9w
KCkgY2FuCiAgICAgICAgIC8vIGJlIGNhbGxlZCBiZWZvcmUgd2UndmUgZmluaXNoZWQgY3JlYXRp
bmcgdGhlIFdvcmtlckdsb2JhbFNjb3BlLgotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fdGhyZWFkQ3JlYXRpb25BbmRHbG9iYWxTY29wZUxvY2spOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV90aHJlYWRDcmVhdGlvbkFuZEdsb2JhbFNjb3BlTG9jayB9OwogICAgICAgICBtX2ds
b2JhbFNjb3BlID0gY3JlYXRlR2xvYmFsU2NvcGUoKTsKIAogICAgICAgICAvLyBXaGVuIHJ1bm5p
bmcgb3V0IG9mIG1lbW9yeSwgY3JlYXRlR2xvYmFsU2NvcGUoKSBtYXkgcmV0dXJuIG51bGwgYmVj
YXVzZSB3ZSBjb3VsZCBub3QgYWxsb2NhdGUgYSBKU0M6OlZNLgpAQCAtMTU4LDcgKzE1OCw3IEBA
IHZvaWQgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWQoKQogICAg
IHsKICAgICAgICAgLy8gTXV0ZXggcHJvdGVjdGlvbiBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRo
YXQgd2UgZG9uJ3QgY2hhbmdlIG1fZ2xvYmFsU2NvcGUKICAgICAgICAgLy8gd2hpbGUgV29ya2Vy
VGhyZWFkOjpzdG9wIGlzIGFjY2Vzc2luZyBpdC4KLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX3RocmVhZENyZWF0aW9uQW5kR2xvYmFsU2NvcGVMb2NrKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fdGhyZWFkQ3JlYXRpb25BbmRHbG9iYWxTY29wZUxvY2sgfTsKIAogICAgICAg
ICAvLyBEZWxheSB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhlIFdvcmtlckdsb2JhbFNjb3BlIGNvbnRl
eHQgdW50aWwgYWZ0ZXIgd2UndmUgdW5sb2NrZWQgdGhlCiAgICAgICAgIC8vIG1fdGhyZWFkQ3Jl
YXRpb25BbmRXb3JrZXJHbG9iYWxTY29wZU11dGV4LiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIGRl
c3RydWN0aW5nIHRoZQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgV29ya2VyT3JXb3JrbGV0VGhy
ZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWQoKQogdm9pZCBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6
OnN0YXJ0KFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiBldmFsdWF0ZUNhbGxi
YWNrKQogewogICAgIC8vIE11dGV4IHByb3RlY3Rpb24gaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0
aGF0IG1fdGhyZWFkIGlzIGluaXRpYWxpemVkIHdoZW4gdGhlIHRocmVhZCBzdGFydHMuCi0gICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3RocmVhZENyZWF0aW9uQW5kR2xvYmFsU2NvcGVMb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90aHJlYWRDcmVhdGlvbkFuZEdsb2JhbFNjb3BlTG9j
ayB9OwogCiAgICAgaWYgKG1fdGhyZWFkKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKaW5kZXggMDRm
MThjNjMxNzI1ZjhkNzU4NzU4MzkxYmNlMWQ1OTFmYjY5OTBmNi4uYjA3ODM3NWZhNzNkZmUyOWNk
MmNkMjAxNzFhZDI2ODIyMjg1OWIwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xl
dHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtODUsNyArODUsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludChKU0M6OkpT
R2xvYmFsT2JqZWN0JiBnbAogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAi
VGhlIGZpcnN0IGFyZ3VtZW50IG11c3Qgbm90IGJlIHRoZSBlbXB0eSBzdHJpbmciIH07CiAKICAg
ICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socGFpbnREZWZpbml0aW9uTG9jaygp
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHBhaW50RGVmaW5pdGlvbkxvY2soKSB9OwogCiAg
ICAgICAgIGlmIChwYWludERlZmluaXRpb25NYXAoKS5jb250YWlucyhuYW1lKSkKICAgICAgICAg
ICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IsICJUaGlzIG5h
bWUgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkIiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKaW5kZXggZDA3NmVlOWQzNWViN2Y3
Mzk4ZTBkNDA5ZTg4N2U2NTdmMjI2MDIwZi4uOWEyYzQ5N2M5Mjk0ODAyZTFlNjdiMjRkMDdhZmIy
ODMxZTIyOGIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmts
ZXRHbG9iYWxTY29wZS5oCkBAIC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9oYXNQ
cmVwYXJlZEZvckRlc3RydWN0aW9uID0gdHJ1ZTsKIAogICAgICAgICB7Ci0gICAgICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKHBhaW50RGVmaW5pdGlvbkxvY2soKSk7CisgICAgICAgICAg
ICBMb2NrZXIgbG9ja2VyIHsgcGFpbnREZWZpbml0aW9uTG9jaygpIH07CiAgICAgICAgICAgICBw
YWludERlZmluaXRpb25NYXAoKS5jbGVhcigpOwogICAgICAgICB9CiAgICAgICAgIFdvcmtsZXRH
bG9iYWxTY29wZTo6cHJlcGFyZUZvckRlc3RydWN0aW9uKCk7CkBAIC04NCw3ICs4NCw3IEBAIHBy
aXZhdGU6CiAgICAgflBhaW50V29ya2xldEdsb2JhbFNjb3BlKCkKICAgICB7CiAjaWYgQVNTRVJU
X0VOQUJMRUQKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhwYWludERlZmluaXRpb25M
b2NrKCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcGFpbnREZWZpbml0aW9uTG9jaygpIH07
CiAgICAgICAgIEFTU0VSVChwYWludERlZmluaXRpb25NYXAoKS5pc0VtcHR5KCkpOwogI2VuZGlm
CiAgICAgfQo=
</data>
<flag name="commit-queue"
          id="450540"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429370</attachid>
            <date>2021-05-21 17:08:12 -0700</date>
            <delta_ts>2021-05-21 19:07:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226119-20210521170811.patch</filename>
            <type>text/plain</type>
            <size>103430</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3ODk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTlkMmI2NzMzYmY4Mjc5
MGU3NjNkZDAwYzQ1NjNjOTUxNWJhZTBiZC4uNzRiMDhhMzdlZmM1ZTRjZmNjMTJjN2I0NmJhMWYx
OTk1YjNjMDAxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4NSBAQAorMjAyMS0wNS0yMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgdXNpbmcgaG9sZExv
Y2soKSBpbiBXZWJDb3JlIGFzIGl0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggQ2xhbmcgdGhyZWFk
IHNhZmV0eSBhbmFseXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI2MTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgU3RvcCB1c2luZyBob2xkTG9jaygpIGluIFdlYkNvcmUgYXMgaXQgaXMgbm90IGNv
bXBhdGlibGUgd2l0aCBDbGFuZyB0aHJlYWQgc2FmZXR5IGFuYWx5c2lzCisgICAgICAgIChXVEY6
OkNoZWNrZWRMb2NrKS4gVXNlIHRoZSBMb2NrZXIgY29uc3RydWN0b3IgZGlyZWN0bHkgaW5zdGVh
ZC4KKworICAgICAgICBUaGlzIGlzIGEgc3RlcCB0b3dhcmRzIGdldHRpbmcgcmlkIG9mIGhvbGRM
b2NrKCkgZW50aXJlbHkuCisKKyAgICAgICAgKiBNb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNvZ25p
dGlvbkNhcHR1cmVTb3VyY2VJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWVjaFJlY29n
bml0aW9uQ2FwdHVyZVNvdXJjZUltcGw6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb0J1ZmZlcjo6cmVsZWFzZU1lbW9yeSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZl
cjo6bWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1
ZmZlclNvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VO
b2RlOjpzZXRCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2Rl
OjpzdGFydFBsYXlpbmcpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXROb2RlOjp+QXVkaW9Xb3Jr
bGV0Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1dvcmtsZXROb2RlOjppbml0aWFsaXpl
QXVkaW9QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldE5vZGU6OnNl
dFByb2Nlc3Nvcik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OnNldEJ1ZmZlcik6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OnNldEZvcm1h
dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpPc2NpbGxhdG9yTm9kZTo6c2V0UGVyaW9kaWNXYXZlKToKKyAgICAgICAg
KiBNb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFu
bmVyTm9kZTo6c2V0UGFubmluZ01vZGVsKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6
OnNldFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnNldE9yaWVudGF0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnNldERpc3RhbmNlTW9kZWwpOgor
ICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6c2V0UmVmRGlzdGFuY2UpOgorICAgICAgICAo
V2ViQ29yZTo6UGFubmVyTm9kZTo6c2V0TWF4RGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6
UGFubmVyTm9kZTo6c2V0Um9sbG9mZkZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXJO
b2RlOjpzZXRDb25lT3V0ZXJHYWluKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnNl
dENvbmVPdXRlckFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnNldENvbmVJ
bm5lckFuZ2xlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6dW5pbml0aWFs
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OnByb2Nlc3MpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRDdXJ2ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRPdmVyc2FtcGxlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFi
YXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeSk6CisgICAgICAgICogTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2Vy
OjphZGRQcm9wb3NlZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6cmVtb3ZlUHJvcG9zZWREYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1h
bmFnZXI6OmZ1bGxQYXRoRm9yRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VN
YW5hZ2VyOjpkZXRhaWxzRm9yTmFtZUFuZE9yaWdpbik6CisgICAgICAgICogTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VU
cmFja2VyOjpzY2hlZHVsZU5vdGlmeURhdGFiYXNlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpEYXRhYmFzZVRyYWNrZXI6Om5vdGlmeURhdGFiYXNlc0NoYW5nZWQpOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9N
R2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJlbik6CisgICAg
ICAgICogY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YWludEltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBjc3MvRE9NQ1NTUGFpbnRXb3JrbGV0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xldDo6YWRkTW9kdWxlKToKKyAgICAg
ICAgKiBkb20vRXZlbnRMaXN0ZW5lck1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudExp
c3RlbmVyTWFwOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudExpc3RlbmVyTWFwOjpy
ZXBsYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJNYXA6OmFkZCk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudExpc3RlbmVyTWFwOjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRMaXN0ZW5lck1hcDo6cmVtb3ZlRmlyc3RFdmVudExpc3RlbmVyQ3JlYXRlZEZyb21N
YXJrdXApOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpFdmVudFRhcmdldDo6dmlzaXRKU0V2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKiBkb20vTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6Y2xlYXJFdmVudFRhcmdldERhdGEpOgorICAgICAgICAq
IGh0bWwvQ2FudmFzQmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjptZW1v
cnlDb3N0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0Jhc2U6OmV4dGVybmFsTWVt
b3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjpzZXRJbWFnZUJ1
ZmZlciBjb25zdCk6CisgICAgICAgICogaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MQ29sbGVjdGlvbjo6aW52YWxpZGF0ZU5hbWVkRWxlbWVudENhY2hlIGNv
bnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MQ29sbGVjdGlvbjo6bWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MQ29sbGVjdGlvbjo6c2V0TmFtZWRJdGVtQ2FjaGUgY29uc3QpOgorICAgICAgICAqIGh0bWwv
T2Zmc2NyZWVuQ2FudmFzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9mZnNjcmVlbkNhbnZhczo6
cHVzaEJ1ZmZlclRvUGxhY2Vob2xkZXIpOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2Fu
dmFzOjpjb21taXRUb1BsYWNlaG9sZGVyQ2FudmFzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9P
RVNWZXJ0ZXhBcnJheU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhBcnJh
eU9iamVjdDo6ZGVsZXRlVmVydGV4QXJyYXlPRVMpOgorICAgICAgICAoV2ViQ29yZTo6T0VTVmVy
dGV4QXJyYXlPYmplY3Q6OmJpbmRWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSVBvaW50ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlUXVlcnkpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5RdWVyeSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjplbmRRdWVyeSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVTYW1wbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRTYW1wbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVN5bmMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFRyYW5zZm9y
bUZlZWRiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJl
Z2luVHJhbnNmb3JtRmVlZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6c2V0SW5kZXhlZEJ1ZmZlckJpbmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFZlcnRleEFycmF5KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmFkZE1lbWJlcnNUb09wYXF1ZVJvb3RzKToK
KyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTENvbnRleHRHcm91cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTENvbnRleHRHcm91cDo6ZGV0YWNoQW5kUmVtb3ZlQWxsT2JqZWN0cyk6Cisg
ICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTEZyYW1lYnVmZmVyOjppbml0aWFsaXplQXR0YWNobWVudHMpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViR0xGcmFtZWJ1ZmZlcjo6c2V0QXR0YWNobWVudEludGVybmFsKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJH
TE9iamVjdDo6cnVuRGVzdHJ1Y3Rvcik6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjphdHRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6YmluZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpiaW5kRnJhbWVidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZFJlbmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kVGV4dHVyZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxldGVCdWZmZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlRnJhbWVidWZmZXIp
OgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlUHJv
Z3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxl
dGVSZW5kZXJidWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6ZGVsZXRlU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmRlbGV0ZVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6ZGV0YWNoU2hhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OnVzZVByb2dyYW0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliUG9pbnRlcik6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3Rz
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmFkZE1lbWJl
cnNUb09wYXF1ZVJvb3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmV2ZXJiQ29udm9sdmVyOjp+UmV2ZXJiQ29udm9s
dmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29j
b2EuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0b3ApOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRJc1BsYXlpbmcpOgorICAgICAg
ICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6Omhh
bmRsZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVh
bWVyOjpjbGVhckFkYXB0ZXJzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIv
V2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2Via2l0V2ViQXVk
aW9Tb3VyY2VTZXREaXNwYXRjaFRvUmVuZGVyVGhyZWFkRnVuY3Rpb24pOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2spOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5TGlua0ZpcmVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheURpZFJlZnJl
c2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb250Q2FjaGU6OmNhY2hlZEZvbnRQbGF0Zm9ybURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udENhY2hlOjpmb250Rm9yUGxhdGZvcm1EYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OkZvbnRDYWNoZTo6cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6
OkZvbnRDYWNoZTo6aW5hY3RpdmVGb250Q291bnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpkZXN0cm95TWl4SWZOZWVkZWQp
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OmNyZWF0ZU1p
eElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpD
OjpwcmVwYXJlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakM6OnVucHJlcGFyZUNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDOjpwcm9jZXNzQ2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3Ry
ZWFtQVZGT2JqQzo6ZGVzdHJveUxheWVycyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXll
clByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OnJvb3RMYXllckJvdW5kc0RpZENoYW5nZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjYWNoZWRDR0NvbG9yKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aGFzRmlyc3RWaWRlb1NhbXBsZVJlYWNoZWRTaW5r
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
cHVzaFRleHR1cmVUb0NvbXBvc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjp0cmlnZ2VyUmVwYWludCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmZsdXNoQ3VycmVudEJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxh
dGZvcm1UZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcjo6d2FpdEZvckNETUF0dGFjaG1lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAgICAod2ViS2l0
V2ViU3JjQ29uc3RydWN0ZWQpOgorICAgICAgICAod2ViS2l0V2ViU3JjR2V0UHJvcGVydHkpOgor
ICAgICAgICAod2ViS2l0V2ViU3JjU2V0Q29udGV4dCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmND
cmVhdGUpOgorICAgICAgICAod2ViS2l0V2ViU3JjTWFrZVJlcXVlc3QpOgorICAgICAgICAod2Vi
S2l0V2ViU3JjU3RvcCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNHZXRTaXplKToKKyAgICAgICAg
KHdlYktpdFdlYlNyY0lzU2Vla2FibGUpOgorICAgICAgICAod2ViS2l0V2ViU3JjRG9TZWVrKToK
KyAgICAgICAgKHdlYktpdFdlYlNyY1F1ZXJ5KToKKyAgICAgICAgKHdlYktpdFdlYlNyY1VuTG9j
ayk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNVbkxvY2tTdG9wKToKKyAgICAgICAgKHdlYktpdFdl
YlNyY1NldE1lZGlhUGxheWVyKToKKyAgICAgICAgKHdlYktpdFNyY1Bhc3NlZENPUlNBY2Nlc3ND
aGVjayk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6cmVzcG9uc2VS
ZWNlaXZlZCk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6ZGF0YVJl
Y2VpdmVkKToKKyAgICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjphY2Nlc3ND
b250cm9sQ2hlY2tGYWlsZWQpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGll
bnQ6OmxvYWRGYWlsZWQpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6
OmxvYWRGaW5pc2hlZCk6CisgICAgICAgICh3ZWJLaXRTcmNXb3VsZFRhaW50T3JpZ2luKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5
cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuY3BwOgorICAgICAgICAoaXNDRE1Qcm94eUF2YWlsYWJs
ZSk6CisgICAgICAgIChhdHRhY2hDRE1Qcm94eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU291cmNlVHJhY2tHU3RyZWFtZXI6OmlzUmVhZHlGb3JNb3JlU2FtcGxl
cyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVRyYWNrR1N0cmVhbWVyOjpub3RpZnlX
aGVuUmVhZHlGb3JNb3JlU2FtcGxlcyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVRy
YWNrR1N0cmVhbWVyOjplbnF1ZXVlT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291
cmNlVHJhY2tHU3RyZWFtZXI6OmNsZWFyUXVldWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvV2ViS2l0TWVkaWFTb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAod2ViS2l0TWVkaWFTcmNBY3RpdmF0ZU1vZGUpOgorICAgICAgICAod2ViS2l0TWVkaWFTcmNQ
YWRMaW5rZWQpOgorICAgICAgICAod2ViS2l0TWVkaWFTcmNMb29wKToKKyAgICAgICAgKHdlYktp
dE1lZGlhU3JjU3RyZWFtRmx1c2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9D
b2xvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om5zQ29sb3IpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHA6CisgICAgICAg
IChOaWNvc2lhOjpOaWNvc2lhSW1hZ2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUpOgorICAgICAg
ICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbToKKyAgICAgICAgKEhhbmRsZURl
bGVnYXRlU291cmNlKToKKyAgICAgICAgKFdlYlRocmVhZEFkb3B0QW5kUmVsZWFzZSk6CisgICAg
ICAgIChXZWJDb3JlT2JqQ0RlYWxsb2NPbldlYlRocmVhZEltcGwpOgorICAgICAgICAoV2ViQ29y
ZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2tJbXBsKToKKyAgICAgICAgKEhhbmRsZVdlYlRo
cmVhZFJlbGVhc2VTb3VyY2UpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRo
cmVhZFJ1bi5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4pOgorICAgICAg
ICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6dmlkZW9TYW1wbGVB
dmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjph
dWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclBy
aXZhdGVNb2NrOjpmZXRjaERhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhcmVjb3JkZXIv
Y29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSk6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjphZGRBdWRpb1NhbXBsZU9ic2VydmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92ZUF1ZGlvU2FtcGxlT2Jz
ZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6YWRkVmlkZW9T
YW1wbGVPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjpy
ZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVk
aWFTb3VyY2U6OnZpZGVvU2FtcGxlQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0
aW1lTWVkaWFTb3VyY2U6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAgICogcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6flJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3Vy
Y2U6OkFkZFNpbmspOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlOjpSZW1vdmVTaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRp
b1NvdXJjZTo6c2VuZEF1ZGlvRnJhbWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVh
bS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjp+UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6QWRkT3JVcGRh
dGVTaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6
UmVtb3ZlU2luayk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3Vy
Y2U6OnNlbmRGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VB
dWRpb1NoYXJlZFVuaXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvU2hhcmVkVW5p
dDo6YWRkQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VBdWRpb1NoYXJlZFVuaXQ6OnJl
bW92ZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQXVkaW9TaGFyZWRVbml0Ojpmb3JF
YWNoQ2xpZW50IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VBdWRpb1NoYXJlZFVuaXQ6
OmNsZWFyQ2xpZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQXVkaW9TaGFyZWRVbml0Ojph
dWRpb1NhbXBsZXNBdmFpbGFibGUpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJB
dWRpb1NvdXJjZVByb3ZpZGVyQ29jb2E6OnByZXBhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRlclJ1
bkxvb3ApOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdDo6Y2FuY2VsKToKKyAgICAgICAgKFdlYkNv
cmU6OkN1cmxSZXF1ZXN0Ojppc0NhbmNlbGxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVx
dWVzdDo6aXNDb21wbGV0ZWRPckNhbmNlbGxlZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVx
dWVzdDo6ZGlkQ29tcGxldGVUcmFuc2Zlcik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9j
dXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1
ZXN0U2NoZWR1bGVyOjpjYWxsT25Xb3JrZXJUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
bFJlcXVlc3RTY2hlZHVsZXI6OnN0YXJ0VGhyZWFkSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OnN0b3BUaHJlYWRJZk5vTW9yZUpvYlJ1bm5pbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OnN0b3BUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OmV4ZWN1dGVUYXNrcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6d29ya2VyVGhyZWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpzdGFydFRyYW5zZmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpmaW5hbGl6ZVRyYW5zZmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbVNjaGVkdWxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsU3RyZWFtU2NoZWR1bGVyOjpjYWxsT25Xb3JrZXJUaHJlYWQp
OgorICAgICAgICAoV2ViQ29yZTo6Q3VybFN0cmVhbVNjaGVkdWxlcjo6c3RhcnRUaHJlYWRJZk5l
ZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsU3RyZWFtU2NoZWR1bGVyOjpzdG9wVGhyZWFk
SWZOb01vcmVKb2JSdW5uaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxTdHJlYW1TY2hlZHVs
ZXI6OmV4ZWN1dGVUYXNrcyk6CisgICAgICAgICogc3R5bGUvU3R5bGVCdWlsZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlOjpCdWlsZGVyOjphcHBseVByb3BlcnR5KToKKyAgICAgICAg
KiB3b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpX
b3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRocmVhZCk6CisgICAgICAgIChX
ZWJDb3JlOjpXb3JrZXJPcldvcmtsZXRUaHJlYWQ6OnN0YXJ0KToKKyAgICAgICAgKiB3b3JrbGV0
cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWludFdv
cmtsZXRHbG9iYWxTY29wZTo6cmVnaXN0ZXJQYWludCk6CisgICAgICAgICogd29ya2xldHMvUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGUuaDoKKwogMjAyMS0wNS0yMSAgRGllZ28gUGlubyBHYXJjaWEg
IDxkcGlub0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFNldCBDYW52YXNJbWFnZVNtb290aGluZy5p
bWFnZVNtb290aGluZ1F1YWxpdHkgdmFsdWUgdG8gJ2xvdycgYXMgZGVmYXVsdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJl
U291cmNlSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmNwcAppbmRleCA2MWIyNmYxZjk1YmEwMDMzMWIzOTBj
MTBmNGYwOWEyMDA5OWRkNDM1Li45NGMxYjU1N2VjYTM5NTlhZDgxMzI4ZGRkM2Y3M2Y4NWRlNWRi
NWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hSZWNv
Z25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3NwZWVjaC9TcGVlY2hSZWNvZ25pdGlvbkNhcHR1cmVTb3VyY2VJbXBsLmNwcApAQCAtMTE4LDcg
KzExOCw3IEBAIHZvaWQgU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbDo6YXVkaW9T
YW1wbGVzQXZhaWxhYmxlKGNvbnN0IE1lZGlhVGltZSYKIAogICAgICAgICBhdXRvIGRhdGEgPSBX
ZWJBdWRpb0J1ZmZlckxpc3QgeyBhdWRpb0Rlc2NyaXB0aW9uLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oc2FtcGxlQ291bnQpIH07CiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9kYXRhU291cmNlTG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
bV9kYXRhU291cmNlTG9jayB9OwogICAgICAgICAgICAgbV9kYXRhU291cmNlLT5wdWxsU2FtcGxl
cygqZGF0YS5saXN0KCksIHNhbXBsZUNvdW50LCB0aW1lLnRpbWVWYWx1ZSgpLCAwLCBBdWRpb1Nh
bXBsZURhdGFTb3VyY2U6OkNvcHkpOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlci5jcHAKaW5kZXggMTU3OWY4MTU1MzI4NzAwMWYw
MDE3NGU5MmJhYzY0MmFkNzZkZDIzZi4uY2I3ZTg0ZDQ1MzgzZTk4ZjgyZTY4MjQzZjUyYjJhNzU2
OGZiZmU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRp
b0J1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1
ZmZlci5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIEF1ZGlvQnVmZmVyOjppbnZhbGlkYXRl
KCkKIAogdm9pZCBBdWRpb0J1ZmZlcjo6cmVsZWFzZU1lbW9yeSgpCiB7Ci0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX2NoYW5uZWxzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2hh
bm5lbHNMb2NrIH07CiAgICAgbV9jaGFubmVscy5jbGVhcigpOwogICAgIG1fY2hhbm5lbFdyYXBw
ZXJzLmNsZWFyKCk7CiB9CkBAIC0yNTIsNyArMjUyLDcgQEAgc2l6ZV90IEF1ZGlvQnVmZmVyOjpt
ZW1vcnlDb3N0KCkgY29uc3QKICAgICAvLyBmcm9tIGJlaW5nIGNoYW5nZWQgd2hpbGUgd2UgaXRl
cmF0ZSBpdCwgYnV0IGNhbGxpbmcgY2hhbm5lbC0+Ynl0ZUxlbmd0aCgpIGlzIHNhZmUKICAgICAv
LyBiZWNhdXNlIGl0IGRvZXNuJ3QgaW52b2x2ZSBjaGFzaW5nIGFueSBwb2ludGVycyB0aGF0IGNh
biBiZSBudWxsaWZpZWQgd2hpbGUgdGhlCiAgICAgLy8gQXVkaW9CdWZmZXIgaXMgYWxpdmUuCi0g
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2NoYW5uZWxzTG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fY2hhbm5lbHNMb2NrIH07CiAgICAgc2l6ZV90IGNvc3QgPSAwOwogICAgIGZvciAo
YXV0byYgY2hhbm5lbCA6IG1fY2hhbm5lbHMpCiAgICAgICAgIGNvc3QgKz0gY2hhbm5lbC0+Ynl0
ZUxlbmd0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmluZGV4IDhiNDNkZDIzZDMxODUzODUxYjg3Nzdi
ZmJmOWI5OGUzMmJmYWIyMGUuLjYzM2M1MDZhMDA3NjdmZmI4ODU4Y2IwNjBmNTFkNzY5OTZiYTE3
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZm
ZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTQxOSw3ICs0MTksNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldEJ1ZmZlcihSZWZQdHI8QXVkaW9CdWZmZXI+
JiYgYnVmZmVyKQogICAgIExvY2tlciBjb250ZXh0TG9ja2VyIHsgY29udGV4dCgpLmdyYXBoTG9j
aygpIH07CiAgICAgCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCi0g
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9wcm9jZXNzTG9jayB9OwogICAgIAogICAgIGlmIChidWZmZXIpIHsKICAgICAgICAg
bV93YXNCdWZmZXJTZXQgPSB0cnVlOwpAQCAtNDc3LDcgKzQ3Nyw3IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6c3RhcnRQbGF5aW5nKGRvdWJsZSB3aGVuLCBkb3Vi
bGUgZ3JhaW5PCiAgICAgY29udGV4dCgpLnNvdXJjZU5vZGVXaWxsQmVnaW5QbGF5YmFjaygqdGhp
cyk7CiAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KLSAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBt
X3Byb2Nlc3NMb2NrIH07CiAKICAgICBtX2lzR3JhaW4gPSB0cnVlOwogICAgIG1fZ3JhaW5PZmZz
ZXQgPSBncmFpbk9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Xb3JrbGV0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwCmluZGV4IDM5NmIyODI1ZDY2ZGY3YzgzZDA1NmVjNTdm
MGM5YjIzYmJhZjU2MzkuLjM0OTYyNmZhNGQ0M2VkMjUzZmNmOTA3MzJiNjQyYWYyYmM1YWE0NjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Xb3JrbGV0
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmts
ZXROb2RlLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIEF1ZGlvV29ya2xldE5vZGU6On5BdWRpb1dv
cmtsZXROb2RlKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIHsKLSAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsKICAgICAgICAgaWYgKG1fcHJvY2Vzc29yKSB7CiAg
ICAgICAgICAgICBpZiAoYXV0byogd29ya2xldFByb3h5ID0gY29udGV4dCgpLmF1ZGlvV29ya2xl
dCgpLnByb3h5KCkpCiAgICAgICAgICAgICAgICAgd29ya2xldFByb3h5LT5wb3N0VGFza0Zvck1v
ZGVUb1dvcmtsZXRHbG9iYWxTY29wZShbbV9wcm9jZXNzb3IgPSBXVEZNb3ZlKG1fcHJvY2Vzc29y
KV0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1v
ZGUoKSk7CkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBBdWRpb1dvcmtsZXROb2RlOjppbml0aWFs
aXplQXVkaW9QYXJhbWV0ZXJzKGNvbnN0IFZlY3RvcjxBdWRpb1BhcmFtRGVzY3JpcHQKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChtX3BhcmFtZXRlcnMtPm1hcCgpLmlz
RW1wdHkoKSk7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb2Nlc3NMb2NrIH07CiAKICAgICBmb3IgKGF1dG8mIGRl
c2NyaXB0b3IgOiBkZXNjcmlwdG9ycykgewogICAgICAgICBhdXRvIHBhcmFtZXRlciA9IEF1ZGlv
UGFyYW06OmNyZWF0ZShjb250ZXh0KCksIGRlc2NyaXB0b3IubmFtZSwgZGVzY3JpcHRvci5kZWZh
dWx0VmFsdWUsIGRlc2NyaXB0b3IubWluVmFsdWUsIGRlc2NyaXB0b3IubWF4VmFsdWUsIGRlc2Ny
aXB0b3IuYXV0b21hdGlvblJhdGUpOwpAQCAtMTgwLDcgKzE4MCw3IEBAIHZvaWQgQXVkaW9Xb3Jr
bGV0Tm9kZTo6c2V0UHJvY2Vzc29yKFJlZlB0cjxBdWRpb1dvcmtsZXRQcm9jZXNzb3I+JiYgcHJv
Y2Vzc29yKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChwcm9jZXNz
b3IpIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsKICAgICAgICAgbV9wcm9jZXNz
b3IgPSBXVEZNb3ZlKHByb2Nlc3Nvcik7CiAgICAgICAgIG1fd29ya2xldFRocmVhZCA9ICZUaHJl
YWQ6OmN1cnJlbnQoKTsKICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCmluZGV4IDJiOGExOWQxMzhlM2EyMWQxZjRjMDA2
YjE4YmY3Zjk1OGZmYjkzYzEuLjU5NzFmZDAwMjI1YmNhY2NjMGU1MzczZTY3MDJkYjRjZDI5ZTg1
MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVy
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJO
b2RlLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENvbnZvbHZlck5v
ZGU6OnNldEJ1ZmZlcihSZWZQdHI8QXVkaW9CdWZmZXI+JiYgYnVmZmVyKQogICAgICAgICBMb2Nr
ZXIgY29udGV4dExvY2tlciB7IGNvbnRleHQoKS5ncmFwaExvY2soKSB9OwogCiAgICAgICAgIC8v
IFN5bmNocm9uaXplIHdpdGggcHJvY2VzcygpLgotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fcHJvY2Vzc0xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9j
ayB9OwogCiAgICAgICAgIG1fcmV2ZXJiID0gV1RGTW92ZShyZXZlcmIpOwogICAgICAgICBtX2J1
ZmZlciA9IFdURk1vdmUoYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRl
eCBiNGJlNTc1NzE1ZjcwYjA5MmUzMmYyNjg5OGYwMTRiNjllODY5YTcyLi5hMWE0NmE2N2VlYTIz
YzU1OTIxM2E3MzA4ODgyY2U1MDY3NGJiMjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUu
Y3BwCkBAIC05OCw3ICs5OCw3IEBAIHZvaWQgTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpz
ZXRGb3JtYXQoc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNvdXJjCiAgICAgICAgIG1f
c291cmNlU2FtcGxlUmF0ZSA9IHNvdXJjZVNhbXBsZVJhdGU7CiAKICAgICAgICAgLy8gU3luY2hy
b25pemUgd2l0aCBwcm9jZXNzKCkuCi0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9w
cm9jZXNzTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb2Nlc3NMb2NrIH07CiAK
ICAgICAgICAgaWYgKHNvdXJjZVNhbXBsZVJhdGUgIT0gc2FtcGxlUmF0ZSgpKSB7CiAgICAgICAg
ICAgICBkb3VibGUgc2NhbGVGYWN0b3IgPSBzb3VyY2VTYW1wbGVSYXRlIC8gc2FtcGxlUmF0ZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVh
bUF1ZGlvU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcAppbmRleCBmNjhlOWY0Nzc4YzM3OTE1MWRlNDc5
ODhkNTYxYzhkM2VhYmQ2OGMxLi5jNTY2MmQ2MDlhZjYwYTZhZWJhNmRhNzIxYTM1ZDFkNTg4YWQ1
MTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZv
aWQgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6OnNldEZvcm1hdChzaXplX3QgbnVtYmVyT2ZD
aGFubmVscywgZmxvYXQgc291cmNlCiAgICAgfQogCiAgICAgLy8gU3luY2hyb25pemUgd2l0aCBw
cm9jZXNzKCkuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCiAgICAgbV9zb3VyY2VOdW1iZXJP
ZkNoYW5uZWxzID0gbnVtYmVyT2ZDaGFubmVsczsKICAgICBtX3NvdXJjZVNhbXBsZVJhdGUgPSBz
b3VyY2VTYW1wbGVSYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L09zY2lsbGF0b3JOb2RlLmNwcAppbmRleCAyM2YyZjM3NWYzYTkxMzA5YzcwNGIxZjg4OTQ1MzU1
NjgwZjI1Zjg3Li5jNmY2OWQyMzA1YzIxNTk5NjcxMzlhODQ3OWZhZTVkMzE4MjIyNTg3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNw
cApAQCAtNDMxLDcgKzQzMSw3IEBAIHZvaWQgT3NjaWxsYXRvck5vZGU6OnNldFBlcmlvZGljV2F2
ZShQZXJpb2RpY1dhdmUmIHBlcmlvZGljV2F2ZSkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwogICAgIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fcHJvY2Vzc0xvY2sgfTsKICAgICBtX3BlcmlvZGljV2F2ZSA9ICZwZXJpb2RpY1dhdmU7CiAg
ICAgbV90eXBlID0gT3NjaWxsYXRvclR5cGU6OkN1c3RvbTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwCmluZGV4IDk3MTg5ZmYwNWIzYzM0MTBh
NGY5ODVjY2UzMmI5N2NhNWE4ZDBkNTQuLjdjY2YyNGQ2NzBiN2Y2ZTFlZjFhMzc3OWY5YjcwNDg2
ODJmZmNlZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFu
bmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJO
b2RlLmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIHZvaWQgUGFubmVyTm9kZTo6c2V0UGFubmluZ01v
ZGVsKFBhbm5pbmdNb2RlbFR5cGUgbW9kZWwpCiAKICAgICBpZiAoIW1fcGFubmVyLmdldCgpIHx8
IG1vZGVsICE9IG1fcGFubmluZ01vZGVsKSB7CiAgICAgICAgIC8vIFRoaXMgc3luY2hyb25pemVz
IHdpdGggcHJvY2VzcygpLgotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vz
c0xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCiAgICAg
ICAgIG1fcGFubmVyID0gUGFubmVyOjpjcmVhdGUobW9kZWwsIHNhbXBsZVJhdGUoKSwgbV9ocnRm
RGF0YWJhc2VMb2FkZXIuZ2V0KCkpOwogICAgICAgICBtX3Bhbm5pbmdNb2RlbCA9IG1vZGVsOwpA
QCAtMjkyLDcgKzI5Miw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBhbm5lck5vZGU6OnNldFBvc2l0
aW9uKGZsb2F0IHgsIGZsb2F0IHksIGZsb2F0IHopCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
cHJvY2Vzc0xvY2sgfTsKIAogICAgIGF1dG8gbm93ID0gY29udGV4dCgpLmN1cnJlbnRUaW1lKCk7
CiAKQEAgLTMxOSw3ICszMTksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYW5uZXJOb2RlOjpzZXRP
cmllbnRhdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQogICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KLSAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3Byb2Nlc3NMb2NrIH07CiAKICAgICBhdXRvIG5vdyA9IGNvbnRleHQoKS5jdXJyZW50
VGltZSgpOwogCkBAIC0zNDYsNyArMzQ2LDcgQEAgdm9pZCBQYW5uZXJOb2RlOjpzZXREaXN0YW5j
ZU1vZGVsKERpc3RhbmNlTW9kZWxUeXBlIG1vZGVsKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KLSAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBt
X3Byb2Nlc3NMb2NrIH07CiAKICAgICBtX2Rpc3RhbmNlRWZmZWN0LnNldE1vZGVsKG1vZGVsLCB0
cnVlKTsKIH0KQEAgLTM1OSw3ICszNTksNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYW5uZXJOb2Rl
OjpzZXRSZWZEaXN0YW5jZShkb3VibGUgcmVmRGlzdGFuY2UpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBSYW5nZUVycm9yLCAicmVmRGlzdGFuY2UgY2Fubm90IGJlIHNldCB0byBhIG5lZ2F0
aXZlIHZhbHVlIl9zIH07CiAgICAgCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9j
ZXNzKCkuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCiAgICAgbV9kaXN0YW5jZUVmZmVjdC5z
ZXRSZWZEaXN0YW5jZShyZWZEaXN0YW5jZSk7CiAgICAgcmV0dXJuIHsgfTsKQEAgLTM3Myw3ICsz
NzMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYW5uZXJOb2RlOjpzZXRNYXhEaXN0YW5jZShkb3Vi
bGUgbWF4RGlzdGFuY2UpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAi
bWF4RGlzdGFuY2UgY2Fubm90IGJlIHNldCB0byBhIG5vbi1wb3NpdGl2ZSB2YWx1ZSJfcyB9Owog
ICAgIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
cHJvY2Vzc0xvY2sgfTsKIAogICAgIG1fZGlzdGFuY2VFZmZlY3Quc2V0TWF4RGlzdGFuY2UobWF4
RGlzdGFuY2UpOwogICAgIHJldHVybiB7IH07CkBAIC0zODcsNyArMzg3LDcgQEAgRXhjZXB0aW9u
T3I8dm9pZD4gUGFubmVyTm9kZTo6c2V0Um9sbG9mZkZhY3Rvcihkb3VibGUgcm9sbG9mZkZhY3Rv
cikKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFJhbmdlRXJyb3IsICJyb2xsb2ZmRmFjdG9y
IGNhbm5vdCBiZSBzZXQgdG8gYSBuZWdhdGl2ZSB2YWx1ZSJfcyB9OwogICAgIAogICAgIC8vIFRo
aXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgotICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9wcm9jZXNzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsK
IAogICAgIG1fZGlzdGFuY2VFZmZlY3Quc2V0Um9sbG9mZkZhY3Rvcihyb2xsb2ZmRmFjdG9yKTsK
ICAgICByZXR1cm4geyB9OwpAQCAtNDAxLDcgKzQwMSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBh
bm5lck5vZGU6OnNldENvbmVPdXRlckdhaW4oZG91YmxlIGdhaW4pCiAgICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgImNvbmVPdXRlckdhaW4gbXVzdCBiZSBpbiBb
MCwgMV0iX3MgfTsKICAgICAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3Mo
KS4KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX3Byb2Nlc3NMb2NrIH07CiAKICAgICBtX2NvbmVFZmZlY3Quc2V0T3V0ZXJH
YWluKGdhaW4pOwogICAgIHJldHVybiB7IH07CkBAIC00MTIsNyArNDEyLDcgQEAgdm9pZCBQYW5u
ZXJOb2RlOjpzZXRDb25lT3V0ZXJBbmdsZShkb3VibGUgYW5nbGUpCiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgot
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsKIAogICAgIG1fY29uZUVmZmVjdC5zZXRPdXRlckFuZ2xl
KGFuZ2xlKTsKIH0KQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIFBhbm5lck5vZGU6OnNldENvbmVJ
bm5lckFuZ2xlKGRvdWJsZSBhbmdsZSkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAg
ICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCkuCi0gICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNz
TG9jayB9OwogCiAgICAgbV9jb25lRWZmZWN0LnNldElubmVyQW5nbGUoYW5nbGUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29y
Tm9kZS5jcHAKaW5kZXggMjU2MWZmYTg1NTE2YTM5ODYxZGUwZjI4ZDBjN2Y2ZjkwYTJjMDFhZC4u
MjJlOTdlOGFhMjVlYWMyZjcwOGUyM2Y3NmE4OWIyOGQ5MzAzMDEzMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3Bw
CkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBTY3JpcHRQcm9jZXNzb3JOb2RlOjp1bmluaXRpYWxp
emUoKQogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYnVm
ZmVyQ291bnQ7ICsraSkgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYnVmZmVy
TG9ja3NbaV0pOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9idWZmZXJMb2Nrc1tpXSB9Owog
ICAgICAgICBtX2lucHV0QnVmZmVyc1tpXSA9IG51bGxwdHI7CiAgICAgICAgIG1fb3V0cHV0QnVm
ZmVyc1tpXSA9IG51bGxwdHI7CiAgICAgfQpAQCAtMjIyLDcgKzIyMiw3IEBAIHZvaWQgU2NyaXB0
UHJvY2Vzc29yTm9kZTo6cHJvY2VzcyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0
aGlzLCBidWZmZXJJbmRleCwgcHJvdGVjdG9yID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAgICAg
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYnVmZmVyTG9ja3NbYnVmZmVySW5kZXhd
KTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9idWZmZXJMb2Nrc1tidWZmZXJJ
bmRleF0gfTsKICAgICAgICAgICAgICAgICBmaXJlUHJvY2Vzc0V2ZW50KGJ1ZmZlckluZGV4KTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAppbmRleCBkMjRkZTJlYjRk
MGNlMWFlOTg1MDBjNjExN2NmOGFmNGFjOWUxZGQ2Li4xMjA4ODUwODA4OTAzNjFkNGM0MGFhNmFj
YWI5NTRiYTcwMGI1NzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvRFNQS2VybmVsPiBXYXZlU2hhcGVyUHJvY2Vzc29yOjpjcmVhdGVLZXJu
ZWwoKQogdm9pZCBXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRDdXJ2ZShGbG9hdDMyQXJyYXkqIGN1
cnZlKQogewogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fcHJvY2Vzc0xvY2sgfTsKIAogICAgIG1fY3VydmUgPSBjdXJ2ZTsKIH0KQEAgLTU5LDcgKzU5
LDcgQEAgdm9pZCBXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRDdXJ2ZShGbG9hdDMyQXJyYXkqIGN1
cnZlKQogdm9pZCBXYXZlU2hhcGVyUHJvY2Vzc29yOjpzZXRPdmVyc2FtcGxlKE92ZXJTYW1wbGVU
eXBlIG92ZXJzYW1wbGUpCiB7CiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNz
KCkuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCiAgICAgbV9vdmVyc2FtcGxlID0gb3ZlcnNh
bXBsZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9E
YXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNl
LmNwcAppbmRleCBjMWRiOGVmYTBiMDBmM2UzMjFhOTBlMjk2NDlkN2U2MzM0MTg3MTE2Li4zYTRj
ZDg1ZTVlYzEwMGM4NzEzMjg3NjM4NDQ5OTU1MjkwY2RjM2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcApAQCAtMzMzLDcgKzMzMyw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IERhdGFiYXNlOjpwZXJmb3JtT3BlbkFuZFZlcmlmeShib29sIHNo
b3VsZFNldFZlcnNpb25Jbk5ld0RhdGFiCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB7
CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSB3YWl0IHRpbGwgdGhlIGJhY2tncm91bmQgcmVtb3Zh
bCBvZiB0aGUgZW1wdHkgZGF0YWJhc2UgZmlsZXMgZmluaXNoZWQgYmVmb3JlIHRyeWluZyB0byBv
cGVuIGFueSBkYXRhYmFzZS4KLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhEYXRhYmFz
ZVRyYWNrZXI6Om9wZW5EYXRhYmFzZU11dGV4KCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
RGF0YWJhc2VUcmFja2VyOjpvcGVuRGF0YWJhc2VNdXRleCgpIH07CiAgICAgfQogI2VuZGlmCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmNwcAppbmRleCA1MWFkOGE4ZjM0YjJhNzUxMTYzZDBkOGJlMjRiOGRmYzg0Y2QxNjBi
Li45NTBiNDVmYzcxYWFiMTZmMTRlMTVlMmEwYWZmMTFmMTI4NTIyYTg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFnZXIuY3Bw
CkBAIC0xODEsMTMgKzE4MSwxMyBAQCBFeGNlcHRpb25PcjxSZWY8RGF0YWJhc2U+PiBEYXRhYmFz
ZU1hbmFnZXI6OnRyeVRvT3BlbkRhdGFiYXNlQmFja2VuZChEb2N1bWVudCYgZAogCiB2b2lkIERh
dGFiYXNlTWFuYWdlcjo6YWRkUHJvcG9zZWREYXRhYmFzZShQcm9wb3NlZERhdGFiYXNlJiBkYXRh
YmFzZSkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvcG9zZWREYXRhYmFzZXNN
dXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRhYmFzZXNNdXRleCB9Owog
ICAgIG1fcHJvcG9zZWREYXRhYmFzZXMuYWRkKCZkYXRhYmFzZSk7CiB9CiAKIHZvaWQgRGF0YWJh
c2VNYW5hZ2VyOjpyZW1vdmVQcm9wb3NlZERhdGFiYXNlKFByb3Bvc2VkRGF0YWJhc2UmIGRhdGFi
YXNlKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9wb3NlZERhdGFiYXNlc011
dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9wb3NlZERhdGFiYXNlc011dGV4IH07CiAg
ICAgbV9wcm9wb3NlZERhdGFiYXNlcy5yZW1vdmUoJmRhdGFiYXNlKTsKIH0KIApAQCAtMjQxLDcg
KzI0MSw3IEBAIHZvaWQgRGF0YWJhc2VNYW5hZ2VyOjpzdG9wRGF0YWJhc2VzKERvY3VtZW50JiBk
b2N1bWVudCwgRGF0YWJhc2VUYXNrU3luY2hyb25pemVyCiBTdHJpbmcgRGF0YWJhc2VNYW5hZ2Vy
OjpmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgYm9vbCBjcmVhdGVJZkRvZXNOb3RFeGlzdCkKIHsKICAgICB7Ci0gICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9wb3NlZERhdGFiYXNlc011dGV4KTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRhYmFzZXNNdXRleCB9OwogICAgICAgICBmb3Ig
KGF1dG8qIHByb3Bvc2VkRGF0YWJhc2UgOiBtX3Byb3Bvc2VkRGF0YWJhc2VzKSB7CiAgICAgICAg
ICAgICBpZiAocHJvcG9zZWREYXRhYmFzZS0+ZGV0YWlscygpLm5hbWUoKSA9PSBuYW1lICYmIHBy
b3Bvc2VkRGF0YWJhc2UtPm9yaWdpbigpLmVxdWFsKCZvcmlnaW4pKQogICAgICAgICAgICAgICAg
IHJldHVybiBTdHJpbmcoKTsKQEAgLTI1Myw3ICsyNTMsNyBAQCBTdHJpbmcgRGF0YWJhc2VNYW5h
Z2VyOjpmdWxsUGF0aEZvckRhdGFiYXNlKFNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIGNvbnN0IFN0
cmluZwogRGF0YWJhc2VEZXRhaWxzIERhdGFiYXNlTWFuYWdlcjo6ZGV0YWlsc0Zvck5hbWVBbmRP
cmlnaW4oY29uc3QgU3RyaW5nJiBuYW1lLCBTZWN1cml0eU9yaWdpbiYgb3JpZ2luKQogewogICAg
IHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb3Bvc2VkRGF0YWJhc2VzTXV0
ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9wb3NlZERhdGFiYXNlc011dGV4IH07
CiAgICAgICAgIGZvciAoYXV0byogcHJvcG9zZWREYXRhYmFzZSA6IG1fcHJvcG9zZWREYXRhYmFz
ZXMpIHsKICAgICAgICAgICAgIGlmIChwcm9wb3NlZERhdGFiYXNlLT5kZXRhaWxzKCkubmFtZSgp
ID09IG5hbWUgJiYgcHJvcG9zZWREYXRhYmFzZS0+b3JpZ2luKCkuZXF1YWwoJm9yaWdpbikpIHsK
ICAgICAgICAgICAgICAgICBBU1NFUlQoJnByb3Bvc2VkRGF0YWJhc2UtPmRldGFpbHMoKS50aHJl
YWQoKSA9PSAmVGhyZWFkOjpjdXJyZW50KCkgfHwgaXNNYWluVGhyZWFkKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3Bw
CmluZGV4IDI5MTA4M2IxZjM5NzJkMjY5N2I5NWJmNWQ0ZGU3MWZhOTkxMTIwM2EuLmEwMzgyMzRi
NzU1NmJjYjVlYmUzNzFiM2M1ODJhNjg1NThhYmI1OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTEzMjEs
NyArMTMyMSw3IEBAIHN0YXRpYyBOb3RpZmljYXRpb25RdWV1ZSYgbm90aWZpY2F0aW9uUXVldWUo
KQogCiB2b2lkIERhdGFiYXNlVHJhY2tlcjo6c2NoZWR1bGVOb3RpZnlEYXRhYmFzZUNoYW5nZWQo
Y29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgbmFtZSkKIHsK
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG5vdGlmaWNhdGlvbkxvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBub3RpZmljYXRpb25Mb2NrIH07CiAgICAgbm90aWZpY2F0aW9uUXVldWUoKS5h
cHBlbmQoc3RkOjptYWtlX3BhaXIob3JpZ2luLmlzb2xhdGVkQ29weSgpLCBuYW1lLmlzb2xhdGVk
Q29weSgpKSk7CiAgICAgc2NoZWR1bGVGb3JOb3RpZmljYXRpb24oKTsKIH0KQEAgLTEzNDgsNyAr
MTM0OCw3IEBAIHZvaWQgRGF0YWJhc2VUcmFja2VyOjpub3RpZnlEYXRhYmFzZXNDaGFuZ2VkKCkK
IAogICAgIE5vdGlmaWNhdGlvblF1ZXVlIG5vdGlmaWNhdGlvbnM7CiAgICAgewotICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG5vdGlmaWNhdGlvbkxvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbm90aWZpY2F0aW9uTG9jayB9OwogICAgICAgICBub3RpZmljYXRpb25zLnN3YXAo
bm90aWZpY2F0aW9uUXVldWUoKSk7CiAgICAgICAgIG5vdGlmaWNhdGlvblNjaGVkdWxlZCA9IGZh
bHNlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0LmNwcAppbmRleCBjMzBmYjg5NGRhYTlmMzEyY2VmMTM5NTk0NWNiNDcxY2RjZjBjYTcx
Li5lZjJlYWNlM2RlZWE4ODc5ZTQ3OTg0NGNjMTAxODhjNDZhNWYwN2I0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwCkBAIC0yNTYsNyAr
MjU2LDcgQEAgdm9pZCBKU0RPTUdsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxs
KiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4odGhpc09i
amVjdCwgdmlzaXRvcik7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
dGhpc09iamVjdC0+bV9nY0xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgdGhpc09iamVj
dC0+bV9nY0xvY2sgfTsKIAogICAgICAgICBmb3IgKGF1dG8mIHN0cnVjdHVyZSA6IHRoaXNPYmpl
Y3QtPnN0cnVjdHVyZXMobG9ja2VyKS52YWx1ZXMoKSkKICAgICAgICAgICAgIHZpc2l0b3IuYXBw
ZW5kKHN0cnVjdHVyZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCmluZGV4IGIzYzQ1Yzdl
MTU3ODYzODQzZDA1YWI1NzA5YTcwMjQ3ZTI2Njk4NzMuLmJiOGQ3ZTBjMWExNDVjZmIyNGFmMjM3
MWNhOGVlM2MxMzExODI5NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVDdXN0b20uY3BwCkBAIC0zNCw3
ICszNCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9y
Pgogdm9pZCBKU1BhaW50V29ya2xldEdsb2JhbFNjb3BlOjp2aXNpdEFkZGl0aW9uYWxDaGlsZHJl
bihWaXNpdG9yJiB2aXNpdG9yKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod3JhcHBl
ZCgpLnBhaW50RGVmaW5pdGlvbkxvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IHdyYXBwZWQo
KS5wYWludERlZmluaXRpb25Mb2NrKCkgfTsKICAgICBmb3IgKGF1dG8mIHJlZ2lzdGVyZWQgOiB3
cmFwcGVkKCkucGFpbnREZWZpbml0aW9uTWFwKCkudmFsdWVzKCkpIHsKICAgICAgICAgcmVnaXN0
ZXJlZC0+cGFpbnRDYWxsYmFjay0+dmlzaXRKU0Z1bmN0aW9uKHZpc2l0b3IpOwogICAgICAgICB2
aXNpdG9yLmFwcGVuZFVuYmFycmllcmVkKHJlZ2lzdGVyZWQtPnBhaW50Q29uc3RydWN0b3IpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcAppbmRleCA4Y2E2ZTVlMjBj
NTRlNzZjMWU2OTZlYTI4YmVkNDQwMTIxMjQxM2ViLi5jZTE1ZWFjY2FkZDMyYmQwMThiMTQ1M2Mz
MDUzMTRjOTA3MjlhZjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJ
bWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFpbnRJbWFnZVZhbHVl
LmNwcApAQCAtNTQsNyArNTQsNyBAQCBSZWZQdHI8SW1hZ2U+IENTU1BhaW50SW1hZ2VWYWx1ZTo6
aW1hZ2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyRWxlbWVudCwgY29uc3QgRmxvYQogICAgIGF1dG8q
IHNlbGVjdGVkR2xvYmFsU2NvcGUgPSByZW5kZXJFbGVtZW50LmRvY3VtZW50KCkucGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGVGb3JOYW1lKG1fbmFtZSk7CiAgICAgaWYgKCFzZWxlY3RlZEdsb2JhbFNj
b3BlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KHNlbGVjdGVkR2xvYmFsU2NvcGUtPnBhaW50RGVmaW5pdGlvbkxvY2soKSk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IHNlbGVjdGVkR2xvYmFsU2NvcGUtPnBhaW50RGVmaW5pdGlvbkxvY2soKSB9Owog
ICAgIGF1dG8qIHJlZ2lzdHJhdGlvbiA9IHNlbGVjdGVkR2xvYmFsU2NvcGUtPnBhaW50RGVmaW5p
dGlvbk1hcCgpLmdldChtX25hbWUpOwogCiAgICAgaWYgKCFyZWdpc3RyYXRpb24pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCmluZGV4IDZhMGUxOTY2NDU0MmU4MTY4
MWM3YTY5N2VjYzcxMTViN2E0ZGZjMTEuLjJmYTRlMjBiMDY3YzVhN2M4ZWMwZWYyNjQ0M2NiZWYw
NWEwYWNjYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmts
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9ET01DU1NQYWludFdvcmtsZXQuY3BwCkBA
IC03Niw3ICs3Niw3IEBAIHZvaWQgUGFpbnRXb3JrbGV0OjphZGRNb2R1bGUoY29uc3QgU3RyaW5n
JiBtb2R1bGVVUkwsIFdvcmtsZXRPcHRpb25zJiYsIERPTVByb21pCiAgICAgYXV0byBjb250ZXh0
ID0gbWF5YmVDb250ZXh0LnJlbGVhc2VOb25OdWxsKCk7CiAgICAgY29udGV4dC0+ZXZhbHVhdGUo
KTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY29udGV4dC0+cGFpbnREZWZpbml0aW9u
TG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgY29udGV4dC0+cGFpbnREZWZpbml0aW9uTG9j
aygpIH07CiAgICAgZm9yIChhdXRvJiBuYW1lIDogY29udGV4dC0+cGFpbnREZWZpbml0aW9uTWFw
KCkua2V5cygpKQogICAgICAgICBkb2N1bWVudC0+c2V0UGFpbnRXb3JrbGV0R2xvYmFsU2NvcGVG
b3JOYW1lKG5hbWUsIG1ha2VSZWYoY29udGV4dC5nZXQoKSkpOwogICAgIHByb21pc2UucmVzb2x2
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuY3BwCmluZGV4IGZjMzYzYWUz
M2FmOTI3NmZmYzVjYTZhMmI2YjFjZjI3NWJhODAwOTUuLjU5YzBiMjkxNzNiYTQ2NDkwZGU5ZWUw
ZmY3YWIwM2MwMzI0NmQ4Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExp
c3RlbmVyTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRMaXN0ZW5lck1hcC5j
cHAKQEAgLTgyLDcgKzgyLDcgQEAgYm9vbCBFdmVudExpc3RlbmVyTWFwOjpjb250YWluc0FjdGl2
ZShjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUpIGNvbnN0CiAKIHZvaWQgRXZlbnRMaXN0ZW5l
ck1hcDo6Y2xlYXIoKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgCiAgICAgYXNzZXJ0Tm9BY3RpdmVJdGVy
YXRvcnMoKTsKIApAQCAtMTE3LDcgKzExNyw3IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGZpbmRM
aXN0ZW5lcihjb25zdCBFdmVudExpc3RlbmVyVmVjdG9yJiBsaXN0ZW5lcnMsIEV2ZW50TGlzCiAK
IHZvaWQgRXZlbnRMaXN0ZW5lck1hcDo6cmVwbGFjZShjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5
cGUsIEV2ZW50TGlzdGVuZXImIG9sZExpc3RlbmVyLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBuZXdM
aXN0ZW5lciwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI6Ok9wdGlvbnMmIG9wdGlvbnMp
CiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2xvY2sgfTsKICAgICAKICAgICBhc3NlcnROb0FjdGl2ZUl0ZXJhdG9ycygpOwogCkBA
IC0xMzIsNyArMTMyLDcgQEAgdm9pZCBFdmVudExpc3RlbmVyTWFwOjpyZXBsYWNlKGNvbnN0IEF0
b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgb2xkTGkKIAogYm9vbCBFdmVudExp
c3RlbmVyTWFwOjphZGQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0
ZW5lcj4mJiBsaXN0ZW5lciwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI6Ok9wdGlvbnMm
IG9wdGlvbnMpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2xvY2sgfTsKICAgICAKICAgICBhc3NlcnROb0FjdGl2ZUl0ZXJhdG9y
cygpOwogCkBAIC0xNjIsNyArMTYyLDcgQEAgc3RhdGljIGJvb2wgcmVtb3ZlTGlzdGVuZXJGcm9t
VmVjdG9yKEV2ZW50TGlzdGVuZXJWZWN0b3ImIGxpc3RlbmVycywgRXZlbnRMaXN0ZW4KIAogYm9v
bCBFdmVudExpc3RlbmVyTWFwOjpyZW1vdmUoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBF
dmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJlKQogewotICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAg
ICAgCiAgICAgYXNzZXJ0Tm9BY3RpdmVJdGVyYXRvcnMoKTsKIApAQCAtMjAyLDcgKzIwMiw3IEBA
IHN0YXRpYyB2b2lkIHJlbW92ZUZpcnN0TGlzdGVuZXJDcmVhdGVkRnJvbU1hcmt1cChFdmVudExp
c3RlbmVyVmVjdG9yJiBsaXN0ZW5lclZlCiAKIHZvaWQgRXZlbnRMaXN0ZW5lck1hcDo6cmVtb3Zl
Rmlyc3RFdmVudExpc3RlbmVyQ3JlYXRlZEZyb21NYXJrdXAoY29uc3QgQXRvbVN0cmluZyYgZXZl
bnRUeXBlKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgCiAgICAgYXNzZXJ0Tm9BY3RpdmVJdGVyYXRvcnMo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggMTIwNDAxZjg4OGJjYTY3NzY4
MTFkOTBkMjVmODI0MWY1NTE3MTc0MS4uM2Q0YTZmZGYxMGY1YmRjMmZhZGNmZDM3MWI4MDNhNmY4
MTQwYmZmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC0zOTMsNyArMzkzLDcg
QEAgdm9pZCBFdmVudFRhcmdldDo6dmlzaXRKU0V2ZW50TGlzdGVuZXJzKFZpc2l0b3ImIHZpc2l0
b3IpCiAgICAgaWYgKCFkYXRhKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhkYXRhLT5ldmVudExpc3RlbmVyTWFwLmxvY2soKSk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IGRhdGEtPmV2ZW50TGlzdGVuZXJNYXAubG9jaygpIH07CiAgICAgRXZlbnRMaXN0
ZW5lckl0ZXJhdG9yIGl0ZXJhdG9yKCZkYXRhLT5ldmVudExpc3RlbmVyTWFwKTsKICAgICB3aGls
ZSAoYXV0byogbGlzdGVuZXIgPSBpdGVyYXRvci5uZXh0TGlzdGVuZXIoKSkKICAgICAgICAgbGlz
dGVuZXItPnZpc2l0SlNGdW5jdGlvbih2aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCBiMmZh
M2EyMjVlNDViYjk4N2M5NDdmZjZiNDFlM2E0ZDBiYmFjYzU4Li45MTY5M2I0MjljM2UyZTIxNmM3
NGM2MWI2MTQ2YmUzNDYxZTk0OTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yMjM5LDcgKzIyMzks
NyBAQCBFdmVudFRhcmdldERhdGEmIE5vZGU6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCiAgICAg
SlNDOjpWTSogdm0gPSBjb21tb25WTU9yTnVsbCgpOwogICAgIFJFTEVBU0VfQVNTRVJUKCF2bSB8
fCB2bS0+aGVhcC53b3JsZElzUnVubmluZygpKTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2soc19ldmVudFRhcmdldERhdGFNYXBMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc19ldmVu
dFRhcmdldERhdGFNYXBMb2NrIH07CiAgICAgc2V0SGFzRXZlbnRUYXJnZXREYXRhKHRydWUpOwog
ICAgIHJldHVybiAqZXZlbnRUYXJnZXREYXRhTWFwKCkuYWRkKHRoaXMsIG1ha2VVbmlxdWU8RXZl
bnRUYXJnZXREYXRhPigpKS5pdGVyYXRvci0+dmFsdWU7CiB9CkBAIC0yMjQ4LDcgKzIyNDgsNyBA
QCB2b2lkIE5vZGU6OmNsZWFyRXZlbnRUYXJnZXREYXRhKCkKIHsKICAgICBKU0M6OlZNKiB2bSA9
IGNvbW1vblZNT3JOdWxsKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoIXZtIHx8IHZtLT5oZWFwLndv
cmxkSXNSdW5uaW5nKCkpOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soc19ldmVudFRhcmdl
dERhdGFNYXBMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc19ldmVudFRhcmdldERhdGFNYXBM
b2NrIH07CiAgICAgZXZlbnRUYXJnZXREYXRhTWFwKCkucmVtb3ZlKHRoaXMpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9DYW52YXNCYXNlLmNwcAppbmRleCAzZTQyNDljMGE5NWM1NjFiZTM4ZDMxMTJjMzNi
ZTQzNDMzYzYwZTIxLi4wN2ViNjUxNDlmYzk5NjcwNTdlODJhYzY0OTVkZDEyMGMyZDVlMjU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzaXplX3Qg
Q2FudmFzQmFzZTo6bWVtb3J5Q29zdCgpIGNvbnN0CiAgICAgLy8gbWVtb3J5Q29zdCgpIG1heSBi
ZSBpbnZva2VkIGNvbmN1cnJlbnRseSBmcm9tIGEgR0MgdGhyZWFkLCBhbmQgd2UgbmVlZCB0byBi
ZSBjYXJlZnVsCiAgICAgLy8gYWJvdXQgd2hhdCBkYXRhIHdlIGFjY2VzcyBoZXJlIGFuZCBob3cu
IFdlIG5lZWQgdG8gaG9sZCBhIGxvY2sgdG8gcHJldmVudCBtX2ltYWdlQnVmZmVyCiAgICAgLy8g
ZnJvbSBiZWluZyBjaGFuZ2VkIHdoaWxlIHdlIGFjY2VzcyBpdC4KLSAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1faW1hZ2VCdWZmZXJBc3NpZ25tZW50TG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1faW1hZ2VCdWZmZXJBc3NpZ25tZW50TG9jayB9OwogICAgIGlmICghbV9pbWFnZUJ1ZmZl
cikKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXItPm1lbW9yeUNv
c3QoKTsKQEAgLTExNCw3ICsxMTQsNyBAQCBzaXplX3QgQ2FudmFzQmFzZTo6ZXh0ZXJuYWxNZW1v
cnlDb3N0KCkgY29uc3QKICAgICAvLyBleHRlcm5hbE1lbW9yeUNvc3QoKSBtYXkgYmUgaW52b2tl
ZCBjb25jdXJyZW50bHkgZnJvbSBhIEdDIHRocmVhZCwgYW5kIHdlIG5lZWQgdG8gYmUgY2FyZWZ1
bAogICAgIC8vIGFib3V0IHdoYXQgZGF0YSB3ZSBhY2Nlc3MgaGVyZSBhbmQgaG93LiBXZSBuZWVk
IHRvIGhvbGQgYSBsb2NrIHRvIHByZXZlbnQgbV9pbWFnZUJ1ZmZlcgogICAgIC8vIGZyb20gYmVp
bmcgY2hhbmdlZCB3aGlsZSB3ZSBhY2Nlc3MgaXQuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX2ltYWdlQnVmZmVyQXNzaWdubWVudExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2lt
YWdlQnVmZmVyQXNzaWdubWVudExvY2sgfTsKICAgICBpZiAoIW1faW1hZ2VCdWZmZXIpCiAgICAg
ICAgIHJldHVybiAwOwogICAgIHJldHVybiBtX2ltYWdlQnVmZmVyLT5leHRlcm5hbE1lbW9yeUNv
c3QoKTsKQEAgLTE4OCw3ICsxODgsNyBAQCBSZWZQdHI8SW1hZ2VCdWZmZXI+IENhbnZhc0Jhc2U6
OnNldEltYWdlQnVmZmVyKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpIGNvbgogewogICAg
IFJlZlB0cjxJbWFnZUJ1ZmZlcj4gcmV0dXJuQnVmZmVyOwogICAgIHsKLSAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2ltYWdlQnVmZmVyQXNzaWdubWVudExvY2spOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9pbWFnZUJ1ZmZlckFzc2lnbm1lbnRMb2NrIH07CiAgICAgICAgIG1f
Y29udGV4dFN0YXRlU2F2ZXIgPSBudWxscHRyOwogICAgICAgICByZXR1cm5CdWZmZXIgPSBzdGQ6
OmV4Y2hhbmdlKG1faW1hZ2VCdWZmZXIsIFdURk1vdmUoYnVmZmVyKSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAppbmRleCBkZjJhM2E3MDhmY2Q3Njg4ZTU0MGRi
ZTQ2ODg3ZTUyNDBmMjM0M2ViLi5lZTA4ZjgzMGRkNGM1MWM0N2U2YTYwYTYyYjM1NGUxNzBhYTE3
YzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcApAQCAtMTUzLDcgKzE1
Myw3IEBAIHZvaWQgSFRNTENvbGxlY3Rpb246OmludmFsaWRhdGVOYW1lZEVsZW1lbnRDYWNoZShE
b2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiAgICAgQVNTRVJUKGhhc05hbWVkRWxlbWVudENhY2hl
KCkpOwogICAgIGRvY3VtZW50LmNvbGxlY3Rpb25XaWxsQ2xlYXJJZE5hbWVNYXAoKnRoaXMpOwog
ICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX25hbWVkRWxlbWVudENhY2hl
QXNzaWdubWVudExvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9uYW1lZEVsZW1lbnRD
YWNoZUFzc2lnbm1lbnRMb2NrIH07CiAgICAgICAgIG1fbmFtZWRFbGVtZW50Q2FjaGUgPSBudWxs
cHRyOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxl
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAppbmRleCA4OTM3
YjAzNmMyMzgyMmYxZWYxOTU3ZTgzZGRjNTMwOWM0MjU3NDNmLi40ZTIzMGEwYWY4ZDk3NTJiMDAy
ZTdjN2M5MDc4NzlmZjM5NzVkN2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxDb2xsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5o
CkBAIC0xNzUsNyArMTc1LDcgQEAgaW5saW5lIHNpemVfdCBIVE1MQ29sbGVjdGlvbjo6bWVtb3J5
Q29zdCgpIGNvbnN0CiB7CiAgICAgLy8gbWVtb3J5Q29zdCgpIG1heSBiZSBpbnZva2VkIGNvbmN1
cnJlbnRseSBmcm9tIGEgR0MgdGhyZWFkLCBhbmQgd2UgbmVlZCB0byBiZSBjYXJlZnVsIGFib3V0
IHdoYXQgZGF0YSB3ZSBhY2Nlc3MgaGVyZSBhbmQgaG93LgogICAgIC8vIEhlbmNlLCB3ZSBuZWVk
IHRvIGd1YXJkIG1fbmFtZWRFbGVtZW50Q2FjaGUgZnJvbSBiZWluZyByZXBsYWNlZCB3aGlsZSBh
Y2Nlc3NpbmcgaXQuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX25hbWVkRWxlbWVudENh
Y2hlQXNzaWdubWVudExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX25hbWVkRWxlbWVudENh
Y2hlQXNzaWdubWVudExvY2sgfTsKICAgICByZXR1cm4gbV9uYW1lZEVsZW1lbnRDYWNoZSA/IG1f
bmFtZWRFbGVtZW50Q2FjaGUtPm1lbW9yeUNvc3QoKSA6IDA7CiB9CiAKQEAgLTIyMyw3ICsyMjMs
NyBAQCBpbmxpbmUgdm9pZCBIVE1MQ29sbGVjdGlvbjo6c2V0TmFtZWRJdGVtQ2FjaGUoc3RkOjp1
bmlxdWVfcHRyPENvbGxlY3Rpb25OYW1lZEVsZQogICAgIEFTU0VSVCghbV9uYW1lZEVsZW1lbnRD
YWNoZSk7CiAgICAgY2FjaGUtPmRpZFBvcHVsYXRlKCk7CiAgICAgewotICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fbmFtZWRFbGVtZW50Q2FjaGVBc3NpZ25tZW50TG9jayk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX25hbWVkRWxlbWVudENhY2hlQXNzaWdubWVudExvY2sgfTsK
ICAgICAgICAgbV9uYW1lZEVsZW1lbnRDYWNoZSA9IFdURk1vdmUoY2FjaGUpOwogICAgIH0KICAg
ICBkb2N1bWVudCgpLmNvbGxlY3Rpb25DYWNoZWRJZE5hbWVNYXAoKnRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCmluZGV4IDNhNTQzYmNiMmJkYTdjNjkyNTMyNDAw
NWM1NWJiZDVmNzY5OThlMzYuLjNlZjIzYWIzYjdiY2RlMWYwZWJkNWQzNzBjMDE5NTI4N2NhMzI3
ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5jcHAKQEAgLTQzMyw3ICs0
MzMsNyBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6c2V0UGxhY2Vob2xkZXJDYW52YXMoSFRNTENh
bnZhc0VsZW1lbnQmIGNhbnZhcykKIHZvaWQgT2Zmc2NyZWVuQ2FudmFzOjpwdXNoQnVmZmVyVG9Q
bGFjZWhvbGRlcigpCiB7CiAgICAgY2FsbE9uTWFpblRocmVhZChbcGxhY2Vob2xkZXJEYXRhID0g
bWFrZVJlZigqbV9wbGFjZWhvbGRlckRhdGEpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhwbGFjZWhvbGRlckRhdGEtPmJ1ZmZlckxvY2spOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgcGxhY2Vob2xkZXJEYXRhLT5idWZmZXJMb2NrIH07CiAgICAgICAgIGlm
IChwbGFjZWhvbGRlckRhdGEtPmNhbnZhcyAmJiBwbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21t
aXRCdWZmZXIpCiAgICAgICAgICAgICBwbGFjZWhvbGRlckRhdGEtPmNhbnZhcy0+c2V0SW1hZ2VC
dWZmZXJBbmRNYXJrRGlydHkoV1RGTW92ZShwbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRC
dWZmZXIpKTsKICAgICAgICAgcGxhY2Vob2xkZXJEYXRhLT5wZW5kaW5nQ29tbWl0QnVmZmVyID0g
bnVsbHB0cjsKQEAgLTQ1Niw3ICs0NTYsNyBAQCB2b2lkIE9mZnNjcmVlbkNhbnZhczo6Y29tbWl0
VG9QbGFjZWhvbGRlckNhbnZhcygpCiAgICAgICAgICAgICBtX3BsYWNlaG9sZGVyRGF0YS0+YnVm
ZmVyUGlwZVNvdXJjZS0+aGFuZGxlKFdURk1vdmUoYnVmZmVyQ29weSkpOwogICAgIH0KIAotICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlckxvY2spOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX3BsYWNlaG9sZGVyRGF0YS0+YnVmZmVyTG9jayB9OwogICAg
IGJvb2wgc2hvdWxkUHVzaEJ1ZmZlciA9ICFtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlcjsKICAgICBtX3BsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1pdEJ1ZmZlciA9IGlt
YWdlQnVmZmVyLT5jb3B5UmVjdFRvQnVmZmVyKEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGltYWdl
QnVmZmVyLT5sb2dpY2FsU2l6ZSgpKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCLCBpbWFn
ZUJ1ZmZlci0+Y29udGV4dCgpKTsKICAgICBpZiAobV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdD
b21taXRCdWZmZXIgJiYgc2hvdWxkUHVzaEJ1ZmZlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcAppbmRleCBkYmU1NGRjNjg4MTJi
YmQzMDY1NWI5YjkxZmViMTc2MjkxZWEyYzExLi4zMGQ0YjNmZjBjYmQyNGY1MzgwODYzMGJjYzQz
MDY3ZDhjZThmMDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNW
ZXJ0ZXhBcnJheU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT0VT
VmVydGV4QXJyYXlPYmplY3QuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgT0VTVmVydGV4QXJy
YXlPYmplY3Q6OmRlbGV0ZVZlcnRleEFycmF5T0VTKFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMq
IGFycmF5CiAgICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9jb250ZXh0LT5vYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG1fY29udGV4dC0+b2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmICgh
YXJyYXlPYmplY3QgfHwgbV9jb250ZXh0LT5pc0NvbnRleHRMb3N0KCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBPRVNWZXJ0ZXhBcnJheU9iamVjdDo6YmluZFZlcnRl
eEFycmF5T0VTKFdlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMqIGFycmF5T2IKICAgICBpZiAoIW1f
Y29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2NvbnRleHQtPm9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jb250
ZXh0LT5vYmplY3RHcmFwaExvY2soKSB9OwogCiAgICAgaWYgKG1fY29udGV4dC0+aXNDb250ZXh0
TG9zdCgpKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGExYTQyOWYzNTViYjMwMTE3
NTQxYjVkNzgyZmU5OGIxOTQyZDdjNDAuLmViMmQzYWE4ZDYzN2U0ZDRiYTYzYTEzODE4MGEwN2Ri
MjljNDA2ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
MlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC02OTQsNyArNjk0LDcgQEAgdm9pZCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpnZXRCdWZmZXJTdWJEYXRhKEdDR0xlbnVtIHRhcmdldCwgbG9uZyBsb25n
IHNyY0J5dGUKIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kRnJhbWVidWZmZXIo
R0NHTGVudW0gdGFyZ2V0LCBXZWJHTEZyYW1lYnVmZmVyKiBidWZmZXIpCiB7Ci0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAoIXZhbGlkYXRlTnVsbGFibGVXZWJHTE9i
amVjdCgiYmluZEZyYW1lYnVmZmVyIiwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzI0
LDcgKzcyNCw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmxpdEZyYW1lYnVmZmVy
KEdDR0xpbnQgc3JjWDAsIEdDR0xpbnQgc3JjWTAsIEdDR0xpCiAKIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6ZGVsZXRlRnJhbWVidWZmZXIoV2ViR0xGcmFtZWJ1ZmZlciogZnJhbWVidWZm
ZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAoIWRlbGV0
ZU9iamVjdChsb2NrZXIsIGZyYW1lYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTcxMSw3
ICsxNzExLDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJNHVp
dihHQ0dMdWludCBpbmRleCwgVWludDMyTGlzdCYmIGxpc3QKIAogdm9pZCBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJUG9pbnRlcihHQ0dMdWludCBpbmRleCwgR0NHTGludCBz
aXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMc2l6ZWkgc3RyaWRlLCBHQ0dMaW50NjQgb2Zmc2V0KQog
ewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExv
Y2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2soKSB9OwogCiAgICAgaWYgKGlzQ29udGV4dExv
c3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTkxMCw3ICsxOTEwLDcgQEAgUmVm
UHRyPFdlYkdMUXVlcnk+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVF1ZXJ5KCkKIAog
dm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVRdWVyeShXZWJHTFF1ZXJ5KiBxdWVy
eSkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmIChpc0NvbnRl
eHRMb3N0T3JQZW5kaW5nKCkgfHwgIXF1ZXJ5IHx8ICFxdWVyeS0+b2JqZWN0KCkgfHwgIXZhbGlk
YXRlV2ViR0xPYmplY3QoImRlbGV0ZVF1ZXJ5IiwgcXVlcnkpKQogICAgICAgICByZXR1cm47CkBA
IC0xOTQ1LDcgKzE5NDUsNyBAQCBib29sIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnZhbGlkYXRl
UXVlcnlUYXJnZXQoY29uc3QgY2hhciogZnVuY3Rpb25OYW1lLCBHQ0dMZQogCiB2b2lkIFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luUXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBXZWJHTFF1ZXJ5
JiBxdWVyeSkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygp
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIEdDR0xl
bnVtIHRhcmdldEtleTsKICAgICBpZiAoIXZhbGlkYXRlV2ViR0xPYmplY3QoImJlZ2luUXVlcnki
LCAmcXVlcnkpIHx8ICF2YWxpZGF0ZVF1ZXJ5VGFyZ2V0KCJiZWdpblF1ZXJ5IiwgdGFyZ2V0LCAm
dGFyZ2V0S2V5KSkKQEAgLTE5NzAsNyArMTk3MCw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6YmVnaW5RdWVyeShHQ0dMZW51bSB0YXJnZXQsIFdlYkdMUXVlcnkmIHF1ZXJ5KQogCiB2
b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmVuZFF1ZXJ5KEdDR0xlbnVtIHRhcmdldCkKIHsK
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIEdDR0xlbnVtIHRhcmdldEtl
eTsKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgfHwgIXZhbGlkYXRlUXVlcnlUYXJnZXQoImJlZ2luUXVlcnkiLCB0YXJnZXQsICZ0
YXJnZXRLZXkpKQpAQCAtMjA0MSw3ICsyMDQxLDcgQEAgUmVmUHRyPFdlYkdMU2FtcGxlcj4gV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlU2FtcGxlcigpCiAKIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6ZGVsZXRlU2FtcGxlcihXZWJHTFNhbXBsZXIqIHNhbXBsZXIpCiB7Ci0gICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVu
ZGluZygpKQogICAgICAgICByZXR1cm47CkBAIC0yMDY3LDcgKzIwNjcsNyBAQCBHQ0dMYm9vbGVh
biBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppc1NhbXBsZXIoV2ViR0xTYW1wbGVyKiBzYW1wbGVy
KQogCiB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJpbmRTYW1wbGVyKEdDR0x1aW50IHVu
aXQsIFdlYkdMU2FtcGxlciogc2FtcGxlcikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2Nr
KCkgfTsKIAogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTIxNTksNyArMjE1OSw3IEBAIEdDR0xib29sZWFuIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmlzU3luYyhXZWJHTFN5bmMqIHN5bmMpCiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4
dDo6ZGVsZXRlU3luYyhXZWJHTFN5bmMqIHN5bmMpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBo
TG9jaygpIH07CiAKICAgICBkZWxldGVPYmplY3QobG9ja2VyLCBzeW5jKTsKIH0KQEAgLTIyMzAs
NyArMjIzMCw3IEBAIFJlZlB0cjxXZWJHTFRyYW5zZm9ybUZlZWRiYWNrPiBXZWJHTDJSZW5kZXJp
bmdDb250ZXh0OjpjcmVhdGVUcmFuc2Zvcm1GZWVkYmFjaygpCiAKIHZvaWQgV2ViR0wyUmVuZGVy
aW5nQ29udGV4dDo6ZGVsZXRlVHJhbnNmb3JtRmVlZGJhY2soV2ViR0xUcmFuc2Zvcm1GZWVkYmFj
ayogZmVlZGJhY2tPYmplY3QpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RH
cmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAK
ICAgICAvLyBXZSBoYXZlIHRvIHNob3J0LWNpcmN1aXQgdGhlIGRlbGV0aW9uIHByb2Nlc3MgaWYg
dGhlIHRyYW5zZm9ybSBmZWVkYmFjayBpcwogICAgIC8vIGFjdGl2ZS4gVGhpcyByZXF1aXJlcyBk
dXBsaWNhdGlvbiBvZiBzb21lIHZhbGlkYXRpb24gbG9naWMuCkBAIC0yMjY1LDcgKzIyNjUsNyBA
QCBHQ0dMYm9vbGVhbiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojppc1RyYW5zZm9ybUZlZWRiYWNr
KFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqCiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6
YmluZFRyYW5zZm9ybUZlZWRiYWNrKEdDR0xlbnVtIHRhcmdldCwgV2ViR0xUcmFuc2Zvcm1GZWVk
YmFjayogZmVlZGJhY2tPYmplY3QpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmpl
Y3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07
CiAKICAgICBpZiAoIXZhbGlkYXRlTnVsbGFibGVXZWJHTE9iamVjdCgiYmluZFRyYW5zZm9ybUZl
ZWRiYWNrIiwgZmVlZGJhY2tPYmplY3QpKQogICAgICAgICByZXR1cm47CkBAIC0yMzI2LDcgKzIz
MjYsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJlZ2luVHJhbnNmb3JtRmVlZGJh
Y2soR0NHTGVudW0gcHJpbWl0aXZlTW9kZSkKIAogICAgIG1fY29udGV4dC0+YmVnaW5UcmFuc2Zv
cm1GZWVkYmFjayhwcmltaXRpdmVNb2RlKTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
b2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2so
KSB9OwogICAgIG1fYm91bmRUcmFuc2Zvcm1GZWVkYmFjay0+c2V0UHJvZ3JhbShsb2NrZXIsICpt
X2N1cnJlbnRQcm9ncmFtKTsKICAgICBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2stPnNldEFjdGl2
ZSh0cnVlKTsKICAgICBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2stPnNldFBhdXNlZChmYWxzZSk7
CkBAIC0yNDI0LDcgKzI0MjQsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OnJlc3Vt
ZVRyYW5zZm9ybUZlZWRiYWNrKCkKIAogYm9vbCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpzZXRJ
bmRleGVkQnVmZmVyQmluZGluZyhjb25zdCBjaGFyICpmdW5jdGlvbk5hbWUsIEdDR0xlbnVtIHRh
cmdldCwgR0NHTHVpbnQgaW5kZXgsIFdlYkdMQnVmZmVyKiBidWZmZXIpCiB7Ci0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAoIXZhbGlkYXRlTnVsbGFibGVXZWJHTE9i
amVjdChmdW5jdGlvbk5hbWUsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2
MTYsNyArMjYxNiw3IEBAIFJlZlB0cjxXZWJHTFZlcnRleEFycmF5T2JqZWN0PiBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpjcmVhdGVWZXJ0ZXhBcnJheSgpCiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6ZGVsZXRlVmVydGV4QXJyYXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogYXJyYXlP
YmplY3QpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICAvLyB2YWxp
ZGF0ZVdlYkdMT2JqZWN0IGdlbmVyYXRlcyBhbiBlcnJvciBpZiB0aGUgb2JqZWN0IGhhcyBhbHJl
YWR5IGJlZW4KICAgICAvLyBkZWxldGVkLCBzbyB3ZSBtdXN0IHJlcGxpY2F0ZSBtb3N0IG9mIGl0
cyBjaGVja3MgaGVyZS4KQEAgLTI2MzUsNyArMjYzNSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5n
Q29udGV4dDo6ZGVsZXRlVmVydGV4QXJyYXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogYXJyYXlP
YmplCiAgICAgICAgIC8vIGJpbmRWZXJ0ZXhBcnJheSBncmFicyB0aGUgbG9jayBpbnRlcm5hbGx5
LgogICAgICAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKICAgICAgICAgYmluZFZlcnRleEFycmF5
KG51bGxwdHIpOyAvLyBUaGUgZGVmYXVsdCBWQU8gd2FzIHJlbW92ZWQgaW4gT3BlbkdMIDMuMyBi
dXQgbm90IGZyb20gV2ViR0wgMjsgYmluZCB0aGUgZGVmYXVsdCBmb3IgV2ViR0wgdG8gdXNlLgot
ICAgICAgICBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgICAgIGxv
Y2tlciA9IExvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAgICAgfQogCiAgICAgYXJyYXlP
YmplY3QtPmRlbGV0ZU9iamVjdChsb2NrZXIsIGdyYXBoaWNzQ29udGV4dEdMKCkpOwpAQCAtMjY1
Niw3ICsyNjU2LDcgQEAgR0NHTGJvb2xlYW4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aXNWZXJ0
ZXhBcnJheShXZWJHTFZlcnRleEFycmF5T2JqZWN0KiBhcnJheU8KIAogdm9pZCBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpiaW5kVmVydGV4QXJyYXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogYXJy
YXlPYmplY3QpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2so
KSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAo
IXZhbGlkYXRlTnVsbGFibGVXZWJHTE9iamVjdCgiYmluZFZlcnRleEFycmF5IiwgYXJyYXlPYmpl
Y3QpKQogICAgICAgICByZXR1cm47CkBAIC0zMDk2LDcgKzMwOTYsNyBAQCB2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmFkZE1lbWJlcnNUb09wYXF1ZVJvb3RzKEpTQzo6QWJzdHJhY3RTbG90
VmlzaXRvciYgdgogewogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmFkZE1lbWJlcnNU
b09wYXF1ZVJvb3RzKHZpc2l0b3IpOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmpl
Y3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07
CiAgICAgdmlzaXRvci5hZGRPcGFxdWVSb290KG1fcmVhZEZyYW1lYnVmZmVyQmluZGluZy5nZXQo
KSk7CiAgICAgaWYgKG1fcmVhZEZyYW1lYnVmZmVyQmluZGluZykKICAgICAgICAgbV9yZWFkRnJh
bWVidWZmZXJCaW5kaW5nLT5hZGRNZW1iZXJzVG9PcGFxdWVSb290cyhsb2NrZXIsIHZpc2l0b3Ip
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0R3Jv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0R3JvdXAuY3Bw
CmluZGV4IGQ2YWI1MTZhZTJmYTJhNmY3OTYyOWI0MmI2ZjgxZjAwY2Y4NmJhYzYuLmFiZDhmMjcz
NjgzOTFlM2UxZDdmY2Y5ZDM3YjlkNzc5NmFmMzM2MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4dEdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRHcm91cC5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB2
b2lkIFdlYkdMQ29udGV4dEdyb3VwOjpkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3RzKCkKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3Jh
cGhMb2NrRm9yQUNvbnRleHQoKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9j
a0ZvckFDb250ZXh0KCkgfTsKICAgICB3aGlsZSAoIW1fZ3JvdXBPYmplY3RzLmlzRW1wdHkoKSkK
ICAgICAgICAgKCptX2dyb3VwT2JqZWN0cy5iZWdpbigpKS0+ZGV0YWNoQ29udGV4dEdyb3VwKGxv
Y2tlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZy
YW1lYnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZm
ZXIuY3BwCmluZGV4IDk1YWJjMDMzZTJjNmVkNGZlYTI1OTQ5NDMzY2QxMzBkN2YzNWZiNTcuLmE5
NjBjZjVjMjM3ZWM4NDQyOThiMDliYjZlZGFhZGUyOWRlYmNlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuY3BwCkBAIC02MDIsNyArNjAyLDcg
QEAgYm9vbCBXZWJHTEZyYW1lYnVmZmVyOjppbml0aWFsaXplQXR0YWNobWVudHMoR3JhcGhpY3ND
b250ZXh0R0wqIGczZCwgY29uc3QgY2hhcioKICAgICAgICAgLy8gQ29udGV4dCBoYXMgYmVlbiBk
ZWxldGVkIC0gc2hvdWxkIG5vdCBiZSBjYWxsaW5nIHRoaXMuCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2tGb3JD
b250ZXh0KCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2tGb3JDb250ZXh0
KCkgfTsKIAogICAgIEFTU0VSVChvYmplY3QoKSk7CiAgICAgR0NHTGJpdGZpZWxkIG1hc2sgPSAw
OwpAQCAtNzU0LDcgKzc1NCw3IEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6c2V0QXR0YWNobWVu
dEludGVybmFsKEdDR0xlbnVtIGF0dGFjaG1lbnQsIEdDR0xlbnVtIHRleFRhCiAgICAgICAgIC8v
IENvbnRleHQgaGFzIGJlZW4gZGVsZXRlZCAtIHNob3VsZCBub3QgYmUgY2FsbGluZyB0aGlzLgog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0
R3JhcGhMb2NrRm9yQ29udGV4dCgpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhM
b2NrRm9yQ29udGV4dCgpIH07CiAKICAgICByZW1vdmVBdHRhY2htZW50SW50ZXJuYWwobG9ja2Vy
LCBhdHRhY2htZW50KTsKICAgICBpZiAodGV4dHVyZSAmJiB0ZXh0dXJlLT5vYmplY3QoKSkgewpA
QCAtNzcwLDcgKzc3MCw3IEBAIHZvaWQgV2ViR0xGcmFtZWJ1ZmZlcjo6c2V0QXR0YWNobWVudElu
dGVybmFsKEdDR0xlbnVtIGF0dGFjaG1lbnQsIFdlYkdMUmVuZGVyYnVmCiAgICAgICAgIC8vIENv
bnRleHQgaGFzIGJlZW4gZGVsZXRlZCAtIHNob3VsZCBub3QgYmUgY2FsbGluZyB0aGlzLgogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3Jh
cGhMb2NrRm9yQ29udGV4dCgpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2Nr
Rm9yQ29udGV4dCgpIH07CiAKICAgICByZW1vdmVBdHRhY2htZW50SW50ZXJuYWwobG9ja2VyLCBh
dHRhY2htZW50KTsKICAgICBpZiAocmVuZGVyYnVmZmVyICYmIHJlbmRlcmJ1ZmZlci0+b2JqZWN0
KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcAppbmRleCBk
YjJiNzI1YWMxYjEzZjY5M2Q4ZDU4YmM1NjE0NGI3ZjkwZTRjMGQyLi5mMjgwODAzMzYxYmVjNjAy
OWIyMGRjY2FmMDgxMjMwOGExMjJjZDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xPYmplY3QuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgV2ViR0xPYmplY3Q6OnJ1bkRl
c3RydWN0b3IoKQogICAgICAgICBhdXRvIGxvY2tlciA9IEFic3RyYWN0TG9ja2VyKE5vTG9ja2lu
Z05lY2Vzc2FyeSk7CiAgICAgICAgIGRlbGV0ZU9iamVjdChsb2NrZXIsIG51bGxwdHIpOwogICAg
IH0gZWxzZSB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobG9jayk7CisgICAgICAg
IExvY2tlciBsb2NrZXIgeyBsb2NrIH07CiAgICAgICAgIGRlbGV0ZU9iamVjdChsb2NrZXIsIG51
bGxwdHIpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggYzI0YTg0ZGE4ZDMwNjg3YzYy
ZWU5YzU4MmE0ZGRkOWEyODBiNTIxMS4uNTE1NTQ4OGQ3ZWQxZGE5NTBkNWFmNjc4ZDQ2ZDIzNDBi
OGJhOWNlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTEzNDUsNyArMTM0NSw3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YWN0aXZlVGV4dHVyZShHQ0dMZW51bSB0ZXh0dXJlKQog
CiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmF0dGFjaFNoYWRlcihXZWJHTFByb2dy
YW0mIHByb2dyYW0sIFdlYkdMU2hhZGVyJiBzaGFkZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdy
YXBoTG9jaygpIH07CiAKICAgICBpZiAoIXZhbGlkYXRlV2ViR0xQcm9ncmFtT3JTaGFkZXIoImF0
dGFjaFNoYWRlciIsICZwcm9ncmFtKSB8fCAhdmFsaWRhdGVXZWJHTFByb2dyYW1PclNoYWRlcigi
YXR0YWNoU2hhZGVyIiwgJnNoYWRlcikpCiAgICAgICAgIHJldHVybjsKQEAgLTE0NDUsNyArMTQ0
NSw3IEBAIGJvb2wgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmFsaWRhdGVBbmRDYWNoZUJ1
ZmZlckJpbmRpbmcoY29uc3QgQWJzdHJhY3RMb2NrCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6YmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIp
CiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAoIXZhbGlkYXRl
TnVsbGFibGVXZWJHTE9iamVjdCgiYmluZEJ1ZmZlciIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVy
bjsKQEAgLTE0NTgsNyArMTQ1OCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
YmluZEJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFdlYkdMQnVmZmVyKiBidWZmZXIpCiAKIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdl
dCwgV2ViR0xGcmFtZWJ1ZmZlciogYnVmZmVyKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExv
Y2soKSB9OwogCiAgICAgaWYgKCF2YWxpZGF0ZU51bGxhYmxlV2ViR0xPYmplY3QoImJpbmRGcmFt
ZWJ1ZmZlciIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybjsKQEAgLTE0NzMsNyArMTQ3Myw3IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZEZyYW1lYnVmZmVyKEdDR0xlbnVt
IHRhcmdldCwgV2ViR0xGcmFtZWJ1ZmZlCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6YmluZFJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQsIFdlYkdMUmVuZGVyYnVmZmVyKiBy
ZW5kZXJCdWZmZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExv
Y2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBp
ZiAoIXZhbGlkYXRlTnVsbGFibGVXZWJHTE9iamVjdCgiYmluZFJlbmRlcmJ1ZmZlciIsIHJlbmRl
ckJ1ZmZlcikpCiAgICAgICAgIHJldHVybjsKQEAgLTE0ODksNyArMTQ4OSw3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZFJlbmRlcmJ1ZmZlcihHQ0dMZW51bSB0YXJnZXQs
IFdlYkdMUmVuZGVyYnVmCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YmluZFRl
eHR1cmUoR0NHTGVudW0gdGFyZ2V0LCBXZWJHTFRleHR1cmUqIHRleHR1cmUpCiB7Ci0gICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAoIXZhbGlkYXRlTnVsbGFibGVXZWJH
TE9iamVjdCgiYmluZFRleHR1cmUiLCB0ZXh0dXJlKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjA0
Niw3ICsyMDQ2LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpzZXRCb3VuZFZl
cnRleEFycmF5T2JqZWN0KGNvbnN0IEFic3RyYWN0TG9ja2VyJiwKIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpkZWxldGVCdWZmZXIoV2ViR0xCdWZmZXIqIGJ1ZmZlcikKIHsKLSAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmICghZGVsZXRlT2JqZWN0KGxv
Y2tlciwgYnVmZmVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjA1Niw3ICsyMDU2LDcgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxldGVCdWZmZXIoV2ViR0xCdWZmZXIqIGJ1
ZmZlcikKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxldGVGcmFtZWJ1ZmZl
cihXZWJHTEZyYW1lYnVmZmVyKiBmcmFtZWJ1ZmZlcikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3Jh
cGhMb2NrKCkgfTsKIAogI2lmIEVOQUJMRShXRUJYUikKICAgICBpZiAoZnJhbWVidWZmZXIgJiYg
ZnJhbWVidWZmZXItPmlzT3BhcXVlKCkpIHsKQEAgLTIwNzksNyArMjA3OSw3IEBAIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlUHJvZ3JhbShXZWJHTFByb2dyYW0qIHByb2dy
YW0pCiAgICAgaWYgKHByb2dyYW0pCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbERlc3Ryb3lXZWJHTFByb2dyYW0oKnByb2dyYW0pOwogCi0gICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdy
YXBoTG9jaygpIH07CiAKICAgICBkZWxldGVPYmplY3QobG9ja2VyLCBwcm9ncmFtKTsKICAgICAv
LyBXZSBkb24ndCByZXNldCBtX2N1cnJlbnRQcm9ncmFtIHRvIDAgaGVyZSBiZWNhdXNlIHRoZSBk
ZWxldGlvbiBvZiB0aGUKQEAgLTIwODgsNyArMjA4OCw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6ZGVsZXRlUHJvZ3JhbShXZWJHTFByb2dyYW0qIHByb2dyYW0pCiAKIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlUmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVy
YnVmZmVyKiByZW5kZXJidWZmZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmpl
Y3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07
CiAKICAgICBpZiAoIWRlbGV0ZU9iamVjdChsb2NrZXIsIHJlbmRlcmJ1ZmZlcikpCiAgICAgICAg
IHJldHVybjsKQEAgLTIxMDMsMTMgKzIxMDMsMTMgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpkZWxldGVSZW5kZXJidWZmZXIoV2ViR0xSZW5kZXJidWZmZXIqIHJlbmRlcmJ1ZmYK
IAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxldGVTaGFkZXIoV2ViR0xTaGFk
ZXIqIHNoYWRlcikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9j
aygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKICAgICBkZWxl
dGVPYmplY3QobG9ja2VyLCBzaGFkZXIpOwogfQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmRlbGV0ZVRleHR1cmUoV2ViR0xUZXh0dXJlKiB0ZXh0dXJlKQogewotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIg
eyBvYmplY3RHcmFwaExvY2soKSB9OwogCiAgICAgaWYgKCFkZWxldGVPYmplY3QobG9ja2VyLCB0
ZXh0dXJlKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjE3MSw3ICsyMTcxLDcgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZXB0aFJhbmdlKEdDR0xmbG9hdCB6TmVhciwgR0NHTGZs
b2F0IHpGYXIpCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGV0YWNoU2hhZGVy
KFdlYkdMUHJvZ3JhbSYgcHJvZ3JhbSwgV2ViR0xTaGFkZXImIHNoYWRlcikKIHsKLSAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmICghdmFsaWRhdGVXZWJHTFByb2dyYW1P
clNoYWRlcigiZGV0YWNoU2hhZGVyIiwgJnByb2dyYW0pIHx8ICF2YWxpZGF0ZVdlYkdMUHJvZ3Jh
bU9yU2hhZGVyKCJkZXRhY2hTaGFkZXIiLCAmc2hhZGVyKSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NjA0NSw3ICs2MDQ1LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjp1bmlmb3Jt
TWF0cml4NGZ2KGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2MKIAogdm9pZCBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjp1c2VQcm9ncmFtKFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSkKIHsK
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmICghdmFsaWRhdGVOdWxs
YWJsZVdlYkdMT2JqZWN0KCJ1c2VQcm9ncmFtIiwgcHJvZ3JhbSkpCiAgICAgICAgIHJldHVybjsK
QEAgLTYxMTIsNyArNjExMiw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVy
dGV4QXR0cmliNGZ2KEdDR0x1aW50IGluZGV4LCBGbG9hdDMyTGlzdCYmIHYpCiAKIHZvaWQgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dmVydGV4QXR0cmliUG9pbnRlcihHQ0dMdWludCBpbmRl
eCwgR0NHTGludCBzaXplLCBHQ0dMZW51bSB0eXBlLCBHQ0dMYm9vbGVhbiBub3JtYWxpemVkLCBH
Q0dMc2l6ZWkgc3RyaWRlLCBsb25nIGxvbmcgb2Zmc2V0KQogewotICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RH
cmFwaExvY2soKSB9OwogCiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtNjMwNyw3ICs2MzA3LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3RzKCkKICAgICBpZiAobV9pc1BlbmRpbmdQ
b2xpY3lSZXNvbHV0aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3Jh
cGhMb2NrKCkgfTsKIAogICAgIHdoaWxlIChtX2NvbnRleHRPYmplY3RzLnNpemUoKSA+IDApIHsK
ICAgICAgICAgSGFzaFNldDxXZWJHTENvbnRleHRPYmplY3QqPjo6aXRlcmF0b3IgaXQgPSBtX2Nv
bnRleHRPYmplY3RzLmJlZ2luKCk7CkBAIC03OTU4LDcgKzc5NTgsNyBAQCB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmRpc3BhdGNoQ29udGV4dENoYW5nZWROb3RpZmljYXRpb24oKQog
CiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmFkZE1lbWJlcnNUb09wYXF1ZVJvb3Rz
KEpTQzo6QWJzdHJhY3RTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0
R3JhcGhMb2NrKCkgfTsKIAogICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChtX2JvdW5kQXJyYXlC
dWZmZXIuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRp
by9SZXZlcmJDb252b2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2
ZXJiQ29udm9sdmVyLmNwcAppbmRleCAyNzljYWVjYjcyZDhhNDUyOWEzZDIyM2E0YWZkYzk4MTc0
MjNjYzRhLi4yN2IyOTgyZGMzZmQ5MTY4NWQzMTdhN2VkMWE5YzFlNmVlNDdiMjZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKQEAg
LTEzMyw3ICsxMzMsNyBAQCBSZXZlcmJDb252b2x2ZXI6On5SZXZlcmJDb252b2x2ZXIoKQogCiAg
ICAgICAgIC8vIFdha2UgdXAgdGhyZWFkIHNvIGl0IGNhbiByZXR1cm4KICAgICAgICAgewotICAg
ICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2JhY2tncm91bmRUaHJlYWRMb2NrKTsK
KyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2JhY2tncm91bmRUaHJlYWRMb2NrIH07CiAg
ICAgICAgICAgICBtX21vcmVJbnB1dEJ1ZmZlcmVkID0gdHJ1ZTsKICAgICAgICAgICAgIG1fYmFj
a2dyb3VuZFRocmVhZENvbmRpdGlvblZhcmlhYmxlLm5vdGlmeU9uZSgpOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3Rp
bmF0aW9uQ29jb2EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2EvQXVk
aW9EZXN0aW5hdGlvbkNvY29hLmNwcAppbmRleCBlNTg5MTRkOThjOTZhOTA3YzE1Zjk2M2Y3N2I4
NDEyYTE5NzZmZDgzLi5iNGNjMTNkYmRiOGVmM2NiZGRiZjY5NWNhNjI2ZDkyZTQxMGE2YzNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9jb2NvYS9BdWRpb0Rlc3Rp
bmF0aW9uQ29jb2EuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2NvY29h
L0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIEF1ZGlv
RGVzdGluYXRpb25Db2NvYTo6c3RhcnQoRnVuY3Rpb248dm9pZChGdW5jdGlvbjx2b2lkKCk+JiYp
PiYmIGRpc3BhdGNoVAogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgTE9HKE1lZGlh
LCAiQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdGFydCIpOwogICAgIHsKLSAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWRMb2NrKTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZExvY2sgfTsKICAgICAgICAg
bV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkID0gV1RGTW92ZShkaXNwYXRjaFRvUmVuZGVyVGhyZWFk
KTsKICAgICB9CiAgICAgc3RhcnRSZW5kZXJpbmcoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdG9wKENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsCiAgICAgTE9HKE1l
ZGlhLCAiQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzdG9wIik7CiAgICAgc3RvcFJlbmRlcmluZyhX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZExvY2spOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkTG9jayB9OwogICAgICAgICBtX2Rpc3Bh
dGNoVG9SZW5kZXJUaHJlYWQgPSBudWxscHRyOwogICAgIH0KIH0KQEAgLTE1Miw3ICsxNTIsNyBA
QCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c2V0SXNQbGF5aW5nKGJvb2wgaXNQbGF5aW5n
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgewotICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1faXNQbGF5aW5nTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBtX2lzUGxheWluZ0xvY2sgfTsKICAgICAgICAgaWYgKG1faXNQbGF5aW5nID09IGlzUGxheWlu
ZykKICAgICAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlk
ZXJHU3RyZWFtZXIuY3BwCmluZGV4IGE5NjI0NmE0ODg1MDE0MWMzNzUwNDllOWJiOTk0MmUyNjQy
ODRjZTQuLjY5MGMxZGI5NzU5Mjk0ZTRjYjA3NDQ0MDM0MTFiZjlkNTY1ZTJhNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVBy
b3ZpZGVyR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9n
c3RyZWFtZXIvQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAKQEAgLTE4Miw3ICsxODIs
NyBAQCBHc3RGbG93UmV0dXJuIEF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6OmhhbmRsZVNh
bXBsZShHc3RBcHBTaW5rKiBzaW5rLCBib29sCiAKICAgICBHU1RfVFJBQ0UoIlN0b3JpbmcgYXVk
aW8gc2FtcGxlICUiIEdTVF9QVFJfRk9STUFULCBzYW1wbGUuZ2V0KCkpOwogICAgIHsKLSAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2FkYXB0ZXJNdXRleCk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX2FkYXB0ZXJNdXRleCB9OwogICAgICAgICBHUXVhcmsgcXVhcmsgPSBnX3F1
YXJrX2Zyb21fc3RhdGljX3N0cmluZygiY2hhbm5lbC1pZCIpOwogICAgICAgICBpbnQgY2hhbm5l
bElkID0gR1BPSU5URVJfVE9fSU5UKGdfb2JqZWN0X2dldF9xZGF0YShHX09CSkVDVChzaW5rKSwg
cXVhcmspKTsKICAgICAgICAgR1NUX0RFQlVHKCJDaGFubmVsIElEOiAlZCIsIGNoYW5uZWxJZCk7
CkBAIC0zODQsNyArMzg0LDcgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyOjpk
ZWludGVybGVhdmVQYWRzQ29uZmlndXJlZCgpCiAKIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdT
dHJlYW1lcjo6Y2xlYXJBZGFwdGVycygpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2FkYXB0ZXJNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYWRhcHRlck11dGV4IH07CiAg
ICAgZm9yIChhdXRvJiBhZGFwdGVyIDogbV9hZGFwdGVycy52YWx1ZXMoKSkKICAgICAgICAgZ3N0
X2FkYXB0ZXJfY2xlYXIoYWRhcHRlci5nZXQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFt
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdl
YkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA4Y2ViMThjMTgxYzFjODEzYmNhYzc1ODI0
NTAyYTI5MDk5Zjk3NTgwLi40ZGMzN2IyMmYwMTIwOGFkMWM3MzFlZWZkN2ZlNjQwYWVhMWQ2NjU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2Vi
S2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKQEAg
LTQ4OSw3ICs0ODksNyBAQCBzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gd2ViS2l0V2ViQXVk
aW9TcmNDaGFuZ2VTdGF0ZShHc3RFbGVtZW50KiBlbGVtZW50LCBHcwogCiB2b2lkIHdlYmtpdFdl
YkF1ZGlvU291cmNlU2V0RGlzcGF0Y2hUb1JlbmRlclRocmVhZEZ1bmN0aW9uKFdlYktpdFdlYkF1
ZGlvU3JjKiBzcmMsIEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBmdW5jdGlv
bikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHNyYy0+cHJpdi0+ZGlzcGF0Y2hUb1Jl
bmRlclRocmVhZExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBzcmMtPnByaXYtPmRpc3BhdGNo
VG9SZW5kZXJUaHJlYWRMb2NrIH07CiAgICAgc3JjLT5wcml2LT5kaXNwYXRjaFRvUmVuZGVyVGhy
ZWFkRnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAK
aW5kZXggNzBkNDdhZjZiYmY0NTk4YjAzZjMwMTZmYzVjYTg3NmI3NjRmMTJlZS4uYWU2OGQzNDdj
N2YyZDMxZjQ5M2ZiMjgzYjlkOTJkMzI1NzkzNzg2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCkBA
IC0xMzgsNyArMTM4LDcgQEAgdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmNsaWVudFByZWZl
cnJlZEZyYW1lc1BlclNlY29uZENoYW5nZWQoRGlzcGxheVJlZnJlc2gKIAogYm9vbCBEaXNwbGF5
UmVmcmVzaE1vbml0b3I6OnJlcXVlc3RSZWZyZXNoQ2FsbGJhY2soKQogewotICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAg
ICAgCiAgICAgaWYgKGlzU2NoZWR1bGVkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTY2
LDcgKzE2Niw3IEBAIGJvb2wgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpmaXJlZEFuZFJlYWNoZWRN
YXhVbnNjaGVkdWxlZEZpcmVDb3VudCgpCiB2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlz
cGxheUxpbmtGaXJlZChjb25zdCBEaXNwbGF5VXBkYXRlJiBkaXNwbGF5VXBkYXRlKQogewogICAg
IHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2xvY2spOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICAgICAgLy8gVGhpcyBtYXkgYmUgb2ZmIHRoZSBt
YWluIHRocmVhZC4KICAgICAgICAgaWYgKCFpc1ByZXZpb3VzRnJhbWVEb25lKCkpCkBAIC0yMTks
NyArMjE5LDcgQEAgdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlEaWRSZWZyZXNo
KGNvbnN0IERpc3BsYXlVcGRhdGUmIGRpc3BsYXlVcGRhdGUKICAgICAgICAgbV9jbGllbnRzVG9C
ZU5vdGlmaWVkID0gbnVsbHB0cjsKIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhtX2xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgICAg
IHNldElzUHJldmlvdXNGcmFtZURvbmUodHJ1ZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAppbmRleCAzYTNiMjVjMzM5NDI2NThh
ZDk2NTZkNzdkY2Q2MTNiYjMyZWQ3MDIyLi5iODhjMDQ5NWM1NzFhYTdkNWY0YThiZTU1MDBmZjk2
YzU3YTYyZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9G
b250Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRD
YWNoZS5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6
OmNhY2hlZEZvbnRQbGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RAogICAg
IGNvbnN0IEZvbnRGZWF0dXJlU2V0dGluZ3MqIGZlYXR1cmVzLCBGb250U2VsZWN0aW9uU3BlY2lm
aWVkQ2FwYWJpbGl0aWVzIGNhcGFiaWxpdGllcywgYm9vbCBjaGVja2luZ0FsdGVybmF0ZU5hbWUp
CiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fZm9udExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2ZvbnRMb2NrIH07CiAjZW5kaWYK
IAogI2lmIE9TKFdJTkRPV1MpICYmIEVOQUJMRShPUEVOVFlQRV9WRVJUSUNBTCkKQEAgLTI3Niw3
ICsyNzYsNyBAQCBSZWZQdHI8Rm9udD4gRm9udENhY2hlOjpmb250Rm9yRmFtaWx5KGNvbnN0IEZv
bnREZXNjcmlwdGlvbiYgZm9udERlc2NyaXB0aW9uLCBjbwogUmVmPEZvbnQ+IEZvbnRDYWNoZTo6
Zm9udEZvclBsYXRmb3JtRGF0YShjb25zdCBGb250UGxhdGZvcm1EYXRhJiBwbGF0Zm9ybURhdGEp
CiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fZm9udExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2ZvbnRMb2NrIH07CiAjZW5kaWYK
IAogICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9mb250RGF0YUNhY2hlcy0+ZGF0YS5lbnN1cmUocGxh
dGZvcm1EYXRhLCBbJl0gewpAQCAtMzEzLDcgKzMxMyw3IEBAIHZvaWQgRm9udENhY2hlOjpwdXJn
ZUluYWN0aXZlRm9udERhdGEodW5zaWduZWQgcHVyZ2VDb3VudCkKICAgICBwcnVuZVN5c3RlbUZh
bGxiYWNrRm9udHMoKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX2ZvbnRMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9mb250TG9j
ayB9OwogI2VuZGlmCiAKICAgICB3aGlsZSAocHVyZ2VDb3VudCkgewpAQCAtNDQ5LDcgKzQ0OSw3
IEBAIHNpemVfdCBGb250Q2FjaGU6OmZvbnRDb3VudCgpCiBzaXplX3QgRm9udENhY2hlOjppbmFj
dGl2ZUZvbnRDb3VudCgpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fZm9udExvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2ZvbnRM
b2NrIH07CiAjZW5kaWYKICAgICB1bnNpZ25lZCBjb3VudCA9IDA7CiAgICAgZm9yIChhdXRvJiBm
b250IDogbV9mb250RGF0YUNhY2hlcy0+ZGF0YS52YWx1ZXMoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCmluZGV4IGY0M2UzMzIwYzk3MDk4
MjQ4OGUyODczYjg1YjNlN2RiZTI2NjM1YWYuLjQ3OTc2ODNiODBiYjQ5MDVhN2E4MTY4ODdhNDM1
NGQxMjk4ZWNkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakMubW0KQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJB
VkZPYmpDOjpkZXN0cm95TWl4SWZOZWVkZWQoKQogICAgICAgICByZXR1cm47CiAgICAgQVNTRVJU
KG1fdGFwU3RvcmFnZSk7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
dGFwU3RvcmFnZS0+bG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3RhcFN0b3JhZ2Ut
PmxvY2sgfTsKICAgICAgICAgaWYgKG1fYXZQbGF5ZXJJdGVtKQogICAgICAgICAgICAgW21fYXZQ
bGF5ZXJJdGVtIHNldEF1ZGlvTWl4Om5pbF07CiAgICAgICAgIFttX2F2QXVkaW9NaXggc2V0SW5w
dXRQYXJhbWV0ZXJzOkBbIF1dOwpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgQXVkaW9Tb3VyY2VQ
cm92aWRlckFWRk9iakM6OmNyZWF0ZU1peElmTmVlZGVkKCkKICAgICBBU1NFUlQoIW1fdGFwKTsK
IAogICAgIGF1dG8gdGFwU3RvcmFnZSA9IGFkb3B0UmVmKG5ldyBUYXBTdG9yYWdlKHRoaXMpKTsK
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHRhcFN0b3JhZ2UtPmxvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyB0YXBTdG9yYWdlLT5sb2NrIH07CiAKICAgICBNVEF1ZGlvUHJvY2Vzc2luZ1Rh
cENhbGxiYWNrcyBjYWxsYmFja3MgPSB7CiAgICAgICAgIDAsCkBAIC0yNjIsNyArMjYyLDcgQEAg
dm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJlcGFyZUNhbGxiYWNrKE1UQXVkaW9Q
cm9jZXNzaW5nVGFwUmVmIHRhcCwgQ00KICAgICBBU1NFUlQodGFwKTsKICAgICBUYXBTdG9yYWdl
KiB0YXBTdG9yYWdlID0gc3RhdGljX2Nhc3Q8VGFwU3RvcmFnZSo+KE1UQXVkaW9Qcm9jZXNzaW5n
VGFwR2V0U3RvcmFnZSh0YXApKTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGFwU3Rv
cmFnZS0+bG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHRhcFN0b3JhZ2UtPmxvY2sgfTsKIAog
ICAgIGlmICh0YXBTdG9yYWdlLT5fdGhpcykKICAgICAgICAgdGFwU3RvcmFnZS0+X3RoaXMtPnBy
ZXBhcmUobWF4RnJhbWVzLCBwcm9jZXNzaW5nRm9ybWF0KTsKQEAgLTI3Myw3ICsyNzMsNyBAQCB2
b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjp1bnByZXBhcmVDYWxsYmFjayhNVEF1ZGlv
UHJvY2Vzc2luZ1RhcFJlZiB0YXApCiAgICAgQVNTRVJUKHRhcCk7CiAgICAgVGFwU3RvcmFnZSog
dGFwU3RvcmFnZSA9IHN0YXRpY19jYXN0PFRhcFN0b3JhZ2UqPihNVEF1ZGlvUHJvY2Vzc2luZ1Rh
cEdldFN0b3JhZ2UodGFwKSk7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHRhcFN0b3Jh
Z2UtPmxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyB0YXBTdG9yYWdlLT5sb2NrIH07CiAKICAg
ICBpZiAodGFwU3RvcmFnZS0+X3RoaXMpCiAgICAgICAgIHRhcFN0b3JhZ2UtPl90aGlzLT51bnBy
ZXBhcmUoKTsKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIEF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDOjpwcm9jZXNzQ2FsbGJhY2soTVRBdWRpb1Byb2Nlc3NpbmdUYXBSZWYgdGFwLCBDTQogICAg
IEFTU0VSVCh0YXApOwogICAgIFRhcFN0b3JhZ2UqIHRhcFN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxU
YXBTdG9yYWdlKj4oTVRBdWRpb1Byb2Nlc3NpbmdUYXBHZXRTdG9yYWdlKHRhcCkpOwogCi0gICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayh0YXBTdG9yYWdlLT5sb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgdGFwU3RvcmFnZS0+bG9jayB9OwogCiAgICAgaWYgKHRhcFN0b3JhZ2UtPl90aGlzKQog
ICAgICAgICB0YXBTdG9yYWdlLT5fdGhpcy0+cHJvY2Vzcyh0YXAsIG51bWJlckZyYW1lcywgZmxh
Z3MsIGJ1ZmZlckxpc3RJbk91dCwgbnVtYmVyRnJhbWVzT3V0LCBmbGFnc091dCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRp
YVN0cmVhbUFWRk9iakMubW0KaW5kZXggYWU5NDQ4Njg3ZmRkZjFlNDZmNzE2ZDVlYTNjY2NkZjhi
NWY0ZDYzMy4uODEzOTk2Yzc2YzY0MWI3Y2FlMDQ2ZjU5NzFlYzc0N2NmOTFjZTlkNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQpAQCAtNDAzLDcgKzQwMyw3IEBAIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpsYXllcnNBcmVJbml0aWFsaXplZChJbnRTaXpl
IHNpemUsIGJvCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpk
ZXN0cm95TGF5ZXJzKCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2FtcGxlQnVm
ZmVyRGlzcGxheUxheWVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2FtcGxlQnVmZmVy
RGlzcGxheUxheWVyTG9jayB9OwogCiAgICAgbV9jYW5FbnF1ZXVlRGlzcGxheUxheWVyID0gZmFs
c2U7CiAgICAgaWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQpAQCAtMTA2Miw3ICsxMDYy
LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OkN1cnJlbnRG
cmFtZVBhaW50ZXI6OnJlc2V0KCkKIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVh
bUFWRk9iakM6OnJvb3RMYXllckJvdW5kc0RpZENoYW5nZSgpCiB7Ci0gICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckxvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyBtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckxvY2sgfTsKICAgICBpZiAobV9zYW1w
bGVCdWZmZXJEaXNwbGF5TGF5ZXIpCiAgICAgICAgIG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVy
LT51cGRhdGVCb3VuZHNBbmRQb3NpdGlvbihtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllci0+cm9v
dExheWVyKCkuYm91bmRzLCBtX3ZpZGVvUm90YXRpb24pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcAppbmRleCA2ODA0ZjA2OWI1MTQyMTI4
M2M5ZGQwMGZhOTJjZThmYmM3OTE2YTNkLi5kZGMwZGEwOTNjOGJjZDNiZTQzNzZkMTUxOGVjN2Qx
YTEzZTc3NDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9Db2xvckNHLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9D
b2xvckNHLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIENHQ29sb3JSZWYgY2FjaGVkQ0dDb2xvcihj
b25zdCBDb2xvciYgY29sb3IpCiAgICAgfQogCiAgICAgc3RhdGljIExvY2sgY2FjaGVkQ29sb3JM
b2NrOwotICAgIGF1dG8gaG9sZGVyID0gaG9sZExvY2soY2FjaGVkQ29sb3JMb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgY2FjaGVkQ29sb3JMb2NrIH07CiAKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VGlueUxSVUNhY2hlPENvbG9yLCBSZXRhaW5QdHI8Q0dDb2xvclJlZj4sIDMyPj4gY2Fj
aGU7CiAgICAgcmV0dXJuIGNhY2hlLmdldCgpLmdldChjb2xvcikuZ2V0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDA3YjNkOWZiZTgw
NGM0ZjgwMTAwNTUxYWVmMDEyMzYyYWUyMzgwZWYuLjNlOTA1M2VkZjUxYzdkZmY5Njc5NDUyMzZj
MzI2MTU0ZGY1YzZhNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIuY3BwCkBAIC0xMDI5LDcgKzEwMjksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6bm90aWZ5UGxheWVyT2ZWaWRlbygpCiB9CiBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6aGFzRmlyc3RWaWRlb1NhbXBsZVJlYWNoZWRTaW5rKCkgY29uc3QKIHsK
LSAgICBhdXRvIHNhbXBsZUxvY2tlciA9IGhvbGRMb2NrKG1fc2FtcGxlTXV0ZXgpOworICAgIExv
Y2tlciBzYW1wbGVMb2NrZXIgeyBtX3NhbXBsZU11dGV4IH07CiAgICAgcmV0dXJuICEhbV9zYW1w
bGU7CiB9CiAKQEAgLTI4OTMsNyArMjg5Myw3IEBAIHByaXZhdGU6CiAKIHZvaWQgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpwdXNoVGV4dHVyZVRvQ29tcG9zaXRvcigpCiB7Ci0gICAgYXV0
byBzYW1wbGVMb2NrZXIgPSBob2xkTG9jayhtX3NhbXBsZU11dGV4KTsKKyAgICBMb2NrZXIgc2Ft
cGxlTG9ja2VyIHsgbV9zYW1wbGVNdXRleCB9OwogICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3Nh
bXBsZS5nZXQoKSkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzA3NCw3ICszMDc0LDcgQEAgdm9p
ZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRyaWdnZXJSZXBhaW50KEdzdFNhbXBsZSog
c2FtcGxlKQogCiAgICAgYm9vbCBzaG91bGRUcmlnZ2VyUmVzaXplOwogICAgIHsKLSAgICAgICAg
YXV0byBzYW1wbGVMb2NrZXIgPSBob2xkTG9jayhtX3NhbXBsZU11dGV4KTsKKyAgICAgICAgTG9j
a2VyIHNhbXBsZUxvY2tlciB7IG1fc2FtcGxlTXV0ZXggfTsKICAgICAgICAgc2hvdWxkVHJpZ2dl
clJlc2l6ZSA9ICFtX3NhbXBsZTsKICAgICAgICAgbV9zYW1wbGUgPSBzYW1wbGU7CiAgICAgfQpA
QCAtMzE2NCw3ICszMTY0LDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnJl
cGFpbnRDYW5jZWxsZWRDYWxsYmFjayhNZWRpYVBsYXllclByaXZhdGVHU3QKICNpZiBVU0UoR1NU
UkVBTUVSX0dMKQogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmZsdXNoQ3VycmVu
dEJ1ZmZlcigpCiB7Ci0gICAgYXV0byBzYW1wbGVMb2NrZXIgPSBob2xkTG9jayhtX3NhbXBsZU11
dGV4KTsKKyAgICBMb2NrZXIgc2FtcGxlTG9ja2VyIHsgbV9zYW1wbGVNdXRleCB9OwogCiAgICAg
aWYgKG1fc2FtcGxlKSB7CiAgICAgICAgIC8vIEFsbG9jYXRlIGEgbmV3IGNvcHkgb2YgdGhlIHNh
bXBsZSB3aGljaCBoYXMgdG8gYmUgcmVsZWFzZWQuIFRoZSBjb3B5IGlzIG5lY2Vzc2FyeSBzbyB0
aGF0CkBAIC0zMjA3LDcgKzMyMDcsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFJlYwogICAgIGlm
ICghbV92aXNpYmxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIHNhbXBsZUxvY2tlciA9
IGhvbGRMb2NrKG1fc2FtcGxlTXV0ZXgpOworICAgIExvY2tlciBzYW1wbGVMb2NrZXIgeyBtX3Nh
bXBsZU11dGV4IH07CiAgICAgaWYgKCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlLmdldCgpKSkKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0zMjc2LDcgKzMyNzYsNyBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6Y29weVZpZGVvVGV4dHVyZVRvUGxhdGZvcm1UZXh0dXJlKEdyYXBoaWNz
Q29udAogICAgIGlmIChwcmVtdWx0aXBseUFscGhhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBhdXRvIHNhbXBsZUxvY2tlciA9IGhvbGRMb2NrKG1fc2FtcGxlTXV0ZXgpOworICAgIExv
Y2tlciBzYW1wbGVMb2NrZXIgeyBtX3NhbXBsZU11dGV4IH07CiAKICAgICBpZiAoIUdTVF9JU19T
QU1QTEUobV9zYW1wbGUuZ2V0KCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zNTc2LDcg
KzM1NzYsNyBAQCBib29sIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6d2FpdEZvckNETUF0
dGFjaG1lbnQoKQogCiAgICAgYm9vbCBkaWRDRE1BdHRhY2ggPSBmYWxzZTsKICAgICB7Ci0gICAg
ICAgIGF1dG8gY2RtQXR0YWNobWVudExvY2tlciA9IGhvbGRMb2NrKG1fY2RtQXR0YWNobWVudE11
dGV4KTsKKyAgICAgICAgTG9ja2VyIGNkbUF0dGFjaG1lbnRMb2NrZXIgeyBtX2NkbUF0dGFjaG1l
bnRNdXRleCB9OwogICAgICAgICBkaWRDRE1BdHRhY2ggPSBtX2NkbUF0dGFjaG1lbnRDb25kaXRp
b24ud2FpdEZvcihtX2NkbUF0dGFjaG1lbnRNdXRleCwgNF9zLCBbdGhpc10oKSB7CiAgICAgICAg
ICAgICByZXR1cm4gaXNDRE1BdHRhY2hlZCgpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9u
RW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JH
U3RyZWFtZXIuY3BwCmluZGV4IDY5ZTI3ZjQ4NWE4NWFkZmQ0ZWUxZTI4MTMyYzE4MzcwZDdhMzMx
ZTkuLjE4MGUyNjBmOThlYzA2MDZkYzg0OWM0NGFhMzJiNTk3Njg5YjZhMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29t
bW9uRW5jcnlwdGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVj
cnlwdG9yR1N0cmVhbWVyLmNwcApAQCAtMzEyLDcgKzMxMiw3IEBAIHN0YXRpYyBHc3RGbG93UmV0
dXJuIHRyYW5zZm9ybUluUGxhY2UoR3N0QmFzZVRyYW5zZm9ybSogYmFzZSwgR3N0QnVmZmVyKiBi
dWZmZXIpCiBzdGF0aWMgYm9vbCBpc0NETVByb3h5QXZhaWxhYmxlKFdlYktpdE1lZGlhQ29tbW9u
RW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYpCiB7CiAgICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0
aW9uRGVjcnlwdFByaXZhdGUqIHByaXYgPSBXRUJLSVRfTUVESUFfQ0VOQ19ERUNSWVBUX0dFVF9Q
UklWQVRFKHNlbGYpOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socHJpdi0+bXV0ZXgpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBwcml2LT5tdXRleCB9OwogICAgIHJldHVybiBwcml2LT5jZG1Q
cm94eTsKIH0KIApAQCAtMzQ1LDcgKzM0NSw3IEBAIHN0YXRpYyB2b2lkIGF0dGFjaENETVByb3h5
KFdlYktpdE1lZGlhQ29tbW9uRW5jcnlwdGlvbkRlY3J5cHQqIHNlbGYsIENETVByb3h5KiBwCiAg
ICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdFByaXZhdGUqIHByaXYgPSBXRUJL
SVRfTUVESUFfQ0VOQ19ERUNSWVBUX0dFVF9QUklWQVRFKHNlbGYpOwogICAgIFdlYktpdE1lZGlh
Q29tbW9uRW5jcnlwdGlvbkRlY3J5cHRDbGFzcyoga2xhc3MgPSBXRUJLSVRfTUVESUFfQ0VOQ19E
RUNSWVBUX0dFVF9DTEFTUyhzZWxmKTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socHJp
di0+bXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBwcml2LT5tdXRleCB9OwogICAgIEdTVF9F
UlJPUl9PQkpFQ1Qoc2VsZiwgIkF0dGFjaGluZyBDRE1Qcm94eSAlcCIsIHByb3h5KTsKICAgICBw
cml2LT5jZG1Qcm94eSA9IHByb3h5OwogICAgIGtsYXNzLT5jZG1Qcm94eUF0dGFjaGVkKHNlbGYs
IHByaXYtPmNkbVByb3h5KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL21hYy9Db2xvck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Db2xvck1hYy5tbQppbmRleCA1NzdiMDA3NjEzYzMzMTE0MDNkOWE0NzA0NDc0NzEwMzhl
Yzc2NDUzLi42NWJjYTY3MGY5Mjg2ZDI1YTE5NTE5MjFiODVmMGEwNWEwMTUyZDUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCkBAIC0x
NDQsNyArMTQ0LDcgQEAgTlNDb2xvciAqbnNDb2xvcihjb25zdCBDb2xvciYgY29sb3IpCiAgICAg
fQogCiAgICAgc3RhdGljIExvY2sgY2FjaGVkQ29sb3JMb2NrOwotICAgIGF1dG8gaG9sZGVyID0g
aG9sZExvY2soY2FjaGVkQ29sb3JMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgY2FjaGVkQ29s
b3JMb2NrIH07CiAKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGlueUxSVUNhY2hlPENvbG9y
LCBSZXRhaW5QdHI8TlNDb2xvcj4sIDMyPj4gY2FjaGU7CiAgICAgcmV0dXJuIGNhY2hlLmdldCgp
LmdldChjb2xvcikuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcApp
bmRleCA5ZjExMjRmZWE3MDc2NmU2ZTFjNjRiZGI1YzdjNjNiMGFlOWE0NTk0Li5lMzZkMzZiMWVm
MDY4YjA1MzRlM2FhNmUxZTc1MGM4OTUxMjc4MDlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1ZmZlclBpcGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdl
QnVmZmVyUGlwZS5jcHAKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBOaWNvc2lhSW1hZ2VCdWZmZXJQ
aXBlU291cmNlOjpoYW5kbGUoUmVmUHRyPEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikKICAgICBpZiAo
IWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2ltYWdlQnVmZmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1faW1hZ2VCdWZmZXJMb2Nr
IH07CiAKICAgICBpZiAoIW1faW1hZ2VCdWZmZXIpIHsKICAgICAgICAgYXV0byBwcm94eU9wZXJh
dGlvbiA9IFt0aGlzXSAoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eSYgcHJveHkpIG11
dGFibGUgewpAQCAtMTAzLDcgKzEwMyw3IEBAIHZvaWQgTmljb3NpYUltYWdlQnVmZmVyUGlwZVNv
dXJjZTo6aGFuZGxlKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpCiAgICAgICAgICAgICAg
ICAgYXV0byB0ZXh0dXJlID0gQml0bWFwVGV4dHVyZUdMOjpjcmVhdGUoVGV4dHVyZU1hcHBlckNv
bnRleHRBdHRyaWJ1dGVzOjpnZXQoKSk7CiAKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9pbWFnZUJ1ZmZlckxvY2spOworICAg
ICAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9pbWFnZUJ1ZmZlckxvY2sgfTsKIAog
ICAgICAgICAgICAgICAgICAgICBpZiAoIW1faW1hZ2VCdWZmZXIpCiAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
d2FrL1dlYkNvcmVUaHJlYWQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dl
YkNvcmVUaHJlYWQubW0KaW5kZXggMTA1NGM2NGNhZjEyMWQ4ODY2NjQ2YjA2YmFmNDg3MjAzZmNi
YzMyMS4uMTlmZmRlZWI1MWQ2Zjg3MWVkN2E2Y2U5YzU1Y2Q5NDRkNmIyNDExZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQpAQCAtMjE3
LDcgKzIxNyw3IEBAIHN0YXRpYyB2b2lkIEhhbmRsZURlbGVnYXRlU291cmNlKHZvaWQqKQogICAg
IF9XZWJUaHJlYWRBdXRvTG9jaygpOwogCiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKGRlbGVnYXRlTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBkZWxlZ2F0ZUxv
Y2sgfTsKIAogI2lmIExPR19NRVNTQUdFUwogICAgICAgICBpZiAoW1tkZWxlZ2F0ZUludm9jYXRp
b24oKSB0YXJnZXRdIGlzS2luZE9mQ2xhc3M6W05TTm90aWZpY2F0aW9uQ2VudGVyIGNsYXNzXV0p
IHsKQEAgLTMyMiw3ICszMjIsNyBAQCB2b2lkIFdlYlRocmVhZEFkb3B0QW5kUmVsZWFzZShpZCBv
YmopCiAgICAgTlNMb2coQCJSZWxlYXNlIHNlbmQgW21haW4gdGhyZWFkXTogJUAiLCBvYmopOwog
I2VuZGlmICAgICAgICAKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod2ViVGhyZWFkUmVs
ZWFzZUxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyB3ZWJUaHJlYWRSZWxlYXNlTG9jayB9Owog
CiAgICAgaWYgKHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgpID09IG5pbCkKICAgICAgICAgd2Vi
VGhyZWFkUmVsZWFzZU9iakFycmF5KCkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlKGtD
RkFsbG9jYXRvclN5c3RlbURlZmF1bHQsIDAsIG51bGxwdHIpKTsKQEAgLTM5MSw3ICszOTEsNyBA
QCB2b2lkIFdlYkNvcmVPYmpDRGVhbGxvY09uV2ViVGhyZWFkSW1wbChpZCBzZWxmLCBTRUwpCiAg
ICAgfQogCiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHdlYkNvcmVSZWxl
YXNlTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyB3ZWJDb3JlUmVsZWFzZUxvY2sgfTsK
ICAgICAgICAgaWYgKFtzZWxmIHJldGFpbkNvdW50XSAhPSAxKSB7CiAgICAgICAgICAgICAvLyBU
aGlzIGlzIG5vdCB0aGUgb25seSByZWZlcmVuY2UgcmV0YWluaW5nIHRoZSBvYmplY3QsIHNvIGFu
b3RoZXIKICAgICAgICAgICAgIC8vIHRocmVhZCBjb3VsZCBhbHNvIGNhbGwgcmVsZWFzZSAtIGhv
bGQgdGhlIGxvY2sgd2hpbHN0IGNhbGxpbmcKQEAgLTQxMCw3ICs0MTAsNyBAQCB2b2lkIFdlYkNv
cmVPYmpDRGVhbGxvY09uV2ViVGhyZWFkSW1wbChpZCBzZWxmLCBTRUwpCiAKIHZvaWQgV2ViQ29y
ZU9iakNEZWFsbG9jV2l0aFdlYlRocmVhZExvY2tJbXBsKGlkIHNlbGYsIFNFTCkKIHsKLSAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKHdlYkNvcmVSZWxlYXNlTG9jayk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IHdlYkNvcmVSZWxlYXNlTG9jayB9OwogICAgIGlmIChXZWJUaHJlYWRJc0xvY2tlZE9y
RGlzYWJsZWQoKSB8fCAxICE9IFtzZWxmIHJldGFpbkNvdW50XSkKICAgICAgICAgW3NlbGYgX3dl
YmNvcmVfcmVsZWFzZVdpdGhXZWJUaHJlYWRMb2NrXTsKICAgICBlbHNlCkBAIC00MjMsNyArNDIz
LDcgQEAgc3RhdGljIHZvaWQgSGFuZGxlV2ViVGhyZWFkUmVsZWFzZVNvdXJjZSh2b2lkKikKIAog
ICAgIFJldGFpblB0cjxDRk11dGFibGVBcnJheVJlZj4gb2JqZWN0czsKICAgICB7Ci0gICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sod2ViVGhyZWFkUmVsZWFzZUxvY2spOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgd2ViVGhyZWFkUmVsZWFzZUxvY2sgfTsKICAgICAgICAgaWYgKENGQXJy
YXlHZXRDb3VudCh3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKS5nZXQoKSkpIHsKICAgICAgICAg
ICAgIG9iamVjdHMgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRhYmxlQ29weShudWxscHRyLCAw
LCB3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKS5nZXQoKSkpOwogICAgICAgICAgICAgQ0ZBcnJh
eVJlbW92ZUFsbFZhbHVlcyh3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKS5nZXQoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRSdW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNw
cAppbmRleCBjYTk4YThmY2I0OTc2MjUxYTJjYzE5YmRjZjI3MWY3ZjY0OTZlMzE3Li44ZjgxZDdj
MWFjYTQ2OTU1NTFmYzQ0MGI0N2U5MDYxZDRiMzVkZjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVUaHJlYWRSdW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5jcHAKQEAgLTUyLDcgKzUy
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRDb21wbGV0ZWQoKQogICAgIHsKLSAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0YXRlTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9j
a2VyIHsgbV9zdGF0ZU11dGV4IH07CiAKICAgICAgICAgQVNTRVJUKCFtX2NvbXBsZXRlZCk7CiAg
ICAgICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgdm9p
ZCBIYW5kbGVSdW5Tb3VyY2Uodm9pZCAqaW5mbykKIAogICAgIFdlYlRocmVhZFJ1blF1ZXVlIHF1
ZXVlQ29weTsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socnVuUXVldWVN
dXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBydW5RdWV1ZU11dGV4IH07CiAgICAgICAg
IHF1ZXVlQ29weSA9ICpydW5RdWV1ZTsKICAgICAgICAgcnVuUXVldWUtPmNsZWFyKCk7CiAgICAg
fQpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0YXRpYyB2b2lkIF9XZWJUaHJlYWRSdW4odm9pZCAoXmJs
b2NrKSh2b2lkKSwgYm9vbCBzeW5jaHJvbm91cykKICAgICAgICAgc3RhdGUgPSBuZXcgV2ViVGhy
ZWFkQmxvY2tTdGF0ZTsKIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhy
dW5RdWV1ZU11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHJ1blF1ZXVlTXV0ZXggfTsK
ICAgICAgICAgcnVuUXVldWUtPmFwcGVuZChXZWJUaHJlYWRCbG9jayhibG9jaywgc3RhdGUpKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNT
dWZmaXhNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFj
Lm1tCmluZGV4IGI4NTA2YWI3NmUzMjQ4YzU1OWRlNTliZWJkOGFiYzFhYmY2NjVkYTUuLmExYmZj
MjFiNTllNDBmOGNiYjFmYjM5NjFlZWMzODBhMTllYjMzMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQpAQCAtNTEsNyArNTEsNyBAQCBTdHJp
bmcgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbihjb25zdCBTdHJpbmcmIGRvbWFpbikKICAg
ICAgICAgcmV0dXJuIGRvbWFpbjsKIAogICAgIHN0YXRpYyBMb2NrIGNhY2hlTG9jazsKLSAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKGNhY2hlTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGNh
Y2hlTG9jayB9OwogCiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4+IGNhY2hlOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVjb3JkZXJQcml2YXRl
TW9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29yZGVyL01lZGlhUmVj
b3JkZXJQcml2YXRlTW9jay5jcHAKaW5kZXggNTk5Njc0YTkyYWQyNmNiZjhjNzc0Yjc4NWI1YjRk
MmY1YzZmY2ZmNi4uN2EwZWJlMzhmMmEyMDkyMzE3OTg1Zjg0MTg3OWNhYWE4OTcyZTc0YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29y
ZGVyUHJpdmF0ZU1vY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcApAQCAtNjksNyArNjksNyBAQCB2b2lk
IE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6cmVzdW1lUmVjb3JkaW5nKENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbAogCiB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9jazo6dmlk
ZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUmKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9idWZmZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9idWZmZXJMb2NrIH07
CiAgICAgbV9idWZmZXIuYXBwZW5kKCJWaWRlbyBUcmFjayBJRDogIik7CiAgICAgbV9idWZmZXIu
YXBwZW5kKG1fdmlkZW9UcmFja0lEKTsKICAgICBnZW5lcmF0ZU1vY2tDb3VudGVyU3RyaW5nKCk7
CkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjphdWRpb1Nh
bXBsZXNBdmFpbGFibGUoY29uc3QgV1RGOjpNZWRpYVRpbWUmLCBjb25zCiAgICAgLy8gSGVhcCBh
bGxvY2F0aW9ucyBhcmUgZm9yYmlkZGVuIG9uIHRoZSBhdWRpbyB0aHJlYWQgZm9yIHBlcmZvcm1h
bmNlIHJlYXNvbnMgc28gd2UgbmVlZCB0bwogICAgIC8vIGV4cGxpY2l0bHkgYWxsb3cgdGhlIGZv
bGxvd2luZyBhbGxvY2F0aW9uKHMpLgogICAgIERpc2FibGVNYWxsb2NSZXN0cmljdGlvbnNGb3JD
dXJyZW50VGhyZWFkU2NvcGUgZGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uczsKLSAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fYnVmZmVyTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYnVm
ZmVyTG9jayB9OwogICAgIG1fYnVmZmVyLmFwcGVuZCgiQXVkaW8gVHJhY2sgSUQ6ICIpOwogICAg
IG1fYnVmZmVyLmFwcGVuZChtX2F1ZGlvVHJhY2tJRCk7CiAgICAgZ2VuZXJhdGVNb2NrQ291bnRl
clN0cmluZygpOwpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlTW9j
azo6ZmV0Y2hEYXRhKEZldGNoRGF0YUNhbGxiYWNrJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyOwogICAgIHsKLSAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX2J1ZmZlckxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9i
dWZmZXJMb2NrIH07CiAgICAgICAgIFZlY3Rvcjx1aW50OF90PiB2YWx1ZShtX2J1ZmZlci5sZW5n
dGgoKSk7CiAgICAgICAgIG1lbWNweSh2YWx1ZS5kYXRhKCksIG1fYnVmZmVyLmNoYXJhY3RlcnM4
KCksIG1fYnVmZmVyLmxlbmd0aCgpKTsKICAgICAgICAgbV9idWZmZXIuY2xlYXIoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFS
ZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXJDb2NvYS5tbQppbmRl
eCA0ZDVmMGNlY2JkNzFkOTU1OTJhYzY1ZDViNjBhZTdmMjYzY2NmZDdkLi45MjNhMzYwZDUzZTRm
NTU0NGU1YjBiZmI4ZGZmYmQ1NTk1ZDVhMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXJlY29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9N
ZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tCkBAIC01NDMsNyArNTQzLDcgQEAgdm9p
ZCBNZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlcjo6Y29tcGxldGVGZXRjaERhdGEoKQogCiB2b2lk
IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjphcHBlbmREYXRhKGNvbnN0IGNoYXIqIGRhdGEs
IHNpemVfdCBzaXplKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9kYXRhTG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fZGF0YUxvY2sgfTsKICAgICBpZiAoIW1fZGF0YSkgewog
ICAgICAgICBtX2RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShkYXRhLCBzaXplKTsKICAgICAg
ICAgcmV0dXJuOwpAQCAtNTUzLDcgKzU1Myw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVX
cml0ZXI6OmFwcGVuZERhdGEoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiAKIFJlZlB0
cjxTaGFyZWRCdWZmZXI+IE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjp0YWtlRGF0YSgpCiB7
Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2RhdGFMb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9kYXRhTG9jayB9OwogICAgIGF1dG8gZGF0YSA9IFdURk1vdmUobV9kYXRhKTsKICAg
ICByZXR1cm4gZGF0YTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL1JlYWx0aW1lTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKaW5kZXggMjc4ZDE5Njc4ZGIz
ZWEzNDRkNTc3MzE1ZmRmMDAzMGMxMGU5MGNhMC4uYzliYzA3NzEzOGE4MGI1OGJjYzQ5N2UwYzQx
YTE1ZWVjYjc2MTRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFz
dHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAKQEAgLTYzLDI4ICs2MywyOCBA
QCBSZWFsdGltZU1lZGlhU291cmNlOjpSZWFsdGltZU1lZGlhU291cmNlKFR5cGUgdHlwZSwgU3Ry
aW5nJiYgbmFtZSwgU3RyaW5nJiYgZGV2aQogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphZGRB
dWRpb1NhbXBsZU9ic2VydmVyKEF1ZGlvU2FtcGxlT2JzZXJ2ZXImIG9ic2VydmVyKQogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2F1
ZGlvU2FtcGxlT2JzZXJ2ZXJzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYXVkaW9TYW1w
bGVPYnNlcnZlcnNMb2NrIH07CiAgICAgbV9hdWRpb1NhbXBsZU9ic2VydmVycy5hZGQoJm9ic2Vy
dmVyKTsKIH0KIAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjpyZW1vdmVBdWRpb1NhbXBsZU9i
c2VydmVyKEF1ZGlvU2FtcGxlT2JzZXJ2ZXImIG9ic2VydmVyKQogewogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2F1ZGlvU2FtcGxlT2Jz
ZXJ2ZXJzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYXVkaW9TYW1wbGVPYnNlcnZlcnNM
b2NrIH07CiAgICAgbV9hdWRpb1NhbXBsZU9ic2VydmVycy5yZW1vdmUoJm9ic2VydmVyKTsKIH0K
IAogdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphZGRWaWRlb1NhbXBsZU9ic2VydmVyKFZpZGVv
U2FtcGxlT2JzZXJ2ZXImIG9ic2VydmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3ZpZGVvU2FtcGxlT2JzZXJ2ZXJzTG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdmlkZW9TYW1wbGVPYnNlcnZlcnNMb2NrIH07CiAgICAg
bV92aWRlb1NhbXBsZU9ic2VydmVycy5hZGQoJm9ic2VydmVyKTsKIH0KIAogdm9pZCBSZWFsdGlt
ZU1lZGlhU291cmNlOjpyZW1vdmVWaWRlb1NhbXBsZU9ic2VydmVyKFZpZGVvU2FtcGxlT2JzZXJ2
ZXImIG9ic2VydmVyKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX3ZpZGVvU2FtcGxlT2JzZXJ2ZXJzTG9jayk7CisgICAgTG9ja2Vy
IGxvY2tlciB7IG1fdmlkZW9TYW1wbGVPYnNlcnZlcnNMb2NrIH07CiAgICAgbV92aWRlb1NhbXBs
ZU9ic2VydmVycy5yZW1vdmUoJm9ic2VydmVyKTsKIH0KIApAQCAtMjA2LDcgKzIwNiw3IEBAIHZv
aWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUoTWVkaWFTYW1wbGUm
IG1lZGlhU2FtcGxlKQogCiAgICAgdXBkYXRlSGFzU3RhcnRlZFByb2R1Y2luZ0RhdGEoKTsKIAot
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV92aWRlb1NhbXBsZU9ic2VydmVyc0xvY2spOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX3ZpZGVvU2FtcGxlT2JzZXJ2ZXJzTG9jayB9OwogICAgIGZv
ciAoYXV0byogb2JzZXJ2ZXIgOiBtX3ZpZGVvU2FtcGxlT2JzZXJ2ZXJzKQogICAgICAgICBvYnNl
cnZlci0+dmlkZW9TYW1wbGVBdmFpbGFibGUobWVkaWFTYW1wbGUpOwogfQpAQCAtMjE1LDcgKzIx
NSw3IEBAIHZvaWQgUmVhbHRpbWVNZWRpYVNvdXJjZTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKGNv
bnN0IE1lZGlhVGltZSYgdGltZSwgY29uc3QgUGxhCiB7CiAgICAgdXBkYXRlSGFzU3RhcnRlZFBy
b2R1Y2luZ0RhdGEoKTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9hdWRpb1NhbXBs
ZU9ic2VydmVyc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2F1ZGlvU2FtcGxlT2JzZXJ2
ZXJzTG9jayB9OwogICAgIGZvciAoYXV0byogb2JzZXJ2ZXIgOiBtX2F1ZGlvU2FtcGxlT2JzZXJ2
ZXJzKQogICAgICAgICBvYnNlcnZlci0+YXVkaW9TYW1wbGVzQXZhaWxhYmxlKHRpbWUsIGF1ZGlv
RGF0YSwgZGVzY3JpcHRpb24sIG51bWJlck9mRnJhbWVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdv
aW5nQXVkaW9Tb3VyY2UuY3BwCmluZGV4IGMyN2U2MGY2NmNjY2U5MjYyMGUyNjU3OGZmNThhM2Iw
ZTU3NDgwNDguLjQwMzdmNTEzZjJjODIzODE4MTZkMmM2NDM1NDJhYTIxNWI2YzAwYTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29p
bmdBdWRpb1NvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcApAQCAtNDcsNyArNDcsNyBAQCBSZWFs
dGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6On5SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UoKQog
ewogICAgIEFTU0VSVCghbV9hdWRpb1NvdXJjZS0+aGFzT2JzZXJ2ZXIoKnRoaXMpKTsKICNpZiBB
U1NFUlRfRU5BQkxFRAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zaW5rc0xvY2spOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX3NpbmtzTG9jayB9OwogI2VuZGlmCiAgICAgQVNTRVJUKG1f
c2lua3MuaXNFbXB0eSgpKTsKIApAQCAtOTUsMTMgKzk1LDEzIEBAIHZvaWQgUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlOjpzb3VyY2VFbmFibGVkQ2hhbmdlZCgpCiAKIHZvaWQgUmVhbHRpbWVP
dXRnb2luZ0F1ZGlvU291cmNlOjpBZGRTaW5rKHdlYnJ0Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZh
Y2UqIHNpbmspCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3NpbmtzTG9jayk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG1fc2lua3NMb2NrIH07CiAgICAgbV9zaW5rcy5hZGQoc2luayk7
CiB9CiAKIHZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpSZW1vdmVTaW5rKHdlYnJ0
Yzo6QXVkaW9UcmFja1NpbmtJbnRlcmZhY2UqIHNpbmspCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX3NpbmtzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2lua3NMb2NrIH07
CiAgICAgbV9zaW5rcy5yZW1vdmUoc2luayk7CiB9CiAKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lk
IFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6c2VuZEF1ZGlvRnJhbWVzKGNvbnN0IHZvaWQq
IGF1ZGlvRGF0YSwgaW50IGJpdAogICAgICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsICJj
aHVuayAiLCBtX2NodW5rc1NlbnQpOwogI2VuZGlmCiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fc2lua3NMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zaW5rc0xvY2sgfTsKICAg
ICBmb3IgKGF1dG8gc2luayA6IG1fc2lua3MpCiAgICAgICAgIHNpbmstPk9uRGF0YShhdWRpb0Rh
dGEsIGJpdHNQZXJTYW1wbGUsIHNhbXBsZVJhdGUsIG51bWJlck9mQ2hhbm5lbHMsIG51bWJlck9m
RnJhbWVzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3Ry
ZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UuY3BwCmluZGV4IGZh
OTQ2NjVlNWZiYWQzODdkMzNkZGUwYjAyN2ZiZTE5NGIyNWQzMGUuLjEyY2VkNzlmY2Y2YTZlNTMw
ZGQ3YjllMTAyNTY1ZDhmNzVjMmRhMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291
cmNlLmNwcApAQCAtNTgsNyArNTgsNyBAQCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6On5S
ZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UoKQogewogQVNTRVJUKCFtX3ZpZGVvU291cmNlLT5o
YXNPYnNlcnZlcigqdGhpcykpOwogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX3NpbmtzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2lua3NMb2Nr
IH07CiAjZW5kaWYKICAgICBBU1NFUlQobV9zaW5rcy5pc0VtcHR5KCkpOwogICAgIHN0b3AoKTsK
QEAgLTE1OCwxMyArMTU4LDEzIEBAIHZvaWQgUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpB
ZGRPclVwZGF0ZVNpbmsocnRjOjpWaWRlb1NpbmtJbnRlcmZhY2U8d2VicnRjCiAgICAgaWYgKHNp
bmtXYW50cy5yb3RhdGlvbl9hcHBsaWVkKQogICAgICAgICBhcHBseVJvdGF0aW9uKCk7CiAKLSAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2lua3NMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9zaW5rc0xvY2sgfTsKICAgICBtX3NpbmtzLmFkZChzaW5rKTsKIH0KIAogdm9pZCBSZWFs
dGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OlJlbW92ZVNpbmsocnRjOjpWaWRlb1NpbmtJbnRlcmZh
Y2U8d2VicnRjOjpWaWRlb0ZyYW1lPiogc2luaykKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fc2lua3NMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zaW5rc0xvY2sgfTsKICAg
ICBtX3NpbmtzLnJlbW92ZShzaW5rKTsKIH0KIApAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgUmVh
bHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpzZW5kRnJhbWUocnRjOjpzY29wZWRfcmVmcHRyPHdl
YnJ0Yzo6VmlkZW9GcmFtCiAgICAgfQogI2VuZGlmCiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fc2lua3NMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zaW5rc0xvY2sgfTsKICAg
ICBmb3IgKGF1dG8qIHNpbmsgOiBtX3NpbmtzKQogICAgICAgICBzaW5rLT5PbkZyYW1lKGZyYW1l
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9CYXNlQXVkaW9TaGFyZWRVbml0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9CYXNlQXVkaW9TaGFyZWRVbml0LmNwcAppbmRleCA1M2M3ZTdiY2UzNDU3NjI4
MjhlN2EzYjM5YTc4ZTliYTVlMjMyMTc0Li5hMmJlNTIyNTM0NzIxNWQ0ZTc3OTAwN2I2NjY2MDIz
NjgwZDg3YjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQmFzZUF1ZGlvU2hhcmVkVW5pdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VBdWRpb1NoYXJlZFVuaXQuY3BwCkBAIC00NSwxNCArNDUs
MTQgQEAgQmFzZUF1ZGlvU2hhcmVkVW5pdDo6QmFzZUF1ZGlvU2hhcmVkVW5pdCgpCiB2b2lkIEJh
c2VBdWRpb1NoYXJlZFVuaXQ6OmFkZENsaWVudChDb3JlQXVkaW9DYXB0dXJlU291cmNlJiBjbGll
bnQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fY2xpZW50c0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2NsaWVudHNMb2Nr
IH07CiAgICAgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsKIH0KIAogdm9pZCBCYXNlQXVkaW9TaGFy
ZWRVbml0OjpyZW1vdmVDbGllbnQoQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZSYgY2xpZW50KQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X2NsaWVudHNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9jbGllbnRzTG9jayB9OwogICAg
IG1fY2xpZW50cy5yZW1vdmUoJmNsaWVudCk7CiB9CiAKQEAgLTYwLDExICs2MCwxMSBAQCB2b2lk
IEJhc2VBdWRpb1NoYXJlZFVuaXQ6OmZvckVhY2hDbGllbnQoY29uc3QgRnVuY3Rpb248dm9pZChD
b3JlQXVkaW9DYXB0dXJlU291cgogewogICAgIFZlY3RvcjxDb3JlQXVkaW9DYXB0dXJlU291cmNl
Kj4gY2xpZW50c0NvcHk7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
Y2xpZW50c0xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9jbGllbnRzTG9jayB9Owog
ICAgICAgICBjbGllbnRzQ29weSA9IGNvcHlUb1ZlY3RvcihtX2NsaWVudHMpOwogICAgIH0KICAg
ICBmb3IgKGF1dG8qIGNsaWVudCA6IGNsaWVudHNDb3B5KSB7Ci0gICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9jbGllbnRzTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2Ns
aWVudHNMb2NrIH07CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgY2xpZW50IGhhcyBub3QgYmVl
biBkZXN0cm95ZWQuCiAgICAgICAgIGlmICghbV9jbGllbnRzLmNvbnRhaW5zKGNsaWVudCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBCYXNlQXVkaW9TaGFy
ZWRVbml0Ojpmb3JFYWNoQ2xpZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoQ29yZUF1ZGlvQ2FwdHVy
ZVNvdXIKIAogdm9pZCBCYXNlQXVkaW9TaGFyZWRVbml0OjpjbGVhckNsaWVudHMoKQogewotICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9jbGllbnRzTG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fY2xpZW50c0xvY2sgfTsKICAgICBtX2NsaWVudHMuY2xlYXIoKTsKIH0KIApAQCAtMjE3
LDcgKzIxNyw3IEBAIE9TU3RhdHVzIEJhc2VBdWRpb1NoYXJlZFVuaXQ6OnN1c3BlbmQoKQogdm9p
ZCBCYXNlQXVkaW9TaGFyZWRVbml0OjphdWRpb1NhbXBsZXNBdmFpbGFibGUoY29uc3QgTWVkaWFU
aW1lJiB0aW1lLCBjb25zdCBQbGF0Zm9ybUF1ZGlvRGF0YSYgZGF0YSwgY29uc3QgQXVkaW9TdHJl
YW1EZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24sIHNpemVfdCBudW1iZXJPZkZyYW1lcykKIHsKICAg
ICAvLyBXZSBob2xkIHRoZSBsb2NrIGhlcmUgc2luY2UgYWRkaW5nL3JlbW92aW5nIGNsaWVudHMg
Y2FuIG9ubHkgaGFwcGVuIGluIG1haW4gdGhyZWFkLgotICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sobV9jbGllbnRzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fY2xpZW50c0xvY2sgfTsK
IAogICAgIC8vIEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCB3ZSBmb3JiaWQgaGVhcCBhbGxvY2F0
aW9ucyB3aGlsZSBkb2luZyByZW5kZXJpbmcgb24gdGhlIGNhcHR1cmUgYXVkaW8gdGhyZWFkLgog
ICAgIEZvcmJpZE1hbGxvY1VzZUZvckN1cnJlbnRUaHJlYWRTY29wZSBmb3JiaWRNYWxsb2NVc2U7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2Vi
QXVkaW9Tb3VyY2VQcm92aWRlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJDb2NvYS5tbQppbmRleCBiZjNhMzM5
MWYxZmViYjM4NGU3NTllNGJjODk3NmUxNzdjYTE5NTY1Li41NzZmNDRlOTJjNThiOTNjMGI0MGQ2
NjQ5OTgwYmM3ZTkwYTVlYWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckNvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVy
Q29jb2EubW0KQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJD
b2NvYTo6cHJlcGFyZShjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24mIGZvcgogewog
ICAgIERpc2FibGVNYWxsb2NSZXN0cmljdGlvbnNGb3JDdXJyZW50VGhyZWFkU2NvcGUgc2NvcGU7
CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fbG9jayB9OwogCiAgICAgTE9HKE1lZGlhLCAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlckNv
Y29hOjpwcmVwYXJlKCVwKSIsIHRoaXMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKaW5kZXggOTdmYzNkMGJjYWFi
ZWU5MGUzZGI0ZjVhYTY5MTIzNmRkNGRlMmFjMy4uMDVhMjRmNTI1MjViNTRiN2ZmODFkNDcxMWM1
ZWMwMGM5ODZjOTg0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcApAQCAtNTgsNyArNTgsNyBAQCBDRlJ1bkxvb3BS
ZWYgbG9hZGVyUnVuTG9vcCgpCiAgICAgaWYgKCFsb2FkZXJSdW5Mb29wT2JqZWN0KSB7CiAgICAg
ICAgIFRocmVhZDo6Y3JlYXRlKCJXZWJDb3JlOiBDRk5ldHdvcmsgTG9hZGVyIiwgW10gewogICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobG9hZGVy
UnVuTG9vcE11dGV4KTsKKyAgICAgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbG9hZGVyUnVu
TG9vcE11dGV4IH07CiAKICAgICAgICAgICAgICAgICBsb2FkZXJSdW5Mb29wT2JqZWN0ID0gQ0ZS
dW5Mb29wR2V0Q3VycmVudCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcAppbmRleCBhYTA3NDEzMzBjNjA0ZDlhNTY3OTU0
NjNlZWZlOWQ3OTk3ZjVhNjYwLi5kOWEzMTk0YWFkYjZjZjc5ZTEwODM4ODE3MjgyYjdhYzI0YmZk
MWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9D
dXJsUmVxdWVzdC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpjYW5j
ZWwoKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICB7Ci0gICAgICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9zdGF0dXNNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIg
eyBtX3N0YXR1c011dGV4IH07CiAgICAgICAgIGlmIChtX2NhbmNlbGxlZCkKICAgICAgICAgICAg
IHJldHVybjsKIApAQCAtMTUyLDEzICsxNTIsMTMgQEAgdm9pZCBDdXJsUmVxdWVzdDo6Y2FuY2Vs
KCkKIAogYm9vbCBDdXJsUmVxdWVzdDo6aXNDYW5jZWxsZWQoKQogewotICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9zdGF0dXNNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc3RhdHVz
TXV0ZXggfTsKICAgICByZXR1cm4gbV9jYW5jZWxsZWQ7CiB9CiAKIGJvb2wgQ3VybFJlcXVlc3Q6
OmlzQ29tcGxldGVkT3JDYW5jZWxsZWQoKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2so
bV9zdGF0dXNNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc3RhdHVzTXV0ZXggfTsKICAg
ICByZXR1cm4gbV9jb21wbGV0ZWQgfHwgbV9jYW5jZWxsZWQ7CiB9CiAKQEAgLTQ3OSw3ICs0Nzks
NyBAQCB2b2lkIEN1cmxSZXF1ZXN0OjpkaWRDb21wbGV0ZVRyYW5zZmVyKENVUkxjb2RlIHJlc3Vs
dCkKICAgICB9CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zdGF0
dXNNdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3N0YXR1c011dGV4IH07CiAgICAg
ICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0U2NoZWR1bGVyLmNw
cAppbmRleCA0ZDA5ZTZiNWI3ZTU5YjkzYzQ4NDFiZjM0OTA2ZmEyMjkxOTIxYWVkLi40YTIwNWY4
YjBlMGRhYTZmMDgzZTg4OTA5OGE3MzMyZTcyZmZmMmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVkdWxl
ci5jcHAKQEAgLTY3LDcgKzY3LDcgQEAgdm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6Y2FuY2Vs
KEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50KiBjbGllbnQpCiB2b2lkIEN1cmxSZXF1ZXN0U2No
ZWR1bGVyOjpjYWxsT25Xb3JrZXJUaHJlYWQoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykK
IHsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9tdXRleCk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAgICAgIG1fdGFza1F1ZXVlLmFwcGVu
ZChXVEZNb3ZlKHRhc2spKTsKICAgICB9CiAKQEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBDdXJsUmVx
dWVzdFNjaGVkdWxlcjo6c3RhcnRUaHJlYWRJZk5lZWRlZCgpCiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4
KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgaWYgKG1fcnVu
VGhyZWFkKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTg4LDE0ICs4OCwxNCBAQCB2
b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpzdGFydFRocmVhZElmTmVlZGVkKCkKICAgICAgICAg
bV90aHJlYWQtPndhaXRGb3JDb21wbGV0aW9uKCk7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4
IH07CiAgICAgICAgIG1fcnVuVGhyZWFkID0gdHJ1ZTsKICAgICB9CiAKICAgICBtX3RocmVhZCA9
IFRocmVhZDo6Y3JlYXRlKCJjdXJsVGhyZWFkIiwgW3RoaXNdIHsKICAgICAgICAgd29ya2VyVGhy
ZWFkKCk7CiAKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgbV9ydW5UaHJlYWQgPSBmYWxz
ZTsKICAgICB9LCBUaHJlYWRUeXBlOjpOZXR3b3JrKTsKIH0KQEAgLTEwNCw3ICsxMDQsNyBAQCB2
b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpzdG9wVGhyZWFkSWZOb01vcmVKb2JSdW5uaW5nKCkK
IHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICBpZiAo
bV9hY3RpdmVKb2JzLnNpemUoKSB8fCBtX3Rhc2tRdWV1ZS5zaXplKCkpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtMTE0LDcgKzExNCw3IEBAIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OnN0b3BU
aHJlYWRJZk5vTW9yZUpvYlJ1bm5pbmcoKQogdm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6c3Rv
cFRocmVhZCgpCiB7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0
ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICBtX3J1blRo
cmVhZCA9IGZhbHNlOwogICAgIH0KIApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgQ3VybFJlcXVl
c3RTY2hlZHVsZXI6OmV4ZWN1dGVUYXNrcygpCiAgICAgVmVjdG9yPFdURjo6RnVuY3Rpb248dm9p
ZCgpPj4gdGFza1F1ZXVlOwogCiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICB0
YXNrUXVldWUgPSBXVEZNb3ZlKG1fdGFza1F1ZXVlKTsKICAgICB9CiAKQEAgLTE1MCw3ICsxNTAs
NyBAQCB2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjp3b3JrZXJUaHJlYWQoKQogCiAgICAgd2hp
bGUgKHRydWUpIHsKICAgICAgICAgewotICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX211dGV4KTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAgICAg
ICAgICAgICBpZiAoIW1fcnVuVGhyZWFkKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC0yMTksNyArMjE5LDcgQEAgdm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6c3RhcnRU
cmFuc2ZlcihDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVudCogY2xpZW50KQogICAgICAgICBtX2Ns
aWVudE1hcHMuc2V0KGhhbmRsZSwgY2xpZW50KTsKICAgICB9OwogCi0gICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAg
IG1fYWN0aXZlSm9icy5hZGQoY2xpZW50KTsKICAgICBtX3Rhc2tRdWV1ZS5hcHBlbmQoV1RGTW92
ZSh0YXNrKSk7CiB9CkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxl
cjo6Y2FuY2VsVHJhbnNmZXIoQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqIGNsaWVudCkKIAog
dm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6ZmluYWxpemVUcmFuc2ZlcihDdXJsUmVxdWVzdFNj
aGVkdWxlckNsaWVudCogY2xpZW50LCBGdW5jdGlvbjx2b2lkKCk+IGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbXV0ZXggfTsKIAogICAgIGlmICghbV9hY3RpdmVKb2JzLmNvbnRhaW5zKGNsaWVu
dCkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9DdXJsU3RyZWFtU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtU2NoZWR1bGVyLmNwcAppbmRleCAzZmI4NzU5
OTg0YWEzMWE3ZDQ0YmFhMmY2OWFmZTJmZWU0NjFlYTRmLi5iNGE5YWJkNDUzMDdlMTRiMWIwMDgw
YzVmZDg0OTBhY2FmN2JiNTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ3VybFN0cmVhbVNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW1TY2hlZHVsZXIuY3BwCkBAIC04Niw3ICs4
Niw3IEBAIHZvaWQgQ3VybFN0cmVhbVNjaGVkdWxlcjo6Y2FsbE9uV29ya2VyVGhyZWFkKFdURjo6
RnVuY3Rpb248dm9pZCgpPiYmIHRhc2spCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAog
ICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgbV90YXNrUXVldWUuYXBwZW5kKFdU
Rk1vdmUodGFzaykpOwogICAgIH0KIApAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgQ3VybFN0cmVh
bVNjaGVkdWxlcjo6Y2FsbENsaWVudE9uTWFpblRocmVhZChDdXJsU3RyZWFtSUQgc3RyZWFtSUQs
IFdURjo6RnVuCiB2b2lkIEN1cmxTdHJlYW1TY2hlZHVsZXI6OnN0YXJ0VGhyZWFkSWZOZWVkZWQo
KQogewogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgaWYgKG1fcnVuVGhyZWFk
KQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIEN1
cmxTdHJlYW1TY2hlZHVsZXI6OnN0b3BUaHJlYWRJZk5vTW9yZUpvYlJ1bm5pbmcoKQogICAgIGlm
IChtX3N0cmVhbUxpc3Quc2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAg
ICAgaWYgKG1fdGFza1F1ZXVlLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNDIsNyAr
MTQyLDcgQEAgdm9pZCBDdXJsU3RyZWFtU2NoZWR1bGVyOjpleGVjdXRlVGFza3MoKQogICAgIFZl
Y3RvcjxXVEY6OkZ1bmN0aW9uPHZvaWQoKT4+IHRhc2tRdWV1ZTsKIAogICAgIHsKLSAgICAgICAg
YXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IG1fbXV0ZXggfTsKICAgICAgICAgdGFza1F1ZXVlID0gV1RGTW92ZShtX3Rhc2tRdWV1ZSk7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVCdWlsZGVyLmNwcAppbmRleCA4YjE0MGRhZGIz
YzMzMDYwYTA1YThhZjNjNTY2YjIyMGVhZjk2OWRkLi41Njk2OTZlZWUyMTdmZjYyYzVmOWJkZjA1
NjU0ZjM0MDA1OGJiZTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1
aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlQnVpbGRlci5jcHAKQEAg
LTM0MCw3ICszNDAsNyBAQCB2b2lkIEJ1aWxkZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJ
RCBpZCwgQ1NTVmFsdWUmIHZhbHVlLCBTZWxlY3RvckNoZWNrZXI6OgogICAgIGlmIChpczxDU1NQ
YWludEltYWdlVmFsdWU+KHZhbHVlVG9BcHBseSkpIHsKICAgICAgICAgYXV0byYgbmFtZSA9IGRv
d25jYXN0PENTU1BhaW50SW1hZ2VWYWx1ZT4odmFsdWVUb0FwcGx5LmdldCgpKS5uYW1lKCk7CiAg
ICAgICAgIGlmIChhdXRvKiBwYWludFdvcmtsZXQgPSBjb25zdF9jYXN0PERvY3VtZW50Jj4obV9z
dGF0ZS5kb2N1bWVudCgpKS5wYWludFdvcmtsZXRHbG9iYWxTY29wZUZvck5hbWUobmFtZSkpIHsK
LSAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socGFpbnRXb3JrbGV0LT5wYWludERl
ZmluaXRpb25Mb2NrKCkpOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IHBhaW50V29ya2xl
dC0+cGFpbnREZWZpbml0aW9uTG9jaygpIH07CiAgICAgICAgICAgICBpZiAoYXV0byogcmVnaXN0
cmF0aW9uID0gcGFpbnRXb3JrbGV0LT5wYWludERlZmluaXRpb25NYXAoKS5nZXQobmFtZSkpIHsK
ICAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIHByb3BlcnR5IDogcmVnaXN0cmF0aW9uLT5pbnB1
dFByb3BlcnRpZXMpCiAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUuc3R5bGUoKS5hZGRDdXN0
b21QYWludFdhdGNoUHJvcGVydHkocHJvcGVydHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJPcldvcmtsZXRUaHJlYWQuY3BwCmluZGV4IGE4ZWE5OWJjNWZmZWQxYTNjY2Q4
NjI4ZWY5YzdhMDUxNmZhYmJhMmUuLjQ3N2Q5NjcyYzcxMmI0NmZjNGViZDdhMjg5N2U3N2ViMTU4
MDg0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyT3JXb3JrbGV0
VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRo
cmVhZC5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6
d29ya2VyT3JXb3JrbGV0VGhyZWFkKCkKICAgICAgICAgLy8gTXV0ZXggcHJvdGVjdGlvbiBpcyBu
ZWNlc3NhcnkgdG8gZW5zdXJlIHRoYXQgd2UgZG9uJ3QgY2hhbmdlIG1fZ2xvYmFsU2NvcGUKICAg
ICAgICAgLy8gd2hpbGUgV29ya2VyVGhyZWFkOjpzdG9wKCkgaXMgYWNjZXNzaW5nIGl0LiBOb3Rl
IHRoYXQgV29ya2VyVGhyZWFkOjpzdG9wKCkgY2FuCiAgICAgICAgIC8vIGJlIGNhbGxlZCBiZWZv
cmUgd2UndmUgZmluaXNoZWQgY3JlYXRpbmcgdGhlIFdvcmtlckdsb2JhbFNjb3BlLgotICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdGhyZWFkQ3JlYXRpb25BbmRHbG9iYWxTY29wZUxv
Y2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90aHJlYWRDcmVhdGlvbkFuZEdsb2JhbFNj
b3BlTG9jayB9OwogICAgICAgICBtX2dsb2JhbFNjb3BlID0gY3JlYXRlR2xvYmFsU2NvcGUoKTsK
IAogICAgICAgICAvLyBXaGVuIHJ1bm5pbmcgb3V0IG9mIG1lbW9yeSwgY3JlYXRlR2xvYmFsU2Nv
cGUoKSBtYXkgcmV0dXJuIG51bGwgYmVjYXVzZSB3ZSBjb3VsZCBub3QgYWxsb2NhdGUgYSBKU0M6
OlZNLgpAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3b3Jr
ZXJPcldvcmtsZXRUaHJlYWQoKQogICAgIHsKICAgICAgICAgLy8gTXV0ZXggcHJvdGVjdGlvbiBp
cyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoYXQgd2UgZG9uJ3QgY2hhbmdlIG1fZ2xvYmFsU2NvcGUK
ICAgICAgICAgLy8gd2hpbGUgV29ya2VyVGhyZWFkOjpzdG9wIGlzIGFjY2Vzc2luZyBpdC4KLSAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3RocmVhZENyZWF0aW9uQW5kR2xvYmFsU2Nv
cGVMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fdGhyZWFkQ3JlYXRpb25BbmRHbG9i
YWxTY29wZUxvY2sgfTsKIAogICAgICAgICAvLyBEZWxheSB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhl
IFdvcmtlckdsb2JhbFNjb3BlIGNvbnRleHQgdW50aWwgYWZ0ZXIgd2UndmUgdW5sb2NrZWQgdGhl
CiAgICAgICAgIC8vIG1fdGhyZWFkQ3JlYXRpb25BbmRXb3JrZXJHbG9iYWxTY29wZU11dGV4LiBU
aGlzIGlzIG5lZWRlZCBiZWNhdXNlIGRlc3RydWN0aW5nIHRoZQpAQCAtMTg3LDcgKzE4Nyw3IEBA
IHZvaWQgV29ya2VyT3JXb3JrbGV0VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWQoKQogdm9p
ZCBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6OnN0YXJ0KFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBT
dHJpbmcmKT4mJiBldmFsdWF0ZUNhbGxiYWNrKQogewogICAgIC8vIE11dGV4IHByb3RlY3Rpb24g
aXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGF0IG1fdGhyZWFkIGlzIGluaXRpYWxpemVkIHdoZW4g
dGhlIHRocmVhZCBzdGFydHMuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3RocmVhZENy
ZWF0aW9uQW5kR2xvYmFsU2NvcGVMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV90aHJlYWRD
cmVhdGlvbkFuZEdsb2JhbFNjb3BlTG9jayB9OwogCiAgICAgaWYgKG1fdGhyZWFkKQogICAgICAg
ICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmts
ZXRHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRH
bG9iYWxTY29wZS5jcHAKaW5kZXggMDRmMThjNjMxNzI1ZjhkNzU4NzU4MzkxYmNlMWQ1OTFmYjY5
OTBmNi4uYjA3ODM3NWZhNzNkZmUyOWNkMmNkMjAxNzFhZDI2ODIyMjg1OWIwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcApA
QCAtODUsNyArODUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYWludFdvcmtsZXRHbG9iYWxTY29w
ZTo6cmVnaXN0ZXJQYWludChKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbAogICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVGhlIGZpcnN0IGFyZ3VtZW50IG11c3Qgbm90IGJlIHRo
ZSBlbXB0eSBzdHJpbmciIH07CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2socGFpbnREZWZpbml0aW9uTG9jaygpKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHBhaW50
RGVmaW5pdGlvbkxvY2soKSB9OwogCiAgICAgICAgIGlmIChwYWludERlZmluaXRpb25NYXAoKS5j
b250YWlucyhuYW1lKSkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9k
aWZpY2F0aW9uRXJyb3IsICJUaGlzIG5hbWUgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkIiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFs
U2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3Bl
LmgKaW5kZXggZDA3NmVlOWQzNWViN2Y3Mzk4ZTBkNDA5ZTg4N2U2NTdmMjI2MDIwZi4uOWEyYzQ5
N2M5Mjk0ODAyZTFlNjdiMjRkMDdhZmIyODMxZTIyOGIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCkBAIC03MCw3ICs3MCw3IEBA
IHB1YmxpYzoKICAgICAgICAgbV9oYXNQcmVwYXJlZEZvckRlc3RydWN0aW9uID0gdHJ1ZTsKIAog
ICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHBhaW50RGVmaW5p
dGlvbkxvY2soKSk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcGFpbnREZWZpbml0aW9u
TG9jaygpIH07CiAgICAgICAgICAgICBwYWludERlZmluaXRpb25NYXAoKS5jbGVhcigpOwogICAg
ICAgICB9CiAgICAgICAgIFdvcmtsZXRHbG9iYWxTY29wZTo6cHJlcGFyZUZvckRlc3RydWN0aW9u
KCk7CkBAIC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiAgICAgflBhaW50V29ya2xldEdsb2JhbFNj
b3BlKCkKICAgICB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhwYWludERlZmluaXRpb25Mb2NrKCkpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsg
cGFpbnREZWZpbml0aW9uTG9jaygpIH07CiAgICAgICAgIEFTU0VSVChwYWludERlZmluaXRpb25N
YXAoKS5pc0VtcHR5KCkpOwogI2VuZGlmCiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>429386</attachid>
            <date>2021-05-21 19:07:54 -0700</date>
            <delta_ts>2021-05-21 20:04:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-226119-20210521190753.patch</filename>
            <type>text/plain</type>
            <size>102988</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc3OTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjBiZjE2NDA3ODFiZTQ2
YjI4OTZlMjhkZTUyMzU5ZGMxYjAwNDJlNi4uOGE2M2IwYWJhNWY3NDkxYjA1OTdjZjljZjNhMjNm
OTRiMjY3OTE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4NSBAQAorMjAyMS0wNS0yMSAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3AgdXNpbmcgaG9sZExv
Y2soKSBpbiBXZWJDb3JlIGFzIGl0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggQ2xhbmcgdGhyZWFk
IHNhZmV0eSBhbmFseXNpcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjI2MTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAg
ICAgICBTdG9wIHVzaW5nIGhvbGRMb2NrKCkgaW4gV2ViQ29yZSBhcyBpdCBpcyBub3QgY29tcGF0
aWJsZSB3aXRoIENsYW5nIHRocmVhZCBzYWZldHkgYW5hbHlzaXMKKyAgICAgICAgKFdURjo6Q2hl
Y2tlZExvY2spLiBVc2UgdGhlIExvY2tlciBjb25zdHJ1Y3RvciBkaXJlY3RseSBpbnN0ZWFkLgor
CisgICAgICAgIFRoaXMgaXMgYSBzdGVwIHRvd2FyZHMgZ2V0dGluZyByaWQgb2YgaG9sZExvY2so
KSBlbnRpcmVseS4KKworICAgICAgICAqIE1vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0aW9u
Q2FwdHVyZVNvdXJjZUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3BlZWNoUmVjb2duaXRp
b25DYXB0dXJlU291cmNlSW1wbDo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlv
QnVmZmVyOjpyZWxlYXNlTWVtb3J5KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyOjpt
ZW1vcnlDb3N0IGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVy
U291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6
OnNldEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnN0
YXJ0UGxheWluZyk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldE5vZGU6On5BdWRpb1dvcmtsZXRO
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvV29ya2xldE5vZGU6OmluaXRpYWxpemVBdWRp
b1BhcmFtZXRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Xb3JrbGV0Tm9kZTo6c2V0UHJv
Y2Vzc29yKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29udm9sdmVyTm9kZTo6c2V0QnVmZmVyKToKKyAgICAgICAgKiBN
b2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OnNldEZvcm1hdCk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok9zY2lsbGF0b3JOb2RlOjpzZXRQZXJpb2RpY1dhdmUpOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vUGFubmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXJO
b2RlOjpzZXRQYW5uaW5nTW9kZWwpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6c2V0
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6c2V0T3JpZW50YXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6c2V0RGlzdGFuY2VNb2RlbCk6CisgICAg
ICAgIChXZWJDb3JlOjpQYW5uZXJOb2RlOjpzZXRSZWZEaXN0YW5jZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYW5uZXJOb2RlOjpzZXRNYXhEaXN0YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpQYW5u
ZXJOb2RlOjpzZXRSb2xsb2ZmRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6
OnNldENvbmVPdXRlckdhaW4pOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6c2V0Q29u
ZU91dGVyQW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFubmVyTm9kZTo6c2V0Q29uZUlubmVy
QW5nbGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjp1bmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6cHJvY2Vzcyk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldhdmVTaGFwZXJQcm9jZXNzb3I6OnNldEN1cnZlKToKKyAgICAgICAgKFdlYkNv
cmU6OldhdmVTaGFwZXJQcm9jZXNzb3I6OnNldE92ZXJzYW1wbGUpOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2U6
OnBlcmZvcm1PcGVuQW5kVmVyaWZ5KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0Rh
dGFiYXNlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFnZXI6OmFk
ZFByb3Bvc2VkRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VNYW5hZ2VyOjpy
ZW1vdmVQcm9wb3NlZERhdGFiYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFiYXNlTWFuYWdl
cjo6ZnVsbFBhdGhGb3JEYXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZU1hbmFn
ZXI6OmRldGFpbHNGb3JOYW1lQW5kT3JpZ2luKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFi
YXNlL0RhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhYmFzZVRyYWNr
ZXI6OnNjaGVkdWxlTm90aWZ5RGF0YWJhc2VDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRh
dGFiYXNlVHJhY2tlcjo6bm90aWZ5RGF0YWJhc2VzQ2hhbmdlZCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9i
YWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTUGFp
bnRXb3JrbGV0R2xvYmFsU2NvcGU6OnZpc2l0QWRkaXRpb25hbENoaWxkcmVuKToKKyAgICAgICAg
KiBjc3MvQ1NTUGFpbnRJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhaW50
SW1hZ2VWYWx1ZTo6aW1hZ2UpOgorICAgICAgICAqIGNzcy9ET01DU1NQYWludFdvcmtsZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFpbnRXb3JrbGV0OjphZGRNb2R1bGUpOgorICAgICAgICAq
IGRvbS9FdmVudExpc3RlbmVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TGlzdGVu
ZXJNYXA6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJNYXA6OnJlcGxh
Y2UpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRMaXN0ZW5lck1hcDo6YWRkKToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50TGlzdGVuZXJNYXA6OnJlbW92ZSk6CisgICAgICAgIChXZWJDb3JlOjpF
dmVudExpc3RlbmVyTWFwOjpyZW1vdmVGaXJzdEV2ZW50TGlzdGVuZXJDcmVhdGVkRnJvbU1hcmt1
cCk6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2
ZW50VGFyZ2V0Ojp2aXNpdEpTRXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAqIGRvbS9Ob2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSk6CisgICAg
ICAgIChXZWJDb3JlOjpOb2RlOjpjbGVhckV2ZW50VGFyZ2V0RGF0YSk6CisgICAgICAgICogaHRt
bC9DYW52YXNCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0Jhc2U6Om1lbW9yeUNv
c3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzQmFzZTo6ZXh0ZXJuYWxNZW1vcnlD
b3N0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0Jhc2U6OnNldEltYWdlQnVmZmVy
IGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxDb2xsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlTmFtZWRFbGVtZW50Q2FjaGUgY29uc3Qp
OgorICAgICAgICAqIGh0bWwvSFRNTENvbGxlY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxDb2xsZWN0aW9uOjptZW1vcnlDb3N0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxD
b2xsZWN0aW9uOjpzZXROYW1lZEl0ZW1DYWNoZSBjb25zdCk6CisgICAgICAgICogaHRtbC9PZmZz
Y3JlZW5DYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T2Zmc2NyZWVuQ2FudmFzOjpwdXNo
QnVmZmVyVG9QbGFjZWhvbGRlcik6CisgICAgICAgIChXZWJDb3JlOjpPZmZzY3JlZW5DYW52YXM6
OmNvbW1pdFRvUGxhY2Vob2xkZXJDYW52YXMpOgorICAgICAgICAqIGh0bWwvY2FudmFzL09FU1Zl
cnRleEFycmF5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok9FU1ZlcnRleEFycmF5T2Jq
ZWN0OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyk6CisgICAgICAgIChXZWJDb3JlOjpPRVNWZXJ0ZXhB
cnJheU9iamVjdDo6YmluZFZlcnRleEFycmF5T0VTKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpkZWxldGVGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWJJUG9pbnRlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVRdWVyeSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiZWdpblF1ZXJ5KToKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmVuZFF1ZXJ5KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVNhbXBsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFNhbXBsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlU3luYyk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpkZWxldGVUcmFuc2Zvcm1GZWVkYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kVHJhbnNmb3JtRmVl
ZGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmVnaW5U
cmFuc2Zvcm1GZWVkYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpzZXRJbmRleGVkQnVmZmVyQmluZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTDJS
ZW5kZXJpbmdDb250ZXh0OjpkZWxldGVWZXJ0ZXhBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kVmVydGV4QXJyYXkpOgorICAgICAgICAoV2ViQ29y
ZTo6V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YWRkTWVtYmVyc1RvT3BhcXVlUm9vdHMpOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMQ29udGV4dEdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMQ29udGV4dEdyb3VwOjpkZXRhY2hBbmRSZW1vdmVBbGxPYmplY3RzKToKKyAgICAg
ICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMRnJhbWVidWZmZXI6OmluaXRpYWxpemVBdHRhY2htZW50cyk6CisgICAgICAgIChXZWJD
b3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpzZXRBdHRhY2htZW50SW50ZXJuYWwpOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMT2Jq
ZWN0OjpydW5EZXN0cnVjdG9yKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OmF0dGFjaFNoYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpiaW5kQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmJpbmRGcmFtZWJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpiaW5kUmVuZGVyYnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJpbmRUZXh0dXJlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRlbGV0ZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxldGVGcmFtZWJ1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkZWxldGVQcm9ncmFt
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRlbGV0ZVJl
bmRlcmJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
OjpkZWxldGVTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6ZGVsZXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpkZXRhY2hTaGFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6dXNlUHJvZ3JhbSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjp2ZXJ0ZXhBdHRyaWJQb2ludGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRldGFjaEFuZFJlbW92ZUFsbE9iamVjdHMpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6YWRkTWVtYmVyc1Rv
T3BhcXVlUm9vdHMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1JldmVyYkNvbnZvbHZlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZXZlcmJDb252b2x2ZXI6On5SZXZlcmJDb252b2x2ZXIp
OgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0YXJ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c3RvcCk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnNldElzUGxheWluZyk6CisgICAgICAgICog
cGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lcjo6aGFuZGxl
U2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXI6
OmNsZWFyQWRhcHRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJL
aXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgICh3ZWJraXRXZWJBdWRpb1Nv
dXJjZVNldERpc3BhdGNoVG9SZW5kZXJUaHJlYWRGdW5jdGlvbik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRpc3BsYXlSZWZyZXNoTW9uaXRvcjo6cmVxdWVzdFJlZnJlc2hDYWxsYmFjayk6CisgICAgICAg
IChXZWJDb3JlOjpEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlMaW5rRmlyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6RGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5RGlkUmVmcmVzaCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRDYWNoZTo6Y2FjaGVkRm9udFBsYXRmb3JtRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpGb250Q2FjaGU6OmZvbnRGb3JQbGF0Zm9ybURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udENhY2hlOjpwdXJnZUluYWN0aXZlRm9udERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dENhY2hlOjppbmFjdGl2ZUZvbnRDb3VudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL0F1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OmRlc3Ryb3lNaXhJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6Y3JlYXRlTWl4SWZO
ZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnBy
ZXBhcmVDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NvdXJjZVByb3ZpZGVyQVZG
T2JqQzo6dW5wcmVwYXJlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Tb3VyY2VQ
cm92aWRlckFWRk9iakM6OnByb2Nlc3NDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZP
YmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1B
VkZPYmpDOjpkZXN0cm95TGF5ZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJp
dmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6cm9vdExheWVyQm91bmRzRGlkQ2hhbmdlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jZy9Db2xvckNHLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNhY2hlZENHQ29sb3IpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpoYXNGaXJzdFZpZGVvU2FtcGxlUmVhY2hlZFNpbmsgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwdXNo
VGV4dHVyZVRvQ29tcG9zaXRvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnRyaWdnZXJSZXBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lcjo6Zmx1c2hDdXJyZW50QnVmZmVyKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cGFpbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjb3B5VmlkZW9UZXh0dXJlVG9QbGF0Zm9y
bVRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
Ojp3YWl0Rm9yQ0RNQXR0YWNobWVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL1dlYktpdFdlYlNvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgICh3ZWJLaXRXZWJT
cmNDb25zdHJ1Y3RlZCk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNHZXRQcm9wZXJ0eSk6CisgICAg
ICAgICh3ZWJLaXRXZWJTcmNTZXRDb250ZXh0KToKKyAgICAgICAgKHdlYktpdFdlYlNyY0NyZWF0
ZSk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNNYWtlUmVxdWVzdCk6CisgICAgICAgICh3ZWJLaXRX
ZWJTcmNTdG9wKToKKyAgICAgICAgKHdlYktpdFdlYlNyY0dldFNpemUpOgorICAgICAgICAod2Vi
S2l0V2ViU3JjSXNTZWVrYWJsZSk6CisgICAgICAgICh3ZWJLaXRXZWJTcmNEb1NlZWspOgorICAg
ICAgICAod2ViS2l0V2ViU3JjUXVlcnkpOgorICAgICAgICAod2ViS2l0V2ViU3JjVW5Mb2NrKToK
KyAgICAgICAgKHdlYktpdFdlYlNyY1VuTG9ja1N0b3ApOgorICAgICAgICAod2ViS2l0V2ViU3Jj
U2V0TWVkaWFQbGF5ZXIpOgorICAgICAgICAod2ViS2l0U3JjUGFzc2VkQ09SU0FjY2Vzc0NoZWNr
KToKKyAgICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpyZXNwb25zZVJlY2Vp
dmVkKToKKyAgICAgICAgKENhY2hlZFJlc291cmNlU3RyZWFtaW5nQ2xpZW50OjpkYXRhUmVjZWl2
ZWQpOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VTdHJlYW1pbmdDbGllbnQ6OmFjY2Vzc0NvbnRy
b2xDaGVja0ZhaWxlZCk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6
bG9hZEZhaWxlZCk6CisgICAgICAgIChDYWNoZWRSZXNvdXJjZVN0cmVhbWluZ0NsaWVudDo6bG9h
ZEZpbmlzaGVkKToKKyAgICAgICAgKHdlYktpdFNyY1dvdWxkVGFpbnRPcmlnaW4pOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlwdGlv
bkRlY3J5cHRvckdTdHJlYW1lci5jcHA6CisgICAgICAgIChpc0NETVByb3h5QXZhaWxhYmxlKToK
KyAgICAgICAgKGF0dGFjaENETVByb3h5KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvbXNlL01lZGlhU291cmNlVHJhY2tHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTb3VyY2VUcmFja0dTdHJlYW1lcjo6aXNSZWFkeUZvck1vcmVTYW1wbGVzKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlVHJhY2tHU3RyZWFtZXI6Om5vdGlmeVdoZW5S
ZWFkeUZvck1vcmVTYW1wbGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlVHJhY2tH
U3RyZWFtZXI6OmVucXVldWVPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VU
cmFja0dTdHJlYW1lcjo6Y2xlYXJRdWV1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL21zZS9XZWJLaXRNZWRpYVNvdXJjZUdTdHJlYW1lci5jcHA6CisgICAgICAgICh3
ZWJLaXRNZWRpYVNyY0FjdGl2YXRlTW9kZSk6CisgICAgICAgICh3ZWJLaXRNZWRpYVNyY1BhZExp
bmtlZCk6CisgICAgICAgICh3ZWJLaXRNZWRpYVNyY0xvb3ApOgorICAgICAgICAod2ViS2l0TWVk
aWFTcmNTdHJlYW1GbHVzaCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9y
TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6bnNDb2xvcik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvbmljb3NpYS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcDoKKyAgICAgICAgKE5p
Y29zaWE6Ok5pY29zaWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZSk6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkLm1tOgorICAgICAgICAoSGFuZGxlRGVsZWdh
dGVTb3VyY2UpOgorICAgICAgICAoV2ViVGhyZWFkQWRvcHRBbmRSZWxlYXNlKToKKyAgICAgICAg
KFdlYkNvcmVPYmpDRGVhbGxvY09uV2ViVGhyZWFkSW1wbCk6CisgICAgICAgIChXZWJDb3JlT2Jq
Q0RlYWxsb2NXaXRoV2ViVGhyZWFkTG9ja0ltcGwpOgorICAgICAgICAoSGFuZGxlV2ViVGhyZWFk
UmVsZWFzZVNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFk
UnVuLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbik6CisgICAgICAgICog
cGxhdGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjp2aWRlb1NhbXBsZUF2YWls
YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2s6OmF1ZGlv
U2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVJlY29yZGVyUHJpdmF0
ZU1vY2s6OmZldGNoRGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2Nv
YS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OnRha2VEYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OmFkZEF1ZGlvU2FtcGxlT2JzZXJ2ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNvdXJjZTo6cmVtb3ZlQXVkaW9TYW1wbGVPYnNlcnZl
cik6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU1lZGlhU291cmNlOjphZGRWaWRlb1NhbXBs
ZU9ic2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92
ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVNZWRpYVNv
dXJjZTo6dmlkZW9TYW1wbGVBdmFpbGFibGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVN
ZWRpYVNvdXJjZTo6YXVkaW9TYW1wbGVzQXZhaWxhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9t
ZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjp+UmVhbHRpbWVPdXRnb2luZ0F1ZGlv
U291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6
QWRkU2luayk6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6
OlJlbW92ZVNpbmspOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291
cmNlOjpzZW5kQXVkaW9GcmFtZXMpOgorICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL1Jl
YWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZWFsdGlt
ZU91dGdvaW5nVmlkZW9Tb3VyY2U6On5SZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpBZGRPclVwZGF0ZVNp
bmspOgorICAgICAgICAoV2ViQ29yZTo6UmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlOjpSZW1v
dmVTaW5rKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6
c2VuZEZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQmFzZUF1ZGlv
U2hhcmVkVW5pdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQXVkaW9TaGFyZWRVbml0Ojph
ZGRDbGllbnQpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvU2hhcmVkVW5pdDo6cmVtb3Zl
Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VBdWRpb1NoYXJlZFVuaXQ6OmZvckVhY2hD
bGllbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QmFzZUF1ZGlvU2hhcmVkVW5pdDo6Y2xl
YXJDbGllbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VBdWRpb1NoYXJlZFVuaXQ6OmF1ZGlv
U2FtcGxlc0F2YWlsYWJsZSk6CisgICAgICAgICogcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dl
YkF1ZGlvU291cmNlUHJvdmlkZXJDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlv
U291cmNlUHJvdmlkZXJDb2NvYTo6cHJlcGFyZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bG9hZGVyUnVuTG9v
cCk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0OjpjYW5jZWwpOgorICAgICAgICAoV2ViQ29yZTo6
Q3VybFJlcXVlc3Q6OmlzQ2FuY2VsbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0
Ojppc0NvbXBsZXRlZE9yQ2FuY2VsbGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxSZXF1ZXN0
OjpkaWRDb21wbGV0ZVRyYW5zZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwv
Q3VybFJlcXVlc3RTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFJlcXVlc3RT
Y2hlZHVsZXI6OmNhbGxPbldvcmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDdXJsUmVx
dWVzdFNjaGVkdWxlcjo6c3RhcnRUaHJlYWRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpD
dXJsUmVxdWVzdFNjaGVkdWxlcjo6c3RvcFRocmVhZElmTm9Nb3JlSm9iUnVubmluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6c3RvcFRocmVhZCk6CisgICAgICAg
IChXZWJDb3JlOjpDdXJsUmVxdWVzdFNjaGVkdWxlcjo6ZXhlY3V0ZVRhc2tzKToKKyAgICAgICAg
KFdlYkNvcmU6OkN1cmxSZXF1ZXN0U2NoZWR1bGVyOjp3b3JrZXJUaHJlYWQpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OnN0YXJ0VHJhbnNmZXIpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VybFJlcXVlc3RTY2hlZHVsZXI6OmZpbmFsaXplVHJhbnNmZXIpOgorICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtU2NoZWR1bGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkN1cmxTdHJlYW1TY2hlZHVsZXI6OmNhbGxPbldvcmtlclRocmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXJsU3RyZWFtU2NoZWR1bGVyOjpzdGFydFRocmVhZElmTmVlZGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OkN1cmxTdHJlYW1TY2hlZHVsZXI6OnN0b3BUaHJlYWRJZk5v
TW9yZUpvYlJ1bm5pbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q3VybFN0cmVhbVNjaGVkdWxlcjo6
ZXhlY3V0ZVRhc2tzKToKKyAgICAgICAgKiBzdHlsZS9TdHlsZUJ1aWxkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OkJ1aWxkZXI6OmFwcGx5UHJvcGVydHkpOgorICAgICAgICAqIHdv
cmtlcnMvV29ya2VyT3JXb3JrbGV0VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtl
ck9yV29ya2xldFRocmVhZDo6d29ya2VyT3JXb3JrbGV0VGhyZWFkKToKKyAgICAgICAgKFdlYkNv
cmU6Oldvcmtlck9yV29ya2xldFRocmVhZDo6c3RhcnQpOgorICAgICAgICAqIHdvcmtsZXRzL1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhaW50V29ya2xl
dEdsb2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KToKKyAgICAgICAgKiB3b3JrbGV0cy9QYWludFdv
cmtsZXRHbG9iYWxTY29wZS5oOgorCiAyMDIxLTA1LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgVXNlIENoZWNrZWRDb25kaXRpb24gaW4gbW9yZSBwbGFjZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFJlY29nbml0
aW9uQ2FwdHVyZVNvdXJjZUltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5jcHAKaW5kZXggNjFiMjZmMWY5NWJh
MDAzMzFiMzkwYzEwZjRmMDlhMjAwOTlkZDQzNS4uOTRjMWI1NTdlY2EzOTU5YWQ4MTMyOGRkZDNm
NzNmODVkZTVkYjVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gv
U3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoUmVjb2duaXRpb25DYXB0dXJlU291cmNlSW1wbC5jcHAK
QEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIFNwZWVjaFJlY29nbml0aW9uQ2FwdHVyZVNvdXJjZUlt
cGw6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBNZWRpYVRpbWUmCiAKICAgICAgICAgYXV0
byBkYXRhID0gV2ViQXVkaW9CdWZmZXJMaXN0IHsgYXVkaW9EZXNjcmlwdGlvbiwgc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KHNhbXBsZUNvdW50KSB9OwogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG1fZGF0YVNvdXJjZUxvY2spOworICAgICAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fZGF0YVNvdXJjZUxvY2sgfTsKICAgICAgICAgICAgIG1fZGF0YVNvdXJjZS0+
cHVsbFNhbXBsZXMoKmRhdGEubGlzdCgpLCBzYW1wbGVDb3VudCwgdGltZS50aW1lVmFsdWUoKSwg
MCwgQXVkaW9TYW1wbGVEYXRhU291cmNlOjpDb3B5KTsKICAgICAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXIuY3BwCmluZGV4IDE1NzlmODE1
NTMyODcwMDFmMDAxNzRlOTJiYWM2NDJhZDc2ZGQyM2YuLmNiN2U4NGQ0NTM4M2U5OGY4MmU2ODI0
M2Y1MmIyYTc1NjhmYmZlODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9CdWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9CdWZmZXIuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBBdWRpb0J1ZmZlcjo6
aW52YWxpZGF0ZSgpCiAKIHZvaWQgQXVkaW9CdWZmZXI6OnJlbGVhc2VNZW1vcnkoKQogewotICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9jaGFubmVsc0xvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX2NoYW5uZWxzTG9jayB9OwogICAgIG1fY2hhbm5lbHMuY2xlYXIoKTsKICAgICBtX2No
YW5uZWxXcmFwcGVycy5jbGVhcigpOwogfQpAQCAtMjUyLDcgKzI1Miw3IEBAIHNpemVfdCBBdWRp
b0J1ZmZlcjo6bWVtb3J5Q29zdCgpIGNvbnN0CiAgICAgLy8gZnJvbSBiZWluZyBjaGFuZ2VkIHdo
aWxlIHdlIGl0ZXJhdGUgaXQsIGJ1dCBjYWxsaW5nIGNoYW5uZWwtPmJ5dGVMZW5ndGgoKSBpcyBz
YWZlCiAgICAgLy8gYmVjYXVzZSBpdCBkb2Vzbid0IGludm9sdmUgY2hhc2luZyBhbnkgcG9pbnRl
cnMgdGhhdCBjYW4gYmUgbnVsbGlmaWVkIHdoaWxlIHRoZQogICAgIC8vIEF1ZGlvQnVmZmVyIGlz
IGFsaXZlLgotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9jaGFubmVsc0xvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBtX2NoYW5uZWxzTG9jayB9OwogICAgIHNpemVfdCBjb3N0ID0gMDsK
ICAgICBmb3IgKGF1dG8mIGNoYW5uZWwgOiBtX2NoYW5uZWxzKQogICAgICAgICBjb3N0ICs9IGNo
YW5uZWwtPmJ5dGVMZW5ndGgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAppbmRleCA4YjQzZGQyM2QzMTg1
Mzg1MWI4Nzc3YmZiZjliOThlMzJiZmFiMjBlLi42MzNjNTA2YTAwNzY3ZmZiODg1OGNiMDYwZjUx
ZDc2OTk2YmExNzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCkBAIC00MTksNyArNDE5LDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRCdWZmZXIoUmVmUHRyPEF1
ZGlvQnVmZmVyPiYmIGJ1ZmZlcikKICAgICBMb2NrZXIgY29udGV4dExvY2tlciB7IGNvbnRleHQo
KS5ncmFwaExvY2soKSB9OwogICAgIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJv
Y2VzcygpLgotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsKICAgICAKICAgICBpZiAoYnVmZmVyKSB7
CiAgICAgICAgIG1fd2FzQnVmZmVyU2V0ID0gdHJ1ZTsKQEAgLTQ3Nyw3ICs0NzcsNyBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnN0YXJ0UGxheWluZyhkb3VibGUg
d2hlbiwgZG91YmxlIGdyYWluTwogICAgIGNvbnRleHQoKS5zb3VyY2VOb2RlV2lsbEJlZ2luUGxh
eWJhY2soKnRoaXMpOwogCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCku
Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCiAgICAgbV9pc0dyYWluID0gdHJ1ZTsKICAgICBt
X2dyYWluT2Zmc2V0ID0gZ3JhaW5PZmZzZXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvV29ya2xldE5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb1dvcmtsZXROb2RlLmNwcAppbmRleCAzOTZiMjgyNWQ2NmRmN2M4
M2QwNTZlYzU3ZjBjOWIyM2JiYWY1NjM5Li4zNDk2MjZmYTRkNDNlZDI1M2ZjZjkwNzMyYjY0MmFm
MmJjNWFhNDYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvV29ya2xldE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Xb3JrbGV0Tm9kZS5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCBBdWRpb1dvcmtsZXROb2Rl
Ojp+QXVkaW9Xb3JrbGV0Tm9kZSgpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAg
ICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9jayk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb2Nlc3NMb2NrIH07CiAgICAgICAgIGlmIChtX3Byb2Nl
c3NvcikgewogICAgICAgICAgICAgaWYgKGF1dG8qIHdvcmtsZXRQcm94eSA9IGNvbnRleHQoKS5h
dWRpb1dvcmtsZXQoKS5wcm94eSgpKQogICAgICAgICAgICAgICAgIHdvcmtsZXRQcm94eS0+cG9z
dFRhc2tGb3JNb2RlVG9Xb3JrbGV0R2xvYmFsU2NvcGUoW21fcHJvY2Vzc29yID0gV1RGTW92ZSht
X3Byb2Nlc3NvcildKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7IH0sIFdvcmtlclJ1bkxvb3A6
OmRlZmF1bHRNb2RlKCkpOwpAQCAtMTU4LDcgKzE1OCw3IEBAIHZvaWQgQXVkaW9Xb3JrbGV0Tm9k
ZTo6aW5pdGlhbGl6ZUF1ZGlvUGFyYW1ldGVycyhjb25zdCBWZWN0b3I8QXVkaW9QYXJhbURlc2Ny
aXB0CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBBU1NFUlQobV9wYXJhbWV0ZXJz
LT5tYXAoKS5pc0VtcHR5KCkpOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nl
c3NMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCiAgICAgZm9y
IChhdXRvJiBkZXNjcmlwdG9yIDogZGVzY3JpcHRvcnMpIHsKICAgICAgICAgYXV0byBwYXJhbWV0
ZXIgPSBBdWRpb1BhcmFtOjpjcmVhdGUoY29udGV4dCgpLCBkZXNjcmlwdG9yLm5hbWUsIGRlc2Ny
aXB0b3IuZGVmYXVsdFZhbHVlLCBkZXNjcmlwdG9yLm1pblZhbHVlLCBkZXNjcmlwdG9yLm1heFZh
bHVlLCBkZXNjcmlwdG9yLmF1dG9tYXRpb25SYXRlKTsKQEAgLTE4MCw3ICsxODAsNyBAQCB2b2lk
IEF1ZGlvV29ya2xldE5vZGU6OnNldFByb2Nlc3NvcihSZWZQdHI8QXVkaW9Xb3JrbGV0UHJvY2Vz
c29yPiYmIHByb2Nlc3NvcikKIHsKICAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBp
ZiAocHJvY2Vzc29yKSB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNz
TG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb2Nlc3NMb2NrIH07CiAgICAgICAg
IG1fcHJvY2Vzc29yID0gV1RGTW92ZShwcm9jZXNzb3IpOwogICAgICAgICBtX3dvcmtsZXRUaHJl
YWQgPSAmVGhyZWFkOjpjdXJyZW50KCk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAppbmRleCAyYjhhMTlkMTM4ZTNh
MjFkMWY0YzAwNmIxOGJmN2Y5NThmZmI5M2MxLi41OTcxZmQwMDIyNWJjYWNjYzBlNTM3M2U2NzAy
ZGI0Y2QyOWU4NTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0NvbnZvbHZlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
Q29udm9sdmVyTm9kZS5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBD
b252b2x2ZXJOb2RlOjpzZXRCdWZmZXIoUmVmUHRyPEF1ZGlvQnVmZmVyPiYmIGJ1ZmZlcikKICAg
ICAgICAgTG9ja2VyIGNvbnRleHRMb2NrZXIgeyBjb250ZXh0KCkuZ3JhcGhMb2NrKCkgfTsKIAog
ICAgICAgICAvLyBTeW5jaHJvbml6ZSB3aXRoIHByb2Nlc3MoKS4KLSAgICAgICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
cHJvY2Vzc0xvY2sgfTsKIAogICAgICAgICBtX3JldmVyYiA9IFdURk1vdmUocmV2ZXJiKTsKICAg
ICAgICAgbV9idWZmZXIgPSBXVEZNb3ZlKGJ1ZmZlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZS5jcHAKaW5kZXggYjRiZTU3NTcxNWY3MGIwOTJlMzJmMjY4OThmMDE0YjY5ZTg2OWE3Mi4uYTFh
NDZhNjdlZWEyM2M1NTkyMTNhNzMwODg4MmNlNTA2NzRiYjI2NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9T
b3VyY2VOb2RlLmNwcApAQCAtOTgsNyArOTgsNyBAQCB2b2lkIE1lZGlhRWxlbWVudEF1ZGlvU291
cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzb3VyYwog
ICAgICAgICBtX3NvdXJjZVNhbXBsZVJhdGUgPSBzb3VyY2VTYW1wbGVSYXRlOwogCiAgICAgICAg
IC8vIFN5bmNocm9uaXplIHdpdGggcHJvY2VzcygpLgotICAgICAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fcHJvY2Vzc0xvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNz
TG9jayB9OwogCiAgICAgICAgIGlmIChzb3VyY2VTYW1wbGVSYXRlICE9IHNhbXBsZVJhdGUoKSkg
ewogICAgICAgICAgICAgZG91YmxlIHNjYWxlRmFjdG9yID0gc291cmNlU2FtcGxlUmF0ZSAvIHNh
bXBsZVJhdGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKaW5kZXggZjY4ZTlmNDc3OGMz
NzkxNTFkZTQ3OTg4ZDU2MWM4ZDNlYWJkNjhjMS4uYzU2NjJkNjA5YWY2MGE2YWViYTZkYTcyMWEz
NWQxZDU4OGFkNTE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZS5jcHAKQEAgLTEwMiw3ICsx
MDIsNyBAQCB2b2lkIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQoc2l6ZV90
IG51bWJlck9mQ2hhbm5lbHMsIGZsb2F0IHNvdXJjZQogICAgIH0KIAogICAgIC8vIFN5bmNocm9u
aXplIHdpdGggcHJvY2VzcygpLgotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNz
TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsKIAogICAgIG1fc291
cmNlTnVtYmVyT2ZDaGFubmVscyA9IG51bWJlck9mQ2hhbm5lbHM7CiAgICAgbV9zb3VyY2VTYW1w
bGVSYXRlID0gc291cmNlU2FtcGxlUmF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5jcHAKaW5kZXggMjNmMmYzNzVmM2E5MTMwOWM3MDRi
MWY4ODk0NTM1NTY4MGYyNWY4Ny4uYzZmNjlkMjMwNWMyMTU5OTY3MTM5YTg0NzlmYWU1ZDMxODIy
MjU4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxh
dG9yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxh
dG9yTm9kZS5jcHAKQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIE9zY2lsbGF0b3JOb2RlOjpzZXRQ
ZXJpb2RpY1dhdmUoUGVyaW9kaWNXYXZlJiBwZXJpb2RpY1dhdmUpCiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKICAgICAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3Mo
KS4KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX3Byb2Nlc3NMb2NrIH07CiAgICAgbV9wZXJpb2RpY1dhdmUgPSAmcGVyaW9k
aWNXYXZlOwogICAgIG1fdHlwZSA9IE9zY2lsbGF0b3JUeXBlOjpDdXN0b207CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAppbmRleCA5NzE4OWZm
MDViM2MzNDEwYTRmOTg1Y2NlMzJiOTdjYTVhOGQwZDU0Li43Y2NmMjRkNjcwYjdmNmUxZWYxYTM3
NzlmOWI3MDQ4NjgyZmZjZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL1Bhbm5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vUGFubmVyTm9kZS5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCB2b2lkIFBhbm5lck5vZGU6OnNl
dFBhbm5pbmdNb2RlbChQYW5uaW5nTW9kZWxUeXBlIG1vZGVsKQogCiAgICAgaWYgKCFtX3Bhbm5l
ci5nZXQoKSB8fCBtb2RlbCAhPSBtX3Bhbm5pbmdNb2RlbCkgewogICAgICAgICAvLyBUaGlzIHN5
bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX3Byb2Nlc3NMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvY2Vzc0xvY2sg
fTsKIAogICAgICAgICBtX3Bhbm5lciA9IFBhbm5lcjo6Y3JlYXRlKG1vZGVsLCBzYW1wbGVSYXRl
KCksIG1faHJ0ZkRhdGFiYXNlTG9hZGVyLmdldCgpKTsKICAgICAgICAgbV9wYW5uaW5nTW9kZWwg
PSBtb2RlbDsKQEAgLTI5Miw3ICsyOTIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBQYW5uZXJOb2Rl
OjpzZXRQb3NpdGlvbihmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCB6KQogICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7CiAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4K
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyBtX3Byb2Nlc3NMb2NrIH07CiAKICAgICBhdXRvIG5vdyA9IGNvbnRleHQoKS5jdXJy
ZW50VGltZSgpOwogCkBAIC0zMTksNyArMzE5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGFubmVy
Tm9kZTo6c2V0T3JpZW50YXRpb24oZmxvYXQgeCwgZmxvYXQgeSwgZmxvYXQgeikKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9j
ZXNzKCkuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCiAgICAgYXV0byBub3cgPSBjb250ZXh0
KCkuY3VycmVudFRpbWUoKTsKIApAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgUGFubmVyTm9kZTo6
c2V0RGlzdGFuY2VNb2RlbChEaXN0YW5jZU1vZGVsVHlwZSBtb2RlbCkKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwogCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0aCBwcm9jZXNzKCku
Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCiAgICAgbV9kaXN0YW5jZUVmZmVjdC5zZXRNb2Rl
bChtb2RlbCwgdHJ1ZSk7CiB9CkBAIC0zNTksNyArMzU5LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
UGFubmVyTm9kZTo6c2V0UmVmRGlzdGFuY2UoZG91YmxlIHJlZkRpc3RhbmNlKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgUmFuZ2VFcnJvciwgInJlZkRpc3RhbmNlIGNhbm5vdCBiZSBzZXQg
dG8gYSBuZWdhdGl2ZSB2YWx1ZSJfcyB9OwogICAgIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVz
IHdpdGggcHJvY2VzcygpLgotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsKIAogICAgIG1fZGlzdGFu
Y2VFZmZlY3Quc2V0UmVmRGlzdGFuY2UocmVmRGlzdGFuY2UpOwogICAgIHJldHVybiB7IH07CkBA
IC0zNzMsNyArMzczLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gUGFubmVyTm9kZTo6c2V0TWF4RGlz
dGFuY2UoZG91YmxlIG1heERpc3RhbmNlKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgUmFu
Z2VFcnJvciwgIm1heERpc3RhbmNlIGNhbm5vdCBiZSBzZXQgdG8gYSBub24tcG9zaXRpdmUgdmFs
dWUiX3MgfTsKICAgICAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4K
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOworICAgIExvY2tlciBs
b2NrZXIgeyBtX3Byb2Nlc3NMb2NrIH07CiAKICAgICBtX2Rpc3RhbmNlRWZmZWN0LnNldE1heERp
c3RhbmNlKG1heERpc3RhbmNlKTsKICAgICByZXR1cm4geyB9OwpAQCAtMzg3LDcgKzM4Nyw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IFBhbm5lck5vZGU6OnNldFJvbGxvZmZGYWN0b3IoZG91YmxlIHJv
bGxvZmZGYWN0b3IpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBSYW5nZUVycm9yLCAicm9s
bG9mZkZhY3RvciBjYW5ub3QgYmUgc2V0IHRvIGEgbmVnYXRpdmUgdmFsdWUiX3MgfTsKICAgICAK
ICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3MoKS4KLSAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb2Nl
c3NMb2NrIH07CiAKICAgICBtX2Rpc3RhbmNlRWZmZWN0LnNldFJvbGxvZmZGYWN0b3Iocm9sbG9m
ZkZhY3Rvcik7CiAgICAgcmV0dXJuIHsgfTsKQEAgLTQwMSw3ICs0MDEsNyBAQCBFeGNlcHRpb25P
cjx2b2lkPiBQYW5uZXJOb2RlOjpzZXRDb25lT3V0ZXJHYWluKGRvdWJsZSBnYWluKQogICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJjb25lT3V0ZXJHYWluIG11
c3QgYmUgaW4gWzAsIDFdIl9zIH07CiAgICAgCiAgICAgLy8gVGhpcyBzeW5jaHJvbml6ZXMgd2l0
aCBwcm9jZXNzKCkuCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb2Nlc3NMb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9wcm9jZXNzTG9jayB9OwogCiAgICAgbV9jb25lRWZmZWN0
LnNldE91dGVyR2FpbihnYWluKTsKICAgICByZXR1cm4geyB9OwpAQCAtNDEyLDcgKzQxMiw3IEBA
IHZvaWQgUGFubmVyTm9kZTo6c2V0Q29uZU91dGVyQW5nbGUoZG91YmxlIGFuZ2xlKQogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHBy
b2Nlc3MoKS4KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBtX3Byb2Nlc3NMb2NrIH07CiAKICAgICBtX2NvbmVFZmZlY3Quc2V0
T3V0ZXJBbmdsZShhbmdsZSk7CiB9CkBAIC00MjIsNyArNDIyLDcgQEAgdm9pZCBQYW5uZXJOb2Rl
OjpzZXRDb25lSW5uZXJBbmdsZShkb3VibGUgYW5nbGUpCiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKIAogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdpdGggcHJvY2VzcygpLgotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fcHJvY2Vzc0xvY2sgfTsKIAogICAgIG1fY29uZUVmZmVjdC5zZXRJbm5lckFuZ2xlKGFuZ2xl
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0
UHJvY2Vzc29yTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Njcmlw
dFByb2Nlc3Nvck5vZGUuY3BwCmluZGV4IDI1NjFmZmE4NTUxNmEzOTg2MWRlMGYyOGQwYzdmNmY5
MGEyYzAxYWQuLjIyZTk3ZThhYTI1ZWFjMmY3MDhlMjNmNzZhODliMjhkOTMwMzAxMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNz
b3JOb2RlLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgU2NyaXB0UHJvY2Vzc29yTm9kZTo6
dW5pbml0aWFsaXplKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGJ1ZmZlckNvdW50OyArK2kpIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX2J1ZmZlckxvY2tzW2ldKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYnVmZmVyTG9j
a3NbaV0gfTsKICAgICAgICAgbV9pbnB1dEJ1ZmZlcnNbaV0gPSBudWxscHRyOwogICAgICAgICBt
X291dHB1dEJ1ZmZlcnNbaV0gPSBudWxscHRyOwogICAgIH0KQEAgLTIyMiw3ICsyMjIsNyBAQCB2
b2lkIFNjcmlwdFByb2Nlc3Nvck5vZGU6OnByb2Nlc3Moc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbdGhpcywgYnVmZmVySW5kZXgsIHByb3RlY3RvciA9IG1ha2VSZWYoKnRoaXMpXSB7
Ci0gICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2J1ZmZlckxvY2tzW2J1
ZmZlckluZGV4XSk7CisgICAgICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fYnVmZmVyTG9j
a3NbYnVmZmVySW5kZXhdIH07CiAgICAgICAgICAgICAgICAgZmlyZVByb2Nlc3NFdmVudChidWZm
ZXJJbmRleCk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlclByb2Nlc3Nvci5jcHAKaW5kZXgg
ZDI0ZGUyZWI0ZDBjZTFhZTk4NTAwYzYxMTdjZjhhZjRhYzllMWRkNi4uMTIwODg1MDgwODkwMzYx
ZDRjNDBhYTZhY2FiOTU0YmE3MDBiNTcyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyUHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL1dhdmVTaGFwZXJQcm9jZXNzb3IuY3BwCkBAIC01MSw3ICs1MSw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0RTUEtlcm5lbD4gV2F2ZVNoYXBlclByb2Nlc3Nvcjo6
Y3JlYXRlS2VybmVsKCkKIHZvaWQgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6c2V0Q3VydmUoRmxvYXQz
MkFycmF5KiBjdXJ2ZSkKIHsKICAgICAvLyBUaGlzIHN5bmNocm9uaXplcyB3aXRoIHByb2Nlc3Mo
KS4KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvY2Vzc0xvY2spOworICAgIExvY2tl
ciBsb2NrZXIgeyBtX3Byb2Nlc3NMb2NrIH07CiAKICAgICBtX2N1cnZlID0gY3VydmU7CiB9CkBA
IC01OSw3ICs1OSw3IEBAIHZvaWQgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6c2V0Q3VydmUoRmxvYXQz
MkFycmF5KiBjdXJ2ZSkKIHZvaWQgV2F2ZVNoYXBlclByb2Nlc3Nvcjo6c2V0T3ZlcnNhbXBsZShP
dmVyU2FtcGxlVHlwZSBvdmVyc2FtcGxlKQogewogICAgIC8vIFRoaXMgc3luY2hyb25pemVzIHdp
dGggcHJvY2VzcygpLgotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9jZXNzTG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvY2Vzc0xvY2sgfTsKIAogICAgIG1fb3ZlcnNhbXBs
ZSA9IG92ZXJzYW1wbGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
ZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5jcHAKaW5kZXggYzFkYjhlZmEwYjAwZjNlMzIxYTkwZTI5NjQ5ZDdlNjMzNDE4
NzExNi4uM2E0Y2Q4NWU1ZWMxMDBjODcxMzI4NzYzODQ0OTk1NTI5MGNkYzNkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTMzMyw3
ICszMzMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBEYXRhYmFzZTo6cGVyZm9ybU9wZW5BbmRWZXJp
ZnkoYm9vbCBzaG91bGRTZXRWZXJzaW9uSW5OZXdEYXRhYgogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgewogICAgICAgICAvLyBNYWtlIHN1cmUgd2Ugd2FpdCB0aWxsIHRoZSBiYWNrZ3Jv
dW5kIHJlbW92YWwgb2YgdGhlIGVtcHR5IGRhdGFiYXNlIGZpbGVzIGZpbmlzaGVkIGJlZm9yZSB0
cnlpbmcgdG8gb3BlbiBhbnkgZGF0YWJhc2UuCi0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2soRGF0YWJhc2VUcmFja2VyOjpvcGVuRGF0YWJhc2VNdXRleCgpKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IERhdGFiYXNlVHJhY2tlcjo6b3BlbkRhdGFiYXNlTXV0ZXgoKSB9OwogICAgIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNl
L0RhdGFiYXNlTWFuYWdlci5jcHAKaW5kZXggNTFhZDhhOGYzNGIyYTc1MTE2M2QwZDhiZTI0Yjhk
ZmM4NGNkMTYwYi4uOTUwYjQ1ZmM3MWFhYjE2ZjE0ZTE1ZTJhMGFmZjExZjEyODUyMmE4NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZU1hbmFn
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VN
YW5hZ2VyLmNwcApAQCAtMTgxLDEzICsxODEsMTMgQEAgRXhjZXB0aW9uT3I8UmVmPERhdGFiYXNl
Pj4gRGF0YWJhc2VNYW5hZ2VyOjp0cnlUb09wZW5EYXRhYmFzZUJhY2tlbmQoRG9jdW1lbnQmIGQK
IAogdm9pZCBEYXRhYmFzZU1hbmFnZXI6OmFkZFByb3Bvc2VkRGF0YWJhc2UoUHJvcG9zZWREYXRh
YmFzZSYgZGF0YWJhc2UpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3Byb3Bvc2Vk
RGF0YWJhc2VzTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb3Bvc2VkRGF0YWJhc2Vz
TXV0ZXggfTsKICAgICBtX3Byb3Bvc2VkRGF0YWJhc2VzLmFkZCgmZGF0YWJhc2UpOwogfQogCiB2
b2lkIERhdGFiYXNlTWFuYWdlcjo6cmVtb3ZlUHJvcG9zZWREYXRhYmFzZShQcm9wb3NlZERhdGFi
YXNlJiBkYXRhYmFzZSkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvcG9zZWRE
YXRhYmFzZXNNdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRhYmFzZXNN
dXRleCB9OwogICAgIG1fcHJvcG9zZWREYXRhYmFzZXMucmVtb3ZlKCZkYXRhYmFzZSk7CiB9CiAK
QEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIERhdGFiYXNlTWFuYWdlcjo6c3RvcERhdGFiYXNlcyhE
b2N1bWVudCYgZG9jdW1lbnQsIERhdGFiYXNlVGFza1N5bmNocm9uaXplcgogU3RyaW5nIERhdGFi
YXNlTWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBj
b25zdCBTdHJpbmcmIG5hbWUsIGJvb2wgY3JlYXRlSWZEb2VzTm90RXhpc3QpCiB7CiAgICAgewot
ICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcHJvcG9zZWREYXRhYmFzZXNNdXRleCk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3Byb3Bvc2VkRGF0YWJhc2VzTXV0ZXggfTsKICAg
ICAgICAgZm9yIChhdXRvKiBwcm9wb3NlZERhdGFiYXNlIDogbV9wcm9wb3NlZERhdGFiYXNlcykg
ewogICAgICAgICAgICAgaWYgKHByb3Bvc2VkRGF0YWJhc2UtPmRldGFpbHMoKS5uYW1lKCkgPT0g
bmFtZSAmJiBwcm9wb3NlZERhdGFiYXNlLT5vcmlnaW4oKS5lcXVhbCgmb3JpZ2luKSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0yNTMsNyArMjUzLDcgQEAgU3RyaW5nIERh
dGFiYXNlTWFuYWdlcjo6ZnVsbFBhdGhGb3JEYXRhYmFzZShTZWN1cml0eU9yaWdpbiYgb3JpZ2lu
LCBjb25zdCBTdHJpbmcKIERhdGFiYXNlRGV0YWlscyBEYXRhYmFzZU1hbmFnZXI6OmRldGFpbHNG
b3JOYW1lQW5kT3JpZ2luKGNvbnN0IFN0cmluZyYgbmFtZSwgU2VjdXJpdHlPcmlnaW4mIG9yaWdp
bikKIHsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9wcm9wb3NlZERh
dGFiYXNlc011dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fcHJvcG9zZWREYXRhYmFz
ZXNNdXRleCB9OwogICAgICAgICBmb3IgKGF1dG8qIHByb3Bvc2VkRGF0YWJhc2UgOiBtX3Byb3Bv
c2VkRGF0YWJhc2VzKSB7CiAgICAgICAgICAgICBpZiAocHJvcG9zZWREYXRhYmFzZS0+ZGV0YWls
cygpLm5hbWUoKSA9PSBuYW1lICYmIHByb3Bvc2VkRGF0YWJhc2UtPm9yaWdpbigpLmVxdWFsKCZv
cmlnaW4pKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCZwcm9wb3NlZERhdGFiYXNlLT5kZXRh
aWxzKCkudGhyZWFkKCkgPT0gJlRocmVhZDo6Y3VycmVudCgpIHx8IGlzTWFpblRocmVhZCgpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VU
cmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2VU
cmFja2VyLmNwcAppbmRleCAyOTEwODNiMWYzOTcyZDI2OTdiOTViZjVkNGRlNzFmYTk5MTEyMDNh
Li5hMDM4MjM0Yjc1NTZiY2I1ZWJlMzcxYjNjNTgyYTY4NTU4YWJiNTk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlVHJhY2tlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZVRyYWNrZXIuY3Bw
CkBAIC0xMzIxLDcgKzEzMjEsNyBAQCBzdGF0aWMgTm90aWZpY2F0aW9uUXVldWUmIG5vdGlmaWNh
dGlvblF1ZXVlKCkKIAogdm9pZCBEYXRhYmFzZVRyYWNrZXI6OnNjaGVkdWxlTm90aWZ5RGF0YWJh
c2VDaGFuZ2VkKGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luLCBjb25zdCBTdHJpbmcm
IG5hbWUpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhub3RpZmljYXRpb25Mb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbm90aWZpY2F0aW9uTG9jayB9OwogICAgIG5vdGlmaWNhdGlv
blF1ZXVlKCkuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKG9yaWdpbi5pc29sYXRlZENvcHkoKSwgbmFt
ZS5pc29sYXRlZENvcHkoKSkpOwogICAgIHNjaGVkdWxlRm9yTm90aWZpY2F0aW9uKCk7CiB9CkBA
IC0xMzQ4LDcgKzEzNDgsNyBAQCB2b2lkIERhdGFiYXNlVHJhY2tlcjo6bm90aWZ5RGF0YWJhc2Vz
Q2hhbmdlZCgpCiAKICAgICBOb3RpZmljYXRpb25RdWV1ZSBub3RpZmljYXRpb25zOwogICAgIHsK
LSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhub3RpZmljYXRpb25Mb2NrKTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG5vdGlmaWNhdGlvbkxvY2sgfTsKICAgICAgICAgbm90aWZpY2F0
aW9ucy5zd2FwKG5vdGlmaWNhdGlvblF1ZXVlKCkpOwogICAgICAgICBub3RpZmljYXRpb25TY2hl
ZHVsZWQgPSBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTUdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdC5jcHAKaW5kZXggYzMwZmI4OTRkYWE5ZjMxMmNlZjEzOTU5NDVjYjQ3
MWNkY2YwY2E3MS4uZWYyZWFjZTNkZWVhODg3OWU0Nzk4NDRjYzEwMTg4YzQ2YTVmMDdiNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcApA
QCAtMjU2LDcgKzI1Niw3IEBAIHZvaWQgSlNET01HbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5J
bXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKICAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogCiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKHRoaXNPYmplY3QtPm1fZ2NMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7
IHRoaXNPYmplY3QtPm1fZ2NMb2NrIH07CiAKICAgICAgICAgZm9yIChhdXRvJiBzdHJ1Y3R1cmUg
OiB0aGlzT2JqZWN0LT5zdHJ1Y3R1cmVzKGxvY2tlcikudmFsdWVzKCkpCiAgICAgICAgICAgICB2
aXNpdG9yLmFwcGVuZChzdHJ1Y3R1cmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcAppbmRl
eCBiM2M0NWM3ZTE1Nzg2Mzg0M2QwNWFiNTcwOWE3MDI0N2UyNjY5ODczLi5iYjhkN2UwYzFhMTQ1
Y2ZiMjRhZjIzNzFjYThlZTNjMTMxMTgyOTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlQ3VzdG9tLmNw
cApAQCAtMzQsNyArMzQsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogdGVtcGxhdGU8dHlwZW5h
bWUgVmlzaXRvcj4KIHZvaWQgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZTo6dmlzaXRBZGRpdGlv
bmFsQ2hpbGRyZW4oVmlzaXRvciYgdmlzaXRvcikKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKHdyYXBwZWQoKS5wYWludERlZmluaXRpb25Mb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIg
eyB3cmFwcGVkKCkucGFpbnREZWZpbml0aW9uTG9jaygpIH07CiAgICAgZm9yIChhdXRvJiByZWdp
c3RlcmVkIDogd3JhcHBlZCgpLnBhaW50RGVmaW5pdGlvbk1hcCgpLnZhbHVlcygpKSB7CiAgICAg
ICAgIHJlZ2lzdGVyZWQtPnBhaW50Q2FsbGJhY2stPnZpc2l0SlNGdW5jdGlvbih2aXNpdG9yKTsK
ICAgICAgICAgdmlzaXRvci5hcHBlbmRVbmJhcnJpZXJlZChyZWdpc3RlcmVkLT5wYWludENvbnN0
cnVjdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWludEltYWdlVmFs
dWUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHAKaW5kZXgg
OGNhNmU1ZTIwYzU0ZTc2YzFlNjk2ZWEyOGJlZDQ0MDEyMTI0MTNlYi4uY2UxNWVhY2NhZGQzMmJk
MDE4YjE0NTNjMzA1MzE0YzkwNzI5YWY3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhaW50SW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhaW50
SW1hZ2VWYWx1ZS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgUmVmUHRyPEltYWdlPiBDU1NQYWludElt
YWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQmIHJlbmRlckVsZW1lbnQsIGNvbnN0IEZsb2EK
ICAgICBhdXRvKiBzZWxlY3RlZEdsb2JhbFNjb3BlID0gcmVuZGVyRWxlbWVudC5kb2N1bWVudCgp
LnBhaW50V29ya2xldEdsb2JhbFNjb3BlRm9yTmFtZShtX25hbWUpOwogICAgIGlmICghc2VsZWN0
ZWRHbG9iYWxTY29wZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhzZWxlY3RlZEdsb2JhbFNjb3BlLT5wYWludERlZmluaXRpb25Mb2NrKCkpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBzZWxlY3RlZEdsb2JhbFNjb3BlLT5wYWludERlZmluaXRpb25M
b2NrKCkgfTsKICAgICBhdXRvKiByZWdpc3RyYXRpb24gPSBzZWxlY3RlZEdsb2JhbFNjb3BlLT5w
YWludERlZmluaXRpb25NYXAoKS5nZXQobV9uYW1lKTsKIAogICAgIGlmICghcmVnaXN0cmF0aW9u
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0RPTUNTU1BhaW50V29ya2xldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3JrbGV0LmNwcAppbmRleCA2YTBlMTk2
NjQ1NDJlODE2ODFjN2E2OTdlY2M3MTE1YjdhNGRmYzExLi4yZmE0ZTIwYjA2N2M1YTdjOGVjMGVm
MjY0NDNjYmVmMDVhMGFjY2MzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NT
UGFpbnRXb3JrbGV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRE9NQ1NTUGFpbnRXb3Jr
bGV0LmNwcApAQCAtNzYsNyArNzYsNyBAQCB2b2lkIFBhaW50V29ya2xldDo6YWRkTW9kdWxlKGNv
bnN0IFN0cmluZyYgbW9kdWxlVVJMLCBXb3JrbGV0T3B0aW9ucyYmLCBET01Qcm9taQogICAgIGF1
dG8gY29udGV4dCA9IG1heWJlQ29udGV4dC5yZWxlYXNlTm9uTnVsbCgpOwogICAgIGNvbnRleHQt
PmV2YWx1YXRlKCk7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGNvbnRleHQtPnBhaW50
RGVmaW5pdGlvbkxvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IGNvbnRleHQtPnBhaW50RGVm
aW5pdGlvbkxvY2soKSB9OwogICAgIGZvciAoYXV0byYgbmFtZSA6IGNvbnRleHQtPnBhaW50RGVm
aW5pdGlvbk1hcCgpLmtleXMoKSkKICAgICAgICAgZG9jdW1lbnQtPnNldFBhaW50V29ya2xldEds
b2JhbFNjb3BlRm9yTmFtZShuYW1lLCBtYWtlUmVmKGNvbnRleHQuZ2V0KCkpKTsKICAgICBwcm9t
aXNlLnJlc29sdmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3Rl
bmVyTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmNwcAppbmRl
eCBmYzM2M2FlMzNhZjkyNzZmZmM1Y2E2YTJiNmIxY2YyNzViYTgwMDk1Li41OWMwYjI5MTczYmE0
NjQ5MGRlOWVlMGZmN2FiMDNjMDMyNDZkOGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRXZlbnRMaXN0ZW5lck1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlz
dGVuZXJNYXAuY3BwCkBAIC04Miw3ICs4Miw3IEBAIGJvb2wgRXZlbnRMaXN0ZW5lck1hcDo6Y29u
dGFpbnNBY3RpdmUoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlKSBjb25zdAogCiB2b2lkIEV2
ZW50TGlzdGVuZXJNYXA6OmNsZWFyKCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
bG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIAogICAgIGFzc2VydE5v
QWN0aXZlSXRlcmF0b3JzKCk7CiAKQEAgLTExNyw3ICsxMTcsNyBAQCBzdGF0aWMgaW5saW5lIHNp
emVfdCBmaW5kTGlzdGVuZXIoY29uc3QgRXZlbnRMaXN0ZW5lclZlY3RvciYgbGlzdGVuZXJzLCBF
dmVudExpcwogCiB2b2lkIEV2ZW50TGlzdGVuZXJNYXA6OnJlcGxhY2UoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBvbGRMaXN0ZW5lciwgUmVmPEV2ZW50TGlzdGVu
ZXI+JiYgbmV3TGlzdGVuZXIsIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyOjpPcHRpb25z
JiBvcHRpb25zKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICBM
b2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgCiAgICAgYXNzZXJ0Tm9BY3RpdmVJdGVyYXRv
cnMoKTsKIApAQCAtMTMyLDcgKzEzMiw3IEBAIHZvaWQgRXZlbnRMaXN0ZW5lck1hcDo6cmVwbGFj
ZShjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIG9sZExpCiAKIGJv
b2wgRXZlbnRMaXN0ZW5lck1hcDo6YWRkKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVm
PEV2ZW50TGlzdGVuZXI+JiYgbGlzdGVuZXIsIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVy
OjpPcHRpb25zJiBvcHRpb25zKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAgICAgCiAgICAgYXNzZXJ0Tm9BY3Rp
dmVJdGVyYXRvcnMoKTsKIApAQCAtMTYyLDcgKzE2Miw3IEBAIHN0YXRpYyBib29sIHJlbW92ZUxp
c3RlbmVyRnJvbVZlY3RvcihFdmVudExpc3RlbmVyVmVjdG9yJiBsaXN0ZW5lcnMsIEV2ZW50TGlz
dGVuCiAKIGJvb2wgRXZlbnRMaXN0ZW5lck1hcDo6cmVtb3ZlKGNvbnN0IEF0b21TdHJpbmcmIGV2
ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgdXNlQ2FwdHVyZSkKIHsKLSAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OwogICAgIAogICAgIGFzc2VydE5vQWN0aXZlSXRlcmF0b3JzKCk7CiAKQEAgLTIwMiw3
ICsyMDIsNyBAQCBzdGF0aWMgdm9pZCByZW1vdmVGaXJzdExpc3RlbmVyQ3JlYXRlZEZyb21NYXJr
dXAoRXZlbnRMaXN0ZW5lclZlY3RvciYgbGlzdGVuZXJWZQogCiB2b2lkIEV2ZW50TGlzdGVuZXJN
YXA6OnJlbW92ZUZpcnN0RXZlbnRMaXN0ZW5lckNyZWF0ZWRGcm9tTWFya3VwKGNvbnN0IEF0b21T
dHJpbmcmIGV2ZW50VHlwZSkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogICAgIAogICAgIGFzc2VydE5vQWN0aXZl
SXRlcmF0b3JzKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IDEyMDQwMWY4
ODhiY2E2Nzc2ODExZDkwZDI1ZjgyNDFmNTUxNzE3NDEuLjNkNGE2ZmRmMTBmNWJkYzJmYWRjZmQz
NzFiODAzYTZmODE0MGJmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtMzkz
LDcgKzM5Myw3IEBAIHZvaWQgRXZlbnRUYXJnZXQ6OnZpc2l0SlNFdmVudExpc3RlbmVycyhWaXNp
dG9yJiB2aXNpdG9yKQogICAgIGlmICghZGF0YSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2soZGF0YS0+ZXZlbnRMaXN0ZW5lck1hcC5sb2NrKCkpOwor
ICAgIExvY2tlciBsb2NrZXIgeyBkYXRhLT5ldmVudExpc3RlbmVyTWFwLmxvY2soKSB9OwogICAg
IEV2ZW50TGlzdGVuZXJJdGVyYXRvciBpdGVyYXRvcigmZGF0YS0+ZXZlbnRMaXN0ZW5lck1hcCk7
CiAgICAgd2hpbGUgKGF1dG8qIGxpc3RlbmVyID0gaXRlcmF0b3IubmV4dExpc3RlbmVyKCkpCiAg
ICAgICAgIGxpc3RlbmVyLT52aXNpdEpTRnVuY3Rpb24odmlzaXRvcik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
aW5kZXggYjJmYTNhMjI1ZTQ1YmI5ODdjOTQ3ZmY2YjQxZTNhNGQwYmJhY2M1OC4uOTE2OTNiNDI5
YzNlMmUyMTZjNzRjNjFiNjE0NmJlMzQ2MWU5NDk1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMjIz
OSw3ICsyMjM5LDcgQEAgRXZlbnRUYXJnZXREYXRhJiBOb2RlOjplbnN1cmVFdmVudFRhcmdldERh
dGEoKQogICAgIEpTQzo6Vk0qIHZtID0gY29tbW9uVk1Pck51bGwoKTsKICAgICBSRUxFQVNFX0FT
U0VSVCghdm0gfHwgdm0tPmhlYXAud29ybGRJc1J1bm5pbmcoKSk7CiAKLSAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKHNfZXZlbnRUYXJnZXREYXRhTWFwTG9jayk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IHNfZXZlbnRUYXJnZXREYXRhTWFwTG9jayB9OwogICAgIHNldEhhc0V2ZW50VGFyZ2V0RGF0
YSh0cnVlKTsKICAgICByZXR1cm4gKmV2ZW50VGFyZ2V0RGF0YU1hcCgpLmFkZCh0aGlzLCBtYWtl
VW5pcXVlPEV2ZW50VGFyZ2V0RGF0YT4oKSkuaXRlcmF0b3ItPnZhbHVlOwogfQpAQCAtMjI0OCw3
ICsyMjQ4LDcgQEAgdm9pZCBOb2RlOjpjbGVhckV2ZW50VGFyZ2V0RGF0YSgpCiB7CiAgICAgSlND
OjpWTSogdm0gPSBjb21tb25WTU9yTnVsbCgpOwogICAgIFJFTEVBU0VfQVNTRVJUKCF2bSB8fCB2
bS0+aGVhcC53b3JsZElzUnVubmluZygpKTsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKHNf
ZXZlbnRUYXJnZXREYXRhTWFwTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHNfZXZlbnRUYXJn
ZXREYXRhTWFwTG9jayB9OwogICAgIGV2ZW50VGFyZ2V0RGF0YU1hcCgpLnJlbW92ZSh0aGlzKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5jcHAKaW5kZXggM2U0MjQ5YzBhOTVjNTYxYmUz
OGQzMTEyYzMzYmU0MzQzM2M2MGUyMS4uMDdlYjY1MTQ5ZmM5OTY3MDU3ZTgyYWM2NDk1ZGQxMjBj
MmQ1ZTI1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwCkBAIC0xMDMsNyArMTAzLDcg
QEAgc2l6ZV90IENhbnZhc0Jhc2U6Om1lbW9yeUNvc3QoKSBjb25zdAogICAgIC8vIG1lbW9yeUNv
c3QoKSBtYXkgYmUgaW52b2tlZCBjb25jdXJyZW50bHkgZnJvbSBhIEdDIHRocmVhZCwgYW5kIHdl
IG5lZWQgdG8gYmUgY2FyZWZ1bAogICAgIC8vIGFib3V0IHdoYXQgZGF0YSB3ZSBhY2Nlc3MgaGVy
ZSBhbmQgaG93LiBXZSBuZWVkIHRvIGhvbGQgYSBsb2NrIHRvIHByZXZlbnQgbV9pbWFnZUJ1ZmZl
cgogICAgIC8vIGZyb20gYmVpbmcgY2hhbmdlZCB3aGlsZSB3ZSBhY2Nlc3MgaXQuCi0gICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX2ltYWdlQnVmZmVyQXNzaWdubWVudExvY2spOworICAgIExv
Y2tlciBsb2NrZXIgeyBtX2ltYWdlQnVmZmVyQXNzaWdubWVudExvY2sgfTsKICAgICBpZiAoIW1f
aW1hZ2VCdWZmZXIpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBtX2ltYWdlQnVmZmVy
LT5tZW1vcnlDb3N0KCk7CkBAIC0xMTQsNyArMTE0LDcgQEAgc2l6ZV90IENhbnZhc0Jhc2U6OmV4
dGVybmFsTWVtb3J5Q29zdCgpIGNvbnN0CiAgICAgLy8gZXh0ZXJuYWxNZW1vcnlDb3N0KCkgbWF5
IGJlIGludm9rZWQgY29uY3VycmVudGx5IGZyb20gYSBHQyB0aHJlYWQsIGFuZCB3ZSBuZWVkIHRv
IGJlIGNhcmVmdWwKICAgICAvLyBhYm91dCB3aGF0IGRhdGEgd2UgYWNjZXNzIGhlcmUgYW5kIGhv
dy4gV2UgbmVlZCB0byBob2xkIGEgbG9jayB0byBwcmV2ZW50IG1faW1hZ2VCdWZmZXIKICAgICAv
LyBmcm9tIGJlaW5nIGNoYW5nZWQgd2hpbGUgd2UgYWNjZXNzIGl0LgotICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9pbWFnZUJ1ZmZlckFzc2lnbm1lbnRMb2NrKTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9pbWFnZUJ1ZmZlckFzc2lnbm1lbnRMb2NrIH07CiAgICAgaWYgKCFtX2ltYWdlQnVm
ZmVyKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlci0+ZXh0ZXJu
YWxNZW1vcnlDb3N0KCk7CkBAIC0xODgsNyArMTg4LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBD
YW52YXNCYXNlOjpzZXRJbWFnZUJ1ZmZlcihSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgYnVmZmVyKSBj
b24KIHsKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IHJldHVybkJ1ZmZlcjsKICAgICB7Ci0gICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9pbWFnZUJ1ZmZlckFzc2lnbm1lbnRMb2NrKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1faW1hZ2VCdWZmZXJBc3NpZ25tZW50TG9jayB9Owog
ICAgICAgICBtX2NvbnRleHRTdGF0ZVNhdmVyID0gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuQnVm
ZmVyID0gc3RkOjpleGNoYW5nZShtX2ltYWdlQnVmZmVyLCBXVEZNb3ZlKGJ1ZmZlcikpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKaW5kZXggZGYyYTNhNzA4ZmNk
NzY4OGU1NDBkYmU0Njg4N2U1MjQwZjIzNDNlYi4uZWUwOGY4MzBkZDRjNTFjNDdlNmE2MGE2MmIz
NTRlMTcwYWExN2M0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKQEAg
LTE1Myw3ICsxNTMsNyBAQCB2b2lkIEhUTUxDb2xsZWN0aW9uOjppbnZhbGlkYXRlTmFtZWRFbGVt
ZW50Q2FjaGUoRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogICAgIEFTU0VSVChoYXNOYW1lZEVs
ZW1lbnRDYWNoZSgpKTsKICAgICBkb2N1bWVudC5jb2xsZWN0aW9uV2lsbENsZWFySWROYW1lTWFw
KCp0aGlzKTsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9uYW1lZEVs
ZW1lbnRDYWNoZUFzc2lnbm1lbnRMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbmFt
ZWRFbGVtZW50Q2FjaGVBc3NpZ25tZW50TG9jayB9OwogICAgICAgICBtX25hbWVkRWxlbWVudENh
Y2hlID0gbnVsbHB0cjsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgK
aW5kZXggODkzN2IwMzZjMjM4MjJmMWVmMTk1N2U4M2RkYzUzMDljNDI1NzQzZi4uNGUyMzBhMGFm
OGQ5NzUyYjAwMmU3YzdjOTA3ODc5ZmYzOTc1ZDdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENv
bGxlY3Rpb24uaApAQCAtMTc1LDcgKzE3NSw3IEBAIGlubGluZSBzaXplX3QgSFRNTENvbGxlY3Rp
b246Om1lbW9yeUNvc3QoKSBjb25zdAogewogICAgIC8vIG1lbW9yeUNvc3QoKSBtYXkgYmUgaW52
b2tlZCBjb25jdXJyZW50bHkgZnJvbSBhIEdDIHRocmVhZCwgYW5kIHdlIG5lZWQgdG8gYmUgY2Fy
ZWZ1bCBhYm91dCB3aGF0IGRhdGEgd2UgYWNjZXNzIGhlcmUgYW5kIGhvdy4KICAgICAvLyBIZW5j
ZSwgd2UgbmVlZCB0byBndWFyZCBtX25hbWVkRWxlbWVudENhY2hlIGZyb20gYmVpbmcgcmVwbGFj
ZWQgd2hpbGUgYWNjZXNzaW5nIGl0LgotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9uYW1l
ZEVsZW1lbnRDYWNoZUFzc2lnbm1lbnRMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9uYW1l
ZEVsZW1lbnRDYWNoZUFzc2lnbm1lbnRMb2NrIH07CiAgICAgcmV0dXJuIG1fbmFtZWRFbGVtZW50
Q2FjaGUgPyBtX25hbWVkRWxlbWVudENhY2hlLT5tZW1vcnlDb3N0KCkgOiAwOwogfQogCkBAIC0y
MjMsNyArMjIzLDcgQEAgaW5saW5lIHZvaWQgSFRNTENvbGxlY3Rpb246OnNldE5hbWVkSXRlbUNh
Y2hlKHN0ZDo6dW5pcXVlX3B0cjxDb2xsZWN0aW9uTmFtZWRFbGUKICAgICBBU1NFUlQoIW1fbmFt
ZWRFbGVtZW50Q2FjaGUpOwogICAgIGNhY2hlLT5kaWRQb3B1bGF0ZSgpOwogICAgIHsKLSAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX25hbWVkRWxlbWVudENhY2hlQXNzaWdubWVudExv
Y2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9uYW1lZEVsZW1lbnRDYWNoZUFzc2lnbm1l
bnRMb2NrIH07CiAgICAgICAgIG1fbmFtZWRFbGVtZW50Q2FjaGUgPSBXVEZNb3ZlKGNhY2hlKTsK
ICAgICB9CiAgICAgZG9jdW1lbnQoKS5jb2xsZWN0aW9uQ2FjaGVkSWROYW1lTWFwKCp0aGlzKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmNwcAppbmRleCAzYTU0M2JjYjJiZGE3
YzY5MjUzMjQwMDVjNTViYmQ1Zjc2OTk4ZTM2Li4zZWYyM2FiM2I3YmNkZTFmMGViZDVkMzcwYzAx
OTUyODdjYTMyN2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL09mZnNjcmVlbkNh
bnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuY3BwCkBA
IC00MzMsNyArNDMzLDcgQEAgdm9pZCBPZmZzY3JlZW5DYW52YXM6OnNldFBsYWNlaG9sZGVyQ2Fu
dmFzKEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXMpCiB2b2lkIE9mZnNjcmVlbkNhbnZhczo6cHVz
aEJ1ZmZlclRvUGxhY2Vob2xkZXIoKQogewogICAgIGNhbGxPbk1haW5UaHJlYWQoW3BsYWNlaG9s
ZGVyRGF0YSA9IG1ha2VSZWYoKm1fcGxhY2Vob2xkZXJEYXRhKV0gKCkgbXV0YWJsZSB7Ci0gICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2socGxhY2Vob2xkZXJEYXRhLT5idWZmZXJMb2NrKTsK
KyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHBsYWNlaG9sZGVyRGF0YS0+YnVmZmVyTG9jayB9Owog
ICAgICAgICBpZiAocGxhY2Vob2xkZXJEYXRhLT5jYW52YXMgJiYgcGxhY2Vob2xkZXJEYXRhLT5w
ZW5kaW5nQ29tbWl0QnVmZmVyKQogICAgICAgICAgICAgcGxhY2Vob2xkZXJEYXRhLT5jYW52YXMt
PnNldEltYWdlQnVmZmVyQW5kTWFya0RpcnR5KFdURk1vdmUocGxhY2Vob2xkZXJEYXRhLT5wZW5k
aW5nQ29tbWl0QnVmZmVyKSk7CiAgICAgICAgIHBsYWNlaG9sZGVyRGF0YS0+cGVuZGluZ0NvbW1p
dEJ1ZmZlciA9IG51bGxwdHI7CkBAIC00NTYsNyArNDU2LDcgQEAgdm9pZCBPZmZzY3JlZW5DYW52
YXM6OmNvbW1pdFRvUGxhY2Vob2xkZXJDYW52YXMoKQogICAgICAgICAgICAgbV9wbGFjZWhvbGRl
ckRhdGEtPmJ1ZmZlclBpcGVTb3VyY2UtPmhhbmRsZShXVEZNb3ZlKGJ1ZmZlckNvcHkpKTsKICAg
ICB9CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fcGxhY2Vob2xkZXJEYXRhLT5idWZm
ZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9wbGFjZWhvbGRlckRhdGEtPmJ1ZmZlckxv
Y2sgfTsKICAgICBib29sIHNob3VsZFB1c2hCdWZmZXIgPSAhbV9wbGFjZWhvbGRlckRhdGEtPnBl
bmRpbmdDb21taXRCdWZmZXI7CiAgICAgbV9wbGFjZWhvbGRlckRhdGEtPnBlbmRpbmdDb21taXRC
dWZmZXIgPSBpbWFnZUJ1ZmZlci0+Y29weVJlY3RUb0J1ZmZlcihGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBpbWFnZUJ1ZmZlci0+bG9naWNhbFNpemUoKSksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQiwgaW1hZ2VCdWZmZXItPmNvbnRleHQoKSk7CiAgICAgaWYgKG1fcGxhY2Vob2xkZXJEYXRh
LT5wZW5kaW5nQ29tbWl0QnVmZmVyICYmIHNob3VsZFB1c2hCdWZmZXIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PRVNWZXJ0ZXhBcnJheU9iamVjdC5jcHAKaW5kZXggZGJl
NTRkYzY4ODEyYmJkMzA2NTViOWI5MWZlYjE3NjI5MWVhMmMxMS4uMzBkNGIzZmYwY2JkMjRmNTM4
MDg2MzBiY2M0MzA2N2Q4Y2U4ZjA2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvT0VTVmVydGV4QXJyYXlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL09FU1ZlcnRleEFycmF5T2JqZWN0LmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIE9F
U1ZlcnRleEFycmF5T2JqZWN0OjpkZWxldGVWZXJ0ZXhBcnJheU9FUyhXZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTKiBhcnJheQogICAgIGlmICghbV9jb250ZXh0KQogICAgICAgICByZXR1cm47CiAK
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fY29udGV4dC0+b2JqZWN0R3JhcGhMb2NrKCkp
OworICAgIExvY2tlciBsb2NrZXIgeyBtX2NvbnRleHQtPm9iamVjdEdyYXBoTG9jaygpIH07CiAK
ICAgICBpZiAoIWFycmF5T2JqZWN0IHx8IG1fY29udGV4dC0+aXNDb250ZXh0TG9zdCgpKQogICAg
ICAgICByZXR1cm47CkBAIC04OCw3ICs4OCw3IEBAIHZvaWQgT0VTVmVydGV4QXJyYXlPYmplY3Q6
OmJpbmRWZXJ0ZXhBcnJheU9FUyhXZWJHTFZlcnRleEFycmF5T2JqZWN0T0VTKiBhcnJheU9iCiAg
ICAgaWYgKCFtX2NvbnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9jb250ZXh0LT5vYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG1fY29udGV4dC0+b2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmIChtX2NvbnRleHQt
PmlzQ29udGV4dExvc3QoKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBhMWE0Mjlm
MzU1YmIzMDExNzU0MWI1ZDc4MmZlOThiMTk0MmQ3YzQwLi5lYjJkM2FhOGQ2MzdlNGQ0YmE2M2Ex
MzgxODBhMDdkYjI5YzQwNmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNjk0LDcgKzY5NCw3IEBAIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Z2V0QnVmZmVyU3ViRGF0YShHQ0dMZW51bSB0YXJnZXQs
IGxvbmcgbG9uZyBzcmNCeXRlCiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZEZy
YW1lYnVmZmVyKEdDR0xlbnVtIHRhcmdldCwgV2ViR0xGcmFtZWJ1ZmZlciogYnVmZmVyKQogewot
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tl
ciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2soKSB9OwogCiAgICAgaWYgKCF2YWxpZGF0ZU51bGxh
YmxlV2ViR0xPYmplY3QoImJpbmRGcmFtZWJ1ZmZlciIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVy
bjsKQEAgLTcyNCw3ICs3MjQsNyBAQCB2b2lkIFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmJsaXRG
cmFtZWJ1ZmZlcihHQ0dMaW50IHNyY1gwLCBHQ0dMaW50IHNyY1kwLCBHQ0dMaQogCiB2b2lkIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZUZyYW1lYnVmZmVyKFdlYkdMRnJhbWVidWZmZXIq
IGZyYW1lYnVmZmVyKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhM
b2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2soKSB9OwogCiAgICAg
aWYgKCFkZWxldGVPYmplY3QobG9ja2VyLCBmcmFtZWJ1ZmZlcikpCiAgICAgICAgIHJldHVybjsK
QEAgLTE3MTEsNyArMTcxMSw3IEBAIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4
QXR0cmliSTR1aXYoR0NHTHVpbnQgaW5kZXgsIFVpbnQzMkxpc3QmJiBsaXN0CiAKIHZvaWQgV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliSVBvaW50ZXIoR0NHTHVpbnQgaW5kZXgs
IEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTHNpemVpIHN0cmlkZSwgR0NHTGludDY0
IG9mZnNldCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygp
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmIChp
c0NvbnRleHRMb3N0T3JQZW5kaW5nKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE5MTAsNyArMTkx
MCw3IEBAIFJlZlB0cjxXZWJHTFF1ZXJ5PiBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVR
dWVyeSgpCiAKIHZvaWQgV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6ZGVsZXRlUXVlcnkoV2ViR0xR
dWVyeSogcXVlcnkpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExv
Y2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBp
ZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpIHx8ICFxdWVyeSB8fCAhcXVlcnktPm9iamVjdCgp
IHx8ICF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJkZWxldGVRdWVyeSIsIHF1ZXJ5KSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTk0NSw3ICsxOTQ1LDcgQEAgYm9vbCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0
Ojp2YWxpZGF0ZVF1ZXJ5VGFyZ2V0KGNvbnN0IGNoYXIqIGZ1bmN0aW9uTmFtZSwgR0NHTGUKIAog
dm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiZWdpblF1ZXJ5KEdDR0xlbnVtIHRhcmdldCwg
V2ViR0xRdWVyeSYgcXVlcnkpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RH
cmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAK
ICAgICBHQ0dMZW51bSB0YXJnZXRLZXk7CiAgICAgaWYgKCF2YWxpZGF0ZVdlYkdMT2JqZWN0KCJi
ZWdpblF1ZXJ5IiwgJnF1ZXJ5KSB8fCAhdmFsaWRhdGVRdWVyeVRhcmdldCgiYmVnaW5RdWVyeSIs
IHRhcmdldCwgJnRhcmdldEtleSkpCkBAIC0xOTcwLDcgKzE5NzAsNyBAQCB2b2lkIFdlYkdMMlJl
bmRlcmluZ0NvbnRleHQ6OmJlZ2luUXVlcnkoR0NHTGVudW0gdGFyZ2V0LCBXZWJHTFF1ZXJ5JiBx
dWVyeSkKIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjplbmRRdWVyeShHQ0dMZW51bSB0
YXJnZXQpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBHQ0dMZW51
bSB0YXJnZXRLZXk7CiAgICAgaWYgKGlzQ29udGV4dExvc3RPclBlbmRpbmcoKSB8fCAhc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIHx8ICF2YWxpZGF0ZVF1ZXJ5VGFyZ2V0KCJiZWdpblF1ZXJ5Iiwg
dGFyZ2V0LCAmdGFyZ2V0S2V5KSkKQEAgLTIwNDEsNyArMjA0MSw3IEBAIFJlZlB0cjxXZWJHTFNh
bXBsZXI+IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OmNyZWF0ZVNhbXBsZXIoKQogCiB2b2lkIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVNhbXBsZXIoV2ViR0xTYW1wbGVyKiBzYW1wbGVy
KQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAg
IExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2soKSB9OwogCiAgICAgaWYgKGlzQ29udGV4
dExvc3RPclBlbmRpbmcoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjA2Nyw3ICsyMDY3LDcgQEAg
R0NHTGJvb2xlYW4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aXNTYW1wbGVyKFdlYkdMU2FtcGxl
ciogc2FtcGxlcikKIAogdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiaW5kU2FtcGxlcihH
Q0dMdWludCB1bml0LCBXZWJHTFNhbXBsZXIqIHNhbXBsZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVj
dEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAoaXNDb250ZXh0TG9zdE9yUGVuZGluZygpKQogICAg
ICAgICByZXR1cm47CkBAIC0yMTU5LDcgKzIxNTksNyBAQCBHQ0dMYm9vbGVhbiBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0Ojppc1N5bmMoV2ViR0xTeW5jKiBzeW5jKQogCiB2b2lkIFdlYkdMMlJlbmRl
cmluZ0NvbnRleHQ6OmRlbGV0ZVN5bmMoV2ViR0xTeW5jKiBzeW5jKQogewotICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBv
YmplY3RHcmFwaExvY2soKSB9OwogCiAgICAgZGVsZXRlT2JqZWN0KGxvY2tlciwgc3luYyk7CiB9
CkBAIC0yMjMwLDcgKzIyMzAsNyBAQCBSZWZQdHI8V2ViR0xUcmFuc2Zvcm1GZWVkYmFjaz4gV2Vi
R0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlVHJhbnNmb3JtRmVlZGJhY2soKQogCiB2b2lkIFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVRyYW5zZm9ybUZlZWRiYWNrKFdlYkdMVHJhbnNm
b3JtRmVlZGJhY2sqIGZlZWRiYWNrT2JqZWN0KQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExv
Y2soKSB9OwogCiAgICAgLy8gV2UgaGF2ZSB0byBzaG9ydC1jaXJjdWl0IHRoZSBkZWxldGlvbiBw
cm9jZXNzIGlmIHRoZSB0cmFuc2Zvcm0gZmVlZGJhY2sgaXMKICAgICAvLyBhY3RpdmUuIFRoaXMg
cmVxdWlyZXMgZHVwbGljYXRpb24gb2Ygc29tZSB2YWxpZGF0aW9uIGxvZ2ljLgpAQCAtMjI2NSw3
ICsyMjY1LDcgQEAgR0NHTGJvb2xlYW4gV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6aXNUcmFuc2Zv
cm1GZWVkYmFjayhXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKgogCiB2b2lkIFdlYkdMMlJlbmRlcmlu
Z0NvbnRleHQ6OmJpbmRUcmFuc2Zvcm1GZWVkYmFjayhHQ0dMZW51bSB0YXJnZXQsIFdlYkdMVHJh
bnNmb3JtRmVlZGJhY2sqIGZlZWRiYWNrT2JqZWN0KQogewotICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFw
aExvY2soKSB9OwogCiAgICAgaWYgKCF2YWxpZGF0ZU51bGxhYmxlV2ViR0xPYmplY3QoImJpbmRU
cmFuc2Zvcm1GZWVkYmFjayIsIGZlZWRiYWNrT2JqZWN0KSkKICAgICAgICAgcmV0dXJuOwpAQCAt
MjMyNiw3ICsyMzI2LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpiZWdpblRyYW5z
Zm9ybUZlZWRiYWNrKEdDR0xlbnVtIHByaW1pdGl2ZU1vZGUpCiAKICAgICBtX2NvbnRleHQtPmJl
Z2luVHJhbnNmb3JtRmVlZGJhY2socHJpbWl0aXZlTW9kZSk7CiAKLSAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0
R3JhcGhMb2NrKCkgfTsKICAgICBtX2JvdW5kVHJhbnNmb3JtRmVlZGJhY2stPnNldFByb2dyYW0o
bG9ja2VyLCAqbV9jdXJyZW50UHJvZ3JhbSk7CiAgICAgbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNr
LT5zZXRBY3RpdmUodHJ1ZSk7CiAgICAgbV9ib3VuZFRyYW5zZm9ybUZlZWRiYWNrLT5zZXRQYXVz
ZWQoZmFsc2UpOwpAQCAtMjQyNCw3ICsyNDI0LDcgQEAgdm9pZCBXZWJHTDJSZW5kZXJpbmdDb250
ZXh0OjpyZXN1bWVUcmFuc2Zvcm1GZWVkYmFjaygpCiAKIGJvb2wgV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dDo6c2V0SW5kZXhlZEJ1ZmZlckJpbmRpbmcoY29uc3QgY2hhciAqZnVuY3Rpb25OYW1lLCBH
Q0dMZW51bSB0YXJnZXQsIEdDR0x1aW50IGluZGV4LCBXZWJHTEJ1ZmZlciogYnVmZmVyKQogewot
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tl
ciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2soKSB9OwogCiAgICAgaWYgKCF2YWxpZGF0ZU51bGxh
YmxlV2ViR0xPYmplY3QoZnVuY3Rpb25OYW1lLCBidWZmZXIpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CkBAIC0yNjE2LDcgKzI2MTYsNyBAQCBSZWZQdHI8V2ViR0xWZXJ0ZXhBcnJheU9iamVjdD4g
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlVmVydGV4QXJyYXkoKQogCiB2b2lkIFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVZlcnRleEFycmF5KFdlYkdMVmVydGV4QXJyYXlPYmpl
Y3QqIGFycmF5T2JqZWN0KQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3Jh
cGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2soKSB9OwogCiAg
ICAgLy8gdmFsaWRhdGVXZWJHTE9iamVjdCBnZW5lcmF0ZXMgYW4gZXJyb3IgaWYgdGhlIG9iamVj
dCBoYXMgYWxyZWFkeSBiZWVuCiAgICAgLy8gZGVsZXRlZCwgc28gd2UgbXVzdCByZXBsaWNhdGUg
bW9zdCBvZiBpdHMgY2hlY2tzIGhlcmUuCkBAIC0yNjM1LDcgKzI2MzUsNyBAQCB2b2lkIFdlYkdM
MlJlbmRlcmluZ0NvbnRleHQ6OmRlbGV0ZVZlcnRleEFycmF5KFdlYkdMVmVydGV4QXJyYXlPYmpl
Y3QqIGFycmF5T2JqZQogICAgICAgICAvLyBiaW5kVmVydGV4QXJyYXkgZ3JhYnMgdGhlIGxvY2sg
aW50ZXJuYWxseS4KICAgICAgICAgbG9ja2VyLnVubG9ja0Vhcmx5KCk7CiAgICAgICAgIGJpbmRW
ZXJ0ZXhBcnJheShudWxscHRyKTsgLy8gVGhlIGRlZmF1bHQgVkFPIHdhcyByZW1vdmVkIGluIE9w
ZW5HTCAzLjMgYnV0IG5vdCBmcm9tIFdlYkdMIDI7IGJpbmQgdGhlIGRlZmF1bHQgZm9yIFdlYkdM
IHRvIHVzZS4KLSAgICAgICAgbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOwor
ICAgICAgICBsb2NrZXIgPSBMb2NrZXIgeyBvYmplY3RHcmFwaExvY2soKSB9OwogICAgIH0KIAog
ICAgIGFycmF5T2JqZWN0LT5kZWxldGVPYmplY3QobG9ja2VyLCBncmFwaGljc0NvbnRleHRHTCgp
KTsKQEAgLTI2NTYsNyArMjY1Niw3IEBAIEdDR0xib29sZWFuIFdlYkdMMlJlbmRlcmluZ0NvbnRl
eHQ6OmlzVmVydGV4QXJyYXkoV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogYXJyYXlPCiAKIHZvaWQg
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6YmluZFZlcnRleEFycmF5KFdlYkdMVmVydGV4QXJyYXlP
YmplY3QqIGFycmF5T2JqZWN0KQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0
R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2soKSB9Owog
CiAgICAgaWYgKCF2YWxpZGF0ZU51bGxhYmxlV2ViR0xPYmplY3QoImJpbmRWZXJ0ZXhBcnJheSIs
IGFycmF5T2JqZWN0KSkKICAgICAgICAgcmV0dXJuOwpAQCAtMzA5Niw3ICszMDk2LDcgQEAgdm9p
ZCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjphZGRNZW1iZXJzVG9PcGFxdWVSb290cyhKU0M6OkFi
c3RyYWN0U2xvdFZpc2l0b3ImIHYKIHsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjph
ZGRNZW1iZXJzVG9PcGFxdWVSb290cyh2aXNpdG9yKTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFw
aExvY2soKSB9OwogICAgIHZpc2l0b3IuYWRkT3BhcXVlUm9vdChtX3JlYWRGcmFtZWJ1ZmZlckJp
bmRpbmcuZ2V0KCkpOwogICAgIGlmIChtX3JlYWRGcmFtZWJ1ZmZlckJpbmRpbmcpCiAgICAgICAg
IG1fcmVhZEZyYW1lYnVmZmVyQmluZGluZy0+YWRkTWVtYmVyc1RvT3BhcXVlUm9vdHMobG9ja2Vy
LCB2aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
Q29udGV4dEdyb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMQ29udGV4
dEdyb3VwLmNwcAppbmRleCBkNmFiNTE2YWUyZmEyYTZmNzk2MjliNDJiNmY4MWYwMGNmODZiYWM2
Li5hYmQ4ZjI3MzY4MzkxZTNlMWQ3ZmNmOWQzN2I5ZDc3OTZhZjMzNjFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTENvbnRleHRHcm91cC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xDb250ZXh0R3JvdXAuY3BwCkBAIC0xMDAsNyAr
MTAwLDcgQEAgdm9pZCBXZWJHTENvbnRleHRHcm91cDo6ZGV0YWNoQW5kUmVtb3ZlQWxsT2JqZWN0
cygpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG9iamVjdEdyYXBoTG9ja0ZvckFDb250ZXh0KCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmpl
Y3RHcmFwaExvY2tGb3JBQ29udGV4dCgpIH07CiAgICAgd2hpbGUgKCFtX2dyb3VwT2JqZWN0cy5p
c0VtcHR5KCkpCiAgICAgICAgICgqbV9ncm91cE9iamVjdHMuYmVnaW4oKSktPmRldGFjaENvbnRl
eHRHcm91cChsb2NrZXIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TEZyYW1lYnVmZmVyLmNwcAppbmRleCA5NWFiYzAzM2UyYzZlZDRmZWEyNTk0OTQzM2NkMTMwZDdm
MzVmYjU3Li5hOTYwY2Y1YzIzN2VjODQ0Mjk4YjA5YmI2ZWRhYWRlMjlkZWJjZThkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmNwcApAQCAtNjAy
LDcgKzYwMiw3IEBAIGJvb2wgV2ViR0xGcmFtZWJ1ZmZlcjo6aW5pdGlhbGl6ZUF0dGFjaG1lbnRz
KEdyYXBoaWNzQ29udGV4dEdMKiBnM2QsIGNvbnN0IGNoYXIqCiAgICAgICAgIC8vIENvbnRleHQg
aGFzIGJlZW4gZGVsZXRlZCAtIHNob3VsZCBub3QgYmUgY2FsbGluZyB0aGlzLgogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3Jh
cGhMb2NrRm9yQ29udGV4dCgpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2Nr
Rm9yQ29udGV4dCgpIH07CiAKICAgICBBU1NFUlQob2JqZWN0KCkpOwogICAgIEdDR0xiaXRmaWVs
ZCBtYXNrID0gMDsKQEAgLTc1NCw3ICs3NTQsNyBAQCB2b2lkIFdlYkdMRnJhbWVidWZmZXI6OnNl
dEF0dGFjaG1lbnRJbnRlcm5hbChHQ0dMZW51bSBhdHRhY2htZW50LCBHQ0dMZW51bSB0ZXhUYQog
ICAgICAgICAvLyBDb250ZXh0IGhhcyBiZWVuIGRlbGV0ZWQgLSBzaG91bGQgbm90IGJlIGNhbGxp
bmcgdGhpcy4KICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG9iamVjdEdyYXBoTG9ja0ZvckNvbnRleHQoKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9i
amVjdEdyYXBoTG9ja0ZvckNvbnRleHQoKSB9OwogCiAgICAgcmVtb3ZlQXR0YWNobWVudEludGVy
bmFsKGxvY2tlciwgYXR0YWNobWVudCk7CiAgICAgaWYgKHRleHR1cmUgJiYgdGV4dHVyZS0+b2Jq
ZWN0KCkpIHsKQEAgLTc3MCw3ICs3NzAsNyBAQCB2b2lkIFdlYkdMRnJhbWVidWZmZXI6OnNldEF0
dGFjaG1lbnRJbnRlcm5hbChHQ0dMZW51bSBhdHRhY2htZW50LCBXZWJHTFJlbmRlcmJ1ZgogICAg
ICAgICAvLyBDb250ZXh0IGhhcyBiZWVuIGRlbGV0ZWQgLSBzaG91bGQgbm90IGJlIGNhbGxpbmcg
dGhpcy4KICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG9iamVjdEdyYXBoTG9ja0ZvckNvbnRleHQoKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVj
dEdyYXBoTG9ja0ZvckNvbnRleHQoKSB9OwogCiAgICAgcmVtb3ZlQXR0YWNobWVudEludGVybmFs
KGxvY2tlciwgYXR0YWNobWVudCk7CiAgICAgaWYgKHJlbmRlcmJ1ZmZlciAmJiByZW5kZXJidWZm
ZXItPm9iamVjdCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTE9iamVjdC5j
cHAKaW5kZXggZGIyYjcyNWFjMWIxM2Y2OTNkOGQ1OGJjNTYxNDRiN2Y5MGU0YzBkMi4uZjI4MDgw
MzM2MWJlYzYwMjliMjBkY2NhZjA4MTIzMDhhMTIyY2Q4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMT2JqZWN0LmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIFdlYkdMT2Jq
ZWN0OjpydW5EZXN0cnVjdG9yKCkKICAgICAgICAgYXV0byBsb2NrZXIgPSBBYnN0cmFjdExvY2tl
cihOb0xvY2tpbmdOZWNlc3NhcnkpOwogICAgICAgICBkZWxldGVPYmplY3QobG9ja2VyLCBudWxs
cHRyKTsKICAgICB9IGVsc2UgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKGxvY2sp
OworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbG9jayB9OwogICAgICAgICBkZWxldGVPYmplY3Qo
bG9ja2VyLCBudWxscHRyKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCmluZGV4IGMyNGE4NGRh
OGQzMDY4N2M2MmVlOWM1ODJhNGRkZDlhMjgwYjUyMTEuLjUxNTU0ODhkN2VkMWRhOTUwZDVhZjY3
OGQ0NmQyMzQwYjhiYTljZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwCkBAIC0xMzQ1LDcgKzEzNDUsNyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmFjdGl2ZVRleHR1cmUoR0NHTGVudW0g
dGV4dHVyZSkKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphdHRhY2hTaGFkZXIo
V2ViR0xQcm9ncmFtJiBwcm9ncmFtLCBXZWJHTFNoYWRlciYgc2hhZGVyKQogewotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIg
eyBvYmplY3RHcmFwaExvY2soKSB9OwogCiAgICAgaWYgKCF2YWxpZGF0ZVdlYkdMUHJvZ3JhbU9y
U2hhZGVyKCJhdHRhY2hTaGFkZXIiLCAmcHJvZ3JhbSkgfHwgIXZhbGlkYXRlV2ViR0xQcm9ncmFt
T3JTaGFkZXIoImF0dGFjaFNoYWRlciIsICZzaGFkZXIpKQogICAgICAgICByZXR1cm47CkBAIC0x
NDQ1LDcgKzE0NDUsNyBAQCBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZhbGlkYXRl
QW5kQ2FjaGVCdWZmZXJCaW5kaW5nKGNvbnN0IEFic3RyYWN0TG9jawogCiB2b2lkIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OmJpbmRCdWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBXZWJHTEJ1ZmZl
ciogYnVmZmVyKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2Nr
KCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2soKSB9OwogCiAgICAgaWYg
KCF2YWxpZGF0ZU51bGxhYmxlV2ViR0xPYmplY3QoImJpbmRCdWZmZXIiLCBidWZmZXIpKQogICAg
ICAgICByZXR1cm47CkBAIC0xNDU4LDcgKzE0NTgsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OmJpbmRCdWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBXZWJHTEJ1ZmZlciogYnVmZmVy
KQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJpbmRGcmFtZWJ1ZmZlcihHQ0dM
ZW51bSB0YXJnZXQsIFdlYkdMRnJhbWVidWZmZXIqIGJ1ZmZlcikKIHsKLSAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgb2Jq
ZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmICghdmFsaWRhdGVOdWxsYWJsZVdlYkdMT2JqZWN0
KCJiaW5kRnJhbWVidWZmZXIiLCBidWZmZXIpKQogICAgICAgICByZXR1cm47CkBAIC0xNDczLDcg
KzE0NzMsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJpbmRGcmFtZWJ1ZmZl
cihHQ0dMZW51bSB0YXJnZXQsIFdlYkdMRnJhbWVidWZmZQogCiB2b2lkIFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2U6OmJpbmRSZW5kZXJidWZmZXIoR0NHTGVudW0gdGFyZ2V0LCBXZWJHTFJlbmRl
cmJ1ZmZlciogcmVuZGVyQnVmZmVyKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2Jq
ZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2soKSB9
OwogCiAgICAgaWYgKCF2YWxpZGF0ZU51bGxhYmxlV2ViR0xPYmplY3QoImJpbmRSZW5kZXJidWZm
ZXIiLCByZW5kZXJCdWZmZXIpKQogICAgICAgICByZXR1cm47CkBAIC0xNDg5LDcgKzE0ODksNyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmJpbmRSZW5kZXJidWZmZXIoR0NHTGVu
dW0gdGFyZ2V0LCBXZWJHTFJlbmRlcmJ1ZgogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OmJpbmRUZXh0dXJlKEdDR0xlbnVtIHRhcmdldCwgV2ViR0xUZXh0dXJlKiB0ZXh0dXJlKQog
ewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExv
Y2tlciBsb2NrZXIgeyBvYmplY3RHcmFwaExvY2soKSB9OwogCiAgICAgaWYgKCF2YWxpZGF0ZU51
bGxhYmxlV2ViR0xPYmplY3QoImJpbmRUZXh0dXJlIiwgdGV4dHVyZSkpCiAgICAgICAgIHJldHVy
bjsKQEAgLTIwNDYsNyArMjA0Niw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
c2V0Qm91bmRWZXJ0ZXhBcnJheU9iamVjdChjb25zdCBBYnN0cmFjdExvY2tlciYsCiAKIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlQnVmZmVyKFdlYkdMQnVmZmVyKiBidWZm
ZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7Cisg
ICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAoIWRlbGV0
ZU9iamVjdChsb2NrZXIsIGJ1ZmZlcikpCiAgICAgICAgIHJldHVybjsKQEAgLTIwNTYsNyArMjA1
Niw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlQnVmZmVyKFdlYkdM
QnVmZmVyKiBidWZmZXIpCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRl
RnJhbWVidWZmZXIoV2ViR0xGcmFtZWJ1ZmZlciogZnJhbWVidWZmZXIpCiB7Ci0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICNpZiBFTkFCTEUoV0VCWFIpCiAgICAgaWYgKGZyYW1l
YnVmZmVyICYmIGZyYW1lYnVmZmVyLT5pc09wYXF1ZSgpKSB7CkBAIC0yMDc5LDcgKzIwNzksNyBA
QCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRlbGV0ZVByb2dyYW0oV2ViR0xQcm9n
cmFtKiBwcm9ncmFtKQogICAgIGlmIChwcm9ncmFtKQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxEZXN0cm95V2ViR0xQcm9ncmFtKCpwcm9ncmFtKTsKIAotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIg
eyBvYmplY3RHcmFwaExvY2soKSB9OwogCiAgICAgZGVsZXRlT2JqZWN0KGxvY2tlciwgcHJvZ3Jh
bSk7CiAgICAgLy8gV2UgZG9uJ3QgcmVzZXQgbV9jdXJyZW50UHJvZ3JhbSB0byAwIGhlcmUgYmVj
YXVzZSB0aGUgZGVsZXRpb24gb2YgdGhlCkBAIC0yMDg4LDcgKzIwODgsNyBAQCB2b2lkIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OmRlbGV0ZVByb2dyYW0oV2ViR0xQcm9ncmFtKiBwcm9ncmFt
KQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRlbGV0ZVJlbmRlcmJ1ZmZlcihX
ZWJHTFJlbmRlcmJ1ZmZlciogcmVuZGVyYnVmZmVyKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sob2JqZWN0R3JhcGhMb2NrKCkpOworICAgIExvY2tlciBsb2NrZXIgeyBvYmplY3RHcmFw
aExvY2soKSB9OwogCiAgICAgaWYgKCFkZWxldGVPYmplY3QobG9ja2VyLCByZW5kZXJidWZmZXIp
KQogICAgICAgICByZXR1cm47CkBAIC0yMTAzLDEzICsyMTAzLDEzIEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlUmVuZGVyYnVmZmVyKFdlYkdMUmVuZGVyYnVmZmVyKiBy
ZW5kZXJidWZmCiAKIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVsZXRlU2hhZGVy
KFdlYkdMU2hhZGVyKiBzaGFkZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmpl
Y3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07
CiAgICAgZGVsZXRlT2JqZWN0KGxvY2tlciwgc2hhZGVyKTsKIH0KIAogdm9pZCBXZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlOjpkZWxldGVUZXh0dXJlKFdlYkdMVGV4dHVyZSogdGV4dHVyZSkKIHsK
LSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmICghZGVsZXRlT2JqZWN0
KGxvY2tlciwgdGV4dHVyZSkpCiAgICAgICAgIHJldHVybjsKQEAgLTIxNzEsNyArMjE3MSw3IEBA
IHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6ZGVwdGhSYW5nZShHQ0dMZmxvYXQgek5l
YXIsIEdDR0xmbG9hdCB6RmFyKQogCiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRl
dGFjaFNoYWRlcihXZWJHTFByb2dyYW0mIHByb2dyYW0sIFdlYkdMU2hhZGVyJiBzaGFkZXIpCiB7
Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9j
a2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAoIXZhbGlkYXRlV2Vi
R0xQcm9ncmFtT3JTaGFkZXIoImRldGFjaFNoYWRlciIsICZwcm9ncmFtKSB8fCAhdmFsaWRhdGVX
ZWJHTFByb2dyYW1PclNoYWRlcigiZGV0YWNoU2hhZGVyIiwgJnNoYWRlcikpCiAgICAgICAgIHJl
dHVybjsKQEAgLTYwNDUsNyArNjA0NSw3IEBAIHZvaWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6dW5pZm9ybU1hdHJpeDRmdihjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jCiAKIHZv
aWQgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6dXNlUHJvZ3JhbShXZWJHTFByb2dyYW0qIHBy
b2dyYW0pCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7
CisgICAgTG9ja2VyIGxvY2tlciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICBpZiAoIXZh
bGlkYXRlTnVsbGFibGVXZWJHTE9iamVjdCgidXNlUHJvZ3JhbSIsIHByb2dyYW0pKQogICAgICAg
ICByZXR1cm47CkBAIC02MTEyLDcgKzYxMTIsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OnZlcnRleEF0dHJpYjRmdihHQ0dMdWludCBpbmRleCwgRmxvYXQzMkxpc3QmJiB2KQog
CiB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OnZlcnRleEF0dHJpYlBvaW50ZXIoR0NH
THVpbnQgaW5kZXgsIEdDR0xpbnQgc2l6ZSwgR0NHTGVudW0gdHlwZSwgR0NHTGJvb2xlYW4gbm9y
bWFsaXplZCwgR0NHTHNpemVpIHN0cmlkZSwgbG9uZyBsb25nIG9mZnNldCkKIHsKLSAgICBhdXRv
IGxvY2tlciA9IGhvbGRMb2NrKG9iamVjdEdyYXBoTG9jaygpKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgb2JqZWN0R3JhcGhMb2NrKCkgfTsKIAogICAgIGlmIChpc0NvbnRleHRMb3N0T3JQZW5kaW5n
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTYzMDcsNyArNjMwNyw3IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6ZGV0YWNoQW5kUmVtb3ZlQWxsT2JqZWN0cygpCiAgICAgaWYgKG1f
aXNQZW5kaW5nUG9saWN5UmVzb2x1dGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICB3aGlsZSAobV9jb250ZXh0T2JqZWN0cy5zaXpl
KCkgPiAwKSB7CiAgICAgICAgIEhhc2hTZXQ8V2ViR0xDb250ZXh0T2JqZWN0Kj46Oml0ZXJhdG9y
IGl0ID0gbV9jb250ZXh0T2JqZWN0cy5iZWdpbigpOwpAQCAtNzk1OCw3ICs3OTU4LDcgQEAgdm9p
ZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkaXNwYXRjaENvbnRleHRDaGFuZ2VkTm90aWZp
Y2F0aW9uKCkKIAogdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjphZGRNZW1iZXJzVG9P
cGFxdWVSb290cyhKU0M6OkFic3RyYWN0U2xvdFZpc2l0b3ImIHZpc2l0b3IpCiB7Ci0gICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhvYmplY3RHcmFwaExvY2soKSk7CisgICAgTG9ja2VyIGxvY2tl
ciB7IG9iamVjdEdyYXBoTG9jaygpIH07CiAKICAgICB2aXNpdG9yLmFkZE9wYXF1ZVJvb3QobV9i
b3VuZEFycmF5QnVmZmVyLmdldCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2F1ZGlvL1JldmVyYkNvbnZvbHZlci5jcHAKaW5kZXggMjc5Y2FlY2I3MmQ4YTQ1MjlhM2QyMjNh
NGFmZGM5ODE3NDIzY2M0YS4uMjdiMjk4MmRjM2ZkOTE2ODVkMzE3YTdlZDFhOWMxZTZlZTQ3YjI2
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vUmV2ZXJiQ29udm9s
dmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9SZXZlcmJDb252b2x2
ZXIuY3BwCkBAIC0xMzMsNyArMTMzLDcgQEAgUmV2ZXJiQ29udm9sdmVyOjp+UmV2ZXJiQ29udm9s
dmVyKCkKIAogICAgICAgICAvLyBXYWtlIHVwIHRocmVhZCBzbyBpdCBjYW4gcmV0dXJuCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9iYWNrZ3JvdW5kVGhy
ZWFkTG9jayk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9iYWNrZ3JvdW5kVGhyZWFk
TG9jayB9OwogICAgICAgICAgICAgbV9tb3JlSW5wdXRCdWZmZXJlZCA9IHRydWU7CiAgICAgICAg
ICAgICBtX2JhY2tncm91bmRUaHJlYWRDb25kaXRpb25WYXJpYWJsZS5ub3RpZnlPbmUoKTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
QXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlv
L2NvY29hL0F1ZGlvRGVzdGluYXRpb25Db2NvYS5jcHAKaW5kZXggZTU4OTE0ZDk4Yzk2YTkwN2Mx
NWY5NjNmNzdiODQxMmExOTc2ZmQ4My4uYjRjYzEzZGJkYjhlZjNjYmRkYmY2OTVjYTYyNmQ5MmU0
MTBhNmMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vY29jb2Ev
QXVkaW9EZXN0aW5hdGlvbkNvY29hLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9jb2NvYS9BdWRpb0Rlc3RpbmF0aW9uQ29jb2EuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAg
dm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnN0YXJ0KEZ1bmN0aW9uPHZvaWQoRnVuY3Rpb248
dm9pZCgpPiYmKT4mJiBkaXNwYXRjaFQKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAg
IExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c3RhcnQiKTsKICAgICB7Ci0gICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkTG9jayk7
CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWRMb2NrIH07
CiAgICAgICAgIG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZCA9IFdURk1vdmUoZGlzcGF0Y2hUb1Jl
bmRlclRocmVhZCk7CiAgICAgfQogICAgIHN0YXJ0UmVuZGVyaW5nKFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Db2Nv
YTo6c3RvcChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbAog
ICAgIExPRyhNZWRpYSwgIkF1ZGlvRGVzdGluYXRpb25Db2NvYTo6c3RvcCIpOwogICAgIHN0b3BS
ZW5kZXJpbmcoV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIHsKLSAgICAgICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX2Rpc3BhdGNoVG9SZW5kZXJUaHJlYWRMb2NrKTsKKyAgICAg
ICAgTG9ja2VyIGxvY2tlciB7IG1fZGlzcGF0Y2hUb1JlbmRlclRocmVhZExvY2sgfTsKICAgICAg
ICAgbV9kaXNwYXRjaFRvUmVuZGVyVGhyZWFkID0gbnVsbHB0cjsKICAgICB9CiB9CkBAIC0xNTIs
NyArMTUyLDcgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnNldElzUGxheWluZyhib29s
IGlzUGxheWluZykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIHsKLSAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2lzUGxheWluZ0xvY2spOworICAgICAgICBMb2Nr
ZXIgbG9ja2VyIHsgbV9pc1BsYXlpbmdMb2NrIH07CiAgICAgICAgIGlmIChtX2lzUGxheWluZyA9
PSBpc1BsYXlpbmcpCiAgICAgICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9BdWRpb1Nv
dXJjZVByb3ZpZGVyR1N0cmVhbWVyLmNwcAppbmRleCBhOTYyNDZhNDg4NTAxNDFjMzc1MDQ5ZTli
Yjk5NDJlMjY0Mjg0Y2U0Li42OTBjMWRiOTc1OTI5NGU0Y2IwNzQ0NDAzNDExYmY5ZDU2NWUyYTZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvQXVk
aW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYXVkaW8vZ3N0cmVhbWVyL0F1ZGlvU291cmNlUHJvdmlkZXJHU3RyZWFtZXIuY3BwCkBAIC0x
ODIsNyArMTgyLDcgQEAgR3N0Rmxvd1JldHVybiBBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVy
OjpoYW5kbGVTYW1wbGUoR3N0QXBwU2luayogc2luaywgYm9vbAogCiAgICAgR1NUX1RSQUNFKCJT
dG9yaW5nIGF1ZGlvIHNhbXBsZSAlIiBHU1RfUFRSX0ZPUk1BVCwgc2FtcGxlLmdldCgpKTsKICAg
ICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9hZGFwdGVyTXV0ZXgpOworICAg
ICAgICBMb2NrZXIgbG9ja2VyIHsgbV9hZGFwdGVyTXV0ZXggfTsKICAgICAgICAgR1F1YXJrIHF1
YXJrID0gZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcoImNoYW5uZWwtaWQiKTsKICAgICAgICAg
aW50IGNoYW5uZWxJZCA9IEdQT0lOVEVSX1RPX0lOVChnX29iamVjdF9nZXRfcWRhdGEoR19PQkpF
Q1Qoc2luayksIHF1YXJrKSk7CiAgICAgICAgIEdTVF9ERUJVRygiQ2hhbm5lbCBJRDogJWQiLCBj
aGFubmVsSWQpOwpAQCAtMzg0LDcgKzM4NCw3IEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckdT
dHJlYW1lcjo6ZGVpbnRlcmxlYXZlUGFkc0NvbmZpZ3VyZWQoKQogCiB2b2lkIEF1ZGlvU291cmNl
UHJvdmlkZXJHU3RyZWFtZXI6OmNsZWFyQWRhcHRlcnMoKQogewotICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9hZGFwdGVyTXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBtX2FkYXB0ZXJN
dXRleCB9OwogICAgIGZvciAoYXV0byYgYWRhcHRlciA6IG1fYWRhcHRlcnMudmFsdWVzKCkpCiAg
ICAgICAgIGdzdF9hZGFwdGVyX2NsZWFyKGFkYXB0ZXIuZ2V0KCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291
cmNlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1l
ci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKaW5kZXggYTc4ODlmODcyNDRiNTY3
ZTU4ODIxNzRlZTg4ZGJjNmU2YWQyN2VmZS4uZmQzNDRmMDI1ZmFlMjljNGQ3NDk5MTUzZDhiNjQy
OGI1ODJmOGMyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFt
ZXIuY3BwCkBAIC00ODksNyArNDg5LDcgQEAgc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHdl
YktpdFdlYkF1ZGlvU3JjQ2hhbmdlU3RhdGUoR3N0RWxlbWVudCogZWxlbWVudCwgR3MKIAogdm9p
ZCB3ZWJraXRXZWJBdWRpb1NvdXJjZVNldERpc3BhdGNoVG9SZW5kZXJUaHJlYWRGdW5jdGlvbihX
ZWJLaXRXZWJBdWRpb1NyYyogc3JjLCBGdW5jdGlvbjx2b2lkKEZ1bmN0aW9uPHZvaWQoKT4mJik+
JiYgZnVuY3Rpb24pCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhzcmMtPnByaXYtPmRp
c3BhdGNoVG9SZW5kZXJUaHJlYWRMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgc3JjLT5wcml2
LT5kaXNwYXRjaFRvUmVuZGVyVGhyZWFkTG9jayB9OwogICAgIHNyYy0+cHJpdi0+ZGlzcGF0Y2hU
b1JlbmRlclRocmVhZEZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbik7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1v
bml0b3IuY3BwCmluZGV4IDcwZDQ3YWY2YmJmNDU5OGIwM2YzMDE2ZmM1Y2E4NzZiNzY0ZjEyZWUu
LmFlNjhkMzQ3YzdmMmQzMWY0OTNmYjI4M2I5ZDkyZDMyNTc5Mzc4NjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yLmNwcApAQCAtMTM4LDcgKzEzOCw3IEBAIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpj
bGllbnRQcmVmZXJyZWRGcmFtZXNQZXJTZWNvbmRDaGFuZ2VkKERpc3BsYXlSZWZyZXNoCiAKIGJv
b2wgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpyZXF1ZXN0UmVmcmVzaENhbGxiYWNrKCkKIHsKLSAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1f
bG9jayB9OwogICAgIAogICAgIGlmIChpc1NjaGVkdWxlZCgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTE2Niw3ICsxNjYsNyBAQCBib29sIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZmlyZWRB
bmRSZWFjaGVkTWF4VW5zY2hlZHVsZWRGaXJlQ291bnQoKQogdm9pZCBEaXNwbGF5UmVmcmVzaE1v
bml0b3I6OmRpc3BsYXlMaW5rRmlyZWQoY29uc3QgRGlzcGxheVVwZGF0ZSYgZGlzcGxheVVwZGF0
ZSkKIHsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAg
ICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9OwogCiAgICAgICAgIC8vIFRoaXMgbWF5IGJl
IG9mZiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICAgIGlmICghaXNQcmV2aW91c0ZyYW1lRG9uZSgp
KQpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5
RGlkUmVmcmVzaChjb25zdCBEaXNwbGF5VXBkYXRlJiBkaXNwbGF5VXBkYXRlCiAgICAgICAgIG1f
Y2xpZW50c1RvQmVOb3RpZmllZCA9IG51bGxwdHI7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9jayB9
OwogICAgICAgICBzZXRJc1ByZXZpb3VzRnJhbWVEb25lKHRydWUpOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggM2EzYjI1
YzMzOTQyNjU4YWQ5NjU2ZDc3ZGNkNjEzYmIzMmVkNzAyMi4uYjg4YzA0OTVjNTcxYWE3ZDVmNGE4
YmU1NTAwZmY5NmM1N2E2MmU3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuY3BwCkBAIC0yMTAsNyArMjEwLDcgQEAgRm9udFBsYXRmb3JtRGF0YSog
Rm9udENhY2hlOjpjYWNoZWRGb250UGxhdGZvcm1EYXRhKGNvbnN0IEZvbnREZXNjcmlwdGlvbiYg
Zm9udEQKICAgICBjb25zdCBGb250RmVhdHVyZVNldHRpbmdzKiBmZWF0dXJlcywgRm9udFNlbGVj
dGlvblNwZWNpZmllZENhcGFiaWxpdGllcyBjYXBhYmlsaXRpZXMsIGJvb2wgY2hlY2tpbmdBbHRl
cm5hdGVOYW1lKQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX2ZvbnRMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9mb250TG9jayB9
OwogI2VuZGlmCiAKICNpZiBPUyhXSU5ET1dTKSAmJiBFTkFCTEUoT1BFTlRZUEVfVkVSVElDQUwp
CkBAIC0yNzYsNyArMjc2LDcgQEAgUmVmUHRyPEZvbnQ+IEZvbnRDYWNoZTo6Zm9udEZvckZhbWls
eShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGlvbiwgY28KIFJlZjxGb250PiBG
b250Q2FjaGU6OmZvbnRGb3JQbGF0Zm9ybURhdGEoY29uc3QgRm9udFBsYXRmb3JtRGF0YSYgcGxh
dGZvcm1EYXRhKQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhtX2ZvbnRMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9mb250TG9jayB9
OwogI2VuZGlmCiAKICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fZm9udERhdGFDYWNoZXMtPmRhdGEu
ZW5zdXJlKHBsYXRmb3JtRGF0YSwgWyZdIHsKQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIEZvbnRD
YWNoZTo6cHVyZ2VJbmFjdGl2ZUZvbnREYXRhKHVuc2lnbmVkIHB1cmdlQ291bnQpCiAgICAgcHJ1
bmVTeXN0ZW1GYWxsYmFja0ZvbnRzKCk7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9mb250TG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fZm9udExvY2sgfTsKICNlbmRpZgogCiAgICAgd2hpbGUgKHB1cmdlQ291bnQpIHsKQEAgLTQ0
OSw3ICs0NDksNyBAQCBzaXplX3QgRm9udENhY2hlOjpmb250Q291bnQoKQogc2l6ZV90IEZvbnRD
YWNoZTo6aW5hY3RpdmVGb250Q291bnQoKQogewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0g
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2ZvbnRMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9mb250TG9jayB9OwogI2VuZGlmCiAgICAgdW5zaWduZWQgY291bnQgPSAwOwogICAgIGZv
ciAoYXV0byYgZm9udCA6IG1fZm9udERhdGFDYWNoZXMtPmRhdGEudmFsdWVzKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9BdWRp
b1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9BdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQppbmRleCBmNDNl
MzMyMGM5NzA5ODI0ODhlMjg3M2I4NWIzZTdkYmUyNjYzNWFmLi40Nzk3NjgzYjgwYmI0OTA1YTdh
ODE2ODg3YTQzNTRkMTI5OGVjZDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0F1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDLm1tCkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBBdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQzo6ZGVzdHJveU1peElmTmVlZGVkKCkKICAgICAgICAgcmV0dXJuOwog
ICAgIEFTU0VSVChtX3RhcFN0b3JhZ2UpOwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX3RhcFN0b3JhZ2UtPmxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90
YXBTdG9yYWdlLT5sb2NrIH07CiAgICAgICAgIGlmIChtX2F2UGxheWVySXRlbSkKICAgICAgICAg
ICAgIFttX2F2UGxheWVySXRlbSBzZXRBdWRpb01peDpuaWxdOwogICAgICAgICBbbV9hdkF1ZGlv
TWl4IHNldElucHV0UGFyYW1ldGVyczpAWyBdXTsKQEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIEF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpjcmVhdGVNaXhJZk5lZWRlZCgpCiAgICAgQVNTRVJU
KCFtX3RhcCk7CiAKICAgICBhdXRvIHRhcFN0b3JhZ2UgPSBhZG9wdFJlZihuZXcgVGFwU3RvcmFn
ZSh0aGlzKSk7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh0YXBTdG9yYWdlLT5sb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgdGFwU3RvcmFnZS0+bG9jayB9OwogCiAgICAgTVRBdWRpb1By
b2Nlc3NpbmdUYXBDYWxsYmFja3MgY2FsbGJhY2tzID0gewogICAgICAgICAwLApAQCAtMjYyLDcg
KzI2Miw3IEBAIHZvaWQgQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByZXBhcmVDYWxsYmFj
ayhNVEF1ZGlvUHJvY2Vzc2luZ1RhcFJlZiB0YXAsIENNCiAgICAgQVNTRVJUKHRhcCk7CiAgICAg
VGFwU3RvcmFnZSogdGFwU3RvcmFnZSA9IHN0YXRpY19jYXN0PFRhcFN0b3JhZ2UqPihNVEF1ZGlv
UHJvY2Vzc2luZ1RhcEdldFN0b3JhZ2UodGFwKSk7CiAKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKHRhcFN0b3JhZ2UtPmxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyB0YXBTdG9yYWdlLT5s
b2NrIH07CiAKICAgICBpZiAodGFwU3RvcmFnZS0+X3RoaXMpCiAgICAgICAgIHRhcFN0b3JhZ2Ut
Pl90aGlzLT5wcmVwYXJlKG1heEZyYW1lcywgcHJvY2Vzc2luZ0Zvcm1hdCk7CkBAIC0yNzMsNyAr
MjczLDcgQEAgdm9pZCBBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6dW5wcmVwYXJlQ2FsbGJh
Y2soTVRBdWRpb1Byb2Nlc3NpbmdUYXBSZWYgdGFwKQogICAgIEFTU0VSVCh0YXApOwogICAgIFRh
cFN0b3JhZ2UqIHRhcFN0b3JhZ2UgPSBzdGF0aWNfY2FzdDxUYXBTdG9yYWdlKj4oTVRBdWRpb1By
b2Nlc3NpbmdUYXBHZXRTdG9yYWdlKHRhcCkpOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayh0YXBTdG9yYWdlLT5sb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgdGFwU3RvcmFnZS0+bG9j
ayB9OwogCiAgICAgaWYgKHRhcFN0b3JhZ2UtPl90aGlzKQogICAgICAgICB0YXBTdG9yYWdlLT5f
dGhpcy0+dW5wcmVwYXJlKCk7CkBAIC0yODQsNyArMjg0LDcgQEAgdm9pZCBBdWRpb1NvdXJjZVBy
b3ZpZGVyQVZGT2JqQzo6cHJvY2Vzc0NhbGxiYWNrKE1UQXVkaW9Qcm9jZXNzaW5nVGFwUmVmIHRh
cCwgQ00KICAgICBBU1NFUlQodGFwKTsKICAgICBUYXBTdG9yYWdlKiB0YXBTdG9yYWdlID0gc3Rh
dGljX2Nhc3Q8VGFwU3RvcmFnZSo+KE1UQXVkaW9Qcm9jZXNzaW5nVGFwR2V0U3RvcmFnZSh0YXAp
KTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sodGFwU3RvcmFnZS0+bG9jayk7CisgICAg
TG9ja2VyIGxvY2tlciB7IHRhcFN0b3JhZ2UtPmxvY2sgfTsKIAogICAgIGlmICh0YXBTdG9yYWdl
LT5fdGhpcykKICAgICAgICAgdGFwU3RvcmFnZS0+X3RoaXMtPnByb2Nlc3ModGFwLCBudW1iZXJG
cmFtZXMsIGZsYWdzLCBidWZmZXJMaXN0SW5PdXQsIG51bWJlckZyYW1lc091dCwgZmxhZ3NPdXQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDLm1tCmluZGV4IGFlOTQ0ODY4N2ZkZGYxZTQ2ZjcxNmQ1
ZWEzY2NjZGY4YjVmNGQ2MzMuLjgxMzk5NmM3NmM2NDFiN2NhZTA0NmY1OTcxZWM3NDdjZjkxY2U5
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBs
YXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0KQEAgLTQwMyw3ICs0MDMsNyBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6bGF5ZXJzQXJlSW5pdGlhbGl6
ZWQoSW50U2l6ZSBzaXplLCBibwogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqQzo6ZGVzdHJveUxheWVycygpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Nh
bXBsZUJ1ZmZlckRpc3BsYXlMYXllckxvY2sgfTsKIAogICAgIG1fY2FuRW5xdWV1ZURpc3BsYXlM
YXllciA9IGZhbHNlOwogICAgIGlmIChtX3NhbXBsZUJ1ZmZlckRpc3BsYXlMYXllcikKQEAgLTEw
NjIsNyArMTA2Miw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjpDdXJyZW50RnJhbWVQYWludGVyOjpyZXNldCgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRl
TWVkaWFTdHJlYW1BVkZPYmpDOjpyb290TGF5ZXJCb3VuZHNEaWRDaGFuZ2UoKQogewotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJMb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9zYW1wbGVCdWZmZXJEaXNwbGF5TGF5ZXJMb2NrIH07CiAgICAg
aWYgKG1fc2FtcGxlQnVmZmVyRGlzcGxheUxheWVyKQogICAgICAgICBtX3NhbXBsZUJ1ZmZlckRp
c3BsYXlMYXllci0+dXBkYXRlQm91bmRzQW5kUG9zaXRpb24obV9zYW1wbGVCdWZmZXJEaXNwbGF5
TGF5ZXItPnJvb3RMYXllcigpLmJvdW5kcywgbV92aWRlb1JvdGF0aW9uKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0NvbG9yQ0cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKaW5kZXggNjgwNGYw
NjliNTE0MjEyODNjOWRkMDBmYTkyY2U4ZmJjNzkxNmEzZC4uZGRjMGRhMDkzYzhiY2QzYmU0Mzc2
ZDE1MThlYzdkMWExM2U3NzQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2cvQ29sb3JDRy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2cvQ29sb3JDRy5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBDR0NvbG9yUmVmIGNhY2hl
ZENHQ29sb3IoY29uc3QgQ29sb3ImIGNvbG9yKQogICAgIH0KIAogICAgIHN0YXRpYyBMb2NrIGNh
Y2hlZENvbG9yTG9jazsKLSAgICBhdXRvIGhvbGRlciA9IGhvbGRMb2NrKGNhY2hlZENvbG9yTG9j
ayk7CisgICAgTG9ja2VyIGxvY2tlciB7IGNhY2hlZENvbG9yTG9jayB9OwogCiAgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFRpbnlMUlVDYWNoZTxDb2xvciwgUmV0YWluUHRyPENHQ29sb3JSZWY+
LCAzMj4+IGNhY2hlOwogICAgIHJldHVybiBjYWNoZS5nZXQoKS5nZXQoY29sb3IpLmdldCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBi
ZjQ5NWQxY2EyZDQ4NWRhMjQ1YWI2NTZkMTJmMmYxMGQxYjk5NzY3Li5hZjUxMjk5MGI2YjQwYWMx
ZTgwNDRhOWI3MDllNjM5ZWZkMTE3MjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMTAyOSw3ICsxMDI5LDcgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6Om5vdGlmeVBsYXllck9mVmlkZW8oKQogfQogYm9vbCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6Omhhc0ZpcnN0VmlkZW9TYW1wbGVSZWFjaGVkU2luaygp
IGNvbnN0CiB7Ci0gICAgYXV0byBzYW1wbGVMb2NrZXIgPSBob2xkTG9jayhtX3NhbXBsZU11dGV4
KTsKKyAgICBMb2NrZXIgc2FtcGxlTG9ja2VyIHsgbV9zYW1wbGVNdXRleCB9OwogICAgIHJldHVy
biAhIW1fc2FtcGxlOwogfQogCkBAIC0yODkzLDcgKzI4OTMsNyBAQCBwcml2YXRlOgogCiB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHVzaFRleHR1cmVUb0NvbXBvc2l0b3IoKQog
ewotICAgIGF1dG8gc2FtcGxlTG9ja2VyID0gaG9sZExvY2sobV9zYW1wbGVNdXRleCk7CisgICAg
TG9ja2VyIHNhbXBsZUxvY2tlciB7IG1fc2FtcGxlTXV0ZXggfTsKICAgICBpZiAoIUdTVF9JU19T
QU1QTEUobV9zYW1wbGUuZ2V0KCkpKQogICAgICAgICByZXR1cm47CiAKQEAgLTMwNzQsNyArMzA3
NCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0cmlnZ2VyUmVwYWludChH
c3RTYW1wbGUqIHNhbXBsZSkKIAogICAgIGJvb2wgc2hvdWxkVHJpZ2dlclJlc2l6ZTsKICAgICB7
Ci0gICAgICAgIGF1dG8gc2FtcGxlTG9ja2VyID0gaG9sZExvY2sobV9zYW1wbGVNdXRleCk7Cisg
ICAgICAgIExvY2tlciBzYW1wbGVMb2NrZXIgeyBtX3NhbXBsZU11dGV4IH07CiAgICAgICAgIHNo
b3VsZFRyaWdnZXJSZXNpemUgPSAhbV9zYW1wbGU7CiAgICAgICAgIG1fc2FtcGxlID0gc2FtcGxl
OwogICAgIH0KQEAgLTMxNjQsNyArMzE2NCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpyZXBhaW50Q2FuY2VsbGVkQ2FsbGJhY2soTWVkaWFQbGF5ZXJQcml2YXRlR1N0CiAj
aWYgVVNFKEdTVFJFQU1FUl9HTCkKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpm
bHVzaEN1cnJlbnRCdWZmZXIoKQogewotICAgIGF1dG8gc2FtcGxlTG9ja2VyID0gaG9sZExvY2so
bV9zYW1wbGVNdXRleCk7CisgICAgTG9ja2VyIHNhbXBsZUxvY2tlciB7IG1fc2FtcGxlTXV0ZXgg
fTsKIAogICAgIGlmIChtX3NhbXBsZSkgewogICAgICAgICAvLyBBbGxvY2F0ZSBhIG5ldyBjb3B5
IG9mIHRoZSBzYW1wbGUgd2hpY2ggaGFzIHRvIGJlIHJlbGVhc2VkLiBUaGUgY29weSBpcyBuZWNl
c3Nhcnkgc28gdGhhdApAQCAtMzIxMSw3ICszMjExLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRS
ZWMKICAgICBpZiAoIW1fdmlzaWJsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBzYW1w
bGVMb2NrZXIgPSBob2xkTG9jayhtX3NhbXBsZU11dGV4KTsKKyAgICBMb2NrZXIgc2FtcGxlTG9j
a2VyIHsgbV9zYW1wbGVNdXRleCB9OwogICAgIGlmICghR1NUX0lTX1NBTVBMRShtX3NhbXBsZS5n
ZXQoKSkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzI4MCw3ICszMjgwLDcgQEAgYm9vbCBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNvcHlWaWRlb1RleHR1cmVUb1BsYXRmb3JtVGV4dHVy
ZShHcmFwaGljc0NvbnQKICAgICBpZiAocHJlbXVsdGlwbHlBbHBoYSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgYXV0byBzYW1wbGVMb2NrZXIgPSBob2xkTG9jayhtX3NhbXBsZU11dGV4
KTsKKyAgICBMb2NrZXIgc2FtcGxlTG9ja2VyIHsgbV9zYW1wbGVNdXRleCB9OwogCiAgICAgaWYg
KCFHU1RfSVNfU0FNUExFKG1fc2FtcGxlLmdldCgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL2Vt
ZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9lbWUvV2ViS2l0Q29tbW9uRW5jcnlw
dGlvbkRlY3J5cHRvckdTdHJlYW1lci5jcHAKaW5kZXggNjllMjdmNDg1YTg1YWRmZDRlZTFlMjgx
MzJjMTgzNzBkN2EzMzFlOS4uMTgwZTI2MGY5OGVjMDYwNmRjODQ5YzQ0YWEzMmI1OTc2ODliNmEw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L2VtZS9XZWJLaXRDb21tb25FbmNyeXB0aW9uRGVjcnlwdG9yR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvZW1lL1dlYktpdENvbW1v
bkVuY3J5cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuY3BwCkBAIC0zMTIsNyArMzEyLDcgQEAgc3Rh
dGljIEdzdEZsb3dSZXR1cm4gdHJhbnNmb3JtSW5QbGFjZShHc3RCYXNlVHJhbnNmb3JtKiBiYXNl
LCBHc3RCdWZmZXIqIGJ1ZmZlcikKIHN0YXRpYyBib29sIGlzQ0RNUHJveHlBdmFpbGFibGUoV2Vi
S2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2VsZikKIHsKICAgICBXZWJLaXRNZWRp
YUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0UHJpdmF0ZSogcHJpdiA9IFdFQktJVF9NRURJQV9DRU5D
X0RFQ1JZUFRfR0VUX1BSSVZBVEUoc2VsZik7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhw
cml2LT5tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IHByaXYtPm11dGV4IH07CiAgICAgcmV0
dXJuIHByaXYtPmNkbVByb3h5OwogfQogCkBAIC0zNDUsNyArMzQ1LDcgQEAgc3RhdGljIHZvaWQg
YXR0YWNoQ0RNUHJveHkoV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdCogc2VsZiwg
Q0RNUHJveHkqIHAKICAgICBXZWJLaXRNZWRpYUNvbW1vbkVuY3J5cHRpb25EZWNyeXB0UHJpdmF0
ZSogcHJpdiA9IFdFQktJVF9NRURJQV9DRU5DX0RFQ1JZUFRfR0VUX1BSSVZBVEUoc2VsZik7CiAg
ICAgV2ViS2l0TWVkaWFDb21tb25FbmNyeXB0aW9uRGVjcnlwdENsYXNzKiBrbGFzcyA9IFdFQktJ
VF9NRURJQV9DRU5DX0RFQ1JZUFRfR0VUX0NMQVNTKHNlbGYpOwogCi0gICAgYXV0byBsb2NrZXIg
PSBob2xkTG9jayhwcml2LT5tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7IHByaXYtPm11dGV4
IH07CiAgICAgR1NUX0VSUk9SX09CSkVDVChzZWxmLCAiQXR0YWNoaW5nIENETVByb3h5ICVwIiwg
cHJveHkpOwogICAgIHByaXYtPmNkbVByb3h5ID0gcHJveHk7CiAgICAga2xhc3MtPmNkbVByb3h5
QXR0YWNoZWQoc2VsZiwgcHJpdi0+Y2RtUHJveHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0NvbG9yTWFjLm1tCmluZGV4IDU3N2IwMDc2MTNjMzMxMTQwM2Q5
YTQ3MDQ0NzQ3MTAzOGVjNzY0NTMuLjY1YmNhNjcwZjkyODZkMjVhMTk1MTkyMWI4NWYwYTA1YTAx
NTJkNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9D
b2xvck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29s
b3JNYWMubW0KQEAgLTE0NCw3ICsxNDQsNyBAQCBOU0NvbG9yICpuc0NvbG9yKGNvbnN0IENvbG9y
JiBjb2xvcikKICAgICB9CiAKICAgICBzdGF0aWMgTG9jayBjYWNoZWRDb2xvckxvY2s7Ci0gICAg
YXV0byBob2xkZXIgPSBob2xkTG9jayhjYWNoZWRDb2xvckxvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBjYWNoZWRDb2xvckxvY2sgfTsKIAogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUaW55
TFJVQ2FjaGU8Q29sb3IsIFJldGFpblB0cjxOU0NvbG9yPiwgMzI+PiBjYWNoZTsKICAgICByZXR1
cm4gY2FjaGUuZ2V0KCkuZ2V0KGNvbG9yKS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVmZmVyUGlwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL05pY29zaWFJbWFnZUJ1
ZmZlclBpcGUuY3BwCmluZGV4IDg2MDUzYTU3YzkwMWMzOTM1OTE2ZmMwOTIxNjVkZmQ0Y2ZlZGEz
ZWMuLmZlZjY2NTEyOGFjOTBjMWIwMGEzN2I4ODg3M2VkNzExNzRiMDc3NzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvTmljb3NpYUltYWdlQnVm
ZmVyUGlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS9OaWNvc2lhSW1hZ2VCdWZmZXJQaXBlLmNwcApAQCAtODksNyArODksNyBAQCB2b2lkIE5pY29z
aWFJbWFnZUJ1ZmZlclBpcGVTb3VyY2U6OmhhbmRsZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgYnVm
ZmVyKQogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1faW1hZ2VCdWZmZXJMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9p
bWFnZUJ1ZmZlckxvY2sgfTsKIAogICAgIGlmICghbV9pbWFnZUJ1ZmZlcikgewogICAgICAgICBh
dXRvIHByb3h5T3BlcmF0aW9uID0gW3RoaXNdIChUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclBy
b3h5JiBwcm94eSkgbXV0YWJsZSB7CkBAIC0xMDMsNyArMTAzLDcgQEAgdm9pZCBOaWNvc2lhSW1h
Z2VCdWZmZXJQaXBlU291cmNlOjpoYW5kbGUoUmVmUHRyPEltYWdlQnVmZmVyPiYmIGJ1ZmZlcikK
ICAgICAgICAgICAgICAgICBhdXRvIHRleHR1cmUgPSBCaXRtYXBUZXh0dXJlR0w6OmNyZWF0ZShU
ZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXM6OmdldCgpKTsKIAogICAgICAgICAgICAgICAg
IHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2ltYWdlQnVm
ZmVyTG9jayk7CisgICAgICAgICAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2ltYWdlQnVm
ZmVyTG9jayB9OwogCiAgICAgICAgICAgICAgICAgICAgIGlmICghbV9pbWFnZUJ1ZmZlcikKICAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZC5tbQppbmRleCAxMDU0YzY0Y2FmMTIxZDg4NjY2NDZi
MDZiYWY0ODcyMDNmY2JjMzIxLi4xOWZmZGVlYjUxZDZmODcxZWQ3YTZjZTljNTVjZDk0NGQ2YjI0
MTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNvcmVU
aHJlYWQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhy
ZWFkLm1tCkBAIC0yMTcsNyArMjE3LDcgQEAgc3RhdGljIHZvaWQgSGFuZGxlRGVsZWdhdGVTb3Vy
Y2Uodm9pZCopCiAgICAgX1dlYlRocmVhZEF1dG9Mb2NrKCk7CiAKICAgICB7Ci0gICAgICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2soZGVsZWdhdGVMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tl
ciB7IGRlbGVnYXRlTG9jayB9OwogCiAjaWYgTE9HX01FU1NBR0VTCiAgICAgICAgIGlmIChbW2Rl
bGVnYXRlSW52b2NhdGlvbigpIHRhcmdldF0gaXNLaW5kT2ZDbGFzczpbTlNOb3RpZmljYXRpb25D
ZW50ZXIgY2xhc3NdXSkgewpAQCAtMzIyLDcgKzMyMiw3IEBAIHZvaWQgV2ViVGhyZWFkQWRvcHRB
bmRSZWxlYXNlKGlkIG9iaikKICAgICBOU0xvZyhAIlJlbGVhc2Ugc2VuZCBbbWFpbiB0aHJlYWRd
OiAlQCIsIG9iaik7CiAjZW5kaWYgICAgICAgIAogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayh3ZWJUaHJlYWRSZWxlYXNlTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IHdlYlRocmVhZFJl
bGVhc2VMb2NrIH07CiAKICAgICBpZiAod2ViVGhyZWFkUmVsZWFzZU9iakFycmF5KCkgPT0gbmls
KQogICAgICAgICB3ZWJUaHJlYWRSZWxlYXNlT2JqQXJyYXkoKSA9IGFkb3B0Q0YoQ0ZBcnJheUNy
ZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9yU3lzdGVtRGVmYXVsdCwgMCwgbnVsbHB0cikpOwpAQCAt
MzkxLDcgKzM5MSw3IEBAIHZvaWQgV2ViQ29yZU9iakNEZWFsbG9jT25XZWJUaHJlYWRJbXBsKGlk
IHNlbGYsIFNFTCkKICAgICB9CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2sod2ViQ29yZVJlbGVhc2VMb2NrKTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHdlYkNvcmVS
ZWxlYXNlTG9jayB9OwogICAgICAgICBpZiAoW3NlbGYgcmV0YWluQ291bnRdICE9IDEpIHsKICAg
ICAgICAgICAgIC8vIFRoaXMgaXMgbm90IHRoZSBvbmx5IHJlZmVyZW5jZSByZXRhaW5pbmcgdGhl
IG9iamVjdCwgc28gYW5vdGhlcgogICAgICAgICAgICAgLy8gdGhyZWFkIGNvdWxkIGFsc28gY2Fs
bCByZWxlYXNlIC0gaG9sZCB0aGUgbG9jayB3aGlsc3QgY2FsbGluZwpAQCAtNDEwLDcgKzQxMCw3
IEBAIHZvaWQgV2ViQ29yZU9iakNEZWFsbG9jT25XZWJUaHJlYWRJbXBsKGlkIHNlbGYsIFNFTCkK
IAogdm9pZCBXZWJDb3JlT2JqQ0RlYWxsb2NXaXRoV2ViVGhyZWFkTG9ja0ltcGwoaWQgc2VsZiwg
U0VMKQogewotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sod2ViQ29yZVJlbGVhc2VMb2NrKTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgd2ViQ29yZVJlbGVhc2VMb2NrIH07CiAgICAgaWYgKFdlYlRo
cmVhZElzTG9ja2VkT3JEaXNhYmxlZCgpIHx8IDEgIT0gW3NlbGYgcmV0YWluQ291bnRdKQogICAg
ICAgICBbc2VsZiBfd2ViY29yZV9yZWxlYXNlV2l0aFdlYlRocmVhZExvY2tdOwogICAgIGVsc2UK
QEAgLTQyMyw3ICs0MjMsNyBAQCBzdGF0aWMgdm9pZCBIYW5kbGVXZWJUaHJlYWRSZWxlYXNlU291
cmNlKHZvaWQqKQogCiAgICAgUmV0YWluUHRyPENGTXV0YWJsZUFycmF5UmVmPiBvYmplY3RzOwog
ICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayh3ZWJUaHJlYWRSZWxlYXNlTG9j
ayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyB3ZWJUaHJlYWRSZWxlYXNlTG9jayB9OwogICAg
ICAgICBpZiAoQ0ZBcnJheUdldENvdW50KHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgpLmdldCgp
KSkgewogICAgICAgICAgICAgb2JqZWN0cyA9IGFkb3B0Q0YoQ0ZBcnJheUNyZWF0ZU11dGFibGVD
b3B5KG51bGxwdHIsIDAsIHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgpLmdldCgpKSk7CiAgICAg
ICAgICAgICBDRkFycmF5UmVtb3ZlQWxsVmFsdWVzKHdlYlRocmVhZFJlbGVhc2VPYmpBcnJheSgp
LmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2Vi
Q29yZVRocmVhZFJ1bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mvd2FrL1dlYkNv
cmVUaHJlYWRSdW4uY3BwCmluZGV4IGNhOThhOGZjYjQ5NzYyNTFhMmNjMTliZGNmMjcxZjdmNjQ5
NmUzMTcuLjhmODFkN2MxYWNhNDY5NTU1MWZjNDQwYjQ3ZTkwNjFkNGIzNWRmMmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy93YWsvV2ViQ29yZVRocmVhZFJ1bi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL3dhay9XZWJDb3JlVGhyZWFkUnVuLmNw
cApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldENvbXBsZXRlZCgpCiAg
ICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc3RhdGVNdXRleCk7CisgICAg
ICAgIExvY2tlciBsb2NrZXIgeyBtX3N0YXRlTXV0ZXggfTsKIAogICAgICAgICBBU1NFUlQoIW1f
Y29tcGxldGVkKTsKICAgICAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwpAQCAtMTI5LDcgKzEyOSw3
IEBAIHN0YXRpYyB2b2lkIEhhbmRsZVJ1blNvdXJjZSh2b2lkICppbmZvKQogCiAgICAgV2ViVGhy
ZWFkUnVuUXVldWUgcXVldWVDb3B5OwogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xk
TG9jayhydW5RdWV1ZU11dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IHJ1blF1ZXVlTXV0
ZXggfTsKICAgICAgICAgcXVldWVDb3B5ID0gKnJ1blF1ZXVlOwogICAgICAgICBydW5RdWV1ZS0+
Y2xlYXIoKTsKICAgICB9CkBAIC0xNTMsNyArMTUzLDcgQEAgc3RhdGljIHZvaWQgX1dlYlRocmVh
ZFJ1bih2b2lkICheYmxvY2spKHZvaWQpLCBib29sIHN5bmNocm9ub3VzKQogICAgICAgICBzdGF0
ZSA9IG5ldyBXZWJUaHJlYWRCbG9ja1N0YXRlOwogCiAgICAgewotICAgICAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKHJ1blF1ZXVlTXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcnVu
UXVldWVNdXRleCB9OwogICAgICAgICBydW5RdWV1ZS0+YXBwZW5kKFdlYlRocmVhZEJsb2NrKGJs
b2NrLCBzdGF0ZSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
dWJsaWNTdWZmaXhNYWMubW0KaW5kZXggYjg1MDZhYjc2ZTMyNDhjNTU5ZGU1OWJlYmQ4YWJjMWFi
ZjY2NWRhNS4uYTFiZmMyMWI1OWU0MGY4Y2JiMWZiMzk2MWVlYzM4MGExOWViMzMyNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tCkBAIC01MSw3
ICs1MSw3IEBAIFN0cmluZyB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKGNvbnN0IFN0cmlu
ZyYgZG9tYWluKQogICAgICAgICByZXR1cm4gZG9tYWluOwogCiAgICAgc3RhdGljIExvY2sgY2Fj
aGVMb2NrOwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2soY2FjaGVMb2NrKTsKKyAgICBMb2Nr
ZXIgbG9ja2VyIHsgY2FjaGVMb2NrIH07CiAKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8SGFz
aE1hcDxTdHJpbmcsIFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPj4gY2FjaGU7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvTWVkaWFS
ZWNvcmRlclByaXZhdGVNb2NrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVj
b3JkZXIvTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrLmNwcAppbmRleCA1OTk2NzRhOTJhZDI2Y2Jm
OGM3NzRiNzg1YjViNGQyZjVjNmZjZmY2Li43YTBlYmUzOGYyYTIwOTIzMTc5ODVmODQxODc5Y2Fh
YTg5NzJlNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJlY29y
ZGVyL01lZGlhUmVjb3JkZXJQcml2YXRlTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFyZWNvcmRlci9NZWRpYVJlY29yZGVyUHJpdmF0ZU1vY2suY3BwCkBAIC02OSw3
ICs2OSw3IEBAIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVNb2NrOjpyZXN1bWVSZWNvcmRpbmco
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsCiAKIHZvaWQgTWVkaWFSZWNvcmRlclBy
aXZhdGVNb2NrOjp2aWRlb1NhbXBsZUF2YWlsYWJsZShNZWRpYVNhbXBsZSYpCiB7Ci0gICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX2J1ZmZlckxvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBt
X2J1ZmZlckxvY2sgfTsKICAgICBtX2J1ZmZlci5hcHBlbmQoIlZpZGVvIFRyYWNrIElEOiAiKTsK
ICAgICBtX2J1ZmZlci5hcHBlbmQobV92aWRlb1RyYWNrSUQpOwogICAgIGdlbmVyYXRlTW9ja0Nv
dW50ZXJTdHJpbmcoKTsKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBNZWRpYVJlY29yZGVyUHJpdmF0
ZU1vY2s6OmF1ZGlvU2FtcGxlc0F2YWlsYWJsZShjb25zdCBXVEY6Ok1lZGlhVGltZSYsIGNvbnMK
ICAgICAvLyBIZWFwIGFsbG9jYXRpb25zIGFyZSBmb3JiaWRkZW4gb24gdGhlIGF1ZGlvIHRocmVh
ZCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyBzbyB3ZSBuZWVkIHRvCiAgICAgLy8gZXhwbGljaXRs
eSBhbGxvdyB0aGUgZm9sbG93aW5nIGFsbG9jYXRpb24ocykuCiAgICAgRGlzYWJsZU1hbGxvY1Jl
c3RyaWN0aW9uc0ZvckN1cnJlbnRUaHJlYWRTY29wZSBkaXNhYmxlTWFsbG9jUmVzdHJpY3Rpb25z
OwotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9idWZmZXJMb2NrKTsKKyAgICBMb2NrZXIg
bG9ja2VyIHsgbV9idWZmZXJMb2NrIH07CiAgICAgbV9idWZmZXIuYXBwZW5kKCJBdWRpbyBUcmFj
ayBJRDogIik7CiAgICAgbV9idWZmZXIuYXBwZW5kKG1fYXVkaW9UcmFja0lEKTsKICAgICBnZW5l
cmF0ZU1vY2tDb3VudGVyU3RyaW5nKCk7CkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgTWVkaWFSZWNv
cmRlclByaXZhdGVNb2NrOjpmZXRjaERhdGEoRmV0Y2hEYXRhQ2FsbGJhY2smJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7CiAgICAgewotICAg
ICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fYnVmZmVyTG9jayk7CisgICAgICAgIExvY2tl
ciBsb2NrZXIgeyBtX2J1ZmZlckxvY2sgfTsKICAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IHZhbHVl
KG1fYnVmZmVyLmxlbmd0aCgpKTsKICAgICAgICAgbWVtY3B5KHZhbHVlLmRhdGEoKSwgbV9idWZm
ZXIuY2hhcmFjdGVyczgoKSwgbV9idWZmZXIubGVuZ3RoKCkpOwogICAgICAgICBtX2J1ZmZlci5j
bGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRl
ci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRlckNvY29hLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFyZWNvcmRlci9jb2NvYS9NZWRpYVJlY29yZGVyUHJpdmF0ZVdyaXRl
ckNvY29hLm1tCmluZGV4IDRkNWYwY2VjYmQ3MWQ5NTU5MmFjNjVkNWI2MGFlN2YyNjNjY2ZkN2Qu
LjkyM2EzNjBkNTNlNGY1NTQ0ZTViMGJmYjhkZmZiZDU1OTVkNWEwMGMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhcmVjb3JkZXIvY29jb2EvTWVkaWFSZWNvcmRlclBy
aXZhdGVXcml0ZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXJl
Y29yZGVyL2NvY29hL01lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyQ29jb2EubW0KQEAgLTU0Myw3
ICs1NDMsNyBAQCB2b2lkIE1lZGlhUmVjb3JkZXJQcml2YXRlV3JpdGVyOjpjb21wbGV0ZUZldGNo
RGF0YSgpCiAKIHZvaWQgTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6OmFwcGVuZERhdGEoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IHNpemUpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX2RhdGFMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9kYXRhTG9jayB9OwogICAgIGlm
ICghbV9kYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGRhdGEs
IHNpemUpOwogICAgICAgICByZXR1cm47CkBAIC01NTMsNyArNTUzLDcgQEAgdm9pZCBNZWRpYVJl
Y29yZGVyUHJpdmF0ZVdyaXRlcjo6YXBwZW5kRGF0YShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3Qg
c2l6ZSkKIAogUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gTWVkaWFSZWNvcmRlclByaXZhdGVXcml0ZXI6
OnRha2VEYXRhKCkKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fZGF0YUxvY2spOwor
ICAgIExvY2tlciBsb2NrZXIgeyBtX2RhdGFMb2NrIH07CiAgICAgYXV0byBkYXRhID0gV1RGTW92
ZShtX2RhdGEpOwogICAgIHJldHVybiBkYXRhOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVNZWRpYVNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAppbmRl
eCAyNzhkMTk2NzhkYjNlYTM0NGQ1NzczMTVmZGYwMDMwYzEwZTkwY2EwLi5jOWJjMDc3MTM4YTgw
YjU4YmNjNDk3ZTBjNDFhMTVlZWNiNzYxNGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU1lZGlhU291cmNlLmNwcApAQCAt
NjMsMjggKzYzLDI4IEBAIFJlYWx0aW1lTWVkaWFTb3VyY2U6OlJlYWx0aW1lTWVkaWFTb3VyY2Uo
VHlwZSB0eXBlLCBTdHJpbmcmJiBuYW1lLCBTdHJpbmcmJiBkZXZpCiB2b2lkIFJlYWx0aW1lTWVk
aWFTb3VyY2U6OmFkZEF1ZGlvU2FtcGxlT2JzZXJ2ZXIoQXVkaW9TYW1wbGVPYnNlcnZlciYgb2Jz
ZXJ2ZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fYXVkaW9TYW1wbGVPYnNlcnZlcnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9hdWRpb1NhbXBsZU9ic2VydmVyc0xvY2sgfTsKICAgICBtX2F1ZGlvU2FtcGxlT2JzZXJ2
ZXJzLmFkZCgmb2JzZXJ2ZXIpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92
ZUF1ZGlvU2FtcGxlT2JzZXJ2ZXIoQXVkaW9TYW1wbGVPYnNlcnZlciYgb2JzZXJ2ZXIpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
YXVkaW9TYW1wbGVPYnNlcnZlcnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9hdWRpb1Nh
bXBsZU9ic2VydmVyc0xvY2sgfTsKICAgICBtX2F1ZGlvU2FtcGxlT2JzZXJ2ZXJzLnJlbW92ZSgm
b2JzZXJ2ZXIpOwogfQogCiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OmFkZFZpZGVvU2FtcGxl
T2JzZXJ2ZXIoVmlkZW9TYW1wbGVPYnNlcnZlciYgb2JzZXJ2ZXIpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdmlkZW9TYW1wbGVP
YnNlcnZlcnNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV92aWRlb1NhbXBsZU9ic2VydmVy
c0xvY2sgfTsKICAgICBtX3ZpZGVvU2FtcGxlT2JzZXJ2ZXJzLmFkZCgmb2JzZXJ2ZXIpOwogfQog
CiB2b2lkIFJlYWx0aW1lTWVkaWFTb3VyY2U6OnJlbW92ZVZpZGVvU2FtcGxlT2JzZXJ2ZXIoVmlk
ZW9TYW1wbGVPYnNlcnZlciYgb2JzZXJ2ZXIpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdmlkZW9TYW1wbGVPYnNlcnZlcnNMb2Nr
KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV92aWRlb1NhbXBsZU9ic2VydmVyc0xvY2sgfTsKICAg
ICBtX3ZpZGVvU2FtcGxlT2JzZXJ2ZXJzLnJlbW92ZSgmb2JzZXJ2ZXIpOwogfQogCkBAIC0yMDYs
NyArMjA2LDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjp2aWRlb1NhbXBsZUF2YWlsYWJs
ZShNZWRpYVNhbXBsZSYgbWVkaWFTYW1wbGUpCiAKICAgICB1cGRhdGVIYXNTdGFydGVkUHJvZHVj
aW5nRGF0YSgpOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3ZpZGVvU2FtcGxlT2Jz
ZXJ2ZXJzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fdmlkZW9TYW1wbGVPYnNlcnZlcnNM
b2NrIH07CiAgICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG1fdmlkZW9TYW1wbGVPYnNlcnZlcnMp
CiAgICAgICAgIG9ic2VydmVyLT52aWRlb1NhbXBsZUF2YWlsYWJsZShtZWRpYVNhbXBsZSk7CiB9
CkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBSZWFsdGltZU1lZGlhU291cmNlOjphdWRpb1NhbXBs
ZXNBdmFpbGFibGUoY29uc3QgTWVkaWFUaW1lJiB0aW1lLCBjb25zdCBQbGEKIHsKICAgICB1cGRh
dGVIYXNTdGFydGVkUHJvZHVjaW5nRGF0YSgpOwogCi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9j
ayhtX2F1ZGlvU2FtcGxlT2JzZXJ2ZXJzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fYXVk
aW9TYW1wbGVPYnNlcnZlcnNMb2NrIH07CiAgICAgZm9yIChhdXRvKiBvYnNlcnZlciA6IG1fYXVk
aW9TYW1wbGVPYnNlcnZlcnMpCiAgICAgICAgIG9ic2VydmVyLT5hdWRpb1NhbXBsZXNBdmFpbGFi
bGUodGltZSwgYXVkaW9EYXRhLCBkZXNjcmlwdGlvbiwgbnVtYmVyT2ZGcmFtZXMpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRn
b2luZ0F1ZGlvU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L1JlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZS5jcHAKaW5kZXggYzI3ZTYwZjY2Y2NjZTkyNjIw
ZTI2NTc4ZmY1OGEzYjBlNTc0ODA0OC4uNDAzN2Y1MTNmMmM4MjM4MTgxNmQyYzY0MzU0MmFhMjE1
YjZjMDBhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0v
UmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2UuY3BwCkBAIC00Nyw3
ICs0Nyw3IEBAIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZTo6flJlYWx0aW1lT3V0Z29pbmdB
dWRpb1NvdXJjZSgpCiB7CiAgICAgQVNTRVJUKCFtX2F1ZGlvU291cmNlLT5oYXNPYnNlcnZlcigq
dGhpcykpOwogI2lmIEFTU0VSVF9FTkFCTEVECi0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X3NpbmtzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7IG1fc2lua3NMb2NrIH07CiAjZW5kaWYK
ICAgICBBU1NFUlQobV9zaW5rcy5pc0VtcHR5KCkpOwogCkBAIC05NSwxMyArOTUsMTMgQEAgdm9p
ZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OnNvdXJjZUVuYWJsZWRDaGFuZ2VkKCkKIAog
dm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OkFkZFNpbmsod2VicnRjOjpBdWRpb1Ry
YWNrU2lua0ludGVyZmFjZSogc2luaykKIHsKLSAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
c2lua3NMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zaW5rc0xvY2sgfTsKICAgICBtX3Np
bmtzLmFkZChzaW5rKTsKIH0KIAogdm9pZCBSZWFsdGltZU91dGdvaW5nQXVkaW9Tb3VyY2U6OlJl
bW92ZVNpbmsod2VicnRjOjpBdWRpb1RyYWNrU2lua0ludGVyZmFjZSogc2luaykKIHsKLSAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2lua3NMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsg
bV9zaW5rc0xvY2sgfTsKICAgICBtX3NpbmtzLnJlbW92ZShzaW5rKTsKIH0KIApAQCAtMTEyLDcg
KzExMiw3IEBAIHZvaWQgUmVhbHRpbWVPdXRnb2luZ0F1ZGlvU291cmNlOjpzZW5kQXVkaW9GcmFt
ZXMoY29uc3Qgdm9pZCogYXVkaW9EYXRhLCBpbnQgYml0CiAgICAgICAgIEFMV0FZU19MT0coTE9H
SURFTlRJRklFUiwgImNodW5rICIsIG1fY2h1bmtzU2VudCk7CiAjZW5kaWYKIAotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9zaW5rc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Np
bmtzTG9jayB9OwogICAgIGZvciAoYXV0byBzaW5rIDogbV9zaW5rcykKICAgICAgICAgc2luay0+
T25EYXRhKGF1ZGlvRGF0YSwgYml0c1BlclNhbXBsZSwgc2FtcGxlUmF0ZSwgbnVtYmVyT2ZDaGFu
bmVscywgbnVtYmVyT2ZGcmFtZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL1JlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJj
ZS5jcHAKaW5kZXggZmE5NDY2NWU1ZmJhZDM4N2QzM2RkZTBiMDI3ZmJlMTk0YjI1ZDMwZS4uMTJj
ZWQ3OWZjZjZhNmU1MzBkZDdiOWUxMDI1NjVkOGY3NWMyZGEzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vUmVhbHRpbWVPdXRnb2luZ1ZpZGVvU291cmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9SZWFsdGltZU91
dGdvaW5nVmlkZW9Tb3VyY2UuY3BwCkBAIC01OCw3ICs1OCw3IEBAIFJlYWx0aW1lT3V0Z29pbmdW
aWRlb1NvdXJjZTo6flJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZSgpCiB7CiBBU1NFUlQoIW1f
dmlkZW9Tb3VyY2UtPmhhc09ic2VydmVyKCp0aGlzKSk7CiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fc2lua3NMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2Vy
IHsgbV9zaW5rc0xvY2sgfTsKICNlbmRpZgogICAgIEFTU0VSVChtX3NpbmtzLmlzRW1wdHkoKSk7
CiAgICAgc3RvcCgpOwpAQCAtMTU4LDEzICsxNTgsMTMgQEAgdm9pZCBSZWFsdGltZU91dGdvaW5n
VmlkZW9Tb3VyY2U6OkFkZE9yVXBkYXRlU2luayhydGM6OlZpZGVvU2lua0ludGVyZmFjZTx3ZWJy
dGMKICAgICBpZiAoc2lua1dhbnRzLnJvdGF0aW9uX2FwcGxpZWQpCiAgICAgICAgIGFwcGx5Um90
YXRpb24oKTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9zaW5rc0xvY2spOworICAg
IExvY2tlciBsb2NrZXIgeyBtX3NpbmtzTG9jayB9OwogICAgIG1fc2lua3MuYWRkKHNpbmspOwog
fQogCiB2b2lkIFJlYWx0aW1lT3V0Z29pbmdWaWRlb1NvdXJjZTo6UmVtb3ZlU2luayhydGM6OlZp
ZGVvU2lua0ludGVyZmFjZTx3ZWJydGM6OlZpZGVvRnJhbWU+KiBzaW5rKQogewotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9zaW5rc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Np
bmtzTG9jayB9OwogICAgIG1fc2lua3MucmVtb3ZlKHNpbmspOwogfQogCkBAIC0yMTksNyArMjE5
LDcgQEAgdm9pZCBSZWFsdGltZU91dGdvaW5nVmlkZW9Tb3VyY2U6OnNlbmRGcmFtZShydGM6OnNj
b3BlZF9yZWZwdHI8d2VicnRjOjpWaWRlb0ZyYW0KICAgICB9CiAjZW5kaWYKIAotICAgIGF1dG8g
bG9ja2VyID0gaG9sZExvY2sobV9zaW5rc0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX3Np
bmtzTG9jayB9OwogICAgIGZvciAoYXV0byogc2luayA6IG1fc2lua3MpCiAgICAgICAgIHNpbmst
Pk9uRnJhbWUoZnJhbWUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWVkaWFzdHJlYW0vbWFjL0Jhc2VBdWRpb1NoYXJlZFVuaXQuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0Jhc2VBdWRpb1NoYXJlZFVuaXQuY3BwCmluZGV4IDUz
YzdlN2JjZTM0NTc2MjgyOGU3YTNiMzlhNzhlOWJhNWUyMzIxNzQuLmEyYmU1MjI1MzQ3MjE1ZDRl
Nzc5MDA3YjY2NjYwMjM2ODBkODdiMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9CYXNlQXVkaW9TaGFyZWRVbml0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQmFzZUF1ZGlvU2hhcmVkVW5pdC5jcHAK
QEAgLTQ1LDE0ICs0NSwxNCBAQCBCYXNlQXVkaW9TaGFyZWRVbml0OjpCYXNlQXVkaW9TaGFyZWRV
bml0KCkKIHZvaWQgQmFzZUF1ZGlvU2hhcmVkVW5pdDo6YWRkQ2xpZW50KENvcmVBdWRpb0NhcHR1
cmVTb3VyY2UmIGNsaWVudCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1
dG8gbG9ja2VyID0gaG9sZExvY2sobV9jbGllbnRzTG9jayk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fY2xpZW50c0xvY2sgfTsKICAgICBtX2NsaWVudHMuYWRkKCZjbGllbnQpOwogfQogCiB2b2lk
IEJhc2VBdWRpb1NoYXJlZFVuaXQ6OnJlbW92ZUNsaWVudChDb3JlQXVkaW9DYXB0dXJlU291cmNl
JiBjbGllbnQpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBhdXRvIGxvY2tl
ciA9IGhvbGRMb2NrKG1fY2xpZW50c0xvY2spOworICAgIExvY2tlciBsb2NrZXIgeyBtX2NsaWVu
dHNMb2NrIH07CiAgICAgbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KTsKIH0KIApAQCAtNjAsMTEg
KzYwLDExIEBAIHZvaWQgQmFzZUF1ZGlvU2hhcmVkVW5pdDo6Zm9yRWFjaENsaWVudChjb25zdCBG
dW5jdGlvbjx2b2lkKENvcmVBdWRpb0NhcHR1cmVTb3VyCiB7CiAgICAgVmVjdG9yPENvcmVBdWRp
b0NhcHR1cmVTb3VyY2UqPiBjbGllbnRzQ29weTsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV9jbGllbnRzTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX2Ns
aWVudHNMb2NrIH07CiAgICAgICAgIGNsaWVudHNDb3B5ID0gY29weVRvVmVjdG9yKG1fY2xpZW50
cyk7CiAgICAgfQogICAgIGZvciAoYXV0byogY2xpZW50IDogY2xpZW50c0NvcHkpIHsKLSAgICAg
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2NsaWVudHNMb2NrKTsKKyAgICAgICAgTG9ja2Vy
IGxvY2tlciB7IG1fY2xpZW50c0xvY2sgfTsKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBjbGll
bnQgaGFzIG5vdCBiZWVuIGRlc3Ryb3llZC4KICAgICAgICAgaWYgKCFtX2NsaWVudHMuY29udGFp
bnMoY2xpZW50KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNzQsNyArNzQsNyBAQCB2b2lk
IEJhc2VBdWRpb1NoYXJlZFVuaXQ6OmZvckVhY2hDbGllbnQoY29uc3QgRnVuY3Rpb248dm9pZChD
b3JlQXVkaW9DYXB0dXJlU291cgogCiB2b2lkIEJhc2VBdWRpb1NoYXJlZFVuaXQ6OmNsZWFyQ2xp
ZW50cygpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX2NsaWVudHNMb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9jbGllbnRzTG9jayB9OwogICAgIG1fY2xpZW50cy5jbGVhcigp
OwogfQogCkBAIC0yMTcsNyArMjE3LDcgQEAgT1NTdGF0dXMgQmFzZUF1ZGlvU2hhcmVkVW5pdDo6
c3VzcGVuZCgpCiB2b2lkIEJhc2VBdWRpb1NoYXJlZFVuaXQ6OmF1ZGlvU2FtcGxlc0F2YWlsYWJs
ZShjb25zdCBNZWRpYVRpbWUmIHRpbWUsIGNvbnN0IFBsYXRmb3JtQXVkaW9EYXRhJiBkYXRhLCBj
b25zdCBBdWRpb1N0cmVhbURlc2NyaXB0aW9uJiBkZXNjcmlwdGlvbiwgc2l6ZV90IG51bWJlck9m
RnJhbWVzKQogewogICAgIC8vIFdlIGhvbGQgdGhlIGxvY2sgaGVyZSBzaW5jZSBhZGRpbmcvcmVt
b3ZpbmcgY2xpZW50cyBjYW4gb25seSBoYXBwZW4gaW4gbWFpbiB0aHJlYWQuCi0gICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhtX2NsaWVudHNMb2NrKTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9j
bGllbnRzTG9jayB9OwogCiAgICAgLy8gRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHdlIGZvcmJp
ZCBoZWFwIGFsbG9jYXRpb25zIHdoaWxlIGRvaW5nIHJlbmRlcmluZyBvbiB0aGUgY2FwdHVyZSBh
dWRpbyB0aHJlYWQuCiAgICAgRm9yYmlkTWFsbG9jVXNlRm9yQ3VycmVudFRocmVhZFNjb3BlIGZv
cmJpZE1hbGxvY1VzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckNvY29hLm1t
CmluZGV4IGJmM2EzMzkxZjFmZWJiMzg0ZTc1OWU0YmM4OTc2ZTE3N2NhMTk1NjUuLjU3NmY0NGU5
MmM1OGI5M2MwYjQwZDY2NDk5ODBiYzdlOTBhNWVhZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQ29jb2Eu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlv
U291cmNlUHJvdmlkZXJDb2NvYS5tbQpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgV2ViQXVkaW9T
b3VyY2VQcm92aWRlckNvY29hOjpwcmVwYXJlKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlw
dGlvbiYgZm9yCiB7CiAgICAgRGlzYWJsZU1hbGxvY1Jlc3RyaWN0aW9uc0ZvckN1cnJlbnRUaHJl
YWRTY29wZSBzY29wZTsKIAotICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9sb2NrKTsKKyAg
ICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07CiAKICAgICBMT0coTWVkaWEsICJXZWJBdWRpb1Nv
dXJjZVByb3ZpZGVyQ29jb2E6OnByZXBhcmUoJXApIiwgdGhpcyk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvTG9hZGVyUnVuTG9vcENGLmNwcAppbmRl
eCA5N2ZjM2QwYmNhYWJlZTkwZTNkYjRmNWFhNjkxMjM2ZGQ0ZGUyYWMzLi4wNWEyNGY1MjUyNWI1
NGI3ZmY4MWQ0NzExYzVlYzAwYzk4NmM5ODQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2NmL0xvYWRlclJ1bkxvb3BDRi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9Mb2FkZXJSdW5Mb29wQ0YuY3BwCkBAIC01OCw3ICs1OCw3
IEBAIENGUnVuTG9vcFJlZiBsb2FkZXJSdW5Mb29wKCkKICAgICBpZiAoIWxvYWRlclJ1bkxvb3BP
YmplY3QpIHsKICAgICAgICAgVGhyZWFkOjpjcmVhdGUoIldlYkNvcmU6IENGTmV0d29yayBMb2Fk
ZXIiLCBbXSB7CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhsb2FkZXJSdW5Mb29wTXV0ZXgpOworICAgICAgICAgICAgICAgIExvY2tlciBsb2Nr
ZXIgeyBsb2FkZXJSdW5Mb29wTXV0ZXggfTsKIAogICAgICAgICAgICAgICAgIGxvYWRlclJ1bkxv
b3BPYmplY3QgPSBDRlJ1bkxvb3BHZXRDdXJyZW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVlc3QuY3BwCmluZGV4IGFhMDc0MTMz
MGM2MDRkOWE1Njc5NTQ2M2VlZmU5ZDc5OTdmNWE2NjAuLmQ5YTMxOTRhYWRiNmNmNzllMTA4Mzg4
MTcyODJiN2FjMjRiZmQxZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXF1ZXN0LmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgQ3Vy
bFJlcXVlc3Q6OmNhbmNlbCgpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIHsK
LSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0YXR1c011dGV4KTsKKyAgICAgICAg
TG9ja2VyIGxvY2tlciB7IG1fc3RhdHVzTXV0ZXggfTsKICAgICAgICAgaWYgKG1fY2FuY2VsbGVk
KQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTIsMTMgKzE1MiwxMyBAQCB2b2lkIEN1cmxS
ZXF1ZXN0OjpjYW5jZWwoKQogCiBib29sIEN1cmxSZXF1ZXN0Ojppc0NhbmNlbGxlZCgpCiB7Ci0g
ICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3N0YXR1c011dGV4KTsKKyAgICBMb2NrZXIgbG9j
a2VyIHsgbV9zdGF0dXNNdXRleCB9OwogICAgIHJldHVybiBtX2NhbmNlbGxlZDsKIH0KIAogYm9v
bCBDdXJsUmVxdWVzdDo6aXNDb21wbGV0ZWRPckNhbmNlbGxlZCgpCiB7Ci0gICAgYXV0byBsb2Nr
ZXIgPSBob2xkTG9jayhtX3N0YXR1c011dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9zdGF0
dXNNdXRleCB9OwogICAgIHJldHVybiBtX2NvbXBsZXRlZCB8fCBtX2NhbmNlbGxlZDsKIH0KIApA
QCAtNDc5LDcgKzQ3OSw3IEBAIHZvaWQgQ3VybFJlcXVlc3Q6OmRpZENvbXBsZXRlVHJhbnNmZXIo
Q1VSTGNvZGUgcmVzdWx0KQogICAgIH0KIAogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBo
b2xkTG9jayhtX3N0YXR1c011dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fc3RhdHVz
TXV0ZXggfTsKICAgICAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVk
dWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlcXVl
c3RTY2hlZHVsZXIuY3BwCmluZGV4IDRkMDllNmI1YjdlNTliOTNjNDg0MWJmMzQ5MDZmYTIyOTE5
MjFhZWQuLjRhMjA1ZjhiMGUwZGFhNmYwODNlODg5MDk4YTczMzJlNzJmZmYyZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVxdWVzdFNjaGVk
dWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXF1ZXN0U2NoZWR1bGVyLmNwcApAQCAtNjcsNyArNjcsNyBAQCB2b2lkIEN1cmxSZXF1ZXN0U2No
ZWR1bGVyOjpjYW5jZWwoQ3VybFJlcXVlc3RTY2hlZHVsZXJDbGllbnQqIGNsaWVudCkKIHZvaWQg
Q3VybFJlcXVlc3RTY2hlZHVsZXI6OmNhbGxPbldvcmtlclRocmVhZChXVEY6OkZ1bmN0aW9uPHZv
aWQoKT4mJiB0YXNrKQogewogICAgIHsKLSAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X211dGV4KTsKKyAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgbV90
YXNrUXVldWUuYXBwZW5kKFdURk1vdmUodGFzaykpOwogICAgIH0KIApAQCAtNzksNyArNzksNyBA
QCB2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpzdGFydFRocmVhZElmTmVlZGVkKCkKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhv
bGRMb2NrKG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAg
ICAgICBpZiAobV9ydW5UaHJlYWQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtODgs
MTQgKzg4LDE0IEBAIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OnN0YXJ0VGhyZWFkSWZOZWVk
ZWQoKQogICAgICAgICBtX3RocmVhZC0+d2FpdEZvckNvbXBsZXRpb24oKTsKIAogICAgIHsKLSAg
ICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKKyAgICAgICAgTG9ja2VyIGxv
Y2tlciB7IG1fbXV0ZXggfTsKICAgICAgICAgbV9ydW5UaHJlYWQgPSB0cnVlOwogICAgIH0KIAog
ICAgIG1fdGhyZWFkID0gVGhyZWFkOjpjcmVhdGUoImN1cmxUaHJlYWQiLCBbdGhpc10gewogICAg
ICAgICB3b3JrZXJUaHJlYWQoKTsKIAotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1f
bXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICBtX3J1
blRocmVhZCA9IGZhbHNlOwogICAgIH0sIFRocmVhZFR5cGU6Ok5ldHdvcmspOwogfQpAQCAtMTA0
LDcgKzEwNCw3IEBAIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OnN0b3BUaHJlYWRJZk5vTW9y
ZUpvYlJ1bm5pbmcoKQogewogICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwogCi0gICAgYXV0
byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsKKyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRl
eCB9OwogICAgIGlmIChtX2FjdGl2ZUpvYnMuc2l6ZSgpIHx8IG1fdGFza1F1ZXVlLnNpemUoKSkK
ICAgICAgICAgcmV0dXJuOwogCkBAIC0xMTQsNyArMTE0LDcgQEAgdm9pZCBDdXJsUmVxdWVzdFNj
aGVkdWxlcjo6c3RvcFRocmVhZElmTm9Nb3JlSm9iUnVubmluZygpCiB2b2lkIEN1cmxSZXF1ZXN0
U2NoZWR1bGVyOjpzdG9wVGhyZWFkKCkKIHsKICAgICB7Ci0gICAgICAgIGF1dG8gbG9ja2VyID0g
aG9sZExvY2sobV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4IH07CiAg
ICAgICAgIG1fcnVuVGhyZWFkID0gZmFsc2U7CiAgICAgfQogCkBAIC0xMzEsNyArMTMxLDcgQEAg
dm9pZCBDdXJsUmVxdWVzdFNjaGVkdWxlcjo6ZXhlY3V0ZVRhc2tzKCkKICAgICBWZWN0b3I8V1RG
OjpGdW5jdGlvbjx2b2lkKCk+PiB0YXNrUXVldWU7CiAKICAgICB7Ci0gICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9tdXRleCk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX211dGV4
IH07CiAgICAgICAgIHRhc2tRdWV1ZSA9IFdURk1vdmUobV90YXNrUXVldWUpOwogICAgIH0KIApA
QCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgQ3VybFJlcXVlc3RTY2hlZHVsZXI6OndvcmtlclRocmVh
ZCgpCiAKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOworICAgICAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1f
bXV0ZXggfTsKICAgICAgICAgICAgIGlmICghbV9ydW5UaHJlYWQpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIEN1cmxSZXF1ZXN0U2No
ZWR1bGVyOjpzdGFydFRyYW5zZmVyKEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50KiBjbGllbnQp
CiAgICAgICAgIG1fY2xpZW50TWFwcy5zZXQoaGFuZGxlLCBjbGllbnQpOwogICAgIH07CiAKLSAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOworICAgIExvY2tlciBsb2NrZXIgeyBt
X211dGV4IH07CiAgICAgbV9hY3RpdmVKb2JzLmFkZChjbGllbnQpOwogICAgIG1fdGFza1F1ZXVl
LmFwcGVuZChXVEZNb3ZlKHRhc2spKTsKIH0KQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIEN1cmxS
ZXF1ZXN0U2NoZWR1bGVyOjpjYW5jZWxUcmFuc2ZlcihDdXJsUmVxdWVzdFNjaGVkdWxlckNsaWVu
dCogY2xpZW50KQogCiB2b2lkIEN1cmxSZXF1ZXN0U2NoZWR1bGVyOjpmaW5hbGl6ZVRyYW5zZmVy
KEN1cmxSZXF1ZXN0U2NoZWR1bGVyQ2xpZW50KiBjbGllbnQsIEZ1bmN0aW9uPHZvaWQoKT4gY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX211dGV4KTsK
KyAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogCiAgICAgaWYgKCFtX2FjdGl2ZUpvYnMu
Y29udGFpbnMoY2xpZW50KSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW1TY2hlZHVsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxTdHJlYW1TY2hlZHVsZXIuY3Bw
CmluZGV4IDNmYjg3NTk5ODRhYTMxYTdkNDRiYWEyZjY5YWZlMmZlZTQ2MWVhNGYuLmI0YTlhYmQ0
NTMwN2UxNGIxYjAwODBjNWZkODQ5MGFjYWY3YmI1OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsU3RyZWFtU2NoZWR1bGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFN0cmVhbVNjaGVkdWxlci5j
cHAKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBDdXJsU3RyZWFtU2NoZWR1bGVyOjpjYWxsT25Xb3Jr
ZXJUaHJlYWQoV1RGOjpGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaykKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogCiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0
ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICBtX3Rhc2tR
dWV1ZS5hcHBlbmQoV1RGTW92ZSh0YXNrKSk7CiAgICAgfQogCkBAIC0xMDYsNyArMTA2LDcgQEAg
dm9pZCBDdXJsU3RyZWFtU2NoZWR1bGVyOjpjYWxsQ2xpZW50T25NYWluVGhyZWFkKEN1cmxTdHJl
YW1JRCBzdHJlYW1JRCwgV1RGOjpGdW4KIHZvaWQgQ3VybFN0cmVhbVNjaGVkdWxlcjo6c3RhcnRU
aHJlYWRJZk5lZWRlZCgpCiB7CiAgICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2Nr
KG1fbXV0ZXgpOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICBp
ZiAobV9ydW5UaHJlYWQpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTI4LDcgKzEy
OCw3IEBAIHZvaWQgQ3VybFN0cmVhbVNjaGVkdWxlcjo6c3RvcFRocmVhZElmTm9Nb3JlSm9iUnVu
bmluZygpCiAgICAgaWYgKG1fc3RyZWFtTGlzdC5zaXplKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9tdXRleCk7CisgICAgTG9ja2VyIGxvY2tlciB7
IG1fbXV0ZXggfTsKICAgICBpZiAobV90YXNrUXVldWUuc2l6ZSgpKQogICAgICAgICByZXR1cm47
CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2b2lkIEN1cmxTdHJlYW1TY2hlZHVsZXI6OmV4ZWN1dGVU
YXNrcygpCiAgICAgVmVjdG9yPFdURjo6RnVuY3Rpb248dm9pZCgpPj4gdGFza1F1ZXVlOwogCiAg
ICAgewotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fbXV0ZXgpOworICAgICAgICBM
b2NrZXIgbG9ja2VyIHsgbV9tdXRleCB9OwogICAgICAgICB0YXNrUXVldWUgPSBXVEZNb3ZlKG1f
dGFza1F1ZXVlKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZUJ1aWxkZXIuY3BwCmlu
ZGV4IDhiMTQwZGFkYjNjMzMwNjBhMDVhOGFmM2M1NjZiMjIwZWFmOTY5ZGQuLjU2OTY5NmVlZTIx
N2ZmNjJjNWY5YmRmMDU2NTRmMzQwMDU4YmJlNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVC
dWlsZGVyLmNwcApAQCAtMzQwLDcgKzM0MCw3IEBAIHZvaWQgQnVpbGRlcjo6YXBwbHlQcm9wZXJ0
eShDU1NQcm9wZXJ0eUlEIGlkLCBDU1NWYWx1ZSYgdmFsdWUsIFNlbGVjdG9yQ2hlY2tlcjo6CiAg
ICAgaWYgKGlzPENTU1BhaW50SW1hZ2VWYWx1ZT4odmFsdWVUb0FwcGx5KSkgewogICAgICAgICBh
dXRvJiBuYW1lID0gZG93bmNhc3Q8Q1NTUGFpbnRJbWFnZVZhbHVlPih2YWx1ZVRvQXBwbHkuZ2V0
KCkpLm5hbWUoKTsKICAgICAgICAgaWYgKGF1dG8qIHBhaW50V29ya2xldCA9IGNvbnN0X2Nhc3Q8
RG9jdW1lbnQmPihtX3N0YXRlLmRvY3VtZW50KCkpLnBhaW50V29ya2xldEdsb2JhbFNjb3BlRm9y
TmFtZShuYW1lKSkgewotICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhwYWludFdv
cmtsZXQtPnBhaW50RGVmaW5pdGlvbkxvY2soKSk7CisgICAgICAgICAgICBMb2NrZXIgbG9ja2Vy
IHsgcGFpbnRXb3JrbGV0LT5wYWludERlZmluaXRpb25Mb2NrKCkgfTsKICAgICAgICAgICAgIGlm
IChhdXRvKiByZWdpc3RyYXRpb24gPSBwYWludFdvcmtsZXQtPnBhaW50RGVmaW5pdGlvbk1hcCgp
LmdldChuYW1lKSkgewogICAgICAgICAgICAgICAgIGZvciAoYXV0byYgcHJvcGVydHkgOiByZWdp
c3RyYXRpb24tPmlucHV0UHJvcGVydGllcykKICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZS5z
dHlsZSgpLmFkZEN1c3RvbVBhaW50V2F0Y2hQcm9wZXJ0eShwcm9wZXJ0eSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlck9yV29ya2xldFRocmVhZC5jcHAKaW5kZXggYThlYTk5
YmM1ZmZlZDFhM2NjZDg2MjhlZjljN2EwNTE2ZmFiYmEyZS4uNDc3ZDk2NzJjNzEyYjQ2ZmM0ZWJk
N2EyODk3ZTc3ZWIxNTgwODQ4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJPcldvcmtsZXRUaHJlYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29y
a2VyT3JXb3JrbGV0VGhyZWFkLmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgV29ya2VyT3JX
b3JrbGV0VGhyZWFkOjp3b3JrZXJPcldvcmtsZXRUaHJlYWQoKQogICAgICAgICAvLyBNdXRleCBw
cm90ZWN0aW9uIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhhdCB3ZSBkb24ndCBjaGFuZ2UgbV9n
bG9iYWxTY29wZQogICAgICAgICAvLyB3aGlsZSBXb3JrZXJUaHJlYWQ6OnN0b3AoKSBpcyBhY2Nl
c3NpbmcgaXQuIE5vdGUgdGhhdCBXb3JrZXJUaHJlYWQ6OnN0b3AoKSBjYW4KICAgICAgICAgLy8g
YmUgY2FsbGVkIGJlZm9yZSB3ZSd2ZSBmaW5pc2hlZCBjcmVhdGluZyB0aGUgV29ya2VyR2xvYmFs
U2NvcGUuCi0gICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV90aHJlYWRDcmVhdGlvbkFu
ZEdsb2JhbFNjb3BlTG9jayk7CisgICAgICAgIExvY2tlciBsb2NrZXIgeyBtX3RocmVhZENyZWF0
aW9uQW5kR2xvYmFsU2NvcGVMb2NrIH07CiAgICAgICAgIG1fZ2xvYmFsU2NvcGUgPSBjcmVhdGVH
bG9iYWxTY29wZSgpOwogCiAgICAgICAgIC8vIFdoZW4gcnVubmluZyBvdXQgb2YgbWVtb3J5LCBj
cmVhdGVHbG9iYWxTY29wZSgpIG1heSByZXR1cm4gbnVsbCBiZWNhdXNlIHdlIGNvdWxkIG5vdCBh
bGxvY2F0ZSBhIEpTQzo6Vk0uCkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBXb3JrZXJPcldvcmts
ZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xldFRocmVhZCgpCiAgICAgewogICAgICAgICAvLyBNdXRl
eCBwcm90ZWN0aW9uIGlzIG5lY2Vzc2FyeSB0byBlbnN1cmUgdGhhdCB3ZSBkb24ndCBjaGFuZ2Ug
bV9nbG9iYWxTY29wZQogICAgICAgICAvLyB3aGlsZSBXb3JrZXJUaHJlYWQ6OnN0b3AgaXMgYWNj
ZXNzaW5nIGl0LgotICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdGhyZWFkQ3JlYXRp
b25BbmRHbG9iYWxTY29wZUxvY2spOworICAgICAgICBMb2NrZXIgbG9ja2VyIHsgbV90aHJlYWRD
cmVhdGlvbkFuZEdsb2JhbFNjb3BlTG9jayB9OwogCiAgICAgICAgIC8vIERlbGF5IHRoZSBkZXN0
cnVjdGlvbiBvZiB0aGUgV29ya2VyR2xvYmFsU2NvcGUgY29udGV4dCB1bnRpbCBhZnRlciB3ZSd2
ZSB1bmxvY2tlZCB0aGUKICAgICAgICAgLy8gbV90aHJlYWRDcmVhdGlvbkFuZFdvcmtlckdsb2Jh
bFNjb3BlTXV0ZXguIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2UgZGVzdHJ1Y3RpbmcgdGhlCkBAIC0x
ODcsNyArMTg3LDcgQEAgdm9pZCBXb3JrZXJPcldvcmtsZXRUaHJlYWQ6Ondvcmtlck9yV29ya2xl
dFRocmVhZCgpCiB2b2lkIFdvcmtlck9yV29ya2xldFRocmVhZDo6c3RhcnQoV1RGOjpGdW5jdGlv
bjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIGV2YWx1YXRlQ2FsbGJhY2spCiB7CiAgICAgLy8gTXV0
ZXggcHJvdGVjdGlvbiBpcyBuZWNlc3NhcnkgdG8gZW5zdXJlIHRoYXQgbV90aHJlYWQgaXMgaW5p
dGlhbGl6ZWQgd2hlbiB0aGUgdGhyZWFkIHN0YXJ0cy4KLSAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fdGhyZWFkQ3JlYXRpb25BbmRHbG9iYWxTY29wZUxvY2spOworICAgIExvY2tlciBsb2Nr
ZXIgeyBtX3RocmVhZENyZWF0aW9uQW5kR2xvYmFsU2NvcGVMb2NrIH07CiAKICAgICBpZiAobV90
aHJlYWQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmts
ZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRz
L1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRleCAwNGYxOGM2MzE3MjVmOGQ3NTg3NTgz
OTFiY2UxZDU5MWZiNjk5MGY2Li5iMDc4Mzc1ZmE3M2RmZTI5Y2QyY2QyMDE3MWFkMjY4MjIyODU5
YjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9i
YWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3JrbGV0R2xv
YmFsU2NvcGUuY3BwCkBAIC04NSw3ICs4NSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFBhaW50V29y
a2xldEdsb2JhbFNjb3BlOjpyZWdpc3RlclBhaW50KEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsCiAg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJUaGUgZmlyc3QgYXJndW1lbnQg
bXVzdCBub3QgYmUgdGhlIGVtcHR5IHN0cmluZyIgfTsKIAogICAgIHsKLSAgICAgICAgYXV0byBs
b2NrZXIgPSBob2xkTG9jayhwYWludERlZmluaXRpb25Mb2NrKCkpOworICAgICAgICBMb2NrZXIg
bG9ja2VyIHsgcGFpbnREZWZpbml0aW9uTG9jaygpIH07CiAKICAgICAgICAgaWYgKHBhaW50RGVm
aW5pdGlvbk1hcCgpLmNvbnRhaW5zKG5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEludmFsaWRNb2RpZmljYXRpb25FcnJvciwgIlRoaXMgbmFtZSBoYXMgYWxyZWFkeSBiZWVu
IHJlZ2lzdGVyZWQiIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWlu
dFdvcmtsZXRHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29ya2xldHMvUGFpbnRXb3Jr
bGV0R2xvYmFsU2NvcGUuaAppbmRleCBkMDc2ZWU5ZDM1ZWI3ZjczOThlMGQ0MDllODg3ZTY1N2Yy
MjYwMjBmLi45YTJjNDk3YzkyOTQ4MDJlMWU2N2IyNGQwN2FmYjI4MzFlMjI4YjM1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrbGV0cy9QYWludFdvcmtsZXRHbG9iYWxTY29wZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtsZXRzL1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmgKQEAg
LTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgICAgICBtX2hhc1ByZXBhcmVkRm9yRGVzdHJ1Y3Rp
b24gPSB0cnVlOwogCiAgICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExv
Y2socGFpbnREZWZpbml0aW9uTG9jaygpKTsKKyAgICAgICAgICAgIExvY2tlciBsb2NrZXIgeyBw
YWludERlZmluaXRpb25Mb2NrKCkgfTsKICAgICAgICAgICAgIHBhaW50RGVmaW5pdGlvbk1hcCgp
LmNsZWFyKCk7CiAgICAgICAgIH0KICAgICAgICAgV29ya2xldEdsb2JhbFNjb3BlOjpwcmVwYXJl
Rm9yRGVzdHJ1Y3Rpb24oKTsKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToKICAgICB+UGFpbnRX
b3JrbGV0R2xvYmFsU2NvcGUoKQogICAgIHsKICNpZiBBU1NFUlRfRU5BQkxFRAotICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKHBhaW50RGVmaW5pdGlvbkxvY2soKSk7CisgICAgICAgIExv
Y2tlciBsb2NrZXIgeyBwYWludERlZmluaXRpb25Mb2NrKCkgfTsKICAgICAgICAgQVNTRVJUKHBh
aW50RGVmaW5pdGlvbk1hcCgpLmlzRW1wdHkoKSk7CiAjZW5kaWYKICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>