<?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>219402</bug_id>
          
          <creation_ts>2020-12-01 09:52:53 -0800</creation_ts>
          <short_desc>[Media in GPU Process][MSE] Implement basic video playback</short_desc>
          <delta_ts>2023-03-23 04:37:50 -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>Media</component>
          <version>Other</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=254324</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>
          <dependson>219332</dependson>
          <blocked>219658</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Peng Liu">peng.liu6</reporter>
          <assigned_to name="Peng Liu">peng.liu6</assigned_to>
          <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>philipj</cc>
    
    <cc>pnormand</cc>
    
    <cc>sergio</cc>
    
    <cc>vjaquez</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1711074</commentid>
    <comment_count>0</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-12-01 09:52:53 -0800</bug_when>
    <thetext>To avoid the IPC overhead for every parsed sample, this patch depends on the patch for bug #219332.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1711080</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-01 10:03:50 -0800</bug_when>
    <thetext>&lt;rdar://problem/71855190&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712248</commentid>
    <comment_count>2</comment_count>
      <attachid>415487</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-12-04 22:29:12 -0800</bug_when>
    <thetext>Created attachment 415487
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712262</commentid>
    <comment_count>3</comment_count>
      <attachid>415493</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-12-05 11:13:26 -0800</bug_when>
    <thetext>Created attachment 415493
WIP - fix layout test crashes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712286</commentid>
    <comment_count>4</comment_count>
      <attachid>415504</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-12-05 15:49:28 -0800</bug_when>
    <thetext>Created attachment 415504
WIP - fix issues on youtube</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712290</commentid>
    <comment_count>5</comment_count>
      <attachid>415506</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-12-05 19:36:44 -0800</bug_when>
    <thetext>Created attachment 415506
WIP - update MockSourceBufferPrivate to fix layout test failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712303</commentid>
    <comment_count>6</comment_count>
      <attachid>415512</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-12-05 23:24:43 -0800</bug_when>
    <thetext>Created attachment 415512
WIP - fix build failures on GTK/WPE and layout test failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712365</commentid>
    <comment_count>7</comment_count>
      <attachid>415531</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-12-06 13:17:28 -0800</bug_when>
    <thetext>Created attachment 415531
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712472</commentid>
    <comment_count>8</comment_count>
      <attachid>415531</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-12-07 09:04:43 -0800</bug_when>
    <thetext>Comment on attachment 415531
Patch

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

&gt; Source/WebCore/ChangeLog:73
&gt; +        `SourceBufferPrivate` can figure the values of `hasAudio` and `hasVideo` because it

s/figure/figure out/g</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712997</commentid>
    <comment_count>9</comment_count>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-12-08 18:36:37 -0800</bug_when>
    <thetext>Had a discussion with Jer. The condition variable usage in the source buffer parser seems fragile (and unnecessary). I will upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1712999</commentid>
    <comment_count>10</comment_count>
      <attachid>415699</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-12-08 18:43:02 -0800</bug_when>
    <thetext>Created attachment 415699
Update the patch based on Jer&apos;s comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713013</commentid>
    <comment_count>11</comment_count>
      <attachid>415705</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-12-08 20:33:04 -0800</bug_when>
    <thetext>Created attachment 415705
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713262</commentid>
    <comment_count>12</comment_count>
      <attachid>415785</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-12-09 12:12:06 -0800</bug_when>
    <thetext>Created attachment 415785
Update the patch based on a discussion with Jer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713353</commentid>
    <comment_count>13</comment_count>
      <attachid>415810</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-12-09 16:20:22 -0800</bug_when>
    <thetext>Created attachment 415810
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713354</commentid>
    <comment_count>14</comment_count>
      <attachid>415810</attachid>
    <who name="Peng Liu">peng.liu6</who>
    <bug_when>2020-12-09 16:20:59 -0800</bug_when>
    <thetext>Comment on attachment 415810
Patch

Fix a layout test failure on WK1.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713414</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-09 21:04:33 -0800</bug_when>
    <thetext>Committed r270612: &lt;https://trac.webkit.org/changeset/270612&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 415810.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415487</attachid>
            <date>2020-12-04 22:29:12 -0800</date>
            <delta_ts>2020-12-05 11:13:25 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-219402-20201204222912.patch</filename>
            <type>text/plain</type>
            <size>117133</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RlYmRkNjNmYjkxNzM2
MTE4MDVlOWY1NDI4Zjk0YmExMWJiMWNlNy4uYTFhZWFkM2QzY2NlNmQ3ZWY3NzNlY2EzYjZkNTIz
NTYzMDVkZDEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAyMC0xMi0wNCAgUGVu
ZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUgUHJv
Y2Vzc11bTVNFXSBJbXBsZW1lbnQgYmFzaWMgdmlkZW8gcGxheWJhY2sKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0UHJpdmF0
ZUFuZE9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnNldER1cmF0aW9uSW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVy
cm9yKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OlNvdXJjZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXI6On5Tb3VyY2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXI6Om1heGltdW1CdWZmZXJTaXplIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFs
aXphdGlvblNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpleHRyYU1l
bW9yeUNvc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpyZXBvcnRF
eHRyYU1lbW9yeUFsbG9jYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNl
dE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdl
c0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjppc0J1ZmZlcmVkRGly
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzZXRCdWZmZXJlZERp
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0
ZUhhc0F1ZGlvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
cjo6c291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhU291cmNlUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
b3VyY2VQcml2YXRlOjpzZXRUaW1lRnVkZ2VGYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTb3VyY2VQcml2YXRlOjp0aW1lRnVkZ2VGYWN0b3IgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0QnVmZmVyZWREaXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQcml2YXRlOjpzZXRCdWZmZXJlZFJhbmdlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjp1cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kQ29tcGxldGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmJ1ZmZlcmVkU2FtcGxl
c0ZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6cHJv
dmlkZU1lZGlhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjpy
ZWVucXVldWVNZWRpYUZvclRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJp
dmF0ZTo6cmVlbnF1ZXVlTWVkaWFJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVT
YW1wbGVzRnJvbVRyYWNrQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGU6OmV2aWN0Q29kZWRGcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UHJpdmF0ZTo6dG90YWxUcmFja0J1ZmZlclNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmFkZFRyYWNrQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZVNh
bXBsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6aGFzQXVkaW8gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6aGFzVmlkZW8gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6c3RhcnRDaGFuZ2luZ1R5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0TWF4aW11bVF1
ZXVlRGVwdGhGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGU6OnRpbWVGdWRnZUZhY3RvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlOjpzZXRBY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZTo6c2V0Q3VycmVudFRpbWVGdWRnZUZhY3Rvcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjpidWZmZXJlZCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjppc0J1ZmZlcmVkRGly
dHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZTo6c2V0QnVmZmVyZWREaXJ0eSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1ZpZGVvVHJhY2tQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpkdXJh
dGlvbkNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpmbHVzaFBlbmRpbmdN
ZWRpYURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6
cmVzZXRQYXJzZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBh
cnNlSW5pdGlhbGl6YXRpb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjphcHBlbmRDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRpbWVGdWRnZUZhY3RvciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6aGFzVmlkZW8gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc0F1
ZGlvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06OnJlc2V0UGFyc2VyU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkNsdXN0ZXJCZWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg6CisgICAgICAgICogcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OmR1cmF0aW9uQ2hhbmdlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRS
ZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlOjpzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6Omhhc1ZpZGVvIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpoYXNBdWRp
byBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oOgorCiAyMDIwLTEyLTA0ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkgYXVkaW8gcmVzYW1wbGluZyBjb2Rl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDMzN2E1NDQwZTIxNzZhOWRlNTYyZDJiNTQ3OGQ3OWMxNDA4NDk4ZjEuLjZh
MDU1YTliMzM5ZGM0NTFiMGRiYjU2MjYyYWFjOWIwMzc3NDgzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsODcgQEAKKzIwMjAtMTItMDQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKwor
ICAgICAgICBbTWVkaWEgaW4gR1BVIFByb2Nlc3NdW01TRV0gSW1wbGVtZW50IGJhc2ljIHZpZGVv
IHBsYXliYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTk0MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQXVkaW9UcmFja1Byb3h5Ojpjb25maWd1cmF0aW9uKToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpsb2FkTWVkaWFTb3VyY2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojp1cGRhdGVDYWNoZWRTdGF0ZSk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNlUHJveHk6OmR1cmF0aW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6YnVmZmVyZWQgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpkdXJhdGlvbkNo
YW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpzZXRSZWFk
eVN0YXRlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJv
eHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHku
bWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpS
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5Ojp+UmVtb3RlU291cmNlQnVmZmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0
aWFsaXphdGlvblNlZ21lbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VT
YW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNl
QnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291
cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJy
b3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVm
ZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
U291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5n
ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c2V0QWN0aXZl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNldFJlYWR5U3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6dXBkYXRlQnVm
ZmVyZWRGcm9tVHJhY2tCdWZmZXJzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVm
ZmVyUHJveHk6OmV2aWN0Q29kZWRGcmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eTo6YWRkVHJhY2tCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVT
b3VyY2VCdWZmZXJQcm94eTo6cmVlbnF1ZXVlTWVkaWFJZk5lZWRlZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojp0cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0Vu
cXVldWVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJj
ZUJ1ZmZlclByaXZhdGVIYXNBdWRpbyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlSGFzVmlkZW8gY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVm
ZmVyUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4
dFRyYWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJhY2tQcm94eTo6
Y29uZmlndXJhdGlvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb1Ry
YWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb1RyYWNrUHJveHk6OmNv
bmZpZ3VyYXRpb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0
ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6VGV4dFRyYWNrUHJpdmF0
ZVJlbW90ZUNvbmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlRl
eHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oOgorICAgICAg
ICAoV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uOjpkZWNv
ZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVt
b3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXVkaW9UcmFja1ByaXZhdGVSZW1vdGU6OnVwZGF0
ZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJh
Y2tQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpsb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVNv
dXJjZVByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZh
dGVSZW1vdGU6OmR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNl
UHJpdmF0ZVJlbW90ZTo6aXNFbmRlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291
cmNlUHJpdmF0ZVJlbW90ZTo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAo
V2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpmbHVzaCk6CisgICAgICAgIChXZWJL
aXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNldEFjdGl2ZSk6CisgICAgICAgIChXZWJL
aXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVm
ZmVycyk6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmV2aWN0
Q29kZWRGcmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
OjphZGRUcmFja0J1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGU6OnJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlOjp0cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKToK
KyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVy
UHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQpOgorICAgICAgICAoV2ViS2l0
OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25D
aGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291
cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6U291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFu
Z2VkKToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNl
QnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlNv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmVucXVldWVTYW1wbGUpOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZh
dGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjp1
cGRhdGVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9WaWRl
b1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvVHJhY2tQcml2
YXRlUmVtb3RlOjp1cGRhdGVDb25maWd1cmF0aW9uKToKKwogMjAyMC0xMi0wNCAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBDYW5jZWwgaW1h
Z2UgZXh0cmFjdGlvbiB3aGVuIG5hdmlnYXRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKaW5kZXggZmVlNTQ3MzlkNTVmMGUxZDVh
MTZiNWFjOWIxNGIyYzBhYjcyZjg5MS4uOTk3OTAyN2I0NTRmYjQxMDVlNzBmYjA2NmY1YWY3ZDNk
YTY5M2UwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5jcHAKQEAgLTEyNCw2ICsxMjQsNyBAQCB2b2lkIE1lZGlhU291cmNlOjpzZXRQ
cml2YXRlQW5kT3BlbihSZWY8TWVkaWFTb3VyY2VQcml2YXRlPiYmIG1lZGlhU291cmNlUHJpdmF0
ZQogICAgIEFTU0VSVCghbV9wcml2YXRlKTsKICAgICBBU1NFUlQobV9tZWRpYUVsZW1lbnQpOwog
ICAgIG1fcHJpdmF0ZSA9IFdURk1vdmUobWVkaWFTb3VyY2VQcml2YXRlKTsKKyAgICBtX3ByaXZh
dGUtPnNldFRpbWVGdWRnZUZhY3RvcihjdXJyZW50VGltZUZ1ZGdlRmFjdG9yKCkpOwogCiAgICAg
Ly8gMi40LjEgQXR0YWNoaW5nIHRvIGEgbWVkaWEgZWxlbWVudAogICAgIC8vIGh0dHBzOi8vcmF3
Z2l0LmNvbS93M2MvbWVkaWEtc291cmNlLzQ1NjI3NjQ2MzQ0ZWVhMDE3MGRkMWNiYzVhM2Q1MDhj
YTc1MWFiYjgvbWVkaWEtc291cmNlLXJlc3BlYy5odG1sI21lZGlhc291cmNlLWF0dGFjaApAQCAt
NTU2LDcgKzU1Nyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhU291cmNlOjpzZXREdXJhdGlv
bkludGVybmFsKGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24pCiAgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSLCBkdXJhdGlvbik7CiAKICAgICAvLyA2LiBVcGRhdGUgdGhlIG1lZGlhIGR1cmF0
aW9uIHRvIG5ldyBkdXJhdGlvbiBhbmQgcnVuIHRoZSBIVE1MTWVkaWFFbGVtZW50IGR1cmF0aW9u
IGNoYW5nZSBhbGdvcml0aG0uCi0gICAgbV9wcml2YXRlLT5kdXJhdGlvbkNoYW5nZWQoKTsKKyAg
ICBtX3ByaXZhdGUtPmR1cmF0aW9uQ2hhbmdlZChkdXJhdGlvbik7CiAKICAgICByZXR1cm4geyB9
OwogfQpAQCAtNjQzLDYgKzY0NCw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0
aEVycm9yKE9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+IGVycm9yKQogICAgICAgICAgICAgLy8g
ICAgTk9URTogVGhpcyBzdGVwIGlzIGhhbmRsZWQgYnkgSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFM
b2FkaW5nRmFpbGVkRmF0YWxseSgpLgogICAgICAgICAgICAgbV9tZWRpYUVsZW1lbnQtPm1lZGlh
TG9hZGluZ0ZhaWxlZEZhdGFsbHkoTWVkaWFQbGF5ZXI6Ok5ldHdvcmtTdGF0ZTo6TmV0d29ya0Vy
cm9yKTsKICAgICAgICAgfQorICAgICAgICBtX3ByaXZhdGUtPm1hcmtFbmRPZlN0cmVhbShNZWRp
YVNvdXJjZVByaXZhdGU6OkVvc05ldHdvcmtFcnJvcik7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
Ly8g4oazIElmIGVycm9yIGlzIHNldCB0byAiZGVjb2RlIgogICAgICAgICBBU1NFUlQoZXJyb3Ig
PT0gRW5kT2ZTdHJlYW1FcnJvcjo6RGVjb2RlKTsKQEAgLTY1OSw2ICs2NjEsNyBAQCB2b2lkIE1l
ZGlhU291cmNlOjpzdHJlYW1FbmRlZFdpdGhFcnJvcihPcHRpb25hbDxFbmRPZlN0cmVhbUVycm9y
PiBlcnJvcikKICAgICAgICAgICAgIC8vICAgIE5PVEU6IFRoaXMgc3RlcCBpcyBoYW5kbGVkIGJ5
IEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhTG9hZGluZ0ZhaWxlZEZhdGFsbHkoKS4KICAgICAgICAg
ICAgIG1fbWVkaWFFbGVtZW50LT5tZWRpYUxvYWRpbmdGYWlsZWRGYXRhbGx5KE1lZGlhUGxheWVy
OjpOZXR3b3JrU3RhdGU6OkRlY29kZUVycm9yKTsKICAgICAgICAgfQorICAgICAgICBtX3ByaXZh
dGUtPm1hcmtFbmRPZlN0cmVhbShNZWRpYVNvdXJjZVByaXZhdGU6OkVvc0RlY29kZUVycm9yKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
U291cmNlQnVmZmVyLmNwcAppbmRleCBjZGUxODNmODkyNzQ3ZDMyYWRhODJlN2Q1ZTJiOWI0M2Vj
NTNiZGZlLi5jYzE2ZjE3ZTQwZjZhYzg4Mjc5MDI2YTE2NjhhODE0YjI1YjhlM2RmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3Bw
CkBAIC04MSw2ICs4MSw3IEBAIFNvdXJjZUJ1ZmZlcjo6U291cmNlQnVmZmVyKFJlZjxTb3VyY2VC
dWZmZXJQcml2YXRlPiYmIHNvdXJjZUJ1ZmZlclByaXZhdGUsIE1lZGlhCiAgICAgLCBtX2FwcGVu
ZFdpbmRvd0VuZChNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkpCiAgICAgLCBtX2Fw
cGVuZFN0YXRlKFdhaXRpbmdGb3JTZWdtZW50KQogICAgICwgbV90aW1lT2ZCdWZmZXJpbmdNb25p
dG9yKE1vbm90b25pY1RpbWU6Om5vdygpKQorICAgICwgbV9idWZmZXJlZChUaW1lUmFuZ2VzOjpj
cmVhdGUoKSkKICAgICAsIG1fcGVuZGluZ1JlbW92ZVN0YXJ0KE1lZGlhVGltZTo6aW52YWxpZFRp
bWUoKSkKICAgICAsIG1fcGVuZGluZ1JlbW92ZUVuZChNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkp
CiAgICAgLCBtX3JlbW92ZVRpbWVyKCp0aGlzLCAmU291cmNlQnVmZmVyOjpyZW1vdmVUaW1lckZp
cmVkKQpAQCAtOTQsNyArOTUsNiBAQCBTb3VyY2VCdWZmZXI6OlNvdXJjZUJ1ZmZlcihSZWY8U291
cmNlQnVmZmVyUHJpdmF0ZT4mJiBzb3VyY2VCdWZmZXJQcml2YXRlLCBNZWRpYQogCiAgICAgbV9w
cml2YXRlLT5zZXRDbGllbnQodGhpcyk7CiAgICAgbV9wcml2YXRlLT5zZXRJc0F0dGFjaGVkKHRy
dWUpOwotICAgIG1fcHJpdmF0ZS0+c2V0Q3VycmVudFRpbWVGdWRnZUZhY3RvcihtX3NvdXJjZS0+
Y3VycmVudFRpbWVGdWRnZUZhY3RvcigpKTsKIH0KIAogU291cmNlQnVmZmVyOjp+U291cmNlQnVm
ZmVyKCkKQEAgLTEwMiw4ICsxMDIsOCBAQCBTb3VyY2VCdWZmZXI6On5Tb3VyY2VCdWZmZXIoKQog
ICAgIEFTU0VSVChpc1JlbW92ZWQoKSk7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsK
IAotICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KG51bGxwdHIpOwogICAgIG1fcHJpdmF0ZS0+c2V0
SXNBdHRhY2hlZChmYWxzZSk7CisgICAgbV9wcml2YXRlLT5zZXRDbGllbnQobnVsbHB0cik7CiB9
CiAKIEV4Y2VwdGlvbk9yPFJlZjxUaW1lUmFuZ2VzPj4gU291cmNlQnVmZmVyOjpidWZmZXJlZCgp
IGNvbnN0CkBAIC0xMTYsNyArMTE2LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFRpbWVSYW5nZXM+PiBT
b3VyY2VCdWZmZXI6OmJ1ZmZlcmVkKCkgY29uc3QKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yIH07CiAKICAgICAvLyAyLiBSZXR1cm4gYSBuZXcgc3RhdGljIG5v
cm1hbGl6ZWQgVGltZVJhbmdlcyBvYmplY3QgZm9yIHRoZSBtZWRpYSBzZWdtZW50cyBidWZmZXJl
ZC4KLSAgICByZXR1cm4gbV9wcml2YXRlLT5idWZmZXJlZCgpLT5jb3B5KCk7CisgICAgcmV0dXJu
IG1fYnVmZmVyZWQtPmNvcHkoKTsKIH0KIAogZG91YmxlIFNvdXJjZUJ1ZmZlcjo6dGltZXN0YW1w
T2Zmc2V0KCkgY29uc3QKQEAgLTU1MiwxMCArNTUyLDYgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNv
dXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQgcmVzdWx0KQogICAg
IGlmIChpc1JlbW92ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gUmVzb2x2ZSB0aGUg
Y2hhbmdlcyBpdCBUcmFja0J1ZmZlcnMnIGJ1ZmZlcmVkIHJhbmdlcwotICAgIC8vIGludG8gdGhl
IFNvdXJjZUJ1ZmZlcidzIGJ1ZmZlcmVkIHJhbmdlcwotICAgIG1fcHJpdmF0ZS0+dXBkYXRlQnVm
ZmVyZWRGcm9tVHJhY2tCdWZmZXJzKG1fc291cmNlLT5pc0VuZGVkKCkpOwotCiAgICAgLy8gU2Vj
dGlvbiAzLjUuNSBCdWZmZXIgQXBwZW5kIEFsZ29yaXRobSwgY3RkLgogICAgIC8vIGh0dHBzOi8v
ZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS9kZWZhdWx0L21lZGlhLXNvdXJjZS9t
ZWRpYS1zb3VyY2UuaHRtbCNzb3VyY2VidWZmZXItYnVmZmVyLWFwcGVuZAogCkBAIC02MzQsNyAr
NjMwLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnJlbW92ZVRpbWVyRmlyZWQoKQogICAgIHNjaGVk
dWxlRXZlbnQoZXZlbnROYW1lcygpLnVwZGF0ZWVuZEV2ZW50KTsKIH0KIAotc2l6ZV90IFNvdXJj
ZUJ1ZmZlcjo6bWF4aW11bUJ1ZmZlclNpemUoKSBjb25zdAordWludDY0X3QgU291cmNlQnVmZmVy
OjptYXhpbXVtQnVmZmVyU2l6ZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzUmVtb3ZlZCgpKQogICAg
ICAgICByZXR1cm4gMDsKQEAgLTY3OCwxMCArNjc0LDEyIEBAIHZvaWQgU291cmNlQnVmZmVyOjpz
ZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAgIG1fc291cmNlLT5zb3VyY2VCdWZmZXJEaWRD
aGFuZ2VBY3RpdmVTdGF0ZSgqdGhpcywgYWN0aXZlKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXI6
OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0
IEluaXRpYWxpemF0aW9uU2VnbWVudCYgc2VnbWVudCkKK3ZvaWQgU291cmNlQnVmZmVyOjpzb3Vy
Y2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0aWFsaXph
dGlvblNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGlzUmVtb3ZlZCgpKQorICAgIGlmIChpc1JlbW92ZWQo
KSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47CisgICAg
fQogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIApAQCAtNzA0LDYgKzcwMiw3IEBA
IHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxp
emF0aW9uU2VnbWVudChjb25zdCBJbml0CiAgICAgLy8gd2l0aCB0aGUgZGVjb2RlIGVycm9yIHBh
cmFtZXRlciBzZXQgdG8gdHJ1ZSBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgaWYgKHNlZ21l
bnQuYXVkaW9UcmFja3MuaXNFbXB0eSgpICYmIHNlZ21lbnQudmlkZW9UcmFja3MuaXNFbXB0eSgp
ICYmIHNlZ21lbnQudGV4dFRyYWNrcy5pc0VtcHR5KCkpIHsKICAgICAgICAgYXBwZW5kRXJyb3Io
dHJ1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTcxMyw2ICs3MTIsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVy
UHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgSW5pdAogICAgICAg
ICAvLyB3aXRoIHRoZSBkZWNvZGUgZXJyb3IgcGFyYW1ldGVyIHNldCB0byB0cnVlIGFuZCBhYm9y
dCB0aGVzZSBzdGVwcy4KICAgICAgICAgaWYgKCF2YWxpZGF0ZUluaXRpYWxpemF0aW9uU2VnbWVu
dChzZWdtZW50KSkgewogICAgICAgICAgICAgYXBwZW5kRXJyb3IodHJ1ZSk7CisgICAgICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
QEAgLTgxNSwxMCArODE1LDEwIEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2
YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0CiAgICAgICAgICAg
ICAvLyByZWZlcmVuY2VkIGJ5IHRoZSBhdWRpb1RyYWNrcyBhdHRyaWJ1dGUgb24gdGhlIEhUTUxN
ZWRpYUVsZW1lbnQuCiAgICAgICAgICAgICBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCktPmVuc3Vy
ZUF1ZGlvVHJhY2tzKCkuYXBwZW5kKG5ld0F1ZGlvVHJhY2suY29weVJlZigpKTsKIAotICAgICAg
ICAgICAgLy8gNS4yLjggQ3JlYXRlIGEgbmV3IHRyYWNrIGJ1ZmZlciB0byBzdG9yZSBjb2RlZCBm
cmFtZXMgZm9yIHRoaXMgdHJhY2suCi0gICAgICAgICAgICBtX3ByaXZhdGUtPmFkZFRyYWNrQnVm
ZmVyKG5ld0F1ZGlvVHJhY2stPmlkKCksIGF1ZGlvVHJhY2tJbmZvLmRlc2NyaXB0aW9uKTsKLQog
ICAgICAgICAgICAgbV9hdWRpb0NvZGVjcy5hcHBlbmQoYXVkaW9UcmFja0luZm8uZGVzY3JpcHRp
b24tPmNvZGVjKCkpOworCisgICAgICAgICAgICAvLyA1LjIuOCBDcmVhdGUgYSBuZXcgdHJhY2sg
YnVmZmVyIHRvIHN0b3JlIGNvZGVkIGZyYW1lcyBmb3IgdGhpcyB0cmFjay4KKyAgICAgICAgICAg
IG1fcHJpdmF0ZS0+YWRkVHJhY2tCdWZmZXIobmV3QXVkaW9UcmFjay0+aWQoKSwgV1RGTW92ZShh
dWRpb1RyYWNrSW5mby5kZXNjcmlwdGlvbikpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gNS4z
IEZvciBlYWNoIHZpZGVvIHRyYWNrIGluIHRoZSBpbml0aWFsaXphdGlvbiBzZWdtZW50LCBydW4g
Zm9sbG93aW5nIHN0ZXBzOgpAQCAtODUwLDEwICs4NTAsMTAgQEAgdm9pZCBTb3VyY2VCdWZmZXI6
OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0
IEluaXQKICAgICAgICAgICAgIC8vIHJlZmVyZW5jZWQgYnkgdGhlIHZpZGVvVHJhY2tzIGF0dHJp
YnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KICAgICAgICAgICAgIG1fc291cmNlLT5tZWRp
YUVsZW1lbnQoKS0+ZW5zdXJlVmlkZW9UcmFja3MoKS5hcHBlbmQobmV3VmlkZW9UcmFjay5jb3B5
UmVmKCkpOwogCi0gICAgICAgICAgICAvLyA1LjMuOCBDcmVhdGUgYSBuZXcgdHJhY2sgYnVmZmVy
IHRvIHN0b3JlIGNvZGVkIGZyYW1lcyBmb3IgdGhpcyB0cmFjay4KLSAgICAgICAgICAgIG1fcHJp
dmF0ZS0+YWRkVHJhY2tCdWZmZXIobmV3VmlkZW9UcmFjay0+aWQoKSwgdmlkZW9UcmFja0luZm8u
ZGVzY3JpcHRpb24pOwotCiAgICAgICAgICAgICBtX3ZpZGVvQ29kZWNzLmFwcGVuZCh2aWRlb1Ry
YWNrSW5mby5kZXNjcmlwdGlvbi0+Y29kZWMoKSk7CisKKyAgICAgICAgICAgIC8vIDUuMy44IENy
ZWF0ZSBhIG5ldyB0cmFjayBidWZmZXIgdG8gc3RvcmUgY29kZWQgZnJhbWVzIGZvciB0aGlzIHRy
YWNrLgorICAgICAgICAgICAgbV9wcml2YXRlLT5hZGRUcmFja0J1ZmZlcihuZXdWaWRlb1RyYWNr
LT5pZCgpLCBXVEZNb3ZlKHZpZGVvVHJhY2tJbmZvLmRlc2NyaXB0aW9uKSk7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyA1LjQgRm9yIGVhY2ggdGV4dCB0cmFjayBpbiB0aGUgaW5pdGlhbGl6YXRp
b24gc2VnbWVudCwgcnVuIGZvbGxvd2luZyBzdGVwczoKQEAgLTg4MiwxMCArODgyLDEwIEBAIHZv
aWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0
aW9uU2VnbWVudChjb25zdCBJbml0CiAgICAgICAgICAgICAvLyByZWZlcmVuY2VkIGJ5IHRoZSB0
ZXh0VHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KICAgICAgICAgICAg
IG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+ZW5zdXJlVGV4dFRyYWNrcygpLmFwcGVuZChuZXdU
ZXh0VHJhY2suY29weVJlZigpKTsKIAotICAgICAgICAgICAgLy8gNS40LjcgQ3JlYXRlIGEgbmV3
IHRyYWNrIGJ1ZmZlciB0byBzdG9yZSBjb2RlZCBmcmFtZXMgZm9yIHRoaXMgdHJhY2suCi0gICAg
ICAgICAgICBtX3ByaXZhdGUtPmFkZFRyYWNrQnVmZmVyKG5ld1RleHRUcmFjay0+aWQoKSwgdGV4
dFRyYWNrSW5mby5kZXNjcmlwdGlvbik7Ci0KICAgICAgICAgICAgIG1fdGV4dENvZGVjcy5hcHBl
bmQodGV4dFRyYWNrSW5mby5kZXNjcmlwdGlvbi0+Y29kZWMoKSk7CisKKyAgICAgICAgICAgIC8v
IDUuNC43IENyZWF0ZSBhIG5ldyB0cmFjayBidWZmZXIgdG8gc3RvcmUgY29kZWQgZnJhbWVzIGZv
ciB0aGlzIHRyYWNrLgorICAgICAgICAgICAgbV9wcml2YXRlLT5hZGRUcmFja0J1ZmZlcihuZXdU
ZXh0VHJhY2stPmlkKCksIFdURk1vdmUodGV4dFRyYWNrSW5mby5kZXNjcmlwdGlvbikpOwogICAg
ICAgICB9CiAKICAgICAgICAgLy8gNS41IElmIGFjdGl2ZSB0cmFjayBmbGFnIGVxdWFscyB0cnVl
LCB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgpAQCAtOTAyLDYgKzkwMiw3IEBAIHZvaWQg
U291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9u
U2VnbWVudChjb25zdCBJbml0CiAgICAgLy8gKE5vdGU6IElzc3VlICMxNTUgYWRkcyB0aGlzIHN0
ZXAgYWZ0ZXIgc3RlcCA1OikKICAgICAvLyA2LiBTZXQgIHBlbmRpbmcgaW5pdGlhbGl6YXRpb24g
c2VnbWVudCBmb3IgY2hhbmdlVHlwZSBmbGFnICB0byBmYWxzZS4KICAgICBtX3BlbmRpbmdJbml0
aWFsaXphdGlvblNlZ21lbnRGb3JDaGFuZ2VUeXBlID0gZmFsc2U7CisgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKIAogICAgIC8vIDYuIElmIHRoZSBIVE1MTWVkaWFFbGVtZW50LnJlYWR5U3RhdGUg
YXR0cmlidXRlIGlzIEhBVkVfTk9USElORywgdGhlbiBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoK
ICAgICBpZiAobV9wcml2YXRlLT5yZWFkeVN0YXRlKCkgPT0gTWVkaWFQbGF5ZXI6OlJlYWR5U3Rh
dGU6OkhhdmVOb3RoaW5nKSB7CkBAIC0xMDExLDE2ICsxMDEyLDYgQEAgYm9vbCBTb3VyY2VCdWZm
ZXI6Omhhc1ZpZGVvKCkgY29uc3QKICAgICByZXR1cm4gbV92aWRlb1RyYWNrcyAmJiBtX3ZpZGVv
VHJhY2tzLT5sZW5ndGgoKTsKIH0KIAotYm9vbCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclBy
aXZhdGVIYXNBdWRpbygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGhhc0F1ZGlvKCk7Ci19Ci0KLWJv
b2wgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlSGFzVmlkZW8oKSBjb25zdAotewot
ICAgIHJldHVybiBoYXNWaWRlbygpOwotfQotCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6dmlkZW9UcmFj
a1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykKIHsKICAgICAvLyAyLjQuNSBDaGFu
Z2VzIHRvIHNlbGVjdGVkL2VuYWJsZWQgdHJhY2sgc3RhdGUKQEAgLTEyMDQsOSArMTE5NSw5IEBA
IGJvb2wgU291cmNlQnVmZmVyOjpjYW5QbGF5VGhyb3VnaFJhbmdlKFBsYXRmb3JtVGltZVJhbmdl
cyYgcmFuZ2VzKQogICAgIHJldHVybiB1bmJ1ZmZlcmVkVGltZS50b0RvdWJsZSgpIC8gbV9hdmVy
YWdlQnVmZmVyUmF0ZSA8IHRpbWVSZW1haW5pbmcudG9Eb3VibGUoKTsKIH0KIAotc2l6ZV90IFNv
dXJjZUJ1ZmZlcjo6ZXh0cmFNZW1vcnlDb3N0KCkgY29uc3QKK3VpbnQ2NF90IFNvdXJjZUJ1ZmZl
cjo6ZXh0cmFNZW1vcnlDb3N0KCkgY29uc3QKIHsKLSAgICBzaXplX3QgZXh0cmFNZW1vcnlDb3N0
ID0gbV9wZW5kaW5nQXBwZW5kRGF0YS5jYXBhY2l0eSgpOworICAgIHVpbnQ2NF90IGV4dHJhTWVt
b3J5Q29zdCA9IG1fcGVuZGluZ0FwcGVuZERhdGEuY2FwYWNpdHkoKTsKICAgICBleHRyYU1lbW9y
eUNvc3QgKz0gbV9wcml2YXRlLT50b3RhbFRyYWNrQnVmZmVyU2l6ZUluQnl0ZXMoKTsKIAogICAg
IHJldHVybiBleHRyYU1lbW9yeUNvc3Q7CkBAIC0xMjE0LDExICsxMjA1LDExIEBAIHNpemVfdCBT
b3VyY2VCdWZmZXI6OmV4dHJhTWVtb3J5Q29zdCgpIGNvbnN0CiAKIHZvaWQgU291cmNlQnVmZmVy
OjpyZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZCgpCiB7Ci0gICAgc2l6ZV90IGV4dHJhTWVtb3J5
Q29zdCA9IHRoaXMtPmV4dHJhTWVtb3J5Q29zdCgpOworICAgIHVpbnQ2NF90IGV4dHJhTWVtb3J5
Q29zdCA9IHRoaXMtPmV4dHJhTWVtb3J5Q29zdCgpOwogICAgIGlmIChleHRyYU1lbW9yeUNvc3Qg
PD0gbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2l6
ZV90IGV4dHJhTWVtb3J5Q29zdERlbHRhID0gZXh0cmFNZW1vcnlDb3N0IC0gbV9yZXBvcnRlZEV4
dHJhTWVtb3J5Q29zdDsKKyAgICB1aW50NjRfdCBleHRyYU1lbW9yeUNvc3REZWx0YSA9IGV4dHJh
TWVtb3J5Q29zdCAtIG1fcmVwb3J0ZWRFeHRyYU1lbW9yeUNvc3Q7CiAgICAgbV9yZXBvcnRlZEV4
dHJhTWVtb3J5Q29zdCA9IGV4dHJhTWVtb3J5Q29zdDsKIAogICAgIEpTQzo6SlNMb2NrSG9sZGVy
IGxvY2soc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT52bSgpKTsKQEAgLTEyNDIsNyArMTIzMyw3
IEBAIE1lZGlhVGltZSBTb3VyY2VCdWZmZXI6Om1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRp
bWVGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWluaW11
bVVwY29taW5nUHJlc2VudGF0aW9uVGltZUZvclRyYWNrSUQodHJhY2tJRCk7CiB9CiAKLXZvaWQg
U291cmNlQnVmZmVyOjpzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQoY29uc3QgQXRvbVN0
cmluZyYgdHJhY2tJRCwgc2l6ZV90IG1heFF1ZXVlRGVwdGgpCit2b2lkIFNvdXJjZUJ1ZmZlcjo6
c2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQs
IHVpbnQ2NF90IG1heFF1ZXVlRGVwdGgpCiB7CiAgICAgbV9wcml2YXRlLT5zZXRNYXhpbXVtUXVl
dWVEZXB0aEZvclRyYWNrSUQodHJhY2tJRCwgbWF4UXVldWVEZXB0aCk7CiB9CkBAIC0xMzAyLDE0
ICsxMjkzLDI1IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzZXRTaG91bGRHZW5lcmF0ZVRpbWVzdGFt
cHMoYm9vbCBmbGFnKQogICAgIG1fcHJpdmF0ZS0+c2V0U2hvdWxkR2VuZXJhdGVUaW1lc3RhbXBz
KGZsYWcpOwogfQogCit2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZl
cmVkRGlydHlDaGFuZ2VkKGJvb2wgZmxhZykKK3sKKyAgICBtX2J1ZmZlcmVkRGlydHkgPSBmbGFn
OworfQorCit2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFu
Z2VzQ2hhbmdlZChjb25zdCBQbGF0Zm9ybVRpbWVSYW5nZXMmIHRpbWVSYW5nZXMpCit7CisgICAg
bV9idWZmZXJlZC0+cmFuZ2VzKCkgPSB0aW1lUmFuZ2VzOworICAgIG1fc291cmNlLT5tb25pdG9y
U291cmNlQnVmZmVycygpOworfQorCiBib29sIFNvdXJjZUJ1ZmZlcjo6aXNCdWZmZXJlZERpcnR5
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5pc0J1ZmZlcmVkRGlydHkoKTsKKyAg
ICByZXR1cm4gbV9idWZmZXJlZERpcnR5OwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6c2V0QnVm
ZmVyZWREaXJ0eShib29sIGZsYWcpCiB7Ci0gICAgbV9wcml2YXRlLT5zZXRCdWZmZXJlZERpcnR5
KGZsYWcpOworICAgIG1fYnVmZmVyZWREaXJ0eSA9IGZsYWc7CiB9CiAKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1Nv
dXJjZUJ1ZmZlci5oCmluZGV4IGQxNWMyOWJjZDg4NjJlOTJiNDZkOTNiMDEyNTA1MDE5MzQ5ZTJj
ZjguLjIyOTNiYzUwNzdiYjE3Njk4NDIyZGUwZTY2ZWRmNGE3OWIxZmFlNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAtOTYs
NyArOTYsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlKGNvbnN0IE1l
ZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNoYW5n
ZVR5cGUoY29uc3QgU3RyaW5nJik7CiAKLSAgICBjb25zdCBUaW1lUmFuZ2VzJiBidWZmZXJlZElu
dGVybmFsKCkgY29uc3QgeyBBU1NFUlQobV9wcml2YXRlLT5idWZmZXJlZCgpKTsgcmV0dXJuICpt
X3ByaXZhdGUtPmJ1ZmZlcmVkKCk7IH0KKyAgICBjb25zdCBUaW1lUmFuZ2VzJiBidWZmZXJlZElu
dGVybmFsKCkgY29uc3QgeyBBU1NFUlQobV9idWZmZXJlZCk7IHJldHVybiAqbV9idWZmZXJlZDsg
fQogCiAgICAgdm9pZCBhYm9ydElmVXBkYXRpbmcoKTsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVk
aWFTb3VyY2UoKTsKQEAgLTE0OCwxNSArMTQ4LDE1IEBAIHByaXZhdGU6CiAgICAgYm9vbCB2aXJ0
dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAKICAgICAvLyBTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50Ci0gICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUlu
aXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0aWFsaXphdGlvblNlZ21lbnQmKSBmaW5hbDsK
KyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdt
ZW50KEluaXRpYWxpemF0aW9uU2VnbWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
IGZpbmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZVN0cmVhbUVuZGVkV2l0aERlY29k
ZUVycm9yKCkgZmluYWw7CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kRXJyb3Io
Ym9vbCBkZWNvZGVFcnJvcikgZmluYWw7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBw
ZW5kQ29tcGxldGUoQXBwZW5kUmVzdWx0KSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclBy
aXZhdGVEdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbikgZmluYWw7CiAg
ICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoZG91YmxlIHNhbXBsZUR1
cmF0aW9uKSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWREcm9wU2FtcGxl
KCkgZmluYWw7Ci0gICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlU3RyZWFtRW5kZWRXaXRoRGVj
b2RlRXJyb3IoKSBmaW5hbDsKLSAgICBib29sIHNvdXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRpbygp
IGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKCkgY29u
c3QgZmluYWw7Ci0gICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoQXBw
ZW5kUmVzdWx0KSBmaW5hbDsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERp
cnR5Q2hhbmdlZChib29sKSBmaW5hbDsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVCdWZm
ZXJlZFJhbmdlc0NoYW5nZWQoY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJikgZmluYWw7CiAgICAg
dm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVJlbmRlcmluZ0Vycm9yKGludCBlcnJv
ckNvZGUpIGZpbmFsOwogCiAgICAgLy8gQXVkaW9UcmFja0NsaWVudApAQCAtMTg1LDEzICsxODUs
MTMgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgdmFsaWRhdGVJbml0aWFsaXphdGlvblNlZ21lbnQo
Y29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50Jik7CiAKLSAgICBzaXplX3QgbWF4aW11bUJ1ZmZl
clNpemUoKSBjb25zdDsKKyAgICB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSgpIGNvbnN0Owog
CiAgICAgdm9pZCBtb25pdG9yQnVmZmVyaW5nUmF0ZSgpOwogCiAgICAgdm9pZCByZW1vdmVUaW1l
ckZpcmVkKCk7CiAKLSAgICBzaXplX3QgZXh0cmFNZW1vcnlDb3N0KCkgY29uc3Q7CisgICAgdWlu
dDY0X3QgZXh0cmFNZW1vcnlDb3N0KCkgY29uc3Q7CiAgICAgdm9pZCByZXBvcnRFeHRyYU1lbW9y
eUFsbG9jYXRlZCgpOwogCiAgICAgdm9pZCBhcHBlbmRFcnJvcihib29sKTsKQEAgLTIwNCw3ICsy
MDQsNyBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGJ1ZmZl
cmVkU2FtcGxlc0ZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIFZlY3RvcjxTdHJpbmc+IGVucXVldWVkU2FtcGxlc0ZvclRyYWNrSUQoY29uc3QgQXRvbVN0
cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhVGltZSBtaW5pbXVtVXBjb21pbmdQcmVz
ZW50YXRpb25UaW1lRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmlu
ZyYsIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNYXhpbXVtUXVldWVEZXB0
aEZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYsIHVpbnQ2NF90KTsKIAogICAgIFJlZjxTb3Vy
Y2VCdWZmZXJQcml2YXRlPiBtX3ByaXZhdGU7CiAgICAgTWVkaWFTb3VyY2UqIG1fc291cmNlOwpA
QCAtMjMxLDggKzIzMSwxMCBAQCBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV90aW1lT2ZC
dWZmZXJpbmdNb25pdG9yOwogICAgIGRvdWJsZSBtX2J1ZmZlcmVkU2luY2VMYXN0TW9uaXRvciB7
IDAgfTsKICAgICBkb3VibGUgbV9hdmVyYWdlQnVmZmVyUmF0ZSB7IDAgfTsKKyAgICBib29sIG1f
YnVmZmVyZWREaXJ0eSB7IHRydWUgfTsKKyAgICBSZWZQdHI8VGltZVJhbmdlcz4gbV9idWZmZXJl
ZDsKIAotICAgIHNpemVfdCBtX3JlcG9ydGVkRXh0cmFNZW1vcnlDb3N0IHsgMCB9OworICAgIHVp
bnQ2NF90IG1fcmVwb3J0ZWRFeHRyYU1lbW9yeUNvc3QgeyAwIH07CiAKICAgICBNZWRpYVRpbWUg
bV9wZW5kaW5nUmVtb3ZlU3RhcnQ7CiAgICAgTWVkaWFUaW1lIG1fcGVuZGluZ1JlbW92ZUVuZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhU291cmNl
UHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQ
cml2YXRlLmgKaW5kZXggNjU3MGJmNmVlOTY4MjdlMDA5NDZmOWYxOTYwODhhZGMyYzRiZGI2My4u
MjkzMjg4NjNiMTRmMjZkY2I5Y2MxMWMwMjM2NjBkNTIwM2I4OTBmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmgKQEAg
LTU1LDEwICs1NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIFJlYWNoZWRJZExpbWl0CiAgICAgfTsK
ICAgICB2aXJ0dWFsIEFkZFN0YXR1cyBhZGRTb3VyY2VCdWZmZXIoY29uc3QgQ29udGVudFR5cGUm
LCBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZT4mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGR1
cmF0aW9uQ2hhbmdlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHVyYXRpb25DaGFuZ2VkKGNv
bnN0IE1lZGlhVGltZSYpID0gMDsKICAgICBlbnVtIEVuZE9mU3RyZWFtU3RhdHVzIHsgRW9zTm9F
cnJvciwgRW9zTmV0d29ya0Vycm9yLCBFb3NEZWNvZGVFcnJvciB9OwogICAgIHZpcnR1YWwgdm9p
ZCBtYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgdW5tYXJrRW5kT2ZTdHJlYW0oKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRW5kZWQoKSBj
b25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3Rh
dGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGUpID0gMDsKQEAgLTY2LDEwICs2NywxMyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHdhaXRGb3JTZWVrQ29tcGxldGVkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZWVrQ29tcGxldGVkKCkgPSAwOwogCisgICAgdm9pZCBzZXRUaW1lRnVkZ2VGYWN0b3IoY29uc3Qg
TWVkaWFUaW1lJiBmdWRnZUZhY3RvcikgeyBtX3RpbWVGdWRnZUZhY3RvciA9IGZ1ZGdlRmFjdG9y
OyB9CisgICAgTWVkaWFUaW1lIHRpbWVGdWRnZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdGlt
ZUZ1ZGdlRmFjdG9yOyB9CiAgICAgdm9pZCBzZXRJc1NlZWtpbmcoYm9vbCBmbGFnKSB7IG1faXNT
ZWVraW5nID0gZmxhZzsgfQogICAgIGJvb2wgaXNTZWVraW5nKCkgY29uc3QgeyByZXR1cm4gbV9p
c1NlZWtpbmc7IH0KIAogcHJpdmF0ZToKKyAgICBNZWRpYVRpbWUgbV90aW1lRnVkZ2VGYWN0b3I7
CiAgICAgYm9vbCBtX2lzU2Vla2luZyB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCmlu
ZGV4IDBmM2ZhNjZkOTkxZWIzOWEzMDYxYWUyZjhlYmZlZWIyZDUzMDQ1YzkuLjE5NzgzMWFhZTY2
ZjhkYWQ0MzlhZTdlZmVmYjY2NjgyOThhNDJlNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC02NSw2
ICs2NSw4IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGUoKQogewog
fQogCitTb3VyY2VCdWZmZXJQcml2YXRlOjp+U291cmNlQnVmZmVyUHJpdmF0ZSgpID0gZGVmYXVs
dDsKKwogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpyZXNldFRpbWVzdGFtcE9mZnNldEluVHJh
Y2tCdWZmZXJzKCkKIHsKICAgICBmb3IgKGF1dG8mIHRyYWNrQnVmZmVyIDogbV90cmFja0J1ZmZl
ck1hcC52YWx1ZXMoKSkgewpAQCAtNzMsNiArNzUsMTIgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlOjpyZXNldFRpbWVzdGFtcE9mZnNldEluVHJhY2tCdWZmZXJzKCkKICAgICB9CiB9CiAKK3Zv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0QnVmZmVyZWREaXJ0eShib29sIGZsYWcpCit7Cisg
ICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUJ1
ZmZlcmVkRGlydHlDaGFuZ2VkKGZsYWcpOworfQorCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6
OnJlc2V0VHJhY2tCdWZmZXJzKCkKIHsKICAgICBmb3IgKGF1dG8mIHRyYWNrQnVmZmVyUGFpciA6
IG1fdHJhY2tCdWZmZXJNYXAudmFsdWVzKCkpIHsKQEAgLTk2LDYgKzEwNCwxMyBAQCBNZWRpYVRp
bWUgU291cmNlQnVmZmVyUHJpdmF0ZTo6aGlnaGVzdFByZXNlbnRhdGlvblRpbWVzdGFtcCgpIGNv
bnN0CiAgICAgcmV0dXJuIGhpZ2hlc3RUaW1lOwogfQogCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGU6OnNldEJ1ZmZlcmVkUmFuZ2VzKGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYgdGltZVJhbmdl
cykKK3sKKyAgICBtX2J1ZmZlcmVkLT5yYW5nZXMoKSA9IHRpbWVSYW5nZXM7CisgICAgaWYgKG1f
Y2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFu
Z2VzQ2hhbmdlZChtX2J1ZmZlcmVkLT5yYW5nZXMoKSk7Cit9CisKIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZTo6dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRl
ZCkKIHsKICAgICAvLyAzLjEgQXR0cmlidXRlcywgYnVmZmVyZWQKQEAgLTExMiw3ICsxMjcsNyBA
QCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVmZmVy
cyhib29sIHNvdXJjZUlzRW5kZWQpCiAgICAgLy8gTk9URTogU2hvcnQgY2lyY3VpdCB0aGUgZm9s
bG93aW5nIGlmIG5vbmUgb2YgdGhlIFRyYWNrQnVmZmVycyBoYXZlIGJ1ZmZlcmVkIHJhbmdlcyB0
byBhdm9pZCBnZW5lcmF0aW5nCiAgICAgLy8gYSBzaW5nbGUgcmFuZ2Ugb2YgezAsIDB9LgogICAg
IGlmIChoaWdoZXN0RW5kVGltZS5pc05lZ2F0aXZlSW5maW5pdGUoKSkgewotICAgICAgICBtX2J1
ZmZlcmVkLT5yYW5nZXMoKSA9IFBsYXRmb3JtVGltZVJhbmdlcygpOworICAgICAgICBzZXRCdWZm
ZXJlZFJhbmdlcyhQbGF0Zm9ybVRpbWVSYW5nZXMoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTEzNywxMCArMTUyLDIwIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6dXBkYXRl
QnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCkKIAogICAgIC8vIDUu
IElmIGludGVyc2VjdGlvbiByYW5nZXMgZG9lcyBub3QgY29udGFpbiB0aGUgZXhhY3Qgc2FtZSBy
YW5nZSBpbmZvcm1hdGlvbiBhcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSwK
ICAgICAvLyAgICB0aGVuIHVwZGF0ZSB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0
ZSB0byBpbnRlcnNlY3Rpb24gcmFuZ2VzLgotICAgIG1fYnVmZmVyZWQtPnJhbmdlcygpID0gaW50
ZXJzZWN0aW9uUmFuZ2VzOworICAgIHNldEJ1ZmZlcmVkUmFuZ2VzKGludGVyc2VjdGlvblJhbmdl
cyk7CiAgICAgc2V0QnVmZmVyZWREaXJ0eSh0cnVlKTsKIH0KIAordm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlOjphcHBlbmRDb21wbGV0ZWQoYm9vbCBwYXJzaW5nU3VjY2VlZGVkLCBib29sIGlzRW5k
ZWQpCit7CisgICAgLy8gUmVzb2x2ZSB0aGUgY2hhbmdlcyBpbiBUcmFja0J1ZmZlcnMnIGJ1ZmZl
cmVkIHJhbmdlcworICAgIC8vIGludG8gdGhlIFNvdXJjZUJ1ZmZlcidzIGJ1ZmZlcmVkIHJhbmdl
cworICAgIHVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVmZmVycyhpc0VuZGVkKTsKKworICAgIGlm
IChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRD
b21wbGV0ZShwYXJzaW5nU3VjY2VlZGVkID8gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBw
ZW5kUmVzdWx0OjpBcHBlbmRTdWNjZWVkZWQgOiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpB
cHBlbmRSZXN1bHQ6OlBhcnNpbmdGYWlsZWQpOworfQorCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGU6OnJlZW5xdWVTYW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpCiB7CiAgICAgaWYg
KCFtX2lzQXR0YWNoZWQpCkBAIC0xNzgsOSArMjAzLDkgQEAgVmVjdG9yPFN0cmluZz4gU291cmNl
QnVmZmVyUHJpdmF0ZTo6YnVmZmVyZWRTYW1wbGVzRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5n
JgogewogICAgIGF1dG8gaXQgPSBtX3RyYWNrQnVmZmVyTWFwLmZpbmQodHJhY2tJRCk7CiAgICAg
aWYgKGl0ID09IG1fdHJhY2tCdWZmZXJNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBWZWN0b3I8
U3RyaW5nPigpOworICAgICAgICByZXR1cm4geyB9OwogCi0gICAgVHJhY2tCdWZmZXImIHRyYWNr
QnVmZmVyID0gaXQtPnZhbHVlOworICAgIGF1dG8mIHRyYWNrQnVmZmVyID0gaXQtPnZhbHVlOwog
ICAgIFZlY3RvcjxTdHJpbmc+IHNhbXBsZURlc2NyaXB0aW9uczsKICAgICBmb3IgKGF1dG8mIHBh
aXIgOiB0cmFja0J1ZmZlci5zYW1wbGVzLmRlY29kZU9yZGVyKCkpCiAgICAgICAgIHNhbXBsZURl
c2NyaXB0aW9ucy5hcHBlbmQodG9TdHJpbmcoKnBhaXIuc2Vjb25kKSk7CkBAIC0zMTcsNyArMzQy
LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpwcm92aWRlTWVkaWFEYXRhKFRyYWNrQnVm
ZmVyJiB0cmFja0J1ZmZlciwgY29uc3QgQXRvbVMKICAgICB1cGRhdGVNaW5pbXVtVXBjb21pbmdQ
cmVzZW50YXRpb25UaW1lKHRyYWNrQnVmZmVyLCB0cmFja0lEKTsKIAogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAotICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiZW5xdWV1ZWQgIiwgZW5x
dWV1ZWRTYW1wbGVzLCAiIHNhbXBsZXMsICIsIHN0YXRpY19jYXN0PHNpemVfdD4odHJhY2tCdWZm
ZXIuZGVjb2RlUXVldWUuc2l6ZSgpKSwgIiByZW1haW5pbmciKTsKKyAgICBERUJVR19MT0coTE9H
SURFTlRJRklFUiwgImVucXVldWVkICIsIGVucXVldWVkU2FtcGxlcywgIiBzYW1wbGVzLCAiLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4odHJhY2tCdWZmZXIuZGVjb2RlUXVldWUuc2l6ZSgpKSwgIiBy
ZW1haW5pbmciKTsKICNlbmRpZgogCiAgICAgYWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCh0cmFj
a0lEKTsKQEAgLTMzOSw3ICszNjQsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnJlZW5x
dWV1ZU1lZGlhRm9yVGltZShUcmFja0J1ZmZlciYgdHJhY2tCdWZmZXIsIGNvbnN0CiAgICAgICAg
IGN1cnJlbnRTYW1wbGVQVFNJdGVyYXRvciA9IHRyYWNrQnVmZmVyLnNhbXBsZXMucHJlc2VudGF0
aW9uT3JkZXIoKS5maW5kU2FtcGxlU3RhcnRpbmdPbk9yQWZ0ZXJQcmVzZW50YXRpb25UaW1lKHRp
bWUpOwogCiAgICAgaWYgKGN1cnJlbnRTYW1wbGVQVFNJdGVyYXRvciA9PSB0cmFja0J1ZmZlci5z
YW1wbGVzLnByZXNlbnRhdGlvbk9yZGVyKCkuZW5kKCkKLSAgICAgICAgfHwgKGN1cnJlbnRTYW1w
bGVQVFNJdGVyYXRvci0+Zmlyc3QgLSB0aW1lKSA+IG1fY3VycmVudFRpbWVGdWRnZUZhY3RvcikK
KyAgICAgICAgfHwgKGN1cnJlbnRTYW1wbGVQVFNJdGVyYXRvci0+Zmlyc3QgLSB0aW1lKSA+IHRp
bWVGdWRnZUZhY3RvcigpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBTZWFjaCBiYWNrd2Fy
ZCBmb3IgdGhlIHByZXZpb3VzIHN5bmMgc2FtcGxlLgpAQCAtMzY3LDcgKzM5Miw3IEBAIHZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZTo6cmVlbnF1ZXVlTWVkaWFGb3JUaW1lKFRyYWNrQnVmZmVyJiB0
cmFja0J1ZmZlciwgY29uc3QKICAgICB0cmFja0J1ZmZlci5uZWVkc1JlZW5xdWV1ZWluZyA9IGZh
bHNlOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnJlZW5xdWV1ZU1lZGlhSWZOZWVk
ZWQoY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50VGltZSwgc2l6ZV90IHBlbmRpbmdBcHBlbmREYXRh
Q2FwYWNpdHksIHNpemVfdCBtYXhpbXVtQnVmZmVyU2l6ZSkKK3ZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZTo6cmVlbnF1ZXVlTWVkaWFJZk5lZWRlZChjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1l
LCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVm
ZmVyU2l6ZSkKIHsKICAgICBmb3IgKGF1dG8mIHRyYWNrQnVmZmVyUGFpciA6IG1fdHJhY2tCdWZm
ZXJNYXApIHsKICAgICAgICAgVHJhY2tCdWZmZXImIHRyYWNrQnVmZmVyID0gdHJhY2tCdWZmZXJQ
YWlyLnZhbHVlOwpAQCAtMzk4LDcgKzQyMyw3IEBAIHN0YXRpYyBQbGF0Zm9ybVRpbWVSYW5nZXMg
cmVtb3ZlU2FtcGxlc0Zyb21UcmFja0J1ZmZlcihjb25zdCBEZWNvZGVPcmRlclNhbXBsZU1hCiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgTWVkaWFUaW1lIGVhcmxpZXN0U2FtcGxlID0g
TWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpOwogICAgIE1lZGlhVGltZSBsYXRlc3RT
YW1wbGUgPSBNZWRpYVRpbWU6Onplcm9UaW1lKCk7Ci0gICAgc2l6ZV90IGJ5dGVzUmVtb3ZlZCA9
IDA7CisgICAgdWludDY0X3QgYnl0ZXNSZW1vdmVkID0gMDsKICAgICBhdXRvIGxvZ0lkZW50aWZp
ZXIgPSBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIoc291cmNlQnVmZmVyUHJpdmF0ZS0+
bG9nQ2xhc3NOYW1lKCksIGxvZ1ByZWZpeCwgc291cmNlQnVmZmVyUHJpdmF0ZS0+bG9nSWRlbnRp
ZmllcigpKTsKICAgICBhdXRvJiBsb2dnZXIgPSBzb3VyY2VCdWZmZXJQcml2YXRlLT5sb2dnZXIo
KTsKICAgICBhdXRvIHdpbGxMb2cgPSBsb2dnZXIud2lsbExvZyhzb3VyY2VCdWZmZXJQcml2YXRl
LT5sb2dDaGFubmVsKCksIFdURkxvZ0xldmVsOjpEZWJ1Zyk7CkBAIC00MDgsNyArNDMzLDcgQEAg
c3RhdGljIFBsYXRmb3JtVGltZVJhbmdlcyByZW1vdmVTYW1wbGVzRnJvbVRyYWNrQnVmZmVyKGNv
bnN0IERlY29kZU9yZGVyU2FtcGxlTWEKICAgICBmb3IgKGNvbnN0IGF1dG8mIHNhbXBsZUl0IDog
c2FtcGxlcykgewogICAgICAgICBjb25zdCBEZWNvZGVPcmRlclNhbXBsZU1hcDo6S2V5VHlwZSYg
ZGVjb2RlS2V5ID0gc2FtcGxlSXQuZmlyc3Q7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0g
ICAgICAgIHNpemVfdCBzdGFydEJ1ZmZlclNpemUgPSB0cmFja0J1ZmZlci5zYW1wbGVzLnNpemVJ
bkJ5dGVzKCk7CisgICAgICAgIHVpbnQ2NF90IHN0YXJ0QnVmZmVyU2l6ZSA9IHRyYWNrQnVmZmVy
LnNhbXBsZXMuc2l6ZUluQnl0ZXMoKTsKICNlbmRpZgogCiAgICAgICAgIGNvbnN0IFJlZlB0cjxN
ZWRpYVNhbXBsZT4mIHNhbXBsZSA9IHNhbXBsZUl0LnNlY29uZDsKQEAgLTU3MCw3ICs1OTUsNyBA
QCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnJlbW92ZUNvZGVkRnJhbWVzKGNvbnN0IE1lZGlh
VGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVAogICAgIExPRyhNZWRpYSwgIlNvdXJjZUJ1ZmZlcjo6
cmVtb3ZlQ29kZWRGcmFtZXMoJXApIC0gYnVmZmVyZWQgPSAlcyIsIHRoaXMsIHRvU3RyaW5nKG1f
YnVmZmVyZWQtPnJhbmdlcygpKS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlOjpldmljdENvZGVkRnJhbWVzKHNpemVfdCBuZXdEYXRhU2l6ZSwgc2l6ZV90IHBl
bmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHNpemVfdCBtYXhpbXVtQnVmZmVyU2l6ZSwgY29uc3Qg
TWVkaWFUaW1lJiBjdXJyZW50VGltZSwgY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbiwgYm9vbCBp
c0VuZGVkKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpldmljdENvZGVkRnJhbWVzKHVpbnQ2
NF90IG5ld0RhdGFTaXplLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50
NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50VGltZSwgY29u
c3QgTWVkaWFUaW1lJiBkdXJhdGlvbiwgYm9vbCBpc0VuZGVkKQogewogICAgIC8vIDMuNS4xMyBD
b2RlZCBGcmFtZSBFdmljdGlvbiBBbGdvcml0aG0KICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9U
Ui9tZWRpYS1zb3VyY2UvI3NvdXJjZWJ1ZmZlci1jb2RlZC1mcmFtZS1ldmljdGlvbgpAQCAtNTk0
LDcgKzYxOSw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZXZpY3RDb2RlZEZyYW1lcyhz
aXplX3QgbmV3RGF0YVNpemUsIHNpemVfdCBwZW5kaW5nQXBwCiAKICNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQgJiYgZmFsc2UKICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgImN1cnJlbnRU
aW1lID0gIiwgY3VycmVudFRpbWUsICIsIHJlcXVpcmUgIiwgZXh0cmFNZW1vcnlDb3N0KCkgKyBu
ZXdEYXRhU2l6ZSwgIiBieXRlcywgbWF4aW11bSBidWZmZXIgc2l6ZSBpcyAiLCBtYXhpbXVtQnVm
ZmVyU2l6ZSk7Ci0gICAgc2l6ZV90IGluaXRpYWxCdWZmZXJlZFNpemUgPSBleHRyYU1lbW9yeUNv
c3QoKTsKKyAgICB1aW50NjRfdCBpbml0aWFsQnVmZmVyZWRTaXplID0gZXh0cmFNZW1vcnlDb3N0
KCk7CiAjZW5kaWYKIAogICAgIE1lZGlhVGltZSByYW5nZVN0YXJ0ID0gTWVkaWFUaW1lOjp6ZXJv
VGltZSgpOwpAQCAtNjIzLDEwICs2NDgsMTAgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpl
dmljdENvZGVkRnJhbWVzKHNpemVfdCBuZXdEYXRhU2l6ZSwgc2l6ZV90IHBlbmRpbmdBcHAKICAg
ICAvLyB0aGUgY3VycmVudCBidWZmZXJlZCByYW5nZSksIGRlbGV0ZSAzMCBzZWNvbmRzIGF0IGEg
dGltZSBmcm9tIGR1cmF0aW9uIGJhY2sgdG8gdGhlIGN1cnJlbnQgdGltZSByYW5nZSBvciAzMCBz
ZWNvbmRzIGFmdGVyCiAgICAgLy8gY3VycmVuVGltZSB3aGljaGV2ZXIgd2UgaGl0IGZpcnN0Lgog
ICAgIGF1dG8gYnVmZmVyZWQgPSBtX2J1ZmZlcmVkLT5yYW5nZXMoKTsKLSAgICBzaXplX3QgY3Vy
cmVudFRpbWVSYW5nZSA9IGJ1ZmZlcmVkLmZpbmQoY3VycmVudFRpbWUpOworICAgIHVpbnQ2NF90
IGN1cnJlbnRUaW1lUmFuZ2UgPSBidWZmZXJlZC5maW5kKGN1cnJlbnRUaW1lKTsKICAgICBpZiAo
Y3VycmVudFRpbWVSYW5nZSA9PSBidWZmZXJlZC5sZW5ndGgoKSAtIDEpIHsKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQgJiYgZmFsc2UKLSAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIkZB
SUxFRCB0byBmcmVlIGVub3VnaCBhZnRlciBldmljdGluZyAiLCBpbml0aWFsQnVmZmVyZWRTaXpl
IC0gZXh0cmFNZW1vcnlDb3N0KCkpOworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwg
IkZBSUxFRCB0byBmcmVlIGVub3VnaCBhZnRlciBldmljdGluZyAiLCBpbml0aWFsQnVmZmVyZWRT
aXplIC0gZXh0cmFNZW1vcnlDb3N0KCkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC02MzYsNyArNjYxLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpldmljdENvZGVk
RnJhbWVzKHNpemVfdCBuZXdEYXRhU2l6ZSwgc2l6ZV90IHBlbmRpbmdBcHAKICAgICByYW5nZUVu
ZCA9IGR1cmF0aW9uOwogICAgIGlmICghcmFuZ2VFbmQuaXNGaW5pdGUoKSkgewogICAgICAgICBy
YW5nZUVuZCA9IGJ1ZmZlcmVkLm1heGltdW1CdWZmZXJlZFRpbWUoKTsKLSNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQgJiYgZmFsc2UKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAg
REVCVUdfTE9HKExPR0lERU5USUZJRVIsICJNZWRpYVNvdXJjZSBkdXJhdGlvbiBpcyBub3QgYSBm
aW5pdGUgdmFsdWUsIHVzaW5nIG1heGltdW0gYnVmZmVyZWQgdGltZTogIiwgcmFuZ2VFbmQpOwog
I2VuZGlmCiAgICAgfQpAQCAtNjQ0LDkgKzY2OSw5IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZTo6ZXZpY3RDb2RlZEZyYW1lcyhzaXplX3QgbmV3RGF0YVNpemUsIHNpemVfdCBwZW5kaW5nQXBw
CiAgICAgcmFuZ2VTdGFydCA9IHJhbmdlRW5kIC0gdGhpcnR5U2Vjb25kczsKICAgICB3aGlsZSAo
cmFuZ2VTdGFydCA+IG1pbmltdW1SYW5nZVN0YXJ0KSB7CiAgICAgICAgIC8vIERvIG5vdCBldmlj
dCBkYXRhIGZyb20gdGhlIHRpbWUgcmFuZ2UgdGhhdCBjb250YWlucyBjdXJyZW50VGltZS4KLSAg
ICAgICAgc2l6ZV90IHN0YXJ0VGltZVJhbmdlID0gYnVmZmVyZWQuZmluZChyYW5nZVN0YXJ0KTsK
KyAgICAgICAgdWludDY0X3Qgc3RhcnRUaW1lUmFuZ2UgPSBidWZmZXJlZC5maW5kKHJhbmdlU3Rh
cnQpOwogICAgICAgICBpZiAoY3VycmVudFRpbWVSYW5nZSAhPSBub3RGb3VuZCAmJiBzdGFydFRp
bWVSYW5nZSA9PSBjdXJyZW50VGltZVJhbmdlKSB7Ci0gICAgICAgICAgICBzaXplX3QgZW5kVGlt
ZVJhbmdlID0gYnVmZmVyZWQuZmluZChyYW5nZUVuZCk7CisgICAgICAgICAgICB1aW50NjRfdCBl
bmRUaW1lUmFuZ2UgPSBidWZmZXJlZC5maW5kKHJhbmdlRW5kKTsKICAgICAgICAgICAgIGlmIChj
dXJyZW50VGltZVJhbmdlICE9IG5vdEZvdW5kICYmIGVuZFRpbWVSYW5nZSA9PSBjdXJyZW50VGlt
ZVJhbmdlKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC02NzQsMjIgKzY5OSwyNSBAQCB2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmV2aWN0Q29kZWRGcmFtZXMoc2l6ZV90IG5ld0RhdGFT
aXplLCBzaXplX3QgcGVuZGluZ0FwcAogI2VuZGlmCiB9CiAKLXNpemVfdCBTb3VyY2VCdWZmZXJQ
cml2YXRlOjp0b3RhbFRyYWNrQnVmZmVyU2l6ZUluQnl0ZXMoKSBjb25zdAordWludDY0X3QgU291
cmNlQnVmZmVyUHJpdmF0ZTo6dG90YWxUcmFja0J1ZmZlclNpemVJbkJ5dGVzKCkgY29uc3QKIHsK
LSAgICBzaXplX3QgdG90YWxTaXplSW5CeXRlcyA9IDA7CisgICAgdWludDY0X3QgdG90YWxTaXpl
SW5CeXRlcyA9IDA7CiAgICAgZm9yIChhdXRvJiB0cmFja0J1ZmZlciA6IG1fdHJhY2tCdWZmZXJN
YXAudmFsdWVzKCkpCiAgICAgICAgIHRvdGFsU2l6ZUluQnl0ZXMgKz0gdHJhY2tCdWZmZXIuc2Ft
cGxlcy5zaXplSW5CeXRlcygpOwogCiAgICAgcmV0dXJuIHRvdGFsU2l6ZUluQnl0ZXM7CiB9CiAK
LXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6YWRkVHJhY2tCdWZmZXIoY29uc3QgQXRvbVN0cmlu
ZyYgdHJhY2tJZCwgUmVmUHRyPE1lZGlhRGVzY3JpcHRpb24+IGRlc2NyaXB0aW9uKQordm9pZCBT
b3VyY2VCdWZmZXJQcml2YXRlOjphZGRUcmFja0J1ZmZlcihjb25zdCBBdG9tU3RyaW5nJiB0cmFj
a0lkLCBSZWZQdHI8TWVkaWFEZXNjcmlwdGlvbj4mJiBkZXNjcmlwdGlvbikKIHsKICAgICBBU1NF
UlQoIW1fdHJhY2tCdWZmZXJNYXAuY29udGFpbnModHJhY2tJZCkpOwogICAgIGF1dG8mIHRyYWNr
QnVmZmVyID0gbV90cmFja0J1ZmZlck1hcC5hZGQodHJhY2tJZCwgVHJhY2tCdWZmZXIoKSkuaXRl
cmF0b3ItPnZhbHVlOwogCiAgICAgLy8gNS4yLjkgQWRkIHRoZSB0cmFjayBkZXNjcmlwdGlvbiBm
b3IgdGhpcyB0cmFjayB0byB0aGUgdHJhY2sgYnVmZmVyLgogICAgIHRyYWNrQnVmZmVyLmRlc2Ny
aXB0aW9uID0gZGVzY3JpcHRpb247CisKKyAgICBtX2hhc0F1ZGlvID0gbV9oYXNBdWRpbyB8fCB0
cmFja0J1ZmZlci5kZXNjcmlwdGlvbi0+aXNBdWRpbygpOworICAgIG1faGFzVmlkZW8gPSBtX2hh
c1ZpZGVvIHx8IHRyYWNrQnVmZmVyLmRlc2NyaXB0aW9uLT5pc1ZpZGVvKCk7CiB9CiAKIHZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZTo6dXBkYXRlVHJhY2tJZHMoVmVjdG9yPHN0ZDo6cGFpcjxBdG9t
U3RyaW5nLCBBdG9tU3RyaW5nPj4mJiB0cmFja0lkUGFpcnMpCkBAIC03MDksNyArNzM3LDcgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpzZXRBbGxUcmFja0J1ZmZlcnNOZWVkUmFuZG9tQWNj
ZXNzKCkKICAgICAgICAgdHJhY2tCdWZmZXIubmVlZFJhbmRvbUFjY2Vzc0ZsYWcgPSB0cnVlOwog
fQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNl
Z21lbnQoY29uc3QgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdt
ZW50JiBzZWdtZW50KQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlSW5pdGlh
bGl6YXRpb25TZWdtZW50KFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9u
U2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKIHsKICAgICBpZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1cm47CkBAIC03MTks
NyArNzQ3LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlSW5pdGlhbGl6
YXRpb25TZWdtZW50KGNvbnN0IFNvdXJjZUJ1ZmZlclByaXYKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxp
emF0aW9uU2VnbWVudChzZWdtZW50KTsKKyAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0
ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoV1RGTW92ZShzZWdtZW50KSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCiAgICAgbV9yZWNlaXZlZEZpcnN0SW5pdGlhbGl6YXRp
b25TZWdtZW50ID0gdHJ1ZTsKICAgICBtX3BlbmRpbmdJbml0aWFsaXphdGlvblNlZ21lbnRGb3JD
aGFuZ2VUeXBlID0gZmFsc2U7CkBAIC0xMTgwLDExICsxMjA4LDExIEBAIHZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZVNhbXBsZShNZWRpYVNhbXBsZSYgc2FtcGxlKQogICAgICAg
ICAvLyBkaXNqb2ludCByYW5nZXMgc2VwYXJhdGVkIGJ5IGxlc3MgdGhhbiBhICJmdWRnZSBmYWN0
b3IiLgogICAgICAgICBhdXRvIHByZXNlbnRhdGlvbkVuZFRpbWUgPSBwcmVzZW50YXRpb25UaW1l
c3RhbXAgKyBmcmFtZUR1cmF0aW9uOwogICAgICAgICBhdXRvIG5lYXJlc3RUb1ByZXNlbnRhdGlv
blN0YXJ0VGltZSA9IHRyYWNrQnVmZmVyLmJ1ZmZlcmVkLm5lYXJlc3QocHJlc2VudGF0aW9uVGlt
ZXN0YW1wKTsKLSAgICAgICAgaWYgKG5lYXJlc3RUb1ByZXNlbnRhdGlvblN0YXJ0VGltZS5pc1Zh
bGlkKCkgJiYgKHByZXNlbnRhdGlvblRpbWVzdGFtcCAtIG5lYXJlc3RUb1ByZXNlbnRhdGlvblN0
YXJ0VGltZSkuaXNCZXR3ZWVuKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgbV9jdXJyZW50VGltZUZ1
ZGdlRmFjdG9yKSkKKyAgICAgICAgaWYgKG5lYXJlc3RUb1ByZXNlbnRhdGlvblN0YXJ0VGltZS5p
c1ZhbGlkKCkgJiYgKHByZXNlbnRhdGlvblRpbWVzdGFtcCAtIG5lYXJlc3RUb1ByZXNlbnRhdGlv
blN0YXJ0VGltZSkuaXNCZXR3ZWVuKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgdGltZUZ1ZGdlRmFj
dG9yKCkpKQogICAgICAgICAgICAgcHJlc2VudGF0aW9uVGltZXN0YW1wID0gbmVhcmVzdFRvUHJl
c2VudGF0aW9uU3RhcnRUaW1lOwogCiAgICAgICAgIGF1dG8gbmVhcmVzdFRvUHJlc2VudGF0aW9u
RW5kVGltZSA9IHRyYWNrQnVmZmVyLmJ1ZmZlcmVkLm5lYXJlc3QocHJlc2VudGF0aW9uRW5kVGlt
ZSk7Ci0gICAgICAgIGlmIChuZWFyZXN0VG9QcmVzZW50YXRpb25FbmRUaW1lLmlzVmFsaWQoKSAm
JiAobmVhcmVzdFRvUHJlc2VudGF0aW9uRW5kVGltZSAtIHByZXNlbnRhdGlvbkVuZFRpbWUpLmlz
QmV0d2VlbihNZWRpYVRpbWU6Onplcm9UaW1lKCksIG1fY3VycmVudFRpbWVGdWRnZUZhY3Rvcikp
CisgICAgICAgIGlmIChuZWFyZXN0VG9QcmVzZW50YXRpb25FbmRUaW1lLmlzVmFsaWQoKSAmJiAo
bmVhcmVzdFRvUHJlc2VudGF0aW9uRW5kVGltZSAtIHByZXNlbnRhdGlvbkVuZFRpbWUpLmlzQmV0
d2VlbihNZWRpYVRpbWU6Onplcm9UaW1lKCksIHRpbWVGdWRnZUZhY3RvcigpKSkKICAgICAgICAg
ICAgIHByZXNlbnRhdGlvbkVuZFRpbWUgPSBuZWFyZXN0VG9QcmVzZW50YXRpb25FbmRUaW1lOwog
CiAgICAgICAgIHRyYWNrQnVmZmVyLmJ1ZmZlcmVkLmFkZChwcmVzZW50YXRpb25UaW1lc3RhbXAs
IHByZXNlbnRhdGlvbkVuZFRpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCmluZGV4IDExZGZmMzQ5YmVjN2Q3ZTlj
MjIzMTczNmE0NmQ0OGU3N2U0NzZiN2EuLjQwMWRiZDc3YmQyMDRiOThjMjgzZmNhMWZkNTQyMDlj
OTdmZWViMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Nv
dXJjZUJ1ZmZlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAgLTYzLDggKzYzLDkgQEAgY2xhc3MgU291cmNlQnVm
ZmVyUHJpdmF0ZQogewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFNvdXJjZUJ1ZmZlclBy
aXZhdGUoKTsKLSAgICB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQcml2YXRlKCkgPSBkZWZhdWx0Owor
ICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclByaXZhdGUoKTsKIAorICAg
IHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhcHBl
bmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQo
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSA9IDA7CkBAIC03Miw0
MCArNzMsMzkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUg
cmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmVhZHlTdGF0ZShN
ZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEFjdGl2
ZShib29sKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuU3dpdGNoVG9UeXBlKGNvbnN0IENvbnRl
bnRUeXBlJikgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHZpcnR1YWwgdm9pZCByZWVucXVldWVN
ZWRpYUlmTmVlZGVkKGNvbnN0IE1lZGlhVGltZSYgY3VycmVudE1lZGlhVGltZSwgdWludDY0X3Qg
cGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUpOwor
ICAgIHZpcnR1YWwgdm9pZCBhZGRUcmFja0J1ZmZlcihjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lk
LCBSZWZQdHI8TWVkaWFEZXNjcmlwdGlvbj4mJik7CisgICAgdmlydHVhbCB2b2lkIHRyeVNpZ25h
bEFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgdXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCk7
CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGV2aWN0Q29kZWRGcmFtZXModWludDY0
X3QgbmV3RGF0YVNpemUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2
NF90IG1heGltdW1CdWZmZXJTaXplLCBjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBjb25z
dCBNZWRpYVRpbWUmIGR1cmF0aW9uLCBib29sIGlzRW5kZWQpOworCiAgICAgdm9pZCBzZXRDbGll
bnQoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50
OyB9CiAgICAgdm9pZCBzZXRJc0F0dGFjaGVkKGJvb2wgZmxhZykgeyBtX2lzQXR0YWNoZWQgPSBm
bGFnOyB9Ci0gICAgdm9pZCBzZXRDdXJyZW50VGltZUZ1ZGdlRmFjdG9yKGNvbnN0IE1lZGlhVGlt
ZSYgdGltZSkgeyBtX2N1cnJlbnRUaW1lRnVkZ2VGYWN0b3IgPSB0aW1lOyB9CisgICAgYm9vbCBo
YXNBdWRpbygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQXVkaW87IH0KKyAgICBib29sIGhhc1ZpZGVv
KCkgY29uc3QgeyByZXR1cm4gbV9oYXNWaWRlbzsgfQogICAgIHZvaWQgc2V0QXBwZW5kV2luZG93
U3RhcnQoY29uc3QgTWVkaWFUaW1lJiBhcHBlbmRXaW5kb3dTdGFydCkgeyBtX2FwcGVuZFdpbmRv
d1N0YXJ0ID0gYXBwZW5kV2luZG93U3RhcnQ7fQogICAgIHZvaWQgc2V0QXBwZW5kV2luZG93RW5k
KGNvbnN0IE1lZGlhVGltZSYgYXBwZW5kV2luZG93RW5kKSB7IG1fYXBwZW5kV2luZG93RW5kID0g
YXBwZW5kV2luZG93RW5kOyB9CiAgICAgYm9vbCBidWZmZXJGdWxsKCkgY29uc3QgeyByZXR1cm4g
bV9idWZmZXJGdWxsOyB9Ci0gICAgVGltZVJhbmdlcyogYnVmZmVyZWQoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlcmVkLmdldCgpOyB9Ci0gICAgYm9vbCBpc0J1ZmZlcmVkRGlydHkoKSBjb25zdCB7
IHJldHVybiBtX2J1ZmZlcmVkRGlydHk7IH0KLSAgICB2b2lkIHNldEJ1ZmZlcmVkRGlydHkoYm9v
bCBmbGFnKSB7IG1fYnVmZmVyZWREaXJ0eSA9IGZsYWc7IH0KKworICAgIHZvaWQgc2V0QnVmZmVy
ZWREaXJ0eShib29sKTsKICAgICB2b2lkIHJlc2V0VHJhY2tCdWZmZXJzKCk7CiAgICAgdm9pZCBj
bGVhclRyYWNrQnVmZmVycygpOwogICAgIHZvaWQgcmVzZXRUaW1lc3RhbXBPZmZzZXRJblRyYWNr
QnVmZmVycygpOwogICAgIE1lZGlhVGltZSB0aW1lc3RhbXBPZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX3RpbWVzdGFtcE9mZnNldDsgfQogICAgIHZvaWQgc2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0
IE1lZGlhVGltZSYgdGltZXN0YW1wT2Zmc2V0KSB7IG1fdGltZXN0YW1wT2Zmc2V0ID0gdGltZXN0
YW1wT2Zmc2V0OyB9CiAgICAgTWVkaWFUaW1lIGhpZ2hlc3RQcmVzZW50YXRpb25UaW1lc3RhbXAo
KSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVmZmVycyhib29sIHNv
dXJjZUlzRW5kZWQpOwogICAgIHZvaWQgc2Vla1RvVGltZShjb25zdCBNZWRpYVRpbWUmKTsKLSAg
ICB2b2lkIHRyeVNpZ25hbEFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoKTsKICAgICB2b2lkIHN0
YXJ0Q2hhbmdpbmdUeXBlKCkgeyBtX3BlbmRpbmdJbml0aWFsaXphdGlvblNlZ21lbnRGb3JDaGFu
Z2VUeXBlID0gdHJ1ZTsgfQotCi0gICAgdm9pZCByZWVucXVldWVNZWRpYUlmTmVlZGVkKGNvbnN0
IE1lZGlhVGltZSYgY3VycmVudE1lZGlhVGltZSwgc2l6ZV90IHBlbmRpbmdBcHBlbmREYXRhQ2Fw
YWNpdHksIHNpemVfdCBtYXhpbXVtQnVmZmVyU2l6ZSk7CiAgICAgdm9pZCByZW1vdmVDb2RlZEZy
YW1lcyhjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgY29uc3Qg
TWVkaWFUaW1lJiBjdXJyZW50TWVkaWFUaW1lLCBib29sIGlzRW5kZWQpOwotICAgIHZvaWQgZXZp
Y3RDb2RlZEZyYW1lcyhzaXplX3QgbmV3RGF0YVNpemUsIHNpemVfdCBwZW5kaW5nQXBwZW5kRGF0
YUNhcGFjaXR5LCBzaXplX3QgbWF4aW11bUJ1ZmZlclNpemUsIGNvbnN0IE1lZGlhVGltZSYgY3Vy
cmVudFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24sIGJvb2wgaXNFbmRlZCk7Ci0gICAg
dm9pZCBhZGRUcmFja0J1ZmZlcihjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lkLCBSZWZQdHI8TWVk
aWFEZXNjcmlwdGlvbj4pOwogICAgIHZvaWQgdXBkYXRlVHJhY2tJZHMoVmVjdG9yPHN0ZDo6cGFp
cjxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPj4mJiB0cmFja0lkUGFpcnMpOwogICAgIHZvaWQgc2V0
QWxsVHJhY2tCdWZmZXJzTmVlZFJhbmRvbUFjY2VzcygpOwogICAgIHZvaWQgc2V0U2hvdWxkR2Vu
ZXJhdGVUaW1lc3RhbXBzKGJvb2wgZmxhZykgeyBtX3Nob3VsZEdlbmVyYXRlVGltZXN0YW1wcyA9
IGZsYWc7IH0KICAgICB2b2lkIHNldE1vZGUoU291cmNlQnVmZmVyQXBwZW5kTW9kZSBtb2RlKSB7
IG1fYXBwZW5kTW9kZSA9IG1vZGU7IH0KICAgICB2b2lkIHNldEdyb3VwU3RhcnRUaW1lc3RhbXAo
Y29uc3QgTWVkaWFUaW1lJiBtZWRpYVRpbWUpIHsgbV9ncm91cFN0YXJ0VGltZXN0YW1wID0gbWVk
aWFUaW1lOyB9CiAgICAgdm9pZCBzZXRHcm91cFN0YXJ0VGltZXN0YW1wVG9FbmRUaW1lc3RhbXAo
KSB7IG1fZ3JvdXBTdGFydFRpbWVzdGFtcCA9IG1fZ3JvdXBFbmRUaW1lc3RhbXA7IH0KLSAgICBz
aXplX3QgdG90YWxUcmFja0J1ZmZlclNpemVJbkJ5dGVzKCkgY29uc3Q7CisgICAgdWludDY0X3Qg
dG90YWxUcmFja0J1ZmZlclNpemVJbkJ5dGVzKCkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgVHJhY2tC
dWZmZXIgewogICAgICAgICBNZWRpYVRpbWUgbGFzdERlY29kZVRpbWVzdGFtcDsKQEAgLTEzNCw3
ICsxMzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBlbnF1ZXVlZFNh
bXBsZXNGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmKSB7IHJldHVybiB7IH07IH0KICAgICBW
ZWN0b3I8U3RyaW5nPiBidWZmZXJlZFNhbXBsZXNGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcm
KTsKICAgICB2aXJ0dWFsIE1lZGlhVGltZSBtaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1l
Rm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJikgeyByZXR1cm4gTWVkaWFUaW1lOjppbnZhbGlk
VGltZSgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJ
RChjb25zdCBBdG9tU3RyaW5nJiwgc2l6ZV90KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWF4
aW11bVF1ZXVlRGVwdGhGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmLCB1aW50NjRfdCkgeyB9
CiAgICAgTWVkaWFUaW1lIGZhc3RTZWVrVGltZUZvck1lZGlhVGltZShjb25zdCBNZWRpYVRpbWUm
IHRhcmdldFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVUaHJlc2hvbGQsIGNvbnN0IE1l
ZGlhVGltZSYgcG9zaXRpdmVUaHJlc2hvbGQpOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVE
CkBAIC0xNDMsNiArMTQzLDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByb3RlY3RlZDoKKyAgICB2
aXJ0dWFsIE1lZGlhVGltZSB0aW1lRnVkZ2VGYWN0b3IoKSBjb25zdCB7IHJldHVybiB7MjAwMiwg
MjQwMDB9OyB9CiAgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTZWVraW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3QgeyByZXR1
cm4geyB9OyB9CkBAIC0xNTcsOCArMTU4LDkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9p
ZCBzZXRNaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lKGNvbnN0IEF0b21TdHJpbmcmLCBj
b25zdCBNZWRpYVRpbWUmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJNaW5pbXVtVXBjb21p
bmdQcmVzZW50YXRpb25UaW1lKGNvbnN0IEF0b21TdHJpbmcmKSB7IH0KIAorICAgIHZvaWQgYXBw
ZW5kQ29tcGxldGVkKGJvb2wgcGFyc2luZ1N1Y2NlZWRlZCwgYm9vbCBpc0VuZGVkKTsKICAgICB2
b2lkIHJlZW5xdWVTYW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpOwotICAgIHZvaWQg
ZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBTb3VyY2VCdWZmZXJQcml2YXRl
Q2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbml0
aWFsaXphdGlvblNlZ21lbnQoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRp
b25TZWdtZW50JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlU2FtcGxlKE1lZGlhU2FtcGxlJik7CiAgICAgdm9pZCBwcm92aWRlTWVkaWFEYXRhKGNv
bnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpOwogCkBAIC0xNjksMTEgKzE3MSwxMyBAQCBwcml2YXRl
OgogICAgIHZvaWQgcmVlbnF1ZXVlTWVkaWFGb3JUaW1lKFRyYWNrQnVmZmVyJiwgY29uc3QgQXRv
bVN0cmluZyYgdHJhY2tJRCwgY29uc3QgTWVkaWFUaW1lJik7CiAgICAgYm9vbCB2YWxpZGF0ZUlu
aXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0
aWFsaXphdGlvblNlZ21lbnQmKTsKICAgICB2b2lkIHByb3ZpZGVNZWRpYURhdGEoVHJhY2tCdWZm
ZXImLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKTsKKyAgICB2b2lkIHNldEJ1ZmZlcmVkUmFu
Z2VzKGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYpOwogCiAgICAgYm9vbCBtX2lzQXR0YWNoZWQg
eyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNBdWRpbyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hh
c1ZpZGVvIHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8QXRvbVN0cmluZywgVHJhY2tCdWZmZXI+
IG1fdHJhY2tCdWZmZXJNYXA7Ci0gICAgTWVkaWFUaW1lIG1fY3VycmVudFRpbWVGdWRnZUZhY3Rv
cjsKIAogICAgIFNvdXJjZUJ1ZmZlckFwcGVuZE1vZGUgbV9hcHBlbmRNb2RlIHsgU291cmNlQnVm
ZmVyQXBwZW5kTW9kZTo6U2VnbWVudHMgfTsKIApAQCAtMTkwLDcgKzE5NCw2IEBAIHByaXZhdGU6
CiAKICAgICBib29sIG1fYnVmZmVyRnVsbCB7IGZhbHNlIH07CiAgICAgUmVmUHRyPFRpbWVSYW5n
ZXM+IG1fYnVmZmVyZWQ7Ci0gICAgYm9vbCBtX2J1ZmZlcmVkRGlydHkgeyB0cnVlIH07CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmgKaW5kZXggZWNk
M2M3NjNmMTI0YjdjMGQ0Yzc1OTViZDNhNmFmMTY1YzNkOTQzYi4uYTdmMDQxMmYxNDA5MjA1NTEy
YTQzOWNmOGIxYTRlMzBjY2NkZmQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaApAQCAtMzYs
NiArMzYsNyBAQCBjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZTsKIGNsYXNzIEluYmFuZFRleHRUcmFj
a1ByaXZhdGU7CiBjbGFzcyBNZWRpYVNhbXBsZTsKIGNsYXNzIE1lZGlhRGVzY3JpcHRpb247Citj
bGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZTsKIAogY2xh
c3MgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCB7CkBAIC02MywyMSArNjQsMjIgQEAgcHVibGlj
OgogICAgICAgICB9OwogICAgICAgICBWZWN0b3I8VGV4dFRyYWNrSW5mb3JtYXRpb24+IHRleHRU
cmFja3M7CiAgICAgfTsKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJl
Y2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50Jikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9v
bCBkZWNvZGVFcnJvcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRl
RHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
c291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxlKGRvdWJsZSBmcmFtZUR1cmF0aW9uKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWREcm9wU2FtcGxlKCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRp
YWxpemF0aW9uU2VnbWVudChJbml0aWFsaXphdGlvblNlZ21lbnQmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVT
dHJlYW1FbmRlZFdpdGhEZWNvZGVFcnJvcigpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc291cmNl
QnVmZmVyUHJpdmF0ZUhhc0F1ZGlvKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzb3Vy
Y2VCdWZmZXJQcml2YXRlSGFzVmlkZW8oKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQg
c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZEVycm9yKGJvb2wgZGVjb2RlRXJyb3IpID0gMDsKICAg
ICBlbnVtIGNsYXNzIEFwcGVuZFJlc3VsdCA6IHVpbnQ4X3QgewogICAgICAgICBBcHBlbmRTdWNj
ZWVkZWQsCiAgICAgICAgIFJlYWRTdHJlYW1GYWlsZWQsCiAgICAgICAgIFBhcnNpbmdGYWlsZWQK
ICAgICB9OwogICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxl
dGUoQXBwZW5kUmVzdWx0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZh
dGVEdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoZG91YmxlIGZyYW1lRHVyYXRpb24p
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZERyb3BTYW1wbGUo
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5
Q2hhbmdlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVC
dWZmZXJlZFJhbmdlc0NoYW5nZWQoY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJikgPSAwOworCiAg
ICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJy
b3IoaW50IGVycm9yQ29kZSkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgKaW5kZXggMGM0MTNjMmRkZjVkOWRh
MmExNWIxMTM1YzA4ZTUxMDg1MmI4MDJjNi4uZWE1YTI5Y2ViNWNmZTlmMDI0MjdjNWVhZGRjMTY0
Mjc0Y2I2ZDYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
VmlkZW9UcmFja1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9WaWRlb1RyYWNrUHJpdmF0ZS5oCkBAIC02NCw3ICs2NCw2IEBAIHB1YmxpYzoKICAgICB1c2lu
ZyBTZWxlY3RlZENoYW5nZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoVmlkZW9UcmFja1ByaXZh
dGUmLCBib29sIHNlbGVjdGVkKT47CiAgICAgdm9pZCBzZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFj
ayhTZWxlY3RlZENoYW5nZWRDYWxsYmFjayYmIGNhbGxiYWNrKSB7IG1fc2VsZWN0ZWRDaGFuZ2Vk
Q2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQogCi0KIHByb3RlY3RlZDoKICAgICBWaWRl
b1RyYWNrUHJpdmF0ZSgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCmluZGV4IDExMzZmZDI1MmI4MmZlY2M3NmI3
ZTk4ZmI0ZDhlYmFiNWNlZWI5NDUuLjhjM2JjOTVjOTI0ZDFlYTFhOWNlN2UyOWEyNDU1ZTgzZmMz
MjFlNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZh
dGVBVkZPYmpDLmgKQEAgLTY3LDkgKzY3LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqPiYgYWN0aXZlU291cmNlQnVmZmVycygpIGNvbnN0
IHsgcmV0dXJuIG1fYWN0aXZlU291cmNlQnVmZmVyczsgfQogCiAgICAgQWRkU3RhdHVzIGFkZFNv
dXJjZUJ1ZmZlcihjb25zdCBDb250ZW50VHlwZSYsIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRl
PiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAg
dm9pZCBkdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBtYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMpIG92ZXJyaWRlOwogICAgIHZvaWQg
dW5tYXJrRW5kT2ZTdHJlYW0oKSBvdmVycmlkZTsKKyAgICBib29sIGlzRW5kZWQoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX2lzRW5kZWQ7IH0KICAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0
ZSByZWFkeVN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSZWFkeVN0YXRlKE1l
ZGlhUGxheWVyOjpSZWFkeVN0YXRlKSBvdmVycmlkZTsKICAgICB2b2lkIHdhaXRGb3JTZWVrQ29t
cGxldGVkKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFT
b3VyY2VQcml2YXRlQVZGT2JqQy5tbQppbmRleCBiMDAzOTMxYzdkNzU5ZjI5ZDllMDY2ZmIxMjAy
MzA3Y2Y1MjQ5NTY2Li5lYTc1MjExMjAzNDdlMjFjMGViNWU0ZTE4ZGY3ZDBjYjY0OGRiYTIzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMubW0KQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFu
Z2VzPiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpidWZmZXJlZCgpCiAgICAgcmV0dXJuIG1f
Y2xpZW50LT5idWZmZXJlZCgpOwogfQogCi12b2lkIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6
OmR1cmF0aW9uQ2hhbmdlZCgpCit2b2lkIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmR1cmF0
aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmKQogewogICAgIG1fcGxheWVyLT5kdXJhdGlvbkNo
YW5nZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMuaAppbmRleCA1NDY1MzJiYTE5ZWE0NGY4ZmFmNDlhZDE5NzUyMWY5N2U4ZTFl
ZTY4Li4zZmE5ZWY2NjM3Y2Q1ZjkzOWViODg4ZTU4MzFlNmNhZjk3NGU2YWNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oCkBAIC0y
OCw4ICsyOCwxMCBAQAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKICNpbmNsdWRlICJTb3Vy
Y2VCdWZmZXJQYXJzZXIuaCIKKyNpbmNsdWRlIDx3dGYvQm94Lmg+CiAjaW5jbHVkZSA8d3RmL1R5
cGVDYXN0cy5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RocmVh
ZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKIE9CSkNfQ0xBU1MgQVZBc3NldDsKIE9CSkNfQ0xBU1Mg
QVZTdHJlYW1EYXRhUGFyc2VyOwpAQCAtNzcsNiArNzksNyBAQCBwcml2YXRlOgogICAgIFJldGFp
blB0cjxXZWJBVlN0cmVhbURhdGFQYXJzZXJMaXN0ZW5lcj4gbV9kZWxlZ2F0ZTsKICAgICBib29s
IG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlvblNlZ21lbnQgeyBmYWxzZSB9
OwogICAgIGJvb2wgbV9wYXJzZXJTdGF0ZVdhc1Jlc2V0IHsgZmFsc2UgfTsKKyAgICBCb3g8Qmlu
YXJ5U2VtYXBob3JlPiBtX3JlYWR5VG9QYXJzZU1lZGlhU2FtcGxlc1NlbWFwaG9yZTsKIAogI2lm
ICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIFJlZlB0cjxjb25zdCBXVEY6OkxvZ2dlcj4gbV9s
b2dnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbQppbmRleCAzNWQ5ZjU1MGMzYjIxMDQxYWVmN2QyYTY0M2I4YWFjN2I0YTM5NTVi
Li41YjRmOGVlMGFjNTZhZDIzYjRjZGY2NTkxZmE2NTljNDMxYzFkOGRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTIx
MSw2ICsyMTEsNyBAQCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjp+U291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQygpCiAKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0
YShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhLCBBcHBlbmRGbGFncyBmbGFncykKIHsKKyAg
ICBtX3JlYWR5VG9QYXJzZU1lZGlhU2FtcGxlc1NlbWFwaG9yZSA9IEJveDxCaW5hcnlTZW1hcGhv
cmU+OjpjcmVhdGUoKTsKICAgICBhdXRvIHNoYXJlZERhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0
ZShXVEZNb3ZlKGRhdGEpKTsKICAgICBhdXRvIG5zRGF0YSA9IHNoYXJlZERhdGEtPmNyZWF0ZU5T
RGF0YSgpOwogICAgIGlmIChtX3BhcnNlclN0YXRlV2FzUmVzZXQgfHwgZmxhZ3MgPT0gQXBwZW5k
RmxhZ3M6OkRpc2NvbnRpbnVpdHkpCkBAIC0yMjIsNiArMjIzLDExIEBAIHZvaWQgU291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRh
LCBBcHBlbmRGCiAKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6Zmx1c2hQZW5kaW5n
TWVkaWFEYXRhKCkKIHsKKyAgICBpZiAobV9yZWFkeVRvUGFyc2VNZWRpYVNhbXBsZXNTZW1hcGhv
cmUpIHsKKyAgICAgICAgbV9yZWFkeVRvUGFyc2VNZWRpYVNhbXBsZXNTZW1hcGhvcmUtPnNpZ25h
bCgpOworICAgICAgICBtX3JlYWR5VG9QYXJzZU1lZGlhU2FtcGxlc1NlbWFwaG9yZSA9IG51bGxw
dHI7CisgICAgfQorCiAgICAgW21fcGFyc2VyIHByb3ZpZGVQZW5kaW5nTWVkaWFEYXRhXTsKIH0K
IApAQCAtMjM3LDEyICsyNDMsMjIgQEAgYm9vbCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpz
aG91bGRQcm92aWRlTWVkaWFkYXRhRm9yVHJhY2tJRCh1aW50NjRfdCB0cmFja0kKIAogdm9pZCBT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpyZXNldFBhcnNlclN0YXRlKCkKIHsKKyAgICBpZiAo
bV9yZWFkeVRvUGFyc2VNZWRpYVNhbXBsZXNTZW1hcGhvcmUpIHsKKyAgICAgICAgbV9yZWFkeVRv
UGFyc2VNZWRpYVNhbXBsZXNTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICBtX3JlYWR5VG9Q
YXJzZU1lZGlhU2FtcGxlc1NlbWFwaG9yZSA9IG51bGxwdHI7CisgICAgfQorCiAgICAgbV9wYXJz
ZXJTdGF0ZVdhc1Jlc2V0ID0gdHJ1ZTsKICAgICBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5p
dGlhbGl6YXRpb25TZWdtZW50ID0gdHJ1ZTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjppbnZhbGlkYXRlKCkKIHsKKyAgICBpZiAobV9yZWFkeVRvUGFyc2VNZWRpYVNhbXBs
ZXNTZW1hcGhvcmUpIHsKKyAgICAgICAgbV9yZWFkeVRvUGFyc2VNZWRpYVNhbXBsZXNTZW1hcGhv
cmUtPnNpZ25hbCgpOworICAgICAgICBtX3JlYWR5VG9QYXJzZU1lZGlhU2FtcGxlc1NlbWFwaG9y
ZSA9IG51bGxwdHI7CisgICAgfQorCiAgICAgW21fZGVsZWdhdGUgaW52YWxpZGF0ZV07CiAgICAg
bV9kZWxlZ2F0ZSA9IG51bGxwdHI7CiAgICAgbV9wYXJzZXIgPSBudWxscHRyOwpAQCAtMjk1LDcg
KzMxMSw5IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1E
YXRhQXNBc3NldChBVkFzc2V0KiBhc3NldCkKICAgICAgICAgICAgIC8vIEZJWE1FKDEyNTE2MSkg
ICAgOiBBZGQgVGV4dFRyYWNrIHN1cHBvcnQKICAgICAgICAgfQogCi0gICAgICAgIG1fZGlkUGFy
c2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhXVEZNb3ZlKHNlZ21lbnQpKTsKKyAgICAgICAg
bV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFdURk1vdmUoc2VnbWVudCksIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBtX3JlYWR5VG9QYXJzZU1lZGlhU2FtcGxlc1NlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAg
ICAgIH0pOwogICAgIH0pOwogfQogCkBAIC0zMTAsNiArMzI4LDExIEBAIHZvaWQgU291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQzo6ZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKE5TRXJy
b3IqIGVycm9yCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFByb3ZpZGVNZWRp
YURhdGFGb3JUcmFja0lEKHVpbnQ2NF90IHRyYWNrSUQsIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBs
ZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkIGZsYWdzKQogewogICAg
IFVOVVNFRF9QQVJBTShmbGFncyk7CisgICAgaWYgKG1fcmVhZHlUb1BhcnNlTWVkaWFTYW1wbGVz
U2VtYXBob3JlKSB7CisgICAgICAgIG1fcmVhZHlUb1BhcnNlTWVkaWFTYW1wbGVzU2VtYXBob3Jl
LT53YWl0KCk7CisgICAgICAgIG1fcmVhZHlUb1BhcnNlTWVkaWFTYW1wbGVzU2VtYXBob3JlID0g
bnVsbHB0cjsKKyAgICB9CisKICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBzdHJvbmdUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHNhbXBsZUJ1ZmZlciA9IHJldGFpblB0cihzYW1wbGVCdWZmZXIp
LCB0cmFja0lELCBtZWRpYVR5cGUgPSBtZWRpYVR5cGVdIHsKICAgICAgICAgaWYgKCFtX2RpZFBy
b3ZpZGVNZWRpYURhdGFDYWxsYmFjaykKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IDhi
MWVlYTYzMDA3ZWQ1YzRkMDg3NDQ2ZTc0M2IxM2E0YzFjYzAwYmQuLjFmNjI1YjNjNzhlODNlNTEx
NDQ4MDA5YmJjNDQ5NThlMzYzYWQ0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtOTEsOSArOTEsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCB3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRCh1aW50NjRfdCB0cmFja0lEKTsKICAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoUmVmPFVpbnQ4QXJyYXk+JiYs
IHVpbnQ2NF90IHRyYWNrSUQsIEJveDxCaW5hcnlTZW1hcGhvcmU+KTsKIAotICAgIGJvb2wgaGFz
VmlkZW8oKSBjb25zdDsKICAgICBib29sIGhhc1NlbGVjdGVkVmlkZW8oKSBjb25zdDsKLSAgICBi
b29sIGhhc0F1ZGlvKCkgY29uc3Q7CiAKICAgICB2b2lkIHRyYWNrRGlkQ2hhbmdlU2VsZWN0ZWQo
VmlkZW9UcmFja1ByaXZhdGUmLCBib29sIHNlbGVjdGVkKTsKICAgICB2b2lkIHRyYWNrRGlkQ2hh
bmdlRW5hYmxlZChBdWRpb1RyYWNrUHJpdmF0ZSYsIGJvb2wgZW5hYmxlZCk7CkBAIC0xNDAsNyAr
MTM4LDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
QyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiwgUmVmPFNvdXJjZUJ1ZmZlclBhcnNlcj4mJik7
CiAKICAgICB1c2luZyBJbml0aWFsaXphdGlvblNlZ21lbnQgPSBTb3VyY2VCdWZmZXJQcml2YXRl
Q2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ7Ci0gICAgdm9pZCBkaWRQYXJzZUluaXRpYWxp
emF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJik7CisgICAgdm9pZCBkaWRQYXJzZUlu
aXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhp
bnQzMl90KTsKICAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKFJlZjxNZWRp
YVNhbXBsZT4mJiwgdWludDY0X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpOwog
CkBAIC0xNTQsNiArMTUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZsdXNoKGNvbnN0IEF0b21T
dHJpbmcmIHRyYWNrSUQpIGZpbmFsOwogICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFT
YW1wbGU+JiYsIGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpIGZpbmFsOwogICAgIGJvb2wgaXNS
ZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpIGZpbmFsOworICAg
IE1lZGlhVGltZSB0aW1lRnVkZ2VGYWN0b3IoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldEFj
dGl2ZShib29sKSBmaW5hbDsKICAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgZmluYWw7CiAgICAg
dm9pZCBub3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG9tU3RyaW5n
JiB0cmFja0lEKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggNGQ2MTQ3ZTkxNjQ5MjRmNDJkNGRkZWY0YTZi
NmY4MGM2ZTUyYzM4ZS4uOTJiZTUwMGQyMjM3ZmUwMDVjZjU5NGM4YWU1NTJlNGM0MzY1ZDQ4OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMubW0KQEAgLTMwOCwxMCArMzA4LDEyIEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDCiAK
ICAgICBzb3VyY2VCdWZmZXJNYXAoKS5hZGQobV9tYXBJRCwgbWFrZVdlYWtQdHIoKnRoaXMpKTsK
IAotICAgIG1fcGFyc2VyLT5zZXREaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2Vn
bWVudCkgbXV0YWJsZSB7CisgICAgbV9wYXJzZXItPnNldERpZFBhcnNlSW5pdGlhbGl6YXRpb25E
YXRhQ2FsbGJhY2soW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChJbml0aWFs
aXphdGlvblNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+ZGlkUGFyc2VJ
bml0aWFsaXphdGlvbkRhdGEoV1RGTW92ZShzZWdtZW50KSk7CisgICAgICAgIGlmICghd2Vha1Ro
aXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZGlkUGFyc2VJbml0aWFsaXphdGlv
bkRhdGEoV1RGTW92ZShzZWdtZW50KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAg
IH0pOwogCiAgICAgbV9wYXJzZXItPnNldERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0Nh
bGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoaW50MzJfdCBlcnJvckNvZGUp
IG11dGFibGUgewpAQCAtMzQ0LDcgKzM0Niw3IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
Ojp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoKQogICAgICAgICBtX2hhc1Nlc3Npb25TZW1h
cGhvcmUtPnNpZ25hbCgpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpk
aWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50
KQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXphdGlv
bkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUik7CiAKQEAgLTM4NCw3ICszODYsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbgogICAg
IGlmIChtX21lZGlhU291cmNlKQogICAgICAgICBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+Y2hh
cmFjdGVyaXN0aWNzQ2hhbmdlZCgpOwogCi0gICAgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2Vn
bWVudChzZWdtZW50KTsKKyAgICBkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KFdURk1v
dmUoc2VnbWVudCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nKGlu
dDMyX3QgY29kZSkKQEAgLTU3Nyw4ICs1NzksNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjphcHBlbmRDb21wbGV0ZWQoKQogICAgIGlmIChtX3BhcnNpbmdTdWNjZWVkZWQgJiYg
bV9tZWRpYVNvdXJjZSkKICAgICAgICAgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPnNldExvYWRp
bmdQcm9ncmVzc3NlZCh0cnVlKTsKIAotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGll
bnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShtX3BhcnNpbmdTdWNjZWVkZWQg
PyBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2NlZWRl
ZCA6IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdDo6UGFyc2luZ0ZhaWxl
ZCk7CisgICAgU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kQ29tcGxldGVkKG1fcGFyc2luZ1N1
Y2NlZWRlZCwgbV9tZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPmlzRW5kZWQoKSA6IHRydWUp
OwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphYm9ydCgpCkBAIC02ODEs
MjEgKzY4MiwxMSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRSZWFkeVN0
YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdAogICAgICAgICBtX21lZGlhU291
cmNlLT5wbGF5ZXIoKS0+c2V0UmVhZHlTdGF0ZShyZWFkeVN0YXRlKTsKIH0KIAotYm9vbCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6aGFzVmlkZW8oKSBjb25zdAotewotICAgIHJldHVybiBt
X2NsaWVudCAmJiBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKCk7Ci19Ci0K
IGJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc1NlbGVjdGVkVmlkZW8oKSBjb25z
dAogewogICAgIHJldHVybiBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgIT0gbm90Rm91bmQ7CiB9CiAK
LWJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc0F1ZGlvKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9jbGllbnQgJiYgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRp
bygpOwotfQotCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5n
ZVNlbGVjdGVkKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaywgYm9vbCBzZWxlY3RlZCkKIHsKICAg
ICBhdXRvIHRyYWNrSUQgPSB0cmFjay5pZCgpLnN0cmluZygpLnRvVUludDY0KCk7CkBAIC0xMDkx
LDYgKzEwODIsMTQgQEAgYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6aXNSZWFkeUZv
ck1vcmVTYW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKK01lZGlhVGltZSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dGltZUZ1ZGdlRmFj
dG9yKCkgY29uc3QKK3sKKyAgICBpZiAobV9tZWRpYVNvdXJjZSkKKyAgICAgICAgcmV0dXJuIG1f
bWVkaWFTb3VyY2UtPnRpbWVGdWRnZUZhY3RvcigpOworCisgICAgcmV0dXJuIFNvdXJjZUJ1ZmZl
clByaXZhdGU6OnRpbWVGdWRnZUZhY3RvcigpOworfQorCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjpzZXRBY3RpdmUoYm9vbCBpc0FjdGl2ZSkKIHsKICAgICBBTFdBWVNfTE9HKExP
R0lERU5USUZJRVIsIGlzQWN0aXZlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKaW5kZXggMGRjODFm
MDZkMjdkY2QwOTczOWQwN2U0NTA3NThiNjM2MjlkNzFjNy4uZTEwY2RhYmM0N2E0NDVkMzFjYTkw
ZjliZjQ4MTJmZmM0YTAzMTE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJNZWRpYVBsYXllckVudW1zLmgiCiAjaW5jbHVkZSAiU291cmNlQnVm
ZmVyUHJpdmF0ZUNsaWVudC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1VpbnQ4QXJyYXku
aD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTY5LDcgKzcwLDcgQEAgcHVibGljOgog
CiAgICAgLy8gV2lsbCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgogICAgIHVzaW5nIElu
aXRpYWxpemF0aW9uU2VnbWVudCA9IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxp
emF0aW9uU2VnbWVudDsKLSAgICB1c2luZyBEaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxi
YWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEluaXRpYWxpemF0aW9uU2VnbWVudCYmKT47CisgICAg
dXNpbmcgRGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayA9IFdURjo6RnVuY3Rpb248
dm9pZChJbml0aWFsaXphdGlvblNlZ21lbnQmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KT47CiAgICAgdm9pZCBzZXREaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKERpZFBh
cnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKICAgICB7CiAgICAgICAg
IG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCA4NGJjNTc0ZGMwZjAzZjhm
ZmI0MzY4OTBmYzRhMWE1ZGVhYTllNjQxLi44ZjhjZjE5MGM0MTkzYzgzMWU1ZDY4MTgxZTY3N2I4
NGE0ODczNDQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcApAQCAtNTQ2LDEx
ICs1NDYsMTYgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjphcHBlbmREYXRhKFZlY3Rv
cjx1bnNpZ25lZCBjaGFyPiYmIGJ1ZmZlciwgQXBwZW5kRmwKICAgICAgICAgaWYgKG1fZGlkRW5j
b3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2spCiAgICAgICAgICAgICBtX2RpZEVuY291
bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKGNvZGUpOwogICAgIH0pOworCisgICAgbV9y
ZWFkeVRvUGFyc2VNZWRpYVNhbXBsZXNTZW1hcGhvcmUgPSBCb3g8QmluYXJ5U2VtYXBob3JlPjo6
Y3JlYXRlKCk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6Zmx1c2hQZW5kaW5n
TWVkaWFEYXRhKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmIChtX3JlYWR5VG9Q
YXJzZU1lZGlhU2FtcGxlc1NlbWFwaG9yZSkgeworICAgICAgICBtX3JlYWR5VG9QYXJzZU1lZGlh
U2FtcGxlc1NlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAgICAgIG1fcmVhZHlUb1BhcnNlTWVkaWFT
YW1wbGVzU2VtYXBob3JlID0gbnVsbHB0cjsKKyAgICB9CiB9CiAKIHZvaWQgU291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6c2V0U2hvdWxkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoYm9vbCwgdWlu
dDY0X3QpCkBAIC01NjcsNiArNTcyLDEyIEBAIGJvb2wgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
c2hvdWxkUHJvdmlkZU1lZGlhZGF0YUZvclRyYWNrSUQodWludDY0X3QpCiB2b2lkIFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06OnJlc2V0UGFyc2VyU3RhdGUoKQogewogICAgIElORk9fTE9HX0lGX1BP
U1NJQkxFKExPR0lERU5USUZJRVIpOworCisgICAgaWYgKG1fcmVhZHlUb1BhcnNlTWVkaWFTYW1w
bGVzU2VtYXBob3JlKSB7CisgICAgICAgIG1fcmVhZHlUb1BhcnNlTWVkaWFTYW1wbGVzU2VtYXBo
b3JlLT5zaWduYWwoKTsKKyAgICAgICAgbV9yZWFkeVRvUGFyc2VNZWRpYVNhbXBsZXNTZW1hcGhv
cmUgPSBudWxscHRyOworICAgIH0KKwogICAgIG1fcGFyc2VyLT5EaWRTZWVrKCk7CiAgICAgbV9z
dGF0ZSA9IFN0YXRlOjpOb25lOwogICAgIG1fdHJhY2tzLmNsZWFyKCk7CkBAIC01NzgsNiArNTg5
LDEyIEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6cmVzZXRQYXJzZXJTdGF0ZSgpCiB2
b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmludmFsaWRhdGUoKQogewogICAgIElORk9fTE9H
X0lGX1BPU1NJQkxFKExPR0lERU5USUZJRVIpOworCisgICAgaWYgKG1fcmVhZHlUb1BhcnNlTWVk
aWFTYW1wbGVzU2VtYXBob3JlKSB7CisgICAgICAgIG1fcmVhZHlUb1BhcnNlTWVkaWFTYW1wbGVz
U2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICAgICAgbV9yZWFkeVRvUGFyc2VNZWRpYVNhbXBsZXNT
ZW1hcGhvcmUgPSBudWxscHRyOworICAgIH0KKwogICAgIG1fcGFyc2VyID0gbnVsbHB0cjsKICAg
ICBtX3RyYWNrcy5jbGVhcigpOwogICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50ID0gbnVsbHB0
cjsKQEAgLTcxNiw4ICs3MzMsMTAgQEAgU3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9u
Q2x1c3RlckJlZ2luKGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGMKICAgICAgICAg
cmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtOb3RFbm91Z2hNZW1vcnkpOwogCiAgICAgaWYgKG1faW5p
dGlhbGl6YXRpb25TZWdtZW50RW5jb3VudGVyZWQgJiYgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9u
RGF0YUNhbGxiYWNrKSB7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5pdGlhbGl6YXRpb25TZWdtZW50ID0gV1RGTW92ZSgq
bV9pbml0aWFsaXphdGlvblNlZ21lbnQpXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIG1fZGlk
UGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhXVEZNb3ZlKGluaXRpYWxpemF0aW9uU2Vn
bWVudCkpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGluaXRpYWxpemF0aW9uU2VnbWVudCA9IFdURk1vdmUoKm1faW5pdGlh
bGl6YXRpb25TZWdtZW50KV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIG1fZGlkUGFyc2VJbml0
aWFsaXphdGlvbkRhdGFDYWxsYmFjayhXVEZNb3ZlKGluaXRpYWxpemF0aW9uU2VnbWVudCksIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICAgICAgbV9yZWFkeVRvUGFyc2VNZWRpYVNhbXBsZXNTZW1hcGhvcmUtPnNpZ25hbCgpOwor
ICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0KICAgICBtX2luaXRpYWxpemF0aW9u
U2VnbWVudEVuY291bnRlcmVkID0gZmFsc2U7CkBAIC0xMjAzLDYgKzEyMjIsMTEgQEAgd2VibTo6
U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRnJhbWUoY29uc3QgRnJhbWVNZXRhZGF0
YSYgbWV0YWRhdGEsIFJlYWQKIAogICAgICAgICBhdXRvIHRyYWNrSUQgPSB0cmFjay50cmFja191
aWQudmFsdWUoKTsKIAorICAgICAgICBpZiAobV9yZWFkeVRvUGFyc2VNZWRpYVNhbXBsZXNTZW1h
cGhvcmUpIHsKKyAgICAgICAgICAgIG1fcmVhZHlUb1BhcnNlTWVkaWFTYW1wbGVzU2VtYXBob3Jl
LT53YWl0KCk7CisgICAgICAgICAgICBtX3JlYWR5VG9QYXJzZU1lZGlhU2FtcGxlc1NlbWFwaG9y
ZSA9IG51bGxwdHI7CisgICAgICAgIH0KKwogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNhbXBsZUJ1ZmZlciA9IFdURk1vdmUo
c2FtcGxlQnVmZmVyKSwgdHJhY2tJRF0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIW1f
ZGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKQogICAgICAgICAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaAppbmRleCA0NWJkNjlmZmI0NzEyYmU1MjQ1ZTYyNmNm
YjdjZGU5ODdlOGFiYWNmLi5kZWQyOTI0ZTQ4YWQzOTUwOGNhNzJhM2EwYTg2M2JjMDliMzUyYzgw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCkBAIC0zMSw2ICszMSw3IEBACiAjaW5j
bHVkZSA8Y29tbW9uL3ZwOV9oZWFkZXJfcGFyc2VyLmg+CiAjaW5jbHVkZSA8d2VibS9jYWxsYmFj
ay5oPgogI2luY2x1ZGUgPHdlYm0vc3RhdHVzLmg+CisjaW5jbHVkZSA8d3RmL0JveC5oPgogI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KICNpbmNs
dWRlIDx3dGYvVW5pcXVlUmVmLmg+CkBAIC0zOCw2ICszOSw3IEBACiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21TdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUu
aD4KIAogdHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNU2FtcGxlQnVmZmVy
UmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXREZXNjcmlwdGlvbiogQ01G
b3JtYXREZXNjcmlwdGlvblJlZjsKQEAgLTE0MSw2ICsxNDMsOCBAQCBwcml2YXRlOgogICAgIE9w
dGlvbmFsPEJsb2NrVmFyaWFudD4gbV9jdXJyZW50QmxvY2s7CiAgICAgT3B0aW9uYWw8dWludDY0
X3Q+IG1fcmV3aW5kVG9Qb3NpdGlvbjsKIAorICAgIEJveDxCaW5hcnlTZW1hcGhvcmU+IG1fcmVh
ZHlUb1BhcnNlTWVkaWFTYW1wbGVzU2VtYXBob3JlOworCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECiAgICAgUmVmUHRyPGNvbnN0IFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2
b2lkKiBtX2xvZ0lkZW50aWZpZXIgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3Vy
Y2VQcml2YXRlLmNwcAppbmRleCA5YjRkMWY4MjEwMDFjYzU5YmY4NzA4YWNmNzgyNTZhMjkxYzU2
ZjFjLi45NzlhODFkM2I5MGNiNjYwYWU3N2JhYWIyOGRhMGVjOTZjYjM5MjAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJj
ZVByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3Vy
Y2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6YnVmZmVy
ZWQoKQogICAgIHJldHVybiBtX2NsaWVudC0+YnVmZmVyZWQoKTsKIH0KIAotdm9pZCBNb2NrTWVk
aWFTb3VyY2VQcml2YXRlOjpkdXJhdGlvbkNoYW5nZWQoKQordm9pZCBNb2NrTWVkaWFTb3VyY2VQ
cml2YXRlOjpkdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikKIHsKICAgICBtX3BsYXll
ci51cGRhdGVEdXJhdGlvbihkdXJhdGlvbigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQ
cml2YXRlLmgKaW5kZXggN2E2OTNhZWQzNWNhNmM5YzkzNjkxMDJhYTU1MjRmZTMwZmFkNDQwMS4u
ZTNkOTgwN2M2YjE1MjFmYzliMDRlNjRiMTY5ZjVlZWRkNDY0NTE5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
TWVkaWFTb3VyY2VQcml2YXRlLmgKQEAgLTgwLDggKzgwLDkgQEAgcHJpdmF0ZToKIAogICAgIC8v
IE1lZGlhU291cmNlUHJpdmF0ZSBPdmVycmlkZXMKICAgICBBZGRTdGF0dXMgYWRkU291cmNlQnVm
ZmVyKGNvbnN0IENvbnRlbnRUeXBlJiwgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGU+Jikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGR1
cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIG1hcmtF
bmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cykgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0VuZGVk
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0VuZGVkOyB9CiAgICAgdm9pZCB1bm1hcmtF
bmRPZlN0cmVhbSgpIG92ZXJyaWRlOwogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5
U3RhdGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2
YXRlLmNwcAppbmRleCAyZmM5MGQzNTRmNmI5NjdjNWM5NTAyN2IyMjNlNGEzNTc4MDBmMzBhLi5h
ZDQ0ZWZiZGFhOGExYmEzM2EyZjcxNTU4ODExZTMyZGIwYzE1M2FlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2
YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgTW9ja1Nv
dXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQog
CiAgICAgd2hpbGUgKG1faW5wdXRCdWZmZXIuc2l6ZSgpICYmIHJlc3VsdCA9PSBTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2NlZWRlZCkgewogICAgICAg
ICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobV9pbnB1dEJ1ZmZlci5kYXRhKCks
IG1faW5wdXRCdWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgc2l6ZV90IGJveExlbmd0aCA9IE1vY2tC
b3g6OnBlZWtMZW5ndGgoYnVmZmVyLnB0cigpKTsKKyAgICAgICAgdWludDY0X3QgYm94TGVuZ3Ro
ID0gTW9ja0JveDo6cGVla0xlbmd0aChidWZmZXIucHRyKCkpOwogICAgICAgICBpZiAoYm94TGVu
Z3RoID4gYnVmZmVyLT5ieXRlTGVuZ3RoKCkpCiAgICAgICAgICAgICBicmVhazsKIApAQCAtMTkx
LDcgKzE5MSw3IEBAIHZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVJbml0
aWFsaXphdGlvblNlZ21lbnQoY29uc3QgTW9ja0luaXRpYWxpCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50
KHNlZ21lbnQpOworICAgIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVJbml0aWFsaXph
dGlvblNlZ21lbnQoV1RGTW92ZShzZWdtZW50KSwgW10oKSB7IH0pOwogfQogCiB2b2lkIE1vY2tT
b3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlU2FtcGxlKGNvbnN0IE1vY2tTYW1wbGVCb3gm
IHNhbXBsZUJveCkKQEAgLTI0OSw3ICsyNDksNyBAQCBNZWRpYVRpbWUgTW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGU6Om1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWVGb3JUcmFja0lEKGNvbgog
ICAgIHJldHVybiBtX21pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWU7CiB9CiAKLXZvaWQg
TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OnNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRChj
b25zdCBBdG9tU3RyaW5nJiwgc2l6ZV90IG1heFF1ZXVlRGVwdGgpCit2b2lkIE1vY2tTb3VyY2VC
dWZmZXJQcml2YXRlOjpzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQoY29uc3QgQXRvbVN0
cmluZyYsIHVpbnQ2NF90IG1heFF1ZXVlRGVwdGgpCiB7CiAgICAgbV9tYXhRdWV1ZURlcHRoID0g
bWF4UXVldWVEZXB0aDsKIH0KQEAgLTMyMiwxNiArMzIyLDYgQEAgdm9pZCBNb2NrU291cmNlQnVm
ZmVyUHJpdmF0ZTo6ZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYgc2FtcGxlLCBjb25z
dCBBdG8KICAgICBtX2VucXVldWVkU2FtcGxlcy5hcHBlbmQodG9TdHJpbmcoc2FtcGxlLmdldCgp
KSk7CiB9CiAKLWJvb2wgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6Omhhc1ZpZGVvKCkgY29uc3QK
LXsKLSAgICByZXR1cm4gbV9jbGllbnQgJiYgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVI
YXNWaWRlbygpOwotfQotCi1ib29sIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpoYXNBdWRpbygp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xpZW50ICYmIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQ
cml2YXRlSGFzQXVkaW8oKTsKLX0KLQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogV1RGTG9n
Q2hhbm5lbCYgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmxvZ0NoYW5uZWwoKSBjb25zdAogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oCmluZGV4IGI2YzU0N2RkOTVjMWY2YjBi
ZGRkMmU0MTFhZjE0MmIzOThmZGZmZTUuLjhiMmExMzg5NDZjMjhmMmYzZTdkZWJmZTczNjVjY2M3
YmFmYmEzZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAgLTQ2LDkg
KzQ2LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhck1lZGlhU291cmNlKCkgeyBtX21lZGlh
U291cmNlID0gbnVsbHB0cjsgfQogCi0gICAgYm9vbCBoYXNWaWRlbygpIGNvbnN0OwotICAgIGJv
b2wgaGFzQXVkaW8oKSBjb25zdDsKLQogcHJpdmF0ZToKICAgICBleHBsaWNpdCBNb2NrU291cmNl
QnVmZmVyUHJpdmF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKik7CiAKQEAgLTc1LDcgKzcyLDcg
QEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxTdHJpbmc+IGVucXVldWVkU2FtcGxlc0ZvclRyYWNr
SUQoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogICAgIE1lZGlhVGltZSBtaW5pbXVtVXBjb21p
bmdQcmVzZW50YXRpb25UaW1lRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7Ci0g
ICAgdm9pZCBzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYs
IHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQo
Y29uc3QgQXRvbVN0cmluZyYsIHVpbnQ2NF90KSBmaW5hbDsKIAogICAgIHZvaWQgZGlkUmVjZWl2
ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBNb2NrSW5pdGlhbGl6YXRpb25Cb3gmKTsKICAg
ICB2b2lkIGRpZFJlY2VpdmVTYW1wbGUoY29uc3QgTW9ja1NhbXBsZUJveCYpOwpAQCAtOTQsNyAr
OTEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0FjdGl2ZSB7IGZhbHNlIH07CiAgICAgTWVk
aWFUaW1lIG1fbWluaW11bVVwY29taW5nUHJlc2VudGF0aW9uVGltZTsKICAgICBWZWN0b3I8U3Ry
aW5nPiBtX2VucXVldWVkU2FtcGxlczsKLSAgICBPcHRpb25hbDxzaXplX3Q+IG1fbWF4UXVldWVE
ZXB0aDsKKyAgICBPcHRpb25hbDx1aW50NjRfdD4gbV9tYXhRdWV1ZURlcHRoOwogICAgIFZlY3Rv
cjxjaGFyPiBtX2lucHV0QnVmZmVyOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1By
b3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNr
UHJveHkuY3BwCmluZGV4IDkzZTJmMjdkODJlOGY5MjRmNzg1YzUwYTY1MDUwNWFkYjZhMzY3MjYu
LmVhZTkzZTczYWIwYzU3NjM4MGQ0NThjNzk0NDkxYTA2NjEwYjk3YjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHku
Y3BwCkBAIC02MCw3ICs2MCw3IEBAIFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24mIFJl
bW90ZUF1ZGlvVHJhY2tQcm94eTo6Y29uZmlndXJhdGlvbigpCiB7CiAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb247
CiAKLSAgICBjb25maWd1cmF0aW9uLT5pZGVudGlmaWVyID0gbV90cmFja1ByaXZhdGUtPmlkKCk7
CisgICAgY29uZmlndXJhdGlvbi0+dHJhY2tJZCA9IG1fdHJhY2tQcml2YXRlLT5pZCgpOwogICAg
IGNvbmZpZ3VyYXRpb24tPmxhYmVsID0gbV90cmFja1ByaXZhdGUtPmxhYmVsKCk7CiAgICAgY29u
ZmlndXJhdGlvbi0+bGFuZ3VhZ2UgPSBtX3RyYWNrUHJpdmF0ZS0+bGFuZ3VhZ2UoKTsKICAgICBj
b25maWd1cmF0aW9uLT50cmFja0luZGV4ID0gbV90cmFja1ByaXZhdGUtPnRyYWNrSW5kZXgoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5LmNwcAppbmRleCBjM2IwNzM0YTRlZjk4ZDJhN2U3MzkwZWE5ODAzZTNlMDM2
YjdlYzUyLi40MmVlNzliYjA2ZTQ3NTI1ZGFiMzU0MjZkM2FkYmExNThhNjNhMWMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHkuY3BwCkBAIC0xMzQsMTAgKzEzNCwxNCBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OmxvYWQoVVJMJiYgdXJsLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+
JgogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6bG9hZE1lZGlhU291cmNlKFVSTCYmIHVybCwgY29uc3QgV2ViQ29yZTo6Q29udGVudFR5
cGUmIGNvbnRlbnRUeXBlLCBSZW1vdGVNZWRpYVNvdXJjZUlkZW50aWZpZXIgbWVkaWFTb3VyY2VJ
ZGVudGlmaWVyKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpsb2FkTWVkaWFTb3VyY2Uo
VVJMJiYgdXJsLCBjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYgY29udGVudFR5cGUsIFJlbW90
ZU1lZGlhU291cmNlSWRlbnRpZmllciBtZWRpYVNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIG1fbWVkaWFTb3VyY2VQcm94eSA9IGFkb3B0UmVmKCpuZXcgUmVt
b3RlTWVkaWFTb3VyY2VQcm94eShtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2Vzcygp
LCBtZWRpYVNvdXJjZUlkZW50aWZpZXIsICp0aGlzKSk7CiAgICAgbV9wbGF5ZXItPmxvYWQodXJs
LCBjb250ZW50VHlwZSwgbV9tZWRpYVNvdXJjZVByb3h5LmdldCgpKTsKKworICAgIFJlbW90ZU1l
ZGlhUGxheWVyQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOworICAgIGdldENvbmZpZ3VyYXRp
b24oY29uZmlndXJhdGlvbik7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb25maWd1
cmF0aW9uKSk7CiB9CiAjZW5kaWYKIApAQCAtNzU5LDcgKzc2Myw4IEBAIHZvaWQgUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eTo6dXBkYXRlQ2FjaGVkU3RhdGUoKQogCiAgICAgaWYgKG1fYnVmZmVyZWRD
aGFuZ2VkKSB7CiAgICAgICAgIG1fYnVmZmVyZWRDaGFuZ2VkID0gZmFsc2U7Ci0gICAgICAgIG1f
Y2FjaGVkU3RhdGUuYnVmZmVyZWRSYW5nZXMgPSAqbV9wbGF5ZXItPmJ1ZmZlcmVkKCk7CisgICAg
ICAgIGlmIChtX2VuZ2luZUlkZW50aWZpZXIgIT0gTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdp
bmVJZGVudGlmaWVyOjpBVkZvdW5kYXRpb25NU0UpCisgICAgICAgICAgICBtX2NhY2hlZFN0YXRl
LmJ1ZmZlcmVkUmFuZ2VzID0gKm1fcGxheWVyLT5idWZmZXJlZCgpOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmgKaW5kZXggYjgyNDc3MTNhZGFmMWM0NTNlYTRjNjU4MWRhZDQzYmIxZTBjMjA2Ni4u
YWU2YWQ4YjQ2MGI5ZjZiZGIzYjAwNDBmNzgwYmYxOTVmNDQ5YmNmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5o
CkBAIC0xMTUsNyArMTE1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkKFVSTCYmLCBPcHRp
b25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYsIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRU
eXBlJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBs
YXllckNvbmZpZ3VyYXRpb24mJik+JiYpOwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAg
dm9pZCBsb2FkTWVkaWFTb3VyY2UoVVJMJiYsIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiwg
UmVtb3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGxvYWRNZWRpYVNvdXJjZShV
UkwmJiwgY29uc3QgV2ViQ29yZTo6Q29udGVudFR5cGUmLCBSZW1vdGVNZWRpYVNvdXJjZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0
aW9uJiYpPiYmKTsKICNlbmRpZgogICAgIHZvaWQgY2FuY2VsTG9hZCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDA4ZWExNWNjNjZiMmVhOWQwNzBkYTZiYjcxZjg4
Yjc0NTFjZjAxNTguLjJjZGUwODA0OWFkZWRiNGM2MTY5NTY5NGIwYjg5YjVlZjBmYTEwMzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yOCw3ICsyOCw3IEBAIG1lc3Nh
Z2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyUHJveHkgTm90UmVmQ291bnRlZCB7CiAKICAgICBMb2Fk
KFVSTCB1cmwsIE9wdGlvbmFsPFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5k
Ym94RXh0ZW5zaW9uLCBXZWJDb3JlOjpDb250ZW50VHlwZSBjb250ZW50VHlwZSwgU3RyaW5nIGtl
eVN5c3RlbSkgLT4gKHN0cnVjdCBXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlv
biBwbGF5ZXJDb25maWd1cmF0aW9uKSBBc3luYwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0g
ICAgTG9hZE1lZGlhU291cmNlKFVSTCB1cmwsIFdlYkNvcmU6OkNvbnRlbnRUeXBlIGNvbnRlbnRU
eXBlLCBXZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNlSWRlbnRpZmllciBtZWRpYVNvdXJjZUlkZW50
aWZpZXIpIFN5bmNocm9ub3VzCisgICAgTG9hZE1lZGlhU291cmNlKFVSTCB1cmwsIFdlYkNvcmU6
OkNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlLCBXZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNlSWRlbnRp
ZmllciBtZWRpYVNvdXJjZUlkZW50aWZpZXIpIC0+IChzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVNZWRp
YVBsYXllckNvbmZpZ3VyYXRpb24gcGxheWVyQ29uZmlndXJhdGlvbikgQXN5bmMKICNlbmRpZgog
ICAgIENhbmNlbExvYWQoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHAKaW5kZXggNDk5YmQ2MWMyZjc4MjIy
M2ZhMzhmYzk3YjE4MmZhNmQyYjkzODFkZS4uMmU0ODJkZWI2NWRmMzY0ZGFmYzk0N2NlZTJiNzU0
NWRlMzNlOGJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhU291cmNlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmNwcApAQCAtNjEsMTMgKzYxLDEyIEBAIHZvaWQg
UmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6c2V0UHJpdmF0ZUFuZE9wZW4oUmVmPE1lZGlhU291cmNl
UHJpdmF0ZT4mJiBtZWRpYVNvCiAKIE1lZGlhVGltZSBSZW1vdGVNZWRpYVNvdXJjZVByb3h5Ojpk
dXJhdGlvbigpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4geyB9
OworICAgIHJldHVybiBtX2R1cmF0aW9uOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1U
aW1lUmFuZ2VzPiBSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpidWZmZXJlZCgpIGNvbnN0CiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKQEAgLTExMiw2ICsxMTEs
MjIgQEAgdm9pZCBSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjphZGRTb3VyY2VCdWZmZXIoY29uc3Qg
V2ViQ29yZTo6Q29udGVudFR5cGUmIGNvbnRlbnQKICAgICBjYWxsYmFjayhzdGF0dXMsIHJlbW90
ZVNvdXJjZUlkZW50aWZpZXIpOwogfQogCit2b2lkIFJlbW90ZU1lZGlhU291cmNlUHJveHk6OmR1
cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uKQoreworICAgIGlmIChtX2R1
cmF0aW9uID09IGR1cmF0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2R1cmF0aW9uID0g
ZHVyYXRpb247CisgICAgaWYgKG1fcHJpdmF0ZSkKKyAgICAgICAgbV9wcml2YXRlLT5kdXJhdGlv
bkNoYW5nZWQoZHVyYXRpb24pOworfQorCit2b2lkIFJlbW90ZU1lZGlhU291cmNlUHJveHk6OnNl
dFJlYWR5U3RhdGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZSByZWFkeVN0
YXRlKQoreworICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0ZS0+c2V0UmVhZHlT
dGF0ZShyZWFkeVN0YXRlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAv
LyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHku
aAppbmRleCA1OTY4YzdiYmQxODljZDQ3OWVmNGFlYWI0ZDQ0OTk1MzNmZDNkNjViLi45NTkzNDQ5
ZDNiNWU1Y2ZlZDk2YjUxNWU4MTdlMDNkYTBjY2EwOGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgKQEAgLTc2
LDE3ICs3NiwyMSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVj
ZWl2ZXIKLSAgICAvLyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAotICAgIHVzaW5nIEFkZFNvdXJjZUJ1ZmZlckNhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU6OkFk
ZFN0YXR1cywgT3B0aW9uYWw8UmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcj4gcmVtb3RlU291
cmNlQnVmZmVySWRlbnRpZmllcik+OworICAgIHVzaW5nIEFkZFNvdXJjZUJ1ZmZlckNhbGxiYWNr
ID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU6OkFk
ZFN0YXR1cywgT3B0aW9uYWw8UmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcj4pPjsKICAgICB2
b2lkIGFkZFNvdXJjZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYsIEFkZFNvdXJj
ZUJ1ZmZlckNhbGxiYWNrJiYpOworICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlh
VGltZSYpOworICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1z
OjpSZWFkeVN0YXRlKTsKIAogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29ubmVj
dGlvblRvV2ViUHJvY2VzczsKICAgICBSZW1vdGVNZWRpYVNvdXJjZUlkZW50aWZpZXIgbV9pZGVu
dGlmaWVyOwogICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU+IG1fcHJpdmF0
ZTsKICAgICBXZWFrUHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+IG1fcmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTsKIAorICAgIE1lZGlhVGltZSBtX2R1cmF0aW9uOworCiAgICAgVmVjdG9yPFJlZlB0
cjxSZW1vdGVTb3VyY2VCdWZmZXJQcm94eT4+IG1fc291cmNlQnVmZmVyczsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhU291cmNlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggY2E2Yjc1MmQ3NzA2MGRlY2NiOWRjM2Jj
Nzk2NDg5ZjRlYzkyMGRhZC4uZDk5OTEyNjg4ZWJiMGQ1OWFkY2RiNTM3Y2U4MzVlZmU3OTZlOWY2
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
U291cmNlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkubWVzc2FnZXMuaW4KQEAgLTI3LDYgKzI3LDggQEAK
IAogbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFTb3VyY2VQcm94eSBOb3RSZWZDb3VudGVkIHsKICAg
ICBBZGRTb3VyY2VCdWZmZXIoV2ViQ29yZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUpIC0+IChl
bnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpBZGRTdGF0dXMgc3RhdHVz
LCBPcHRpb25hbDxXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXI+IHJlbW90ZVNv
dXJjZUJ1ZmZlcklkZW50aWZpZXIpIFN5bmNocm9ub3VzCisgICAgRHVyYXRpb25DaGFuZ2VkKE1l
ZGlhVGltZSBkdXJhdGlvbikKKyAgICBTZXRSZWFkeVN0YXRlKFdlYkNvcmU6Ok1lZGlhUGxheWVy
RW51bXM6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
LmNwcAppbmRleCAyNjViNzNiNmE0ZGYzNTNmNDUzZGI3MjNjYzMyOThiYzc4NWIyYzc0Li44NDcz
M2ZjMGFiNDliNjM1NTc3MTkwYThiYWU5MmVkY2RiODYxZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5j
cHAKQEAgLTM0LDcgKzM0LDkgQEAKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5Lmgi
CiAjaW5jbHVkZSAiUmVtb3RlU291cmNlQnVmZmVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUg
IlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
TWVkaWFEZXNjcmlwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtVGltZVJhbmdlcy5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIApAQCAtNTQsMTQgKzU2LDE2IEBAIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpSZW1v
dGVTb3VyY2VCdWZmZXJQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uCiB7CiAg
ICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3Nh
Z2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6Om1lc3NhZ2VSZWNl
aXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKICAgICBtX3NvdXJj
ZUJ1ZmZlclByaXZhdGUtPnNldENsaWVudCh0aGlzKTsKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZh
dGUtPnNldElzQXR0YWNoZWQodHJ1ZSk7CiB9CiAKIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojp+
UmVtb3RlU291cmNlQnVmZmVyUHJveHkoKQogeworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+
c2V0SXNBdHRhY2hlZChmYWxzZSk7CiAgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3Nh
Z2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlU291
cmNlQnVmZmVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUlu
dDY0KCkpOwogfQogCi12b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQ
cml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0aWFsaXphdGlv
blNlZ21lbnQmIHNlZ21lbnQpCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VC
dWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0aWFsaXphdGlv
blNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3JlbW90ZU1lZGlhUGxheWVyUHJveHkpCiAgICAgICAg
IHJldHVybjsKQEAgLTcxLDE5ICs3NSwzNCBAQCB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudAogICAg
IGZvciAoYXV0byYgYXVkaW9UcmFja0luZm8gOiBzZWdtZW50LmF1ZGlvVHJhY2tzKSB7CiAgICAg
ICAgIGF1dG8gaWRlbnRpZmllciA9IG1fcmVtb3RlTWVkaWFQbGF5ZXJQcm94eS0+YWRkUmVtb3Rl
QXVkaW9UcmFja1Byb3h5KCphdWRpb1RyYWNrSW5mby50cmFjayk7CiAgICAgICAgIHNlZ21lbnRJ
bmZvLmF1ZGlvVHJhY2tzLmFwcGVuZCh7IE1lZGlhRGVzY3JpcHRpb25JbmZvKCphdWRpb1RyYWNr
SW5mby5kZXNjcmlwdGlvbiksIGlkZW50aWZpZXIgfSk7CisKKyAgICAgICAgQVNTRVJUKCFtX3Ry
YWNrSWRzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICAgICAgQVNTRVJUKCFtX21lZGlhRGVz
Y3JpcHRpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICAgICAgbV90cmFja0lkcy5hZGQo
aWRlbnRpZmllciwgYXVkaW9UcmFja0luZm8udHJhY2stPmlkKCkpOworICAgICAgICBtX21lZGlh
RGVzY3JpcHRpb25zLmFkZChpZGVudGlmaWVyLCAqYXVkaW9UcmFja0luZm8uZGVzY3JpcHRpb24p
OwogICAgIH0KIAogICAgIGZvciAoYXV0byYgdmlkZW9UcmFja0luZm8gOiBzZWdtZW50LnZpZGVv
VHJhY2tzKSB7CiAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IG1fcmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS0+YWRkUmVtb3RlVmlkZW9UcmFja1Byb3h5KCp2aWRlb1RyYWNrSW5mby50cmFjayk7CiAg
ICAgICAgIHNlZ21lbnRJbmZvLnZpZGVvVHJhY2tzLmFwcGVuZCh7IE1lZGlhRGVzY3JpcHRpb25J
bmZvKCp2aWRlb1RyYWNrSW5mby5kZXNjcmlwdGlvbiksIGlkZW50aWZpZXIgfSk7CisKKyAgICAg
ICAgQVNTRVJUKCFtX3RyYWNrSWRzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICAgICAgQVNT
RVJUKCFtX21lZGlhRGVzY3JpcHRpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICAgICAg
bV90cmFja0lkcy5hZGQoaWRlbnRpZmllciwgdmlkZW9UcmFja0luZm8udHJhY2stPmlkKCkpOwor
ICAgICAgICBtX21lZGlhRGVzY3JpcHRpb25zLmFkZChpZGVudGlmaWVyLCAqdmlkZW9UcmFja0lu
Zm8uZGVzY3JpcHRpb24pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgdGV4dFRyYWNrSW5mbyA6
IHNlZ21lbnQudGV4dFRyYWNrcykgewogICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX3JlbW90
ZU1lZGlhUGxheWVyUHJveHktPmFkZFJlbW90ZVRleHRUcmFja1Byb3h5KCp0ZXh0VHJhY2tJbmZv
LnRyYWNrKTsKICAgICAgICAgc2VnbWVudEluZm8udGV4dFRyYWNrcy5hcHBlbmQoeyBNZWRpYURl
c2NyaXB0aW9uSW5mbygqdGV4dFRyYWNrSW5mby5kZXNjcmlwdGlvbiksIGlkZW50aWZpZXIgfSk7
CisKKyAgICAgICAgQVNTRVJUKCFtX3RyYWNrSWRzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAg
ICAgICAgQVNTRVJUKCFtX21lZGlhRGVzY3JpcHRpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsK
KyAgICAgICAgbV90cmFja0lkcy5hZGQoaWRlbnRpZmllciwgdGV4dFRyYWNrSW5mby50cmFjay0+
aWQoKSk7CisgICAgICAgIG1fbWVkaWFEZXNjcmlwdGlvbnMuYWRkKGlkZW50aWZpZXIsICp0ZXh0
VHJhY2tJbmZvLmRlc2NyaXB0aW9uKTsKICAgICB9CiAKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KHNl
Z21lbnRJbmZvKSwgbV9pZGVudGlmaWVyKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6U291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNl
Z21lbnQoc2VnbWVudEluZm8pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9pZGVudGlm
aWVyKTsKIH0KIAogdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJp
dmF0ZUFwcGVuZEVycm9yKGJvb2wpCkBAIC05MSwxNCArMTEwLDE0IEBAIHZvaWQgUmVtb3RlU291
cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRFcnJvcihib29sKQogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNv
dXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikKK3ZvaWQg
UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5n
ZWQoY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hh
bmdlZChkdXJhdGlvbiksIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlU291cmNlQnVm
ZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBsZShkb3VibGUpCit2b2lk
IFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1w
bGUoZG91YmxlIHNhbXBsZUR1cmF0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
bV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUo
c2FtcGxlRHVyYXRpb24pLCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkRHJvcFNhbXBsZSgpCkBAIC0xMTEsMjYg
KzEzMCwyNCBAQCB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2
YXRlU3RyZWFtRW5kZWRXaXRoRGVjb2RlRXJyb3IoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKLWJvb2wgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNB
dWRpbygpIGNvbnN0Cit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQ
cml2YXRlQXBwZW5kQ29tcGxldGUoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVz
dWx0IGFwcGVuZFJlc3VsdCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBm
YWxzZTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBcHBl
bmRDb21wbGV0ZShhcHBlbmRSZXN1bHQpLCBtX2lkZW50aWZpZXIpOwogfQogCi1ib29sIFJlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlSGFzVmlkZW8oKSBjb25zdAor
dm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2Vp
dmVSZW5kZXJpbmdFcnJvcihpbnQgZXJyb3JDb2RlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpz
b3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVu
dDo6QXBwZW5kUmVzdWx0IGFwcGVuZFJlc3VsdCkKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJv
eHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZChib29sIGZsYWcpCiB7
Ci0gICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29t
cGxldGUoYXBwZW5kUmVzdWx0KSwgbV9pZGVudGlmaWVyKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZChmbGFnKSwgbV9p
ZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVm
ZmVyUHJpdmF0ZURpZFJlY2VpdmVSZW5kZXJpbmdFcnJvcihpbnQgZXJyb3JDb2RlKQordm9pZCBS
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2Vz
Q2hhbmdlZChjb25zdCBQbGF0Zm9ybVRpbWVSYW5nZXMmIHRpbWVSYW5nZXMpCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQodGltZVJhbmdlcyksIG1faWRlbnRpZmllcik7CiB9
CiAKIHZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OmFwcGVuZChjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmIGRhdGEpCkBAIC0xMzgsNiArMTU1LDQzIEBAIHZvaWQgUmVtb3RlU291cmNlQnVm
ZmVyUHJveHk6OmFwcGVuZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCiAgICAgbV9z
b3VyY2VCdWZmZXJQcml2YXRlLT5hcHBlbmQoZGF0YS52ZWN0b3IoKSk7CiB9CiAKK3ZvaWQgUmVt
b3RlU291cmNlQnVmZmVyUHJveHk6OnNldEFjdGl2ZShib29sIGFjdGl2ZSkKK3sKKyAgICBtX3Nv
dXJjZUJ1ZmZlclByaXZhdGUtPnNldEFjdGl2ZShhY3RpdmUpOworfQorCit2b2lkIFJlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5OjpzZXRSZWFkeVN0YXRlKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpSZWFk
eVN0YXRlIHN0YXRlKQoreworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+c2V0UmVhZHlTdGF0
ZShzdGF0ZSk7Cit9CisKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnVwZGF0ZUJ1ZmZl
cmVkRnJvbVRyYWNrQnVmZmVycyhib29sIHNvdXJjZUlzRW5kZWQpCit7CisgICAgbV9zb3VyY2VC
dWZmZXJQcml2YXRlLT51cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoc291cmNlSXNFbmRl
ZCk7Cit9CisKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OmV2aWN0Q29kZWRGcmFtZXMo
dWludDY0X3QgbmV3RGF0YVNpemUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHks
IHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplLCBjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1l
LCBjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uLCBib29sIGlzRW5kZWQpCit7CisgICAgbV9zb3Vy
Y2VCdWZmZXJQcml2YXRlLT5ldmljdENvZGVkRnJhbWVzKG5ld0RhdGFTaXplLCBwZW5kaW5nQXBw
ZW5kRGF0YUNhcGFjaXR5LCBtYXhpbXVtQnVmZmVyU2l6ZSwgY3VycmVudFRpbWUsIGR1cmF0aW9u
LCBpc0VuZGVkKTsKK30KKwordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6YWRkVHJhY2tC
dWZmZXIoVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFja1ByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyKQoreworICAgIEFTU0VSVChtX3RyYWNrSWRzLmNvbnRhaW5zKHRyYWNrUHJpdmF0ZVJl
bW90ZUlkZW50aWZpZXIpKTsKKyAgICBBU1NFUlQobV9tZWRpYURlc2NyaXB0aW9ucy5jb250YWlu
cyh0cmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyKSk7CisgICAgbV9zb3VyY2VCdWZmZXJQcml2
YXRlLT5hZGRUcmFja0J1ZmZlcihtX3RyYWNrSWRzLmdldCh0cmFja1ByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyKSwgbV9tZWRpYURlc2NyaXB0aW9ucy5nZXQodHJhY2tQcml2YXRlUmVtb3RlSWRlbnRp
ZmllcikpOworfQorCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpyZWVucXVldWVNZWRp
YUlmTmVlZGVkKGNvbnN0IE1lZGlhVGltZSYgY3VycmVudE1lZGlhVGltZSwgdWludDY0X3QgcGVu
ZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUpCit7Cisg
ICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlLT5yZWVucXVldWVNZWRpYUlmTmVlZGVkKGN1cnJlbnRN
ZWRpYVRpbWUsIHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIG1heGltdW1CdWZmZXJTaXplKTsK
K30KKwordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6dHJ5U2lnbmFsQWxsU2FtcGxlc0lu
VHJhY2tFbnF1ZXVlZCgpCit7CisgICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlLT50cnlTaWduYWxB
bGxTYW1wbGVzSW5UcmFja0VucXVldWVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAog
CiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNl
QnVmZmVyUHJveHkuaAppbmRleCBiYzlmOTlkZmI3YTIzMGI1ODlhZTM0MmU1Y2QwNDc3MDc1ZjAy
MTM4Li42ZWNkOGJjZjY4ZWViN2ZjYWIxMTVjNjljYTFjMTRkZmRjNTJiNTFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVy
UHJveHkuaApAQCAtMzAsNiArMzAsOCBAQAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVT
b3VyY2VCdWZmZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiVHJhY2tQcml2YXRlUmVtb3RlSWRl
bnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFEZXNjcmlwdGlvbi5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU291
cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTQzLDEw
ICs0NSwxMiBAQCBjbGFzcyBEYXRhUmVmZXJlbmNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBNZWRpYVNhbXBsZTsKK2NsYXNzIFBsYXRmb3JtVGltZVJhbmdlczsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKK3N0cnVjdCBNZWRpYURlc2NyaXB0aW9uSW5mbzsKIGNsYXNzIFJlbW90
ZU1lZGlhUGxheWVyUHJveHk7CiAKIGNsYXNzIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5IGZpbmFs
CkBAIC01OCwxNiArNjIsMTYgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3RlU291cmNl
QnVmZmVyUHJveHk+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlU291
cmNlQnVmZmVySWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU+JiYs
IFJlbW90ZU1lZGlhUGxheWVyUHJveHkmKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eSgpOwogCi0gICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRp
YWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0aWFsaXphdGlvblNlZ21lbnQmKSBmaW5hbDsKKyAg
ICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50
KEluaXRpYWxpemF0aW9uU2VnbWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZp
bmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZVN0cmVhbUVuZGVkV2l0aERlY29kZUVy
cm9yKCkgZmluYWw7CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9v
bCBkZWNvZGVFcnJvcikgZmluYWw7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5k
Q29tcGxldGUoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0
KSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQoY29u
c3QgTWVkaWFUaW1lJikgZmluYWw7CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFy
c2VTYW1wbGUoZG91YmxlIHNhbXBsZUR1cmF0aW9uKSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1
ZmZlclByaXZhdGVEaWREcm9wU2FtcGxlKCkgZmluYWw7Ci0gICAgdm9pZCBzb3VyY2VCdWZmZXJQ
cml2YXRlU3RyZWFtRW5kZWRXaXRoRGVjb2RlRXJyb3IoKSBmaW5hbDsKLSAgICBib29sIHNvdXJj
ZUJ1ZmZlclByaXZhdGVIYXNBdWRpbygpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc291cmNlQnVm
ZmVyUHJpdmF0ZUhhc1ZpZGVvKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQ
cml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCkgZmluYWw7CisgICAgdm9pZCBzb3VyY2VC
dWZmZXJQcml2YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3Jt
VGltZVJhbmdlcyYpIGZpbmFsOwogCi0gICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5k
Q29tcGxldGUoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0
KSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5n
RXJyb3IoaW50IGVycm9yQ29kZSkgZmluYWw7CiAKIHByaXZhdGU6CkBAIC03NywxMiArODEsMjIg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIGZpbmFsOwogICAgIC8vIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVu
Y29kZXI+JikgZmluYWw7CiAKKyAgICB2b2lkIHNldEFjdGl2ZShib29sKTsKICAgICB2b2lkIGFw
cGVuZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIHNldFJlYWR5U3RhdGUo
V2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpOworICAgIHZvaWQgdXBkYXRlQnVmZmVy
ZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCk7CisgICAgdm9pZCBldmljdENv
ZGVkRnJhbWVzKHVpbnQ2NF90IG5ld0RhdGFTaXplLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0
YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBj
dXJyZW50VGltZSwgY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbiwgYm9vbCBpc0VuZGVkKTsKKyAg
ICB2b2lkIGFkZFRyYWNrQnVmZmVyKFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpOworICAg
IHZvaWQgcmVlbnF1ZXVlTWVkaWFJZk5lZWRlZChjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRNZWRp
YVRpbWUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGlt
dW1CdWZmZXJTaXplKTsKKyAgICB2b2lkIHRyeVNpZ25hbEFsbFNhbXBsZXNJblRyYWNrRW5xdWV1
ZWQoKTsKIAogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29ubmVjdGlvblRvV2Vi
UHJvY2VzczsKICAgICBSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsK
ICAgICBSZWY8V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZT4gbV9zb3VyY2VCdWZmZXJQcml2
YXRlOwogICAgIFdlYWtQdHI8UmVtb3RlTWVkaWFQbGF5ZXJQcm94eT4gbV9yZW1vdGVNZWRpYVBs
YXllclByb3h5OworCisgICAgSGFzaE1hcDxUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBB
dG9tU3RyaW5nPiBtX3RyYWNrSWRzOworICAgIEhhc2hNYXA8VHJhY2tQcml2YXRlUmVtb3RlSWRl
bnRpZmllciwgUmVmPFdlYkNvcmU6Ok1lZGlhRGVzY3JpcHRpb24+PiBtX21lZGlhRGVzY3JpcHRp
b25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHku
bWVzc2FnZXMuaW4KaW5kZXggYTA4ZmYwMWRhMzBkMDY3YjllNDFmYjVhMTEzZTdiYTQzZmUwZTAx
Ny4uZjQxZmRlNGU3OWZhNzA5YzIzOGRjMjc3NDZkOTA4NGZmODAxNGE3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjYsNyArMjYsMTQgQEAKICNpZiBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKIG1lc3NhZ2VzIC0+IFJlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIFNldEFjdGl2ZShib29sIGFj
dGl2ZSkKICAgICBBcHBlbmQoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCisgICAgU2V0UmVhZHlT
dGF0ZShXZWJDb3JlOjpNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0ZSkKKyAgICBVcGRhdGVC
dWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVkKQorICAgIEV2aWN0Q29k
ZWRGcmFtZXModWludDY0X3QgbmV3RGF0YVNpemUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRh
Q2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplLCBNZWRpYVRpbWUgY3VycmVudFRp
bWUsIE1lZGlhVGltZSBkdXJhdGlvbiwgYm9vbCBpc0VuZGVkKQorICAgIEFkZFRyYWNrQnVmZmVy
KFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFja0lkKQorICAgIFJlZW5x
dWV1ZU1lZGlhSWZOZWVkZWQoTWVkaWFUaW1lIGN1cnJlbnRNZWRpYVRpbWUsIHVpbnQ2NF90IHBl
bmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplKQorICAg
IFRyeVNpZ25hbEFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoKQogfQogCiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJv
eHkuY3BwCmluZGV4IDY3NDQ4ZTlhNzQ4ZjE4YWRhNDUyNTkwOWJhMmNkMzE0MGIyMjUxZWQuLjEz
MjE1YTY3Mzk3YzBjY2Y4ODc0ZmI0YWFmMTAwODNkMzBiMTIxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcApA
QCAtNjQsNyArNjQsNyBAQCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYgUmVt
b3RlVGV4dFRyYWNrUHJveHk6OmNvbmZpZ3VyYXRpb24oKQogewogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlv
bjsKIAotICAgIGNvbmZpZ3VyYXRpb24tPmlkZW50aWZpZXIgPSBtX3RyYWNrUHJpdmF0ZS0+aWQo
KTsKKyAgICBjb25maWd1cmF0aW9uLT50cmFja0lkID0gbV90cmFja1ByaXZhdGUtPmlkKCk7CiAg
ICAgY29uZmlndXJhdGlvbi0+bGFiZWwgPSBtX3RyYWNrUHJpdmF0ZS0+bGFiZWwoKTsKICAgICBj
b25maWd1cmF0aW9uLT5sYW5ndWFnZSA9IG1fdHJhY2tQcml2YXRlLT5sYW5ndWFnZSgpOwogICAg
IGNvbmZpZ3VyYXRpb24tPnRyYWNrSW5kZXggPSBtX3RyYWNrUHJpdmF0ZS0+dHJhY2tJbmRleCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVv
VHJhY2tQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlk
ZW9UcmFja1Byb3h5LmNwcAppbmRleCAzNTBmOGVhNzMwN2JkMjM3YWE4M2Y2Y2M5NDViNTYxMGRm
NmYxYzcxLi5iOTJhODRlM2E5YjY4YWM2YzRmMmFmMzQyNmFlZDdhNzk0MTJkYWM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFj
a1Byb3h5LmNwcApAQCAtNjAsNyArNjAsNyBAQCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0
aW9uJiBSZW1vdGVWaWRlb1RyYWNrUHJveHk6OmNvbmZpZ3VyYXRpb24oKQogewogICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uPiBjb25maWd1
cmF0aW9uOwogCi0gICAgY29uZmlndXJhdGlvbi0+aWRlbnRpZmllciA9IG1fdHJhY2tQcml2YXRl
LT5pZCgpOworICAgIGNvbmZpZ3VyYXRpb24tPnRyYWNrSWQgPSBtX3RyYWNrUHJpdmF0ZS0+aWQo
KTsKICAgICBjb25maWd1cmF0aW9uLT5sYWJlbCA9IG1fdHJhY2tQcml2YXRlLT5sYWJlbCgpOwog
ICAgIGNvbmZpZ3VyYXRpb24tPmxhbmd1YWdlID0gbV90cmFja1ByaXZhdGUtPmxhbmd1YWdlKCk7
CiAgICAgY29uZmlndXJhdGlvbi0+dHJhY2tJbmRleCA9IG1fdHJhY2tQcml2YXRlLT50cmFja0lu
ZGV4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVGV4dFRy
YWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oCmluZGV4IGMxMzlj
ZmMxNGI0NzFmYjI1OGRiYmU4MTgyYjNkNWM2MjE2MmI1OTIuLjY1NjA1YjAxYTEyODZjMzEyOTdl
YmM2MGNlMGZjODUwNWI1MjJlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJh
dGlvbi5oCkBAIC0zNCw3ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFRl
eHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIHsKLSAgICBBdG9tU3RyaW5nIGlkZW50
aWZpZXI7CisgICAgQXRvbVN0cmluZyB0cmFja0lkOwogICAgIEF0b21TdHJpbmcgbGFiZWw7CiAg
ICAgQXRvbVN0cmluZyBsYW5ndWFnZTsKICAgICBBdG9tU3RyaW5nIGluQmFuZE1ldGFkYXRhVHJh
Y2tEaXNwYXRjaFR5cGU7CkBAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBUZXh0VHJhY2tQcml2YXRl
UmVtb3RlQ29uZmlndXJhdGlvbiB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KICAgICB2
b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgZW5jb2Rl
ciA8PCBpZGVudGlmaWVyOworICAgICAgICBlbmNvZGVyIDw8IHRyYWNrSWQ7CiAgICAgICAgIGVu
Y29kZXIgPDwgbGFiZWw7CiAgICAgICAgIGVuY29kZXIgPDwgbGFuZ3VhZ2U7CiAgICAgICAgIGVu
Y29kZXIgPDwgaW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZTsKQEAgLTc1LDkgKzc1LDkg
QEAgc3RydWN0IFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIHsKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KICAgICBzdGF0aWMgT3B0aW9uYWw8VGV4dFRyYWNrUHJpdmF0
ZVJlbW90ZUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAg
ICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gaWRlbnRpZmllcjsKLSAgICAgICAgZGVjb2RlciA+
PiBpZGVudGlmaWVyOwotICAgICAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgIE9wdGlvbmFs
PEF0b21TdHJpbmc+IHRyYWNrSWQ7CisgICAgICAgIGRlY29kZXIgPj4gdHJhY2tJZDsKKyAgICAg
ICAgaWYgKCF0cmFja0lkKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAg
ICAgICBPcHRpb25hbDxBdG9tU3RyaW5nPiBsYWJlbDsKQEAgLTE1MSw3ICsxNTEsNyBAQCBzdHJ1
Y3QgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24gewogICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4ge3sKLSAgICAgICAgICAgIFdURk1v
dmUoKmlkZW50aWZpZXIpLAorICAgICAgICAgICAgV1RGTW92ZSgqdHJhY2tJZCksCiAgICAgICAg
ICAgICBXVEZNb3ZlKCpsYWJlbCksCiAgICAgICAgICAgICBXVEZNb3ZlKCpsYW5ndWFnZSksCiAg
ICAgICAgICAgICBXVEZNb3ZlKCppbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKSwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9UcmFja1ByaXZhdGVSZW1v
dGVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVHJhY2tQ
cml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oCmluZGV4IDQ0NDIyYjMwMTRmMjAyMjE2YmVkNmE1
N2EzZjhlZGQ3OTQ4ZTkyNDYuLmE4ZjA1ZDE4ZmQ5OTg4ZWJiOTljNzY3M2I2ODdhNjcwZDkyZTAx
NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9UcmFja1ByaXZh
dGVSZW1vdGVDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1RyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaApAQCAtMzQsNyArMzQsNyBAQAog
bmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0
aW9uIHsKLSAgICBBdG9tU3RyaW5nIGlkZW50aWZpZXI7CisgICAgQXRvbVN0cmluZyB0cmFja0lk
OwogICAgIEF0b21TdHJpbmcgbGFiZWw7CiAgICAgQXRvbVN0cmluZyBsYW5ndWFnZTsKICAgICBN
ZWRpYVRpbWUgc3RhcnRUaW1lVmFyaWFuY2UgeyBNZWRpYVRpbWU6Onplcm9UaW1lKCkgfTsKQEAg
LTQ5LDcgKzQ5LDcgQEAgc3RydWN0IFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24gewog
ICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5j
b2RlcikgY29uc3QKICAgICB7Ci0gICAgICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcjsKKyAgICAg
ICAgZW5jb2RlciA8PCB0cmFja0lkOwogICAgICAgICBlbmNvZGVyIDw8IGxhYmVsOwogICAgICAg
ICBlbmNvZGVyIDw8IGxhbmd1YWdlOwogICAgICAgICBlbmNvZGVyIDw8IHN0YXJ0VGltZVZhcmlh
bmNlOwpAQCAtNjMsOSArNjMsOSBAQCBzdHJ1Y3QgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJh
dGlvbiB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CiAgICAgc3RhdGljIE9wdGlvbmFs
PFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gaWRlbnRpZmllcjsKLSAgICAg
ICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwotICAgICAgICBpZiAoIWlkZW50aWZpZXIpCisgICAg
ICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IHRyYWNrSWQ7CisgICAgICAgIGRlY29kZXIgPj4gdHJh
Y2tJZDsKKyAgICAgICAgaWYgKCF0cmFja0lkKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKIAogICAgICAgICBPcHRpb25hbDxBdG9tU3RyaW5nPiBsYWJlbDsKQEAgLTEwOSw3ICsx
MDksNyBAQCBzdHJ1Y3QgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7CiAgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7ewotICAgICAgICAg
ICAgV1RGTW92ZSgqaWRlbnRpZmllciksCisgICAgICAgICAgICBXVEZNb3ZlKCp0cmFja0lkKSwK
ICAgICAgICAgICAgIFdURk1vdmUoKmxhYmVsKSwKICAgICAgICAgICAgIFdURk1vdmUoKmxhbmd1
YWdlKSwKICAgICAgICAgICAgIFdURk1vdmUoKnN0YXJ0VGltZVZhcmlhbmNlKSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVS
ZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNr
UHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggNzIxYzBhYTkyMDcyNGU5YjMzYjU4NjUzMDMxMzdiNmNh
NTQ5MDBhMC4uZTJhM2U5MDFhZmY0ZTY0MTQxYmZjOTljNmYwYzQ1NzI5YjFkOGJjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0
ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRp
b1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTUzLDkgKzUzLDkgQEAgdm9pZCBBdWRpb1RyYWNr
UHJpdmF0ZVJlbW90ZTo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiAKIHZvaWQgQXVkaW9UcmFj
a1ByaXZhdGVSZW1vdGU6OnVwZGF0ZUNvbmZpZ3VyYXRpb24oVHJhY2tQcml2YXRlUmVtb3RlQ29u
ZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgaWYgKGNvbmZpZ3VyYXRpb24uaWRl
bnRpZmllciAhPSBtX2lkKSB7CisgICAgaWYgKGNvbmZpZ3VyYXRpb24udHJhY2tJZCAhPSBtX2lk
KSB7CiAgICAgICAgIGF1dG8gY2hhbmdlZCA9ICFtX2lkLmlzRW1wdHkoKTsKLSAgICAgICAgbV9p
ZCA9IGNvbmZpZ3VyYXRpb24uaWRlbnRpZmllcjsKKyAgICAgICAgbV9pZCA9IGNvbmZpZ3VyYXRp
b24udHJhY2tJZDsKICAgICAgICAgaWYgKGNoYW5nZWQgJiYgY2xpZW50KCkpCiAgICAgICAgICAg
ICBjbGllbnQoKS0+aWRDaGFuZ2VkKG1faWQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUu
aAppbmRleCA1M2RjOWJlMzNjOWJmYzBkYzRhN2IwMWZjMWYxMDFmOWU4NzZhNWM1Li5jZjdjMGU5
M2VmNDZmNDkwMWNlY2M1ZjlmN2E4ZTYxZTNmMTZiM2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90
ZS5oCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUoY29ubmVjdGlvbiwgaWRlbmRpZmllciwgV1RGTW92
ZShjb25maWd1cmF0aW9uKSkpOwogICAgIH0KIAorICAgIEF0b21TdHJpbmcgaWQoKSBjb25zdCBm
aW5hbCB7IHJldHVybiBtX2lkOyB9CiAgICAgdm9pZCB1cGRhdGVDb25maWd1cmF0aW9uKFRyYWNr
UHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24mJik7CiAKIHByaXZhdGU6CkBAIC01NSw3ICs1Niw2
IEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBBdWRpb1RyYWNrS2luZCA9IFdlYkNvcmU6OkF1ZGlv
VHJhY2tQcml2YXRlOjpLaW5kOwogICAgIEF1ZGlvVHJhY2tLaW5kIGtpbmQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2tpbmQ7IH0KLSAgICBBdG9tU3RyaW5nIGlkKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9pZDsgfQogICAgIEF0b21TdHJpbmcgbGFiZWwoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2xhYmVsOyB9CiAgICAgQXRvbVN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fbGFuZ3VhZ2U7IH0KICAgICBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIG1fdHJhY2tJbmRleDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDZk
ZGVlODdhYmRjYzc2Zjg2OWFkNTU0ZGI1MTEyYjM2YjgyZjJkNmIuLjcxMzIxZTZiZTYwMDQ4Mzhj
M2I2MzVkMGVmZGM0YzFlZjY4OTMyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAK
QEAgLTYzMyw3ICs2MzMsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQo
Y29uc3QgVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHkKIHsKICAgICBpZiAo
bV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyID09IE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5l
SWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uTVNFKSB7CiAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9
IFJlbW90ZU1lZGlhU291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKLSAgICAgICAgY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkxvYWRNZWRpYVNv
dXJjZSh1cmwsIGNvbnRlbnRUeXBlLCBpZGVudGlmaWVyKSwgbV9pZCk7CisgICAgICAgIGNvbm5l
Y3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJv
eHk6OkxvYWRNZWRpYVNvdXJjZSh1cmwsIGNvbnRlbnRUeXBlLCBpZGVudGlmaWVyKSwgW3dlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShhdXRvJiYgY29uZmlndXJhdGlvbikgeworICAgICAg
ICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5tX2NvbmZpZ3Vy
YXRpb24gPSBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pOworICAgICAgICB9LCBtX2lkKTsKICAgICAg
ICAgbV9tZWRpYVNvdXJjZVByaXZhdGUgPSBNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OmNyZWF0
ZShtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKSwgaWRlbnRpZmllciwgbV9tYW5hZ2Vy
LnR5cGVDYWNoZShtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIpLCAqdGhpcywgY2xpZW50KTsKIAog
ICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggMGFjNzg3
MjBiYWM0ZDQyOGQxMjQ3MDQ4OTg2NTkzOTM4ZmY3ODVkYS4uNTAzMjI1MmJmNTBmMTYyNDViMTVm
ZTRlMGYyZmMxOTJkZTUxODU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmNwcApAQCAt
MTAzLDkgKzEwMyw5IEBAIE1lZGlhU291cmNlUHJpdmF0ZTo6QWRkU3RhdHVzIE1lZGlhU291cmNl
UHJpdmF0ZVJlbW90ZTo6YWRkU291cmNlQnVmZmVyKGNvbnN0IENvCiAgICAgcmV0dXJuIHN0YXR1
czsKIH0KIAotdm9pZCBNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OmR1cmF0aW9uQ2hhbmdlZCgp
Cit2b2lkIE1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6ZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1l
ZGlhVGltZSYgZHVyYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2dwdVBy
b2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNv
dXJjZVByb3h5OjpEdXJhdGlvbkNoYW5nZWQoZHVyYXRpb24pLCBtX2lkZW50aWZpZXIpOwogfQog
CiB2b2lkIE1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6bWFya0VuZE9mU3RyZWFtKEVuZE9mU3Ry
ZWFtU3RhdHVzKQpAQCAtMTE4LDE0ICsxMTgsMjAgQEAgdm9pZCBNZWRpYVNvdXJjZVByaXZhdGVS
ZW1vdGU6OnVubWFya0VuZE9mU3RyZWFtKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCiti
b29sIE1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6aXNFbmRlZCgpIGNvbnN0Cit7CisgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIE1lZGlhUGxheWVyOjpSZWFk
eVN0YXRlIE1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6cmVhZHlTdGF0ZSgpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIG1fbWVkaWFQbGF5ZXJQcml2YXRlID8gbV9tZWRpYVBsYXllclByaXZhdGUtPnJl
YWR5U3RhdGUoKSA6IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZzsKIH0KIAot
dm9pZCBNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGUpCit2b2lkIE1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6c2V0UmVhZHlTdGF0
ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6U2V0UmVhZHlTdGF0ZShyZWFkeVN0YXRlKSwg
bV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OndhaXRG
b3JTZWVrQ29tcGxldGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDc3ODM0Zjdh
MTlkY2IwYjk0ZWQ1MmY2NjgwMGU2MDVjMzE1MzQ3OTkuLjY0ZjczODViMjkyOWY5ZjMwNGI0MmM4
YTM2ZTJiMjU3NjJmOWU4ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuaApAQCAtNTYsOSAr
NTYsMTAgQEAgcHVibGljOgogCiAgICAgLy8gTWVkaWFTb3VyY2VQcml2YXRlIG92ZXJyaWRlcwog
ICAgIEFkZFN0YXR1cyBhZGRTb3VyY2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6Q29udGVudFR5cGUm
LCBSZWZQdHI8V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZT4mKSBmaW5hbDsKLSAgICB2b2lk
IGR1cmF0aW9uQ2hhbmdlZCgpIGZpbmFsOworICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKGNvbnN0
IE1lZGlhVGltZSYpIGZpbmFsOwogICAgIHZvaWQgbWFya0VuZE9mU3RyZWFtKEVuZE9mU3RyZWFt
U3RhdHVzKSBmaW5hbDsKICAgICB2b2lkIHVubWFya0VuZE9mU3RyZWFtKCkgZmluYWw7CisgICAg
Ym9vbCBpc0VuZGVkKCkgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlJl
YWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0UmVhZHlTdGF0
ZShXZWJDb3JlOjpNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSkgZmluYWw7CiAgICAgdm9pZCB3YWl0
Rm9yU2Vla0NvbXBsZXRlZCgpIGZpbmFsOwpAQCAtNzksNiArODAsOCBAQCBwcml2YXRlOgogICAg
IFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQ+IG1fY2xpZW50OwogICAg
IFZlY3RvcjxSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZT4+IG1fc291cmNlQnVmZmVy
czsKIAorICAgIE1lZGlhVGltZSBtX2R1cmF0aW9uOworCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gIk1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZSI7IH0KICAgICBjb25zdCB2b2lkKiBsb2dJZGVu
dGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA2MzJlMDBmYjE1MmQwZmQ3NDY1NzZlMzRjYWZi
ZjllMmI0NjNiZjdkLi5kYTlmNzRlOTA2OTJkZDgyOWJjYjQzYmM1MmFhNTJlYTVjMjcwOTJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZl
clByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNs
dWRlICJSZW1vdGVTb3VyY2VCdWZmZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBs
ZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1UaW1lUmFuZ2VzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZi5oPgogCkBAIC0xMDAsMTcgKzEwMSwxNSBAQCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBT
b3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpyZWFkeVN0YXRlKCkgY29uc3QKICAgICByZXR1cm4g
bV9tZWRpYVBsYXllclByaXZhdGUgPyBtX21lZGlhUGxheWVyUHJpdmF0ZS0+cmVhZHlTdGF0ZSgp
IDogTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nOwogfQogCi12b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3Rh
dGUpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNldFJlYWR5U3RhdGUoTWVkaWFQ
bGF5ZXI6OlJlYWR5U3RhdGUgc3RhdGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KKyAg
ICBpZiAoIW1fbWVkaWFTb3VyY2VQcml2YXRlKQorICAgICAgICByZXR1cm47CiAKLXZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6Zmx1c2goY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkK
LXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpTZXRSZWFk
eVN0YXRlKHN0YXRlKSwgbV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyKTsKIH0KIAotdm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjplbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBs
ZT4mJiwgY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZTo6Zmx1c2goY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQpAQCAtMTIwLDkgKzExOSwxMyBAQCBib29sIFNvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGU6OmlzUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lE
KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
OjpzZXRBY3RpdmUoYm9vbCkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c2V0QWN0
aXZlKGJvb2wgYWN0aXZlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX21l
ZGlhU291cmNlUHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc0FjdGl2ZSA9IGFj
dGl2ZTsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6U2V0QWN0aXZlKGFjdGl2ZSksIG1fcmVtb3Rl
U291cmNlQnVmZmVySWRlbnRpZmllcik7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJl
bW90ZTo6bm90aWZ5Q2xpZW50V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmlu
ZyYgdHJhY2tJRCkKQEAgLTE1MSw3ICsxNTQsMzYgQEAgYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRl
UmVtb3RlOjpjYW5Td2l0Y2hUb1R5cGUoY29uc3QgQ29udGVudFR5cGUmKQogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQ
cml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0aWFsaXphdGlvblNlZ21l
bnRJbmZvJiYgc2VnbWVudEluZm8pCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnVw
ZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVmZmVycyhib29sIHNvdXJjZUlzRW5kZWQpCit7CisgICAg
aWYgKCFtX21lZGlhU291cmNlUHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9ncHVQ
cm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNl
QnVmZmVyUHJveHk6OlVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVmZmVycyhzb3VyY2VJc0VuZGVk
KSwgbV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyKTsKK30KKwordm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlOjpldmljdENvZGVkRnJhbWVzKHVpbnQ2NF90IG5ld0RhdGFTaXplLCB1
aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVy
U2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50VGltZSwgY29uc3QgTWVkaWFUaW1lJiBkdXJh
dGlvbiwgYm9vbCBpc0VuZGVkKQoreworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpFdmljdENvZGVk
RnJhbWVzKG5ld0RhdGFTaXplLCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCBtYXhpbXVtQnVm
ZmVyU2l6ZSwgY3VycmVudFRpbWUsIGR1cmF0aW9uLCBpc0VuZGVkKSwgbV9yZW1vdGVTb3VyY2VC
dWZmZXJJZGVudGlmaWVyKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjph
ZGRUcmFja0J1ZmZlcihjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lkLCBSZWZQdHI8TWVkaWFEZXNj
cmlwdGlvbj4mJikKK3sKKyAgICBBU1NFUlQobV90cmFja0lkZW50aWZpZXJNYXAuY29udGFpbnMo
dHJhY2tJZCkpOworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpBZGRUcmFja0J1ZmZlcihtX3RyYWNr
SWRlbnRpZmllck1hcC5nZXQodHJhY2tJZCkpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZp
ZXIpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnJlZW5xdWV1ZU1lZGlh
SWZOZWVkZWQoY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50TWVkaWFUaW1lLCB1aW50NjRfdCBwZW5k
aW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSkKK3sKKyAg
ICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVTb3VyY2VCdWZmZXJQcm94eTo6UmVlbnF1ZXVlTWVkaWFJZk5lZWRlZChjdXJyZW50TWVkaWFU
aW1lLCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCBtYXhpbXVtQnVmZmVyU2l6ZSksIG1fcmVt
b3RlU291cmNlQnVmZmVySWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZTo6dHJ5U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCgpCit7CisgICAgbV9n
cHVQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291
cmNlQnVmZmVyUHJveHk6OlRyeVNpZ25hbEFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoKSwgbV9y
ZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2Vn
bWVudChJbml0aWFsaXphdGlvblNlZ21lbnRJbmZvJiYgc2VnbWVudEluZm8sIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fY2xpZW50
IHx8ICFtX21lZGlhUGxheWVyUHJpdmF0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTY0LDYgKzE5
Niw4IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0
ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lCiAgICAgICAgIGluZm8udHJhY2sgPSBtX21l
ZGlhUGxheWVyUHJpdmF0ZS0+YXVkaW9UcmFja1ByaXZhdGVSZW1vdGUoYXVkaW9UcmFjay5pZGVu
dGlmaWVyKTsKICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IFJlbW90ZU1lZGlhRGVzY3JpcHRp
b246OmNyZWF0ZShhdWRpb1RyYWNrLmRlc2NyaXB0aW9uKTsKICAgICAgICAgc2VnbWVudC5hdWRp
b1RyYWNrcy5hcHBlbmQoaW5mbyk7CisgICAgICAgIEFTU0VSVCghbV90cmFja0lkZW50aWZpZXJN
YXAuY29udGFpbnMoaW5mby50cmFjay0+aWQoKSkpOworICAgICAgICBtX3RyYWNrSWRlbnRpZmll
ck1hcC5hZGQoaW5mby50cmFjay0+aWQoKSwgYXVkaW9UcmFjay5pZGVudGlmaWVyKTsKICAgICB9
CiAKICAgICBmb3IgKGF1dG8mIHZpZGVvVHJhY2sgOiBzZWdtZW50SW5mby52aWRlb1RyYWNrcykg
ewpAQCAtMTcxLDYgKzIwNSw4IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291
cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lCiAgICAgICAgIGlu
Zm8udHJhY2sgPSBtX21lZGlhUGxheWVyUHJpdmF0ZS0+dmlkZW9UcmFja1ByaXZhdGVSZW1vdGUo
dmlkZW9UcmFjay5pZGVudGlmaWVyKTsKICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IFJlbW90
ZU1lZGlhRGVzY3JpcHRpb246OmNyZWF0ZSh2aWRlb1RyYWNrLmRlc2NyaXB0aW9uKTsKICAgICAg
ICAgc2VnbWVudC52aWRlb1RyYWNrcy5hcHBlbmQoaW5mbyk7CisgICAgICAgIEFTU0VSVCghbV90
cmFja0lkZW50aWZpZXJNYXAuY29udGFpbnMoaW5mby50cmFjay0+aWQoKSkpOworICAgICAgICBt
X3RyYWNrSWRlbnRpZmllck1hcC5hZGQoaW5mby50cmFjay0+aWQoKSwgdmlkZW9UcmFjay5pZGVu
dGlmaWVyKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIHRleHRUcmFjayA6IHNlZ21lbnRJbmZv
LnRleHRUcmFja3MpIHsKQEAgLTE3OCw5ICsyMTQsMTEgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2Vn
bWUKICAgICAgICAgaW5mby50cmFjayA9IG1fbWVkaWFQbGF5ZXJQcml2YXRlLT50ZXh0VHJhY2tQ
cml2YXRlUmVtb3RlKHRleHRUcmFjay5pZGVudGlmaWVyKTsKICAgICAgICAgaW5mby5kZXNjcmlw
dGlvbiA9IFJlbW90ZU1lZGlhRGVzY3JpcHRpb246OmNyZWF0ZSh0ZXh0VHJhY2suZGVzY3JpcHRp
b24pOwogICAgICAgICBzZWdtZW50LnRleHRUcmFja3MuYXBwZW5kKGluZm8pOworICAgICAgICBB
U1NFUlQoIW1fdHJhY2tJZGVudGlmaWVyTWFwLmNvbnRhaW5zKGluZm8udHJhY2stPmlkKCkpKTsK
KyAgICAgICAgbV90cmFja0lkZW50aWZpZXJNYXAuYWRkKGluZm8udHJhY2stPmlkKCksIHRleHRU
cmFjay5pZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJp
dmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoV1RGTW92ZShzZWdtZW50KSk7Cisg
ICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25T
ZWdtZW50KFdURk1vdmUoc2VnbWVudCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0K
IAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlQXBw
ZW5kQ29tcGxldGUoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0IGFwcGVu
ZFJlc3VsdCkKQEAgLTE4OSw2ICsyMjcsMzAgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoU291cmNlQnVmZmVyUHIKICAg
ICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShhcHBlbmRS
ZXN1bHQpOwogfQogCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJjZUJ1ZmZl
clByaXZhdGVEdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbikKK3sKKyAg
ICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRHVy
YXRpb25DaGFuZ2VkKGR1cmF0aW9uKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoZG91YmxlIHNhbXBsZUR1cmF0
aW9uKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRQYXJzZVNhbXBsZShzYW1wbGVEdXJhdGlvbik7Cit9CisKK3ZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFu
Z2VkKGJvb2wgZGlydHkpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+
c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGRpcnR5KTsKK30KKwordm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWRS
YW5nZXNDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdlcyYgdGltZVJhbmdl
cykKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQ
cml2YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2VkKHRpbWVSYW5nZXMpOworfQorCiAjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECiBXVEZMb2dDaGFubmVsJiBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
Ojpsb2dDaGFubmVsKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKaW5kZXgg
NGQwZTAzMDlhZDU5ZDY5NGYxM2JjMTRjNDdjYmJhNGFmMmY3YTg2Mi4uNzYyZjYzYmY3ZDJiNzli
ZmVlYmZlMmFjZWE4MjMzMTc0NTE5MDA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlcklk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlICJUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgiCiAj
aW5jbHVkZSA8V2ViQ29yZS9Db250ZW50VHlwZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFT
YW1wbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1ZmZlclByaXZhdGUuaD4KQEAgLTQ2
LDYgKzQ3LDEwIEBAIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwogfQogCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXM7Cit9CisKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBzdHJ1Y3QgSW5pdGlhbGl6YXRpb25TZWdtZW50SW5mbzsKQEAgLTc0LDI1
ICs3OSw0MCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
IHJlYWR5U3RhdGUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldFJlYWR5U3RhdGUoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpIGZpbmFsOwogICAgIHZvaWQgZmx1c2goY29uc3Qg
QXRvbVN0cmluZyYgdHJhY2tJRCkgZmluYWw7Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFJlZjxX
ZWJDb3JlOjpNZWRpYVNhbXBsZT4mJiwgY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkgZmluYWw7
CiAgICAgYm9vbCBpc1JlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJ
RCkgZmluYWw7CiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCkgZmluYWw7CisgICAgYm9vbCBpc0Fj
dGl2ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBY3RpdmU7IH0KICAgICB2b2lkIG5vdGlm
eUNsaWVudFdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQp
IGZpbmFsOwogICAgIGJvb2wgY2FuU2V0TWluaW11bVVwY29taW5nUHJlc2VudGF0aW9uVGltZShj
b25zdCBBdG9tU3RyaW5nJikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRNaW5pbXVtVXBjb21p
bmdQcmVzZW50YXRpb25UaW1lKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBNZWRpYVRpbWUmKSBm
aW5hbDsKICAgICB2b2lkIGNsZWFyTWluaW11bVVwY29taW5nUHJlc2VudGF0aW9uVGltZShjb25z
dCBBdG9tU3RyaW5nJikgZmluYWw7CiAgICAgYm9vbCBjYW5Td2l0Y2hUb1R5cGUoY29uc3QgV2Vi
Q29yZTo6Q29udGVudFR5cGUmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcmVkRnJvbVRy
YWNrQnVmZmVycyhib29sIHNvdXJjZUlzRW5kZWQpIGZpbmFsOworICAgIHZvaWQgZXZpY3RDb2Rl
ZEZyYW1lcyh1aW50NjRfdCBuZXdEYXRhU2l6ZSwgdWludDY0X3QgcGVuZGluZ0FwcGVuZERhdGFD
YXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUsIGNvbnN0IE1lZGlhVGltZSYgY3Vy
cmVudFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24sIGJvb2wgaXNFbmRlZCkgZmluYWw7
CisgICAgdm9pZCBhZGRUcmFja0J1ZmZlcihjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lkLCBSZWZQ
dHI8V2ViQ29yZTo6TWVkaWFEZXNjcmlwdGlvbj4mJikgZmluYWw7CisgICAgdm9pZCByZWVucXVl
dWVNZWRpYUlmTmVlZGVkKGNvbnN0IE1lZGlhVGltZSYgY3VycmVudE1lZGlhVGltZSwgdWludDY0
X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUp
IGZpbmFsOworICAgIHZvaWQgdHJ5U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCgpIGZp
bmFsOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6
OkRlY29kZXImKSBmaW5hbDsKLQotICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2Vp
dmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YXRpb25TZWdtZW50SW5mbyYmKTsKKyAg
ICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50
KEluaXRpYWxpemF0aW9uU2VnbWVudEluZm8mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVTdHJlYW1FbmRlZFdpdGhEZWNvZGVFcnJv
cigpOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZEVycm9yKGJvb2wgZGVjb2Rl
RXJyb3IpOwogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCk7CisgICAgdm9pZCBz
b3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpOworICAg
IHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxlKGRvdWJsZSBzYW1wbGVEdXJh
dGlvbik7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkRHJvcFNhbXBsZSgpOworICAg
IHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVSZW5kZXJpbmdFcnJvcihpbnQgZXJy
b3JDb2RlKTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdl
ZChib29sIGRpcnR5KTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdl
c0NoYW5nZWQoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzJik7CiAKICAgICBHUFVQ
cm9jZXNzQ29ubmVjdGlvbiYgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBSZW1vdGVTb3Vy
Y2VCdWZmZXJJZGVudGlmaWVyIG1fcmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcjsKICAgICBX
ZWFrUHRyPE1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZT4gbV9tZWRpYVNvdXJjZVByaXZhdGU7CiAg
ICAgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVSZW1vdGU+IG1fbWVkaWFQbGF5ZXJQcml2YXRl
OwotICAgIFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQqIG1fY2xpZW50IHsgbnVs
bHB0ciB9OworCisgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBUcmFja1ByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyPiBtX3RyYWNrSWRlbnRpZmllck1hcDsKKworICAgIGJvb2wgbV9pc0FjdGl2ZSB7IGZh
bHNlIH07CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIGxv
Z2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGUubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Nv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KaW5kZXggNDA2NDJmNjAzNmVmN2Ux
MWUyM2I4MGY1YTQ1MWQ3NmYzZWQyOGM0ZS4uNmM4Y2NhMGZlODk3YzU5OWVjNGNlYjhhMmJlYTVh
OWFhYmY0Njg2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdl
cy5pbgpAQCAtMjYsOCArMjYsMTIgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCiAKIG1lc3NhZ2VzIC0+IFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUg
Tm90UmVmQ291bnRlZCB7Ci0gICAgU291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFs
aXphdGlvblNlZ21lbnQoc3RydWN0IFdlYktpdDo6SW5pdGlhbGl6YXRpb25TZWdtZW50SW5mbyBz
ZWdtZW50Q29uZmlndXJhdGlvbikKKyAgICBTb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUlu
aXRpYWxpemF0aW9uU2VnbWVudChzdHJ1Y3QgV2ViS2l0OjpJbml0aWFsaXphdGlvblNlZ21lbnRJ
bmZvIHNlZ21lbnRDb25maWd1cmF0aW9uKSAtPiAoKSBBc3luYwogICAgIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBcHBlbmRDb21wbGV0ZShXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpB
cHBlbmRSZXN1bHQgYXBwZW5kUmVzdWx0KQorICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlv
bkNoYW5nZWQoTWVkaWFUaW1lIGR1cmF0aW9uKQorICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQ
YXJzZVNhbXBsZShkb3VibGUgc2FtcGxlRHVyYXRpb24pCisgICAgU291cmNlQnVmZmVyUHJpdmF0
ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGJvb2wgZGlydHkpCisgICAgU291cmNlQnVmZmVyUHJpdmF0
ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXMgdGltZVJh
bmdlcykKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcAppbmRleCA3MzIyM2I4
Njg0MjEzYTBiZDhmNzEyODJhOGU4ZGVhNjE1OTk1ZWMwLi4yYjU2ZmVkMjNkZWMzNTg1OWFiODU3
ZTZmNmRmZmQ3OThlMWFhZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTU2LDkg
KzU2LDkgQEAgdm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjpzZXRNb2RlKFRleHRUcmFja01v
ZGUgbW9kZSkKIAogdm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjp1cGRhdGVDb25maWd1cmF0
aW9uKFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikK
IHsKLSAgICBpZiAoY29uZmlndXJhdGlvbi5pZGVudGlmaWVyICE9IG1faWQpIHsKKyAgICBpZiAo
Y29uZmlndXJhdGlvbi50cmFja0lkICE9IG1faWQpIHsKICAgICAgICAgYXV0byBjaGFuZ2VkID0g
IW1faWQuaXNFbXB0eSgpOwotICAgICAgICBtX2lkID0gY29uZmlndXJhdGlvbi5pZGVudGlmaWVy
OworICAgICAgICBtX2lkID0gY29uZmlndXJhdGlvbi50cmFja0lkOwogICAgICAgICBpZiAoY2hh
bmdlZCAmJiBjbGllbnQoKSkKICAgICAgICAgICAgIGNsaWVudCgpLT5pZENoYW5nZWQobV9pZCk7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9W
aWRlb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1ZpZGVvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAppbmRleCBhYzZlYTAxNDI3MWMzMzEy
NmNkNzUyYjNmZmQzYjc4NTQzOWRlNjU3Li4zNWU4ZTdkODM5YzcyODAxZjZhOTZmYmVkMjcyMDY0
ZDRmZDY2ZjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1ZpZGVvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1ZpZGVvVHJhY2tQcml2YXRlUmVtb3RlLmNwcApAQCAtNTIsOSArNTIsOSBA
QCB2b2lkIFZpZGVvVHJhY2tQcml2YXRlUmVtb3RlOjpzZXRTZWxlY3RlZChib29sIHNlbGVjdGVk
KQogCiB2b2lkIFZpZGVvVHJhY2tQcml2YXRlUmVtb3RlOjp1cGRhdGVDb25maWd1cmF0aW9uKFRy
YWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQogewotICAgIGlm
IChjb25maWd1cmF0aW9uLmlkZW50aWZpZXIgIT0gbV9pZCkgeworICAgIGlmIChjb25maWd1cmF0
aW9uLnRyYWNrSWQgIT0gbV9pZCkgewogICAgICAgICBhdXRvIGNoYW5nZWQgPSAhbV9pZC5pc0Vt
cHR5KCk7Ci0gICAgICAgIG1faWQgPSBjb25maWd1cmF0aW9uLmlkZW50aWZpZXI7CisgICAgICAg
IG1faWQgPSBjb25maWd1cmF0aW9uLnRyYWNrSWQ7CiAgICAgICAgIGlmIChjaGFuZ2VkICYmIGNs
aWVudCgpKQogICAgICAgICAgICAgY2xpZW50KCktPmlkQ2hhbmdlZChtX2lkKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415493</attachid>
            <date>2020-12-05 11:13:26 -0800</date>
            <delta_ts>2020-12-05 15:49:26 -0800</delta_ts>
            <desc>WIP - fix layout test crashes</desc>
            <filename>bug-219402-20201205111326.patch</filename>
            <type>text/plain</type>
            <size>117252</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RlYmRkNjNmYjkxNzM2
MTE4MDVlOWY1NDI4Zjk0YmExMWJiMWNlNy4uYTFhZWFkM2QzY2NlNmQ3ZWY3NzNlY2EzYjZkNTIz
NTYzMDVkZDEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAyMC0xMi0wNCAgUGVu
ZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUgUHJv
Y2Vzc11bTVNFXSBJbXBsZW1lbnQgYmFzaWMgdmlkZW8gcGxheWJhY2sKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0UHJpdmF0
ZUFuZE9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnNldER1cmF0aW9uSW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVy
cm9yKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OlNvdXJjZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXI6On5Tb3VyY2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXI6Om1heGltdW1CdWZmZXJTaXplIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFs
aXphdGlvblNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpleHRyYU1l
bW9yeUNvc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpyZXBvcnRF
eHRyYU1lbW9yeUFsbG9jYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNl
dE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdl
c0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjppc0J1ZmZlcmVkRGly
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzZXRCdWZmZXJlZERp
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0
ZUhhc0F1ZGlvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
cjo6c291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhU291cmNlUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
b3VyY2VQcml2YXRlOjpzZXRUaW1lRnVkZ2VGYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTb3VyY2VQcml2YXRlOjp0aW1lRnVkZ2VGYWN0b3IgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0QnVmZmVyZWREaXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQcml2YXRlOjpzZXRCdWZmZXJlZFJhbmdlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjp1cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kQ29tcGxldGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmJ1ZmZlcmVkU2FtcGxl
c0ZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6cHJv
dmlkZU1lZGlhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjpy
ZWVucXVldWVNZWRpYUZvclRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJp
dmF0ZTo6cmVlbnF1ZXVlTWVkaWFJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVT
YW1wbGVzRnJvbVRyYWNrQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGU6OmV2aWN0Q29kZWRGcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UHJpdmF0ZTo6dG90YWxUcmFja0J1ZmZlclNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmFkZFRyYWNrQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZVNh
bXBsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6aGFzQXVkaW8gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6aGFzVmlkZW8gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6c3RhcnRDaGFuZ2luZ1R5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0TWF4aW11bVF1
ZXVlRGVwdGhGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGU6OnRpbWVGdWRnZUZhY3RvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlOjpzZXRBY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZTo6c2V0Q3VycmVudFRpbWVGdWRnZUZhY3Rvcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjpidWZmZXJlZCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjppc0J1ZmZlcmVkRGly
dHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZTo6c2V0QnVmZmVyZWREaXJ0eSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1ZpZGVvVHJhY2tQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpkdXJh
dGlvbkNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpmbHVzaFBlbmRpbmdN
ZWRpYURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6
cmVzZXRQYXJzZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBh
cnNlSW5pdGlhbGl6YXRpb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjphcHBlbmRDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRpbWVGdWRnZUZhY3RvciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6aGFzVmlkZW8gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc0F1
ZGlvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06OnJlc2V0UGFyc2VyU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkNsdXN0ZXJCZWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg6CisgICAgICAgICogcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OmR1cmF0aW9uQ2hhbmdlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRS
ZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlOjpzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6Omhhc1ZpZGVvIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpoYXNBdWRp
byBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oOgorCiAyMDIwLTEyLTA0ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkgYXVkaW8gcmVzYW1wbGluZyBjb2Rl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDMzN2E1NDQwZTIxNzZhOWRlNTYyZDJiNTQ3OGQ3OWMxNDA4NDk4ZjEuLjZh
MDU1YTliMzM5ZGM0NTFiMGRiYjU2MjYyYWFjOWIwMzc3NDgzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsODcgQEAKKzIwMjAtMTItMDQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKwor
ICAgICAgICBbTWVkaWEgaW4gR1BVIFByb2Nlc3NdW01TRV0gSW1wbGVtZW50IGJhc2ljIHZpZGVv
IHBsYXliYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTk0MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQXVkaW9UcmFja1Byb3h5Ojpjb25maWd1cmF0aW9uKToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpsb2FkTWVkaWFTb3VyY2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojp1cGRhdGVDYWNoZWRTdGF0ZSk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNlUHJveHk6OmR1cmF0aW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6YnVmZmVyZWQgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpkdXJhdGlvbkNo
YW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpzZXRSZWFk
eVN0YXRlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJv
eHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHku
bWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpS
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5Ojp+UmVtb3RlU291cmNlQnVmZmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0
aWFsaXphdGlvblNlZ21lbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VT
YW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNl
QnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291
cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJy
b3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVm
ZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
U291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5n
ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c2V0QWN0aXZl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNldFJlYWR5U3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6dXBkYXRlQnVm
ZmVyZWRGcm9tVHJhY2tCdWZmZXJzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVm
ZmVyUHJveHk6OmV2aWN0Q29kZWRGcmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eTo6YWRkVHJhY2tCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVT
b3VyY2VCdWZmZXJQcm94eTo6cmVlbnF1ZXVlTWVkaWFJZk5lZWRlZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojp0cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0Vu
cXVldWVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJj
ZUJ1ZmZlclByaXZhdGVIYXNBdWRpbyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlSGFzVmlkZW8gY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVm
ZmVyUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4
dFRyYWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJhY2tQcm94eTo6
Y29uZmlndXJhdGlvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb1Ry
YWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb1RyYWNrUHJveHk6OmNv
bmZpZ3VyYXRpb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0
ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6VGV4dFRyYWNrUHJpdmF0
ZVJlbW90ZUNvbmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlRl
eHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oOgorICAgICAg
ICAoV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uOjpkZWNv
ZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVt
b3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXVkaW9UcmFja1ByaXZhdGVSZW1vdGU6OnVwZGF0
ZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJh
Y2tQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpsb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVNv
dXJjZVByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZh
dGVSZW1vdGU6OmR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNl
UHJpdmF0ZVJlbW90ZTo6aXNFbmRlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291
cmNlUHJpdmF0ZVJlbW90ZTo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAo
V2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpmbHVzaCk6CisgICAgICAgIChXZWJL
aXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNldEFjdGl2ZSk6CisgICAgICAgIChXZWJL
aXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVm
ZmVycyk6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmV2aWN0
Q29kZWRGcmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
OjphZGRUcmFja0J1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGU6OnJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlOjp0cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKToK
KyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVy
UHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQpOgorICAgICAgICAoV2ViS2l0
OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25D
aGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291
cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6U291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFu
Z2VkKToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNl
QnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlNv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmVucXVldWVTYW1wbGUpOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZh
dGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjp1
cGRhdGVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9WaWRl
b1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvVHJhY2tQcml2
YXRlUmVtb3RlOjp1cGRhdGVDb25maWd1cmF0aW9uKToKKwogMjAyMC0xMi0wNCAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBDYW5jZWwgaW1h
Z2UgZXh0cmFjdGlvbiB3aGVuIG5hdmlnYXRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKaW5kZXggZmVlNTQ3MzlkNTVmMGUxZDVh
MTZiNWFjOWIxNGIyYzBhYjcyZjg5MS4uYWRmN2IxOTVhYmJiMDNjMDEwZjIwODI3ZWUwYWNkZmZm
ZTA0YTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5jcHAKQEAgLTEyNCw2ICsxMjQsNyBAQCB2b2lkIE1lZGlhU291cmNlOjpzZXRQ
cml2YXRlQW5kT3BlbihSZWY8TWVkaWFTb3VyY2VQcml2YXRlPiYmIG1lZGlhU291cmNlUHJpdmF0
ZQogICAgIEFTU0VSVCghbV9wcml2YXRlKTsKICAgICBBU1NFUlQobV9tZWRpYUVsZW1lbnQpOwog
ICAgIG1fcHJpdmF0ZSA9IFdURk1vdmUobWVkaWFTb3VyY2VQcml2YXRlKTsKKyAgICBtX3ByaXZh
dGUtPnNldFRpbWVGdWRnZUZhY3RvcihjdXJyZW50VGltZUZ1ZGdlRmFjdG9yKCkpOwogCiAgICAg
Ly8gMi40LjEgQXR0YWNoaW5nIHRvIGEgbWVkaWEgZWxlbWVudAogICAgIC8vIGh0dHBzOi8vcmF3
Z2l0LmNvbS93M2MvbWVkaWEtc291cmNlLzQ1NjI3NjQ2MzQ0ZWVhMDE3MGRkMWNiYzVhM2Q1MDhj
YTc1MWFiYjgvbWVkaWEtc291cmNlLXJlc3BlYy5odG1sI21lZGlhc291cmNlLWF0dGFjaApAQCAt
NTU2LDcgKzU1Nyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhU291cmNlOjpzZXREdXJhdGlv
bkludGVybmFsKGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24pCiAgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSLCBkdXJhdGlvbik7CiAKICAgICAvLyA2LiBVcGRhdGUgdGhlIG1lZGlhIGR1cmF0
aW9uIHRvIG5ldyBkdXJhdGlvbiBhbmQgcnVuIHRoZSBIVE1MTWVkaWFFbGVtZW50IGR1cmF0aW9u
IGNoYW5nZSBhbGdvcml0aG0uCi0gICAgbV9wcml2YXRlLT5kdXJhdGlvbkNoYW5nZWQoKTsKKyAg
ICBtX3ByaXZhdGUtPmR1cmF0aW9uQ2hhbmdlZChkdXJhdGlvbik7CiAKICAgICByZXR1cm4geyB9
OwogfQpAQCAtNjI4LDYgKzYyOSw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0
aEVycm9yKE9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+IGVycm9yKQogICAgICAgICAgICAgc291
cmNlQnVmZmVyLT50cnlTaWduYWxBbGxTYW1wbGVzRW5xdWV1ZWQoKTsKICAgICAgICAgbV9wcml2
YXRlLT5tYXJrRW5kT2ZTdHJlYW0oTWVkaWFTb3VyY2VQcml2YXRlOjpFb3NOb0Vycm9yKTsKICAg
ICB9IGVsc2UgaWYgKGVycm9yID09IEVuZE9mU3RyZWFtRXJyb3I6Ok5ldHdvcmspIHsKKyAgICAg
ICAgbV9wcml2YXRlLT5tYXJrRW5kT2ZTdHJlYW0oTWVkaWFTb3VyY2VQcml2YXRlOjpFb3NOZXR3
b3JrRXJyb3IpOwogICAgICAgICAvLyDihrMgSWYgZXJyb3IgaXMgc2V0IHRvICJuZXR3b3JrIgog
ICAgICAgICBBU1NFUlQobV9tZWRpYUVsZW1lbnQpOwogICAgICAgICBpZiAobV9tZWRpYUVsZW1l
bnQtPnJlYWR5U3RhdGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50OjpIQVZFX05PVEhJTkcpIHsKQEAg
LTY0Niw2ICs2NDgsOCBAQCB2b2lkIE1lZGlhU291cmNlOjpzdHJlYW1FbmRlZFdpdGhFcnJvcihP
cHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPiBlcnJvcikKICAgICB9IGVsc2UgewogICAgICAgICAv
LyDihrMgSWYgZXJyb3IgaXMgc2V0IHRvICJkZWNvZGUiCiAgICAgICAgIEFTU0VSVChlcnJvciA9
PSBFbmRPZlN0cmVhbUVycm9yOjpEZWNvZGUpOworICAgICAgICBtX3ByaXZhdGUtPm1hcmtFbmRP
ZlN0cmVhbShNZWRpYVNvdXJjZVByaXZhdGU6OkVvc0RlY29kZUVycm9yKTsKKwogICAgICAgICBB
U1NFUlQobV9tZWRpYUVsZW1lbnQpOwogICAgICAgICBpZiAobV9tZWRpYUVsZW1lbnQtPnJlYWR5
U3RhdGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50OjpIQVZFX05PVEhJTkcpIHsKICAgICAgICAgICAg
IC8vICDihrMgSWYgdGhlIEhUTUxNZWRpYUVsZW1lbnQucmVhZHlTdGF0ZSBhdHRyaWJ1dGUgZXF1
YWxzIEhBVkVfTk9USElORwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IGNkZTE4M2Y4OTI3NDdkMzJhZGE4MmU3ZDVlMmI5
YjQzZWM1M2JkZmUuLmNjMTZmMTdlNDBmNmFjODgyNzkwMjZhMTY2OGE4MTRiMjViOGUzZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5jcHAKQEAgLTgxLDYgKzgxLDcgQEAgU291cmNlQnVmZmVyOjpTb3VyY2VCdWZmZXIoUmVmPFNv
dXJjZUJ1ZmZlclByaXZhdGU+JiYgc291cmNlQnVmZmVyUHJpdmF0ZSwgTWVkaWEKICAgICAsIG1f
YXBwZW5kV2luZG93RW5kKE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSkKICAgICAs
IG1fYXBwZW5kU3RhdGUoV2FpdGluZ0ZvclNlZ21lbnQpCiAgICAgLCBtX3RpbWVPZkJ1ZmZlcmlu
Z01vbml0b3IoTW9ub3RvbmljVGltZTo6bm93KCkpCisgICAgLCBtX2J1ZmZlcmVkKFRpbWVSYW5n
ZXM6OmNyZWF0ZSgpKQogICAgICwgbV9wZW5kaW5nUmVtb3ZlU3RhcnQoTWVkaWFUaW1lOjppbnZh
bGlkVGltZSgpKQogICAgICwgbV9wZW5kaW5nUmVtb3ZlRW5kKE1lZGlhVGltZTo6aW52YWxpZFRp
bWUoKSkKICAgICAsIG1fcmVtb3ZlVGltZXIoKnRoaXMsICZTb3VyY2VCdWZmZXI6OnJlbW92ZVRp
bWVyRmlyZWQpCkBAIC05NCw3ICs5NSw2IEBAIFNvdXJjZUJ1ZmZlcjo6U291cmNlQnVmZmVyKFJl
ZjxTb3VyY2VCdWZmZXJQcml2YXRlPiYmIHNvdXJjZUJ1ZmZlclByaXZhdGUsIE1lZGlhCiAKICAg
ICBtX3ByaXZhdGUtPnNldENsaWVudCh0aGlzKTsKICAgICBtX3ByaXZhdGUtPnNldElzQXR0YWNo
ZWQodHJ1ZSk7Ci0gICAgbV9wcml2YXRlLT5zZXRDdXJyZW50VGltZUZ1ZGdlRmFjdG9yKG1fc291
cmNlLT5jdXJyZW50VGltZUZ1ZGdlRmFjdG9yKCkpOwogfQogCiBTb3VyY2VCdWZmZXI6On5Tb3Vy
Y2VCdWZmZXIoKQpAQCAtMTAyLDggKzEwMiw4IEBAIFNvdXJjZUJ1ZmZlcjo6flNvdXJjZUJ1ZmZl
cigpCiAgICAgQVNTRVJUKGlzUmVtb3ZlZCgpKTsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIpOwogCi0gICAgbV9wcml2YXRlLT5zZXRDbGllbnQobnVsbHB0cik7CiAgICAgbV9wcml2YXRl
LT5zZXRJc0F0dGFjaGVkKGZhbHNlKTsKKyAgICBtX3ByaXZhdGUtPnNldENsaWVudChudWxscHRy
KTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPFRpbWVSYW5nZXM+PiBTb3VyY2VCdWZmZXI6OmJ1ZmZl
cmVkKCkgY29uc3QKQEAgLTExNiw3ICsxMTYsNyBAQCBFeGNlcHRpb25PcjxSZWY8VGltZVJhbmdl
cz4+IFNvdXJjZUJ1ZmZlcjo6YnVmZmVyZWQoKSBjb25zdAogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIAogICAgIC8vIDIuIFJldHVybiBhIG5ldyBzdGF0
aWMgbm9ybWFsaXplZCBUaW1lUmFuZ2VzIG9iamVjdCBmb3IgdGhlIG1lZGlhIHNlZ21lbnRzIGJ1
ZmZlcmVkLgotICAgIHJldHVybiBtX3ByaXZhdGUtPmJ1ZmZlcmVkKCktPmNvcHkoKTsKKyAgICBy
ZXR1cm4gbV9idWZmZXJlZC0+Y29weSgpOwogfQogCiBkb3VibGUgU291cmNlQnVmZmVyOjp0aW1l
c3RhbXBPZmZzZXQoKSBjb25zdApAQCAtNTUyLDEwICs1NTIsNiBAQCB2b2lkIFNvdXJjZUJ1ZmZl
cjo6c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKEFwcGVuZFJlc3VsdCByZXN1bHQp
CiAgICAgaWYgKGlzUmVtb3ZlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBSZXNvbHZl
IHRoZSBjaGFuZ2VzIGl0IFRyYWNrQnVmZmVycycgYnVmZmVyZWQgcmFuZ2VzCi0gICAgLy8gaW50
byB0aGUgU291cmNlQnVmZmVyJ3MgYnVmZmVyZWQgcmFuZ2VzCi0gICAgbV9wcml2YXRlLT51cGRh
dGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMobV9zb3VyY2UtPmlzRW5kZWQoKSk7Ci0KICAgICAv
LyBTZWN0aW9uIDMuNS41IEJ1ZmZlciBBcHBlbmQgQWxnb3JpdGhtLCBjdGQuCiAgICAgLy8gaHR0
cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL2RlZmF1bHQvbWVkaWEtc291
cmNlL21lZGlhLXNvdXJjZS5odG1sI3NvdXJjZWJ1ZmZlci1idWZmZXItYXBwZW5kCiAKQEAgLTYz
NCw3ICs2MzAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6cmVtb3ZlVGltZXJGaXJlZCgpCiAgICAg
c2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkudXBkYXRlZW5kRXZlbnQpOwogfQogCi1zaXplX3Qg
U291cmNlQnVmZmVyOjptYXhpbXVtQnVmZmVyU2l6ZSgpIGNvbnN0Cit1aW50NjRfdCBTb3VyY2VC
dWZmZXI6Om1heGltdW1CdWZmZXJTaXplKCkgY29uc3QKIHsKICAgICBpZiAoaXNSZW1vdmVkKCkp
CiAgICAgICAgIHJldHVybiAwOwpAQCAtNjc4LDEwICs2NzQsMTIgQEAgdm9pZCBTb3VyY2VCdWZm
ZXI6OnNldEFjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgbV9zb3VyY2UtPnNvdXJjZUJ1ZmZl
ckRpZENoYW5nZUFjdGl2ZVN0YXRlKCp0aGlzLCBhY3RpdmUpOwogfQogCi12b2lkIFNvdXJjZUJ1
ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQo
Y29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50JiBzZWdtZW50KQordm9pZCBTb3VyY2VCdWZmZXI6
OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRp
YWxpemF0aW9uU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoaXNSZW1vdmVkKCkpCisgICAgaWYgKGlzUmVt
b3ZlZCgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsK
KyAgICB9CiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogCkBAIC03MDQsNiArNzAy
LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5p
dGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXQKICAgICAvLyB3aXRoIHRoZSBkZWNvZGUgZXJy
b3IgcGFyYW1ldGVyIHNldCB0byB0cnVlIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICBpZiAo
c2VnbWVudC5hdWRpb1RyYWNrcy5pc0VtcHR5KCkgJiYgc2VnbWVudC52aWRlb1RyYWNrcy5pc0Vt
cHR5KCkgJiYgc2VnbWVudC50ZXh0VHJhY2tzLmlzRW1wdHkoKSkgewogICAgICAgICBhcHBlbmRF
cnJvcih0cnVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNzEzLDYgKzcxMiw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VC
dWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0CiAg
ICAgICAgIC8vIHdpdGggdGhlIGRlY29kZSBlcnJvciBwYXJhbWV0ZXIgc2V0IHRvIHRydWUgYW5k
IGFib3J0IHRoZXNlIHN0ZXBzLgogICAgICAgICBpZiAoIXZhbGlkYXRlSW5pdGlhbGl6YXRpb25T
ZWdtZW50KHNlZ21lbnQpKSB7CiAgICAgICAgICAgICBhcHBlbmRFcnJvcih0cnVlKTsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApAQCAtODE1LDEwICs4MTUsMTAgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXQKICAgICAg
ICAgICAgIC8vIHJlZmVyZW5jZWQgYnkgdGhlIGF1ZGlvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUg
SFRNTE1lZGlhRWxlbWVudC4KICAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+
ZW5zdXJlQXVkaW9UcmFja3MoKS5hcHBlbmQobmV3QXVkaW9UcmFjay5jb3B5UmVmKCkpOwogCi0g
ICAgICAgICAgICAvLyA1LjIuOCBDcmVhdGUgYSBuZXcgdHJhY2sgYnVmZmVyIHRvIHN0b3JlIGNv
ZGVkIGZyYW1lcyBmb3IgdGhpcyB0cmFjay4KLSAgICAgICAgICAgIG1fcHJpdmF0ZS0+YWRkVHJh
Y2tCdWZmZXIobmV3QXVkaW9UcmFjay0+aWQoKSwgYXVkaW9UcmFja0luZm8uZGVzY3JpcHRpb24p
OwotCiAgICAgICAgICAgICBtX2F1ZGlvQ29kZWNzLmFwcGVuZChhdWRpb1RyYWNrSW5mby5kZXNj
cmlwdGlvbi0+Y29kZWMoKSk7CisKKyAgICAgICAgICAgIC8vIDUuMi44IENyZWF0ZSBhIG5ldyB0
cmFjayBidWZmZXIgdG8gc3RvcmUgY29kZWQgZnJhbWVzIGZvciB0aGlzIHRyYWNrLgorICAgICAg
ICAgICAgbV9wcml2YXRlLT5hZGRUcmFja0J1ZmZlcihuZXdBdWRpb1RyYWNrLT5pZCgpLCBXVEZN
b3ZlKGF1ZGlvVHJhY2tJbmZvLmRlc2NyaXB0aW9uKSk7CiAgICAgICAgIH0KIAogICAgICAgICAv
LyA1LjMgRm9yIGVhY2ggdmlkZW8gdHJhY2sgaW4gdGhlIGluaXRpYWxpemF0aW9uIHNlZ21lbnQs
IHJ1biBmb2xsb3dpbmcgc3RlcHM6CkBAIC04NTAsMTAgKzg1MCwxMCBAQCB2b2lkIFNvdXJjZUJ1
ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQo
Y29uc3QgSW5pdAogICAgICAgICAgICAgLy8gcmVmZXJlbmNlZCBieSB0aGUgdmlkZW9UcmFja3Mg
YXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50LgogICAgICAgICAgICAgbV9zb3VyY2Ut
Pm1lZGlhRWxlbWVudCgpLT5lbnN1cmVWaWRlb1RyYWNrcygpLmFwcGVuZChuZXdWaWRlb1RyYWNr
LmNvcHlSZWYoKSk7CiAKLSAgICAgICAgICAgIC8vIDUuMy44IENyZWF0ZSBhIG5ldyB0cmFjayBi
dWZmZXIgdG8gc3RvcmUgY29kZWQgZnJhbWVzIGZvciB0aGlzIHRyYWNrLgotICAgICAgICAgICAg
bV9wcml2YXRlLT5hZGRUcmFja0J1ZmZlcihuZXdWaWRlb1RyYWNrLT5pZCgpLCB2aWRlb1RyYWNr
SW5mby5kZXNjcmlwdGlvbik7Ci0KICAgICAgICAgICAgIG1fdmlkZW9Db2RlY3MuYXBwZW5kKHZp
ZGVvVHJhY2tJbmZvLmRlc2NyaXB0aW9uLT5jb2RlYygpKTsKKworICAgICAgICAgICAgLy8gNS4z
LjggQ3JlYXRlIGEgbmV3IHRyYWNrIGJ1ZmZlciB0byBzdG9yZSBjb2RlZCBmcmFtZXMgZm9yIHRo
aXMgdHJhY2suCisgICAgICAgICAgICBtX3ByaXZhdGUtPmFkZFRyYWNrQnVmZmVyKG5ld1ZpZGVv
VHJhY2stPmlkKCksIFdURk1vdmUodmlkZW9UcmFja0luZm8uZGVzY3JpcHRpb24pKTsKICAgICAg
ICAgfQogCiAgICAgICAgIC8vIDUuNCBGb3IgZWFjaCB0ZXh0IHRyYWNrIGluIHRoZSBpbml0aWFs
aXphdGlvbiBzZWdtZW50LCBydW4gZm9sbG93aW5nIHN0ZXBzOgpAQCAtODgyLDEwICs4ODIsMTAg
QEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlh
bGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXQKICAgICAgICAgICAgIC8vIHJlZmVyZW5jZWQgYnkg
dGhlIHRleHRUcmFja3MgYXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50LgogICAgICAg
ICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT5lbnN1cmVUZXh0VHJhY2tzKCkuYXBwZW5k
KG5ld1RleHRUcmFjay5jb3B5UmVmKCkpOwogCi0gICAgICAgICAgICAvLyA1LjQuNyBDcmVhdGUg
YSBuZXcgdHJhY2sgYnVmZmVyIHRvIHN0b3JlIGNvZGVkIGZyYW1lcyBmb3IgdGhpcyB0cmFjay4K
LSAgICAgICAgICAgIG1fcHJpdmF0ZS0+YWRkVHJhY2tCdWZmZXIobmV3VGV4dFRyYWNrLT5pZCgp
LCB0ZXh0VHJhY2tJbmZvLmRlc2NyaXB0aW9uKTsKLQogICAgICAgICAgICAgbV90ZXh0Q29kZWNz
LmFwcGVuZCh0ZXh0VHJhY2tJbmZvLmRlc2NyaXB0aW9uLT5jb2RlYygpKTsKKworICAgICAgICAg
ICAgLy8gNS40LjcgQ3JlYXRlIGEgbmV3IHRyYWNrIGJ1ZmZlciB0byBzdG9yZSBjb2RlZCBmcmFt
ZXMgZm9yIHRoaXMgdHJhY2suCisgICAgICAgICAgICBtX3ByaXZhdGUtPmFkZFRyYWNrQnVmZmVy
KG5ld1RleHRUcmFjay0+aWQoKSwgV1RGTW92ZSh0ZXh0VHJhY2tJbmZvLmRlc2NyaXB0aW9uKSk7
CiAgICAgICAgIH0KIAogICAgICAgICAvLyA1LjUgSWYgYWN0aXZlIHRyYWNrIGZsYWcgZXF1YWxz
IHRydWUsIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CkBAIC05MDIsNiArOTAyLDcgQEAg
dm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6
YXRpb25TZWdtZW50KGNvbnN0IEluaXQKICAgICAvLyAoTm90ZTogSXNzdWUgIzE1NSBhZGRzIHRo
aXMgc3RlcCBhZnRlciBzdGVwIDU6KQogICAgIC8vIDYuIFNldCAgcGVuZGluZyBpbml0aWFsaXph
dGlvbiBzZWdtZW50IGZvciBjaGFuZ2VUeXBlIGZsYWcgIHRvIGZhbHNlLgogICAgIG1fcGVuZGlu
Z0luaXRpYWxpemF0aW9uU2VnbWVudEZvckNoYW5nZVR5cGUgPSBmYWxzZTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwogCiAgICAgLy8gNi4gSWYgdGhlIEhUTUxNZWRpYUVsZW1lbnQucmVhZHlT
dGF0ZSBhdHRyaWJ1dGUgaXMgSEFWRV9OT1RISU5HLCB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0
ZXBzOgogICAgIGlmIChtX3ByaXZhdGUtPnJlYWR5U3RhdGUoKSA9PSBNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZTo6SGF2ZU5vdGhpbmcpIHsKQEAgLTEwMTEsMTYgKzEwMTIsNiBAQCBib29sIFNvdXJj
ZUJ1ZmZlcjo6aGFzVmlkZW8oKSBjb25zdAogICAgIHJldHVybiBtX3ZpZGVvVHJhY2tzICYmIG1f
dmlkZW9UcmFja3MtPmxlbmd0aCgpOwogfQogCi1ib29sIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVm
ZmVyUHJpdmF0ZUhhc0F1ZGlvKCkgY29uc3QKLXsKLSAgICByZXR1cm4gaGFzQXVkaW8oKTsKLX0K
LQotYm9vbCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbygpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGhhc1ZpZGVvKCk7Ci19Ci0KIHZvaWQgU291cmNlQnVmZmVyOjp2aWRl
b1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2smIHRyYWNrKQogewogICAgIC8vIDIuNC41
IENoYW5nZXMgdG8gc2VsZWN0ZWQvZW5hYmxlZCB0cmFjayBzdGF0ZQpAQCAtMTIwNCw5ICsxMTk1
LDkgQEAgYm9vbCBTb3VyY2VCdWZmZXI6OmNhblBsYXlUaHJvdWdoUmFuZ2UoUGxhdGZvcm1UaW1l
UmFuZ2VzJiByYW5nZXMpCiAgICAgcmV0dXJuIHVuYnVmZmVyZWRUaW1lLnRvRG91YmxlKCkgLyBt
X2F2ZXJhZ2VCdWZmZXJSYXRlIDwgdGltZVJlbWFpbmluZy50b0RvdWJsZSgpOwogfQogCi1zaXpl
X3QgU291cmNlQnVmZmVyOjpleHRyYU1lbW9yeUNvc3QoKSBjb25zdAordWludDY0X3QgU291cmNl
QnVmZmVyOjpleHRyYU1lbW9yeUNvc3QoKSBjb25zdAogewotICAgIHNpemVfdCBleHRyYU1lbW9y
eUNvc3QgPSBtX3BlbmRpbmdBcHBlbmREYXRhLmNhcGFjaXR5KCk7CisgICAgdWludDY0X3QgZXh0
cmFNZW1vcnlDb3N0ID0gbV9wZW5kaW5nQXBwZW5kRGF0YS5jYXBhY2l0eSgpOwogICAgIGV4dHJh
TWVtb3J5Q29zdCArPSBtX3ByaXZhdGUtPnRvdGFsVHJhY2tCdWZmZXJTaXplSW5CeXRlcygpOwog
CiAgICAgcmV0dXJuIGV4dHJhTWVtb3J5Q29zdDsKQEAgLTEyMTQsMTEgKzEyMDUsMTEgQEAgc2l6
ZV90IFNvdXJjZUJ1ZmZlcjo6ZXh0cmFNZW1vcnlDb3N0KCkgY29uc3QKIAogdm9pZCBTb3VyY2VC
dWZmZXI6OnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKCkKIHsKLSAgICBzaXplX3QgZXh0cmFN
ZW1vcnlDb3N0ID0gdGhpcy0+ZXh0cmFNZW1vcnlDb3N0KCk7CisgICAgdWludDY0X3QgZXh0cmFN
ZW1vcnlDb3N0ID0gdGhpcy0+ZXh0cmFNZW1vcnlDb3N0KCk7CiAgICAgaWYgKGV4dHJhTWVtb3J5
Q29zdCA8PSBtX3JlcG9ydGVkRXh0cmFNZW1vcnlDb3N0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBzaXplX3QgZXh0cmFNZW1vcnlDb3N0RGVsdGEgPSBleHRyYU1lbW9yeUNvc3QgLSBtX3JlcG9y
dGVkRXh0cmFNZW1vcnlDb3N0OworICAgIHVpbnQ2NF90IGV4dHJhTWVtb3J5Q29zdERlbHRhID0g
ZXh0cmFNZW1vcnlDb3N0IC0gbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdDsKICAgICBtX3JlcG9y
dGVkRXh0cmFNZW1vcnlDb3N0ID0gZXh0cmFNZW1vcnlDb3N0OwogCiAgICAgSlNDOjpKU0xvY2tI
b2xkZXIgbG9jayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkpOwpAQCAtMTI0Miw3ICsx
MjMzLDcgQEAgTWVkaWFUaW1lIFNvdXJjZUJ1ZmZlcjo6bWluaW11bVVwY29taW5nUHJlc2VudGF0
aW9uVGltZUZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmkKICAgICByZXR1cm4gbV9wcml2YXRlLT5t
aW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lRm9yVHJhY2tJRCh0cmFja0lEKTsKIH0KIAot
dm9pZCBTb3VyY2VCdWZmZXI6OnNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRChjb25zdCBB
dG9tU3RyaW5nJiB0cmFja0lELCBzaXplX3QgbWF4UXVldWVEZXB0aCkKK3ZvaWQgU291cmNlQnVm
ZmVyOjpzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYgdHJh
Y2tJRCwgdWludDY0X3QgbWF4UXVldWVEZXB0aCkKIHsKICAgICBtX3ByaXZhdGUtPnNldE1heGlt
dW1RdWV1ZURlcHRoRm9yVHJhY2tJRCh0cmFja0lELCBtYXhRdWV1ZURlcHRoKTsKIH0KQEAgLTEz
MDIsMTQgKzEyOTMsMjUgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNldFNob3VsZEdlbmVyYXRlVGlt
ZXN0YW1wcyhib29sIGZsYWcpCiAgICAgbV9wcml2YXRlLT5zZXRTaG91bGRHZW5lcmF0ZVRpbWVz
dGFtcHMoZmxhZyk7CiB9CiAKK3ZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRl
QnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCBmbGFnKQoreworICAgIG1fYnVmZmVyZWREaXJ0eSA9
IGZsYWc7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVy
ZWRSYW5nZXNDaGFuZ2VkKGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYgdGltZVJhbmdlcykKK3sK
KyAgICBtX2J1ZmZlcmVkLT5yYW5nZXMoKSA9IHRpbWVSYW5nZXM7CisgICAgbV9zb3VyY2UtPm1v
bml0b3JTb3VyY2VCdWZmZXJzKCk7Cit9CisKIGJvb2wgU291cmNlQnVmZmVyOjppc0J1ZmZlcmVk
RGlydHkoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUtPmlzQnVmZmVyZWREaXJ0eSgp
OworICAgIHJldHVybiBtX2J1ZmZlcmVkRGlydHk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyOjpz
ZXRCdWZmZXJlZERpcnR5KGJvb2wgZmxhZykKIHsKLSAgICBtX3ByaXZhdGUtPnNldEJ1ZmZlcmVk
RGlydHkoZmxhZyk7CisgICAgbV9idWZmZXJlZERpcnR5ID0gZmxhZzsKIH0KIAogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmgKaW5kZXggZDE1YzI5YmNkODg2MmU5MmI0NmQ5M2IwMTI1MDUwMTkz
NDllMmNmOC4uMjI5M2JjNTA3N2JiMTc2OTg0MjJkZTBlNjZlZGY0YTc5YjFmYWU0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCkBA
IC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmUoY29u
c3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4g
Y2hhbmdlVHlwZShjb25zdCBTdHJpbmcmKTsKIAotICAgIGNvbnN0IFRpbWVSYW5nZXMmIGJ1ZmZl
cmVkSW50ZXJuYWwoKSBjb25zdCB7IEFTU0VSVChtX3ByaXZhdGUtPmJ1ZmZlcmVkKCkpOyByZXR1
cm4gKm1fcHJpdmF0ZS0+YnVmZmVyZWQoKTsgfQorICAgIGNvbnN0IFRpbWVSYW5nZXMmIGJ1ZmZl
cmVkSW50ZXJuYWwoKSBjb25zdCB7IEFTU0VSVChtX2J1ZmZlcmVkKTsgcmV0dXJuICptX2J1ZmZl
cmVkOyB9CiAKICAgICB2b2lkIGFib3J0SWZVcGRhdGluZygpOwogICAgIHZvaWQgcmVtb3ZlZEZy
b21NZWRpYVNvdXJjZSgpOwpAQCAtMTQ4LDE1ICsxNDgsMTUgQEAgcHJpdmF0ZToKICAgICBib29s
IHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIFNvdXJj
ZUJ1ZmZlclByaXZhdGVDbGllbnQKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNl
aXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXRpYWxpemF0aW9uU2VnbWVudCYpIGZp
bmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlv
blNlZ21lbnQoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJikgZmluYWw7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlU3RyZWFtRW5kZWRXaXRo
RGVjb2RlRXJyb3IoKSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRF
cnJvcihib29sIGRlY29kZUVycm9yKSBmaW5hbDsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZh
dGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQpIGZpbmFsOwogICAgIHZvaWQgc291cmNlQnVm
ZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uKSBmaW5h
bDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBsZShkb3VibGUgc2Ft
cGxlRHVyYXRpb24pIGZpbmFsOwogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZERyb3BT
YW1wbGUoKSBmaW5hbDsKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVTdHJlYW1FbmRlZFdp
dGhEZWNvZGVFcnJvcigpIGZpbmFsOwotICAgIGJvb2wgc291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1
ZGlvKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzb3VyY2VCdWZmZXJQcml2YXRlSGFzVmlkZW8o
KSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0
ZShBcHBlbmRSZXN1bHQpIGZpbmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZl
cmVkRGlydHlDaGFuZ2VkKGJvb2wpIGZpbmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0
ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChjb25zdCBQbGF0Zm9ybVRpbWVSYW5nZXMmKSBmaW5hbDsK
ICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJyb3IoaW50
IGVycm9yQ29kZSkgZmluYWw7CiAKICAgICAvLyBBdWRpb1RyYWNrQ2xpZW50CkBAIC0xODUsMTMg
KzE4NSwxMyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCB2YWxpZGF0ZUluaXRpYWxpemF0aW9uU2Vn
bWVudChjb25zdCBJbml0aWFsaXphdGlvblNlZ21lbnQmKTsKIAotICAgIHNpemVfdCBtYXhpbXVt
QnVmZmVyU2l6ZSgpIGNvbnN0OworICAgIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplKCkgY29u
c3Q7CiAKICAgICB2b2lkIG1vbml0b3JCdWZmZXJpbmdSYXRlKCk7CiAKICAgICB2b2lkIHJlbW92
ZVRpbWVyRmlyZWQoKTsKIAotICAgIHNpemVfdCBleHRyYU1lbW9yeUNvc3QoKSBjb25zdDsKKyAg
ICB1aW50NjRfdCBleHRyYU1lbW9yeUNvc3QoKSBjb25zdDsKICAgICB2b2lkIHJlcG9ydEV4dHJh
TWVtb3J5QWxsb2NhdGVkKCk7CiAKICAgICB2b2lkIGFwcGVuZEVycm9yKGJvb2wpOwpAQCAtMjA0
LDcgKzIwNCw3IEBAIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4g
YnVmZmVyZWRTYW1wbGVzRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gZW5xdWV1ZWRTYW1wbGVzRm9yVHJhY2tJRChjb25zdCBB
dG9tU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFUaW1lIG1pbmltdW1VcGNvbWlu
Z1ByZXNlbnRhdGlvblRpbWVGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRChjb25zdCBBdG9t
U3RyaW5nJiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1heGltdW1RdWV1
ZURlcHRoRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJiwgdWludDY0X3QpOwogCiAgICAgUmVm
PFNvdXJjZUJ1ZmZlclByaXZhdGU+IG1fcHJpdmF0ZTsKICAgICBNZWRpYVNvdXJjZSogbV9zb3Vy
Y2U7CkBAIC0yMzEsOCArMjMxLDEwIEBAIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX3Rp
bWVPZkJ1ZmZlcmluZ01vbml0b3I7CiAgICAgZG91YmxlIG1fYnVmZmVyZWRTaW5jZUxhc3RNb25p
dG9yIHsgMCB9OwogICAgIGRvdWJsZSBtX2F2ZXJhZ2VCdWZmZXJSYXRlIHsgMCB9OworICAgIGJv
b2wgbV9idWZmZXJlZERpcnR5IHsgdHJ1ZSB9OworICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBtX2J1
ZmZlcmVkOwogCi0gICAgc2l6ZV90IG1fcmVwb3J0ZWRFeHRyYU1lbW9yeUNvc3QgeyAwIH07Cisg
ICAgdWludDY0X3QgbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdCB7IDAgfTsKIAogICAgIE1lZGlh
VGltZSBtX3BlbmRpbmdSZW1vdmVTdGFydDsKICAgICBNZWRpYVRpbWUgbV9wZW5kaW5nUmVtb3Zl
RW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFT
b3VyY2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVNv
dXJjZVByaXZhdGUuaAppbmRleCA2NTcwYmY2ZWU5NjgyN2UwMDk0NmY5ZjE5NjA4OGFkYzJjNGJk
YjYzLi4yOTMyODg2M2IxNGYyNmRjYjljYzExYzAyMzY2MGQ1MjAzYjg5MGZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVNvdXJjZVByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVNvdXJjZVByaXZhdGUu
aApAQCAtNTUsMTAgKzU1LDExIEBAIHB1YmxpYzoKICAgICAgICAgUmVhY2hlZElkTGltaXQKICAg
ICB9OwogICAgIHZpcnR1YWwgQWRkU3RhdHVzIGFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDb250ZW50
VHlwZSYsIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZHVyYXRpb25DaGFuZ2VkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkdXJhdGlvbkNoYW5n
ZWQoY29uc3QgTWVkaWFUaW1lJikgPSAwOwogICAgIGVudW0gRW5kT2ZTdHJlYW1TdGF0dXMgeyBF
b3NOb0Vycm9yLCBFb3NOZXR3b3JrRXJyb3IsIEVvc0RlY29kZUVycm9yIH07CiAgICAgdmlydHVh
bCB2b2lkIG1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cykgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCB1bm1hcmtFbmRPZlN0cmVhbSgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFbmRl
ZCgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVh
ZHlTdGF0ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZSkgPSAwOwpAQCAtNjYsMTAgKzY3LDEzIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgd2FpdEZvclNlZWtDb21wbGV0ZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNlZWtDb21wbGV0ZWQoKSA9IDA7CiAKKyAgICB2b2lkIHNldFRpbWVGdWRnZUZhY3Rvcihj
b25zdCBNZWRpYVRpbWUmIGZ1ZGdlRmFjdG9yKSB7IG1fdGltZUZ1ZGdlRmFjdG9yID0gZnVkZ2VG
YWN0b3I7IH0KKyAgICBNZWRpYVRpbWUgdGltZUZ1ZGdlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4g
bV90aW1lRnVkZ2VGYWN0b3I7IH0KICAgICB2b2lkIHNldElzU2Vla2luZyhib29sIGZsYWcpIHsg
bV9pc1NlZWtpbmcgPSBmbGFnOyB9CiAgICAgYm9vbCBpc1NlZWtpbmcoKSBjb25zdCB7IHJldHVy
biBtX2lzU2Vla2luZzsgfQogCiBwcml2YXRlOgorICAgIE1lZGlhVGltZSBtX3RpbWVGdWRnZUZh
Y3RvcjsKICAgICBib29sIG1faXNTZWVraW5nIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5j
cHAKaW5kZXggMGYzZmE2NmQ5OTFlYjM5YTMwNjFhZTJmOGViZmVlYjJkNTMwNDVjOS4uMTk3ODMx
YWFlNjZmOGRhZDQzOWFlN2VmZWZiNjY2ODI5OGE0MmU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAg
LTY1LDYgKzY1LDggQEAgU291cmNlQnVmZmVyUHJpdmF0ZTo6U291cmNlQnVmZmVyUHJpdmF0ZSgp
CiB7CiB9CiAKK1NvdXJjZUJ1ZmZlclByaXZhdGU6On5Tb3VyY2VCdWZmZXJQcml2YXRlKCkgPSBk
ZWZhdWx0OworCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnJlc2V0VGltZXN0YW1wT2Zmc2V0
SW5UcmFja0J1ZmZlcnMoKQogewogICAgIGZvciAoYXV0byYgdHJhY2tCdWZmZXIgOiBtX3RyYWNr
QnVmZmVyTWFwLnZhbHVlcygpKSB7CkBAIC03Myw2ICs3NSwxMiBAQCB2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGU6OnJlc2V0VGltZXN0YW1wT2Zmc2V0SW5UcmFja0J1ZmZlcnMoKQogICAgIH0KIH0K
IAordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpzZXRCdWZmZXJlZERpcnR5KGJvb2wgZmxhZykK
K3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2
YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoZmxhZyk7Cit9CisKIHZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZTo6cmVzZXRUcmFja0J1ZmZlcnMoKQogewogICAgIGZvciAoYXV0byYgdHJhY2tCdWZmZXJQ
YWlyIDogbV90cmFja0J1ZmZlck1hcC52YWx1ZXMoKSkgewpAQCAtOTYsNiArMTA0LDEzIEBAIE1l
ZGlhVGltZSBTb3VyY2VCdWZmZXJQcml2YXRlOjpoaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1w
KCkgY29uc3QKICAgICByZXR1cm4gaGlnaGVzdFRpbWU7CiB9CiAKK3ZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZTo6c2V0QnVmZmVyZWRSYW5nZXMoY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJiB0aW1l
UmFuZ2VzKQoreworICAgIG1fYnVmZmVyZWQtPnJhbmdlcygpID0gdGltZVJhbmdlczsKKyAgICBp
ZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVy
ZWRSYW5nZXNDaGFuZ2VkKG1fYnVmZmVyZWQtPnJhbmdlcygpKTsKK30KKwogdm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlOjp1cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJ
c0VuZGVkKQogewogICAgIC8vIDMuMSBBdHRyaWJ1dGVzLCBidWZmZXJlZApAQCAtMTEyLDcgKzEy
Nyw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tC
dWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCkKICAgICAvLyBOT1RFOiBTaG9ydCBjaXJjdWl0IHRo
ZSBmb2xsb3dpbmcgaWYgbm9uZSBvZiB0aGUgVHJhY2tCdWZmZXJzIGhhdmUgYnVmZmVyZWQgcmFu
Z2VzIHRvIGF2b2lkIGdlbmVyYXRpbmcKICAgICAvLyBhIHNpbmdsZSByYW5nZSBvZiB7MCwgMH0u
CiAgICAgaWYgKGhpZ2hlc3RFbmRUaW1lLmlzTmVnYXRpdmVJbmZpbml0ZSgpKSB7Ci0gICAgICAg
IG1fYnVmZmVyZWQtPnJhbmdlcygpID0gUGxhdGZvcm1UaW1lUmFuZ2VzKCk7CisgICAgICAgIHNl
dEJ1ZmZlcmVkUmFuZ2VzKFBsYXRmb3JtVGltZVJhbmdlcygpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTM3LDEwICsxNTIsMjAgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjp1
cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVkKQogCiAgICAg
Ly8gNS4gSWYgaW50ZXJzZWN0aW9uIHJhbmdlcyBkb2VzIG5vdCBjb250YWluIHRoZSBleGFjdCBz
YW1lIHJhbmdlIGluZm9ybWF0aW9uIGFzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoaXMgYXR0cmli
dXRlLAogICAgIC8vICAgIHRoZW4gdXBkYXRlIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoaXMgYXR0
cmlidXRlIHRvIGludGVyc2VjdGlvbiByYW5nZXMuCi0gICAgbV9idWZmZXJlZC0+cmFuZ2VzKCkg
PSBpbnRlcnNlY3Rpb25SYW5nZXM7CisgICAgc2V0QnVmZmVyZWRSYW5nZXMoaW50ZXJzZWN0aW9u
UmFuZ2VzKTsKICAgICBzZXRCdWZmZXJlZERpcnR5KHRydWUpOwogfQogCit2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGU6OmFwcGVuZENvbXBsZXRlZChib29sIHBhcnNpbmdTdWNjZWVkZWQsIGJvb2wg
aXNFbmRlZCkKK3sKKyAgICAvLyBSZXNvbHZlIHRoZSBjaGFuZ2VzIGluIFRyYWNrQnVmZmVycycg
YnVmZmVyZWQgcmFuZ2VzCisgICAgLy8gaW50byB0aGUgU291cmNlQnVmZmVyJ3MgYnVmZmVyZWQg
cmFuZ2VzCisgICAgdXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGlzRW5kZWQpOworCisg
ICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUFw
cGVuZENvbXBsZXRlKHBhcnNpbmdTdWNjZWVkZWQgPyBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50
OjpBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2NlZWRlZCA6IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGll
bnQ6OkFwcGVuZFJlc3VsdDo6UGFyc2luZ0ZhaWxlZCk7Cit9CisKIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZTo6cmVlbnF1ZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkKIHsKICAg
ICBpZiAoIW1faXNBdHRhY2hlZCkKQEAgLTE3OCw5ICsyMDMsOSBAQCBWZWN0b3I8U3RyaW5nPiBT
b3VyY2VCdWZmZXJQcml2YXRlOjpidWZmZXJlZFNhbXBsZXNGb3JUcmFja0lEKGNvbnN0IEF0b21T
dHJpbmcmCiB7CiAgICAgYXV0byBpdCA9IG1fdHJhY2tCdWZmZXJNYXAuZmluZCh0cmFja0lEKTsK
ICAgICBpZiAoaXQgPT0gbV90cmFja0J1ZmZlck1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFZl
Y3RvcjxTdHJpbmc+KCk7CisgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBUcmFja0J1ZmZlciYg
dHJhY2tCdWZmZXIgPSBpdC0+dmFsdWU7CisgICAgYXV0byYgdHJhY2tCdWZmZXIgPSBpdC0+dmFs
dWU7CiAgICAgVmVjdG9yPFN0cmluZz4gc2FtcGxlRGVzY3JpcHRpb25zOwogICAgIGZvciAoYXV0
byYgcGFpciA6IHRyYWNrQnVmZmVyLnNhbXBsZXMuZGVjb2RlT3JkZXIoKSkKICAgICAgICAgc2Ft
cGxlRGVzY3JpcHRpb25zLmFwcGVuZCh0b1N0cmluZygqcGFpci5zZWNvbmQpKTsKQEAgLTMxNyw3
ICszNDIsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnByb3ZpZGVNZWRpYURhdGEoVHJh
Y2tCdWZmZXImIHRyYWNrQnVmZmVyLCBjb25zdCBBdG9tUwogICAgIHVwZGF0ZU1pbmltdW1VcGNv
bWluZ1ByZXNlbnRhdGlvblRpbWUodHJhY2tCdWZmZXIsIHRyYWNrSUQpOwogCiAjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECi0gICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsICJlbnF1ZXVlZCAi
LCBlbnF1ZXVlZFNhbXBsZXMsICIgc2FtcGxlcywgIiwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih0cmFj
a0J1ZmZlci5kZWNvZGVRdWV1ZS5zaXplKCkpLCAiIHJlbWFpbmluZyIpOworICAgIERFQlVHX0xP
RyhMT0dJREVOVElGSUVSLCAiZW5xdWV1ZWQgIiwgZW5xdWV1ZWRTYW1wbGVzLCAiIHNhbXBsZXMs
ICIsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0cmFja0J1ZmZlci5kZWNvZGVRdWV1ZS5zaXplKCkp
LCAiIHJlbWFpbmluZyIpOwogI2VuZGlmCiAKICAgICBhbGxTYW1wbGVzSW5UcmFja0VucXVldWVk
KHRyYWNrSUQpOwpAQCAtMzM5LDcgKzM2NCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6
cmVlbnF1ZXVlTWVkaWFGb3JUaW1lKFRyYWNrQnVmZmVyJiB0cmFja0J1ZmZlciwgY29uc3QKICAg
ICAgICAgY3VycmVudFNhbXBsZVBUU0l0ZXJhdG9yID0gdHJhY2tCdWZmZXIuc2FtcGxlcy5wcmVz
ZW50YXRpb25PcmRlcigpLmZpbmRTYW1wbGVTdGFydGluZ09uT3JBZnRlclByZXNlbnRhdGlvblRp
bWUodGltZSk7CiAKICAgICBpZiAoY3VycmVudFNhbXBsZVBUU0l0ZXJhdG9yID09IHRyYWNrQnVm
ZmVyLnNhbXBsZXMucHJlc2VudGF0aW9uT3JkZXIoKS5lbmQoKQotICAgICAgICB8fCAoY3VycmVu
dFNhbXBsZVBUU0l0ZXJhdG9yLT5maXJzdCAtIHRpbWUpID4gbV9jdXJyZW50VGltZUZ1ZGdlRmFj
dG9yKQorICAgICAgICB8fCAoY3VycmVudFNhbXBsZVBUU0l0ZXJhdG9yLT5maXJzdCAtIHRpbWUp
ID4gdGltZUZ1ZGdlRmFjdG9yKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFNlYWNoIGJh
Y2t3YXJkIGZvciB0aGUgcHJldmlvdXMgc3luYyBzYW1wbGUuCkBAIC0zNjcsNyArMzkyLDcgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpyZWVucXVldWVNZWRpYUZvclRpbWUoVHJhY2tCdWZm
ZXImIHRyYWNrQnVmZmVyLCBjb25zdAogICAgIHRyYWNrQnVmZmVyLm5lZWRzUmVlbnF1ZXVlaW5n
ID0gZmFsc2U7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6cmVlbnF1ZXVlTWVkaWFJ
Zk5lZWRlZChjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBzaXplX3QgcGVuZGluZ0FwcGVu
ZERhdGFDYXBhY2l0eSwgc2l6ZV90IG1heGltdW1CdWZmZXJTaXplKQordm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlOjpyZWVucXVldWVNZWRpYUlmTmVlZGVkKGNvbnN0IE1lZGlhVGltZSYgY3VycmVu
dFRpbWUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGlt
dW1CdWZmZXJTaXplKQogewogICAgIGZvciAoYXV0byYgdHJhY2tCdWZmZXJQYWlyIDogbV90cmFj
a0J1ZmZlck1hcCkgewogICAgICAgICBUcmFja0J1ZmZlciYgdHJhY2tCdWZmZXIgPSB0cmFja0J1
ZmZlclBhaXIudmFsdWU7CkBAIC0zOTgsNyArNDIzLDcgQEAgc3RhdGljIFBsYXRmb3JtVGltZVJh
bmdlcyByZW1vdmVTYW1wbGVzRnJvbVRyYWNrQnVmZmVyKGNvbnN0IERlY29kZU9yZGVyU2FtcGxl
TWEKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBNZWRpYVRpbWUgZWFybGllc3RTYW1w
bGUgPSBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CiAgICAgTWVkaWFUaW1lIGxh
dGVzdFNhbXBsZSA9IE1lZGlhVGltZTo6emVyb1RpbWUoKTsKLSAgICBzaXplX3QgYnl0ZXNSZW1v
dmVkID0gMDsKKyAgICB1aW50NjRfdCBieXRlc1JlbW92ZWQgPSAwOwogICAgIGF1dG8gbG9nSWRl
bnRpZmllciA9IFdURjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcihzb3VyY2VCdWZmZXJQcml2
YXRlLT5sb2dDbGFzc05hbWUoKSwgbG9nUHJlZml4LCBzb3VyY2VCdWZmZXJQcml2YXRlLT5sb2dJ
ZGVudGlmaWVyKCkpOwogICAgIGF1dG8mIGxvZ2dlciA9IHNvdXJjZUJ1ZmZlclByaXZhdGUtPmxv
Z2dlcigpOwogICAgIGF1dG8gd2lsbExvZyA9IGxvZ2dlci53aWxsTG9nKHNvdXJjZUJ1ZmZlclBy
aXZhdGUtPmxvZ0NoYW5uZWwoKSwgV1RGTG9nTGV2ZWw6OkRlYnVnKTsKQEAgLTQwOCw3ICs0MzMs
NyBAQCBzdGF0aWMgUGxhdGZvcm1UaW1lUmFuZ2VzIHJlbW92ZVNhbXBsZXNGcm9tVHJhY2tCdWZm
ZXIoY29uc3QgRGVjb2RlT3JkZXJTYW1wbGVNYQogICAgIGZvciAoY29uc3QgYXV0byYgc2FtcGxl
SXQgOiBzYW1wbGVzKSB7CiAgICAgICAgIGNvbnN0IERlY29kZU9yZGVyU2FtcGxlTWFwOjpLZXlU
eXBlJiBkZWNvZGVLZXkgPSBzYW1wbGVJdC5maXJzdDsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKLSAgICAgICAgc2l6ZV90IHN0YXJ0QnVmZmVyU2l6ZSA9IHRyYWNrQnVmZmVyLnNhbXBsZXMu
c2l6ZUluQnl0ZXMoKTsKKyAgICAgICAgdWludDY0X3Qgc3RhcnRCdWZmZXJTaXplID0gdHJhY2tC
dWZmZXIuc2FtcGxlcy5zaXplSW5CeXRlcygpOwogI2VuZGlmCiAKICAgICAgICAgY29uc3QgUmVm
UHRyPE1lZGlhU2FtcGxlPiYgc2FtcGxlID0gc2FtcGxlSXQuc2Vjb25kOwpAQCAtNTcwLDcgKzU5
NSw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6cmVtb3ZlQ29kZWRGcmFtZXMoY29uc3Qg
TWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUCiAgICAgTE9HKE1lZGlhLCAiU291cmNlQnVm
ZmVyOjpyZW1vdmVDb2RlZEZyYW1lcyglcCkgLSBidWZmZXJlZCA9ICVzIiwgdGhpcywgdG9TdHJp
bmcobV9idWZmZXJlZC0+cmFuZ2VzKCkpLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGU6OmV2aWN0Q29kZWRGcmFtZXMoc2l6ZV90IG5ld0RhdGFTaXplLCBzaXpl
X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgc2l6ZV90IG1heGltdW1CdWZmZXJTaXplLCBj
b25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uLCBi
b29sIGlzRW5kZWQpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmV2aWN0Q29kZWRGcmFtZXMo
dWludDY0X3QgbmV3RGF0YVNpemUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHks
IHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplLCBjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1l
LCBjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uLCBib29sIGlzRW5kZWQpCiB7CiAgICAgLy8gMy41
LjEzIENvZGVkIEZyYW1lIEV2aWN0aW9uIEFsZ29yaXRobQogICAgIC8vIGh0dHA6Ly93d3cudzMu
b3JnL1RSL21lZGlhLXNvdXJjZS8jc291cmNlYnVmZmVyLWNvZGVkLWZyYW1lLWV2aWN0aW9uCkBA
IC01OTQsNyArNjE5LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpldmljdENvZGVkRnJh
bWVzKHNpemVfdCBuZXdEYXRhU2l6ZSwgc2l6ZV90IHBlbmRpbmdBcHAKIAogI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRCAmJiBmYWxzZQogICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiY3Vy
cmVudFRpbWUgPSAiLCBjdXJyZW50VGltZSwgIiwgcmVxdWlyZSAiLCBleHRyYU1lbW9yeUNvc3Qo
KSArIG5ld0RhdGFTaXplLCAiIGJ5dGVzLCBtYXhpbXVtIGJ1ZmZlciBzaXplIGlzICIsIG1heGlt
dW1CdWZmZXJTaXplKTsKLSAgICBzaXplX3QgaW5pdGlhbEJ1ZmZlcmVkU2l6ZSA9IGV4dHJhTWVt
b3J5Q29zdCgpOworICAgIHVpbnQ2NF90IGluaXRpYWxCdWZmZXJlZFNpemUgPSBleHRyYU1lbW9y
eUNvc3QoKTsKICNlbmRpZgogCiAgICAgTWVkaWFUaW1lIHJhbmdlU3RhcnQgPSBNZWRpYVRpbWU6
Onplcm9UaW1lKCk7CkBAIC02MjMsMTAgKzY0OCwxMCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGU6OmV2aWN0Q29kZWRGcmFtZXMoc2l6ZV90IG5ld0RhdGFTaXplLCBzaXplX3QgcGVuZGluZ0Fw
cAogICAgIC8vIHRoZSBjdXJyZW50IGJ1ZmZlcmVkIHJhbmdlKSwgZGVsZXRlIDMwIHNlY29uZHMg
YXQgYSB0aW1lIGZyb20gZHVyYXRpb24gYmFjayB0byB0aGUgY3VycmVudCB0aW1lIHJhbmdlIG9y
IDMwIHNlY29uZHMgYWZ0ZXIKICAgICAvLyBjdXJyZW5UaW1lIHdoaWNoZXZlciB3ZSBoaXQgZmly
c3QuCiAgICAgYXV0byBidWZmZXJlZCA9IG1fYnVmZmVyZWQtPnJhbmdlcygpOwotICAgIHNpemVf
dCBjdXJyZW50VGltZVJhbmdlID0gYnVmZmVyZWQuZmluZChjdXJyZW50VGltZSk7CisgICAgdWlu
dDY0X3QgY3VycmVudFRpbWVSYW5nZSA9IGJ1ZmZlcmVkLmZpbmQoY3VycmVudFRpbWUpOwogICAg
IGlmIChjdXJyZW50VGltZVJhbmdlID09IGJ1ZmZlcmVkLmxlbmd0aCgpIC0gMSkgewogI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRCAmJiBmYWxzZQotICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVS
LCAiRkFJTEVEIHRvIGZyZWUgZW5vdWdoIGFmdGVyIGV2aWN0aW5nICIsIGluaXRpYWxCdWZmZXJl
ZFNpemUgLSBleHRyYU1lbW9yeUNvc3QoKSk7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElG
SUVSLCAiRkFJTEVEIHRvIGZyZWUgZW5vdWdoIGFmdGVyIGV2aWN0aW5nICIsIGluaXRpYWxCdWZm
ZXJlZFNpemUgLSBleHRyYU1lbW9yeUNvc3QoKSk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTYzNiw3ICs2NjEsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmV2aWN0
Q29kZWRGcmFtZXMoc2l6ZV90IG5ld0RhdGFTaXplLCBzaXplX3QgcGVuZGluZ0FwcAogICAgIHJh
bmdlRW5kID0gZHVyYXRpb247CiAgICAgaWYgKCFyYW5nZUVuZC5pc0Zpbml0ZSgpKSB7CiAgICAg
ICAgIHJhbmdlRW5kID0gYnVmZmVyZWQubWF4aW11bUJ1ZmZlcmVkVGltZSgpOwotI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRCAmJiBmYWxzZQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAg
ICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgIk1lZGlhU291cmNlIGR1cmF0aW9uIGlzIG5v
dCBhIGZpbml0ZSB2YWx1ZSwgdXNpbmcgbWF4aW11bSBidWZmZXJlZCB0aW1lOiAiLCByYW5nZUVu
ZCk7CiAjZW5kaWYKICAgICB9CkBAIC02NDQsOSArNjY5LDkgQEAgdm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlOjpldmljdENvZGVkRnJhbWVzKHNpemVfdCBuZXdEYXRhU2l6ZSwgc2l6ZV90IHBlbmRp
bmdBcHAKICAgICByYW5nZVN0YXJ0ID0gcmFuZ2VFbmQgLSB0aGlydHlTZWNvbmRzOwogICAgIHdo
aWxlIChyYW5nZVN0YXJ0ID4gbWluaW11bVJhbmdlU3RhcnQpIHsKICAgICAgICAgLy8gRG8gbm90
IGV2aWN0IGRhdGEgZnJvbSB0aGUgdGltZSByYW5nZSB0aGF0IGNvbnRhaW5zIGN1cnJlbnRUaW1l
LgotICAgICAgICBzaXplX3Qgc3RhcnRUaW1lUmFuZ2UgPSBidWZmZXJlZC5maW5kKHJhbmdlU3Rh
cnQpOworICAgICAgICB1aW50NjRfdCBzdGFydFRpbWVSYW5nZSA9IGJ1ZmZlcmVkLmZpbmQocmFu
Z2VTdGFydCk7CiAgICAgICAgIGlmIChjdXJyZW50VGltZVJhbmdlICE9IG5vdEZvdW5kICYmIHN0
YXJ0VGltZVJhbmdlID09IGN1cnJlbnRUaW1lUmFuZ2UpIHsKLSAgICAgICAgICAgIHNpemVfdCBl
bmRUaW1lUmFuZ2UgPSBidWZmZXJlZC5maW5kKHJhbmdlRW5kKTsKKyAgICAgICAgICAgIHVpbnQ2
NF90IGVuZFRpbWVSYW5nZSA9IGJ1ZmZlcmVkLmZpbmQocmFuZ2VFbmQpOwogICAgICAgICAgICAg
aWYgKGN1cnJlbnRUaW1lUmFuZ2UgIT0gbm90Rm91bmQgJiYgZW5kVGltZVJhbmdlID09IGN1cnJl
bnRUaW1lUmFuZ2UpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTY3NCwyMiArNjk5LDI1
IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZXZpY3RDb2RlZEZyYW1lcyhzaXplX3QgbmV3
RGF0YVNpemUsIHNpemVfdCBwZW5kaW5nQXBwCiAjZW5kaWYKIH0KIAotc2l6ZV90IFNvdXJjZUJ1
ZmZlclByaXZhdGU6OnRvdGFsVHJhY2tCdWZmZXJTaXplSW5CeXRlcygpIGNvbnN0Cit1aW50NjRf
dCBTb3VyY2VCdWZmZXJQcml2YXRlOjp0b3RhbFRyYWNrQnVmZmVyU2l6ZUluQnl0ZXMoKSBjb25z
dAogewotICAgIHNpemVfdCB0b3RhbFNpemVJbkJ5dGVzID0gMDsKKyAgICB1aW50NjRfdCB0b3Rh
bFNpemVJbkJ5dGVzID0gMDsKICAgICBmb3IgKGF1dG8mIHRyYWNrQnVmZmVyIDogbV90cmFja0J1
ZmZlck1hcC52YWx1ZXMoKSkKICAgICAgICAgdG90YWxTaXplSW5CeXRlcyArPSB0cmFja0J1ZmZl
ci5zYW1wbGVzLnNpemVJbkJ5dGVzKCk7CiAKICAgICByZXR1cm4gdG90YWxTaXplSW5CeXRlczsK
IH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjphZGRUcmFja0J1ZmZlcihjb25zdCBBdG9t
U3RyaW5nJiB0cmFja0lkLCBSZWZQdHI8TWVkaWFEZXNjcmlwdGlvbj4gZGVzY3JpcHRpb24pCit2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmFkZFRyYWNrQnVmZmVyKGNvbnN0IEF0b21TdHJpbmcm
IHRyYWNrSWQsIFJlZlB0cjxNZWRpYURlc2NyaXB0aW9uPiYmIGRlc2NyaXB0aW9uKQogewogICAg
IEFTU0VSVCghbV90cmFja0J1ZmZlck1hcC5jb250YWlucyh0cmFja0lkKSk7CiAgICAgYXV0byYg
dHJhY2tCdWZmZXIgPSBtX3RyYWNrQnVmZmVyTWFwLmFkZCh0cmFja0lkLCBUcmFja0J1ZmZlcigp
KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICAvLyA1LjIuOSBBZGQgdGhlIHRyYWNrIGRlc2NyaXB0
aW9uIGZvciB0aGlzIHRyYWNrIHRvIHRoZSB0cmFjayBidWZmZXIuCiAgICAgdHJhY2tCdWZmZXIu
ZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsKKworICAgIG1faGFzQXVkaW8gPSBtX2hhc0F1ZGlv
IHx8IHRyYWNrQnVmZmVyLmRlc2NyaXB0aW9uLT5pc0F1ZGlvKCk7CisgICAgbV9oYXNWaWRlbyA9
IG1faGFzVmlkZW8gfHwgdHJhY2tCdWZmZXIuZGVzY3JpcHRpb24tPmlzVmlkZW8oKTsKIH0KIAog
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjp1cGRhdGVUcmFja0lkcyhWZWN0b3I8c3RkOjpwYWly
PEF0b21TdHJpbmcsIEF0b21TdHJpbmc+PiYmIHRyYWNrSWRQYWlycykKQEAgLTcwOSw3ICs3Mzcs
NyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnNldEFsbFRyYWNrQnVmZmVyc05lZWRSYW5k
b21BY2Nlc3MoKQogICAgICAgICB0cmFja0J1ZmZlci5uZWVkUmFuZG9tQWNjZXNzRmxhZyA9IHRy
dWU7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZUluaXRpYWxpemF0
aW9uU2VnbWVudChjb25zdCBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlv
blNlZ21lbnQmIHNlZ21lbnQpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVJ
bml0aWFsaXphdGlvblNlZ21lbnQoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6
YXRpb25TZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9jbGllbnQpCiAgICAgICAgIHJldHVybjsKQEAg
LTcxOSw3ICs3NDcsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVJbml0
aWFsaXphdGlvblNlZ21lbnQoY29uc3QgU291cmNlQnVmZmVyUHJpdgogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5p
dGlhbGl6YXRpb25TZWdtZW50KHNlZ21lbnQpOworICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQ
cml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICBtX3JlY2VpdmVkRmlyc3RJbml0aWFs
aXphdGlvblNlZ21lbnQgPSB0cnVlOwogICAgIG1fcGVuZGluZ0luaXRpYWxpemF0aW9uU2VnbWVu
dEZvckNoYW5nZVR5cGUgPSBmYWxzZTsKQEAgLTExODAsMTEgKzEyMDgsMTEgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiAg
ICAgICAgIC8vIGRpc2pvaW50IHJhbmdlcyBzZXBhcmF0ZWQgYnkgbGVzcyB0aGFuIGEgImZ1ZGdl
IGZhY3RvciIuCiAgICAgICAgIGF1dG8gcHJlc2VudGF0aW9uRW5kVGltZSA9IHByZXNlbnRhdGlv
blRpbWVzdGFtcCArIGZyYW1lRHVyYXRpb247CiAgICAgICAgIGF1dG8gbmVhcmVzdFRvUHJlc2Vu
dGF0aW9uU3RhcnRUaW1lID0gdHJhY2tCdWZmZXIuYnVmZmVyZWQubmVhcmVzdChwcmVzZW50YXRp
b25UaW1lc3RhbXApOwotICAgICAgICBpZiAobmVhcmVzdFRvUHJlc2VudGF0aW9uU3RhcnRUaW1l
LmlzVmFsaWQoKSAmJiAocHJlc2VudGF0aW9uVGltZXN0YW1wIC0gbmVhcmVzdFRvUHJlc2VudGF0
aW9uU3RhcnRUaW1lKS5pc0JldHdlZW4oTWVkaWFUaW1lOjp6ZXJvVGltZSgpLCBtX2N1cnJlbnRU
aW1lRnVkZ2VGYWN0b3IpKQorICAgICAgICBpZiAobmVhcmVzdFRvUHJlc2VudGF0aW9uU3RhcnRU
aW1lLmlzVmFsaWQoKSAmJiAocHJlc2VudGF0aW9uVGltZXN0YW1wIC0gbmVhcmVzdFRvUHJlc2Vu
dGF0aW9uU3RhcnRUaW1lKS5pc0JldHdlZW4oTWVkaWFUaW1lOjp6ZXJvVGltZSgpLCB0aW1lRnVk
Z2VGYWN0b3IoKSkpCiAgICAgICAgICAgICBwcmVzZW50YXRpb25UaW1lc3RhbXAgPSBuZWFyZXN0
VG9QcmVzZW50YXRpb25TdGFydFRpbWU7CiAKICAgICAgICAgYXV0byBuZWFyZXN0VG9QcmVzZW50
YXRpb25FbmRUaW1lID0gdHJhY2tCdWZmZXIuYnVmZmVyZWQubmVhcmVzdChwcmVzZW50YXRpb25F
bmRUaW1lKTsKLSAgICAgICAgaWYgKG5lYXJlc3RUb1ByZXNlbnRhdGlvbkVuZFRpbWUuaXNWYWxp
ZCgpICYmIChuZWFyZXN0VG9QcmVzZW50YXRpb25FbmRUaW1lIC0gcHJlc2VudGF0aW9uRW5kVGlt
ZSkuaXNCZXR3ZWVuKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgbV9jdXJyZW50VGltZUZ1ZGdlRmFj
dG9yKSkKKyAgICAgICAgaWYgKG5lYXJlc3RUb1ByZXNlbnRhdGlvbkVuZFRpbWUuaXNWYWxpZCgp
ICYmIChuZWFyZXN0VG9QcmVzZW50YXRpb25FbmRUaW1lIC0gcHJlc2VudGF0aW9uRW5kVGltZSku
aXNCZXR3ZWVuKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgdGltZUZ1ZGdlRmFjdG9yKCkpKQogICAg
ICAgICAgICAgcHJlc2VudGF0aW9uRW5kVGltZSA9IG5lYXJlc3RUb1ByZXNlbnRhdGlvbkVuZFRp
bWU7CiAKICAgICAgICAgdHJhY2tCdWZmZXIuYnVmZmVyZWQuYWRkKHByZXNlbnRhdGlvblRpbWVz
dGFtcCwgcHJlc2VudGF0aW9uRW5kVGltZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKaW5kZXggMTFkZmYzNDliZWM3
ZDdlOWMyMjMxNzM2YTQ2ZDQ4ZTc3ZTQ3NmI3YS4uNDAxZGJkNzdiZDIwNGI5OGMyODNmY2ExZmQ1
NDIwOWM5N2ZlZWIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtNjMsOCArNjMsOSBAQCBjbGFzcyBTb3Vy
Y2VCdWZmZXJQcml2YXRlCiB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU291cmNlQnVm
ZmVyUHJpdmF0ZSgpOwotICAgIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclByaXZhdGUoKSA9IGRlZmF1
bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U291cmNlQnVmZmVyUHJpdmF0ZSgpOwog
CisgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBh
Ym9ydCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpID0gMDsKQEAg
LTcyLDQwICs3MywzOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6UmVhZHlT
dGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRSZWFkeVN0
YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
QWN0aXZlKGJvb2wpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5Td2l0Y2hUb1R5cGUoY29uc3Qg
Q29udGVudFR5cGUmKSB7IHJldHVybiBmYWxzZTsgfQogCisgICAgdmlydHVhbCB2b2lkIHJlZW5x
dWV1ZU1lZGlhSWZOZWVkZWQoY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50TWVkaWFUaW1lLCB1aW50
NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6
ZSk7CisgICAgdmlydHVhbCB2b2lkIGFkZFRyYWNrQnVmZmVyKGNvbnN0IEF0b21TdHJpbmcmIHRy
YWNrSWQsIFJlZlB0cjxNZWRpYURlc2NyaXB0aW9uPiYmKTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJ5
U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgdm9pZCB1cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0Vu
ZGVkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZXZpY3RDb2RlZEZyYW1lcyh1
aW50NjRfdCBuZXdEYXRhU2l6ZSwgdWludDY0X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwg
dWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUsIGNvbnN0IE1lZGlhVGltZSYgY3VycmVudFRpbWUs
IGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24sIGJvb2wgaXNFbmRlZCk7CisKICAgICB2b2lkIHNl
dENsaWVudChTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBj
bGllbnQ7IH0KICAgICB2b2lkIHNldElzQXR0YWNoZWQoYm9vbCBmbGFnKSB7IG1faXNBdHRhY2hl
ZCA9IGZsYWc7IH0KLSAgICB2b2lkIHNldEN1cnJlbnRUaW1lRnVkZ2VGYWN0b3IoY29uc3QgTWVk
aWFUaW1lJiB0aW1lKSB7IG1fY3VycmVudFRpbWVGdWRnZUZhY3RvciA9IHRpbWU7IH0KKyAgICBi
b29sIGhhc0F1ZGlvKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBdWRpbzsgfQorICAgIGJvb2wgaGFz
VmlkZW8oKSBjb25zdCB7IHJldHVybiBtX2hhc1ZpZGVvOyB9CiAgICAgdm9pZCBzZXRBcHBlbmRX
aW5kb3dTdGFydChjb25zdCBNZWRpYVRpbWUmIGFwcGVuZFdpbmRvd1N0YXJ0KSB7IG1fYXBwZW5k
V2luZG93U3RhcnQgPSBhcHBlbmRXaW5kb3dTdGFydDt9CiAgICAgdm9pZCBzZXRBcHBlbmRXaW5k
b3dFbmQoY29uc3QgTWVkaWFUaW1lJiBhcHBlbmRXaW5kb3dFbmQpIHsgbV9hcHBlbmRXaW5kb3dF
bmQgPSBhcHBlbmRXaW5kb3dFbmQ7IH0KICAgICBib29sIGJ1ZmZlckZ1bGwoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlckZ1bGw7IH0KLSAgICBUaW1lUmFuZ2VzKiBidWZmZXJlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fYnVmZmVyZWQuZ2V0KCk7IH0KLSAgICBib29sIGlzQnVmZmVyZWREaXJ0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fYnVmZmVyZWREaXJ0eTsgfQotICAgIHZvaWQgc2V0QnVmZmVyZWREaXJ0
eShib29sIGZsYWcpIHsgbV9idWZmZXJlZERpcnR5ID0gZmxhZzsgfQorCisgICAgdm9pZCBzZXRC
dWZmZXJlZERpcnR5KGJvb2wpOwogICAgIHZvaWQgcmVzZXRUcmFja0J1ZmZlcnMoKTsKICAgICB2
b2lkIGNsZWFyVHJhY2tCdWZmZXJzKCk7CiAgICAgdm9pZCByZXNldFRpbWVzdGFtcE9mZnNldElu
VHJhY2tCdWZmZXJzKCk7CiAgICAgTWVkaWFUaW1lIHRpbWVzdGFtcE9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fdGltZXN0YW1wT2Zmc2V0OyB9CiAgICAgdm9pZCBzZXRUaW1lc3RhbXBPZmZzZXQo
Y29uc3QgTWVkaWFUaW1lJiB0aW1lc3RhbXBPZmZzZXQpIHsgbV90aW1lc3RhbXBPZmZzZXQgPSB0
aW1lc3RhbXBPZmZzZXQ7IH0KICAgICBNZWRpYVRpbWUgaGlnaGVzdFByZXNlbnRhdGlvblRpbWVz
dGFtcCgpIGNvbnN0OwotICAgIHZvaWQgdXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJv
b2wgc291cmNlSXNFbmRlZCk7CiAgICAgdm9pZCBzZWVrVG9UaW1lKGNvbnN0IE1lZGlhVGltZSYp
OwotICAgIHZvaWQgdHJ5U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCgpOwogICAgIHZv
aWQgc3RhcnRDaGFuZ2luZ1R5cGUoKSB7IG1fcGVuZGluZ0luaXRpYWxpemF0aW9uU2VnbWVudEZv
ckNoYW5nZVR5cGUgPSB0cnVlOyB9Ci0KLSAgICB2b2lkIHJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQo
Y29uc3QgTWVkaWFUaW1lJiBjdXJyZW50TWVkaWFUaW1lLCBzaXplX3QgcGVuZGluZ0FwcGVuZERh
dGFDYXBhY2l0eSwgc2l6ZV90IG1heGltdW1CdWZmZXJTaXplKTsKICAgICB2b2lkIHJlbW92ZUNv
ZGVkRnJhbWVzKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBj
b25zdCBNZWRpYVRpbWUmIGN1cnJlbnRNZWRpYVRpbWUsIGJvb2wgaXNFbmRlZCk7Ci0gICAgdm9p
ZCBldmljdENvZGVkRnJhbWVzKHNpemVfdCBuZXdEYXRhU2l6ZSwgc2l6ZV90IHBlbmRpbmdBcHBl
bmREYXRhQ2FwYWNpdHksIHNpemVfdCBtYXhpbXVtQnVmZmVyU2l6ZSwgY29uc3QgTWVkaWFUaW1l
JiBjdXJyZW50VGltZSwgY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbiwgYm9vbCBpc0VuZGVkKTsK
LSAgICB2b2lkIGFkZFRyYWNrQnVmZmVyKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSWQsIFJlZlB0
cjxNZWRpYURlc2NyaXB0aW9uPik7CiAgICAgdm9pZCB1cGRhdGVUcmFja0lkcyhWZWN0b3I8c3Rk
OjpwYWlyPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+PiYmIHRyYWNrSWRQYWlycyk7CiAgICAgdm9p
ZCBzZXRBbGxUcmFja0J1ZmZlcnNOZWVkUmFuZG9tQWNjZXNzKCk7CiAgICAgdm9pZCBzZXRTaG91
bGRHZW5lcmF0ZVRpbWVzdGFtcHMoYm9vbCBmbGFnKSB7IG1fc2hvdWxkR2VuZXJhdGVUaW1lc3Rh
bXBzID0gZmxhZzsgfQogICAgIHZvaWQgc2V0TW9kZShTb3VyY2VCdWZmZXJBcHBlbmRNb2RlIG1v
ZGUpIHsgbV9hcHBlbmRNb2RlID0gbW9kZTsgfQogICAgIHZvaWQgc2V0R3JvdXBTdGFydFRpbWVz
dGFtcChjb25zdCBNZWRpYVRpbWUmIG1lZGlhVGltZSkgeyBtX2dyb3VwU3RhcnRUaW1lc3RhbXAg
PSBtZWRpYVRpbWU7IH0KICAgICB2b2lkIHNldEdyb3VwU3RhcnRUaW1lc3RhbXBUb0VuZFRpbWVz
dGFtcCgpIHsgbV9ncm91cFN0YXJ0VGltZXN0YW1wID0gbV9ncm91cEVuZFRpbWVzdGFtcDsgfQot
ICAgIHNpemVfdCB0b3RhbFRyYWNrQnVmZmVyU2l6ZUluQnl0ZXMoKSBjb25zdDsKKyAgICB1aW50
NjRfdCB0b3RhbFRyYWNrQnVmZmVyU2l6ZUluQnl0ZXMoKSBjb25zdDsKIAogICAgIHN0cnVjdCBU
cmFja0J1ZmZlciB7CiAgICAgICAgIE1lZGlhVGltZSBsYXN0RGVjb2RlVGltZXN0YW1wOwpAQCAt
MTM0LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGVucXVl
dWVkU2FtcGxlc0ZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYpIHsgcmV0dXJuIHsgfTsgfQog
ICAgIFZlY3RvcjxTdHJpbmc+IGJ1ZmZlcmVkU2FtcGxlc0ZvclRyYWNrSUQoY29uc3QgQXRvbVN0
cmluZyYpOwogICAgIHZpcnR1YWwgTWVkaWFUaW1lIG1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlv
blRpbWVGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmKSB7IHJldHVybiBNZWRpYVRpbWU6Omlu
dmFsaWRUaW1lKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JU
cmFja0lEKGNvbnN0IEF0b21TdHJpbmcmLCBzaXplX3QpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYsIHVpbnQ2NF90
KSB7IH0KICAgICBNZWRpYVRpbWUgZmFzdFNlZWtUaW1lRm9yTWVkaWFUaW1lKGNvbnN0IE1lZGlh
VGltZSYgdGFyZ2V0VGltZSwgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZVRocmVzaG9sZCwgY29u
c3QgTWVkaWFUaW1lJiBwb3NpdGl2ZVRocmVzaG9sZCk7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKQEAgLTE0Myw2ICsxNDMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgor
ICAgIHZpcnR1YWwgTWVkaWFUaW1lIHRpbWVGdWRnZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIHsy
MDAyLCAyNDAwMH07IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NlZWtpbmcoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgTWVkaWFUaW1lIGN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdCB7
IHJldHVybiB7IH07IH0KQEAgLTE1Nyw4ICsxNTgsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVh
bCB2b2lkIHNldE1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWUoY29uc3QgQXRvbVN0cmlu
ZyYsIGNvbnN0IE1lZGlhVGltZSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhck1pbmltdW1V
cGNvbWluZ1ByZXNlbnRhdGlvblRpbWUoY29uc3QgQXRvbVN0cmluZyYpIHsgfQogCisgICAgdm9p
ZCBhcHBlbmRDb21wbGV0ZWQoYm9vbCBwYXJzaW5nU3VjY2VlZGVkLCBib29sIGlzRW5kZWQpOwog
ICAgIHZvaWQgcmVlbnF1ZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCk7Ci0gICAg
dm9pZCBkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IFNvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudCYpOworICAgIHZvaWQgZGlkUmVjZWl2
ZUluaXRpYWxpemF0aW9uU2VnbWVudChTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFs
aXphdGlvblNlZ21lbnQmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lk
IGRpZFJlY2VpdmVTYW1wbGUoTWVkaWFTYW1wbGUmKTsKICAgICB2b2lkIHByb3ZpZGVNZWRpYURh
dGEoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCk7CiAKQEAgLTE2OSwxMSArMTcxLDEzIEBAIHBy
aXZhdGU6CiAgICAgdm9pZCByZWVucXVldWVNZWRpYUZvclRpbWUoVHJhY2tCdWZmZXImLCBjb25z
dCBBdG9tU3RyaW5nJiB0cmFja0lELCBjb25zdCBNZWRpYVRpbWUmKTsKICAgICBib29sIHZhbGlk
YXRlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6
OkluaXRpYWxpemF0aW9uU2VnbWVudCYpOwogICAgIHZvaWQgcHJvdmlkZU1lZGlhRGF0YShUcmFj
a0J1ZmZlciYsIGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpOworICAgIHZvaWQgc2V0QnVmZmVy
ZWRSYW5nZXMoY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJik7CiAKICAgICBib29sIG1faXNBdHRh
Y2hlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc0F1ZGlvIHsgZmFsc2UgfTsKKyAgICBib29s
IG1faGFzVmlkZW8geyBmYWxzZSB9OwogCiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBUcmFja0J1
ZmZlcj4gbV90cmFja0J1ZmZlck1hcDsKLSAgICBNZWRpYVRpbWUgbV9jdXJyZW50VGltZUZ1ZGdl
RmFjdG9yOwogCiAgICAgU291cmNlQnVmZmVyQXBwZW5kTW9kZSBtX2FwcGVuZE1vZGUgeyBTb3Vy
Y2VCdWZmZXJBcHBlbmRNb2RlOjpTZWdtZW50cyB9OwogCkBAIC0xOTAsNyArMTk0LDYgQEAgcHJp
dmF0ZToKIAogICAgIGJvb2wgbV9idWZmZXJGdWxsIHsgZmFsc2UgfTsKICAgICBSZWZQdHI8VGlt
ZVJhbmdlcz4gbV9idWZmZXJlZDsKLSAgICBib29sIG1fYnVmZmVyZWREaXJ0eSB7IHRydWUgfTsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaAppbmRl
eCBlY2QzYzc2M2YxMjRiN2MwZDRjNzU5NWJkM2E2YWYxNjVjM2Q5NDNiLi5hN2YwNDEyZjE0MDky
MDU1MTJhNDM5Y2Y4YjFhNGUzMGNjY2RmZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oCkBA
IC0zNiw2ICszNiw3IEBAIGNsYXNzIEF1ZGlvVHJhY2tQcml2YXRlOwogY2xhc3MgSW5iYW5kVGV4
dFRyYWNrUHJpdmF0ZTsKIGNsYXNzIE1lZGlhU2FtcGxlOwogY2xhc3MgTWVkaWFEZXNjcmlwdGlv
bjsKK2NsYXNzIFBsYXRmb3JtVGltZVJhbmdlczsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwog
CiBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50IHsKQEAgLTYzLDIxICs2NCwyMiBAQCBw
dWJsaWM6CiAgICAgICAgIH07CiAgICAgICAgIFZlY3RvcjxUZXh0VHJhY2tJbmZvcm1hdGlvbj4g
dGV4dFRyYWNrczsKICAgICB9OwotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRl
RGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0aWFsaXphdGlvblNlZ21l
bnQmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRFcnJv
cihib29sIGRlY29kZUVycm9yKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclBy
aXZhdGVEdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoZG91YmxlIGZyYW1lRHVyYXRp
b24pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZERyb3BTYW1w
bGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZl
SW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemF0aW9uU2VnbWVudCYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJp
dmF0ZVN0cmVhbUVuZGVkV2l0aERlY29kZUVycm9yKCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBz
b3VyY2VCdWZmZXJQcml2YXRlSGFzQXVkaW8oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29s
IHNvdXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbygpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwg
dm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9vbCBkZWNvZGVFcnJvcikgPSAw
OwogICAgIGVudW0gY2xhc3MgQXBwZW5kUmVzdWx0IDogdWludDhfdCB7CiAgICAgICAgIEFwcGVu
ZFN1Y2NlZWRlZCwKICAgICAgICAgUmVhZFN0cmVhbUZhaWxlZCwKICAgICAgICAgUGFyc2luZ0Zh
aWxlZAogICAgIH07CiAgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRD
b21wbGV0ZShBcHBlbmRSZXN1bHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVy
UHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBsZShkb3VibGUgZnJhbWVEdXJh
dGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkRHJvcFNh
bXBsZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVk
RGlydHlDaGFuZ2VkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJp
dmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChjb25zdCBQbGF0Zm9ybVRpbWVSYW5nZXMmKSA9IDA7
CisKICAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVSZW5kZXJp
bmdFcnJvcihpbnQgZXJyb3JDb2RlKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaAppbmRleCAwYzQxM2MyZGRm
NWQ5ZGEyYTE1YjExMzVjMDhlNTEwODUyYjgwMmM2Li5lYTVhMjljZWI1Y2ZlOWYwMjQyN2M1ZWFk
ZGMxNjQyNzRjYjZkNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgKQEAgLTY0LDcgKzY0LDYgQEAgcHVibGljOgogICAg
IHVzaW5nIFNlbGVjdGVkQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChWaWRlb1RyYWNr
UHJpdmF0ZSYsIGJvb2wgc2VsZWN0ZWQpPjsKICAgICB2b2lkIHNldFNlbGVjdGVkQ2hhbmdlZENh
bGxiYWNrKFNlbGVjdGVkQ2hhbmdlZENhbGxiYWNrJiYgY2FsbGJhY2spIHsgbV9zZWxlY3RlZENo
YW5nZWRDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOyB9CiAKLQogcHJvdGVjdGVkOgogICAg
IFZpZGVvVHJhY2tQcml2YXRlKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZh
dGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgKaW5kZXggMTEzNmZkMjUyYjgyZmVj
Yzc2YjdlOThmYjRkOGViYWI1Y2VlYjk0NS4uOGMzYmM5NWM5MjRkMWVhMWE5Y2U3ZTI5YTI0NTVl
ODNmYzMyMWU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNl
UHJpdmF0ZUFWRk9iakMuaApAQCAtNjcsOSArNjcsMTAgQEAgcHVibGljOgogICAgIGNvbnN0IFZl
Y3RvcjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyo+JiBhY3RpdmVTb3VyY2VCdWZmZXJzKCkg
Y29uc3QgeyByZXR1cm4gbV9hY3RpdmVTb3VyY2VCdWZmZXJzOyB9CiAKICAgICBBZGRTdGF0dXMg
YWRkU291cmNlQnVmZmVyKGNvbnN0IENvbnRlbnRUeXBlJiwgUmVmUHRyPFNvdXJjZUJ1ZmZlclBy
aXZhdGU+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoKSBvdmVycmlkZTsK
KyAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKICAg
ICB2b2lkIG1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cykgb3ZlcnJpZGU7CiAgICAg
dm9pZCB1bm1hcmtFbmRPZlN0cmVhbSgpIG92ZXJyaWRlOworICAgIGJvb2wgaXNFbmRlZCgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNFbmRlZDsgfQogICAgIE1lZGlhUGxheWVyOjpSZWFk
eVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFJlYWR5U3Rh
dGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpIG92ZXJyaWRlOwogICAgIHZvaWQgd2FpdEZvclNl
ZWtDb21wbGV0ZWQoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCmluZGV4IGIwMDM5MzFjN2Q3NTlmMjlkOWUwNjZm
YjEyMDIzMDdjZjUyNDk1NjYuLmVhNzUyMTEyMDM0N2UyMWMwZWI1ZTRlMThkZjdkMGNiNjQ4ZGJh
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQy5tbQpAQCAtMTI4LDcgKzEyOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRp
bWVSYW5nZXM+IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmJ1ZmZlcmVkKCkKICAgICByZXR1
cm4gbV9jbGllbnQtPmJ1ZmZlcmVkKCk7CiB9CiAKLXZvaWQgTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQzo6ZHVyYXRpb25DaGFuZ2VkKCkKK3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6
ZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpCiB7CiAgICAgbV9wbGF5ZXItPmR1cmF0
aW9uQ2hhbmdlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQy5oCmluZGV4IDU0NjUzMmJhMTllYTQ0ZjhmYWY0OWFkMTk3NTIxZjk3
ZThlMWVlNjguLjNmYTllZjY2MzdjZDVmOTM5ZWI4ODhlNTgzMWU2Y2FmOTc0ZTZhY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgK
QEAgLTI4LDggKzI4LDEwIEBACiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2luY2x1ZGUg
IlNvdXJjZUJ1ZmZlclBhcnNlci5oIgorI2luY2x1ZGUgPHd0Zi9Cb3guaD4KICNpbmNsdWRlIDx3
dGYvVHlwZUNhc3RzLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
dGhyZWFkcy9CaW5hcnlTZW1hcGhvcmUuaD4KIAogT0JKQ19DTEFTUyBBVkFzc2V0OwogT0JKQ19D
TEFTUyBBVlN0cmVhbURhdGFQYXJzZXI7CkBAIC03Nyw2ICs3OSw3IEBAIHByaXZhdGU6CiAgICAg
UmV0YWluUHRyPFdlYkFWU3RyZWFtRGF0YVBhcnNlckxpc3RlbmVyPiBtX2RlbGVnYXRlOwogICAg
IGJvb2wgbV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVudCB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX3BhcnNlclN0YXRlV2FzUmVzZXQgeyBmYWxzZSB9OworICAgIEJv
eDxCaW5hcnlTZW1hcGhvcmU+IG1fcmVhZHlUb1BhcnNlTWVkaWFTYW1wbGVzU2VtYXBob3JlOwog
CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgUmVmUHRyPGNvbnN0IFdURjo6TG9nZ2Vy
PiBtX2xvZ2dlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDLm1tCmluZGV4IDM1ZDlmNTUwYzNiMjEwNDFhZWY3ZDJhNjQzYjhhYWM3YjRh
Mzk1NWIuLjViNGY4ZWUwYWM1NmFkMjNiNGNkZjY1OTFmYTY1OWM0MzFjMWQ4ZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpA
QCAtMjExLDYgKzIxMSw3IEBAIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDKCkKIAogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBl
bmREYXRhKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEsIEFwcGVuZEZsYWdzIGZsYWdzKQog
eworICAgIG1fcmVhZHlUb1BhcnNlTWVkaWFTYW1wbGVzU2VtYXBob3JlID0gQm94PEJpbmFyeVNl
bWFwaG9yZT46OmNyZWF0ZSgpOwogICAgIGF1dG8gc2hhcmVkRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKFdURk1vdmUoZGF0YSkpOwogICAgIGF1dG8gbnNEYXRhID0gc2hhcmVkRGF0YS0+Y3Jl
YXRlTlNEYXRhKCk7CiAgICAgaWYgKG1fcGFyc2VyU3RhdGVXYXNSZXNldCB8fCBmbGFncyA9PSBB
cHBlbmRGbGFnczo6RGlzY29udGludWl0eSkKQEAgLTIyMiw2ICsyMjMsMTEgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDOjphcHBlbmREYXRhKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYm
IGRhdGEsIEFwcGVuZEYKIAogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpmbHVzaFBl
bmRpbmdNZWRpYURhdGEoKQogeworICAgIGlmIChtX3JlYWR5VG9QYXJzZU1lZGlhU2FtcGxlc1Nl
bWFwaG9yZSkgeworICAgICAgICBtX3JlYWR5VG9QYXJzZU1lZGlhU2FtcGxlc1NlbWFwaG9yZS0+
c2lnbmFsKCk7CisgICAgICAgIG1fcmVhZHlUb1BhcnNlTWVkaWFTYW1wbGVzU2VtYXBob3JlID0g
bnVsbHB0cjsKKyAgICB9CisKICAgICBbbV9wYXJzZXIgcHJvdmlkZVBlbmRpbmdNZWRpYURhdGFd
OwogfQogCkBAIC0yMzcsMTIgKzI0MywyMiBAQCBib29sIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akM6OnNob3VsZFByb3ZpZGVNZWRpYWRhdGFGb3JUcmFja0lEKHVpbnQ2NF90IHRyYWNrSQogCiB2
b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OnJlc2V0UGFyc2VyU3RhdGUoKQogeworICAg
IGlmIChtX3JlYWR5VG9QYXJzZU1lZGlhU2FtcGxlc1NlbWFwaG9yZSkgeworICAgICAgICBtX3Jl
YWR5VG9QYXJzZU1lZGlhU2FtcGxlc1NlbWFwaG9yZS0+c2lnbmFsKCk7CisgICAgICAgIG1fcmVh
ZHlUb1BhcnNlTWVkaWFTYW1wbGVzU2VtYXBob3JlID0gbnVsbHB0cjsKKyAgICB9CisKICAgICBt
X3BhcnNlclN0YXRlV2FzUmVzZXQgPSB0cnVlOwogICAgIG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5l
eHRJbml0aWFsaXphdGlvblNlZ21lbnQgPSB0cnVlOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakM6OmludmFsaWRhdGUoKQogeworICAgIGlmIChtX3JlYWR5VG9QYXJzZU1lZGlh
U2FtcGxlc1NlbWFwaG9yZSkgeworICAgICAgICBtX3JlYWR5VG9QYXJzZU1lZGlhU2FtcGxlc1Nl
bWFwaG9yZS0+c2lnbmFsKCk7CisgICAgICAgIG1fcmVhZHlUb1BhcnNlTWVkaWFTYW1wbGVzU2Vt
YXBob3JlID0gbnVsbHB0cjsKKyAgICB9CisKICAgICBbbV9kZWxlZ2F0ZSBpbnZhbGlkYXRlXTsK
ICAgICBtX2RlbGVnYXRlID0gbnVsbHB0cjsKICAgICBtX3BhcnNlciA9IG51bGxwdHI7CkBAIC0y
OTUsNyArMzExLDkgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQYXJzZVN0
cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQogICAgICAgICAgICAgLy8gRklYTUUoMTI1
MTYxKSAgICA6IEFkZCBUZXh0VHJhY2sgc3VwcG9ydAogICAgICAgICB9CiAKLSAgICAgICAgbV9k
aWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFdURk1vdmUoc2VnbWVudCkpOworICAg
ICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soV1RGTW92ZShzZWdtZW50
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIG1fcmVhZHlUb1BhcnNlTWVkaWFTYW1wbGVzU2VtYXBob3JlLT5zaWduYWwoKTsK
KyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKQEAgLTMxMCw2ICszMjgsMTEgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRGYWlsVG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3Io
TlNFcnJvciogZXJyb3IKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlk
ZU1lZGlhRGF0YUZvclRyYWNrSUQodWludDY0X3QgdHJhY2tJRCwgQ01TYW1wbGVCdWZmZXJSZWYg
c2FtcGxlQnVmZmVyLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgdW5zaWduZWQgZmxhZ3MpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKGZsYWdzKTsKKyAgICBpZiAobV9yZWFkeVRvUGFyc2VNZWRpYVNh
bXBsZXNTZW1hcGhvcmUpIHsKKyAgICAgICAgbV9yZWFkeVRvUGFyc2VNZWRpYVNhbXBsZXNTZW1h
cGhvcmUtPndhaXQoKTsKKyAgICAgICAgbV9yZWFkeVRvUGFyc2VNZWRpYVNhbXBsZXNTZW1hcGhv
cmUgPSBudWxscHRyOworICAgIH0KKwogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHN0cm9u
Z1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2FtcGxlQnVmZmVyID0gcmV0YWluUHRyKHNhbXBsZUJ1
ZmZlciksIHRyYWNrSUQsIG1lZGlhVHlwZSA9IG1lZGlhVHlwZV0gewogICAgICAgICBpZiAoIW1f
ZGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKaW5k
ZXggOGIxZWVhNjMwMDdlZDVjNGQwODc0NDZlNzQzYjEzYTRjMWNjMDBiZC4uMWY2MjViM2M3OGU4
M2U1MTE0NDgwMDliYmM0NDk1OGUzNjNhZDRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC05MSw5ICs5MSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlv
bkRhdGFGb3JUcmFja0lEKHVpbnQ2NF90IHRyYWNrSUQpOwogICAgIHZvaWQgZGlkUHJvdmlkZUNv
bnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChSZWY8VWludDhBcnJh
eT4mJiwgdWludDY0X3QgdHJhY2tJRCwgQm94PEJpbmFyeVNlbWFwaG9yZT4pOwogCi0gICAgYm9v
bCBoYXNWaWRlbygpIGNvbnN0OwogICAgIGJvb2wgaGFzU2VsZWN0ZWRWaWRlbygpIGNvbnN0Owot
ICAgIGJvb2wgaGFzQXVkaW8oKSBjb25zdDsKIAogICAgIHZvaWQgdHJhY2tEaWRDaGFuZ2VTZWxl
Y3RlZChWaWRlb1RyYWNrUHJpdmF0ZSYsIGJvb2wgc2VsZWN0ZWQpOwogICAgIHZvaWQgdHJhY2tE
aWRDaGFuZ2VFbmFibGVkKEF1ZGlvVHJhY2tQcml2YXRlJiwgYm9vbCBlbmFibGVkKTsKQEAgLTE0
MCw3ICsxMzgsNyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqLCBSZWY8U291cmNlQnVmZmVyUGFyc2Vy
PiYmKTsKIAogICAgIHVzaW5nIEluaXRpYWxpemF0aW9uU2VnbWVudCA9IFNvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDsKLSAgICB2b2lkIGRpZFBhcnNlSW5p
dGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVudCYmKTsKKyAgICB2b2lkIGRpZFBh
cnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVudCYmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpOwogICAgIHZvaWQgZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJz
aW5nKGludDMyX3QpOwogICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoUmVm
PE1lZGlhU2FtcGxlPiYmLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlw
ZSk7CiAKQEAgLTE1NCw2ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmx1c2goY29uc3Qg
QXRvbVN0cmluZyYgdHJhY2tJRCkgZmluYWw7CiAgICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFJlZjxN
ZWRpYVNhbXBsZT4mJiwgY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkgZmluYWw7CiAgICAgYm9v
bCBpc1JlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkgZmluYWw7
CisgICAgTWVkaWFUaW1lIHRpbWVGdWRnZUZhY3RvcigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQg
c2V0QWN0aXZlKGJvb2wpIGZpbmFsOwogICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBmaW5hbDsK
ICAgICB2b2lkIG5vdGlmeUNsaWVudFdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21T
dHJpbmcmIHRyYWNrSUQpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCA0ZDYxNDdlOTE2NDkyNGY0MmQ0ZGRl
ZjRhNmI2ZjgwYzZlNTJjMzhlLi45MmJlNTAwZDIyMzdmZTAwNWNmNTk0YzhhZTU1MmU0YzQzNjVk
NDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy5tbQpAQCAtMzA4LDEwICszMDgsMTIgQEAgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMKIAogICAgIHNvdXJjZUJ1ZmZlck1hcCgpLmFkZChtX21hcElELCBtYWtlV2Vha1B0cigqdGhp
cykpOwogCi0gICAgbV9wYXJzZXItPnNldERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJh
Y2soW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChJbml0aWFsaXphdGlvblNlZ21lbnQm
JiBzZWdtZW50KSBtdXRhYmxlIHsKKyAgICBtX3BhcnNlci0+c2V0RGlkUGFyc2VJbml0aWFsaXph
dGlvbkRhdGFDYWxsYmFjayhbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKElu
aXRpYWxpemF0aW9uU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7Ci0gICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5kaWRQ
YXJzZUluaXRpYWxpemF0aW9uRGF0YShXVEZNb3ZlKHNlZ21lbnQpKTsKKyAgICAgICAgaWYgKCF3
ZWFrVGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBkaWRQYXJzZUluaXRpYWxp
emF0aW9uRGF0YShXVEZNb3ZlKHNlZ21lbnQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAgICAgfSk7CiAKICAgICBtX3BhcnNlci0+c2V0RGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJz
aW5nQ2FsbGJhY2soW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChpbnQzMl90IGVycm9y
Q29kZSkgbXV0YWJsZSB7CkBAIC0zNDQsNyArMzQ2LDcgQEAgU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakM6On5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQygpCiAgICAgICAgIG1faGFzU2Vzc2lv
blNlbWFwaG9yZS0+c2lnbmFsKCk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVudCYmIHNl
Z21lbnQpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxp
emF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKIApAQCAtMzg0LDcgKzM4Niw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVu
CiAgICAgaWYgKG1fbWVkaWFTb3VyY2UpCiAgICAgICAgIG1fbWVkaWFTb3VyY2UtPnBsYXllcigp
LT5jaGFyYWN0ZXJpc3RpY3NDaGFuZ2VkKCk7CiAKLSAgICBkaWRSZWNlaXZlSW5pdGlhbGl6YXRp
b25TZWdtZW50KHNlZ21lbnQpOworICAgIGRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQo
V1RGTW92ZShzZWdtZW50KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNp
bmcoaW50MzJfdCBjb2RlKQpAQCAtNTc3LDggKzU3OSw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OmFwcGVuZENvbXBsZXRlZCgpCiAgICAgaWYgKG1fcGFyc2luZ1N1Y2NlZWRl
ZCAmJiBtX21lZGlhU291cmNlKQogICAgICAgICBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c2V0
TG9hZGluZ1Byb2dyZXNzc2VkKHRydWUpOwogCi0gICAgaWYgKG1fY2xpZW50KQotICAgICAgICBt
X2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKG1fcGFyc2luZ1N1Y2Nl
ZWRlZCA/IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdDo6QXBwZW5kU3Vj
Y2VlZGVkIDogU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0OjpQYXJzaW5n
RmFpbGVkKTsKKyAgICBTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmRDb21wbGV0ZWQobV9wYXJz
aW5nU3VjY2VlZGVkLCBtX21lZGlhU291cmNlID8gbV9tZWRpYVNvdXJjZS0+aXNFbmRlZCgpIDog
dHJ1ZSk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFib3J0KCkKQEAg
LTY4MSwyMSArNjgyLDExIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNldFJl
YWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0CiAgICAgICAgIG1fbWVk
aWFTb3VyY2UtPnBsYXllcigpLT5zZXRSZWFkeVN0YXRlKHJlYWR5U3RhdGUpOwogfQogCi1ib29s
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpoYXNWaWRlbygpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fY2xpZW50ICYmIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlSGFzVmlkZW8oKTsK
LX0KLQogYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6aGFzU2VsZWN0ZWRWaWRlbygp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZW5hYmxlZFZpZGVvVHJhY2tJRCAhPSBub3RGb3VuZDsK
IH0KIAotYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6aGFzQXVkaW8oKSBjb25zdAot
ewotICAgIHJldHVybiBtX2NsaWVudCAmJiBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUhh
c0F1ZGlvKCk7Ci19Ci0KIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlk
Q2hhbmdlU2VsZWN0ZWQoVmlkZW9UcmFja1ByaXZhdGUmIHRyYWNrLCBib29sIHNlbGVjdGVkKQog
ewogICAgIGF1dG8gdHJhY2tJRCA9IHRyYWNrLmlkKCkuc3RyaW5nKCkudG9VSW50NjQoKTsKQEAg
LTEwOTEsNiArMTA4MiwxNCBAQCBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjppc1Jl
YWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRAogICAgIHJldHVybiBm
YWxzZTsKIH0KIAorTWVkaWFUaW1lIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0aW1lRnVk
Z2VGYWN0b3IoKSBjb25zdAoreworICAgIGlmIChtX21lZGlhU291cmNlKQorICAgICAgICByZXR1
cm4gbV9tZWRpYVNvdXJjZS0+dGltZUZ1ZGdlRmFjdG9yKCk7CisKKyAgICByZXR1cm4gU291cmNl
QnVmZmVyUHJpdmF0ZTo6dGltZUZ1ZGdlRmFjdG9yKCk7Cit9CisKIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OnNldEFjdGl2ZShib29sIGlzQWN0aXZlKQogewogICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUiwgaXNBY3RpdmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAppbmRleCAw
ZGM4MWYwNmQyN2RjZDA5NzM5ZDA3ZTQ1MDc1OGI2MzYyOWQ3MWM3Li5lMTBjZGFiYzQ3YTQ0NWQz
MWNhOTBmOWJmNDgxMmZmYzRhMDMxMTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApAQCAtMzAs
NiArMzAsNyBAQAogI2luY2x1ZGUgIk1lZGlhUGxheWVyRW51bXMuaCIKICNpbmNsdWRlICJTb3Vy
Y2VCdWZmZXJQcml2YXRlQ2xpZW50LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDhB
cnJheS5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtNjksNyArNzAsNyBAQCBwdWJs
aWM6CiAKICAgICAvLyBXaWxsIGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgdXNp
bmcgSW5pdGlhbGl6YXRpb25TZWdtZW50ID0gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5p
dGlhbGl6YXRpb25TZWdtZW50OwotICAgIHVzaW5nIERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRh
Q2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYpPjsK
KyAgICB1c2luZyBEaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrID0gV1RGOjpGdW5j
dGlvbjx2b2lkKEluaXRpYWxpemF0aW9uU2VnbWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpPjsKICAgICB2b2lkIHNldERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2so
RGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgIHsKICAg
ICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDg0YmM1NzRkYzBm
MDNmOGZmYjQzNjg5MGZjNGExYTVkZWFhOWU2NDEuLjhmOGNmMTkwYzQxOTNjODMxZTVkNjgxODFl
Njc3Yjg0YTQ4NzM0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC01
NDYsMTEgKzU0NiwxNiBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmFwcGVuZERhdGEo
VmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYgYnVmZmVyLCBBcHBlbmRGbAogICAgICAgICBpZiAobV9k
aWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjaykKICAgICAgICAgICAgIG1fZGlk
RW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2soY29kZSk7CiAgICAgfSk7CisKKyAg
ICBtX3JlYWR5VG9QYXJzZU1lZGlhU2FtcGxlc1NlbWFwaG9yZSA9IEJveDxCaW5hcnlTZW1hcGhv
cmU+OjpjcmVhdGUoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpmbHVzaFBl
bmRpbmdNZWRpYURhdGEoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKG1fcmVh
ZHlUb1BhcnNlTWVkaWFTYW1wbGVzU2VtYXBob3JlKSB7CisgICAgICAgIG1fcmVhZHlUb1BhcnNl
TWVkaWFTYW1wbGVzU2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICAgICAgbV9yZWFkeVRvUGFyc2VN
ZWRpYVNhbXBsZXNTZW1hcGhvcmUgPSBudWxscHRyOworICAgIH0KIH0KIAogdm9pZCBTb3VyY2VC
dWZmZXJQYXJzZXJXZWJNOjpzZXRTaG91bGRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChib29s
LCB1aW50NjRfdCkKQEAgLTU2Nyw2ICs1NzIsMTIgQEAgYm9vbCBTb3VyY2VCdWZmZXJQYXJzZXJX
ZWJNOjpzaG91bGRQcm92aWRlTWVkaWFkYXRhRm9yVHJhY2tJRCh1aW50NjRfdCkKIHZvaWQgU291
cmNlQnVmZmVyUGFyc2VyV2ViTTo6cmVzZXRQYXJzZXJTdGF0ZSgpCiB7CiAgICAgSU5GT19MT0df
SUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CisKKyAgICBpZiAobV9yZWFkeVRvUGFyc2VNZWRp
YVNhbXBsZXNTZW1hcGhvcmUpIHsKKyAgICAgICAgbV9yZWFkeVRvUGFyc2VNZWRpYVNhbXBsZXNT
ZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICBtX3JlYWR5VG9QYXJzZU1lZGlhU2FtcGxlc1Nl
bWFwaG9yZSA9IG51bGxwdHI7CisgICAgfQorCiAgICAgbV9wYXJzZXItPkRpZFNlZWsoKTsKICAg
ICBtX3N0YXRlID0gU3RhdGU6Ok5vbmU7CiAgICAgbV90cmFja3MuY2xlYXIoKTsKQEAgLTU3OCw2
ICs1ODksMTIgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpyZXNldFBhcnNlclN0YXRl
KCkKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aW52YWxpZGF0ZSgpCiB7CiAgICAgSU5G
T19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJRklFUik7CisKKyAgICBpZiAobV9yZWFkeVRvUGFy
c2VNZWRpYVNhbXBsZXNTZW1hcGhvcmUpIHsKKyAgICAgICAgbV9yZWFkeVRvUGFyc2VNZWRpYVNh
bXBsZXNTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICBtX3JlYWR5VG9QYXJzZU1lZGlhU2Ft
cGxlc1NlbWFwaG9yZSA9IG51bGxwdHI7CisgICAgfQorCiAgICAgbV9wYXJzZXIgPSBudWxscHRy
OwogICAgIG1fdHJhY2tzLmNsZWFyKCk7CiAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnQgPSBu
dWxscHRyOwpAQCAtNzE2LDggKzczMywxMCBAQCBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6T25DbHVzdGVyQmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgYwogICAg
ICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CiAKICAgICBpZiAo
bV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCAmJiBtX2RpZFBhcnNlSW5pdGlhbGl6
YXRpb25EYXRhQ2FsbGJhY2spIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpbml0aWFsaXphdGlvblNlZ21lbnQgPSBXVEZN
b3ZlKCptX2luaXRpYWxpemF0aW9uU2VnbWVudCldICgpIG11dGFibGUgewotICAgICAgICAgICAg
bV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFdURk1vdmUoaW5pdGlhbGl6YXRp
b25TZWdtZW50KSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5pdGlhbGl6YXRpb25TZWdtZW50ID0gV1RGTW92ZSgqbV9p
bml0aWFsaXphdGlvblNlZ21lbnQpXSgpIG11dGFibGUgeworICAgICAgICAgICAgbV9kaWRQYXJz
ZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFdURk1vdmUoaW5pdGlhbGl6YXRpb25TZWdtZW50
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgICAgICBtX3JlYWR5VG9QYXJzZU1lZGlhU2FtcGxlc1NlbWFwaG9yZS0+c2lnbmFs
KCk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfQogICAgIG1faW5pdGlhbGl6
YXRpb25TZWdtZW50RW5jb3VudGVyZWQgPSBmYWxzZTsKQEAgLTEyMDMsNiArMTIyMiwxMSBAQCB3
ZWJtOjpTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25GcmFtZShjb25zdCBGcmFtZU1l
dGFkYXRhJiBtZXRhZGF0YSwgUmVhZAogCiAgICAgICAgIGF1dG8gdHJhY2tJRCA9IHRyYWNrLnRy
YWNrX3VpZC52YWx1ZSgpOwogCisgICAgICAgIGlmIChtX3JlYWR5VG9QYXJzZU1lZGlhU2FtcGxl
c1NlbWFwaG9yZSkgeworICAgICAgICAgICAgbV9yZWFkeVRvUGFyc2VNZWRpYVNhbXBsZXNTZW1h
cGhvcmUtPndhaXQoKTsKKyAgICAgICAgICAgIG1fcmVhZHlUb1BhcnNlTWVkaWFTYW1wbGVzU2Vt
YXBob3JlID0gbnVsbHB0cjsKKyAgICAgICAgfQorCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2FtcGxlQnVmZmVyID0gV1RG
TW92ZShzYW1wbGVCdWZmZXIpLCB0cmFja0lEXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlm
ICghbV9kaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2spCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCmluZGV4IDQ1YmQ2OWZmYjQ3MTJiZTUyNDVl
NjI2Y2ZiN2NkZTk4N2U4YWJhY2YuLmRlZDI5MjRlNDhhZDM5NTA4Y2E3MmEzYTBhODYzYmMwOWIz
NTJjODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlIDxjb21tb24vdnA5X2hlYWRlcl9wYXJzZXIuaD4KICNpbmNsdWRlIDx3ZWJtL2Nh
bGxiYWNrLmg+CiAjaW5jbHVkZSA8d2VibS9zdGF0dXMuaD4KKyNpbmNsdWRlIDx3dGYvQm94Lmg+
CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgog
I2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KQEAgLTM4LDYgKzM5LDcgQEAKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFw
aG9yZS5oPgogCiB0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVC
dWZmZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9u
KiBDTUZvcm1hdERlc2NyaXB0aW9uUmVmOwpAQCAtMTQxLDYgKzE0Myw4IEBAIHByaXZhdGU6CiAg
ICAgT3B0aW9uYWw8QmxvY2tWYXJpYW50PiBtX2N1cnJlbnRCbG9jazsKICAgICBPcHRpb25hbDx1
aW50NjRfdD4gbV9yZXdpbmRUb1Bvc2l0aW9uOwogCisgICAgQm94PEJpbmFyeVNlbWFwaG9yZT4g
bV9yZWFkeVRvUGFyc2VNZWRpYVNhbXBsZXNTZW1hcGhvcmU7CisKICNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKICAgICBSZWZQdHI8Y29uc3QgV1RGOjpMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNv
bnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllciB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRp
YVNvdXJjZVByaXZhdGUuY3BwCmluZGV4IDliNGQxZjgyMTAwMWNjNTliZjg3MDhhY2Y3ODI1NmEy
OTFjNTZmMWMuLjk3OWE4MWQzYjkwY2I2NjBhZTc3YmFhYjI4ZGEwZWM5NmNiMzkyMDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlh
U291cmNlUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmNwcApAQCAtOTMsNyArOTMsNyBAQCBzdGQ6
OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpi
dWZmZXJlZCgpCiAgICAgcmV0dXJuIG1fY2xpZW50LT5idWZmZXJlZCgpOwogfQogCi12b2lkIE1v
Y2tNZWRpYVNvdXJjZVByaXZhdGU6OmR1cmF0aW9uQ2hhbmdlZCgpCit2b2lkIE1vY2tNZWRpYVNv
dXJjZVByaXZhdGU6OmR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmKQogewogICAgIG1f
cGxheWVyLnVwZGF0ZUR1cmF0aW9uKGR1cmF0aW9uKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNv
dXJjZVByaXZhdGUuaAppbmRleCA3YTY5M2FlZDM1Y2E2YzljOTM2OTEwMmFhNTUyNGZlMzBmYWQ0
NDAxLi5lM2Q5ODA3YzZiMTUyMWZjOWIwNGU2NGIxNjlmNWVlZGQ0NjQ1MTk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJj
ZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNl
L01vY2tNZWRpYVNvdXJjZVByaXZhdGUuaApAQCAtODAsOCArODAsOSBAQCBwcml2YXRlOgogCiAg
ICAgLy8gTWVkaWFTb3VyY2VQcml2YXRlIE92ZXJyaWRlcwogICAgIEFkZFN0YXR1cyBhZGRTb3Vy
Y2VCdWZmZXIoY29uc3QgQ29udGVudFR5cGUmLCBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZT4m
KSBvdmVycmlkZTsKLSAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZv
aWQgZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpIG92ZXJyaWRlOwogICAgIHZvaWQg
bWFya0VuZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVzKSBvdmVycmlkZTsKKyAgICBib29sIGlz
RW5kZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzRW5kZWQ7IH0KICAgICB2b2lkIHVu
bWFya0VuZE9mU3RyZWFtKCkgb3ZlcnJpZGU7CiAgICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUg
cmVhZHlTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGUuY3BwCmluZGV4IDJmYzkwZDM1NGY2Yjk2N2M1Yzk1MDI3YjIyM2U0YTM1NzgwMGYz
MGEuLmFkNDRlZmJkYWE4YTFiYTMzYTJmNzE1NTg4MTFlMzJkYjBjMTUzYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3Vy
Y2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgdm9pZCBN
b2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRh
dGEpCiAKICAgICB3aGlsZSAobV9pbnB1dEJ1ZmZlci5zaXplKCkgJiYgcmVzdWx0ID09IFNvdXJj
ZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdDo6QXBwZW5kU3VjY2VlZGVkKSB7CiAg
ICAgICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShtX2lucHV0QnVmZmVyLmRh
dGEoKSwgbV9pbnB1dEJ1ZmZlci5zaXplKCkpOwotICAgICAgICBzaXplX3QgYm94TGVuZ3RoID0g
TW9ja0JveDo6cGVla0xlbmd0aChidWZmZXIucHRyKCkpOworICAgICAgICB1aW50NjRfdCBib3hM
ZW5ndGggPSBNb2NrQm94OjpwZWVrTGVuZ3RoKGJ1ZmZlci5wdHIoKSk7CiAgICAgICAgIGlmIChi
b3hMZW5ndGggPiBidWZmZXItPmJ5dGVMZW5ndGgoKSkKICAgICAgICAgICAgIGJyZWFrOwogCkBA
IC0xOTEsNyArMTkxLDcgQEAgdm9pZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2
ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBNb2NrSW5pdGlhbGkKICAgICAgICAgfQogICAg
IH0KIAotICAgIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNl
Z21lbnQoc2VnbWVudCk7CisgICAgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZUluaXRp
YWxpemF0aW9uU2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpLCBbXSgpIHsgfSk7CiB9CiAKIHZvaWQg
TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVTYW1wbGUoY29uc3QgTW9ja1NhbXBs
ZUJveCYgc2FtcGxlQm94KQpAQCAtMjQ5LDcgKzI0OSw3IEBAIE1lZGlhVGltZSBNb2NrU291cmNl
QnVmZmVyUHJpdmF0ZTo6bWluaW11bVVwY29taW5nUHJlc2VudGF0aW9uVGltZUZvclRyYWNrSUQo
Y29uCiAgICAgcmV0dXJuIG1fbWluaW11bVVwY29taW5nUHJlc2VudGF0aW9uVGltZTsKIH0KIAot
dm9pZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JUcmFj
a0lEKGNvbnN0IEF0b21TdHJpbmcmLCBzaXplX3QgbWF4UXVldWVEZXB0aCkKK3ZvaWQgTW9ja1Nv
dXJjZUJ1ZmZlclByaXZhdGU6OnNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRChjb25zdCBB
dG9tU3RyaW5nJiwgdWludDY0X3QgbWF4UXVldWVEZXB0aCkKIHsKICAgICBtX21heFF1ZXVlRGVw
dGggPSBtYXhRdWV1ZURlcHRoOwogfQpAQCAtMzIyLDE2ICszMjIsNiBAQCB2b2lkIE1vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlOjplbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUs
IGNvbnN0IEF0bwogICAgIG1fZW5xdWV1ZWRTYW1wbGVzLmFwcGVuZCh0b1N0cmluZyhzYW1wbGUu
Z2V0KCkpKTsKIH0KIAotYm9vbCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6aGFzVmlkZW8oKSBj
b25zdAotewotICAgIHJldHVybiBtX2NsaWVudCAmJiBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJp
dmF0ZUhhc1ZpZGVvKCk7Ci19Ci0KLWJvb2wgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6Omhhc0F1
ZGlvKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jbGllbnQgJiYgbV9jbGllbnQtPnNvdXJjZUJ1
ZmZlclByaXZhdGVIYXNBdWRpbygpOwotfQotCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiBX
VEZMb2dDaGFubmVsJiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6bG9nQ2hhbm5lbCgpIGNvbnN0
CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNl
L01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKaW5kZXggYjZjNTQ3ZGQ5NWMx
ZjZiMGJkZGQyZTQxMWFmMTQyYjM5OGZkZmZlNS4uOGIyYTEzODk0NmMyOGYyZjNlN2RlYmZlNzM2
NWNjYzdiYWZiYTNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9t
ZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAt
NDYsOSArNDYsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyTWVkaWFTb3VyY2UoKSB7IG1f
bWVkaWFTb3VyY2UgPSBudWxscHRyOyB9CiAKLSAgICBib29sIGhhc1ZpZGVvKCkgY29uc3Q7Ci0g
ICAgYm9vbCBoYXNBdWRpbygpIGNvbnN0OwotCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1vY2tT
b3VyY2VCdWZmZXJQcml2YXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqKTsKIApAQCAtNzUsNyAr
NzIsNyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFN0cmluZz4gZW5xdWV1ZWRTYW1wbGVzRm9y
VHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CiAgICAgTWVkaWFUaW1lIG1pbmltdW1V
cGNvbWluZ1ByZXNlbnRhdGlvblRpbWVGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmKSBmaW5h
bDsKLSAgICB2b2lkIHNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRChjb25zdCBBdG9tU3Ry
aW5nJiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIHNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJh
Y2tJRChjb25zdCBBdG9tU3RyaW5nJiwgdWludDY0X3QpIGZpbmFsOwogCiAgICAgdm9pZCBkaWRS
ZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IE1vY2tJbml0aWFsaXphdGlvbkJveCYp
OwogICAgIHZvaWQgZGlkUmVjZWl2ZVNhbXBsZShjb25zdCBNb2NrU2FtcGxlQm94Jik7CkBAIC05
NCw3ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzQWN0aXZlIHsgZmFsc2UgfTsKICAg
ICBNZWRpYVRpbWUgbV9taW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lOwogICAgIFZlY3Rv
cjxTdHJpbmc+IG1fZW5xdWV1ZWRTYW1wbGVzOwotICAgIE9wdGlvbmFsPHNpemVfdD4gbV9tYXhR
dWV1ZURlcHRoOworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtX21heFF1ZXVlRGVwdGg7CiAgICAg
VmVjdG9yPGNoYXI+IG1faW5wdXRCdWZmZXI7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Ry
YWNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlv
VHJhY2tQcm94eS5jcHAKaW5kZXggOTNlMmYyN2Q4MmU4ZjkyNGY3ODVjNTBhNjUwNTA1YWRiNmEz
NjcyNi4uZWFlOTNlNzNhYjBjNTc2MzgwZDQ1OGM3OTQ0OTFhMDY2MTBiOTdiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQ
cm94eS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlv
biYgUmVtb3RlQXVkaW9UcmFja1Byb3h5Ojpjb25maWd1cmF0aW9uKCkKIHsKICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbj4gY29uZmlndXJh
dGlvbjsKIAotICAgIGNvbmZpZ3VyYXRpb24tPmlkZW50aWZpZXIgPSBtX3RyYWNrUHJpdmF0ZS0+
aWQoKTsKKyAgICBjb25maWd1cmF0aW9uLT50cmFja0lkID0gbV90cmFja1ByaXZhdGUtPmlkKCk7
CiAgICAgY29uZmlndXJhdGlvbi0+bGFiZWwgPSBtX3RyYWNrUHJpdmF0ZS0+bGFiZWwoKTsKICAg
ICBjb25maWd1cmF0aW9uLT5sYW5ndWFnZSA9IG1fdHJhY2tQcml2YXRlLT5sYW5ndWFnZSgpOwog
ICAgIGNvbmZpZ3VyYXRpb24tPnRyYWNrSW5kZXggPSBtX3RyYWNrUHJpdmF0ZS0+dHJhY2tJbmRl
eCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4IGMzYjA3MzRhNGVmOThkMmE3ZTczOTBlYTk4MDNl
M2UwMzZiN2VjNTIuLjQyZWU3OWJiMDZlNDc1MjVkYWIzNTQyNmQzYWRiYTE1OGE2M2ExYzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5jcHAKQEAgLTEzNCwxMCArMTM0LDE0IEBAIHZvaWQgUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTo6bG9hZChVUkwmJiB1cmwsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246Okhh
bmRsZT4mCiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotdm9pZCBSZW1vdGVNZWRpYVBs
YXllclByb3h5Ojpsb2FkTWVkaWFTb3VyY2UoVVJMJiYgdXJsLCBjb25zdCBXZWJDb3JlOjpDb250
ZW50VHlwZSYgY29udGVudFR5cGUsIFJlbW90ZU1lZGlhU291cmNlSWRlbnRpZmllciBtZWRpYVNv
dXJjZUlkZW50aWZpZXIpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmxvYWRNZWRpYVNv
dXJjZShVUkwmJiB1cmwsIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiBjb250ZW50VHlwZSwg
UmVtb3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyIG1lZGlhU291cmNlSWRlbnRpZmllciwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mJik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9tZWRpYVNvdXJjZVByb3h5ID0gYWRvcHRSZWYoKm5l
dyBSZW1vdGVNZWRpYVNvdXJjZVByb3h5KG1fbWFuYWdlci5ncHVDb25uZWN0aW9uVG9XZWJQcm9j
ZXNzKCksIG1lZGlhU291cmNlSWRlbnRpZmllciwgKnRoaXMpKTsKICAgICBtX3BsYXllci0+bG9h
ZCh1cmwsIGNvbnRlbnRUeXBlLCBtX21lZGlhU291cmNlUHJveHkuZ2V0KCkpOworCisgICAgUmVt
b3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CisgICAgZ2V0Q29uZmln
dXJhdGlvbihjb25maWd1cmF0aW9uKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKGNv
bmZpZ3VyYXRpb24pKTsKIH0KICNlbmRpZgogCkBAIC03NTksNyArNzYzLDggQEAgdm9pZCBSZW1v
dGVNZWRpYVBsYXllclByb3h5Ojp1cGRhdGVDYWNoZWRTdGF0ZSgpCiAKICAgICBpZiAobV9idWZm
ZXJlZENoYW5nZWQpIHsKICAgICAgICAgbV9idWZmZXJlZENoYW5nZWQgPSBmYWxzZTsKLSAgICAg
ICAgbV9jYWNoZWRTdGF0ZS5idWZmZXJlZFJhbmdlcyA9ICptX3BsYXllci0+YnVmZmVyZWQoKTsK
KyAgICAgICAgaWYgKG1fZW5naW5lSWRlbnRpZmllciAhPSBNZWRpYVBsYXllckVudW1zOjpNZWRp
YUVuZ2luZUlkZW50aWZpZXI6OkFWRm91bmRhdGlvbk1TRSkKKyAgICAgICAgICAgIG1fY2FjaGVk
U3RhdGUuYnVmZmVyZWRSYW5nZXMgPSAqbV9wbGF5ZXItPmJ1ZmZlcmVkKCk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkuaAppbmRleCBiODI0NzcxM2FkYWYxYzQ1M2VhNGM2NTgxZGFkNDNiYjFlMGMy
MDY2Li5hZTZhZDhiNDYwYjlmNmJkYjNiMDA0MGY3ODBiZjE5NWY0NDliY2YxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclBy
b3h5LmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxvYWQoVVJMJiYs
IE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mJiwgY29uc3QgV2ViQ29yZTo6Q29u
dGVudFR5cGUmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZU1l
ZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4mJik7CiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkK
LSAgICB2b2lkIGxvYWRNZWRpYVNvdXJjZShVUkwmJiwgY29uc3QgV2ViQ29yZTo6Q29udGVudFR5
cGUmLCBSZW1vdGVNZWRpYVNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgbG9hZE1lZGlhU291
cmNlKFVSTCYmLCBjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYsIFJlbW90ZU1lZGlhU291cmNl
SWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBsYXllckNvbmZp
Z3VyYXRpb24mJik+JiYpOwogI2VuZGlmCiAgICAgdm9pZCBjYW5jZWxMb2FkKCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMDhlYTE1Y2M2NmIyZWE5ZDA3MGRhNmJi
NzFmODhiNzQ1MWNmMDE1OC4uMmNkZTA4MDQ5YWRlZGI0YzYxNjk1Njk0YjBiODliNWVmMGZhMTAz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTI4LDcgKzI4LDcgQEAg
bWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKIAogICAg
IExvYWQoVVJMIHVybCwgT3B0aW9uYWw8V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+
IHNhbmRib3hFeHRlbnNpb24sIFdlYkNvcmU6OkNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlLCBTdHJp
bmcga2V5U3lzdGVtKSAtPiAoc3RydWN0IFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1
cmF0aW9uIHBsYXllckNvbmZpZ3VyYXRpb24pIEFzeW5jCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJD
RSkKLSAgICBMb2FkTWVkaWFTb3VyY2UoVVJMIHVybCwgV2ViQ29yZTo6Q29udGVudFR5cGUgY29u
dGVudFR5cGUsIFdlYktpdDo6UmVtb3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyIG1lZGlhU291cmNl
SWRlbnRpZmllcikgU3luY2hyb25vdXMKKyAgICBMb2FkTWVkaWFTb3VyY2UoVVJMIHVybCwgV2Vi
Q29yZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUsIFdlYktpdDo6UmVtb3RlTWVkaWFTb3VyY2VJ
ZGVudGlmaWVyIG1lZGlhU291cmNlSWRlbnRpZmllcikgLT4gKHN0cnVjdCBXZWJLaXQ6OlJlbW90
ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiBwbGF5ZXJDb25maWd1cmF0aW9uKSBBc3luYwogI2Vu
ZGlmCiAgICAgQ2FuY2VsTG9hZCgpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmNwcAppbmRleCA0OTliZDYxYzJm
NzgyMjIzZmEzOGZjOTdiMTgyZmE2ZDJiOTM4MWRlLi4yZTQ4MmRlYjY1ZGYzNjRkYWZjOTQ3Y2Vl
MmI3NTQ1ZGUzM2U4YmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuY3BwCkBAIC02MSwxMyArNjEsMTIgQEAg
dm9pZCBSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpzZXRQcml2YXRlQW5kT3BlbihSZWY8TWVkaWFT
b3VyY2VQcml2YXRlPiYmIG1lZGlhU28KIAogTWVkaWFUaW1lIFJlbW90ZU1lZGlhU291cmNlUHJv
eHk6OmR1cmF0aW9uKCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVy
biB7IH07CisgICAgcmV0dXJuIG1fZHVyYXRpb247CiB9CiAKIHN0ZDo6dW5pcXVlX3B0cjxQbGF0
Zm9ybVRpbWVSYW5nZXM+IFJlbW90ZU1lZGlhU291cmNlUHJveHk6OmJ1ZmZlcmVkKCkgY29uc3QK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
IHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIH0KIApAQCAtMTEyLDYg
KzExMSwyMiBAQCB2b2lkIFJlbW90ZU1lZGlhU291cmNlUHJveHk6OmFkZFNvdXJjZUJ1ZmZlcihj
b25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYgY29udGVudAogICAgIGNhbGxiYWNrKHN0YXR1cywg
cmVtb3RlU291cmNlSWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgUmVtb3RlTWVkaWFTb3VyY2VQcm94
eTo6ZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24pCit7CisgICAgaWYg
KG1fZHVyYXRpb24gPT0gZHVyYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1fZHVyYXRp
b24gPSBkdXJhdGlvbjsKKyAgICBpZiAobV9wcml2YXRlKQorICAgICAgICBtX3ByaXZhdGUtPmR1
cmF0aW9uQ2hhbmdlZChkdXJhdGlvbik7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTb3VyY2VQcm94
eTo6c2V0UmVhZHlTdGF0ZShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpSZWFkeVN0YXRlIHJl
YWR5U3RhdGUpCit7CisgICAgaWYgKG1fcHJpdmF0ZSkKKyAgICAgICAgbV9wcml2YXRlLT5zZXRS
ZWFkeVN0YXRlKHJlYWR5U3RhdGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQ
cm94eS5oCmluZGV4IDU5NjhjN2JiZDE4OWNkNDc5ZWY0YWVhYjRkNDQ5OTUzM2ZkM2Q2NWIuLjk1
OTM0NDlkM2I1ZTVjZmVkOTZiNTE1ZTgxN2UwM2RhMGNjYTA4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaApA
QCAtNzYsMTcgKzc2LDIxIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBJUEM6Ok1lc3Nh
Z2VSZWNlaXZlcgotICAgIC8vIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVT
eW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCi0gICAgdXNpbmcgQWRkU291cmNlQnVmZmVyQ2Fs
bGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0
ZTo6QWRkU3RhdHVzLCBPcHRpb25hbDxSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyPiByZW1v
dGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyKT47CisgICAgdXNpbmcgQWRkU291cmNlQnVmZmVyQ2Fs
bGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0
ZTo6QWRkU3RhdHVzLCBPcHRpb25hbDxSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyPik+Owog
ICAgIHZvaWQgYWRkU291cmNlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiwgQWRk
U291cmNlQnVmZmVyQ2FsbGJhY2smJik7CisgICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoY29uc3Qg
TWVkaWFUaW1lJik7CisgICAgdm9pZCBzZXRSZWFkeVN0YXRlKFdlYkNvcmU6Ok1lZGlhUGxheWVy
RW51bXM6OlJlYWR5U3RhdGUpOwogCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9j
b25uZWN0aW9uVG9XZWJQcm9jZXNzOwogICAgIFJlbW90ZU1lZGlhU291cmNlSWRlbnRpZmllciBt
X2lkZW50aWZpZXI7CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZT4gbV9w
cml2YXRlOwogICAgIFdlYWtQdHI8UmVtb3RlTWVkaWFQbGF5ZXJQcm94eT4gbV9yZW1vdGVNZWRp
YVBsYXllclByb3h5OwogCisgICAgTWVkaWFUaW1lIG1fZHVyYXRpb247CisKICAgICBWZWN0b3I8
UmVmUHRyPFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Pj4gbV9zb3VyY2VCdWZmZXJzOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291
cmNlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFTb3VyY2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBjYTZiNzUyZDc3MDYwZGVjY2I5
ZGMzYmM3OTY0ODlmNGVjOTIwZGFkLi5kOTk5MTI2ODhlYmIwZDU5YWRjZGI1MzdjZTgzNWVmZTc5
NmU5ZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFTb3VyY2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjcsNiArMjcs
OCBAQAogCiBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVNvdXJjZVByb3h5IE5vdFJlZkNvdW50ZWQg
ewogICAgIEFkZFNvdXJjZUJ1ZmZlcihXZWJDb3JlOjpDb250ZW50VHlwZSBjb250ZW50VHlwZSkg
LT4gKGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBz
dGF0dXMsIE9wdGlvbmFsPFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcj4gcmVt
b3RlU291cmNlQnVmZmVySWRlbnRpZmllcikgU3luY2hyb25vdXMKKyAgICBEdXJhdGlvbkNoYW5n
ZWQoTWVkaWFUaW1lIGR1cmF0aW9uKQorICAgIFNldFJlYWR5U3RhdGUoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXJFbnVtczo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKQogfQogCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVy
UHJveHkuY3BwCmluZGV4IDI2NWI3M2I2YTRkZjM1M2Y0NTNkYjcyM2NjMzI5OGJjNzg1YjJjNzQu
Ljg0NzMzZmMwYWI0OWI2MzU1NzcxOTBhOGJhZTkyZWRjZGI4NjFmZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclBy
b3h5LmNwcApAQCAtMzQsNyArMzQsOSBAQAogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxheWVyUHJv
eHkuaCIKICNpbmNsdWRlICJSZW1vdGVTb3VyY2VCdWZmZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5j
bHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8V2Vi
Q29yZS9NZWRpYURlc2NyaXB0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRl
ZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1UaW1lUmFuZ2VzLmg+CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCkBAIC01NCwxNCArNTYsMTYgQEAgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6
OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIGNvbm4K
IHsKICAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZVJlY2VpdmVyTWFwKCkuYWRk
TWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6bWVzc2Fn
ZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOwogICAgIG1f
c291cmNlQnVmZmVyUHJpdmF0ZS0+c2V0Q2xpZW50KHRoaXMpOworICAgIG1fc291cmNlQnVmZmVy
UHJpdmF0ZS0+c2V0SXNBdHRhY2hlZCh0cnVlKTsKIH0KIAogUmVtb3RlU291cmNlQnVmZmVyUHJv
eHk6On5SZW1vdGVTb3VyY2VCdWZmZXJQcm94eSgpCiB7CisgICAgbV9zb3VyY2VCdWZmZXJQcml2
YXRlLT5zZXRJc0F0dGFjaGVkKGZhbHNlKTsKICAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
bWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1v
dGVTb3VyY2VCdWZmZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIu
dG9VSW50NjQoKSk7CiB9CiAKLXZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXRpYWxp
emF0aW9uU2VnbWVudCYgc2VnbWVudCkKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNv
dXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxp
emF0aW9uU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fcmVtb3RlTWVkaWFQbGF5ZXJQcm94eSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNzEsMTkgKzc1LDM0IEBAIHZvaWQgUmVtb3RlU291cmNlQnVmZmVy
UHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50
CiAgICAgZm9yIChhdXRvJiBhdWRpb1RyYWNrSW5mbyA6IHNlZ21lbnQuYXVkaW9UcmFja3MpIHsK
ICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gbV9yZW1vdGVNZWRpYVBsYXllclByb3h5LT5hZGRS
ZW1vdGVBdWRpb1RyYWNrUHJveHkoKmF1ZGlvVHJhY2tJbmZvLnRyYWNrKTsKICAgICAgICAgc2Vn
bWVudEluZm8uYXVkaW9UcmFja3MuYXBwZW5kKHsgTWVkaWFEZXNjcmlwdGlvbkluZm8oKmF1ZGlv
VHJhY2tJbmZvLmRlc2NyaXB0aW9uKSwgaWRlbnRpZmllciB9KTsKKworICAgICAgICBBU1NFUlQo
IW1fdHJhY2tJZHMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgICAgICBBU1NFUlQoIW1fbWVk
aWFEZXNjcmlwdGlvbnMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgICAgICBtX3RyYWNrSWRz
LmFkZChpZGVudGlmaWVyLCBhdWRpb1RyYWNrSW5mby50cmFjay0+aWQoKSk7CisgICAgICAgIG1f
bWVkaWFEZXNjcmlwdGlvbnMuYWRkKGlkZW50aWZpZXIsICphdWRpb1RyYWNrSW5mby5kZXNjcmlw
dGlvbik7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiB2aWRlb1RyYWNrSW5mbyA6IHNlZ21lbnQu
dmlkZW9UcmFja3MpIHsKICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gbV9yZW1vdGVNZWRpYVBs
YXllclByb3h5LT5hZGRSZW1vdGVWaWRlb1RyYWNrUHJveHkoKnZpZGVvVHJhY2tJbmZvLnRyYWNr
KTsKICAgICAgICAgc2VnbWVudEluZm8udmlkZW9UcmFja3MuYXBwZW5kKHsgTWVkaWFEZXNjcmlw
dGlvbkluZm8oKnZpZGVvVHJhY2tJbmZvLmRlc2NyaXB0aW9uKSwgaWRlbnRpZmllciB9KTsKKwor
ICAgICAgICBBU1NFUlQoIW1fdHJhY2tJZHMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgICAg
ICBBU1NFUlQoIW1fbWVkaWFEZXNjcmlwdGlvbnMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAg
ICAgICBtX3RyYWNrSWRzLmFkZChpZGVudGlmaWVyLCB2aWRlb1RyYWNrSW5mby50cmFjay0+aWQo
KSk7CisgICAgICAgIG1fbWVkaWFEZXNjcmlwdGlvbnMuYWRkKGlkZW50aWZpZXIsICp2aWRlb1Ry
YWNrSW5mby5kZXNjcmlwdGlvbik7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiB0ZXh0VHJhY2tJ
bmZvIDogc2VnbWVudC50ZXh0VHJhY2tzKSB7CiAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IG1f
cmVtb3RlTWVkaWFQbGF5ZXJQcm94eS0+YWRkUmVtb3RlVGV4dFRyYWNrUHJveHkoKnRleHRUcmFj
a0luZm8udHJhY2spOwogICAgICAgICBzZWdtZW50SW5mby50ZXh0VHJhY2tzLmFwcGVuZCh7IE1l
ZGlhRGVzY3JpcHRpb25JbmZvKCp0ZXh0VHJhY2tJbmZvLmRlc2NyaXB0aW9uKSwgaWRlbnRpZmll
ciB9KTsKKworICAgICAgICBBU1NFUlQoIW1fdHJhY2tJZHMuY29udGFpbnMoaWRlbnRpZmllcikp
OworICAgICAgICBBU1NFUlQoIW1fbWVkaWFEZXNjcmlwdGlvbnMuY29udGFpbnMoaWRlbnRpZmll
cikpOworICAgICAgICBtX3RyYWNrSWRzLmFkZChpZGVudGlmaWVyLCB0ZXh0VHJhY2tJbmZvLnRy
YWNrLT5pZCgpKTsKKyAgICAgICAgbV9tZWRpYURlc2NyaXB0aW9ucy5hZGQoaWRlbnRpZmllciwg
KnRleHRUcmFja0luZm8uZGVzY3JpcHRpb24pOwogICAgIH0KIAotICAgIG1fY29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21l
bnQoc2VnbWVudEluZm8pLCBtX2lkZW50aWZpZXIpOworICAgIG1fY29ubmVjdGlvblRvV2ViUHJv
Y2Vzcy5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpTb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0
aW9uU2VnbWVudChzZWdtZW50SW5mbyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX2lk
ZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZm
ZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9vbCkKQEAgLTkxLDE0ICsxMTAsMTQgQEAgdm9pZCBSZW1v
dGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZEVycm9yKGJvb2wp
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94
eTo6c291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmKQor
dm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9u
Q2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRp
b25DaGFuZ2VkKGR1cmF0aW9uKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxlKGRvdWJsZSkK
K3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQYXJz
ZVNhbXBsZShkb3VibGUgc2FtcGxlRHVyYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQYXJzZVNh
bXBsZShzYW1wbGVEdXJhdGlvbiksIG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlU291
cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWREcm9wU2FtcGxlKCkKQEAgLTEx
MSwyNiArMTMwLDI0IEBAIHZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZl
clByaXZhdGVTdHJlYW1FbmRlZFdpdGhEZWNvZGVFcnJvcigpCiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotYm9vbCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0
ZUhhc0F1ZGlvKCkgY29uc3QKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1
ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBl
bmRSZXN1bHQgYXBwZW5kUmVzdWx0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0
dXJuIGZhbHNlOworICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2Vu
ZChNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0
ZUFwcGVuZENvbXBsZXRlKGFwcGVuZFJlc3VsdCksIG1faWRlbnRpZmllcik7CiB9CiAKLWJvb2wg
UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbygpIGNv
bnN0Cit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlk
UmVjZWl2ZVJlbmRlcmluZ0Vycm9yKGludCBlcnJvckNvZGUpCiB7CiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJv
eHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShTb3VyY2VCdWZmZXJQcml2YXRl
Q2xpZW50OjpBcHBlbmRSZXN1bHQgYXBwZW5kUmVzdWx0KQordm9pZCBSZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGJvb2wgZmxh
ZykKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBcHBl
bmRDb21wbGV0ZShhcHBlbmRSZXN1bHQpLCBtX2lkZW50aWZpZXIpOworICAgIG1fY29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGZsYWcp
LCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3Vy
Y2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVJlbmRlcmluZ0Vycm9yKGludCBlcnJvckNvZGUpCit2
b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWRS
YW5nZXNDaGFuZ2VkKGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYgdGltZVJhbmdlcykKIHsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZCh0aW1lUmFuZ2VzKSwgbV9pZGVudGlmaWVy
KTsKIH0KIAogdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6YXBwZW5kKGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYgZGF0YSkKQEAgLTEzOCw2ICsxNTUsNDMgQEAgdm9pZCBSZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eTo6YXBwZW5kKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKICAg
ICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPmFwcGVuZChkYXRhLnZlY3RvcigpKTsKIH0KIAordm9p
ZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c2V0QWN0aXZlKGJvb2wgYWN0aXZlKQoreworICAg
IG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+c2V0QWN0aXZlKGFjdGl2ZSk7Cit9CisKK3ZvaWQgUmVt
b3RlU291cmNlQnVmZmVyUHJveHk6OnNldFJlYWR5U3RhdGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGUgc3RhdGUpCit7CisgICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlLT5zZXRSZWFk
eVN0YXRlKHN0YXRlKTsKK30KKwordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6dXBkYXRl
QnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCkKK3sKKyAgICBtX3Nv
dXJjZUJ1ZmZlclByaXZhdGUtPnVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVmZmVycyhzb3VyY2VJ
c0VuZGVkKTsKK30KKwordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6ZXZpY3RDb2RlZEZy
YW1lcyh1aW50NjRfdCBuZXdEYXRhU2l6ZSwgdWludDY0X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBh
Y2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUsIGNvbnN0IE1lZGlhVGltZSYgY3VycmVu
dFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24sIGJvb2wgaXNFbmRlZCkKK3sKKyAgICBt
X3NvdXJjZUJ1ZmZlclByaXZhdGUtPmV2aWN0Q29kZWRGcmFtZXMobmV3RGF0YVNpemUsIHBlbmRp
bmdBcHBlbmREYXRhQ2FwYWNpdHksIG1heGltdW1CdWZmZXJTaXplLCBjdXJyZW50VGltZSwgZHVy
YXRpb24sIGlzRW5kZWQpOworfQorCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjphZGRU
cmFja0J1ZmZlcihUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHRyYWNrUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKG1fdHJhY2tJZHMuY29udGFpbnModHJhY2tQcml2
YXRlUmVtb3RlSWRlbnRpZmllcikpOworICAgIEFTU0VSVChtX21lZGlhRGVzY3JpcHRpb25zLmNv
bnRhaW5zKHRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpKTsKKyAgICBtX3NvdXJjZUJ1ZmZl
clByaXZhdGUtPmFkZFRyYWNrQnVmZmVyKG1fdHJhY2tJZHMuZ2V0KHRyYWNrUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIpLCBtX21lZGlhRGVzY3JpcHRpb25zLmdldCh0cmFja1ByaXZhdGVSZW1vdGVJ
ZGVudGlmaWVyKSk7Cit9CisKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnJlZW5xdWV1
ZU1lZGlhSWZOZWVkZWQoY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50TWVkaWFUaW1lLCB1aW50NjRf
dCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSkK
K3sKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPnJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQoY3Vy
cmVudE1lZGlhVGltZSwgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgbWF4aW11bUJ1ZmZlclNp
emUpOworfQorCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojp0cnlTaWduYWxBbGxTYW1w
bGVzSW5UcmFja0VucXVldWVkKCkKK3sKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPnRyeVNp
Z25hbEFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291
cmNlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVT
b3VyY2VCdWZmZXJQcm94eS5oCmluZGV4IGJjOWY5OWRmYjdhMjMwYjU4OWFlMzQyZTVjZDA0Nzcw
NzVmMDIxMzguLjZlY2Q4YmNmNjhlZWI3ZmNhYjExNWM2OWNhMWMxNGRmZGM1MmI1MWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VC
dWZmZXJQcm94eS5oCkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSAiR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJl
bW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJUcmFja1ByaXZhdGVSZW1v
dGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYURlc2NyaXB0aW9uLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Tb3VyY2VCdWZmZXJQcml2YXRlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgpAQCAt
NDMsMTAgKzQ1LDEyIEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIGNsYXNzIE1lZGlhU2FtcGxlOworY2xhc3MgUGxhdGZvcm1UaW1lUmFuZ2VzOwogfQogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAorc3RydWN0IE1lZGlhRGVzY3JpcHRpb25JbmZvOwogY2xhc3Mg
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTsKIAogY2xhc3MgUmVtb3RlU291cmNlQnVmZmVyUHJveHkg
ZmluYWwKQEAgLTU4LDE2ICs2MiwxNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZW1vdGVT
b3VyY2VCdWZmZXJQcm94eT4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmLCBSZW1v
dGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZT4mJiwgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYpOwogICAgIHZpcnR1YWwgflJlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5KCk7CiAKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZl
SW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXRpYWxpemF0aW9uU2VnbWVudCYpIGZpbmFs
OworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNl
Z21lbnQoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JikgZmluYWw7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlU3RyZWFtRW5kZWRXaXRoRGVj
b2RlRXJyb3IoKSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRFcnJv
cihib29sIGRlY29kZUVycm9yKSBmaW5hbDsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVB
cHBlbmRDb21wbGV0ZShXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRS
ZXN1bHQpIGZpbmFsOwogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdl
ZChjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVE
aWRQYXJzZVNhbXBsZShkb3VibGUgc2FtcGxlRHVyYXRpb24pIGZpbmFsOwogICAgIHZvaWQgc291
cmNlQnVmZmVyUHJpdmF0ZURpZERyb3BTYW1wbGUoKSBmaW5hbDsKLSAgICB2b2lkIHNvdXJjZUJ1
ZmZlclByaXZhdGVTdHJlYW1FbmRlZFdpdGhEZWNvZGVFcnJvcigpIGZpbmFsOwotICAgIGJvb2wg
c291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlvKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzb3Vy
Y2VCdWZmZXJQcml2YXRlSGFzVmlkZW8oKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNvdXJjZUJ1
ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZChib29sKSBmaW5hbDsKKyAgICB2b2lkIHNv
dXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQoY29uc3QgV2ViQ29yZTo6UGxh
dGZvcm1UaW1lUmFuZ2VzJikgZmluYWw7CiAKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVB
cHBlbmRDb21wbGV0ZShXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRS
ZXN1bHQpIGZpbmFsOwogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVSZW5k
ZXJpbmdFcnJvcihpbnQgZXJyb3JDb2RlKSBmaW5hbDsKIAogcHJpdmF0ZToKQEAgLTc3LDEyICs4
MSwyMiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0
aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAgLy8gdm9pZCBkaWRSZWNlaXZlU3luY01l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAorICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wpOwogICAgIHZv
aWQgYXBwZW5kKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgc2V0UmVhZHlT
dGF0ZShXZWJDb3JlOjpNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSk7CisgICAgdm9pZCB1cGRhdGVC
dWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVkKTsKKyAgICB2b2lkIGV2
aWN0Q29kZWRGcmFtZXModWludDY0X3QgbmV3RGF0YVNpemUsIHVpbnQ2NF90IHBlbmRpbmdBcHBl
bmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplLCBjb25zdCBNZWRpYVRp
bWUmIGN1cnJlbnRUaW1lLCBjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uLCBib29sIGlzRW5kZWQp
OworICAgIHZvaWQgYWRkVHJhY2tCdWZmZXIoVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllcik7
CisgICAgdm9pZCByZWVucXVldWVNZWRpYUlmTmVlZGVkKGNvbnN0IE1lZGlhVGltZSYgY3VycmVu
dE1lZGlhVGltZSwgdWludDY0X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3Qg
bWF4aW11bUJ1ZmZlclNpemUpOworICAgIHZvaWQgdHJ5U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tF
bnF1ZXVlZCgpOwogCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25uZWN0aW9u
VG9XZWJQcm9jZXNzOwogICAgIFJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIgbV9pZGVudGlm
aWVyOwogICAgIFJlZjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlPiBtX3NvdXJjZUJ1ZmZl
clByaXZhdGU7CiAgICAgV2Vha1B0cjxSZW1vdGVNZWRpYVBsYXllclByb3h5PiBtX3JlbW90ZU1l
ZGlhUGxheWVyUHJveHk7CisKKyAgICBIYXNoTWFwPFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZp
ZXIsIEF0b21TdHJpbmc+IG1fdHJhY2tJZHM7CisgICAgSGFzaE1hcDxUcmFja1ByaXZhdGVSZW1v
dGVJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6TWVkaWFEZXNjcmlwdGlvbj4+IG1fbWVkaWFEZXNj
cmlwdGlvbnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eS5tZXNzYWdlcy5pbgppbmRleCBhMDhmZjAxZGEzMGQwNjdiOWU0MWZiNWExMTNlN2JhNDNm
ZTBlMDE3Li5mNDFmZGU0ZTc5ZmE3MDljMjM4ZGMyNzc0NmQ5MDg0ZmY4MDE0YTdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNiw3ICsyNiwxNCBAQAogI2lmIEVO
QUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogbWVzc2FnZXMgLT4g
UmVtb3RlU291cmNlQnVmZmVyUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgU2V0QWN0aXZlKGJv
b2wgYWN0aXZlKQogICAgIEFwcGVuZChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKKyAgICBTZXRS
ZWFkeVN0YXRlKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQorICAgIFVw
ZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVmZmVycyhib29sIHNvdXJjZUlzRW5kZWQpCisgICAgRXZp
Y3RDb2RlZEZyYW1lcyh1aW50NjRfdCBuZXdEYXRhU2l6ZSwgdWludDY0X3QgcGVuZGluZ0FwcGVu
ZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUsIE1lZGlhVGltZSBjdXJy
ZW50VGltZSwgTWVkaWFUaW1lIGR1cmF0aW9uLCBib29sIGlzRW5kZWQpCisgICAgQWRkVHJhY2tC
dWZmZXIoV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHRyYWNrSWQpCisgICAg
UmVlbnF1ZXVlTWVkaWFJZk5lZWRlZChNZWRpYVRpbWUgY3VycmVudE1lZGlhVGltZSwgdWludDY0
X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUp
CisgICAgVHJ5U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCgpCiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFj
a1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJh
Y2tQcm94eS5jcHAKaW5kZXggNjc0NDhlOWE3NDhmMThhZGE0NTI1OTA5YmEyY2QzMTQwYjIyNTFl
ZC4uMTMyMTVhNjczOTdjMGNjZjg4NzRmYjRhYWYxMDA4M2QzMGIxMjFhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHku
Y3BwCkBAIC02NCw3ICs2NCw3IEBAIFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9u
JiBSZW1vdGVUZXh0VHJhY2tQcm94eTo6Y29uZmlndXJhdGlvbigpCiB7CiAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uPiBjb25maWd1
cmF0aW9uOwogCi0gICAgY29uZmlndXJhdGlvbi0+aWRlbnRpZmllciA9IG1fdHJhY2tQcml2YXRl
LT5pZCgpOworICAgIGNvbmZpZ3VyYXRpb24tPnRyYWNrSWQgPSBtX3RyYWNrUHJpdmF0ZS0+aWQo
KTsKICAgICBjb25maWd1cmF0aW9uLT5sYWJlbCA9IG1fdHJhY2tQcml2YXRlLT5sYWJlbCgpOwog
ICAgIGNvbmZpZ3VyYXRpb24tPmxhbmd1YWdlID0gbV90cmFja1ByaXZhdGUtPmxhbmd1YWdlKCk7
CiAgICAgY29uZmlndXJhdGlvbi0+dHJhY2tJbmRleCA9IG1fdHJhY2tQcml2YXRlLT50cmFja0lu
ZGV4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VmlkZW9UcmFja1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVWaWRlb1RyYWNrUHJveHkuY3BwCmluZGV4IDM1MGY4ZWE3MzA3YmQyMzdhYTgzZjZjYzk0NWI1
NjEwZGY2ZjFjNzEuLmI5MmE4NGUzYTliNjhhYzZjNGYyYWYzNDI2YWVkN2E3OTQxMmRhYzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb1RyYWNr
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRl
b1RyYWNrUHJveHkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZp
Z3VyYXRpb24mIFJlbW90ZVZpZGVvVHJhY2tQcm94eTo6Y29uZmlndXJhdGlvbigpCiB7CiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24+IGNv
bmZpZ3VyYXRpb247CiAKLSAgICBjb25maWd1cmF0aW9uLT5pZGVudGlmaWVyID0gbV90cmFja1By
aXZhdGUtPmlkKCk7CisgICAgY29uZmlndXJhdGlvbi0+dHJhY2tJZCA9IG1fdHJhY2tQcml2YXRl
LT5pZCgpOwogICAgIGNvbmZpZ3VyYXRpb24tPmxhYmVsID0gbV90cmFja1ByaXZhdGUtPmxhYmVs
KCk7CiAgICAgY29uZmlndXJhdGlvbi0+bGFuZ3VhZ2UgPSBtX3RyYWNrUHJpdmF0ZS0+bGFuZ3Vh
Z2UoKTsKICAgICBjb25maWd1cmF0aW9uLT50cmFja0luZGV4ID0gbV90cmFja1ByaXZhdGUtPnRy
YWNrSW5kZXgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9U
ZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgKaW5kZXgg
YzEzOWNmYzE0YjQ3MWZiMjU4ZGJiZTgxODJiM2Q1YzYyMTYyYjU5Mi4uNjU2MDViMDFhMTI4NmMz
MTI5N2ViYzYwY2UwZmM4NTA1YjUyMmVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGVDb25m
aWd1cmF0aW9uLmgKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1
Y3QgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24gewotICAgIEF0b21TdHJpbmcg
aWRlbnRpZmllcjsKKyAgICBBdG9tU3RyaW5nIHRyYWNrSWQ7CiAgICAgQXRvbVN0cmluZyBsYWJl
bDsKICAgICBBdG9tU3RyaW5nIGxhbmd1YWdlOwogICAgIEF0b21TdHJpbmcgaW5CYW5kTWV0YWRh
dGFUcmFja0Rpc3BhdGNoVHlwZTsKQEAgLTU1LDcgKzU1LDcgQEAgc3RydWN0IFRleHRUcmFja1By
aXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIHsKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgog
ICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgewotICAgICAgICBl
bmNvZGVyIDw8IGlkZW50aWZpZXI7CisgICAgICAgIGVuY29kZXIgPDwgdHJhY2tJZDsKICAgICAg
ICAgZW5jb2RlciA8PCBsYWJlbDsKICAgICAgICAgZW5jb2RlciA8PCBsYW5ndWFnZTsKICAgICAg
ICAgZW5jb2RlciA8PCBpbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlOwpAQCAtNzUsOSAr
NzUsOSBAQCBzdHJ1Y3QgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24gewogICAg
IHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgogICAgIHN0YXRpYyBPcHRpb25hbDxUZXh0VHJhY2tQ
cml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIpCiAgICAg
ewotICAgICAgICBPcHRpb25hbDxBdG9tU3RyaW5nPiBpZGVudGlmaWVyOwotICAgICAgICBkZWNv
ZGVyID4+IGlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgT3B0
aW9uYWw8QXRvbVN0cmluZz4gdHJhY2tJZDsKKyAgICAgICAgZGVjb2RlciA+PiB0cmFja0lkOwor
ICAgICAgICBpZiAoIXRyYWNrSWQpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owog
CiAgICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IGxhYmVsOwpAQCAtMTUxLDcgKzE1MSw3IEBA
IHN0cnVjdCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7CiAgICAgICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7ewotICAgICAgICAgICAg
V1RGTW92ZSgqaWRlbnRpZmllciksCisgICAgICAgICAgICBXVEZNb3ZlKCp0cmFja0lkKSwKICAg
ICAgICAgICAgIFdURk1vdmUoKmxhYmVsKSwKICAgICAgICAgICAgIFdURk1vdmUoKmxhbmd1YWdl
KSwKICAgICAgICAgICAgIFdURk1vdmUoKmluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUp
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RyYWNrUHJpdmF0
ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9U
cmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgKaW5kZXggNDQ0MjJiMzAxNGYyMDIyMTZi
ZWQ2YTU3YTNmOGVkZDc5NDhlOTI0Ni4uYThmMDVkMThmZDk5ODhlYmI5OWM3NjczYjY4N2E2NzBk
OTJlMDE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RyYWNr
UHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oCkBAIC0zNCw3ICszNCw3
IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZp
Z3VyYXRpb24gewotICAgIEF0b21TdHJpbmcgaWRlbnRpZmllcjsKKyAgICBBdG9tU3RyaW5nIHRy
YWNrSWQ7CiAgICAgQXRvbVN0cmluZyBsYWJlbDsKICAgICBBdG9tU3RyaW5nIGxhbmd1YWdlOwog
ICAgIE1lZGlhVGltZSBzdGFydFRpbWVWYXJpYW5jZSB7IE1lZGlhVGltZTo6emVyb1RpbWUoKSB9
OwpAQCAtNDksNyArNDksNyBAQCBzdHJ1Y3QgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlv
biB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KICAgICB2b2lkIGVuY29kZShFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgZW5jb2RlciA8PCBpZGVudGlmaWVyOwor
ICAgICAgICBlbmNvZGVyIDw8IHRyYWNrSWQ7CiAgICAgICAgIGVuY29kZXIgPDwgbGFiZWw7CiAg
ICAgICAgIGVuY29kZXIgPDwgbGFuZ3VhZ2U7CiAgICAgICAgIGVuY29kZXIgPDwgc3RhcnRUaW1l
VmFyaWFuY2U7CkBAIC02Myw5ICs2Myw5IEBAIHN0cnVjdCBUcmFja1ByaXZhdGVSZW1vdGVDb25m
aWd1cmF0aW9uIHsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KICAgICBzdGF0aWMgT3B0
aW9uYWw8VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImIGRl
Y29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxBdG9tU3RyaW5nPiBpZGVudGlmaWVyOwot
ICAgICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghaWRlbnRpZmllcikK
KyAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gdHJhY2tJZDsKKyAgICAgICAgZGVjb2RlciA+
PiB0cmFja0lkOworICAgICAgICBpZiAoIXRyYWNrSWQpCiAgICAgICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IGxhYmVsOwpAQCAtMTA5
LDcgKzEwOSw3IEBAIHN0cnVjdCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIHsKICAg
ICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHt7Ci0gICAg
ICAgICAgICBXVEZNb3ZlKCppZGVudGlmaWVyKSwKKyAgICAgICAgICAgIFdURk1vdmUoKnRyYWNr
SWQpLAogICAgICAgICAgICAgV1RGTW92ZSgqbGFiZWwpLAogICAgICAgICAgICAgV1RGTW92ZSgq
bGFuZ3VhZ2UpLAogICAgICAgICAgICAgV1RGTW92ZSgqc3RhcnRUaW1lVmFyaWFuY2UpLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJp
dmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlv
VHJhY2tQcml2YXRlUmVtb3RlLmNwcAppbmRleCA3MjFjMGFhOTIwNzI0ZTliMzNiNTg2NTMwMzEz
N2I2Y2E1NDkwMGEwLi5lMmEzZTkwMWFmZjRlNjQxNDFiZmM5OWM2ZjBjNDU3MjliMWQ4YmNmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQ
cml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcApAQCAtNTMsOSArNTMsOSBAQCB2b2lkIEF1ZGlv
VHJhY2tQcml2YXRlUmVtb3RlOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIAogdm9pZCBBdWRp
b1RyYWNrUHJpdmF0ZVJlbW90ZTo6dXBkYXRlQ29uZmlndXJhdGlvbihUcmFja1ByaXZhdGVSZW1v
dGVDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKIHsKLSAgICBpZiAoY29uZmlndXJhdGlv
bi5pZGVudGlmaWVyICE9IG1faWQpIHsKKyAgICBpZiAoY29uZmlndXJhdGlvbi50cmFja0lkICE9
IG1faWQpIHsKICAgICAgICAgYXV0byBjaGFuZ2VkID0gIW1faWQuaXNFbXB0eSgpOwotICAgICAg
ICBtX2lkID0gY29uZmlndXJhdGlvbi5pZGVudGlmaWVyOworICAgICAgICBtX2lkID0gY29uZmln
dXJhdGlvbi50cmFja0lkOwogICAgICAgICBpZiAoY2hhbmdlZCAmJiBjbGllbnQoKSkKICAgICAg
ICAgICAgIGNsaWVudCgpLT5pZENoYW5nZWQobV9pZCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5o
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJl
bW90ZS5oCmluZGV4IDUzZGM5YmUzM2M5YmZjMGRjNGE3YjAxZmMxZjEwMWY5ZTg3NmE1YzUuLmNm
N2MwZTkzZWY0NmY0OTAxY2VjYzVmOWY3YThlNjFlM2YxNmIzZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRl
UmVtb3RlLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZShjb25uZWN0aW9uLCBpZGVuZGlmaWVyLCBX
VEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7CiAgICAgfQogCisgICAgQXRvbVN0cmluZyBpZCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1faWQ7IH0KICAgICB2b2lkIHVwZGF0ZUNvbmZpZ3VyYXRpb24o
VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYmKTsKIAogcHJpdmF0ZToKQEAgLTU1LDcg
KzU2LDYgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEF1ZGlvVHJhY2tLaW5kID0gV2ViQ29yZTo6
QXVkaW9UcmFja1ByaXZhdGU6OktpbmQ7CiAgICAgQXVkaW9UcmFja0tpbmQga2luZCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fa2luZDsgfQotICAgIEF0b21TdHJpbmcgaWQoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2lkOyB9CiAgICAgQXRvbVN0cmluZyBsYWJlbCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fbGFiZWw7IH0KICAgICBBdG9tU3RyaW5nIGxhbmd1YWdlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9sYW5ndWFnZTsgfQogICAgIGludCB0cmFja0luZGV4KCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV90cmFja0luZGV4OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5k
ZXggNmRkZWU4N2FiZGNjNzZmODY5YWQ1NTRkYjUxMTJiMzZiODJmMmQ2Yi4uNzEzMjFlNmJlNjAw
NDgzOGMzYjYzNWQwZWZkYzRjMWVmNjg5MzIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcApAQCAtNjMzLDcgKzYzMywxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeQogewogICAg
IGlmIChtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIgPT0gTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFF
bmdpbmVJZGVudGlmaWVyOjpBVkZvdW5kYXRpb25NU0UpIHsKICAgICAgICAgYXV0byBpZGVudGlm
aWVyID0gUmVtb3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwotICAgICAgICBj
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6TG9hZE1l
ZGlhU291cmNlKHVybCwgY29udGVudFR5cGUsIGlkZW50aWZpZXIpLCBtX2lkKTsKKyAgICAgICAg
Y29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6TG9hZE1lZGlhU291cmNlKHVybCwgY29udGVudFR5cGUsIGlkZW50aWZpZXIpLCBb
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKGF1dG8mJiBjb25maWd1cmF0aW9uKSB7Cisg
ICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMtPm1fY29u
ZmlndXJhdGlvbiA9IFdURk1vdmUoY29uZmlndXJhdGlvbik7CisgICAgICAgIH0sIG1faWQpOwog
ICAgICAgICBtX21lZGlhU291cmNlUHJpdmF0ZSA9IE1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6
Y3JlYXRlKG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLCBpZGVudGlmaWVyLCBtX21h
bmFnZXIudHlwZUNhY2hlKG1fcmVtb3RlRW5naW5lSWRlbnRpZmllciksICp0aGlzLCBjbGllbnQp
OwogCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmNwcAppbmRleCAw
YWM3ODcyMGJhYzRkNDI4ZDEyNDcwNDg5ODY1OTM5MzhmZjc4NWRhLi41MDMyMjUyYmY1MGYxNjI0
NWIxNWZlNGUwZjJmYzE5MmRlNTE4NTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuY3Bw
CkBAIC0xMDMsOSArMTAzLDkgQEAgTWVkaWFTb3VyY2VQcml2YXRlOjpBZGRTdGF0dXMgTWVkaWFT
b3VyY2VQcml2YXRlUmVtb3RlOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQ28KICAgICByZXR1cm4g
c3RhdHVzOwogfQogCi12b2lkIE1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6ZHVyYXRpb25DaGFu
Z2VkKCkKK3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjpkdXJhdGlvbkNoYW5nZWQoY29u
c3QgTWVkaWFUaW1lJiBkdXJhdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1f
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1l
ZGlhU291cmNlUHJveHk6OkR1cmF0aW9uQ2hhbmdlZChkdXJhdGlvbiksIG1faWRlbnRpZmllcik7
CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjptYXJrRW5kT2ZTdHJlYW0oRW5k
T2ZTdHJlYW1TdGF0dXMpCkBAIC0xMTgsMTQgKzExOCwyMCBAQCB2b2lkIE1lZGlhU291cmNlUHJp
dmF0ZVJlbW90ZTo6dW5tYXJrRW5kT2ZTdHJlYW0oKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKK2Jvb2wgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjppc0VuZGVkKCkgY29uc3QKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGUgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjpyZWFkeVN0YXRlKCkgY29uc3QK
IHsKICAgICByZXR1cm4gbV9tZWRpYVBsYXllclByaXZhdGUgPyBtX21lZGlhUGxheWVyUHJpdmF0
ZS0+cmVhZHlTdGF0ZSgpIDogTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nOwog
fQogCi12b2lkIE1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6c2V0UmVhZHlTdGF0ZShNZWRpYVBs
YXllcjo6UmVhZHlTdGF0ZSkKK3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjpzZXRSZWFk
eVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpTZXRSZWFkeVN0YXRlKHJlYWR5U3Rh
dGUpLCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIE1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6
d2FpdEZvclNlZWtDb21wbGV0ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmgKaW5kZXggNzc4
MzRmN2ExOWRjYjBiOTRlZDUyZjY2ODAwZTYwNWMzMTUzNDc5OS4uNjRmNzM4NWIyOTI5ZjlmMzA0
YjQyYzhhMzZlMmIyNTc2MmY5ZThlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5oCkBAIC01
Niw5ICs1NiwxMCBAQCBwdWJsaWM6CiAKICAgICAvLyBNZWRpYVNvdXJjZVByaXZhdGUgb3ZlcnJp
ZGVzCiAgICAgQWRkU3RhdHVzIGFkZFNvdXJjZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpDb250ZW50
VHlwZSYsIFJlZlB0cjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlPiYpIGZpbmFsOwotICAg
IHZvaWQgZHVyYXRpb25DaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQo
Y29uc3QgTWVkaWFUaW1lJikgZmluYWw7CiAgICAgdm9pZCBtYXJrRW5kT2ZTdHJlYW0oRW5kT2ZT
dHJlYW1TdGF0dXMpIGZpbmFsOwogICAgIHZvaWQgdW5tYXJrRW5kT2ZTdHJlYW0oKSBmaW5hbDsK
KyAgICBib29sIGlzRW5kZWQoKSBjb25zdCBmaW5hbDsKICAgICBXZWJDb3JlOjpNZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRSZWFk
eVN0YXRlKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKSBmaW5hbDsKICAgICB2b2lk
IHdhaXRGb3JTZWVrQ29tcGxldGVkKCkgZmluYWw7CkBAIC03OSw2ICs4MCw4IEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZUNsaWVudD4gbV9jbGllbnQ7
CiAgICAgVmVjdG9yPFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlPj4gbV9zb3VyY2VC
dWZmZXJzOwogCisgICAgTWVkaWFUaW1lIG1fZHVyYXRpb247CisKICNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiAiTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlIjsgfQogICAgIGNvbnN0IHZvaWQqIGxv
Z0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7IH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Nv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDYzMmUwMGZiMTUyZDBmZDc0NjU3NmUz
NGNhZmJmOWUyYjQ2M2JmN2QuLmRhOWY3NGU5MDY5MmRkODI5YmNiNDNiYzUyYWE1MmVhNWMyNzA5
MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtMzUsNiArMzUsNyBAQAog
I2luY2x1ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJT
b3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05v
dEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVRpbWVSYW5nZXMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmLmg+CiAKQEAgLTEwMCwxNyArMTAxLDE1IEBAIE1lZGlhUGxheWVyOjpSZWFkeVN0
YXRlIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnJlYWR5U3RhdGUoKSBjb25zdAogICAgIHJl
dHVybiBtX21lZGlhUGxheWVyUHJpdmF0ZSA/IG1fbWVkaWFQbGF5ZXJQcml2YXRlLT5yZWFkeVN0
YXRlKCkgOiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmc7CiB9CiAKLXZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c2V0UmVhZHlTdGF0ZShN
ZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwot
fQorICAgIGlmICghbV9tZWRpYVNvdXJjZVByaXZhdGUpCisgICAgICAgIHJldHVybjsKIAotdm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpmbHVzaChjb25zdCBBdG9tU3RyaW5nJiB0cmFj
a0lEKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlv
bi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OlNl
dFJlYWR5U3RhdGUoc3RhdGUpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpOwogfQog
Ci12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmVucXVldWVTYW1wbGUoUmVmPE1lZGlh
U2FtcGxlPiYmLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKQordm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlUmVtb3RlOjpmbHVzaChjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKQogewogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CkBAIC0xMjAsOSArMTE5LDEzIEBAIGJvb2wgU291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZTo6aXNSZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmIHRy
YWNrSUQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGU6OnNldEFjdGl2ZShib29sKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpz
ZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAo
IW1fbWVkaWFTb3VyY2VQcml2YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lzQWN0aXZl
ID0gYWN0aXZlOworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpTZXRBY3RpdmUoYWN0aXZlKSwgbV9y
ZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlOjpub3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG9t
U3RyaW5nJiB0cmFja0lEKQpAQCAtMTUxLDcgKzE1NCwzNiBAQCBib29sIFNvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGU6OmNhblN3aXRjaFRvVHlwZShjb25zdCBDb250ZW50VHlwZSYpCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemF0aW9u
U2VnbWVudEluZm8mJiBzZWdtZW50SW5mbykKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZTo6dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCkKK3sK
KyAgICBpZiAoIW1fbWVkaWFTb3VyY2VQcml2YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBt
X2dwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVT
b3VyY2VCdWZmZXJQcm94eTo6VXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKHNvdXJjZUlz
RW5kZWQpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpOworfQorCit2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmV2aWN0Q29kZWRGcmFtZXModWludDY0X3QgbmV3RGF0YVNp
emUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1C
dWZmZXJTaXplLCBjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBjb25zdCBNZWRpYVRpbWUm
IGR1cmF0aW9uLCBib29sIGlzRW5kZWQpCit7CisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OkV2aWN0
Q29kZWRGcmFtZXMobmV3RGF0YVNpemUsIHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIG1heGlt
dW1CdWZmZXJTaXplLCBjdXJyZW50VGltZSwgZHVyYXRpb24sIGlzRW5kZWQpLCBtX3JlbW90ZVNv
dXJjZUJ1ZmZlcklkZW50aWZpZXIpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGU6OmFkZFRyYWNrQnVmZmVyKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSWQsIFJlZlB0cjxNZWRp
YURlc2NyaXB0aW9uPiYmKQoreworICAgIEFTU0VSVChtX3RyYWNrSWRlbnRpZmllck1hcC5jb250
YWlucyh0cmFja0lkKSk7CisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCku
c2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OkFkZFRyYWNrQnVmZmVyKG1f
dHJhY2tJZGVudGlmaWVyTWFwLmdldCh0cmFja0lkKSksIG1fcmVtb3RlU291cmNlQnVmZmVySWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6cmVlbnF1ZXVl
TWVkaWFJZk5lZWRlZChjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRNZWRpYVRpbWUsIHVpbnQ2NF90
IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplKQor
eworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpSZWVucXVldWVNZWRpYUlmTmVlZGVkKGN1cnJlbnRN
ZWRpYVRpbWUsIHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIG1heGltdW1CdWZmZXJTaXplKSwg
bV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlUmVtb3RlOjp0cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKCkKK3sKKyAg
ICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVTb3VyY2VCdWZmZXJQcm94eTo6VHJ5U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCgp
LCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVSZW1vdGU6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRp
b25TZWdtZW50KEluaXRpYWxpemF0aW9uU2VnbWVudEluZm8mJiBzZWdtZW50SW5mbywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9j
bGllbnQgfHwgIW1fbWVkaWFQbGF5ZXJQcml2YXRlKQogICAgICAgICByZXR1cm47CkBAIC0xNjQs
NiArMTk2LDggQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQ
cml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWUKICAgICAgICAgaW5mby50cmFjayA9
IG1fbWVkaWFQbGF5ZXJQcml2YXRlLT5hdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZShhdWRpb1RyYWNr
LmlkZW50aWZpZXIpOwogICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gUmVtb3RlTWVkaWFEZXNj
cmlwdGlvbjo6Y3JlYXRlKGF1ZGlvVHJhY2suZGVzY3JpcHRpb24pOwogICAgICAgICBzZWdtZW50
LmF1ZGlvVHJhY2tzLmFwcGVuZChpbmZvKTsKKyAgICAgICAgQVNTRVJUKCFtX3RyYWNrSWRlbnRp
Zmllck1hcC5jb250YWlucyhpbmZvLnRyYWNrLT5pZCgpKSk7CisgICAgICAgIG1fdHJhY2tJZGVu
dGlmaWVyTWFwLmFkZChpbmZvLnRyYWNrLT5pZCgpLCBhdWRpb1RyYWNrLmlkZW50aWZpZXIpOwog
ICAgIH0KIAogICAgIGZvciAoYXV0byYgdmlkZW9UcmFjayA6IHNlZ21lbnRJbmZvLnZpZGVvVHJh
Y2tzKSB7CkBAIC0xNzEsNiArMjA1LDggQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWUKICAgICAg
ICAgaW5mby50cmFjayA9IG1fbWVkaWFQbGF5ZXJQcml2YXRlLT52aWRlb1RyYWNrUHJpdmF0ZVJl
bW90ZSh2aWRlb1RyYWNrLmlkZW50aWZpZXIpOwogICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0g
UmVtb3RlTWVkaWFEZXNjcmlwdGlvbjo6Y3JlYXRlKHZpZGVvVHJhY2suZGVzY3JpcHRpb24pOwog
ICAgICAgICBzZWdtZW50LnZpZGVvVHJhY2tzLmFwcGVuZChpbmZvKTsKKyAgICAgICAgQVNTRVJU
KCFtX3RyYWNrSWRlbnRpZmllck1hcC5jb250YWlucyhpbmZvLnRyYWNrLT5pZCgpKSk7CisgICAg
ICAgIG1fdHJhY2tJZGVudGlmaWVyTWFwLmFkZChpbmZvLnRyYWNrLT5pZCgpLCB2aWRlb1RyYWNr
LmlkZW50aWZpZXIpOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgdGV4dFRyYWNrIDogc2VnbWVu
dEluZm8udGV4dFRyYWNrcykgewpAQCAtMTc4LDkgKzIxNCwxMSBAQCB2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVSZW1vdGU6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRp
b25TZWdtZQogICAgICAgICBpbmZvLnRyYWNrID0gbV9tZWRpYVBsYXllclByaXZhdGUtPnRleHRU
cmFja1ByaXZhdGVSZW1vdGUodGV4dFRyYWNrLmlkZW50aWZpZXIpOwogICAgICAgICBpbmZvLmRl
c2NyaXB0aW9uID0gUmVtb3RlTWVkaWFEZXNjcmlwdGlvbjo6Y3JlYXRlKHRleHRUcmFjay5kZXNj
cmlwdGlvbik7CiAgICAgICAgIHNlZ21lbnQudGV4dFRyYWNrcy5hcHBlbmQoaW5mbyk7CisgICAg
ICAgIEFTU0VSVCghbV90cmFja0lkZW50aWZpZXJNYXAuY29udGFpbnMoaW5mby50cmFjay0+aWQo
KSkpOworICAgICAgICBtX3RyYWNrSWRlbnRpZmllck1hcC5hZGQoaW5mby50cmFjay0+aWQoKSwg
dGV4dFRyYWNrLmlkZW50aWZpZXIpOwogICAgIH0KIAotICAgIG1fY2xpZW50LT5zb3VyY2VCdWZm
ZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChXVEZNb3ZlKHNlZ21lbnQp
KTsKKyAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXph
dGlvblNlZ21lbnQoV1RGTW92ZShzZWdtZW50KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJjZUJ1ZmZlclByaXZh
dGVBcHBlbmRDb21wbGV0ZShTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQg
YXBwZW5kUmVzdWx0KQpAQCAtMTg5LDYgKzIyNywzMCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGU6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShTb3VyY2VCdWZmZXJQ
cgogICAgICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKGFw
cGVuZFJlc3VsdCk7CiB9CiAKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNl
QnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uKQor
eworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZh
dGVEdXJhdGlvbkNoYW5nZWQoZHVyYXRpb24pOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGU6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBsZShkb3VibGUgc2FtcGxl
RHVyYXRpb24pCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c291cmNl
QnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxlKHNhbXBsZUR1cmF0aW9uKTsKK30KKwordm9pZCBT
b3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0
eUNoYW5nZWQoYm9vbCBkaXJ0eSkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoZGlydHkpOworfQor
Cit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZm
ZXJlZFJhbmdlc0NoYW5nZWQoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzJiB0aW1l
UmFuZ2VzKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1
ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQodGltZVJhbmdlcyk7Cit9CisKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKIFdURkxvZ0NoYW5uZWwmIFNvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGU6OmxvZ0NoYW5uZWwoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaApp
bmRleCA0ZDBlMDMwOWFkNTlkNjk0ZjEzYmMxNGM0N2NiYmE0YWYyZjdhODYyLi43NjJmNjNiZjdk
MmI3OWJmZWViZmUyYWNlYTgyMzMxNzQ1MTkwMDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGUuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgi
CiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlU291cmNlQnVm
ZmVySWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRUeXBlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
ZWRpYVNhbXBsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZS5oPgpA
QCAtNDYsNiArNDcsMTAgQEAgY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7CiB9CiAK
K25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFBsYXRmb3JtVGltZVJhbmdlczsKK30KKwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBJbml0aWFsaXphdGlvblNlZ21lbnRJbmZvOwpAQCAt
NzQsMjUgKzc5LDQwIEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlJlYWR5
U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShX
ZWJDb3JlOjpNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSkgZmluYWw7CiAgICAgdm9pZCBmbHVzaChj
b25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKSBmaW5hbDsKLSAgICB2b2lkIGVucXVldWVTYW1wbGUo
UmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxlPiYmLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKSBm
aW5hbDsKICAgICBib29sIGlzUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG9tU3RyaW5nJiB0
cmFja0lEKSBmaW5hbDsKICAgICB2b2lkIHNldEFjdGl2ZShib29sKSBmaW5hbDsKKyAgICBib29s
IGlzQWN0aXZlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pc0FjdGl2ZTsgfQogICAgIHZvaWQg
bm90aWZ5Q2xpZW50V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJh
Y2tJRCkgZmluYWw7CiAgICAgYm9vbCBjYW5TZXRNaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25U
aW1lKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldE1pbmltdW1V
cGNvbWluZ1ByZXNlbnRhdGlvblRpbWUoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IE1lZGlhVGlt
ZSYpIGZpbmFsOwogICAgIHZvaWQgY2xlYXJNaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1l
KGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKICAgICBib29sIGNhblN3aXRjaFRvVHlwZShjb25z
dCBXZWJDb3JlOjpDb250ZW50VHlwZSYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQnVmZmVyZWRG
cm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCkgZmluYWw7CisgICAgdm9pZCBldmlj
dENvZGVkRnJhbWVzKHVpbnQ2NF90IG5ld0RhdGFTaXplLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5k
RGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSwgY29uc3QgTWVkaWFUaW1l
JiBjdXJyZW50VGltZSwgY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbiwgYm9vbCBpc0VuZGVkKSBm
aW5hbDsKKyAgICB2b2lkIGFkZFRyYWNrQnVmZmVyKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSWQs
IFJlZlB0cjxXZWJDb3JlOjpNZWRpYURlc2NyaXB0aW9uPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJl
ZW5xdWV1ZU1lZGlhSWZOZWVkZWQoY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50TWVkaWFUaW1lLCB1
aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVy
U2l6ZSkgZmluYWw7CisgICAgdm9pZCB0cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVk
KCkgZmluYWw7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIGZpbmFsOwotCi0gICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlk
UmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0aWFsaXphdGlvblNlZ21lbnRJbmZvJiYp
OworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNl
Z21lbnQoSW5pdGlhbGl6YXRpb25TZWdtZW50SW5mbyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYpOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZVN0cmVhbUVuZGVkV2l0aERlY29k
ZUVycm9yKCk7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9vbCBk
ZWNvZGVFcnJvcik7CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0KTsKKyAgICB2
b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJik7
CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoZG91YmxlIHNhbXBs
ZUR1cmF0aW9uKTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWREcm9wU2FtcGxlKCk7
CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVJlbmRlcmluZ0Vycm9yKGlu
dCBlcnJvckNvZGUpOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlD
aGFuZ2VkKGJvb2wgZGlydHkpOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVk
UmFuZ2VzQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXMmKTsKIAogICAg
IEdQVVByb2Nlc3NDb25uZWN0aW9uJiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uOwogICAgIFJlbW90
ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIgbV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyOwog
ICAgIFdlYWtQdHI8TWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlPiBtX21lZGlhU291cmNlUHJpdmF0
ZTsKICAgICBXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZT4gbV9tZWRpYVBsYXllclBy
aXZhdGU7Ci0gICAgV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCogbV9jbGllbnQg
eyBudWxscHRyIH07CisKKyAgICBIYXNoTWFwPEF0b21TdHJpbmcsIFRyYWNrUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXI+IG1fdHJhY2tJZGVudGlmaWVyTWFwOworCisgICAgYm9vbCBtX2lzQWN0aXZl
IHsgZmFsc2UgfTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dl
ciYgbG9nZ2VyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgppbmRleCA0MDY0MmY2MDM2
ZWY3ZTExZTIzYjgwZjVhNDUxZDc2ZjNlZDI4YzRlLi42YzhjY2EwZmU4OTdjNTk5ZWM0Y2ViOGEy
YmVhNWE5YWFiZjQ2ODY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1l
c3NhZ2VzLmluCkBAIC0yNiw4ICsyNiwxMiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKIAogbWVzc2FnZXMgLT4gU291cmNlQnVmZmVyUHJpdmF0ZVJl
bW90ZSBOb3RSZWZDb3VudGVkIHsKLSAgICBTb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUlu
aXRpYWxpemF0aW9uU2VnbWVudChzdHJ1Y3QgV2ViS2l0OjpJbml0aWFsaXphdGlvblNlZ21lbnRJ
bmZvIHNlZ21lbnRDb25maWd1cmF0aW9uKQorICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNl
aXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KHN0cnVjdCBXZWJLaXQ6OkluaXRpYWxpemF0aW9uU2Vn
bWVudEluZm8gc2VnbWVudENvbmZpZ3VyYXRpb24pIC0+ICgpIEFzeW5jCiAgICAgU291cmNlQnVm
ZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVDbGll
bnQ6OkFwcGVuZFJlc3VsdCBhcHBlbmRSZXN1bHQpCisgICAgU291cmNlQnVmZmVyUHJpdmF0ZUR1
cmF0aW9uQ2hhbmdlZChNZWRpYVRpbWUgZHVyYXRpb24pCisgICAgU291cmNlQnVmZmVyUHJpdmF0
ZURpZFBhcnNlU2FtcGxlKGRvdWJsZSBzYW1wbGVEdXJhdGlvbikKKyAgICBTb3VyY2VCdWZmZXJQ
cml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCBkaXJ0eSkKKyAgICBTb3VyY2VCdWZmZXJQ
cml2YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2VkKFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdlcyB0
aW1lUmFuZ2VzKQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDcz
MjIzYjg2ODQyMTNhMGJkOGY3MTI4MmE4ZThkZWE2MTU5OTVlYzAuLjJiNTZmZWQyM2RlYzM1ODU5
YWI4NTdlNmY2ZGZmZDc5OGUxYWFlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcApAQCAt
NTYsOSArNTYsOSBAQCB2b2lkIFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnNldE1vZGUoVGV4dFRy
YWNrTW9kZSBtb2RlKQogCiB2b2lkIFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnVwZGF0ZUNvbmZp
Z3VyYXRpb24oVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0
aW9uKQogewotICAgIGlmIChjb25maWd1cmF0aW9uLmlkZW50aWZpZXIgIT0gbV9pZCkgeworICAg
IGlmIChjb25maWd1cmF0aW9uLnRyYWNrSWQgIT0gbV9pZCkgewogICAgICAgICBhdXRvIGNoYW5n
ZWQgPSAhbV9pZC5pc0VtcHR5KCk7Ci0gICAgICAgIG1faWQgPSBjb25maWd1cmF0aW9uLmlkZW50
aWZpZXI7CisgICAgICAgIG1faWQgPSBjb25maWd1cmF0aW9uLnRyYWNrSWQ7CiAgICAgICAgIGlm
IChjaGFuZ2VkICYmIGNsaWVudCgpKQogICAgICAgICAgICAgY2xpZW50KCktPmlkQ2hhbmdlZCht
X2lkKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1ZpZGVvVHJhY2tQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvVmlkZW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwCmluZGV4IGFjNmVhMDE0Mjcx
YzMzMTI2Y2Q3NTJiM2ZmZDNiNzg1NDM5ZGU2NTcuLjM1ZThlN2Q4MzljNzI4MDFmNmE5NmZiZWQy
NzIwNjRkNGZkNjZmMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvVmlkZW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvVmlkZW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwCkBAIC01Miw5ICs1
Miw5IEBAIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVSZW1vdGU6OnNldFNlbGVjdGVkKGJvb2wgc2Vs
ZWN0ZWQpCiAKIHZvaWQgVmlkZW9UcmFja1ByaXZhdGVSZW1vdGU6OnVwZGF0ZUNvbmZpZ3VyYXRp
b24oVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiB7Ci0g
ICAgaWYgKGNvbmZpZ3VyYXRpb24uaWRlbnRpZmllciAhPSBtX2lkKSB7CisgICAgaWYgKGNvbmZp
Z3VyYXRpb24udHJhY2tJZCAhPSBtX2lkKSB7CiAgICAgICAgIGF1dG8gY2hhbmdlZCA9ICFtX2lk
LmlzRW1wdHkoKTsKLSAgICAgICAgbV9pZCA9IGNvbmZpZ3VyYXRpb24uaWRlbnRpZmllcjsKKyAg
ICAgICAgbV9pZCA9IGNvbmZpZ3VyYXRpb24udHJhY2tJZDsKICAgICAgICAgaWYgKGNoYW5nZWQg
JiYgY2xpZW50KCkpCiAgICAgICAgICAgICBjbGllbnQoKS0+aWRDaGFuZ2VkKG1faWQpOwogICAg
IH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415504</attachid>
            <date>2020-12-05 15:49:28 -0800</date>
            <delta_ts>2020-12-05 19:36:42 -0800</delta_ts>
            <desc>WIP - fix issues on youtube</desc>
            <filename>bug-219402-20201205154927.patch</filename>
            <type>text/plain</type>
            <size>118918</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RlYmRkNjNmYjkxNzM2
MTE4MDVlOWY1NDI4Zjk0YmExMWJiMWNlNy4uYTFhZWFkM2QzY2NlNmQ3ZWY3NzNlY2EzYjZkNTIz
NTYzMDVkZDEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAyMC0xMi0wNCAgUGVu
ZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUgUHJv
Y2Vzc11bTVNFXSBJbXBsZW1lbnQgYmFzaWMgdmlkZW8gcGxheWJhY2sKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0UHJpdmF0
ZUFuZE9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnNldER1cmF0aW9uSW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVy
cm9yKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OlNvdXJjZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXI6On5Tb3VyY2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXI6Om1heGltdW1CdWZmZXJTaXplIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFs
aXphdGlvblNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpleHRyYU1l
bW9yeUNvc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpyZXBvcnRF
eHRyYU1lbW9yeUFsbG9jYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNl
dE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdl
c0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjppc0J1ZmZlcmVkRGly
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzZXRCdWZmZXJlZERp
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0
ZUhhc0F1ZGlvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
cjo6c291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhU291cmNlUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
b3VyY2VQcml2YXRlOjpzZXRUaW1lRnVkZ2VGYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTb3VyY2VQcml2YXRlOjp0aW1lRnVkZ2VGYWN0b3IgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0QnVmZmVyZWREaXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQcml2YXRlOjpzZXRCdWZmZXJlZFJhbmdlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjp1cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kQ29tcGxldGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmJ1ZmZlcmVkU2FtcGxl
c0ZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6cHJv
dmlkZU1lZGlhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjpy
ZWVucXVldWVNZWRpYUZvclRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJp
dmF0ZTo6cmVlbnF1ZXVlTWVkaWFJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVT
YW1wbGVzRnJvbVRyYWNrQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGU6OmV2aWN0Q29kZWRGcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UHJpdmF0ZTo6dG90YWxUcmFja0J1ZmZlclNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmFkZFRyYWNrQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZVNh
bXBsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6aGFzQXVkaW8gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6aGFzVmlkZW8gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6c3RhcnRDaGFuZ2luZ1R5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0TWF4aW11bVF1
ZXVlRGVwdGhGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGU6OnRpbWVGdWRnZUZhY3RvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlOjpzZXRBY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZTo6c2V0Q3VycmVudFRpbWVGdWRnZUZhY3Rvcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjpidWZmZXJlZCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjppc0J1ZmZlcmVkRGly
dHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZTo6c2V0QnVmZmVyZWREaXJ0eSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1ZpZGVvVHJhY2tQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpkdXJh
dGlvbkNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpmbHVzaFBlbmRpbmdN
ZWRpYURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6
cmVzZXRQYXJzZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBh
cnNlSW5pdGlhbGl6YXRpb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjphcHBlbmRDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRpbWVGdWRnZUZhY3RvciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6aGFzVmlkZW8gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc0F1
ZGlvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06OnJlc2V0UGFyc2VyU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkNsdXN0ZXJCZWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg6CisgICAgICAgICogcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OmR1cmF0aW9uQ2hhbmdlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRS
ZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlOjpzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6Omhhc1ZpZGVvIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpoYXNBdWRp
byBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oOgorCiAyMDIwLTEyLTA0ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkgYXVkaW8gcmVzYW1wbGluZyBjb2Rl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDMzN2E1NDQwZTIxNzZhOWRlNTYyZDJiNTQ3OGQ3OWMxNDA4NDk4ZjEuLjZh
MDU1YTliMzM5ZGM0NTFiMGRiYjU2MjYyYWFjOWIwMzc3NDgzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsODcgQEAKKzIwMjAtMTItMDQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKwor
ICAgICAgICBbTWVkaWEgaW4gR1BVIFByb2Nlc3NdW01TRV0gSW1wbGVtZW50IGJhc2ljIHZpZGVv
IHBsYXliYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTk0MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQXVkaW9UcmFja1Byb3h5Ojpjb25maWd1cmF0aW9uKToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpsb2FkTWVkaWFTb3VyY2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojp1cGRhdGVDYWNoZWRTdGF0ZSk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNlUHJveHk6OmR1cmF0aW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6YnVmZmVyZWQgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpkdXJhdGlvbkNo
YW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpzZXRSZWFk
eVN0YXRlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJv
eHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHku
bWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpS
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5Ojp+UmVtb3RlU291cmNlQnVmZmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0
aWFsaXphdGlvblNlZ21lbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VT
YW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNl
QnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291
cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJy
b3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVm
ZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
U291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5n
ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c2V0QWN0aXZl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNldFJlYWR5U3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6dXBkYXRlQnVm
ZmVyZWRGcm9tVHJhY2tCdWZmZXJzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVm
ZmVyUHJveHk6OmV2aWN0Q29kZWRGcmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eTo6YWRkVHJhY2tCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVT
b3VyY2VCdWZmZXJQcm94eTo6cmVlbnF1ZXVlTWVkaWFJZk5lZWRlZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojp0cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0Vu
cXVldWVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJj
ZUJ1ZmZlclByaXZhdGVIYXNBdWRpbyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlSGFzVmlkZW8gY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVm
ZmVyUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4
dFRyYWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJhY2tQcm94eTo6
Y29uZmlndXJhdGlvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb1Ry
YWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb1RyYWNrUHJveHk6OmNv
bmZpZ3VyYXRpb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0
ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6VGV4dFRyYWNrUHJpdmF0
ZVJlbW90ZUNvbmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlRl
eHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oOgorICAgICAg
ICAoV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uOjpkZWNv
ZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVt
b3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXVkaW9UcmFja1ByaXZhdGVSZW1vdGU6OnVwZGF0
ZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJh
Y2tQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpsb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVNv
dXJjZVByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZh
dGVSZW1vdGU6OmR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNl
UHJpdmF0ZVJlbW90ZTo6aXNFbmRlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291
cmNlUHJpdmF0ZVJlbW90ZTo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAo
V2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpmbHVzaCk6CisgICAgICAgIChXZWJL
aXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNldEFjdGl2ZSk6CisgICAgICAgIChXZWJL
aXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVm
ZmVycyk6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmV2aWN0
Q29kZWRGcmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
OjphZGRUcmFja0J1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGU6OnJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlOjp0cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKToK
KyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVy
UHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQpOgorICAgICAgICAoV2ViS2l0
OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25D
aGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291
cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6U291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFu
Z2VkKToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNl
QnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlNv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmVucXVldWVTYW1wbGUpOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZh
dGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjp1
cGRhdGVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9WaWRl
b1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvVHJhY2tQcml2
YXRlUmVtb3RlOjp1cGRhdGVDb25maWd1cmF0aW9uKToKKwogMjAyMC0xMi0wNCAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBDYW5jZWwgaW1h
Z2UgZXh0cmFjdGlvbiB3aGVuIG5hdmlnYXRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKaW5kZXggZmVlNTQ3MzlkNTVmMGUxZDVh
MTZiNWFjOWIxNGIyYzBhYjcyZjg5MS4uYWRmN2IxOTVhYmJiMDNjMDEwZjIwODI3ZWUwYWNkZmZm
ZTA0YTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5jcHAKQEAgLTEyNCw2ICsxMjQsNyBAQCB2b2lkIE1lZGlhU291cmNlOjpzZXRQ
cml2YXRlQW5kT3BlbihSZWY8TWVkaWFTb3VyY2VQcml2YXRlPiYmIG1lZGlhU291cmNlUHJpdmF0
ZQogICAgIEFTU0VSVCghbV9wcml2YXRlKTsKICAgICBBU1NFUlQobV9tZWRpYUVsZW1lbnQpOwog
ICAgIG1fcHJpdmF0ZSA9IFdURk1vdmUobWVkaWFTb3VyY2VQcml2YXRlKTsKKyAgICBtX3ByaXZh
dGUtPnNldFRpbWVGdWRnZUZhY3RvcihjdXJyZW50VGltZUZ1ZGdlRmFjdG9yKCkpOwogCiAgICAg
Ly8gMi40LjEgQXR0YWNoaW5nIHRvIGEgbWVkaWEgZWxlbWVudAogICAgIC8vIGh0dHBzOi8vcmF3
Z2l0LmNvbS93M2MvbWVkaWEtc291cmNlLzQ1NjI3NjQ2MzQ0ZWVhMDE3MGRkMWNiYzVhM2Q1MDhj
YTc1MWFiYjgvbWVkaWEtc291cmNlLXJlc3BlYy5odG1sI21lZGlhc291cmNlLWF0dGFjaApAQCAt
NTU2LDcgKzU1Nyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhU291cmNlOjpzZXREdXJhdGlv
bkludGVybmFsKGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24pCiAgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSLCBkdXJhdGlvbik7CiAKICAgICAvLyA2LiBVcGRhdGUgdGhlIG1lZGlhIGR1cmF0
aW9uIHRvIG5ldyBkdXJhdGlvbiBhbmQgcnVuIHRoZSBIVE1MTWVkaWFFbGVtZW50IGR1cmF0aW9u
IGNoYW5nZSBhbGdvcml0aG0uCi0gICAgbV9wcml2YXRlLT5kdXJhdGlvbkNoYW5nZWQoKTsKKyAg
ICBtX3ByaXZhdGUtPmR1cmF0aW9uQ2hhbmdlZChkdXJhdGlvbik7CiAKICAgICByZXR1cm4geyB9
OwogfQpAQCAtNjI4LDYgKzYyOSw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0
aEVycm9yKE9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+IGVycm9yKQogICAgICAgICAgICAgc291
cmNlQnVmZmVyLT50cnlTaWduYWxBbGxTYW1wbGVzRW5xdWV1ZWQoKTsKICAgICAgICAgbV9wcml2
YXRlLT5tYXJrRW5kT2ZTdHJlYW0oTWVkaWFTb3VyY2VQcml2YXRlOjpFb3NOb0Vycm9yKTsKICAg
ICB9IGVsc2UgaWYgKGVycm9yID09IEVuZE9mU3RyZWFtRXJyb3I6Ok5ldHdvcmspIHsKKyAgICAg
ICAgbV9wcml2YXRlLT5tYXJrRW5kT2ZTdHJlYW0oTWVkaWFTb3VyY2VQcml2YXRlOjpFb3NOZXR3
b3JrRXJyb3IpOwogICAgICAgICAvLyDihrMgSWYgZXJyb3IgaXMgc2V0IHRvICJuZXR3b3JrIgog
ICAgICAgICBBU1NFUlQobV9tZWRpYUVsZW1lbnQpOwogICAgICAgICBpZiAobV9tZWRpYUVsZW1l
bnQtPnJlYWR5U3RhdGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50OjpIQVZFX05PVEhJTkcpIHsKQEAg
LTY0Niw2ICs2NDgsOCBAQCB2b2lkIE1lZGlhU291cmNlOjpzdHJlYW1FbmRlZFdpdGhFcnJvcihP
cHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPiBlcnJvcikKICAgICB9IGVsc2UgewogICAgICAgICAv
LyDihrMgSWYgZXJyb3IgaXMgc2V0IHRvICJkZWNvZGUiCiAgICAgICAgIEFTU0VSVChlcnJvciA9
PSBFbmRPZlN0cmVhbUVycm9yOjpEZWNvZGUpOworICAgICAgICBtX3ByaXZhdGUtPm1hcmtFbmRP
ZlN0cmVhbShNZWRpYVNvdXJjZVByaXZhdGU6OkVvc0RlY29kZUVycm9yKTsKKwogICAgICAgICBB
U1NFUlQobV9tZWRpYUVsZW1lbnQpOwogICAgICAgICBpZiAobV9tZWRpYUVsZW1lbnQtPnJlYWR5
U3RhdGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50OjpIQVZFX05PVEhJTkcpIHsKICAgICAgICAgICAg
IC8vICDihrMgSWYgdGhlIEhUTUxNZWRpYUVsZW1lbnQucmVhZHlTdGF0ZSBhdHRyaWJ1dGUgZXF1
YWxzIEhBVkVfTk9USElORwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IGNkZTE4M2Y4OTI3NDdkMzJhZGE4MmU3ZDVlMmI5
YjQzZWM1M2JkZmUuLjNkM2E2MTkyMTQ3NmFkMjY2ZDI1ZmI5MjdiNDRhYzk4Mjg0MGVlYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5jcHAKQEAgLTgxLDYgKzgxLDcgQEAgU291cmNlQnVmZmVyOjpTb3VyY2VCdWZmZXIoUmVmPFNv
dXJjZUJ1ZmZlclByaXZhdGU+JiYgc291cmNlQnVmZmVyUHJpdmF0ZSwgTWVkaWEKICAgICAsIG1f
YXBwZW5kV2luZG93RW5kKE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSkKICAgICAs
IG1fYXBwZW5kU3RhdGUoV2FpdGluZ0ZvclNlZ21lbnQpCiAgICAgLCBtX3RpbWVPZkJ1ZmZlcmlu
Z01vbml0b3IoTW9ub3RvbmljVGltZTo6bm93KCkpCisgICAgLCBtX2J1ZmZlcmVkKFRpbWVSYW5n
ZXM6OmNyZWF0ZSgpKQogICAgICwgbV9wZW5kaW5nUmVtb3ZlU3RhcnQoTWVkaWFUaW1lOjppbnZh
bGlkVGltZSgpKQogICAgICwgbV9wZW5kaW5nUmVtb3ZlRW5kKE1lZGlhVGltZTo6aW52YWxpZFRp
bWUoKSkKICAgICAsIG1fcmVtb3ZlVGltZXIoKnRoaXMsICZTb3VyY2VCdWZmZXI6OnJlbW92ZVRp
bWVyRmlyZWQpCkBAIC05NCw3ICs5NSw2IEBAIFNvdXJjZUJ1ZmZlcjo6U291cmNlQnVmZmVyKFJl
ZjxTb3VyY2VCdWZmZXJQcml2YXRlPiYmIHNvdXJjZUJ1ZmZlclByaXZhdGUsIE1lZGlhCiAKICAg
ICBtX3ByaXZhdGUtPnNldENsaWVudCh0aGlzKTsKICAgICBtX3ByaXZhdGUtPnNldElzQXR0YWNo
ZWQodHJ1ZSk7Ci0gICAgbV9wcml2YXRlLT5zZXRDdXJyZW50VGltZUZ1ZGdlRmFjdG9yKG1fc291
cmNlLT5jdXJyZW50VGltZUZ1ZGdlRmFjdG9yKCkpOwogfQogCiBTb3VyY2VCdWZmZXI6On5Tb3Vy
Y2VCdWZmZXIoKQpAQCAtMTAyLDggKzEwMiw4IEBAIFNvdXJjZUJ1ZmZlcjo6flNvdXJjZUJ1ZmZl
cigpCiAgICAgQVNTRVJUKGlzUmVtb3ZlZCgpKTsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIpOwogCi0gICAgbV9wcml2YXRlLT5zZXRDbGllbnQobnVsbHB0cik7CiAgICAgbV9wcml2YXRl
LT5zZXRJc0F0dGFjaGVkKGZhbHNlKTsKKyAgICBtX3ByaXZhdGUtPnNldENsaWVudChudWxscHRy
KTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPFRpbWVSYW5nZXM+PiBTb3VyY2VCdWZmZXI6OmJ1ZmZl
cmVkKCkgY29uc3QKQEAgLTExNiw3ICsxMTYsNyBAQCBFeGNlcHRpb25PcjxSZWY8VGltZVJhbmdl
cz4+IFNvdXJjZUJ1ZmZlcjo6YnVmZmVyZWQoKSBjb25zdAogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIAogICAgIC8vIDIuIFJldHVybiBhIG5ldyBzdGF0
aWMgbm9ybWFsaXplZCBUaW1lUmFuZ2VzIG9iamVjdCBmb3IgdGhlIG1lZGlhIHNlZ21lbnRzIGJ1
ZmZlcmVkLgotICAgIHJldHVybiBtX3ByaXZhdGUtPmJ1ZmZlcmVkKCktPmNvcHkoKTsKKyAgICBy
ZXR1cm4gbV9idWZmZXJlZC0+Y29weSgpOwogfQogCiBkb3VibGUgU291cmNlQnVmZmVyOjp0aW1l
c3RhbXBPZmZzZXQoKSBjb25zdApAQCAtNTUyLDEwICs1NTIsNiBAQCB2b2lkIFNvdXJjZUJ1ZmZl
cjo6c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKEFwcGVuZFJlc3VsdCByZXN1bHQp
CiAgICAgaWYgKGlzUmVtb3ZlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBSZXNvbHZl
IHRoZSBjaGFuZ2VzIGl0IFRyYWNrQnVmZmVycycgYnVmZmVyZWQgcmFuZ2VzCi0gICAgLy8gaW50
byB0aGUgU291cmNlQnVmZmVyJ3MgYnVmZmVyZWQgcmFuZ2VzCi0gICAgbV9wcml2YXRlLT51cGRh
dGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMobV9zb3VyY2UtPmlzRW5kZWQoKSk7Ci0KICAgICAv
LyBTZWN0aW9uIDMuNS41IEJ1ZmZlciBBcHBlbmQgQWxnb3JpdGhtLCBjdGQuCiAgICAgLy8gaHR0
cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL2RlZmF1bHQvbWVkaWEtc291
cmNlL21lZGlhLXNvdXJjZS5odG1sI3NvdXJjZWJ1ZmZlci1idWZmZXItYXBwZW5kCiAKQEAgLTYz
NCw3ICs2MzAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6cmVtb3ZlVGltZXJGaXJlZCgpCiAgICAg
c2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkudXBkYXRlZW5kRXZlbnQpOwogfQogCi1zaXplX3Qg
U291cmNlQnVmZmVyOjptYXhpbXVtQnVmZmVyU2l6ZSgpIGNvbnN0Cit1aW50NjRfdCBTb3VyY2VC
dWZmZXI6Om1heGltdW1CdWZmZXJTaXplKCkgY29uc3QKIHsKICAgICBpZiAoaXNSZW1vdmVkKCkp
CiAgICAgICAgIHJldHVybiAwOwpAQCAtNjc4LDEwICs2NzQsMTIgQEAgdm9pZCBTb3VyY2VCdWZm
ZXI6OnNldEFjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgbV9zb3VyY2UtPnNvdXJjZUJ1ZmZl
ckRpZENoYW5nZUFjdGl2ZVN0YXRlKCp0aGlzLCBhY3RpdmUpOwogfQogCi12b2lkIFNvdXJjZUJ1
ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQo
Y29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50JiBzZWdtZW50KQordm9pZCBTb3VyY2VCdWZmZXI6
OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRp
YWxpemF0aW9uU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoaXNSZW1vdmVkKCkpCisgICAgaWYgKGlzUmVt
b3ZlZCgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsK
KyAgICB9CiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogCkBAIC03MDQsNiArNzAy
LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5p
dGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXQKICAgICAvLyB3aXRoIHRoZSBkZWNvZGUgZXJy
b3IgcGFyYW1ldGVyIHNldCB0byB0cnVlIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICBpZiAo
c2VnbWVudC5hdWRpb1RyYWNrcy5pc0VtcHR5KCkgJiYgc2VnbWVudC52aWRlb1RyYWNrcy5pc0Vt
cHR5KCkgJiYgc2VnbWVudC50ZXh0VHJhY2tzLmlzRW1wdHkoKSkgewogICAgICAgICBhcHBlbmRF
cnJvcih0cnVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNzEzLDYgKzcxMiw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VC
dWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0CiAg
ICAgICAgIC8vIHdpdGggdGhlIGRlY29kZSBlcnJvciBwYXJhbWV0ZXIgc2V0IHRvIHRydWUgYW5k
IGFib3J0IHRoZXNlIHN0ZXBzLgogICAgICAgICBpZiAoIXZhbGlkYXRlSW5pdGlhbGl6YXRpb25T
ZWdtZW50KHNlZ21lbnQpKSB7CiAgICAgICAgICAgICBhcHBlbmRFcnJvcih0cnVlKTsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApAQCAtODE1LDEwICs4MTUsMTAgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXQKICAgICAg
ICAgICAgIC8vIHJlZmVyZW5jZWQgYnkgdGhlIGF1ZGlvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUg
SFRNTE1lZGlhRWxlbWVudC4KICAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+
ZW5zdXJlQXVkaW9UcmFja3MoKS5hcHBlbmQobmV3QXVkaW9UcmFjay5jb3B5UmVmKCkpOwogCi0g
ICAgICAgICAgICAvLyA1LjIuOCBDcmVhdGUgYSBuZXcgdHJhY2sgYnVmZmVyIHRvIHN0b3JlIGNv
ZGVkIGZyYW1lcyBmb3IgdGhpcyB0cmFjay4KLSAgICAgICAgICAgIG1fcHJpdmF0ZS0+YWRkVHJh
Y2tCdWZmZXIobmV3QXVkaW9UcmFjay0+aWQoKSwgYXVkaW9UcmFja0luZm8uZGVzY3JpcHRpb24p
OwotCiAgICAgICAgICAgICBtX2F1ZGlvQ29kZWNzLmFwcGVuZChhdWRpb1RyYWNrSW5mby5kZXNj
cmlwdGlvbi0+Y29kZWMoKSk7CisKKyAgICAgICAgICAgIC8vIDUuMi44IENyZWF0ZSBhIG5ldyB0
cmFjayBidWZmZXIgdG8gc3RvcmUgY29kZWQgZnJhbWVzIGZvciB0aGlzIHRyYWNrLgorICAgICAg
ICAgICAgbV9wcml2YXRlLT5hZGRUcmFja0J1ZmZlcihuZXdBdWRpb1RyYWNrLT5pZCgpLCBXVEZN
b3ZlKGF1ZGlvVHJhY2tJbmZvLmRlc2NyaXB0aW9uKSk7CiAgICAgICAgIH0KIAogICAgICAgICAv
LyA1LjMgRm9yIGVhY2ggdmlkZW8gdHJhY2sgaW4gdGhlIGluaXRpYWxpemF0aW9uIHNlZ21lbnQs
IHJ1biBmb2xsb3dpbmcgc3RlcHM6CkBAIC04NTAsMTAgKzg1MCwxMCBAQCB2b2lkIFNvdXJjZUJ1
ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQo
Y29uc3QgSW5pdAogICAgICAgICAgICAgLy8gcmVmZXJlbmNlZCBieSB0aGUgdmlkZW9UcmFja3Mg
YXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50LgogICAgICAgICAgICAgbV9zb3VyY2Ut
Pm1lZGlhRWxlbWVudCgpLT5lbnN1cmVWaWRlb1RyYWNrcygpLmFwcGVuZChuZXdWaWRlb1RyYWNr
LmNvcHlSZWYoKSk7CiAKLSAgICAgICAgICAgIC8vIDUuMy44IENyZWF0ZSBhIG5ldyB0cmFjayBi
dWZmZXIgdG8gc3RvcmUgY29kZWQgZnJhbWVzIGZvciB0aGlzIHRyYWNrLgotICAgICAgICAgICAg
bV9wcml2YXRlLT5hZGRUcmFja0J1ZmZlcihuZXdWaWRlb1RyYWNrLT5pZCgpLCB2aWRlb1RyYWNr
SW5mby5kZXNjcmlwdGlvbik7Ci0KICAgICAgICAgICAgIG1fdmlkZW9Db2RlY3MuYXBwZW5kKHZp
ZGVvVHJhY2tJbmZvLmRlc2NyaXB0aW9uLT5jb2RlYygpKTsKKworICAgICAgICAgICAgLy8gNS4z
LjggQ3JlYXRlIGEgbmV3IHRyYWNrIGJ1ZmZlciB0byBzdG9yZSBjb2RlZCBmcmFtZXMgZm9yIHRo
aXMgdHJhY2suCisgICAgICAgICAgICBtX3ByaXZhdGUtPmFkZFRyYWNrQnVmZmVyKG5ld1ZpZGVv
VHJhY2stPmlkKCksIFdURk1vdmUodmlkZW9UcmFja0luZm8uZGVzY3JpcHRpb24pKTsKICAgICAg
ICAgfQogCiAgICAgICAgIC8vIDUuNCBGb3IgZWFjaCB0ZXh0IHRyYWNrIGluIHRoZSBpbml0aWFs
aXphdGlvbiBzZWdtZW50LCBydW4gZm9sbG93aW5nIHN0ZXBzOgpAQCAtODgyLDEwICs4ODIsMTAg
QEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlh
bGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXQKICAgICAgICAgICAgIC8vIHJlZmVyZW5jZWQgYnkg
dGhlIHRleHRUcmFja3MgYXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50LgogICAgICAg
ICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT5lbnN1cmVUZXh0VHJhY2tzKCkuYXBwZW5k
KG5ld1RleHRUcmFjay5jb3B5UmVmKCkpOwogCi0gICAgICAgICAgICAvLyA1LjQuNyBDcmVhdGUg
YSBuZXcgdHJhY2sgYnVmZmVyIHRvIHN0b3JlIGNvZGVkIGZyYW1lcyBmb3IgdGhpcyB0cmFjay4K
LSAgICAgICAgICAgIG1fcHJpdmF0ZS0+YWRkVHJhY2tCdWZmZXIobmV3VGV4dFRyYWNrLT5pZCgp
LCB0ZXh0VHJhY2tJbmZvLmRlc2NyaXB0aW9uKTsKLQogICAgICAgICAgICAgbV90ZXh0Q29kZWNz
LmFwcGVuZCh0ZXh0VHJhY2tJbmZvLmRlc2NyaXB0aW9uLT5jb2RlYygpKTsKKworICAgICAgICAg
ICAgLy8gNS40LjcgQ3JlYXRlIGEgbmV3IHRyYWNrIGJ1ZmZlciB0byBzdG9yZSBjb2RlZCBmcmFt
ZXMgZm9yIHRoaXMgdHJhY2suCisgICAgICAgICAgICBtX3ByaXZhdGUtPmFkZFRyYWNrQnVmZmVy
KG5ld1RleHRUcmFjay0+aWQoKSwgV1RGTW92ZSh0ZXh0VHJhY2tJbmZvLmRlc2NyaXB0aW9uKSk7
CiAgICAgICAgIH0KIAogICAgICAgICAvLyA1LjUgSWYgYWN0aXZlIHRyYWNrIGZsYWcgZXF1YWxz
IHRydWUsIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CkBAIC05MDIsNiArOTAyLDcgQEAg
dm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6
YXRpb25TZWdtZW50KGNvbnN0IEluaXQKICAgICAvLyAoTm90ZTogSXNzdWUgIzE1NSBhZGRzIHRo
aXMgc3RlcCBhZnRlciBzdGVwIDU6KQogICAgIC8vIDYuIFNldCAgcGVuZGluZyBpbml0aWFsaXph
dGlvbiBzZWdtZW50IGZvciBjaGFuZ2VUeXBlIGZsYWcgIHRvIGZhbHNlLgogICAgIG1fcGVuZGlu
Z0luaXRpYWxpemF0aW9uU2VnbWVudEZvckNoYW5nZVR5cGUgPSBmYWxzZTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwogCiAgICAgLy8gNi4gSWYgdGhlIEhUTUxNZWRpYUVsZW1lbnQucmVhZHlT
dGF0ZSBhdHRyaWJ1dGUgaXMgSEFWRV9OT1RISU5HLCB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0
ZXBzOgogICAgIGlmIChtX3ByaXZhdGUtPnJlYWR5U3RhdGUoKSA9PSBNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZTo6SGF2ZU5vdGhpbmcpIHsKQEAgLTEwMTEsMTYgKzEwMTIsNiBAQCBib29sIFNvdXJj
ZUJ1ZmZlcjo6aGFzVmlkZW8oKSBjb25zdAogICAgIHJldHVybiBtX3ZpZGVvVHJhY2tzICYmIG1f
dmlkZW9UcmFja3MtPmxlbmd0aCgpOwogfQogCi1ib29sIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVm
ZmVyUHJpdmF0ZUhhc0F1ZGlvKCkgY29uc3QKLXsKLSAgICByZXR1cm4gaGFzQXVkaW8oKTsKLX0K
LQotYm9vbCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbygpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGhhc1ZpZGVvKCk7Ci19Ci0KIHZvaWQgU291cmNlQnVmZmVyOjp2aWRl
b1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2smIHRyYWNrKQogewogICAgIC8vIDIuNC41
IENoYW5nZXMgdG8gc2VsZWN0ZWQvZW5hYmxlZCB0cmFjayBzdGF0ZQpAQCAtMTIwNCw5ICsxMTk1
LDkgQEAgYm9vbCBTb3VyY2VCdWZmZXI6OmNhblBsYXlUaHJvdWdoUmFuZ2UoUGxhdGZvcm1UaW1l
UmFuZ2VzJiByYW5nZXMpCiAgICAgcmV0dXJuIHVuYnVmZmVyZWRUaW1lLnRvRG91YmxlKCkgLyBt
X2F2ZXJhZ2VCdWZmZXJSYXRlIDwgdGltZVJlbWFpbmluZy50b0RvdWJsZSgpOwogfQogCi1zaXpl
X3QgU291cmNlQnVmZmVyOjpleHRyYU1lbW9yeUNvc3QoKSBjb25zdAordWludDY0X3QgU291cmNl
QnVmZmVyOjpleHRyYU1lbW9yeUNvc3QoKSBjb25zdAogewotICAgIHNpemVfdCBleHRyYU1lbW9y
eUNvc3QgPSBtX3BlbmRpbmdBcHBlbmREYXRhLmNhcGFjaXR5KCk7CisgICAgdWludDY0X3QgZXh0
cmFNZW1vcnlDb3N0ID0gbV9wZW5kaW5nQXBwZW5kRGF0YS5jYXBhY2l0eSgpOwogICAgIGV4dHJh
TWVtb3J5Q29zdCArPSBtX3ByaXZhdGUtPnRvdGFsVHJhY2tCdWZmZXJTaXplSW5CeXRlcygpOwog
CiAgICAgcmV0dXJuIGV4dHJhTWVtb3J5Q29zdDsKQEAgLTEyMTQsMTEgKzEyMDUsMTEgQEAgc2l6
ZV90IFNvdXJjZUJ1ZmZlcjo6ZXh0cmFNZW1vcnlDb3N0KCkgY29uc3QKIAogdm9pZCBTb3VyY2VC
dWZmZXI6OnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKCkKIHsKLSAgICBzaXplX3QgZXh0cmFN
ZW1vcnlDb3N0ID0gdGhpcy0+ZXh0cmFNZW1vcnlDb3N0KCk7CisgICAgdWludDY0X3QgZXh0cmFN
ZW1vcnlDb3N0ID0gdGhpcy0+ZXh0cmFNZW1vcnlDb3N0KCk7CiAgICAgaWYgKGV4dHJhTWVtb3J5
Q29zdCA8PSBtX3JlcG9ydGVkRXh0cmFNZW1vcnlDb3N0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBzaXplX3QgZXh0cmFNZW1vcnlDb3N0RGVsdGEgPSBleHRyYU1lbW9yeUNvc3QgLSBtX3JlcG9y
dGVkRXh0cmFNZW1vcnlDb3N0OworICAgIHVpbnQ2NF90IGV4dHJhTWVtb3J5Q29zdERlbHRhID0g
ZXh0cmFNZW1vcnlDb3N0IC0gbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdDsKICAgICBtX3JlcG9y
dGVkRXh0cmFNZW1vcnlDb3N0ID0gZXh0cmFNZW1vcnlDb3N0OwogCiAgICAgSlNDOjpKU0xvY2tI
b2xkZXIgbG9jayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkpOwpAQCAtMTI0Miw3ICsx
MjMzLDcgQEAgTWVkaWFUaW1lIFNvdXJjZUJ1ZmZlcjo6bWluaW11bVVwY29taW5nUHJlc2VudGF0
aW9uVGltZUZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmkKICAgICByZXR1cm4gbV9wcml2YXRlLT5t
aW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lRm9yVHJhY2tJRCh0cmFja0lEKTsKIH0KIAot
dm9pZCBTb3VyY2VCdWZmZXI6OnNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRChjb25zdCBB
dG9tU3RyaW5nJiB0cmFja0lELCBzaXplX3QgbWF4UXVldWVEZXB0aCkKK3ZvaWQgU291cmNlQnVm
ZmVyOjpzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYgdHJh
Y2tJRCwgdWludDY0X3QgbWF4UXVldWVEZXB0aCkKIHsKICAgICBtX3ByaXZhdGUtPnNldE1heGlt
dW1RdWV1ZURlcHRoRm9yVHJhY2tJRCh0cmFja0lELCBtYXhRdWV1ZURlcHRoKTsKIH0KQEAgLTEz
MDIsMTQgKzEyOTMsMjQgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNldFNob3VsZEdlbmVyYXRlVGlt
ZXN0YW1wcyhib29sIGZsYWcpCiAgICAgbV9wcml2YXRlLT5zZXRTaG91bGRHZW5lcmF0ZVRpbWVz
dGFtcHMoZmxhZyk7CiB9CiAKK3ZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRl
QnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCBmbGFnKQoreworICAgIG1fYnVmZmVyZWREaXJ0eSA9
IGZsYWc7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVy
ZWRSYW5nZXNDaGFuZ2VkKGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYgdGltZVJhbmdlcykKK3sK
KyAgICBtX2J1ZmZlcmVkLT5yYW5nZXMoKSA9IHRpbWVSYW5nZXM7Cit9CisKIGJvb2wgU291cmNl
QnVmZmVyOjppc0J1ZmZlcmVkRGlydHkoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUt
PmlzQnVmZmVyZWREaXJ0eSgpOworICAgIHJldHVybiBtX2J1ZmZlcmVkRGlydHk7CiB9CiAKIHZv
aWQgU291cmNlQnVmZmVyOjpzZXRCdWZmZXJlZERpcnR5KGJvb2wgZmxhZykKIHsKLSAgICBtX3By
aXZhdGUtPnNldEJ1ZmZlcmVkRGlydHkoZmxhZyk7CisgICAgbV9idWZmZXJlZERpcnR5ID0gZmxh
ZzsKIH0KIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKaW5kZXggZDE1YzI5YmNkODg2MmU5
MmI0NmQ5M2IwMTI1MDUwMTkzNDllMmNmOC4uMjI5M2JjNTA3N2JiMTc2OTg0MjJkZTBlNjZlZGY0
YTc5YjFmYWU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L1NvdXJjZUJ1ZmZlci5oCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25P
cjx2b2lkPiByZW1vdmUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJik7CiAgICAg
RXhjZXB0aW9uT3I8dm9pZD4gY2hhbmdlVHlwZShjb25zdCBTdHJpbmcmKTsKIAotICAgIGNvbnN0
IFRpbWVSYW5nZXMmIGJ1ZmZlcmVkSW50ZXJuYWwoKSBjb25zdCB7IEFTU0VSVChtX3ByaXZhdGUt
PmJ1ZmZlcmVkKCkpOyByZXR1cm4gKm1fcHJpdmF0ZS0+YnVmZmVyZWQoKTsgfQorICAgIGNvbnN0
IFRpbWVSYW5nZXMmIGJ1ZmZlcmVkSW50ZXJuYWwoKSBjb25zdCB7IEFTU0VSVChtX2J1ZmZlcmVk
KTsgcmV0dXJuICptX2J1ZmZlcmVkOyB9CiAKICAgICB2b2lkIGFib3J0SWZVcGRhdGluZygpOwog
ICAgIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpOwpAQCAtMTQ4LDE1ICsxNDgsMTUgQEAg
cHJpdmF0ZToKICAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5h
bDsKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQKLSAgICB2b2lkIHNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXRpYWxp
emF0aW9uU2VnbWVudCYpIGZpbmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJl
Y2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2
YXRlU3RyZWFtRW5kZWRXaXRoRGVjb2RlRXJyb3IoKSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1
ZmZlclByaXZhdGVBcHBlbmRFcnJvcihib29sIGRlY29kZUVycm9yKSBmaW5hbDsKKyAgICB2b2lk
IHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQpIGZpbmFsOwog
ICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRp
bWUmIGR1cmF0aW9uKSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQYXJz
ZVNhbXBsZShkb3VibGUgc2FtcGxlRHVyYXRpb24pIGZpbmFsOwogICAgIHZvaWQgc291cmNlQnVm
ZmVyUHJpdmF0ZURpZERyb3BTYW1wbGUoKSBmaW5hbDsKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlclBy
aXZhdGVTdHJlYW1FbmRlZFdpdGhEZWNvZGVFcnJvcigpIGZpbmFsOwotICAgIGJvb2wgc291cmNl
QnVmZmVyUHJpdmF0ZUhhc0F1ZGlvKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzb3VyY2VCdWZm
ZXJQcml2YXRlSGFzVmlkZW8oKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlclBy
aXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQpIGZpbmFsOworICAgIHZvaWQgc291cmNl
QnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGJvb2wpIGZpbmFsOworICAgIHZvaWQg
c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChjb25zdCBQbGF0Zm9ybVRp
bWVSYW5nZXMmKSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZl
UmVuZGVyaW5nRXJyb3IoaW50IGVycm9yQ29kZSkgZmluYWw7CiAKICAgICAvLyBBdWRpb1RyYWNr
Q2xpZW50CkBAIC0xODUsMTMgKzE4NSwxMyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCB2YWxpZGF0
ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0aWFsaXphdGlvblNlZ21lbnQmKTsKIAot
ICAgIHNpemVfdCBtYXhpbXVtQnVmZmVyU2l6ZSgpIGNvbnN0OworICAgIHVpbnQ2NF90IG1heGlt
dW1CdWZmZXJTaXplKCkgY29uc3Q7CiAKICAgICB2b2lkIG1vbml0b3JCdWZmZXJpbmdSYXRlKCk7
CiAKICAgICB2b2lkIHJlbW92ZVRpbWVyRmlyZWQoKTsKIAotICAgIHNpemVfdCBleHRyYU1lbW9y
eUNvc3QoKSBjb25zdDsKKyAgICB1aW50NjRfdCBleHRyYU1lbW9yeUNvc3QoKSBjb25zdDsKICAg
ICB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKCk7CiAKICAgICB2b2lkIGFwcGVuZEVy
cm9yKGJvb2wpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBP
UlQgVmVjdG9yPFN0cmluZz4gYnVmZmVyZWRTYW1wbGVzRm9yVHJhY2tJRChjb25zdCBBdG9tU3Ry
aW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gZW5xdWV1ZWRTYW1wbGVz
Rm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFU
aW1lIG1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWVGb3JUcmFja0lEKGNvbnN0IEF0b21T
dHJpbmcmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1heGltdW1RdWV1ZURlcHRoRm9y
VHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJiwgdWlu
dDY0X3QpOwogCiAgICAgUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGU+IG1fcHJpdmF0ZTsKICAgICBN
ZWRpYVNvdXJjZSogbV9zb3VyY2U7CkBAIC0yMzEsOCArMjMxLDEwIEBAIHByaXZhdGU6CiAgICAg
TW9ub3RvbmljVGltZSBtX3RpbWVPZkJ1ZmZlcmluZ01vbml0b3I7CiAgICAgZG91YmxlIG1fYnVm
ZmVyZWRTaW5jZUxhc3RNb25pdG9yIHsgMCB9OwogICAgIGRvdWJsZSBtX2F2ZXJhZ2VCdWZmZXJS
YXRlIHsgMCB9OworICAgIGJvb2wgbV9idWZmZXJlZERpcnR5IHsgdHJ1ZSB9OworICAgIFJlZlB0
cjxUaW1lUmFuZ2VzPiBtX2J1ZmZlcmVkOwogCi0gICAgc2l6ZV90IG1fcmVwb3J0ZWRFeHRyYU1l
bW9yeUNvc3QgeyAwIH07CisgICAgdWludDY0X3QgbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdCB7
IDAgfTsKIAogICAgIE1lZGlhVGltZSBtX3BlbmRpbmdSZW1vdmVTdGFydDsKICAgICBNZWRpYVRp
bWUgbV9wZW5kaW5nUmVtb3ZlRW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVNvdXJjZVByaXZhdGUuaAppbmRleCA2NTcwYmY2ZWU5NjgyN2UwMDk0
NmY5ZjE5NjA4OGFkYzJjNGJkYjYzLi4yOTMyODg2M2IxNGYyNmRjYjljYzExYzAyMzY2MGQ1MjAz
Yjg5MGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVNvdXJjZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVNvdXJjZVByaXZhdGUuaApAQCAtNTUsMTAgKzU1LDExIEBAIHB1YmxpYzoKICAgICAgICAg
UmVhY2hlZElkTGltaXQKICAgICB9OwogICAgIHZpcnR1YWwgQWRkU3RhdHVzIGFkZFNvdXJjZUJ1
ZmZlcihjb25zdCBDb250ZW50VHlwZSYsIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlPiYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikgPSAwOwogICAgIGVudW0gRW5k
T2ZTdHJlYW1TdGF0dXMgeyBFb3NOb0Vycm9yLCBFb3NOZXR3b3JrRXJyb3IsIEVvc0RlY29kZUVy
cm9yIH07CiAgICAgdmlydHVhbCB2b2lkIG1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1
cykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bm1hcmtFbmRPZlN0cmVhbSgpID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNFbmRlZCgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSkgPSAwOwpAQCAtNjYsMTAgKzY3
LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2FpdEZvclNlZWtDb21wbGV0ZWQoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlZWtDb21wbGV0ZWQoKSA9IDA7CiAKKyAgICB2b2lkIHNl
dFRpbWVGdWRnZUZhY3Rvcihjb25zdCBNZWRpYVRpbWUmIGZ1ZGdlRmFjdG9yKSB7IG1fdGltZUZ1
ZGdlRmFjdG9yID0gZnVkZ2VGYWN0b3I7IH0KKyAgICBNZWRpYVRpbWUgdGltZUZ1ZGdlRmFjdG9y
KCkgY29uc3QgeyByZXR1cm4gbV90aW1lRnVkZ2VGYWN0b3I7IH0KICAgICB2b2lkIHNldElzU2Vl
a2luZyhib29sIGZsYWcpIHsgbV9pc1NlZWtpbmcgPSBmbGFnOyB9CiAgICAgYm9vbCBpc1NlZWtp
bmcoKSBjb25zdCB7IHJldHVybiBtX2lzU2Vla2luZzsgfQogCiBwcml2YXRlOgorICAgIE1lZGlh
VGltZSBtX3RpbWVGdWRnZUZhY3RvcjsKICAgICBib29sIG1faXNTZWVraW5nIHsgZmFsc2UgfTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJj
ZUJ1ZmZlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291
cmNlQnVmZmVyUHJpdmF0ZS5jcHAKaW5kZXggMGYzZmE2NmQ5OTFlYjM5YTMwNjFhZTJmOGViZmVl
YjJkNTMwNDVjOS4uMTk3ODMxYWFlNjZmOGRhZDQzOWFlN2VmZWZiNjY2ODI5OGE0MmU0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJp
dmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVm
ZmVyUHJpdmF0ZS5jcHAKQEAgLTY1LDYgKzY1LDggQEAgU291cmNlQnVmZmVyUHJpdmF0ZTo6U291
cmNlQnVmZmVyUHJpdmF0ZSgpCiB7CiB9CiAKK1NvdXJjZUJ1ZmZlclByaXZhdGU6On5Tb3VyY2VC
dWZmZXJQcml2YXRlKCkgPSBkZWZhdWx0OworCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnJl
c2V0VGltZXN0YW1wT2Zmc2V0SW5UcmFja0J1ZmZlcnMoKQogewogICAgIGZvciAoYXV0byYgdHJh
Y2tCdWZmZXIgOiBtX3RyYWNrQnVmZmVyTWFwLnZhbHVlcygpKSB7CkBAIC03Myw2ICs3NSwxMiBA
QCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnJlc2V0VGltZXN0YW1wT2Zmc2V0SW5UcmFja0J1
ZmZlcnMoKQogICAgIH0KIH0KIAordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpzZXRCdWZmZXJl
ZERpcnR5KGJvb2wgZmxhZykKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50
LT5zb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoZmxhZyk7Cit9CisKIHZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6cmVzZXRUcmFja0J1ZmZlcnMoKQogewogICAgIGZvciAo
YXV0byYgdHJhY2tCdWZmZXJQYWlyIDogbV90cmFja0J1ZmZlck1hcC52YWx1ZXMoKSkgewpAQCAt
OTYsNiArMTA0LDEzIEBAIE1lZGlhVGltZSBTb3VyY2VCdWZmZXJQcml2YXRlOjpoaWdoZXN0UHJl
c2VudGF0aW9uVGltZXN0YW1wKCkgY29uc3QKICAgICByZXR1cm4gaGlnaGVzdFRpbWU7CiB9CiAK
K3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0QnVmZmVyZWRSYW5nZXMoY29uc3QgUGxhdGZv
cm1UaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQoreworICAgIG1fYnVmZmVyZWQtPnJhbmdlcygpID0g
dGltZVJhbmdlczsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zb3VyY2VC
dWZmZXJQcml2YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2VkKG1fYnVmZmVyZWQtPnJhbmdlcygpKTsK
K30KKwogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjp1cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1
ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVkKQogewogICAgIC8vIDMuMSBBdHRyaWJ1dGVzLCBidWZm
ZXJlZApAQCAtMTEyLDcgKzEyNyw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6dXBkYXRl
QnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCkKICAgICAvLyBOT1RF
OiBTaG9ydCBjaXJjdWl0IHRoZSBmb2xsb3dpbmcgaWYgbm9uZSBvZiB0aGUgVHJhY2tCdWZmZXJz
IGhhdmUgYnVmZmVyZWQgcmFuZ2VzIHRvIGF2b2lkIGdlbmVyYXRpbmcKICAgICAvLyBhIHNpbmds
ZSByYW5nZSBvZiB7MCwgMH0uCiAgICAgaWYgKGhpZ2hlc3RFbmRUaW1lLmlzTmVnYXRpdmVJbmZp
bml0ZSgpKSB7Ci0gICAgICAgIG1fYnVmZmVyZWQtPnJhbmdlcygpID0gUGxhdGZvcm1UaW1lUmFu
Z2VzKCk7CisgICAgICAgIHNldEJ1ZmZlcmVkUmFuZ2VzKFBsYXRmb3JtVGltZVJhbmdlcygpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM3LDEwICsxNTIsMjAgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlOjp1cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3Vy
Y2VJc0VuZGVkKQogCiAgICAgLy8gNS4gSWYgaW50ZXJzZWN0aW9uIHJhbmdlcyBkb2VzIG5vdCBj
b250YWluIHRoZSBleGFjdCBzYW1lIHJhbmdlIGluZm9ybWF0aW9uIGFzIHRoZSBjdXJyZW50IHZh
bHVlIG9mIHRoaXMgYXR0cmlidXRlLAogICAgIC8vICAgIHRoZW4gdXBkYXRlIHRoZSBjdXJyZW50
IHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIHRvIGludGVyc2VjdGlvbiByYW5nZXMuCi0gICAgbV9i
dWZmZXJlZC0+cmFuZ2VzKCkgPSBpbnRlcnNlY3Rpb25SYW5nZXM7CisgICAgc2V0QnVmZmVyZWRS
YW5nZXMoaW50ZXJzZWN0aW9uUmFuZ2VzKTsKICAgICBzZXRCdWZmZXJlZERpcnR5KHRydWUpOwog
fQogCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZENvbXBsZXRlZChib29sIHBhcnNp
bmdTdWNjZWVkZWQsIGJvb2wgaXNFbmRlZCkKK3sKKyAgICAvLyBSZXNvbHZlIHRoZSBjaGFuZ2Vz
IGluIFRyYWNrQnVmZmVycycgYnVmZmVyZWQgcmFuZ2VzCisgICAgLy8gaW50byB0aGUgU291cmNl
QnVmZmVyJ3MgYnVmZmVyZWQgcmFuZ2VzCisgICAgdXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZm
ZXJzKGlzRW5kZWQpOworCisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c291
cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKHBhcnNpbmdTdWNjZWVkZWQgPyBTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2NlZWRlZCA6IFNvdXJj
ZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdDo6UGFyc2luZ0ZhaWxlZCk7Cit9CisK
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6cmVlbnF1ZVNhbXBsZXMoY29uc3QgQXRvbVN0cmlu
ZyYgdHJhY2tJRCkKIHsKICAgICBpZiAoIW1faXNBdHRhY2hlZCkKQEAgLTE3OCw5ICsyMDMsOSBA
QCBWZWN0b3I8U3RyaW5nPiBTb3VyY2VCdWZmZXJQcml2YXRlOjpidWZmZXJlZFNhbXBsZXNGb3JU
cmFja0lEKGNvbnN0IEF0b21TdHJpbmcmCiB7CiAgICAgYXV0byBpdCA9IG1fdHJhY2tCdWZmZXJN
YXAuZmluZCh0cmFja0lEKTsKICAgICBpZiAoaXQgPT0gbV90cmFja0J1ZmZlck1hcC5lbmQoKSkK
LSAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CisgICAgICAgIHJldHVybiB7IH07CiAK
LSAgICBUcmFja0J1ZmZlciYgdHJhY2tCdWZmZXIgPSBpdC0+dmFsdWU7CisgICAgYXV0byYgdHJh
Y2tCdWZmZXIgPSBpdC0+dmFsdWU7CiAgICAgVmVjdG9yPFN0cmluZz4gc2FtcGxlRGVzY3JpcHRp
b25zOwogICAgIGZvciAoYXV0byYgcGFpciA6IHRyYWNrQnVmZmVyLnNhbXBsZXMuZGVjb2RlT3Jk
ZXIoKSkKICAgICAgICAgc2FtcGxlRGVzY3JpcHRpb25zLmFwcGVuZCh0b1N0cmluZygqcGFpci5z
ZWNvbmQpKTsKQEAgLTMxNyw3ICszNDIsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnBy
b3ZpZGVNZWRpYURhdGEoVHJhY2tCdWZmZXImIHRyYWNrQnVmZmVyLCBjb25zdCBBdG9tUwogICAg
IHVwZGF0ZU1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWUodHJhY2tCdWZmZXIsIHRyYWNr
SUQpOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgREVCVUdfTE9HKExPR0lERU5U
SUZJRVIsICJlbnF1ZXVlZCAiLCBlbnF1ZXVlZFNhbXBsZXMsICIgc2FtcGxlcywgIiwgc3RhdGlj
X2Nhc3Q8c2l6ZV90Pih0cmFja0J1ZmZlci5kZWNvZGVRdWV1ZS5zaXplKCkpLCAiIHJlbWFpbmlu
ZyIpOworICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiZW5xdWV1ZWQgIiwgZW5xdWV1ZWRT
YW1wbGVzLCAiIHNhbXBsZXMsICIsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0cmFja0J1ZmZlci5k
ZWNvZGVRdWV1ZS5zaXplKCkpLCAiIHJlbWFpbmluZyIpOwogI2VuZGlmCiAKICAgICBhbGxTYW1w
bGVzSW5UcmFja0VucXVldWVkKHRyYWNrSUQpOwpAQCAtMzM5LDcgKzM2NCw3IEBAIHZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZTo6cmVlbnF1ZXVlTWVkaWFGb3JUaW1lKFRyYWNrQnVmZmVyJiB0cmFj
a0J1ZmZlciwgY29uc3QKICAgICAgICAgY3VycmVudFNhbXBsZVBUU0l0ZXJhdG9yID0gdHJhY2tC
dWZmZXIuc2FtcGxlcy5wcmVzZW50YXRpb25PcmRlcigpLmZpbmRTYW1wbGVTdGFydGluZ09uT3JB
ZnRlclByZXNlbnRhdGlvblRpbWUodGltZSk7CiAKICAgICBpZiAoY3VycmVudFNhbXBsZVBUU0l0
ZXJhdG9yID09IHRyYWNrQnVmZmVyLnNhbXBsZXMucHJlc2VudGF0aW9uT3JkZXIoKS5lbmQoKQot
ICAgICAgICB8fCAoY3VycmVudFNhbXBsZVBUU0l0ZXJhdG9yLT5maXJzdCAtIHRpbWUpID4gbV9j
dXJyZW50VGltZUZ1ZGdlRmFjdG9yKQorICAgICAgICB8fCAoY3VycmVudFNhbXBsZVBUU0l0ZXJh
dG9yLT5maXJzdCAtIHRpbWUpID4gdGltZUZ1ZGdlRmFjdG9yKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIFNlYWNoIGJhY2t3YXJkIGZvciB0aGUgcHJldmlvdXMgc3luYyBzYW1wbGUuCkBA
IC0zNjcsNyArMzkyLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpyZWVucXVldWVNZWRp
YUZvclRpbWUoVHJhY2tCdWZmZXImIHRyYWNrQnVmZmVyLCBjb25zdAogICAgIHRyYWNrQnVmZmVy
Lm5lZWRzUmVlbnF1ZXVlaW5nID0gZmFsc2U7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZTo6cmVlbnF1ZXVlTWVkaWFJZk5lZWRlZChjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBz
aXplX3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgc2l6ZV90IG1heGltdW1CdWZmZXJTaXpl
KQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpyZWVucXVldWVNZWRpYUlmTmVlZGVkKGNvbnN0
IE1lZGlhVGltZSYgY3VycmVudFRpbWUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNp
dHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplKQogewogICAgIGZvciAoYXV0byYgdHJhY2tC
dWZmZXJQYWlyIDogbV90cmFja0J1ZmZlck1hcCkgewogICAgICAgICBUcmFja0J1ZmZlciYgdHJh
Y2tCdWZmZXIgPSB0cmFja0J1ZmZlclBhaXIudmFsdWU7CkBAIC0zOTgsNyArNDIzLDcgQEAgc3Rh
dGljIFBsYXRmb3JtVGltZVJhbmdlcyByZW1vdmVTYW1wbGVzRnJvbVRyYWNrQnVmZmVyKGNvbnN0
IERlY29kZU9yZGVyU2FtcGxlTWEKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBNZWRp
YVRpbWUgZWFybGllc3RTYW1wbGUgPSBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCk7
CiAgICAgTWVkaWFUaW1lIGxhdGVzdFNhbXBsZSA9IE1lZGlhVGltZTo6emVyb1RpbWUoKTsKLSAg
ICBzaXplX3QgYnl0ZXNSZW1vdmVkID0gMDsKKyAgICB1aW50NjRfdCBieXRlc1JlbW92ZWQgPSAw
OwogICAgIGF1dG8gbG9nSWRlbnRpZmllciA9IFdURjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmll
cihzb3VyY2VCdWZmZXJQcml2YXRlLT5sb2dDbGFzc05hbWUoKSwgbG9nUHJlZml4LCBzb3VyY2VC
dWZmZXJQcml2YXRlLT5sb2dJZGVudGlmaWVyKCkpOwogICAgIGF1dG8mIGxvZ2dlciA9IHNvdXJj
ZUJ1ZmZlclByaXZhdGUtPmxvZ2dlcigpOwogICAgIGF1dG8gd2lsbExvZyA9IGxvZ2dlci53aWxs
TG9nKHNvdXJjZUJ1ZmZlclByaXZhdGUtPmxvZ0NoYW5uZWwoKSwgV1RGTG9nTGV2ZWw6OkRlYnVn
KTsKQEAgLTQwOCw3ICs0MzMsNyBAQCBzdGF0aWMgUGxhdGZvcm1UaW1lUmFuZ2VzIHJlbW92ZVNh
bXBsZXNGcm9tVHJhY2tCdWZmZXIoY29uc3QgRGVjb2RlT3JkZXJTYW1wbGVNYQogICAgIGZvciAo
Y29uc3QgYXV0byYgc2FtcGxlSXQgOiBzYW1wbGVzKSB7CiAgICAgICAgIGNvbnN0IERlY29kZU9y
ZGVyU2FtcGxlTWFwOjpLZXlUeXBlJiBkZWNvZGVLZXkgPSBzYW1wbGVJdC5maXJzdDsKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAgICAgc2l6ZV90IHN0YXJ0QnVmZmVyU2l6ZSA9IHRy
YWNrQnVmZmVyLnNhbXBsZXMuc2l6ZUluQnl0ZXMoKTsKKyAgICAgICAgdWludDY0X3Qgc3RhcnRC
dWZmZXJTaXplID0gdHJhY2tCdWZmZXIuc2FtcGxlcy5zaXplSW5CeXRlcygpOwogI2VuZGlmCiAK
ICAgICAgICAgY29uc3QgUmVmUHRyPE1lZGlhU2FtcGxlPiYgc2FtcGxlID0gc2FtcGxlSXQuc2Vj
b25kOwpAQCAtNTcwLDcgKzU5NSw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6cmVtb3Zl
Q29kZWRGcmFtZXMoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUCiAgICAgTE9H
KE1lZGlhLCAiU291cmNlQnVmZmVyOjpyZW1vdmVDb2RlZEZyYW1lcyglcCkgLSBidWZmZXJlZCA9
ICVzIiwgdGhpcywgdG9TdHJpbmcobV9idWZmZXJlZC0+cmFuZ2VzKCkpLnV0ZjgoKS5kYXRhKCkp
OwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmV2aWN0Q29kZWRGcmFtZXMoc2l6ZV90
IG5ld0RhdGFTaXplLCBzaXplX3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgc2l6ZV90IG1h
eGltdW1CdWZmZXJTaXplLCBjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBjb25zdCBNZWRp
YVRpbWUmIGR1cmF0aW9uLCBib29sIGlzRW5kZWQpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6
OmV2aWN0Q29kZWRGcmFtZXModWludDY0X3QgbmV3RGF0YVNpemUsIHVpbnQ2NF90IHBlbmRpbmdB
cHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplLCBjb25zdCBNZWRp
YVRpbWUmIGN1cnJlbnRUaW1lLCBjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uLCBib29sIGlzRW5k
ZWQpCiB7CiAgICAgLy8gMy41LjEzIENvZGVkIEZyYW1lIEV2aWN0aW9uIEFsZ29yaXRobQogICAg
IC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL21lZGlhLXNvdXJjZS8jc291cmNlYnVmZmVyLWNvZGVk
LWZyYW1lLWV2aWN0aW9uCkBAIC01OTQsNyArNjE5LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlOjpldmljdENvZGVkRnJhbWVzKHNpemVfdCBuZXdEYXRhU2l6ZSwgc2l6ZV90IHBlbmRpbmdB
cHAKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRCAmJiBmYWxzZQogICAgIERFQlVHX0xPRyhM
T0dJREVOVElGSUVSLCAiY3VycmVudFRpbWUgPSAiLCBjdXJyZW50VGltZSwgIiwgcmVxdWlyZSAi
LCBleHRyYU1lbW9yeUNvc3QoKSArIG5ld0RhdGFTaXplLCAiIGJ5dGVzLCBtYXhpbXVtIGJ1ZmZl
ciBzaXplIGlzICIsIG1heGltdW1CdWZmZXJTaXplKTsKLSAgICBzaXplX3QgaW5pdGlhbEJ1ZmZl
cmVkU2l6ZSA9IGV4dHJhTWVtb3J5Q29zdCgpOworICAgIHVpbnQ2NF90IGluaXRpYWxCdWZmZXJl
ZFNpemUgPSBleHRyYU1lbW9yeUNvc3QoKTsKICNlbmRpZgogCiAgICAgTWVkaWFUaW1lIHJhbmdl
U3RhcnQgPSBNZWRpYVRpbWU6Onplcm9UaW1lKCk7CkBAIC02MjMsMTAgKzY0OCwxMCBAQCB2b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGU6OmV2aWN0Q29kZWRGcmFtZXMoc2l6ZV90IG5ld0RhdGFTaXpl
LCBzaXplX3QgcGVuZGluZ0FwcAogICAgIC8vIHRoZSBjdXJyZW50IGJ1ZmZlcmVkIHJhbmdlKSwg
ZGVsZXRlIDMwIHNlY29uZHMgYXQgYSB0aW1lIGZyb20gZHVyYXRpb24gYmFjayB0byB0aGUgY3Vy
cmVudCB0aW1lIHJhbmdlIG9yIDMwIHNlY29uZHMgYWZ0ZXIKICAgICAvLyBjdXJyZW5UaW1lIHdo
aWNoZXZlciB3ZSBoaXQgZmlyc3QuCiAgICAgYXV0byBidWZmZXJlZCA9IG1fYnVmZmVyZWQtPnJh
bmdlcygpOwotICAgIHNpemVfdCBjdXJyZW50VGltZVJhbmdlID0gYnVmZmVyZWQuZmluZChjdXJy
ZW50VGltZSk7CisgICAgdWludDY0X3QgY3VycmVudFRpbWVSYW5nZSA9IGJ1ZmZlcmVkLmZpbmQo
Y3VycmVudFRpbWUpOwogICAgIGlmIChjdXJyZW50VGltZVJhbmdlID09IGJ1ZmZlcmVkLmxlbmd0
aCgpIC0gMSkgewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRCAmJiBmYWxzZQotICAgIEVSUk9S
X0xPRyhMT0dJREVOVElGSUVSLCAiRkFJTEVEIHRvIGZyZWUgZW5vdWdoIGFmdGVyIGV2aWN0aW5n
ICIsIGluaXRpYWxCdWZmZXJlZFNpemUgLSBleHRyYU1lbW9yeUNvc3QoKSk7CisgICAgICAgIEVS
Uk9SX0xPRyhMT0dJREVOVElGSUVSLCAiRkFJTEVEIHRvIGZyZWUgZW5vdWdoIGFmdGVyIGV2aWN0
aW5nICIsIGluaXRpYWxCdWZmZXJlZFNpemUgLSBleHRyYU1lbW9yeUNvc3QoKSk7CiAjZW5kaWYK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTYzNiw3ICs2NjEsNyBAQCB2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGU6OmV2aWN0Q29kZWRGcmFtZXMoc2l6ZV90IG5ld0RhdGFTaXplLCBzaXplX3Qg
cGVuZGluZ0FwcAogICAgIHJhbmdlRW5kID0gZHVyYXRpb247CiAgICAgaWYgKCFyYW5nZUVuZC5p
c0Zpbml0ZSgpKSB7CiAgICAgICAgIHJhbmdlRW5kID0gYnVmZmVyZWQubWF4aW11bUJ1ZmZlcmVk
VGltZSgpOwotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRCAmJiBmYWxzZQorI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAogICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgIk1lZGlhU291
cmNlIGR1cmF0aW9uIGlzIG5vdCBhIGZpbml0ZSB2YWx1ZSwgdXNpbmcgbWF4aW11bSBidWZmZXJl
ZCB0aW1lOiAiLCByYW5nZUVuZCk7CiAjZW5kaWYKICAgICB9CkBAIC02NDQsOSArNjY5LDkgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpldmljdENvZGVkRnJhbWVzKHNpemVfdCBuZXdEYXRh
U2l6ZSwgc2l6ZV90IHBlbmRpbmdBcHAKICAgICByYW5nZVN0YXJ0ID0gcmFuZ2VFbmQgLSB0aGly
dHlTZWNvbmRzOwogICAgIHdoaWxlIChyYW5nZVN0YXJ0ID4gbWluaW11bVJhbmdlU3RhcnQpIHsK
ICAgICAgICAgLy8gRG8gbm90IGV2aWN0IGRhdGEgZnJvbSB0aGUgdGltZSByYW5nZSB0aGF0IGNv
bnRhaW5zIGN1cnJlbnRUaW1lLgotICAgICAgICBzaXplX3Qgc3RhcnRUaW1lUmFuZ2UgPSBidWZm
ZXJlZC5maW5kKHJhbmdlU3RhcnQpOworICAgICAgICB1aW50NjRfdCBzdGFydFRpbWVSYW5nZSA9
IGJ1ZmZlcmVkLmZpbmQocmFuZ2VTdGFydCk7CiAgICAgICAgIGlmIChjdXJyZW50VGltZVJhbmdl
ICE9IG5vdEZvdW5kICYmIHN0YXJ0VGltZVJhbmdlID09IGN1cnJlbnRUaW1lUmFuZ2UpIHsKLSAg
ICAgICAgICAgIHNpemVfdCBlbmRUaW1lUmFuZ2UgPSBidWZmZXJlZC5maW5kKHJhbmdlRW5kKTsK
KyAgICAgICAgICAgIHVpbnQ2NF90IGVuZFRpbWVSYW5nZSA9IGJ1ZmZlcmVkLmZpbmQocmFuZ2VF
bmQpOwogICAgICAgICAgICAgaWYgKGN1cnJlbnRUaW1lUmFuZ2UgIT0gbm90Rm91bmQgJiYgZW5k
VGltZVJhbmdlID09IGN1cnJlbnRUaW1lUmFuZ2UpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAK
QEAgLTY3NCwyMiArNjk5LDI1IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZXZpY3RDb2Rl
ZEZyYW1lcyhzaXplX3QgbmV3RGF0YVNpemUsIHNpemVfdCBwZW5kaW5nQXBwCiAjZW5kaWYKIH0K
IAotc2l6ZV90IFNvdXJjZUJ1ZmZlclByaXZhdGU6OnRvdGFsVHJhY2tCdWZmZXJTaXplSW5CeXRl
cygpIGNvbnN0Cit1aW50NjRfdCBTb3VyY2VCdWZmZXJQcml2YXRlOjp0b3RhbFRyYWNrQnVmZmVy
U2l6ZUluQnl0ZXMoKSBjb25zdAogewotICAgIHNpemVfdCB0b3RhbFNpemVJbkJ5dGVzID0gMDsK
KyAgICB1aW50NjRfdCB0b3RhbFNpemVJbkJ5dGVzID0gMDsKICAgICBmb3IgKGF1dG8mIHRyYWNr
QnVmZmVyIDogbV90cmFja0J1ZmZlck1hcC52YWx1ZXMoKSkKICAgICAgICAgdG90YWxTaXplSW5C
eXRlcyArPSB0cmFja0J1ZmZlci5zYW1wbGVzLnNpemVJbkJ5dGVzKCk7CiAKICAgICByZXR1cm4g
dG90YWxTaXplSW5CeXRlczsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjphZGRUcmFj
a0J1ZmZlcihjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lkLCBSZWZQdHI8TWVkaWFEZXNjcmlwdGlv
bj4gZGVzY3JpcHRpb24pCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmFkZFRyYWNrQnVmZmVy
KGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSWQsIFJlZlB0cjxNZWRpYURlc2NyaXB0aW9uPiYmIGRl
c2NyaXB0aW9uKQogewogICAgIEFTU0VSVCghbV90cmFja0J1ZmZlck1hcC5jb250YWlucyh0cmFj
a0lkKSk7CiAgICAgYXV0byYgdHJhY2tCdWZmZXIgPSBtX3RyYWNrQnVmZmVyTWFwLmFkZCh0cmFj
a0lkLCBUcmFja0J1ZmZlcigpKS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICAvLyA1LjIuOSBBZGQg
dGhlIHRyYWNrIGRlc2NyaXB0aW9uIGZvciB0aGlzIHRyYWNrIHRvIHRoZSB0cmFjayBidWZmZXIu
CiAgICAgdHJhY2tCdWZmZXIuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsKKworICAgIG1faGFz
QXVkaW8gPSBtX2hhc0F1ZGlvIHx8IHRyYWNrQnVmZmVyLmRlc2NyaXB0aW9uLT5pc0F1ZGlvKCk7
CisgICAgbV9oYXNWaWRlbyA9IG1faGFzVmlkZW8gfHwgdHJhY2tCdWZmZXIuZGVzY3JpcHRpb24t
PmlzVmlkZW8oKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjp1cGRhdGVUcmFja0lk
cyhWZWN0b3I8c3RkOjpwYWlyPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+PiYmIHRyYWNrSWRQYWly
cykKQEAgLTcwOSw3ICs3MzcsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnNldEFsbFRy
YWNrQnVmZmVyc05lZWRSYW5kb21BY2Nlc3MoKQogICAgICAgICB0cmFja0J1ZmZlci5uZWVkUmFu
ZG9tQWNjZXNzRmxhZyA9IHRydWU7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlk
UmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBTb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQmIHNlZ21lbnQpCit2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGU6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9jbGllbnQpCiAg
ICAgICAgIHJldHVybjsKQEAgLTcxOSw3ICs3NDcsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGU6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgU291cmNlQnVmZmVyUHJp
dgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclBy
aXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KHNlZ21lbnQpOworICAgIG1fY2xp
ZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChX
VEZNb3ZlKHNlZ21lbnQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICBtX3Jl
Y2VpdmVkRmlyc3RJbml0aWFsaXphdGlvblNlZ21lbnQgPSB0cnVlOwogICAgIG1fcGVuZGluZ0lu
aXRpYWxpemF0aW9uU2VnbWVudEZvckNoYW5nZVR5cGUgPSBmYWxzZTsKQEAgLTExODAsMTEgKzEy
MDgsMTEgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlU2FtcGxlKE1lZGlh
U2FtcGxlJiBzYW1wbGUpCiAgICAgICAgIC8vIGRpc2pvaW50IHJhbmdlcyBzZXBhcmF0ZWQgYnkg
bGVzcyB0aGFuIGEgImZ1ZGdlIGZhY3RvciIuCiAgICAgICAgIGF1dG8gcHJlc2VudGF0aW9uRW5k
VGltZSA9IHByZXNlbnRhdGlvblRpbWVzdGFtcCArIGZyYW1lRHVyYXRpb247CiAgICAgICAgIGF1
dG8gbmVhcmVzdFRvUHJlc2VudGF0aW9uU3RhcnRUaW1lID0gdHJhY2tCdWZmZXIuYnVmZmVyZWQu
bmVhcmVzdChwcmVzZW50YXRpb25UaW1lc3RhbXApOwotICAgICAgICBpZiAobmVhcmVzdFRvUHJl
c2VudGF0aW9uU3RhcnRUaW1lLmlzVmFsaWQoKSAmJiAocHJlc2VudGF0aW9uVGltZXN0YW1wIC0g
bmVhcmVzdFRvUHJlc2VudGF0aW9uU3RhcnRUaW1lKS5pc0JldHdlZW4oTWVkaWFUaW1lOjp6ZXJv
VGltZSgpLCBtX2N1cnJlbnRUaW1lRnVkZ2VGYWN0b3IpKQorICAgICAgICBpZiAobmVhcmVzdFRv
UHJlc2VudGF0aW9uU3RhcnRUaW1lLmlzVmFsaWQoKSAmJiAocHJlc2VudGF0aW9uVGltZXN0YW1w
IC0gbmVhcmVzdFRvUHJlc2VudGF0aW9uU3RhcnRUaW1lKS5pc0JldHdlZW4oTWVkaWFUaW1lOjp6
ZXJvVGltZSgpLCB0aW1lRnVkZ2VGYWN0b3IoKSkpCiAgICAgICAgICAgICBwcmVzZW50YXRpb25U
aW1lc3RhbXAgPSBuZWFyZXN0VG9QcmVzZW50YXRpb25TdGFydFRpbWU7CiAKICAgICAgICAgYXV0
byBuZWFyZXN0VG9QcmVzZW50YXRpb25FbmRUaW1lID0gdHJhY2tCdWZmZXIuYnVmZmVyZWQubmVh
cmVzdChwcmVzZW50YXRpb25FbmRUaW1lKTsKLSAgICAgICAgaWYgKG5lYXJlc3RUb1ByZXNlbnRh
dGlvbkVuZFRpbWUuaXNWYWxpZCgpICYmIChuZWFyZXN0VG9QcmVzZW50YXRpb25FbmRUaW1lIC0g
cHJlc2VudGF0aW9uRW5kVGltZSkuaXNCZXR3ZWVuKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgbV9j
dXJyZW50VGltZUZ1ZGdlRmFjdG9yKSkKKyAgICAgICAgaWYgKG5lYXJlc3RUb1ByZXNlbnRhdGlv
bkVuZFRpbWUuaXNWYWxpZCgpICYmIChuZWFyZXN0VG9QcmVzZW50YXRpb25FbmRUaW1lIC0gcHJl
c2VudGF0aW9uRW5kVGltZSkuaXNCZXR3ZWVuKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgdGltZUZ1
ZGdlRmFjdG9yKCkpKQogICAgICAgICAgICAgcHJlc2VudGF0aW9uRW5kVGltZSA9IG5lYXJlc3RU
b1ByZXNlbnRhdGlvbkVuZFRpbWU7CiAKICAgICAgICAgdHJhY2tCdWZmZXIuYnVmZmVyZWQuYWRk
KHByZXNlbnRhdGlvblRpbWVzdGFtcCwgcHJlc2VudGF0aW9uRW5kVGltZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgK
aW5kZXggMTFkZmYzNDliZWM3ZDdlOWMyMjMxNzM2YTQ2ZDQ4ZTc3ZTQ3NmI3YS4uNDAxZGJkNzdi
ZDIwNGI5OGMyODNmY2ExZmQ1NDIwOWM5N2ZlZWIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtNjMsOCAr
NjMsOSBAQCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlCiB7CiBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgU291cmNlQnVmZmVyUHJpdmF0ZSgpOwotICAgIHZpcnR1YWwgflNvdXJjZUJ1ZmZl
clByaXZhdGUoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U291cmNl
QnVmZmVyUHJpdmF0ZSgpOwogCisgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRQYXJz
ZXJTdGF0ZSgpID0gMDsKQEAgLTcyLDQwICs3MywzOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBN
ZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKSA9IDA7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5T
d2l0Y2hUb1R5cGUoY29uc3QgQ29udGVudFR5cGUmKSB7IHJldHVybiBmYWxzZTsgfQogCisgICAg
dmlydHVhbCB2b2lkIHJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQoY29uc3QgTWVkaWFUaW1lJiBjdXJy
ZW50TWVkaWFUaW1lLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRf
dCBtYXhpbXVtQnVmZmVyU2l6ZSk7CisgICAgdmlydHVhbCB2b2lkIGFkZFRyYWNrQnVmZmVyKGNv
bnN0IEF0b21TdHJpbmcmIHRyYWNrSWQsIFJlZlB0cjxNZWRpYURlc2NyaXB0aW9uPiYmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdHJ5U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCgpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZl
cnMoYm9vbCBzb3VyY2VJc0VuZGVkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
ZXZpY3RDb2RlZEZyYW1lcyh1aW50NjRfdCBuZXdEYXRhU2l6ZSwgdWludDY0X3QgcGVuZGluZ0Fw
cGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUsIGNvbnN0IE1lZGlh
VGltZSYgY3VycmVudFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24sIGJvb2wgaXNFbmRl
ZCk7CisKICAgICB2b2lkIHNldENsaWVudChTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50KiBjbGll
bnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KICAgICB2b2lkIHNldElzQXR0YWNoZWQoYm9vbCBm
bGFnKSB7IG1faXNBdHRhY2hlZCA9IGZsYWc7IH0KLSAgICB2b2lkIHNldEN1cnJlbnRUaW1lRnVk
Z2VGYWN0b3IoY29uc3QgTWVkaWFUaW1lJiB0aW1lKSB7IG1fY3VycmVudFRpbWVGdWRnZUZhY3Rv
ciA9IHRpbWU7IH0KKyAgICBib29sIGhhc0F1ZGlvKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBdWRp
bzsgfQorICAgIGJvb2wgaGFzVmlkZW8oKSBjb25zdCB7IHJldHVybiBtX2hhc1ZpZGVvOyB9CiAg
ICAgdm9pZCBzZXRBcHBlbmRXaW5kb3dTdGFydChjb25zdCBNZWRpYVRpbWUmIGFwcGVuZFdpbmRv
d1N0YXJ0KSB7IG1fYXBwZW5kV2luZG93U3RhcnQgPSBhcHBlbmRXaW5kb3dTdGFydDt9CiAgICAg
dm9pZCBzZXRBcHBlbmRXaW5kb3dFbmQoY29uc3QgTWVkaWFUaW1lJiBhcHBlbmRXaW5kb3dFbmQp
IHsgbV9hcHBlbmRXaW5kb3dFbmQgPSBhcHBlbmRXaW5kb3dFbmQ7IH0KICAgICBib29sIGJ1ZmZl
ckZ1bGwoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlckZ1bGw7IH0KLSAgICBUaW1lUmFuZ2VzKiBi
dWZmZXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyZWQuZ2V0KCk7IH0KLSAgICBib29sIGlz
QnVmZmVyZWREaXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyZWREaXJ0eTsgfQotICAgIHZv
aWQgc2V0QnVmZmVyZWREaXJ0eShib29sIGZsYWcpIHsgbV9idWZmZXJlZERpcnR5ID0gZmxhZzsg
fQorCisgICAgdm9pZCBzZXRCdWZmZXJlZERpcnR5KGJvb2wpOwogICAgIHZvaWQgcmVzZXRUcmFj
a0J1ZmZlcnMoKTsKICAgICB2b2lkIGNsZWFyVHJhY2tCdWZmZXJzKCk7CiAgICAgdm9pZCByZXNl
dFRpbWVzdGFtcE9mZnNldEluVHJhY2tCdWZmZXJzKCk7CiAgICAgTWVkaWFUaW1lIHRpbWVzdGFt
cE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0YW1wT2Zmc2V0OyB9CiAgICAgdm9pZCBz
ZXRUaW1lc3RhbXBPZmZzZXQoY29uc3QgTWVkaWFUaW1lJiB0aW1lc3RhbXBPZmZzZXQpIHsgbV90
aW1lc3RhbXBPZmZzZXQgPSB0aW1lc3RhbXBPZmZzZXQ7IH0KICAgICBNZWRpYVRpbWUgaGlnaGVz
dFByZXNlbnRhdGlvblRpbWVzdGFtcCgpIGNvbnN0OwotICAgIHZvaWQgdXBkYXRlQnVmZmVyZWRG
cm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCk7CiAgICAgdm9pZCBzZWVrVG9UaW1l
KGNvbnN0IE1lZGlhVGltZSYpOwotICAgIHZvaWQgdHJ5U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tF
bnF1ZXVlZCgpOwogICAgIHZvaWQgc3RhcnRDaGFuZ2luZ1R5cGUoKSB7IG1fcGVuZGluZ0luaXRp
YWxpemF0aW9uU2VnbWVudEZvckNoYW5nZVR5cGUgPSB0cnVlOyB9Ci0KLSAgICB2b2lkIHJlZW5x
dWV1ZU1lZGlhSWZOZWVkZWQoY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50TWVkaWFUaW1lLCBzaXpl
X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgc2l6ZV90IG1heGltdW1CdWZmZXJTaXplKTsK
ICAgICB2b2lkIHJlbW92ZUNvZGVkRnJhbWVzKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0
IE1lZGlhVGltZSYgZW5kLCBjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRNZWRpYVRpbWUsIGJvb2wg
aXNFbmRlZCk7Ci0gICAgdm9pZCBldmljdENvZGVkRnJhbWVzKHNpemVfdCBuZXdEYXRhU2l6ZSwg
c2l6ZV90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHNpemVfdCBtYXhpbXVtQnVmZmVyU2l6
ZSwgY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50VGltZSwgY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlv
biwgYm9vbCBpc0VuZGVkKTsKLSAgICB2b2lkIGFkZFRyYWNrQnVmZmVyKGNvbnN0IEF0b21TdHJp
bmcmIHRyYWNrSWQsIFJlZlB0cjxNZWRpYURlc2NyaXB0aW9uPik7CiAgICAgdm9pZCB1cGRhdGVU
cmFja0lkcyhWZWN0b3I8c3RkOjpwYWlyPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+PiYmIHRyYWNr
SWRQYWlycyk7CiAgICAgdm9pZCBzZXRBbGxUcmFja0J1ZmZlcnNOZWVkUmFuZG9tQWNjZXNzKCk7
CiAgICAgdm9pZCBzZXRTaG91bGRHZW5lcmF0ZVRpbWVzdGFtcHMoYm9vbCBmbGFnKSB7IG1fc2hv
dWxkR2VuZXJhdGVUaW1lc3RhbXBzID0gZmxhZzsgfQogICAgIHZvaWQgc2V0TW9kZShTb3VyY2VC
dWZmZXJBcHBlbmRNb2RlIG1vZGUpIHsgbV9hcHBlbmRNb2RlID0gbW9kZTsgfQogICAgIHZvaWQg
c2V0R3JvdXBTdGFydFRpbWVzdGFtcChjb25zdCBNZWRpYVRpbWUmIG1lZGlhVGltZSkgeyBtX2dy
b3VwU3RhcnRUaW1lc3RhbXAgPSBtZWRpYVRpbWU7IH0KICAgICB2b2lkIHNldEdyb3VwU3RhcnRU
aW1lc3RhbXBUb0VuZFRpbWVzdGFtcCgpIHsgbV9ncm91cFN0YXJ0VGltZXN0YW1wID0gbV9ncm91
cEVuZFRpbWVzdGFtcDsgfQotICAgIHNpemVfdCB0b3RhbFRyYWNrQnVmZmVyU2l6ZUluQnl0ZXMo
KSBjb25zdDsKKyAgICB1aW50NjRfdCB0b3RhbFRyYWNrQnVmZmVyU2l6ZUluQnl0ZXMoKSBjb25z
dDsKIAogICAgIHN0cnVjdCBUcmFja0J1ZmZlciB7CiAgICAgICAgIE1lZGlhVGltZSBsYXN0RGVj
b2RlVGltZXN0YW1wOwpAQCAtMTM0LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZl
Y3RvcjxTdHJpbmc+IGVucXVldWVkU2FtcGxlc0ZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYp
IHsgcmV0dXJuIHsgfTsgfQogICAgIFZlY3RvcjxTdHJpbmc+IGJ1ZmZlcmVkU2FtcGxlc0ZvclRy
YWNrSUQoY29uc3QgQXRvbVN0cmluZyYpOwogICAgIHZpcnR1YWwgTWVkaWFUaW1lIG1pbmltdW1V
cGNvbWluZ1ByZXNlbnRhdGlvblRpbWVGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmKSB7IHJl
dHVybiBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWF4
aW11bVF1ZXVlRGVwdGhGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmLCBzaXplX3QpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQoY29uc3QgQXRv
bVN0cmluZyYsIHVpbnQ2NF90KSB7IH0KICAgICBNZWRpYVRpbWUgZmFzdFNlZWtUaW1lRm9yTWVk
aWFUaW1lKGNvbnN0IE1lZGlhVGltZSYgdGFyZ2V0VGltZSwgY29uc3QgTWVkaWFUaW1lJiBuZWdh
dGl2ZVRocmVzaG9sZCwgY29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZVRocmVzaG9sZCk7CiAKICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTE0Myw2ICsxNDMsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgTWVkaWFUaW1lIHRpbWVGdWRnZUZhY3Rvcigp
IGNvbnN0IHsgcmV0dXJuIHsyMDAyLCAyNDAwMH07IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNBY3Rp
dmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NlZWtpbmco
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgTWVkaWFUaW1lIGN1cnJlbnRN
ZWRpYVRpbWUoKSBjb25zdCB7IHJldHVybiB7IH07IH0KQEAgLTE1Nyw4ICsxNTgsOSBAQCBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHNldE1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRp
bWUoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IE1lZGlhVGltZSYpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBjbGVhck1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWUoY29uc3QgQXRvbVN0cmlu
ZyYpIHsgfQogCisgICAgdm9pZCBhcHBlbmRDb21wbGV0ZWQoYm9vbCBwYXJzaW5nU3VjY2VlZGVk
LCBib29sIGlzRW5kZWQpOwogICAgIHZvaWQgcmVlbnF1ZVNhbXBsZXMoY29uc3QgQXRvbVN0cmlu
ZyYgdHJhY2tJRCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNv
bnN0IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudCYpOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChTb3VyY2VCdWZmZXJQcml2
YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTYW1wbGUoTWVkaWFTYW1wbGUmKTsKICAgICB2
b2lkIHByb3ZpZGVNZWRpYURhdGEoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCk7CiAKQEAgLTE2
OSwxMSArMTcxLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWVucXVldWVNZWRpYUZvclRpbWUo
VHJhY2tCdWZmZXImLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lELCBjb25zdCBNZWRpYVRpbWUm
KTsKICAgICBib29sIHZhbGlkYXRlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IFNvdXJjZUJ1
ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudCYpOwogICAgIHZvaWQgcHJv
dmlkZU1lZGlhRGF0YShUcmFja0J1ZmZlciYsIGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpOwor
ICAgIHZvaWQgc2V0QnVmZmVyZWRSYW5nZXMoY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJik7CiAK
ICAgICBib29sIG1faXNBdHRhY2hlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc0F1ZGlvIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1faGFzVmlkZW8geyBmYWxzZSB9OwogCiAgICAgSGFzaE1hcDxB
dG9tU3RyaW5nLCBUcmFja0J1ZmZlcj4gbV90cmFja0J1ZmZlck1hcDsKLSAgICBNZWRpYVRpbWUg
bV9jdXJyZW50VGltZUZ1ZGdlRmFjdG9yOwogCiAgICAgU291cmNlQnVmZmVyQXBwZW5kTW9kZSBt
X2FwcGVuZE1vZGUgeyBTb3VyY2VCdWZmZXJBcHBlbmRNb2RlOjpTZWdtZW50cyB9OwogCkBAIC0x
OTAsNyArMTk0LDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9idWZmZXJGdWxsIHsgZmFsc2Ug
fTsKICAgICBSZWZQdHI8VGltZVJhbmdlcz4gbV9idWZmZXJlZDsKLSAgICBib29sIG1fYnVmZmVy
ZWREaXJ0eSB7IHRydWUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQuaAppbmRleCBlY2QzYzc2M2YxMjRiN2MwZDRjNzU5NWJkM2E2YWYxNjVjM2Q5
NDNiLi5hN2YwNDEyZjE0MDkyMDU1MTJhNDM5Y2Y4YjFhNGUzMGNjY2RmZDUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIEF1ZGlvVHJhY2tQcml2YXRl
OwogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTsKIGNsYXNzIE1lZGlhU2FtcGxlOwogY2xh
c3MgTWVkaWFEZXNjcmlwdGlvbjsKK2NsYXNzIFBsYXRmb3JtVGltZVJhbmdlczsKIGNsYXNzIFZp
ZGVvVHJhY2tQcml2YXRlOwogCiBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50IHsKQEAg
LTYzLDIxICs2NCwyMiBAQCBwdWJsaWM6CiAgICAgICAgIH07CiAgICAgICAgIFZlY3RvcjxUZXh0
VHJhY2tJbmZvcm1hdGlvbj4gdGV4dFRyYWNrczsKICAgICB9OwotICAgIHZpcnR1YWwgdm9pZCBz
b3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJ
bml0aWFsaXphdGlvblNlZ21lbnQmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZl
clByaXZhdGVBcHBlbmRFcnJvcihib29sIGRlY29kZUVycm9yKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUo
ZG91YmxlIGZyYW1lRHVyYXRpb24pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVy
UHJpdmF0ZURpZERyb3BTYW1wbGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemF0aW9uU2Vn
bWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc291cmNlQnVmZmVyUHJpdmF0ZVN0cmVhbUVuZGVkV2l0aERlY29kZUVycm9yKCkgPSAwOwot
ICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VCdWZmZXJQcml2YXRlSGFzQXVkaW8oKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbygpIGNvbnN0ID0g
MDsKIAorICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9v
bCBkZWNvZGVFcnJvcikgPSAwOwogICAgIGVudW0gY2xhc3MgQXBwZW5kUmVzdWx0IDogdWludDhf
dCB7CiAgICAgICAgIEFwcGVuZFN1Y2NlZWRlZCwKICAgICAgICAgUmVhZFN0cmVhbUZhaWxlZCwK
ICAgICAgICAgUGFyc2luZ0ZhaWxlZAogICAgIH07CiAgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1
ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBs
ZShkb3VibGUgZnJhbWVEdXJhdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZm
ZXJQcml2YXRlRGlkRHJvcFNhbXBsZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVm
ZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChjb25zdCBQbGF0Zm9y
bVRpbWVSYW5nZXMmKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0
ZURpZFJlY2VpdmVSZW5kZXJpbmdFcnJvcihpbnQgZXJyb3JDb2RlKSA9IDA7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUu
aAppbmRleCAwYzQxM2MyZGRmNWQ5ZGEyYTE1YjExMzVjMDhlNTEwODUyYjgwMmM2Li5lYTVhMjlj
ZWI1Y2ZlOWYwMjQyN2M1ZWFkZGMxNjQyNzRjYjZkNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgKQEAgLTY0LDcgKzY0
LDYgQEAgcHVibGljOgogICAgIHVzaW5nIFNlbGVjdGVkQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rp
b248dm9pZChWaWRlb1RyYWNrUHJpdmF0ZSYsIGJvb2wgc2VsZWN0ZWQpPjsKICAgICB2b2lkIHNl
dFNlbGVjdGVkQ2hhbmdlZENhbGxiYWNrKFNlbGVjdGVkQ2hhbmdlZENhbGxiYWNrJiYgY2FsbGJh
Y2spIHsgbV9zZWxlY3RlZENoYW5nZWRDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOyB9CiAK
LQogcHJvdGVjdGVkOgogICAgIFZpZGVvVHJhY2tQcml2YXRlKCkgPSBkZWZhdWx0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgKaW5k
ZXggMTEzNmZkMjUyYjgyZmVjYzc2YjdlOThmYjRkOGViYWI1Y2VlYjk0NS4uNjhjZmQ1MjM0NmI5
YzM1OGNkM2QxNzUwOTNjNTdkYzhkNzk3OGJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaApAQCAtNjIsMTQgKzYyLDE1IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IGNyZWF0ZShN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqLCBNZWRpYVNvdXJjZVByaXZhdGVD
bGllbnQqKTsKICAgICB2aXJ0dWFsIH5NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKCk7CiAKLSAg
ICBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqIHBsYXllcigpIGNvbnN0IHsg
cmV0dXJuIG1fcGxheWVyOyB9CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDKiBwbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXllci5nZXQoKTsgfQogICAgIGNvbnN0
IFZlY3RvcjxSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+PiYgc291cmNlQnVmZmVy
cygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQnVmZmVyczsgfQogICAgIGNvbnN0IFZlY3RvcjxT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyo+JiBhY3RpdmVTb3VyY2VCdWZmZXJzKCkgY29uc3Qg
eyByZXR1cm4gbV9hY3RpdmVTb3VyY2VCdWZmZXJzOyB9CiAKICAgICBBZGRTdGF0dXMgYWRkU291
cmNlQnVmZmVyKGNvbnN0IENvbnRlbnRUeXBlJiwgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGU+
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKICAgICB2b2lk
IG1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cykgb3ZlcnJpZGU7CiAgICAgdm9pZCB1
bm1hcmtFbmRPZlN0cmVhbSgpIG92ZXJyaWRlOworICAgIGJvb2wgaXNFbmRlZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1faXNFbmRlZDsgfQogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
IHJlYWR5U3RhdGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFJlYWR5U3RhdGUoTWVk
aWFQbGF5ZXI6OlJlYWR5U3RhdGUpIG92ZXJyaWRlOwogICAgIHZvaWQgd2FpdEZvclNlZWtDb21w
bGV0ZWQoKSBvdmVycmlkZTsKQEAgLTEyOSw3ICsxMzAsNyBAQCBwcml2YXRlOgogCiAgICAgZnJp
ZW5kIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOwogCi0gICAgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBtX3BsYXllcjsKKyAgICBXZWFrUHRyPE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gbV9wbGF5ZXI7CiAgICAgUmVmUHRyPE1lZGlh
U291cmNlUHJpdmF0ZUNsaWVudD4gbV9jbGllbnQ7CiAgICAgVmVjdG9yPFJlZlB0cjxTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQz4+IG1fc291cmNlQnVmZmVyczsKICAgICBWZWN0b3I8U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMqPiBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQppbmRleCBi
MDAzOTMxYzdkNzU5ZjI5ZDllMDY2ZmIxMjAyMzA3Y2Y1MjQ5NTY2Li41NmZkODk1MTljNGEyYmJm
ZTk5ODFkZjhkZDJmZDI1MDkzOWFhNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KQEAgLTU0LDcgKzU0LDcgQEAgUmVmPE1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmNyZWF0
ZShNZWRpYVBsYXllclByaXYKIH0KIAogTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6TWVkaWFT
b3VyY2VQcml2YXRlQVZGT2JqQyhNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMq
IHBhcmVudCwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBjbGllbnQpCi0gICAgOiBtX3BsYXll
cihwYXJlbnQpCisgICAgOiBtX3BsYXllcihtYWtlV2Vha1B0cihwYXJlbnQpKQogICAgICwgbV9j
bGllbnQoY2xpZW50KQogICAgICwgbV9pc0VuZGVkKGZhbHNlKQogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRApAQCAtMTI4LDcgKzEyOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVS
YW5nZXM+IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmJ1ZmZlcmVkKCkKICAgICByZXR1cm4g
bV9jbGllbnQtPmJ1ZmZlcmVkKCk7CiB9CiAKLXZvaWQgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2Jq
Qzo6ZHVyYXRpb25DaGFuZ2VkKCkKK3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6ZHVy
YXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpCiB7CiAgICAgbV9wbGF5ZXItPmR1cmF0aW9u
Q2hhbmdlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5oCmluZGV4IDU0NjUzMmJhMTllYTQ0ZjhmYWY0OWFkMTk3NTIxZjk3ZThl
MWVlNjguLjA1NmZjOTEwZjk0YTk2NDM0ZWZhZmI0NWRlMTJmNjFhMmM5MGJlZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKQEAg
LTI4LDcgKzI4LDExIEBACiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2luY2x1ZGUgIlNv
dXJjZUJ1ZmZlclBhcnNlci5oIgorI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1R5
cGVDYXN0cy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgogCiBPQkpDX0NMQVNTIEFWQXNzZXQ7CkBAIC03OCw2ICs4MiwxMCBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVudCB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX3BhcnNlclN0YXRlV2FzUmVzZXQgeyBmYWxzZSB9OwogCisg
ICAgTG9jayBtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5TXV0ZXg7CisgICAgQ29uZGl0aW9uIG1f
dHJhY2tCdWZmZXJNYW5hZ2VyUmVhZHlDb25kaXRpb247CisgICAgSGFzaFNldDx1aW50NjRfdD4g
bV90cmFja0J1ZmZlck1hbmFnZXJSZWFkeVNldDsKKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAogICAgIFJlZlB0cjxjb25zdCBXVEY6OkxvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9p
ZCogbV9sb2dJZGVudGlmaWVyIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KaW5kZXggMzVkOWY1NTBjM2IyMTA0
MWFlZjdkMmE2NDNiOGFhYzdiNGEzOTU1Yi4uYTFkOTY3M2Q2MDQ1ZDdjY2FhMGU2NGMxNmFlNjJk
ZTE3ZDVmMDE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0yNzIsNiArMjcyLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDOjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQog
ICAgICAgICBpZiAoc2VnbWVudC5kdXJhdGlvbi5pc0ludmFsaWQoKSB8fCBzZWdtZW50LmR1cmF0
aW9uID09IE1lZGlhVGltZTo6emVyb1RpbWUoKSkKICAgICAgICAgICAgIHNlZ21lbnQuZHVyYXRp
b24gPSBQQUw6OnRvTWVkaWFUaW1lKFthc3NldCBkdXJhdGlvbl0pOwogCisgICAgICAgIFZlY3Rv
cjx1aW50NjRfdD4gdHJhY2tJRHM7CiAgICAgICAgIGZvciAoQVZBc3NldFRyYWNrKiB0cmFjayBp
biBbYXNzZXQgdHJhY2tzXSkgewogICAgICAgICAgICAgaWYgKFt0cmFjayBoYXNNZWRpYUNoYXJh
Y3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGVdKSB7CiAgICAgICAgICAgICAg
ICAgLy8gRklYTUUoMTI1MTYxKTogSGFuZGxlIGluLWJhbmQgdGV4dCB0cmFja3MuCkBAIC0yODQs
MTggKzI4NSwyNiBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFBhcnNlU3Ry
ZWFtRGF0YUFzQXNzZXQoQVZBc3NldCogYXNzZXQpCiAgICAgICAgICAgICAgICAgaW5mby50cmFj
ayA9IHZpZGVvVHJhY2suY29weVJlZigpOwogICAgICAgICAgICAgICAgIGluZm8uZGVzY3JpcHRp
b24gPSBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKICAgICAgICAgICAg
ICAgICBzZWdtZW50LnZpZGVvVHJhY2tzLmFwcGVuZChpbmZvKTsKKyAgICAgICAgICAgICAgICB0
cmFja0lEcy5hcHBlbmQodmlkZW9UcmFjay0+dHJhY2tJRCgpKTsKICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGlj
QXVkaWJsZV0pIHsKICAgICAgICAgICAgICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJ
bml0aWFsaXphdGlvblNlZ21lbnQ6OkF1ZGlvVHJhY2tJbmZvcm1hdGlvbiBpbmZvOwogICAgICAg
ICAgICAgICAgIGF1dG8gYXVkaW9UcmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjpjcmVhdGUodHJhY2spOwogICAgICAgICAgICAgICAgIGluZm8udHJhY2sgPSBhdWRp
b1RyYWNrLmNvcHlSZWYoKTsKICAgICAgICAgICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVk
aWFEZXNjcmlwdGlvbkFWRk9iakM6OmNyZWF0ZSh0cmFjayk7CiAgICAgICAgICAgICAgICAgc2Vn
bWVudC5hdWRpb1RyYWNrcy5hcHBlbmQoaW5mbyk7CisgICAgICAgICAgICAgICAgdHJhY2tJRHMu
YXBwZW5kKGF1ZGlvVHJhY2stPnRyYWNrSUQoKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIC8vIEZJWE1FKDEyNTE2MSkgICAgOiBBZGQgVGV4dFRyYWNrIHN1cHBvcnQKICAgICAgICAg
fQogCi0gICAgICAgIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhXVEZNb3Zl
KHNlZ21lbnQpKTsKKyAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNr
KFdURk1vdmUoc2VnbWVudCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHRyYWNrSURzID0gV1RGTW92ZSh0cmFja0lEcyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdHJhY2tCdWZmZXJNYW5hZ2VyUmVhZHlNdXRleCk7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8gdHJhY2tJRCA6IHRyYWNrSURzKQorICAgICAgICAgICAgICAg
IG1fdHJhY2tCdWZmZXJNYW5hZ2VyUmVhZHlTZXQuYWRkKHRyYWNrSUQpOworCisgICAgICAgICAg
ICBtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5Q29uZGl0aW9uLm5vdGlmeUFsbCgpOworICAgICAg
ICB9KTsKICAgICB9KTsKIH0KIApAQCAtMzEwLDYgKzMxOSwxNSBAQCB2b2lkIFNvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakM6OmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihOU0Vycm9y
KiBlcnJvcgogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92aWRlTWVkaWFE
YXRhRm9yVHJhY2tJRCh1aW50NjRfdCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVC
dWZmZXIsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlLCB1bnNpZ25lZCBmbGFncykKIHsKICAgICBV
TlVTRURfUEFSQU0oZmxhZ3MpOworCisgICAgLy8gV2FpdCBmb3IgdGhlIHRyYWNrIGJ1ZmZlciBt
YW5hZ2VyIGlzIHJlYWR5IGZvciB0aGlzIHRyYWNrCisgICAgeworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPExvY2s+IGxvY2sobV90cmFja0J1ZmZlck1hbmFnZXJSZWFkeU11dGV4KTsKKyAgICAg
ICAgbV90cmFja0J1ZmZlck1hbmFnZXJSZWFkeUNvbmRpdGlvbi53YWl0KGxvY2ssIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRyYWNrSURdIHsKKyAgICAgICAgICAgIHJl
dHVybiBtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5U2V0LmNvbnRhaW5zKHRyYWNrSUQpOworICAg
ICAgICB9KTsKKyAgICB9CisKICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBzdHJvbmdUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHNhbXBsZUJ1ZmZlciA9IHJldGFpblB0cihzYW1wbGVCdWZmZXIp
LCB0cmFja0lELCBtZWRpYVR5cGUgPSBtZWRpYVR5cGVdIHsKICAgICAgICAgaWYgKCFtX2RpZFBy
b3ZpZGVNZWRpYURhdGFDYWxsYmFjaykKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IDhi
MWVlYTYzMDA3ZWQ1YzRkMDg3NDQ2ZTc0M2IxM2E0YzFjYzAwYmQuLjFmNjI1YjNjNzhlODNlNTEx
NDQ4MDA5YmJjNDQ5NThlMzYzYWQ0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtOTEsOSArOTEsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCB3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRCh1aW50NjRfdCB0cmFja0lEKTsKICAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoUmVmPFVpbnQ4QXJyYXk+JiYs
IHVpbnQ2NF90IHRyYWNrSUQsIEJveDxCaW5hcnlTZW1hcGhvcmU+KTsKIAotICAgIGJvb2wgaGFz
VmlkZW8oKSBjb25zdDsKICAgICBib29sIGhhc1NlbGVjdGVkVmlkZW8oKSBjb25zdDsKLSAgICBi
b29sIGhhc0F1ZGlvKCkgY29uc3Q7CiAKICAgICB2b2lkIHRyYWNrRGlkQ2hhbmdlU2VsZWN0ZWQo
VmlkZW9UcmFja1ByaXZhdGUmLCBib29sIHNlbGVjdGVkKTsKICAgICB2b2lkIHRyYWNrRGlkQ2hh
bmdlRW5hYmxlZChBdWRpb1RyYWNrUHJpdmF0ZSYsIGJvb2wgZW5hYmxlZCk7CkBAIC0xNDAsNyAr
MTM4LDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
QyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiwgUmVmPFNvdXJjZUJ1ZmZlclBhcnNlcj4mJik7
CiAKICAgICB1c2luZyBJbml0aWFsaXphdGlvblNlZ21lbnQgPSBTb3VyY2VCdWZmZXJQcml2YXRl
Q2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ7Ci0gICAgdm9pZCBkaWRQYXJzZUluaXRpYWxp
emF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJik7CisgICAgdm9pZCBkaWRQYXJzZUlu
aXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhp
bnQzMl90KTsKICAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKFJlZjxNZWRp
YVNhbXBsZT4mJiwgdWludDY0X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpOwog
CkBAIC0xNTQsNiArMTUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZsdXNoKGNvbnN0IEF0b21T
dHJpbmcmIHRyYWNrSUQpIGZpbmFsOwogICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFT
YW1wbGU+JiYsIGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpIGZpbmFsOwogICAgIGJvb2wgaXNS
ZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpIGZpbmFsOworICAg
IE1lZGlhVGltZSB0aW1lRnVkZ2VGYWN0b3IoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldEFj
dGl2ZShib29sKSBmaW5hbDsKICAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgZmluYWw7CiAgICAg
dm9pZCBub3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG9tU3RyaW5n
JiB0cmFja0lEKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggNGQ2MTQ3ZTkxNjQ5MjRmNDJkNGRkZWY0YTZi
NmY4MGM2ZTUyYzM4ZS4uZTdlN2IxYTRjMDU4MzQ4M2VlMmJiYjMzYjNkMmU2OGY3ZmFjZjU0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMubW0KQEAgLTMwOCwxMCArMzA4LDEyIEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDCiAK
ICAgICBzb3VyY2VCdWZmZXJNYXAoKS5hZGQobV9tYXBJRCwgbWFrZVdlYWtQdHIoKnRoaXMpKTsK
IAotICAgIG1fcGFyc2VyLT5zZXREaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2Vn
bWVudCkgbXV0YWJsZSB7CisgICAgbV9wYXJzZXItPnNldERpZFBhcnNlSW5pdGlhbGl6YXRpb25E
YXRhQ2FsbGJhY2soW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChJbml0aWFs
aXphdGlvblNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+ZGlkUGFyc2VJ
bml0aWFsaXphdGlvbkRhdGEoV1RGTW92ZShzZWdtZW50KSk7CisgICAgICAgIGlmICghd2Vha1Ro
aXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZGlkUGFyc2VJbml0aWFsaXphdGlv
bkRhdGEoV1RGTW92ZShzZWdtZW50KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAg
IH0pOwogCiAgICAgbV9wYXJzZXItPnNldERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0Nh
bGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoaW50MzJfdCBlcnJvckNvZGUp
IG11dGFibGUgewpAQCAtMzQ0LDcgKzM0Niw3IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
Ojp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoKQogICAgICAgICBtX2hhc1Nlc3Npb25TZW1h
cGhvcmUtPnNpZ25hbCgpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpk
aWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50
KQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXphdGlv
bkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUik7CiAKQEAgLTM4NCw3ICszODYsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbgogICAg
IGlmIChtX21lZGlhU291cmNlKQogICAgICAgICBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+Y2hh
cmFjdGVyaXN0aWNzQ2hhbmdlZCgpOwogCi0gICAgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2Vn
bWVudChzZWdtZW50KTsKKyAgICBkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KFdURk1v
dmUoc2VnbWVudCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nKGlu
dDMyX3QgY29kZSkKQEAgLTU3Nyw4ICs1NzksNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjphcHBlbmRDb21wbGV0ZWQoKQogICAgIGlmIChtX3BhcnNpbmdTdWNjZWVkZWQgJiYg
bV9tZWRpYVNvdXJjZSkKICAgICAgICAgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPnNldExvYWRp
bmdQcm9ncmVzc3NlZCh0cnVlKTsKIAotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGll
bnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShtX3BhcnNpbmdTdWNjZWVkZWQg
PyBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2NlZWRl
ZCA6IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdDo6UGFyc2luZ0ZhaWxl
ZCk7CisgICAgU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kQ29tcGxldGVkKG1fcGFyc2luZ1N1
Y2NlZWRlZCwgbV9tZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPmlzRW5kZWQoKSA6IHRydWUp
OwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphYm9ydCgpCkBAIC02ODEs
MjEgKzY4MiwxMSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRSZWFkeVN0
YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdAogICAgICAgICBtX21lZGlhU291
cmNlLT5wbGF5ZXIoKS0+c2V0UmVhZHlTdGF0ZShyZWFkeVN0YXRlKTsKIH0KIAotYm9vbCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6aGFzVmlkZW8oKSBjb25zdAotewotICAgIHJldHVybiBt
X2NsaWVudCAmJiBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKCk7Ci19Ci0K
IGJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc1NlbGVjdGVkVmlkZW8oKSBjb25z
dAogewogICAgIHJldHVybiBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgIT0gbm90Rm91bmQ7CiB9CiAK
LWJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc0F1ZGlvKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9jbGllbnQgJiYgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRp
bygpOwotfQotCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5n
ZVNlbGVjdGVkKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaywgYm9vbCBzZWxlY3RlZCkKIHsKICAg
ICBhdXRvIHRyYWNrSUQgPSB0cmFjay5pZCgpLnN0cmluZygpLnRvVUludDY0KCk7CkBAIC0xMDYy
LDcgKzEwNTMsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjplbnF1ZXVlU2Ft
cGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUsIGNvbnN0CiAKICAgICAgICAgYXV0byByZW5k
ZXJlciA9IG1fYXVkaW9SZW5kZXJlcnMuZ2V0KHRyYWNrSUQpOwogICAgICAgICBbcmVuZGVyZXIg
ZW5xdWV1ZVNhbXBsZUJ1ZmZlcjpwbGF0Zm9ybVNhbXBsZS5zYW1wbGUuY21TYW1wbGVCdWZmZXJd
OwotICAgICAgICBpZiAobV9tZWRpYVNvdXJjZSAmJiAhc2FtcGxlLT5pc05vbkRpc3BsYXlpbmco
KSkKKyAgICAgICAgaWYgKG1fbWVkaWFTb3VyY2UgJiYgIXNhbXBsZS0+aXNOb25EaXNwbGF5aW5n
KCkgJiYgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCkpCiAgICAgICAgICAgICBtX21lZGlhU291cmNl
LT5wbGF5ZXIoKS0+c2V0SGFzQXZhaWxhYmxlQXVkaW9TYW1wbGUocmVuZGVyZXIuZ2V0KCksIHRy
dWUpOwogICAgIH0KIH0KQEAgLTEwOTEsNiArMTA4MiwxNCBAQCBib29sIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjppc1JlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJh
Y2tJRAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorTWVkaWFUaW1lIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjp0aW1lRnVkZ2VGYWN0b3IoKSBjb25zdAoreworICAgIGlmIChtX21lZGlhU291
cmNlKQorICAgICAgICByZXR1cm4gbV9tZWRpYVNvdXJjZS0+dGltZUZ1ZGdlRmFjdG9yKCk7CisK
KyAgICByZXR1cm4gU291cmNlQnVmZmVyUHJpdmF0ZTo6dGltZUZ1ZGdlRmFjdG9yKCk7Cit9CisK
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNldEFjdGl2ZShib29sIGlzQWN0aXZl
KQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgaXNBY3RpdmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXIuaAppbmRleCAwZGM4MWYwNmQyN2RjZDA5NzM5ZDA3ZTQ1MDc1OGI2MzYyOWQ3MWM3
Li5lMTBjZGFiYzQ3YTQ0NWQzMWNhOTBmOWJmNDgxMmZmYzRhMDMxMTY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk1lZGlhUGxheWVyRW51bXMu
aCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvVWludDhBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAt
NjksNyArNzAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBXaWxsIGJlIGNhbGxlZCBvbiB0aGUgbWFp
biB0aHJlYWQuCiAgICAgdXNpbmcgSW5pdGlhbGl6YXRpb25TZWdtZW50ID0gU291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OwotICAgIHVzaW5nIERpZFBhcnNl
SW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoSW5pdGlhbGl6
YXRpb25TZWdtZW50JiYpPjsKKyAgICB1c2luZyBEaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNh
bGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEluaXRpYWxpemF0aW9uU2VnbWVudCYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpPjsKICAgICB2b2lkIHNldERpZFBhcnNlSW5pdGlhbGl6
YXRpb25EYXRhQ2FsbGJhY2soRGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayYmIGNh
bGxiYWNrKQogICAgIHsKICAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
CmluZGV4IDg0YmM1NzRkYzBmMDNmOGZmYjQzNjg5MGZjNGExYTVkZWFhOWU2NDEuLmUyMWVmOWY3
ZjIwMzgyNzgwYTlmMTMzODM4N2IyM2JiNjlkMDE5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwCkBAIC03MTYsMTIgKzcxNiwxOSBAQCBTdGF0dXMgU291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6T25DbHVzdGVyQmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwg
YwogICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CiAKICAg
ICBpZiAobV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCAmJiBtX2RpZFBhcnNlSW5p
dGlhbGl6YXRpb25EYXRhQ2FsbGJhY2spIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpbml0aWFsaXphdGlvblNlZ21lbnQg
PSBXVEZNb3ZlKCptX2luaXRpYWxpemF0aW9uU2VnbWVudCldICgpIG11dGFibGUgewotICAgICAg
ICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFdURk1vdmUoaW5pdGlh
bGl6YXRpb25TZWdtZW50KSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5pdGlhbGl6YXRpb25TZWdtZW50ID0gV1RGTW92
ZSgqbV9pbml0aWFsaXphdGlvblNlZ21lbnQpLCB0cmFja0lEcyA9IFdURk1vdmUobV9pbml0aWFs
aXphdGlvblNlZ21lbnRUcmFja0lEcyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBtX2RpZFBh
cnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soV1RGTW92ZShpbml0aWFsaXphdGlvblNlZ21l
bnQpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0cmFja0lEcyA9IFdU
Rk1vdmUodHJhY2tJRHMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV90cmFja0J1ZmZlck1hbmFnZXJSZWFkeU11dGV4KTsKKyAgICAgICAgICAg
ICAgICBmb3IgKGF1dG8gdHJhY2tJRCA6IHRyYWNrSURzKQorICAgICAgICAgICAgICAgICAgICBt
X3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5U2V0LmFkZCh0cmFja0lEKTsKKworICAgICAgICAgICAg
ICAgIG1fdHJhY2tCdWZmZXJNYW5hZ2VyUmVhZHlDb25kaXRpb24ubm90aWZ5QWxsKCk7CisgICAg
ICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfQogICAgIG1faW5pdGlhbGl6YXRpb25TZWdt
ZW50RW5jb3VudGVyZWQgPSBmYWxzZTsKICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudCA9IG51
bGxwdHI7CisgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRUcmFja0lEcy5jbGVhcigpOwogCiAg
ICAgaWYgKGNsdXN0ZXIudGltZWNvZGUuaXNfcHJlc2VudCgpKQogICAgICAgICBtX2N1cnJlbnRU
aW1lY29kZSA9IGNsdXN0ZXIudGltZWNvZGUudmFsdWUoKTsKQEAgLTczOCwxMCArNzQ1LDEzIEBA
IFN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblRyYWNrRW50cnkoY29uc3QgRWxlbWVu
dE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uCiAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjpr
T2tDb21wbGV0ZWQpOwogCiAgICAgYXV0byB0cmFja1R5cGUgPSB0cmFja0VudHJ5LnRyYWNrX3R5
cGUudmFsdWUoKTsKLSAgICBpZiAodHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a1ZpZGVvKQorICAg
IGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprVmlkZW8pIHsKICAgICAgICAgbV9pbml0aWFs
aXphdGlvblNlZ21lbnQtPnZpZGVvVHJhY2tzLmFwcGVuZCh7IE1lZGlhRGVzY3JpcHRpb25XZWJN
OjpjcmVhdGUoVHJhY2tFbnRyeSh0cmFja0VudHJ5KSksIFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6
Y3JlYXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpIH0pOwotICAgIGVsc2UgaWYgKHRyYWNrVHlw
ZSA9PSBUcmFja1R5cGU6OmtBdWRpbykKKyAgICAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRU
cmFja0lEcy5hcHBlbmQodHJhY2tFbnRyeS50cmFja191aWQudmFsdWUoKSk7CisgICAgfSBlbHNl
IGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprQXVkaW8pIHsKICAgICAgICAgbV9pbml0aWFs
aXphdGlvblNlZ21lbnQtPmF1ZGlvVHJhY2tzLmFwcGVuZCh7IE1lZGlhRGVzY3JpcHRpb25XZWJN
OjpjcmVhdGUoVHJhY2tFbnRyeSh0cmFja0VudHJ5KSksIEF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6
Y3JlYXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpIH0pOworICAgICAgICBtX2luaXRpYWxpemF0
aW9uU2VnbWVudFRyYWNrSURzLmFwcGVuZCh0cmFja0VudHJ5LnRyYWNrX3VpZC52YWx1ZSgpKTsK
KyAgICB9CiAgICAgbV90cmFja3MuYXBwZW5kKHsgVHJhY2tFbnRyeSh0cmFja0VudHJ5KSwgeyB9
LCBudWxscHRyLCBudWxscHRyLCAwIH0pOwogCiAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtP
a0NvbXBsZXRlZCk7CkBAIC0xMjAzLDYgKzEyMTMsMTQgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06Ok9uRnJhbWUoY29uc3QgRnJhbWVNZXRhZGF0YSYgbWV0YWRhdGEsIFJl
YWQKIAogICAgICAgICBhdXRvIHRyYWNrSUQgPSB0cmFjay50cmFja191aWQudmFsdWUoKTsKIAor
ICAgICAgICAvLyBXYWl0IGZvciB0aGUgdHJhY2sgYnVmZmVyIG1hbmFnZXIgaXMgcmVhZHkgZm9y
IHRoaXMgdHJhY2sKKyAgICAgICAgeworICAgICAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxMb2Nr
PiBsb2NrKG1fdHJhY2tCdWZmZXJNYW5hZ2VyUmVhZHlNdXRleCk7CisgICAgICAgICAgICBtX3Ry
YWNrQnVmZmVyTWFuYWdlclJlYWR5Q29uZGl0aW9uLndhaXQobG9jaywgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdHJhY2tJRF0geworICAgICAgICAgICAgICAgIHJldHVy
biBtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5U2V0LmNvbnRhaW5zKHRyYWNrSUQpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0KKwogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNhbXBsZUJ1ZmZlciA9IFdURk1vdmUoc2Ft
cGxlQnVmZmVyKSwgdHJhY2tJRF0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIW1fZGlk
UHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKQogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uaAppbmRleCA0NWJkNjlmZmI0NzEyYmU1MjQ1ZTYyNmNmYjdj
ZGU5ODdlOGFiYWNmLi5hNTQzOGVkYzFlNjExOTI3OTJmMDEyZTVlYzQzN2U1NTQ4MmRjMzQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCkBAIC0zMSw3ICszMSwxMCBAQAogI2luY2x1
ZGUgPGNvbW1vbi92cDlfaGVhZGVyX3BhcnNlci5oPgogI2luY2x1ZGUgPHdlYm0vY2FsbGJhY2su
aD4KICNpbmNsdWRlIDx3ZWJtL3N0YXR1cy5oPgorI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4K
ICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgpAQCAtMTQxLDYgKzE0
NCwxMSBAQCBwcml2YXRlOgogICAgIE9wdGlvbmFsPEJsb2NrVmFyaWFudD4gbV9jdXJyZW50Qmxv
Y2s7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IG1fcmV3aW5kVG9Qb3NpdGlvbjsKIAorICAgIFZl
Y3Rvcjx1aW50NjRfdD4gbV9pbml0aWFsaXphdGlvblNlZ21lbnRUcmFja0lEczsKKyAgICBMb2Nr
IG1fdHJhY2tCdWZmZXJNYW5hZ2VyUmVhZHlNdXRleDsKKyAgICBDb25kaXRpb24gbV90cmFja0J1
ZmZlck1hbmFnZXJSZWFkeUNvbmRpdGlvbjsKKyAgICBIYXNoU2V0PHVpbnQ2NF90PiBtX3RyYWNr
QnVmZmVyTWFuYWdlclJlYWR5U2V0OworCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAg
UmVmUHRyPGNvbnN0IFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xv
Z0lkZW50aWZpZXIgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRl
LmNwcAppbmRleCA5YjRkMWY4MjEwMDFjYzU5YmY4NzA4YWNmNzgyNTZhMjkxYzU2ZjFjLi45Nzlh
ODFkM2I5MGNiNjYwYWU3N2JhYWIyOGRhMGVjOTZjYjM5MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01l
ZGlhU291cmNlUHJpdmF0ZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBs
YXRmb3JtVGltZVJhbmdlcz4gTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6YnVmZmVyZWQoKQogICAg
IHJldHVybiBtX2NsaWVudC0+YnVmZmVyZWQoKTsKIH0KIAotdm9pZCBNb2NrTWVkaWFTb3VyY2VQ
cml2YXRlOjpkdXJhdGlvbkNoYW5nZWQoKQordm9pZCBNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpk
dXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikKIHsKICAgICBtX3BsYXllci51cGRhdGVE
dXJhdGlvbihkdXJhdGlvbigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmgK
aW5kZXggN2E2OTNhZWQzNWNhNmM5YzkzNjkxMDJhYTU1MjRmZTMwZmFkNDQwMS4uZTNkOTgwN2M2
YjE1MjFmYzliMDRlNjRiMTY5ZjVlZWRkNDY0NTE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3Vy
Y2VQcml2YXRlLmgKQEAgLTgwLDggKzgwLDkgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1lZGlhU291
cmNlUHJpdmF0ZSBPdmVycmlkZXMKICAgICBBZGRTdGF0dXMgYWRkU291cmNlQnVmZmVyKGNvbnN0
IENvbnRlbnRUeXBlJiwgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGU+Jikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGR1cmF0aW9uQ2hh
bmdlZChjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIG1hcmtFbmRPZlN0cmVh
bShFbmRPZlN0cmVhbVN0YXR1cykgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0VuZGVkKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9pc0VuZGVkOyB9CiAgICAgdm9pZCB1bm1hcmtFbmRPZlN0cmVh
bSgpIG92ZXJyaWRlOwogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5
U3RhdGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApp
bmRleCAyZmM5MGQzNTRmNmI5NjdjNWM5NTAyN2IyMjNlNGEzNTc4MDBmMzBhLi5hZDQ0ZWZiZGFh
OGExYmEzM2EyZjcxNTU4ODExZTMyZGIwYzE1M2FlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VC
dWZmZXJQcml2YXRlLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgTW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGU6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQogCiAgICAgd2hp
bGUgKG1faW5wdXRCdWZmZXIuc2l6ZSgpICYmIHJlc3VsdCA9PSBTb3VyY2VCdWZmZXJQcml2YXRl
Q2xpZW50OjpBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2NlZWRlZCkgewogICAgICAgICBhdXRvIGJ1
ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobV9pbnB1dEJ1ZmZlci5kYXRhKCksIG1faW5wdXRC
dWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgc2l6ZV90IGJveExlbmd0aCA9IE1vY2tCb3g6OnBlZWtM
ZW5ndGgoYnVmZmVyLnB0cigpKTsKKyAgICAgICAgdWludDY0X3QgYm94TGVuZ3RoID0gTW9ja0Jv
eDo6cGVla0xlbmd0aChidWZmZXIucHRyKCkpOwogICAgICAgICBpZiAoYm94TGVuZ3RoID4gYnVm
ZmVyLT5ieXRlTGVuZ3RoKCkpCiAgICAgICAgICAgICBicmVhazsKIApAQCAtMTkxLDcgKzE5MSw3
IEBAIHZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlv
blNlZ21lbnQoY29uc3QgTW9ja0luaXRpYWxpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBTb3Vy
Y2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KHNlZ21lbnQp
OworICAgIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21l
bnQoV1RGTW92ZShzZWdtZW50KSwgW10oKSB7IH0pOwogfQogCiB2b2lkIE1vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlOjpkaWRSZWNlaXZlU2FtcGxlKGNvbnN0IE1vY2tTYW1wbGVCb3gmIHNhbXBsZUJv
eCkKQEAgLTI0OSw3ICsyNDksNyBAQCBNZWRpYVRpbWUgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6
Om1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWVGb3JUcmFja0lEKGNvbgogICAgIHJldHVy
biBtX21pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWU7CiB9CiAKLXZvaWQgTW9ja1NvdXJj
ZUJ1ZmZlclByaXZhdGU6OnNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRChjb25zdCBBdG9t
U3RyaW5nJiwgc2l6ZV90IG1heFF1ZXVlRGVwdGgpCit2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2
YXRlOjpzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYsIHVp
bnQ2NF90IG1heFF1ZXVlRGVwdGgpCiB7CiAgICAgbV9tYXhRdWV1ZURlcHRoID0gbWF4UXVldWVE
ZXB0aDsKIH0KQEAgLTMyMiwxNiArMzIyLDYgQEAgdm9pZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0
ZTo6ZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYgc2FtcGxlLCBjb25zdCBBdG8KICAg
ICBtX2VucXVldWVkU2FtcGxlcy5hcHBlbmQodG9TdHJpbmcoc2FtcGxlLmdldCgpKSk7CiB9CiAK
LWJvb2wgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6Omhhc1ZpZGVvKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9jbGllbnQgJiYgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbygp
OwotfQotCi1ib29sIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpoYXNBdWRpbygpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fY2xpZW50ICYmIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlSGFz
QXVkaW8oKTsKLX0KLQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogV1RGTG9nQ2hhbm5lbCYg
TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmxvZ0NoYW5uZWwoKSBjb25zdAogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVm
ZmVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oCmluZGV4IGI2YzU0N2RkOTVjMWY2YjBiZGRkMmU0MTFh
ZjE0MmIzOThmZGZmZTUuLjhiMmExMzg5NDZjMjhmMmYzZTdkZWJmZTczNjVjY2M3YmFmYmEzZjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAgLTQ2LDkgKzQ2LDYgQEAg
cHVibGljOgogCiAgICAgdm9pZCBjbGVhck1lZGlhU291cmNlKCkgeyBtX21lZGlhU291cmNlID0g
bnVsbHB0cjsgfQogCi0gICAgYm9vbCBoYXNWaWRlbygpIGNvbnN0OwotICAgIGJvb2wgaGFzQXVk
aW8oKSBjb25zdDsKLQogcHJpdmF0ZToKICAgICBleHBsaWNpdCBNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKik7CiAKQEAgLTc1LDcgKzcyLDcgQEAgcHJpdmF0
ZToKIAogICAgIFZlY3RvcjxTdHJpbmc+IGVucXVldWVkU2FtcGxlc0ZvclRyYWNrSUQoY29uc3Qg
QXRvbVN0cmluZyYpIGZpbmFsOwogICAgIE1lZGlhVGltZSBtaW5pbXVtVXBjb21pbmdQcmVzZW50
YXRpb25UaW1lRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBz
ZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYsIHNpemVfdCkg
ZmluYWw7CisgICAgdm9pZCBzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQoY29uc3QgQXRv
bVN0cmluZyYsIHVpbnQ2NF90KSBmaW5hbDsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZUluaXRpYWxp
emF0aW9uU2VnbWVudChjb25zdCBNb2NrSW5pdGlhbGl6YXRpb25Cb3gmKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVTYW1wbGUoY29uc3QgTW9ja1NhbXBsZUJveCYpOwpAQCAtOTQsNyArOTEsNyBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9pc0FjdGl2ZSB7IGZhbHNlIH07CiAgICAgTWVkaWFUaW1lIG1f
bWluaW11bVVwY29taW5nUHJlc2VudGF0aW9uVGltZTsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2Vu
cXVldWVkU2FtcGxlczsKLSAgICBPcHRpb25hbDxzaXplX3Q+IG1fbWF4UXVldWVEZXB0aDsKKyAg
ICBPcHRpb25hbDx1aW50NjRfdD4gbV9tYXhRdWV1ZURlcHRoOwogICAgIFZlY3RvcjxjaGFyPiBt
X2lucHV0QnVmZmVyOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3Bw
CmluZGV4IDkzZTJmMjdkODJlOGY5MjRmNzg1YzUwYTY1MDUwNWFkYjZhMzY3MjYuLmVhZTkzZTcz
YWIwYzU3NjM4MGQ0NThjNzk0NDkxYTA2NjEwYjk3YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwCkBAIC02
MCw3ICs2MCw3IEBAIFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24mIFJlbW90ZUF1ZGlv
VHJhY2tQcm94eTo6Y29uZmlndXJhdGlvbigpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb247CiAKLSAgICBj
b25maWd1cmF0aW9uLT5pZGVudGlmaWVyID0gbV90cmFja1ByaXZhdGUtPmlkKCk7CisgICAgY29u
ZmlndXJhdGlvbi0+dHJhY2tJZCA9IG1fdHJhY2tQcml2YXRlLT5pZCgpOwogICAgIGNvbmZpZ3Vy
YXRpb24tPmxhYmVsID0gbV90cmFja1ByaXZhdGUtPmxhYmVsKCk7CiAgICAgY29uZmlndXJhdGlv
bi0+bGFuZ3VhZ2UgPSBtX3RyYWNrUHJpdmF0ZS0+bGFuZ3VhZ2UoKTsKICAgICBjb25maWd1cmF0
aW9uLT50cmFja0luZGV4ID0gbV90cmFja1ByaXZhdGUtPnRyYWNrSW5kZXgoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclBy
b3h5LmNwcAppbmRleCBjM2IwNzM0YTRlZjk4ZDJhN2U3MzkwZWE5ODAzZTNlMDM2YjdlYzUyLi40
MmVlNzliYjA2ZTQ3NTI1ZGFiMzU0MjZkM2FkYmExNThhNjNhMWMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
Y3BwCkBAIC0xMzQsMTAgKzEzNCwxNCBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Omxv
YWQoVVJMJiYgdXJsLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JgogfQogCiAj
aWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLXZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bG9h
ZE1lZGlhU291cmNlKFVSTCYmIHVybCwgY29uc3QgV2ViQ29yZTo6Q29udGVudFR5cGUmIGNvbnRl
bnRUeXBlLCBSZW1vdGVNZWRpYVNvdXJjZUlkZW50aWZpZXIgbWVkaWFTb3VyY2VJZGVudGlmaWVy
KQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpsb2FkTWVkaWFTb3VyY2UoVVJMJiYgdXJs
LCBjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYgY29udGVudFR5cGUsIFJlbW90ZU1lZGlhU291
cmNlSWRlbnRpZmllciBtZWRpYVNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIG1fbWVkaWFTb3VyY2VQcm94eSA9IGFkb3B0UmVmKCpuZXcgUmVtb3RlTWVkaWFT
b3VyY2VQcm94eShtX21hbmFnZXIuZ3B1Q29ubmVjdGlvblRvV2ViUHJvY2VzcygpLCBtZWRpYVNv
dXJjZUlkZW50aWZpZXIsICp0aGlzKSk7CiAgICAgbV9wbGF5ZXItPmxvYWQodXJsLCBjb250ZW50
VHlwZSwgbV9tZWRpYVNvdXJjZVByb3h5LmdldCgpKTsKKworICAgIFJlbW90ZU1lZGlhUGxheWVy
Q29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOworICAgIGdldENvbmZpZ3VyYXRpb24oY29uZmln
dXJhdGlvbik7CisgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShjb25maWd1cmF0aW9uKSk7
CiB9CiAjZW5kaWYKIApAQCAtNzU5LDcgKzc2Myw4IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6dXBkYXRlQ2FjaGVkU3RhdGUoKQogCiAgICAgaWYgKG1fYnVmZmVyZWRDaGFuZ2VkKSB7
CiAgICAgICAgIG1fYnVmZmVyZWRDaGFuZ2VkID0gZmFsc2U7Ci0gICAgICAgIG1fY2FjaGVkU3Rh
dGUuYnVmZmVyZWRSYW5nZXMgPSAqbV9wbGF5ZXItPmJ1ZmZlcmVkKCk7CisgICAgICAgIGlmICht
X2VuZ2luZUlkZW50aWZpZXIgIT0gTWVkaWFQbGF5ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlm
aWVyOjpBVkZvdW5kYXRpb25NU0UpCisgICAgICAgICAgICBtX2NhY2hlZFN0YXRlLmJ1ZmZlcmVk
UmFuZ2VzID0gKm1fcGxheWVyLT5idWZmZXJlZCgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgK
aW5kZXggYjgyNDc3MTNhZGFmMWM0NTNlYTRjNjU4MWRhZDQzYmIxZTBjMjA2Ni4uYWU2YWQ4YjQ2
MGI5ZjZiZGIzYjAwNDBmNzgwYmYxOTVmNDQ5YmNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCkBAIC0xMTUs
NyArMTE1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBsb2FkKFVSTCYmLCBPcHRpb25hbDxTYW5k
Ym94RXh0ZW5zaW9uOjpIYW5kbGU+JiYsIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiwgY29u
c3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBsYXllckNvbmZp
Z3VyYXRpb24mJik+JiYpOwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgdm9pZCBsb2Fk
TWVkaWFTb3VyY2UoVVJMJiYsIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiwgUmVtb3RlTWVk
aWFTb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lkIGxvYWRNZWRpYVNvdXJjZShVUkwmJiwgY29u
c3QgV2ViQ29yZTo6Q29udGVudFR5cGUmLCBSZW1vdGVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uJiYpPiYm
KTsKICNlbmRpZgogICAgIHZvaWQgY2FuY2VsTG9hZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5p
biBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
Lm1lc3NhZ2VzLmluCmluZGV4IDA4ZWExNWNjNjZiMmVhOWQwNzBkYTZiYjcxZjg4Yjc0NTFjZjAx
NTguLjJjZGUwODA0OWFkZWRiNGM2MTY5NTY5NGIwYjg5YjVlZjBmYTEwMzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yOCw3ICsyOCw3IEBAIG1lc3NhZ2VzIC0+IFJl
bW90ZU1lZGlhUGxheWVyUHJveHkgTm90UmVmQ291bnRlZCB7CiAKICAgICBMb2FkKFVSTCB1cmws
IE9wdGlvbmFsPFdlYktpdDo6U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5z
aW9uLCBXZWJDb3JlOjpDb250ZW50VHlwZSBjb250ZW50VHlwZSwgU3RyaW5nIGtleVN5c3RlbSkg
LT4gKHN0cnVjdCBXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiBwbGF5ZXJD
b25maWd1cmF0aW9uKSBBc3luYwogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi0gICAgTG9hZE1l
ZGlhU291cmNlKFVSTCB1cmwsIFdlYkNvcmU6OkNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlLCBXZWJL
aXQ6OlJlbW90ZU1lZGlhU291cmNlSWRlbnRpZmllciBtZWRpYVNvdXJjZUlkZW50aWZpZXIpIFN5
bmNocm9ub3VzCisgICAgTG9hZE1lZGlhU291cmNlKFVSTCB1cmwsIFdlYkNvcmU6OkNvbnRlbnRU
eXBlIGNvbnRlbnRUeXBlLCBXZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNlSWRlbnRpZmllciBtZWRp
YVNvdXJjZUlkZW50aWZpZXIpIC0+IChzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllckNv
bmZpZ3VyYXRpb24gcGxheWVyQ29uZmlndXJhdGlvbikgQXN5bmMKICNlbmRpZgogICAgIENhbmNl
bExvYWQoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFTb3VyY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHAKaW5kZXggNDk5YmQ2MWMyZjc4MjIyM2ZhMzhmYzk3
YjE4MmZhNmQyYjkzODFkZS4uMmU0ODJkZWI2NWRmMzY0ZGFmYzk0N2NlZTJiNzU0NWRlMzNlOGJm
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
U291cmNlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVNvdXJjZVByb3h5LmNwcApAQCAtNjEsMTMgKzYxLDEyIEBAIHZvaWQgUmVtb3RlTWVk
aWFTb3VyY2VQcm94eTo6c2V0UHJpdmF0ZUFuZE9wZW4oUmVmPE1lZGlhU291cmNlUHJpdmF0ZT4m
JiBtZWRpYVNvCiAKIE1lZGlhVGltZSBSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpkdXJhdGlvbigp
IGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4geyB9OworICAgIHJl
dHVybiBtX2R1cmF0aW9uOwogfQogCiBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2Vz
PiBSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpidWZmZXJlZCgpIGNvbnN0CiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gbWFrZVVu
aXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9CiAKQEAgLTExMiw2ICsxMTEsMjIgQEAgdm9p
ZCBSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjphZGRTb3VyY2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6
Q29udGVudFR5cGUmIGNvbnRlbnQKICAgICBjYWxsYmFjayhzdGF0dXMsIHJlbW90ZVNvdXJjZUlk
ZW50aWZpZXIpOwogfQogCit2b2lkIFJlbW90ZU1lZGlhU291cmNlUHJveHk6OmR1cmF0aW9uQ2hh
bmdlZChjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uKQoreworICAgIGlmIChtX2R1cmF0aW9uID09
IGR1cmF0aW9uKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2R1cmF0aW9uID0gZHVyYXRpb247
CisgICAgaWYgKG1fcHJpdmF0ZSkKKyAgICAgICAgbV9wcml2YXRlLT5kdXJhdGlvbkNoYW5nZWQo
ZHVyYXRpb24pOworfQorCit2b2lkIFJlbW90ZU1lZGlhU291cmNlUHJveHk6OnNldFJlYWR5U3Rh
dGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKQorewor
ICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0ZS0+c2V0UmVhZHlTdGF0ZShyZWFk
eVN0YXRlKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUo
R1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaAppbmRleCA1
OTY4YzdiYmQxODljZDQ3OWVmNGFlYWI0ZDQ0OTk1MzNmZDNkNjViLi45NTkzNDQ5ZDNiNWU1Y2Zl
ZDk2YjUxNWU4MTdlMDNkYTBjY2EwOGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgKQEAgLTc2LDE3ICs3Niwy
MSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgLy8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKLSAg
ICAvLyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rl
cj4mKSBmaW5hbDsKIAotICAgIHVzaW5nIEFkZFNvdXJjZUJ1ZmZlckNhbGxiYWNrID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cywg
T3B0aW9uYWw8UmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcj4gcmVtb3RlU291cmNlQnVmZmVy
SWRlbnRpZmllcik+OworICAgIHVzaW5nIEFkZFNvdXJjZUJ1ZmZlckNhbGxiYWNrID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cywg
T3B0aW9uYWw8UmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcj4pPjsKICAgICB2b2lkIGFkZFNv
dXJjZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYsIEFkZFNvdXJjZUJ1ZmZlckNh
bGxiYWNrJiYpOworICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpOwor
ICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpSZWFkeVN0
YXRlKTsKIAogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29ubmVjdGlvblRvV2Vi
UHJvY2VzczsKICAgICBSZW1vdGVNZWRpYVNvdXJjZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwog
ICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU+IG1fcHJpdmF0ZTsKICAgICBX
ZWFrUHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+IG1fcmVtb3RlTWVkaWFQbGF5ZXJQcm94eTsK
IAorICAgIE1lZGlhVGltZSBtX2R1cmF0aW9uOworCiAgICAgVmVjdG9yPFJlZlB0cjxSZW1vdGVT
b3VyY2VCdWZmZXJQcm94eT4+IG1fc291cmNlQnVmZmVyczsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lm1lc3Nh
Z2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNl
UHJveHkubWVzc2FnZXMuaW4KaW5kZXggY2E2Yjc1MmQ3NzA2MGRlY2NiOWRjM2JjNzk2NDg5ZjRl
YzkyMGRhZC4uZDk5OTEyNjg4ZWJiMGQ1OWFkY2RiNTM3Y2U4MzVlZmU3OTZlOWY2MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJv
eHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhU291cmNlUHJveHkubWVzc2FnZXMuaW4KQEAgLTI3LDYgKzI3LDggQEAKIAogbWVzc2Fn
ZXMgLT4gUmVtb3RlTWVkaWFTb3VyY2VQcm94eSBOb3RSZWZDb3VudGVkIHsKICAgICBBZGRTb3Vy
Y2VCdWZmZXIoV2ViQ29yZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUpIC0+IChlbnVtOnVpbnQ4
X3QgV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpBZGRTdGF0dXMgc3RhdHVzLCBPcHRpb25h
bDxXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXI+IHJlbW90ZVNvdXJjZUJ1ZmZl
cklkZW50aWZpZXIpIFN5bmNocm9ub3VzCisgICAgRHVyYXRpb25DaGFuZ2VkKE1lZGlhVGltZSBk
dXJhdGlvbikKKyAgICBTZXRSZWFkeVN0YXRlKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlJl
YWR5U3RhdGUgcmVhZHlTdGF0ZSkKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcAppbmRl
eCAyNjViNzNiNmE0ZGYzNTNmNDUzZGI3MjNjYzMyOThiYzc4NWIyYzc0Li44NDczM2ZjMGFiNDli
NjM1NTc3MTkwYThiYWU5MmVkY2RiODYxZmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAKQEAgLTM0
LDcgKzM0LDkgQEAKICNpbmNsdWRlICJSZW1vdGVNZWRpYVBsYXllclByb3h5LmgiCiAjaW5jbHVk
ZSAiUmVtb3RlU291cmNlQnVmZmVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFEZXNj
cmlwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1BsYXRmb3JtVGltZVJhbmdlcy5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApA
QCAtNTQsMTQgKzU2LDE2IEBAIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpSZW1vdGVTb3VyY2VC
dWZmZXJQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBjb25uCiB7CiAgICAgbV9jb25u
ZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VSZWNlaXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZl
cihNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUo
KSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksICp0aGlzKTsKICAgICBtX3NvdXJjZUJ1ZmZlclBy
aXZhdGUtPnNldENsaWVudCh0aGlzKTsKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPnNldElz
QXR0YWNoZWQodHJ1ZSk7CiB9CiAKIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojp+UmVtb3RlU291
cmNlQnVmZmVyUHJveHkoKQogeworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+c2V0SXNBdHRh
Y2hlZChmYWxzZSk7CiAgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VSZWNlaXZl
ck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVy
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwog
fQogCi12b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlk
UmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0aWFsaXphdGlvblNlZ21lbnQm
IHNlZ21lbnQpCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2
YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0aWFsaXphdGlvblNlZ21lbnQm
JiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CiAgICAgaWYgKCFtX3JlbW90ZU1lZGlhUGxheWVyUHJveHkpCiAgICAgICAgIHJldHVybjsK
QEAgLTcxLDE5ICs3NSwzNCBAQCB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VC
dWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudAogICAgIGZvciAoYXV0
byYgYXVkaW9UcmFja0luZm8gOiBzZWdtZW50LmF1ZGlvVHJhY2tzKSB7CiAgICAgICAgIGF1dG8g
aWRlbnRpZmllciA9IG1fcmVtb3RlTWVkaWFQbGF5ZXJQcm94eS0+YWRkUmVtb3RlQXVkaW9UcmFj
a1Byb3h5KCphdWRpb1RyYWNrSW5mby50cmFjayk7CiAgICAgICAgIHNlZ21lbnRJbmZvLmF1ZGlv
VHJhY2tzLmFwcGVuZCh7IE1lZGlhRGVzY3JpcHRpb25JbmZvKCphdWRpb1RyYWNrSW5mby5kZXNj
cmlwdGlvbiksIGlkZW50aWZpZXIgfSk7CisKKyAgICAgICAgQVNTRVJUKCFtX3RyYWNrSWRzLmNv
bnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICAgICAgQVNTRVJUKCFtX21lZGlhRGVzY3JpcHRpb25z
LmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICAgICAgbV90cmFja0lkcy5hZGQoaWRlbnRpZmll
ciwgYXVkaW9UcmFja0luZm8udHJhY2stPmlkKCkpOworICAgICAgICBtX21lZGlhRGVzY3JpcHRp
b25zLmFkZChpZGVudGlmaWVyLCAqYXVkaW9UcmFja0luZm8uZGVzY3JpcHRpb24pOwogICAgIH0K
IAogICAgIGZvciAoYXV0byYgdmlkZW9UcmFja0luZm8gOiBzZWdtZW50LnZpZGVvVHJhY2tzKSB7
CiAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IG1fcmVtb3RlTWVkaWFQbGF5ZXJQcm94eS0+YWRk
UmVtb3RlVmlkZW9UcmFja1Byb3h5KCp2aWRlb1RyYWNrSW5mby50cmFjayk7CiAgICAgICAgIHNl
Z21lbnRJbmZvLnZpZGVvVHJhY2tzLmFwcGVuZCh7IE1lZGlhRGVzY3JpcHRpb25JbmZvKCp2aWRl
b1RyYWNrSW5mby5kZXNjcmlwdGlvbiksIGlkZW50aWZpZXIgfSk7CisKKyAgICAgICAgQVNTRVJU
KCFtX3RyYWNrSWRzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICAgICAgQVNTRVJUKCFtX21l
ZGlhRGVzY3JpcHRpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICAgICAgbV90cmFja0lk
cy5hZGQoaWRlbnRpZmllciwgdmlkZW9UcmFja0luZm8udHJhY2stPmlkKCkpOworICAgICAgICBt
X21lZGlhRGVzY3JpcHRpb25zLmFkZChpZGVudGlmaWVyLCAqdmlkZW9UcmFja0luZm8uZGVzY3Jp
cHRpb24pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgdGV4dFRyYWNrSW5mbyA6IHNlZ21lbnQu
dGV4dFRyYWNrcykgewogICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX3JlbW90ZU1lZGlhUGxh
eWVyUHJveHktPmFkZFJlbW90ZVRleHRUcmFja1Byb3h5KCp0ZXh0VHJhY2tJbmZvLnRyYWNrKTsK
ICAgICAgICAgc2VnbWVudEluZm8udGV4dFRyYWNrcy5hcHBlbmQoeyBNZWRpYURlc2NyaXB0aW9u
SW5mbygqdGV4dFRyYWNrSW5mby5kZXNjcmlwdGlvbiksIGlkZW50aWZpZXIgfSk7CisKKyAgICAg
ICAgQVNTRVJUKCFtX3RyYWNrSWRzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICAgICAgQVNT
RVJUKCFtX21lZGlhRGVzY3JpcHRpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICAgICAg
bV90cmFja0lkcy5hZGQoaWRlbnRpZmllciwgdGV4dFRyYWNrSW5mby50cmFjay0+aWQoKSk7Cisg
ICAgICAgIG1fbWVkaWFEZXNjcmlwdGlvbnMuYWRkKGlkZW50aWZpZXIsICp0ZXh0VHJhY2tJbmZv
LmRlc2NyaXB0aW9uKTsKICAgICB9CiAKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KHNlZ21lbnRJbmZv
KSwgbV9pZGVudGlmaWVyKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlv
bigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoc2Vn
bWVudEluZm8pLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV9pZGVudGlmaWVyKTsKIH0K
IAogdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVu
ZEVycm9yKGJvb2wpCkBAIC05MSwxNCArMTEwLDE0IEBAIHZvaWQgUmVtb3RlU291cmNlQnVmZmVy
UHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRFcnJvcihib29sKQogICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKLXZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZl
clByaXZhdGVEdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikKK3ZvaWQgUmVtb3RlU291
cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQoY29uc3Qg
TWVkaWFUaW1lJiBkdXJhdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fY29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChkdXJh
dGlvbiksIG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6
OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBsZShkb3VibGUpCit2b2lkIFJlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoZG91Ymxl
IHNhbXBsZUR1cmF0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9jb25uZWN0
aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQ
cml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoc2FtcGxlRHVy
YXRpb24pLCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkRHJvcFNhbXBsZSgpCkBAIC0xMTEsMjYgKzEzMCwyNCBA
QCB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlU3RyZWFt
RW5kZWRXaXRoRGVjb2RlRXJyb3IoKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLWJvb2wg
UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRpbygpIGNv
bnN0Cit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlQXBw
ZW5kQ29tcGxldGUoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0IGFwcGVu
ZFJlc3VsdCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAg
ICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0
ZShhcHBlbmRSZXN1bHQpLCBtX2lkZW50aWZpZXIpOwogfQogCi1ib29sIFJlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlSGFzVmlkZW8oKSBjb25zdAordm9pZCBSZW1v
dGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVSZW5kZXJp
bmdFcnJvcihpbnQgZXJyb3JDb2RlKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZm
ZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5k
UmVzdWx0IGFwcGVuZFJlc3VsdCkKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJj
ZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZChib29sIGZsYWcpCiB7Ci0gICAgbV9j
b25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoYXBw
ZW5kUmVzdWx0KSwgbV9pZGVudGlmaWVyKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mu
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNv
dXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZChmbGFnKSwgbV9pZGVudGlmaWVy
KTsKIH0KIAotdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0
ZURpZFJlY2VpdmVSZW5kZXJpbmdFcnJvcihpbnQgZXJyb3JDb2RlKQordm9pZCBSZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChj
b25zdCBQbGF0Zm9ybVRpbWVSYW5nZXMmIHRpbWVSYW5nZXMpCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVCdWZm
ZXJlZFJhbmdlc0NoYW5nZWQodGltZVJhbmdlcyksIG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQg
UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OmFwcGVuZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2Um
IGRhdGEpCkBAIC0xMzgsNiArMTU1LDQzIEBAIHZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6
OmFwcGVuZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCiAgICAgbV9zb3VyY2VCdWZm
ZXJQcml2YXRlLT5hcHBlbmQoZGF0YS52ZWN0b3IoKSk7CiB9CiAKK3ZvaWQgUmVtb3RlU291cmNl
QnVmZmVyUHJveHk6OnNldEFjdGl2ZShib29sIGFjdGl2ZSkKK3sKKyAgICBtX3NvdXJjZUJ1ZmZl
clByaXZhdGUtPnNldEFjdGl2ZShhY3RpdmUpOworfQorCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5OjpzZXRSZWFkeVN0YXRlKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0
YXRlKQoreworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+c2V0UmVhZHlTdGF0ZShzdGF0ZSk7
Cit9CisKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnVwZGF0ZUJ1ZmZlcmVkRnJvbVRy
YWNrQnVmZmVycyhib29sIHNvdXJjZUlzRW5kZWQpCit7CisgICAgbV9zb3VyY2VCdWZmZXJQcml2
YXRlLT51cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoc291cmNlSXNFbmRlZCk7Cit9CisK
K3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OmV2aWN0Q29kZWRGcmFtZXModWludDY0X3Qg
bmV3RGF0YVNpemUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90
IG1heGltdW1CdWZmZXJTaXplLCBjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBjb25zdCBN
ZWRpYVRpbWUmIGR1cmF0aW9uLCBib29sIGlzRW5kZWQpCit7CisgICAgbV9zb3VyY2VCdWZmZXJQ
cml2YXRlLT5ldmljdENvZGVkRnJhbWVzKG5ld0RhdGFTaXplLCBwZW5kaW5nQXBwZW5kRGF0YUNh
cGFjaXR5LCBtYXhpbXVtQnVmZmVyU2l6ZSwgY3VycmVudFRpbWUsIGR1cmF0aW9uLCBpc0VuZGVk
KTsKK30KKwordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6YWRkVHJhY2tCdWZmZXIoVHJh
Y2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyKQor
eworICAgIEFTU0VSVChtX3RyYWNrSWRzLmNvbnRhaW5zKHRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIpKTsKKyAgICBBU1NFUlQobV9tZWRpYURlc2NyaXB0aW9ucy5jb250YWlucyh0cmFja1By
aXZhdGVSZW1vdGVJZGVudGlmaWVyKSk7CisgICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlLT5hZGRU
cmFja0J1ZmZlcihtX3RyYWNrSWRzLmdldCh0cmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyKSwg
bV9tZWRpYURlc2NyaXB0aW9ucy5nZXQodHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllcikpOwor
fQorCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpyZWVucXVldWVNZWRpYUlmTmVlZGVk
KGNvbnN0IE1lZGlhVGltZSYgY3VycmVudE1lZGlhVGltZSwgdWludDY0X3QgcGVuZGluZ0FwcGVu
ZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUpCit7CisgICAgbV9zb3Vy
Y2VCdWZmZXJQcml2YXRlLT5yZWVucXVldWVNZWRpYUlmTmVlZGVkKGN1cnJlbnRNZWRpYVRpbWUs
IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIG1heGltdW1CdWZmZXJTaXplKTsKK30KKwordm9p
ZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6dHJ5U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tFbnF1
ZXVlZCgpCit7CisgICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlLT50cnlTaWduYWxBbGxTYW1wbGVz
SW5UcmFja0VucXVldWVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJv
eHkuaAppbmRleCBiYzlmOTlkZmI3YTIzMGI1ODlhZTM0MmU1Y2QwNDc3MDc1ZjAyMTM4Li42ZWNk
OGJjZjY4ZWViN2ZjYWIxMTVjNjljYTFjMTRkZmRjNTJiNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaApA
QCAtMzAsNiArMzAsOCBAQAogI2luY2x1ZGUgIkdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIK
ICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1vdGVTb3VyY2VCdWZm
ZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllci5o
IgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFEZXNjcmlwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU291cmNlQnVmZmVyUHJpdmF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KQEAgLTQzLDEwICs0NSwxMiBA
QCBjbGFzcyBEYXRhUmVmZXJlbmNlOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNZWRp
YVNhbXBsZTsKK2NsYXNzIFBsYXRmb3JtVGltZVJhbmdlczsKIH0KIAogbmFtZXNwYWNlIFdlYktp
dCB7CiAKK3N0cnVjdCBNZWRpYURlc2NyaXB0aW9uSW5mbzsKIGNsYXNzIFJlbW90ZU1lZGlhUGxh
eWVyUHJveHk7CiAKIGNsYXNzIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5IGZpbmFsCkBAIC01OCwx
NiArNjIsMTYgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWY8UmVtb3RlU291cmNlQnVmZmVyUHJv
eHk+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiwgUmVtb3RlU291cmNlQnVmZmVy
SWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU+JiYsIFJlbW90ZU1l
ZGlhUGxheWVyUHJveHkmKTsKICAgICB2aXJ0dWFsIH5SZW1vdGVTb3VyY2VCdWZmZXJQcm94eSgp
OwogCi0gICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9u
U2VnbWVudChjb25zdCBJbml0aWFsaXphdGlvblNlZ21lbnQmKSBmaW5hbDsKKyAgICB2b2lkIHNv
dXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxp
emF0aW9uU2VnbWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAg
IHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZVN0cmVhbUVuZGVkV2l0aERlY29kZUVycm9yKCkgZmlu
YWw7CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9vbCBkZWNvZGVF
cnJvcikgZmluYWw7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0KSBmaW5hbDsK
ICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFU
aW1lJikgZmluYWw7CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUo
ZG91YmxlIHNhbXBsZUR1cmF0aW9uKSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZh
dGVEaWREcm9wU2FtcGxlKCkgZmluYWw7Ci0gICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlU3Ry
ZWFtRW5kZWRXaXRoRGVjb2RlRXJyb3IoKSBmaW5hbDsKLSAgICBib29sIHNvdXJjZUJ1ZmZlclBy
aXZhdGVIYXNBdWRpbygpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc291cmNlQnVmZmVyUHJpdmF0
ZUhhc1ZpZGVvKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQnVm
ZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCkgZmluYWw7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2
YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdl
cyYpIGZpbmFsOwogCi0gICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0KSBmaW5hbDsK
ICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJyb3IoaW50
IGVycm9yQ29kZSkgZmluYWw7CiAKIHByaXZhdGU6CkBAIC03NywxMiArODEsMjIgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVj
b2RlciYpIGZpbmFsOwogICAgIC8vIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikg
ZmluYWw7CiAKKyAgICB2b2lkIHNldEFjdGl2ZShib29sKTsKICAgICB2b2lkIGFwcGVuZChjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2b2lkIHNldFJlYWR5U3RhdGUoV2ViQ29yZTo6
TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpOworICAgIHZvaWQgdXBkYXRlQnVmZmVyZWRGcm9tVHJh
Y2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCk7CisgICAgdm9pZCBldmljdENvZGVkRnJhbWVz
KHVpbnQ2NF90IG5ld0RhdGFTaXplLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5
LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50VGlt
ZSwgY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbiwgYm9vbCBpc0VuZGVkKTsKKyAgICB2b2lkIGFk
ZFRyYWNrQnVmZmVyKFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVl
bnF1ZXVlTWVkaWFJZk5lZWRlZChjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRNZWRpYVRpbWUsIHVp
bnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJT
aXplKTsKKyAgICB2b2lkIHRyeVNpZ25hbEFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoKTsKIAog
ICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MmIG1fY29ubmVjdGlvblRvV2ViUHJvY2VzczsK
ICAgICBSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAgICBSZWY8
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZT4gbV9zb3VyY2VCdWZmZXJQcml2YXRlOwogICAg
IFdlYWtQdHI8UmVtb3RlTWVkaWFQbGF5ZXJQcm94eT4gbV9yZW1vdGVNZWRpYVBsYXllclByb3h5
OworCisgICAgSGFzaE1hcDxUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBBdG9tU3RyaW5n
PiBtX3RyYWNrSWRzOworICAgIEhhc2hNYXA8VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwg
UmVmPFdlYkNvcmU6Ok1lZGlhRGVzY3JpcHRpb24+PiBtX21lZGlhRGVzY3JpcHRpb25zOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkubWVzc2FnZXMu
aW4KaW5kZXggYTA4ZmYwMWRhMzBkMDY3YjllNDFmYjVhMTEzZTdiYTQzZmUwZTAxNy4uZjQxZmRl
NGU3OWZhNzA5YzIzOGRjMjc3NDZkOTA4NGZmODAxNGE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eS5tZXNzYWdlcy5pbgpAQCAtMjYsNyArMjYsMTQgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NF
U1MpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKIG1lc3NhZ2VzIC0+IFJlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5IE5vdFJlZkNvdW50ZWQgeworICAgIFNldEFjdGl2ZShib29sIGFjdGl2ZSkKICAg
ICBBcHBlbmQoSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCisgICAgU2V0UmVhZHlTdGF0ZShXZWJD
b3JlOjpNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0ZSkKKyAgICBVcGRhdGVCdWZmZXJlZEZy
b21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVkKQorICAgIEV2aWN0Q29kZWRGcmFtZXMo
dWludDY0X3QgbmV3RGF0YVNpemUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHks
IHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplLCBNZWRpYVRpbWUgY3VycmVudFRpbWUsIE1lZGlh
VGltZSBkdXJhdGlvbiwgYm9vbCBpc0VuZGVkKQorICAgIEFkZFRyYWNrQnVmZmVyKFdlYktpdDo6
VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFja0lkKQorICAgIFJlZW5xdWV1ZU1lZGlh
SWZOZWVkZWQoTWVkaWFUaW1lIGN1cnJlbnRNZWRpYVRpbWUsIHVpbnQ2NF90IHBlbmRpbmdBcHBl
bmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplKQorICAgIFRyeVNpZ25h
bEFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoKQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCmlu
ZGV4IDY3NDQ4ZTlhNzQ4ZjE4YWRhNDUyNTkwOWJhMmNkMzE0MGIyMjUxZWQuLjEzMjE1YTY3Mzk3
YzBjY2Y4ODc0ZmI0YWFmMTAwODNkMzBiMTIxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcApAQCAtNjQsNyAr
NjQsNyBAQCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYgUmVtb3RlVGV4dFRy
YWNrUHJveHk6OmNvbmZpZ3VyYXRpb24oKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxU
ZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbjsKIAotICAg
IGNvbmZpZ3VyYXRpb24tPmlkZW50aWZpZXIgPSBtX3RyYWNrUHJpdmF0ZS0+aWQoKTsKKyAgICBj
b25maWd1cmF0aW9uLT50cmFja0lkID0gbV90cmFja1ByaXZhdGUtPmlkKCk7CiAgICAgY29uZmln
dXJhdGlvbi0+bGFiZWwgPSBtX3RyYWNrUHJpdmF0ZS0+bGFiZWwoKTsKICAgICBjb25maWd1cmF0
aW9uLT5sYW5ndWFnZSA9IG1fdHJhY2tQcml2YXRlLT5sYW5ndWFnZSgpOwogICAgIGNvbmZpZ3Vy
YXRpb24tPnRyYWNrSW5kZXggPSBtX3RyYWNrUHJpdmF0ZS0+dHJhY2tJbmRleCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1By
b3h5LmNwcAppbmRleCAzNTBmOGVhNzMwN2JkMjM3YWE4M2Y2Y2M5NDViNTYxMGRmNmYxYzcxLi5i
OTJhODRlM2E5YjY4YWM2YzRmMmFmMzQyNmFlZDdhNzk0MTJkYWM2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5LmNw
cApAQCAtNjAsNyArNjAsNyBAQCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uJiBSZW1v
dGVWaWRlb1RyYWNrUHJveHk6OmNvbmZpZ3VyYXRpb24oKQogewogICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uOwog
Ci0gICAgY29uZmlndXJhdGlvbi0+aWRlbnRpZmllciA9IG1fdHJhY2tQcml2YXRlLT5pZCgpOwor
ICAgIGNvbmZpZ3VyYXRpb24tPnRyYWNrSWQgPSBtX3RyYWNrUHJpdmF0ZS0+aWQoKTsKICAgICBj
b25maWd1cmF0aW9uLT5sYWJlbCA9IG1fdHJhY2tQcml2YXRlLT5sYWJlbCgpOwogICAgIGNvbmZp
Z3VyYXRpb24tPmxhbmd1YWdlID0gbV90cmFja1ByaXZhdGUtPmxhbmd1YWdlKCk7CiAgICAgY29u
ZmlndXJhdGlvbi0+dHJhY2tJbmRleCA9IG1fdHJhY2tQcml2YXRlLT50cmFja0luZGV4KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0
ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9U
ZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oCmluZGV4IGMxMzljZmMxNGI0NzFm
YjI1OGRiYmU4MTgyYjNkNWM2MjE2MmI1OTIuLjY1NjA1YjAxYTEyODZjMzEyOTdlYmM2MGNlMGZj
ODUwNWI1MjJlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9U
ZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oCkBA
IC0zNCw3ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFRleHRUcmFja1By
aXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIHsKLSAgICBBdG9tU3RyaW5nIGlkZW50aWZpZXI7Cisg
ICAgQXRvbVN0cmluZyB0cmFja0lkOwogICAgIEF0b21TdHJpbmcgbGFiZWw7CiAgICAgQXRvbVN0
cmluZyBsYW5ndWFnZTsKICAgICBBdG9tU3RyaW5nIGluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRj
aFR5cGU7CkBAIC01NSw3ICs1NSw3IEBAIHN0cnVjdCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29u
ZmlndXJhdGlvbiB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KICAgICB2b2lkIGVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgZW5jb2RlciA8PCBpZGVu
dGlmaWVyOworICAgICAgICBlbmNvZGVyIDw8IHRyYWNrSWQ7CiAgICAgICAgIGVuY29kZXIgPDwg
bGFiZWw7CiAgICAgICAgIGVuY29kZXIgPDwgbGFuZ3VhZ2U7CiAgICAgICAgIGVuY29kZXIgPDwg
aW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZTsKQEAgLTc1LDkgKzc1LDkgQEAgc3RydWN0
IFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIHsKICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgRGVjb2Rlcj4KICAgICBzdGF0aWMgT3B0aW9uYWw8VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNv
bmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0
aW9uYWw8QXRvbVN0cmluZz4gaWRlbnRpZmllcjsKLSAgICAgICAgZGVjb2RlciA+PiBpZGVudGlm
aWVyOwotICAgICAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgIE9wdGlvbmFsPEF0b21TdHJp
bmc+IHRyYWNrSWQ7CisgICAgICAgIGRlY29kZXIgPj4gdHJhY2tJZDsKKyAgICAgICAgaWYgKCF0
cmFja0lkKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgICAgICBPcHRp
b25hbDxBdG9tU3RyaW5nPiBsYWJlbDsKQEAgLTE1MSw3ICsxNTEsNyBAQCBzdHJ1Y3QgVGV4dFRy
YWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24gewogICAgICAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4ge3sKLSAgICAgICAgICAgIFdURk1vdmUoKmlkZW50
aWZpZXIpLAorICAgICAgICAgICAgV1RGTW92ZSgqdHJhY2tJZCksCiAgICAgICAgICAgICBXVEZN
b3ZlKCpsYWJlbCksCiAgICAgICAgICAgICBXVEZNb3ZlKCpsYW5ndWFnZSksCiAgICAgICAgICAg
ICBXVEZNb3ZlKCppbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlKSwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9UcmFja1ByaXZhdGVSZW1vdGVDb25maWd1
cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVt
b3RlQ29uZmlndXJhdGlvbi5oCmluZGV4IDQ0NDIyYjMwMTRmMjAyMjE2YmVkNmE1N2EzZjhlZGQ3
OTQ4ZTkyNDYuLmE4ZjA1ZDE4ZmQ5OTg4ZWJiOTljNzY3M2I2ODdhNjcwZDkyZTAxNDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9UcmFja1ByaXZhdGVSZW1vdGVD
b25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RyYWNr
UHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKIHN0cnVjdCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIHsKLSAg
ICBBdG9tU3RyaW5nIGlkZW50aWZpZXI7CisgICAgQXRvbVN0cmluZyB0cmFja0lkOwogICAgIEF0
b21TdHJpbmcgbGFiZWw7CiAgICAgQXRvbVN0cmluZyBsYW5ndWFnZTsKICAgICBNZWRpYVRpbWUg
c3RhcnRUaW1lVmFyaWFuY2UgeyBNZWRpYVRpbWU6Onplcm9UaW1lKCkgfTsKQEAgLTQ5LDcgKzQ5
LDcgQEAgc3RydWN0IFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24gewogICAgIHRlbXBs
YXRlPGNsYXNzIEVuY29kZXI+CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29u
c3QKICAgICB7Ci0gICAgICAgIGVuY29kZXIgPDwgaWRlbnRpZmllcjsKKyAgICAgICAgZW5jb2Rl
ciA8PCB0cmFja0lkOwogICAgICAgICBlbmNvZGVyIDw8IGxhYmVsOwogICAgICAgICBlbmNvZGVy
IDw8IGxhbmd1YWdlOwogICAgICAgICBlbmNvZGVyIDw8IHN0YXJ0VGltZVZhcmlhbmNlOwpAQCAt
NjMsOSArNjMsOSBAQCBzdHJ1Y3QgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7CiAg
ICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CiAgICAgc3RhdGljIE9wdGlvbmFsPFRyYWNrUHJp
dmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsK
LSAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gaWRlbnRpZmllcjsKLSAgICAgICAgZGVjb2Rl
ciA+PiBpZGVudGlmaWVyOwotICAgICAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgIE9wdGlv
bmFsPEF0b21TdHJpbmc+IHRyYWNrSWQ7CisgICAgICAgIGRlY29kZXIgPj4gdHJhY2tJZDsKKyAg
ICAgICAgaWYgKCF0cmFja0lkKQogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAog
ICAgICAgICBPcHRpb25hbDxBdG9tU3RyaW5nPiBsYWJlbDsKQEAgLTEwOSw3ICsxMDksNyBAQCBz
dHJ1Y3QgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7CiAgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7ewotICAgICAgICAgICAgV1RGTW92
ZSgqaWRlbnRpZmllciksCisgICAgICAgICAgICBXVEZNb3ZlKCp0cmFja0lkKSwKICAgICAgICAg
ICAgIFdURk1vdmUoKmxhYmVsKSwKICAgICAgICAgICAgIFdURk1vdmUoKmxhbmd1YWdlKSwKICAg
ICAgICAgICAgIFdURk1vdmUoKnN0YXJ0VGltZVZhcmlhbmNlKSwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJl
bW90ZS5jcHAKaW5kZXggNzIxYzBhYTkyMDcyNGU5YjMzYjU4NjUzMDMxMzdiNmNhNTQ5MDBhMC4u
ZTJhM2U5MDFhZmY0ZTY0MTQxYmZjOTljNmYwYzQ1NzI5YjFkOGJjZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJp
dmF0ZVJlbW90ZS5jcHAKQEAgLTUzLDkgKzUzLDkgQEAgdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZVJl
bW90ZTo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCiAKIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVS
ZW1vdGU6OnVwZGF0ZUNvbmZpZ3VyYXRpb24oVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlv
biYmIGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgaWYgKGNvbmZpZ3VyYXRpb24uaWRlbnRpZmllciAh
PSBtX2lkKSB7CisgICAgaWYgKGNvbmZpZ3VyYXRpb24udHJhY2tJZCAhPSBtX2lkKSB7CiAgICAg
ICAgIGF1dG8gY2hhbmdlZCA9ICFtX2lkLmlzRW1wdHkoKTsKLSAgICAgICAgbV9pZCA9IGNvbmZp
Z3VyYXRpb24uaWRlbnRpZmllcjsKKyAgICAgICAgbV9pZCA9IGNvbmZpZ3VyYXRpb24udHJhY2tJ
ZDsKICAgICAgICAgaWYgKGNoYW5nZWQgJiYgY2xpZW50KCkpCiAgICAgICAgICAgICBjbGllbnQo
KS0+aWRDaGFuZ2VkKG1faWQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuaAppbmRleCA1
M2RjOWJlMzNjOWJmYzBkYzRhN2IwMWZjMWYxMDFmOWU4NzZhNWM1Li5jZjdjMGU5M2VmNDZmNDkw
MWNlY2M1ZjlmN2E4ZTYxZTNmMTZiM2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5oCkBAIC00
OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9U
cmFja1ByaXZhdGVSZW1vdGUoY29ubmVjdGlvbiwgaWRlbmRpZmllciwgV1RGTW92ZShjb25maWd1
cmF0aW9uKSkpOwogICAgIH0KIAorICAgIEF0b21TdHJpbmcgaWQoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2lkOyB9CiAgICAgdm9pZCB1cGRhdGVDb25maWd1cmF0aW9uKFRyYWNrUHJpdmF0ZVJl
bW90ZUNvbmZpZ3VyYXRpb24mJik7CiAKIHByaXZhdGU6CkBAIC01NSw3ICs1Niw2IEBAIHByaXZh
dGU6CiAKICAgICB1c2luZyBBdWRpb1RyYWNrS2luZCA9IFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2
YXRlOjpLaW5kOwogICAgIEF1ZGlvVHJhY2tLaW5kIGtpbmQoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2tpbmQ7IH0KLSAgICBBdG9tU3RyaW5nIGlkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9p
ZDsgfQogICAgIEF0b21TdHJpbmcgbGFiZWwoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xhYmVs
OyB9CiAgICAgQXRvbVN0cmluZyBsYW5ndWFnZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbGFu
Z3VhZ2U7IH0KICAgICBpbnQgdHJhY2tJbmRleCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdHJh
Y2tJbmRleDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDZkZGVlODdhYmRj
Yzc2Zjg2OWFkNTU0ZGI1MTEyYjM2YjgyZjJkNmIuLjcxMzIxZTZiZTYwMDQ4MzhjM2I2MzVkMGVm
ZGM0YzFlZjY4OTMyM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUv
bWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTYzMyw3
ICs2MzMsMTAgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQoY29uc3QgVVJM
JiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250ZW50VHkKIHsKICAgICBpZiAobV9yZW1vdGVF
bmdpbmVJZGVudGlmaWVyID09IE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
cjo6QVZGb3VuZGF0aW9uTVNFKSB7CiAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IFJlbW90ZU1l
ZGlhU291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUoKTsKLSAgICAgICAgY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkxvYWRNZWRpYVNvdXJjZSh1cmws
IGNvbnRlbnRUeXBlLCBpZGVudGlmaWVyKSwgbV9pZCk7CisgICAgICAgIGNvbm5lY3Rpb24oKS5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OkxvYWRN
ZWRpYVNvdXJjZSh1cmwsIGNvbnRlbnRUeXBlLCBpZGVudGlmaWVyKSwgW3dlYWtUaGlzID0gbWFr
ZVdlYWtQdHIoKnRoaXMpXShhdXRvJiYgY29uZmlndXJhdGlvbikgeworICAgICAgICAgICAgaWYg
KHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdlYWtUaGlzLT5tX2NvbmZpZ3VyYXRpb24gPSBX
VEZNb3ZlKGNvbmZpZ3VyYXRpb24pOworICAgICAgICB9LCBtX2lkKTsKICAgICAgICAgbV9tZWRp
YVNvdXJjZVByaXZhdGUgPSBNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OmNyZWF0ZShtX21hbmFn
ZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKSwgaWRlbnRpZmllciwgbV9tYW5hZ2VyLnR5cGVDYWNo
ZShtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIpLCAqdGhpcywgY2xpZW50KTsKIAogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggMGFjNzg3MjBiYWM0ZDQy
OGQxMjQ3MDQ4OTg2NTkzOTM4ZmY3ODVkYS4uNTAzMjI1MmJmNTBmMTYyNDViMTVmZTRlMGYyZmMx
OTJkZTUxODU0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmNwcApAQCAtMTAzLDkgKzEw
Myw5IEBAIE1lZGlhU291cmNlUHJpdmF0ZTo6QWRkU3RhdHVzIE1lZGlhU291cmNlUHJpdmF0ZVJl
bW90ZTo6YWRkU291cmNlQnVmZmVyKGNvbnN0IENvCiAgICAgcmV0dXJuIHN0YXR1czsKIH0KIAot
dm9pZCBNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OmR1cmF0aW9uQ2hhbmdlZCgpCit2b2lkIE1l
ZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6ZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYg
ZHVyYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2dwdVByb2Nlc3NDb25u
ZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNvdXJjZVByb3h5
OjpEdXJhdGlvbkNoYW5nZWQoZHVyYXRpb24pLCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIE1l
ZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6bWFya0VuZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVz
KQpAQCAtMTE4LDE0ICsxMTgsMjAgQEAgdm9pZCBNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OnVu
bWFya0VuZE9mU3RyZWFtKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCitib29sIE1lZGlh
U291cmNlUHJpdmF0ZVJlbW90ZTo6aXNFbmRlZCgpIGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIE1l
ZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6cmVhZHlTdGF0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IG1fbWVkaWFQbGF5ZXJQcml2YXRlID8gbV9tZWRpYVBsYXllclByaXZhdGUtPnJlYWR5U3RhdGUo
KSA6IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZzsKIH0KIAotdm9pZCBNZWRp
YVNvdXJjZVByaXZhdGVSZW1vdGU6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3Rh
dGUpCit2b2lkIE1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6c2V0UmVhZHlTdGF0ZShNZWRpYVBs
YXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlTWVkaWFTb3VyY2VQcm94eTo6U2V0UmVhZHlTdGF0ZShyZWFkeVN0YXRlKSwgbV9pZGVudGlm
aWVyKTsKIH0KIAogdm9pZCBNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OndhaXRGb3JTZWVrQ29t
cGxldGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDc3ODM0ZjdhMTlkY2IwYjk0
ZWQ1MmY2NjgwMGU2MDVjMzE1MzQ3OTkuLjY0ZjczODViMjkyOWY5ZjMwNGI0MmM4YTM2ZTJiMjU3
NjJmOWU4ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuaApAQCAtNTYsOSArNTYsMTAgQEAg
cHVibGljOgogCiAgICAgLy8gTWVkaWFTb3VyY2VQcml2YXRlIG92ZXJyaWRlcwogICAgIEFkZFN0
YXR1cyBhZGRTb3VyY2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6Q29udGVudFR5cGUmLCBSZWZQdHI8
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZT4mKSBmaW5hbDsKLSAgICB2b2lkIGR1cmF0aW9u
Q2hhbmdlZCgpIGZpbmFsOworICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGlt
ZSYpIGZpbmFsOwogICAgIHZvaWQgbWFya0VuZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVzKSBm
aW5hbDsKICAgICB2b2lkIHVubWFya0VuZE9mU3RyZWFtKCkgZmluYWw7CisgICAgYm9vbCBpc0Vu
ZGVkKCkgY29uc3QgZmluYWw7CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUg
cmVhZHlTdGF0ZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShXZWJDb3Jl
OjpNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSkgZmluYWw7CiAgICAgdm9pZCB3YWl0Rm9yU2Vla0Nv
bXBsZXRlZCgpIGZpbmFsOwpAQCAtNzksNiArODAsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxX
ZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQ+IG1fY2xpZW50OwogICAgIFZlY3RvcjxS
ZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZT4+IG1fc291cmNlQnVmZmVyczsKIAorICAg
IE1lZGlhVGltZSBtX2R1cmF0aW9uOworCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAg
Y29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gIk1lZGlh
U291cmNlUHJpdmF0ZVJlbW90ZSI7IH0KICAgICBjb25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVudGlmaWVyOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlLmNwcAppbmRleCA2MzJlMDBmYjE1MmQwZmQ3NDY1NzZlMzRjYWZiZjllMmI0NjNi
ZjdkLi42ZWRlNDIyYTljOTQzNzJmNDJkNDBhNmJmMzFkYzY1YWEzMWNiNTQwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJSZW1v
dGVTb3VyY2VCdWZmZXJQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5o
PgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1UaW1lUmFuZ2VzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgog
CkBAIC0xMDAsMTcgKzEwMSwxNSBAQCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBTb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlOjpyZWFkeVN0YXRlKCkgY29uc3QKICAgICByZXR1cm4gbV9tZWRpYVBs
YXllclByaXZhdGUgPyBtX21lZGlhUGxheWVyUHJpdmF0ZS0+cmVhZHlTdGF0ZSgpIDogTWVkaWFQ
bGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGU6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpCit2b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJl
YWR5U3RhdGUgc3RhdGUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLX0KKyAgICBpZiAoIW1f
bWVkaWFTb3VyY2VQcml2YXRlKQorICAgICAgICByZXR1cm47CiAKLXZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZTo6Zmx1c2goY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkKLXsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpTZXRSZWFkeVN0YXRlKHN0
YXRlKSwgbV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyKTsKIH0KIAotdm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlOjplbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiwgY29u
c3QgQXRvbVN0cmluZyYgdHJhY2tJRCkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6
Zmx1c2goY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQpAQCAtMTIwLDkgKzExOSwxMyBAQCBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6
OmlzUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKQogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzZXRBY3Rp
dmUoYm9vbCkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c2V0QWN0aXZlKGJvb2wg
YWN0aXZlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX21lZGlhU291cmNl
UHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pc0FjdGl2ZSA9IGFjdGl2ZTsKKyAg
ICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1v
dGVTb3VyY2VCdWZmZXJQcm94eTo6U2V0QWN0aXZlKGFjdGl2ZSksIG1fcmVtb3RlU291cmNlQnVm
ZmVySWRlbnRpZmllcik7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6bm90
aWZ5Q2xpZW50V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJ
RCkKQEAgLTE1MSw3ICsxNTQsMzYgQEAgYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpj
YW5Td2l0Y2hUb1R5cGUoY29uc3QgQ29udGVudFR5cGUmKQogICAgIHJldHVybiBmYWxzZTsKIH0K
IAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlk
UmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0aWFsaXphdGlvblNlZ21lbnRJbmZvJiYg
c2VnbWVudEluZm8pCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnVwZGF0ZUJ1ZmZl
cmVkRnJvbVRyYWNrQnVmZmVycyhib29sIHNvdXJjZUlzRW5kZWQpCit7CisgICAgaWYgKCFtX21l
ZGlhU291cmNlUHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9ncHVQcm9jZXNzQ29u
bmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJv
eHk6OlVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVmZmVycyhzb3VyY2VJc0VuZGVkKSwgbV9yZW1v
dGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
UmVtb3RlOjpldmljdENvZGVkRnJhbWVzKHVpbnQ2NF90IG5ld0RhdGFTaXplLCB1aW50NjRfdCBw
ZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSwgY29u
c3QgTWVkaWFUaW1lJiBjdXJyZW50VGltZSwgY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbiwgYm9v
bCBpc0VuZGVkKQoreworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpFdmljdENvZGVkRnJhbWVzKG5l
d0RhdGFTaXplLCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCBtYXhpbXVtQnVmZmVyU2l6ZSwg
Y3VycmVudFRpbWUsIGR1cmF0aW9uLCBpc0VuZGVkKSwgbV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjphZGRUcmFja0J1
ZmZlcihjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lkLCBSZWZQdHI8TWVkaWFEZXNjcmlwdGlvbj4m
JikKK3sKKyAgICBBU1NFUlQobV90cmFja0lkZW50aWZpZXJNYXAuY29udGFpbnModHJhY2tJZCkp
OworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpBZGRUcmFja0J1ZmZlcihtX3RyYWNrSWRlbnRpZmll
ck1hcC5nZXQodHJhY2tJZCkpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpOworfQor
Cit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQo
Y29uc3QgTWVkaWFUaW1lJiBjdXJyZW50TWVkaWFUaW1lLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5k
RGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSkKK3sKKyAgICBtX2dwdVBy
b2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTb3VyY2VC
dWZmZXJQcm94eTo6UmVlbnF1ZXVlTWVkaWFJZk5lZWRlZChjdXJyZW50TWVkaWFUaW1lLCBwZW5k
aW5nQXBwZW5kRGF0YUNhcGFjaXR5LCBtYXhpbXVtQnVmZmVyU2l6ZSksIG1fcmVtb3RlU291cmNl
QnVmZmVySWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6
dHJ5U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCgpCit7CisgICAgbV9ncHVQcm9jZXNz
Q29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVy
UHJveHk6OlRyeVNpZ25hbEFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoKSwgbV9yZW1vdGVTb3Vy
Y2VCdWZmZXJJZGVudGlmaWVyKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0
aWFsaXphdGlvblNlZ21lbnRJbmZvJiYgc2VnbWVudEluZm8sIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fY2xpZW50IHx8ICFtX21l
ZGlhUGxheWVyUHJpdmF0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTY0LDYgKzE5Niw3IEBAIHZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2Vp
dmVJbml0aWFsaXphdGlvblNlZ21lCiAgICAgICAgIGluZm8udHJhY2sgPSBtX21lZGlhUGxheWVy
UHJpdmF0ZS0+YXVkaW9UcmFja1ByaXZhdGVSZW1vdGUoYXVkaW9UcmFjay5pZGVudGlmaWVyKTsK
ICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IFJlbW90ZU1lZGlhRGVzY3JpcHRpb246OmNyZWF0
ZShhdWRpb1RyYWNrLmRlc2NyaXB0aW9uKTsKICAgICAgICAgc2VnbWVudC5hdWRpb1RyYWNrcy5h
cHBlbmQoaW5mbyk7CisgICAgICAgIG1fdHJhY2tJZGVudGlmaWVyTWFwLmFkZChpbmZvLnRyYWNr
LT5pZCgpLCBhdWRpb1RyYWNrLmlkZW50aWZpZXIpOwogICAgIH0KIAogICAgIGZvciAoYXV0byYg
dmlkZW9UcmFjayA6IHNlZ21lbnRJbmZvLnZpZGVvVHJhY2tzKSB7CkBAIC0xNzEsNiArMjA0LDcg
QEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlk
UmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWUKICAgICAgICAgaW5mby50cmFjayA9IG1fbWVkaWFQ
bGF5ZXJQcml2YXRlLT52aWRlb1RyYWNrUHJpdmF0ZVJlbW90ZSh2aWRlb1RyYWNrLmlkZW50aWZp
ZXIpOwogICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gUmVtb3RlTWVkaWFEZXNjcmlwdGlvbjo6
Y3JlYXRlKHZpZGVvVHJhY2suZGVzY3JpcHRpb24pOwogICAgICAgICBzZWdtZW50LnZpZGVvVHJh
Y2tzLmFwcGVuZChpbmZvKTsKKyAgICAgICAgbV90cmFja0lkZW50aWZpZXJNYXAuYWRkKGluZm8u
dHJhY2stPmlkKCksIHZpZGVvVHJhY2suaWRlbnRpZmllcik7CiAgICAgfQogCiAgICAgZm9yIChh
dXRvJiB0ZXh0VHJhY2sgOiBzZWdtZW50SW5mby50ZXh0VHJhY2tzKSB7CkBAIC0xNzgsOSArMjEy
LDEwIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0
ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lCiAgICAgICAgIGluZm8udHJhY2sgPSBtX21l
ZGlhUGxheWVyUHJpdmF0ZS0+dGV4dFRyYWNrUHJpdmF0ZVJlbW90ZSh0ZXh0VHJhY2suaWRlbnRp
Zmllcik7CiAgICAgICAgIGluZm8uZGVzY3JpcHRpb24gPSBSZW1vdGVNZWRpYURlc2NyaXB0aW9u
OjpjcmVhdGUodGV4dFRyYWNrLmRlc2NyaXB0aW9uKTsKICAgICAgICAgc2VnbWVudC50ZXh0VHJh
Y2tzLmFwcGVuZChpbmZvKTsKKyAgICAgICAgbV90cmFja0lkZW50aWZpZXJNYXAuYWRkKGluZm8u
dHJhY2stPmlkKCksIHRleHRUcmFjay5pZGVudGlmaWVyKTsKICAgICB9CiAKLSAgICBtX2NsaWVu
dC0+c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoV1RG
TW92ZShzZWdtZW50KSk7CisgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNl
aXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KFdURk1vdmUoc2VnbWVudCksIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3Vy
Y2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6
QXBwZW5kUmVzdWx0IGFwcGVuZFJlc3VsdCkKQEAgLTE4OSw2ICsyMjQsMzAgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUo
U291cmNlQnVmZmVyUHIKICAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBl
bmRDb21wbGV0ZShhcHBlbmRSZXN1bHQpOwogfQogCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGU6OnNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1l
JiBkdXJhdGlvbikKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zb3Vy
Y2VCdWZmZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKGR1cmF0aW9uKTsKK30KKwordm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUo
ZG91YmxlIHNhbXBsZUR1cmF0aW9uKQoreworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9j
bGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBsZShzYW1wbGVEdXJhdGlvbik7
Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0
ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGJvb2wgZGlydHkpCit7CisgICAgaWYgKG1fY2xpZW50KQor
ICAgICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2Vk
KGRpcnR5KTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZm
ZXJQcml2YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtVGlt
ZVJhbmdlcyYgdGltZVJhbmdlcykKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2VkKHRpbWVSYW5nZXMp
OworfQorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiBXVEZMb2dDaGFubmVsJiBTb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlOjpsb2dDaGFubmVsKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlLmgKaW5kZXggNGQwZTAzMDlhZDU5ZDY5NGYxM2JjMTRjNDdjYmJhNGFmMmY3YTg2
Mi4uNzYyZjYzYmY3ZDJiNzliZmVlYmZlMmFjZWE4MjMzMTc0NTE5MDA0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJHUFVQcm9jZXNz
Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJl
bW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJUcmFja1ByaXZhdGVSZW1v
dGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50VHlwZS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvTWVkaWFTYW1wbGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1ZmZl
clByaXZhdGUuaD4KQEAgLTQ2LDYgKzQ3LDEwIEBAIGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBE
ZWNvZGVyOwogfQogCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBQbGF0Zm9ybVRpbWVSYW5n
ZXM7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgSW5pdGlhbGl6YXRpb25TZWdt
ZW50SW5mbzsKQEAgLTc0LDI1ICs3OSw0MCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6Ok1lZGlh
UGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNl
dFJlYWR5U3RhdGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpIGZpbmFsOwogICAg
IHZvaWQgZmx1c2goY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkgZmluYWw7Ci0gICAgdm9pZCBl
bnF1ZXVlU2FtcGxlKFJlZjxXZWJDb3JlOjpNZWRpYVNhbXBsZT4mJiwgY29uc3QgQXRvbVN0cmlu
ZyYgdHJhY2tJRCkgZmluYWw7CiAgICAgYm9vbCBpc1JlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3Qg
QXRvbVN0cmluZyYgdHJhY2tJRCkgZmluYWw7CiAgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCkgZmlu
YWw7CisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faXNBY3RpdmU7
IH0KICAgICB2b2lkIG5vdGlmeUNsaWVudFdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0
b21TdHJpbmcmIHRyYWNrSUQpIGZpbmFsOwogICAgIGJvb2wgY2FuU2V0TWluaW11bVVwY29taW5n
UHJlc2VudGF0aW9uVGltZShjb25zdCBBdG9tU3RyaW5nJikgY29uc3QgZmluYWw7CiAgICAgdm9p
ZCBzZXRNaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lKGNvbnN0IEF0b21TdHJpbmcmLCBj
b25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKICAgICB2b2lkIGNsZWFyTWluaW11bVVwY29taW5nUHJl
c2VudGF0aW9uVGltZShjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CiAgICAgYm9vbCBjYW5Td2l0
Y2hUb1R5cGUoY29uc3QgV2ViQ29yZTo6Q29udGVudFR5cGUmKSBmaW5hbDsKKyAgICB2b2lkIHVw
ZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVmZmVycyhib29sIHNvdXJjZUlzRW5kZWQpIGZpbmFsOwor
ICAgIHZvaWQgZXZpY3RDb2RlZEZyYW1lcyh1aW50NjRfdCBuZXdEYXRhU2l6ZSwgdWludDY0X3Qg
cGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUsIGNv
bnN0IE1lZGlhVGltZSYgY3VycmVudFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24sIGJv
b2wgaXNFbmRlZCkgZmluYWw7CisgICAgdm9pZCBhZGRUcmFja0J1ZmZlcihjb25zdCBBdG9tU3Ry
aW5nJiB0cmFja0lkLCBSZWZQdHI8V2ViQ29yZTo6TWVkaWFEZXNjcmlwdGlvbj4mJikgZmluYWw7
CisgICAgdm9pZCByZWVucXVldWVNZWRpYUlmTmVlZGVkKGNvbnN0IE1lZGlhVGltZSYgY3VycmVu
dE1lZGlhVGltZSwgdWludDY0X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3Qg
bWF4aW11bUJ1ZmZlclNpemUpIGZpbmFsOworICAgIHZvaWQgdHJ5U2lnbmFsQWxsU2FtcGxlc0lu
VHJhY2tFbnF1ZXVlZCgpIGZpbmFsOwogCiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6
OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKLQotICAgIHZvaWQgc291cmNlQnVm
ZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YXRpb25T
ZWdtZW50SW5mbyYmKTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5p
dGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemF0aW9uU2VnbWVudEluZm8mJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVTdHJlYW1F
bmRlZFdpdGhEZWNvZGVFcnJvcigpOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUFwcGVu
ZEVycm9yKGJvb2wgZGVjb2RlRXJyb3IpOwogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUFw
cGVuZENvbXBsZXRlKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJl
c3VsdCk7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKGNvbnN0
IE1lZGlhVGltZSYpOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxl
KGRvdWJsZSBzYW1wbGVEdXJhdGlvbik7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlk
RHJvcFNhbXBsZSgpOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVSZW5k
ZXJpbmdFcnJvcihpbnQgZXJyb3JDb2RlKTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVC
dWZmZXJlZERpcnR5Q2hhbmdlZChib29sIGRpcnR5KTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclBy
aXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFu
Z2VzJik7CiAKICAgICBHUFVQcm9jZXNzQ29ubmVjdGlvbiYgbV9ncHVQcm9jZXNzQ29ubmVjdGlv
bjsKICAgICBSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyIG1fcmVtb3RlU291cmNlQnVmZmVy
SWRlbnRpZmllcjsKICAgICBXZWFrUHRyPE1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZT4gbV9tZWRp
YVNvdXJjZVByaXZhdGU7CiAgICAgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVSZW1vdGU+IG1f
bWVkaWFQbGF5ZXJQcml2YXRlOwotICAgIFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVDbGll
bnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OworCisgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBUcmFj
a1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyPiBtX3RyYWNrSWRlbnRpZmllck1hcDsKKworICAgIGJv
b2wgbV9pc0FjdGl2ZSB7IGZhbHNlIH07CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAg
ICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2VyLmdl
dCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Nv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KaW5k
ZXggNDA2NDJmNjAzNmVmN2UxMWUyM2I4MGY1YTQ1MWQ3NmYzZWQyOGM0ZS4uNmM4Y2NhMGZlODk3
YzU5OWVjNGNlYjhhMmJlYTVhOWFhYmY0Njg2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgpAQCAtMjYsOCArMjYsMTIgQEAKICNpZiBFTkFCTEUoR1BV
X1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKIG1lc3NhZ2VzIC0+IFNvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGUgTm90UmVmQ291bnRlZCB7Ci0gICAgU291cmNlQnVmZmVyUHJpdmF0
ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoc3RydWN0IFdlYktpdDo6SW5pdGlhbGl6
YXRpb25TZWdtZW50SW5mbyBzZWdtZW50Q29uZmlndXJhdGlvbikKKyAgICBTb3VyY2VCdWZmZXJQ
cml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChzdHJ1Y3QgV2ViS2l0OjpJbml0
aWFsaXphdGlvblNlZ21lbnRJbmZvIHNlZ21lbnRDb25maWd1cmF0aW9uKSAtPiAoKSBBc3luYwog
ICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQgYXBwZW5kUmVzdWx0KQorICAgIFNvdXJjZUJ1
ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQoTWVkaWFUaW1lIGR1cmF0aW9uKQorICAgIFNvdXJj
ZUJ1ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBsZShkb3VibGUgc2FtcGxlRHVyYXRpb24pCisgICAg
U291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGJvb2wgZGlydHkpCisgICAg
U291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChXZWJDb3JlOjpQbGF0Zm9y
bVRpbWVSYW5nZXMgdGltZVJhbmdlcykKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3Rl
LmNwcAppbmRleCA3MzIyM2I4Njg0MjEzYTBiZDhmNzEyODJhOGU4ZGVhNjE1OTk1ZWMwLi4yYjU2
ZmVkMjNkZWMzNTg1OWFiODU3ZTZmNmRmZmQ3OThlMWFhZTExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJl
bW90ZS5jcHAKQEAgLTU2LDkgKzU2LDkgQEAgdm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjpz
ZXRNb2RlKFRleHRUcmFja01vZGUgbW9kZSkKIAogdm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3Rl
Ojp1cGRhdGVDb25maWd1cmF0aW9uKFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9u
JiYgY29uZmlndXJhdGlvbikKIHsKLSAgICBpZiAoY29uZmlndXJhdGlvbi5pZGVudGlmaWVyICE9
IG1faWQpIHsKKyAgICBpZiAoY29uZmlndXJhdGlvbi50cmFja0lkICE9IG1faWQpIHsKICAgICAg
ICAgYXV0byBjaGFuZ2VkID0gIW1faWQuaXNFbXB0eSgpOwotICAgICAgICBtX2lkID0gY29uZmln
dXJhdGlvbi5pZGVudGlmaWVyOworICAgICAgICBtX2lkID0gY29uZmlndXJhdGlvbi50cmFja0lk
OwogICAgICAgICBpZiAoY2hhbmdlZCAmJiBjbGllbnQoKSkKICAgICAgICAgICAgIGNsaWVudCgp
LT5pZENoYW5nZWQobV9pZCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9WaWRlb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1ZpZGVvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAppbmRl
eCBhYzZlYTAxNDI3MWMzMzEyNmNkNzUyYjNmZmQzYjc4NTQzOWRlNjU3Li4zNWU4ZTdkODM5Yzcy
ODAxZjZhOTZmYmVkMjcyMDY0ZDRmZDY2ZjAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1ZpZGVvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1ZpZGVvVHJhY2tQcml2YXRlUmVtb3RlLmNw
cApAQCAtNTIsOSArNTIsOSBAQCB2b2lkIFZpZGVvVHJhY2tQcml2YXRlUmVtb3RlOjpzZXRTZWxl
Y3RlZChib29sIHNlbGVjdGVkKQogCiB2b2lkIFZpZGVvVHJhY2tQcml2YXRlUmVtb3RlOjp1cGRh
dGVDb25maWd1cmF0aW9uKFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1
cmF0aW9uKQogewotICAgIGlmIChjb25maWd1cmF0aW9uLmlkZW50aWZpZXIgIT0gbV9pZCkgewor
ICAgIGlmIChjb25maWd1cmF0aW9uLnRyYWNrSWQgIT0gbV9pZCkgewogICAgICAgICBhdXRvIGNo
YW5nZWQgPSAhbV9pZC5pc0VtcHR5KCk7Ci0gICAgICAgIG1faWQgPSBjb25maWd1cmF0aW9uLmlk
ZW50aWZpZXI7CisgICAgICAgIG1faWQgPSBjb25maWd1cmF0aW9uLnRyYWNrSWQ7CiAgICAgICAg
IGlmIChjaGFuZ2VkICYmIGNsaWVudCgpKQogICAgICAgICAgICAgY2xpZW50KCktPmlkQ2hhbmdl
ZChtX2lkKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415506</attachid>
            <date>2020-12-05 19:36:44 -0800</date>
            <delta_ts>2020-12-05 23:24:42 -0800</delta_ts>
            <desc>WIP - update MockSourceBufferPrivate to fix layout test failures</desc>
            <filename>bug-219402-20201205193643.patch</filename>
            <type>text/plain</type>
            <size>119318</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RlYmRkNjNmYjkxNzM2
MTE4MDVlOWY1NDI4Zjk0YmExMWJiMWNlNy4uYTFhZWFkM2QzY2NlNmQ3ZWY3NzNlY2EzYjZkNTIz
NTYzMDVkZDEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAyMC0xMi0wNCAgUGVu
ZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUgUHJv
Y2Vzc11bTVNFXSBJbXBsZW1lbnQgYmFzaWMgdmlkZW8gcGxheWJhY2sKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0UHJpdmF0
ZUFuZE9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnNldER1cmF0aW9uSW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVy
cm9yKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OlNvdXJjZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXI6On5Tb3VyY2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXI6Om1heGltdW1CdWZmZXJTaXplIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFs
aXphdGlvblNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpleHRyYU1l
bW9yeUNvc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpyZXBvcnRF
eHRyYU1lbW9yeUFsbG9jYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNl
dE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdl
c0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjppc0J1ZmZlcmVkRGly
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzZXRCdWZmZXJlZERp
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0
ZUhhc0F1ZGlvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
cjo6c291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhU291cmNlUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
b3VyY2VQcml2YXRlOjpzZXRUaW1lRnVkZ2VGYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTb3VyY2VQcml2YXRlOjp0aW1lRnVkZ2VGYWN0b3IgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0QnVmZmVyZWREaXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQcml2YXRlOjpzZXRCdWZmZXJlZFJhbmdlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjp1cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kQ29tcGxldGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmJ1ZmZlcmVkU2FtcGxl
c0ZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6cHJv
dmlkZU1lZGlhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjpy
ZWVucXVldWVNZWRpYUZvclRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJp
dmF0ZTo6cmVlbnF1ZXVlTWVkaWFJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVT
YW1wbGVzRnJvbVRyYWNrQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGU6OmV2aWN0Q29kZWRGcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UHJpdmF0ZTo6dG90YWxUcmFja0J1ZmZlclNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmFkZFRyYWNrQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZVNh
bXBsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6aGFzQXVkaW8gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6aGFzVmlkZW8gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6c3RhcnRDaGFuZ2luZ1R5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0TWF4aW11bVF1
ZXVlRGVwdGhGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGU6OnRpbWVGdWRnZUZhY3RvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlOjpzZXRBY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZTo6c2V0Q3VycmVudFRpbWVGdWRnZUZhY3Rvcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjpidWZmZXJlZCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjppc0J1ZmZlcmVkRGly
dHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZTo6c2V0QnVmZmVyZWREaXJ0eSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1ZpZGVvVHJhY2tQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpkdXJh
dGlvbkNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpmbHVzaFBlbmRpbmdN
ZWRpYURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6
cmVzZXRQYXJzZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBh
cnNlSW5pdGlhbGl6YXRpb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjphcHBlbmRDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRpbWVGdWRnZUZhY3RvciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6aGFzVmlkZW8gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc0F1
ZGlvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06OnJlc2V0UGFyc2VyU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkNsdXN0ZXJCZWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg6CisgICAgICAgICogcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OmR1cmF0aW9uQ2hhbmdlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRS
ZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlOjpzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6Omhhc1ZpZGVvIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpoYXNBdWRp
byBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oOgorCiAyMDIwLTEyLTA0ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkgYXVkaW8gcmVzYW1wbGluZyBjb2Rl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDMzN2E1NDQwZTIxNzZhOWRlNTYyZDJiNTQ3OGQ3OWMxNDA4NDk4ZjEuLjZh
MDU1YTliMzM5ZGM0NTFiMGRiYjU2MjYyYWFjOWIwMzc3NDgzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsODcgQEAKKzIwMjAtMTItMDQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKwor
ICAgICAgICBbTWVkaWEgaW4gR1BVIFByb2Nlc3NdW01TRV0gSW1wbGVtZW50IGJhc2ljIHZpZGVv
IHBsYXliYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTk0MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQXVkaW9UcmFja1Byb3h5Ojpjb25maWd1cmF0aW9uKToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpsb2FkTWVkaWFTb3VyY2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojp1cGRhdGVDYWNoZWRTdGF0ZSk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNlUHJveHk6OmR1cmF0aW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6YnVmZmVyZWQgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpkdXJhdGlvbkNo
YW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpzZXRSZWFk
eVN0YXRlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJv
eHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHku
bWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpS
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5Ojp+UmVtb3RlU291cmNlQnVmZmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0
aWFsaXphdGlvblNlZ21lbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VT
YW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNl
QnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291
cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJy
b3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVm
ZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
U291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5n
ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c2V0QWN0aXZl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNldFJlYWR5U3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6dXBkYXRlQnVm
ZmVyZWRGcm9tVHJhY2tCdWZmZXJzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVm
ZmVyUHJveHk6OmV2aWN0Q29kZWRGcmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eTo6YWRkVHJhY2tCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVT
b3VyY2VCdWZmZXJQcm94eTo6cmVlbnF1ZXVlTWVkaWFJZk5lZWRlZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojp0cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0Vu
cXVldWVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJj
ZUJ1ZmZlclByaXZhdGVIYXNBdWRpbyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlSGFzVmlkZW8gY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVm
ZmVyUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4
dFRyYWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJhY2tQcm94eTo6
Y29uZmlndXJhdGlvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb1Ry
YWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb1RyYWNrUHJveHk6OmNv
bmZpZ3VyYXRpb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0
ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6VGV4dFRyYWNrUHJpdmF0
ZVJlbW90ZUNvbmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlRl
eHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oOgorICAgICAg
ICAoV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uOjpkZWNv
ZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVt
b3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXVkaW9UcmFja1ByaXZhdGVSZW1vdGU6OnVwZGF0
ZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJh
Y2tQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpsb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVNv
dXJjZVByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZh
dGVSZW1vdGU6OmR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNl
UHJpdmF0ZVJlbW90ZTo6aXNFbmRlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291
cmNlUHJpdmF0ZVJlbW90ZTo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAo
V2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpmbHVzaCk6CisgICAgICAgIChXZWJL
aXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNldEFjdGl2ZSk6CisgICAgICAgIChXZWJL
aXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVm
ZmVycyk6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmV2aWN0
Q29kZWRGcmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
OjphZGRUcmFja0J1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGU6OnJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlOjp0cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKToK
KyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVy
UHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQpOgorICAgICAgICAoV2ViS2l0
OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25D
aGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291
cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6U291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFu
Z2VkKToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNl
QnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlNv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmVucXVldWVTYW1wbGUpOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZh
dGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjp1
cGRhdGVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9WaWRl
b1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvVHJhY2tQcml2
YXRlUmVtb3RlOjp1cGRhdGVDb25maWd1cmF0aW9uKToKKwogMjAyMC0xMi0wNCAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBDYW5jZWwgaW1h
Z2UgZXh0cmFjdGlvbiB3aGVuIG5hdmlnYXRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKaW5kZXggZmVlNTQ3MzlkNTVmMGUxZDVh
MTZiNWFjOWIxNGIyYzBhYjcyZjg5MS4uYWRmN2IxOTVhYmJiMDNjMDEwZjIwODI3ZWUwYWNkZmZm
ZTA0YTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5jcHAKQEAgLTEyNCw2ICsxMjQsNyBAQCB2b2lkIE1lZGlhU291cmNlOjpzZXRQ
cml2YXRlQW5kT3BlbihSZWY8TWVkaWFTb3VyY2VQcml2YXRlPiYmIG1lZGlhU291cmNlUHJpdmF0
ZQogICAgIEFTU0VSVCghbV9wcml2YXRlKTsKICAgICBBU1NFUlQobV9tZWRpYUVsZW1lbnQpOwog
ICAgIG1fcHJpdmF0ZSA9IFdURk1vdmUobWVkaWFTb3VyY2VQcml2YXRlKTsKKyAgICBtX3ByaXZh
dGUtPnNldFRpbWVGdWRnZUZhY3RvcihjdXJyZW50VGltZUZ1ZGdlRmFjdG9yKCkpOwogCiAgICAg
Ly8gMi40LjEgQXR0YWNoaW5nIHRvIGEgbWVkaWEgZWxlbWVudAogICAgIC8vIGh0dHBzOi8vcmF3
Z2l0LmNvbS93M2MvbWVkaWEtc291cmNlLzQ1NjI3NjQ2MzQ0ZWVhMDE3MGRkMWNiYzVhM2Q1MDhj
YTc1MWFiYjgvbWVkaWEtc291cmNlLXJlc3BlYy5odG1sI21lZGlhc291cmNlLWF0dGFjaApAQCAt
NTU2LDcgKzU1Nyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhU291cmNlOjpzZXREdXJhdGlv
bkludGVybmFsKGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24pCiAgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSLCBkdXJhdGlvbik7CiAKICAgICAvLyA2LiBVcGRhdGUgdGhlIG1lZGlhIGR1cmF0
aW9uIHRvIG5ldyBkdXJhdGlvbiBhbmQgcnVuIHRoZSBIVE1MTWVkaWFFbGVtZW50IGR1cmF0aW9u
IGNoYW5nZSBhbGdvcml0aG0uCi0gICAgbV9wcml2YXRlLT5kdXJhdGlvbkNoYW5nZWQoKTsKKyAg
ICBtX3ByaXZhdGUtPmR1cmF0aW9uQ2hhbmdlZChkdXJhdGlvbik7CiAKICAgICByZXR1cm4geyB9
OwogfQpAQCAtNjI4LDYgKzYyOSw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0
aEVycm9yKE9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+IGVycm9yKQogICAgICAgICAgICAgc291
cmNlQnVmZmVyLT50cnlTaWduYWxBbGxTYW1wbGVzRW5xdWV1ZWQoKTsKICAgICAgICAgbV9wcml2
YXRlLT5tYXJrRW5kT2ZTdHJlYW0oTWVkaWFTb3VyY2VQcml2YXRlOjpFb3NOb0Vycm9yKTsKICAg
ICB9IGVsc2UgaWYgKGVycm9yID09IEVuZE9mU3RyZWFtRXJyb3I6Ok5ldHdvcmspIHsKKyAgICAg
ICAgbV9wcml2YXRlLT5tYXJrRW5kT2ZTdHJlYW0oTWVkaWFTb3VyY2VQcml2YXRlOjpFb3NOZXR3
b3JrRXJyb3IpOwogICAgICAgICAvLyDihrMgSWYgZXJyb3IgaXMgc2V0IHRvICJuZXR3b3JrIgog
ICAgICAgICBBU1NFUlQobV9tZWRpYUVsZW1lbnQpOwogICAgICAgICBpZiAobV9tZWRpYUVsZW1l
bnQtPnJlYWR5U3RhdGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50OjpIQVZFX05PVEhJTkcpIHsKQEAg
LTY0Niw2ICs2NDgsOCBAQCB2b2lkIE1lZGlhU291cmNlOjpzdHJlYW1FbmRlZFdpdGhFcnJvcihP
cHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPiBlcnJvcikKICAgICB9IGVsc2UgewogICAgICAgICAv
LyDihrMgSWYgZXJyb3IgaXMgc2V0IHRvICJkZWNvZGUiCiAgICAgICAgIEFTU0VSVChlcnJvciA9
PSBFbmRPZlN0cmVhbUVycm9yOjpEZWNvZGUpOworICAgICAgICBtX3ByaXZhdGUtPm1hcmtFbmRP
ZlN0cmVhbShNZWRpYVNvdXJjZVByaXZhdGU6OkVvc0RlY29kZUVycm9yKTsKKwogICAgICAgICBB
U1NFUlQobV9tZWRpYUVsZW1lbnQpOwogICAgICAgICBpZiAobV9tZWRpYUVsZW1lbnQtPnJlYWR5
U3RhdGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50OjpIQVZFX05PVEhJTkcpIHsKICAgICAgICAgICAg
IC8vICDihrMgSWYgdGhlIEhUTUxNZWRpYUVsZW1lbnQucmVhZHlTdGF0ZSBhdHRyaWJ1dGUgZXF1
YWxzIEhBVkVfTk9USElORwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IGNkZTE4M2Y4OTI3NDdkMzJhZGE4MmU3ZDVlMmI5
YjQzZWM1M2JkZmUuLjNkM2E2MTkyMTQ3NmFkMjY2ZDI1ZmI5MjdiNDRhYzk4Mjg0MGVlYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5jcHAKQEAgLTgxLDYgKzgxLDcgQEAgU291cmNlQnVmZmVyOjpTb3VyY2VCdWZmZXIoUmVmPFNv
dXJjZUJ1ZmZlclByaXZhdGU+JiYgc291cmNlQnVmZmVyUHJpdmF0ZSwgTWVkaWEKICAgICAsIG1f
YXBwZW5kV2luZG93RW5kKE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSkKICAgICAs
IG1fYXBwZW5kU3RhdGUoV2FpdGluZ0ZvclNlZ21lbnQpCiAgICAgLCBtX3RpbWVPZkJ1ZmZlcmlu
Z01vbml0b3IoTW9ub3RvbmljVGltZTo6bm93KCkpCisgICAgLCBtX2J1ZmZlcmVkKFRpbWVSYW5n
ZXM6OmNyZWF0ZSgpKQogICAgICwgbV9wZW5kaW5nUmVtb3ZlU3RhcnQoTWVkaWFUaW1lOjppbnZh
bGlkVGltZSgpKQogICAgICwgbV9wZW5kaW5nUmVtb3ZlRW5kKE1lZGlhVGltZTo6aW52YWxpZFRp
bWUoKSkKICAgICAsIG1fcmVtb3ZlVGltZXIoKnRoaXMsICZTb3VyY2VCdWZmZXI6OnJlbW92ZVRp
bWVyRmlyZWQpCkBAIC05NCw3ICs5NSw2IEBAIFNvdXJjZUJ1ZmZlcjo6U291cmNlQnVmZmVyKFJl
ZjxTb3VyY2VCdWZmZXJQcml2YXRlPiYmIHNvdXJjZUJ1ZmZlclByaXZhdGUsIE1lZGlhCiAKICAg
ICBtX3ByaXZhdGUtPnNldENsaWVudCh0aGlzKTsKICAgICBtX3ByaXZhdGUtPnNldElzQXR0YWNo
ZWQodHJ1ZSk7Ci0gICAgbV9wcml2YXRlLT5zZXRDdXJyZW50VGltZUZ1ZGdlRmFjdG9yKG1fc291
cmNlLT5jdXJyZW50VGltZUZ1ZGdlRmFjdG9yKCkpOwogfQogCiBTb3VyY2VCdWZmZXI6On5Tb3Vy
Y2VCdWZmZXIoKQpAQCAtMTAyLDggKzEwMiw4IEBAIFNvdXJjZUJ1ZmZlcjo6flNvdXJjZUJ1ZmZl
cigpCiAgICAgQVNTRVJUKGlzUmVtb3ZlZCgpKTsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIpOwogCi0gICAgbV9wcml2YXRlLT5zZXRDbGllbnQobnVsbHB0cik7CiAgICAgbV9wcml2YXRl
LT5zZXRJc0F0dGFjaGVkKGZhbHNlKTsKKyAgICBtX3ByaXZhdGUtPnNldENsaWVudChudWxscHRy
KTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPFRpbWVSYW5nZXM+PiBTb3VyY2VCdWZmZXI6OmJ1ZmZl
cmVkKCkgY29uc3QKQEAgLTExNiw3ICsxMTYsNyBAQCBFeGNlcHRpb25PcjxSZWY8VGltZVJhbmdl
cz4+IFNvdXJjZUJ1ZmZlcjo6YnVmZmVyZWQoKSBjb25zdAogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIAogICAgIC8vIDIuIFJldHVybiBhIG5ldyBzdGF0
aWMgbm9ybWFsaXplZCBUaW1lUmFuZ2VzIG9iamVjdCBmb3IgdGhlIG1lZGlhIHNlZ21lbnRzIGJ1
ZmZlcmVkLgotICAgIHJldHVybiBtX3ByaXZhdGUtPmJ1ZmZlcmVkKCktPmNvcHkoKTsKKyAgICBy
ZXR1cm4gbV9idWZmZXJlZC0+Y29weSgpOwogfQogCiBkb3VibGUgU291cmNlQnVmZmVyOjp0aW1l
c3RhbXBPZmZzZXQoKSBjb25zdApAQCAtNTUyLDEwICs1NTIsNiBAQCB2b2lkIFNvdXJjZUJ1ZmZl
cjo6c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKEFwcGVuZFJlc3VsdCByZXN1bHQp
CiAgICAgaWYgKGlzUmVtb3ZlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBSZXNvbHZl
IHRoZSBjaGFuZ2VzIGl0IFRyYWNrQnVmZmVycycgYnVmZmVyZWQgcmFuZ2VzCi0gICAgLy8gaW50
byB0aGUgU291cmNlQnVmZmVyJ3MgYnVmZmVyZWQgcmFuZ2VzCi0gICAgbV9wcml2YXRlLT51cGRh
dGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMobV9zb3VyY2UtPmlzRW5kZWQoKSk7Ci0KICAgICAv
LyBTZWN0aW9uIDMuNS41IEJ1ZmZlciBBcHBlbmQgQWxnb3JpdGhtLCBjdGQuCiAgICAgLy8gaHR0
cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL2RlZmF1bHQvbWVkaWEtc291
cmNlL21lZGlhLXNvdXJjZS5odG1sI3NvdXJjZWJ1ZmZlci1idWZmZXItYXBwZW5kCiAKQEAgLTYz
NCw3ICs2MzAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6cmVtb3ZlVGltZXJGaXJlZCgpCiAgICAg
c2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkudXBkYXRlZW5kRXZlbnQpOwogfQogCi1zaXplX3Qg
U291cmNlQnVmZmVyOjptYXhpbXVtQnVmZmVyU2l6ZSgpIGNvbnN0Cit1aW50NjRfdCBTb3VyY2VC
dWZmZXI6Om1heGltdW1CdWZmZXJTaXplKCkgY29uc3QKIHsKICAgICBpZiAoaXNSZW1vdmVkKCkp
CiAgICAgICAgIHJldHVybiAwOwpAQCAtNjc4LDEwICs2NzQsMTIgQEAgdm9pZCBTb3VyY2VCdWZm
ZXI6OnNldEFjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgbV9zb3VyY2UtPnNvdXJjZUJ1ZmZl
ckRpZENoYW5nZUFjdGl2ZVN0YXRlKCp0aGlzLCBhY3RpdmUpOwogfQogCi12b2lkIFNvdXJjZUJ1
ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQo
Y29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50JiBzZWdtZW50KQordm9pZCBTb3VyY2VCdWZmZXI6
OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRp
YWxpemF0aW9uU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoaXNSZW1vdmVkKCkpCisgICAgaWYgKGlzUmVt
b3ZlZCgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsK
KyAgICB9CiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogCkBAIC03MDQsNiArNzAy
LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5p
dGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXQKICAgICAvLyB3aXRoIHRoZSBkZWNvZGUgZXJy
b3IgcGFyYW1ldGVyIHNldCB0byB0cnVlIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICBpZiAo
c2VnbWVudC5hdWRpb1RyYWNrcy5pc0VtcHR5KCkgJiYgc2VnbWVudC52aWRlb1RyYWNrcy5pc0Vt
cHR5KCkgJiYgc2VnbWVudC50ZXh0VHJhY2tzLmlzRW1wdHkoKSkgewogICAgICAgICBhcHBlbmRF
cnJvcih0cnVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNzEzLDYgKzcxMiw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VC
dWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0CiAg
ICAgICAgIC8vIHdpdGggdGhlIGRlY29kZSBlcnJvciBwYXJhbWV0ZXIgc2V0IHRvIHRydWUgYW5k
IGFib3J0IHRoZXNlIHN0ZXBzLgogICAgICAgICBpZiAoIXZhbGlkYXRlSW5pdGlhbGl6YXRpb25T
ZWdtZW50KHNlZ21lbnQpKSB7CiAgICAgICAgICAgICBhcHBlbmRFcnJvcih0cnVlKTsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApAQCAtODE1LDEwICs4MTUsMTAgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXQKICAgICAg
ICAgICAgIC8vIHJlZmVyZW5jZWQgYnkgdGhlIGF1ZGlvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUg
SFRNTE1lZGlhRWxlbWVudC4KICAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+
ZW5zdXJlQXVkaW9UcmFja3MoKS5hcHBlbmQobmV3QXVkaW9UcmFjay5jb3B5UmVmKCkpOwogCi0g
ICAgICAgICAgICAvLyA1LjIuOCBDcmVhdGUgYSBuZXcgdHJhY2sgYnVmZmVyIHRvIHN0b3JlIGNv
ZGVkIGZyYW1lcyBmb3IgdGhpcyB0cmFjay4KLSAgICAgICAgICAgIG1fcHJpdmF0ZS0+YWRkVHJh
Y2tCdWZmZXIobmV3QXVkaW9UcmFjay0+aWQoKSwgYXVkaW9UcmFja0luZm8uZGVzY3JpcHRpb24p
OwotCiAgICAgICAgICAgICBtX2F1ZGlvQ29kZWNzLmFwcGVuZChhdWRpb1RyYWNrSW5mby5kZXNj
cmlwdGlvbi0+Y29kZWMoKSk7CisKKyAgICAgICAgICAgIC8vIDUuMi44IENyZWF0ZSBhIG5ldyB0
cmFjayBidWZmZXIgdG8gc3RvcmUgY29kZWQgZnJhbWVzIGZvciB0aGlzIHRyYWNrLgorICAgICAg
ICAgICAgbV9wcml2YXRlLT5hZGRUcmFja0J1ZmZlcihuZXdBdWRpb1RyYWNrLT5pZCgpLCBXVEZN
b3ZlKGF1ZGlvVHJhY2tJbmZvLmRlc2NyaXB0aW9uKSk7CiAgICAgICAgIH0KIAogICAgICAgICAv
LyA1LjMgRm9yIGVhY2ggdmlkZW8gdHJhY2sgaW4gdGhlIGluaXRpYWxpemF0aW9uIHNlZ21lbnQs
IHJ1biBmb2xsb3dpbmcgc3RlcHM6CkBAIC04NTAsMTAgKzg1MCwxMCBAQCB2b2lkIFNvdXJjZUJ1
ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQo
Y29uc3QgSW5pdAogICAgICAgICAgICAgLy8gcmVmZXJlbmNlZCBieSB0aGUgdmlkZW9UcmFja3Mg
YXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50LgogICAgICAgICAgICAgbV9zb3VyY2Ut
Pm1lZGlhRWxlbWVudCgpLT5lbnN1cmVWaWRlb1RyYWNrcygpLmFwcGVuZChuZXdWaWRlb1RyYWNr
LmNvcHlSZWYoKSk7CiAKLSAgICAgICAgICAgIC8vIDUuMy44IENyZWF0ZSBhIG5ldyB0cmFjayBi
dWZmZXIgdG8gc3RvcmUgY29kZWQgZnJhbWVzIGZvciB0aGlzIHRyYWNrLgotICAgICAgICAgICAg
bV9wcml2YXRlLT5hZGRUcmFja0J1ZmZlcihuZXdWaWRlb1RyYWNrLT5pZCgpLCB2aWRlb1RyYWNr
SW5mby5kZXNjcmlwdGlvbik7Ci0KICAgICAgICAgICAgIG1fdmlkZW9Db2RlY3MuYXBwZW5kKHZp
ZGVvVHJhY2tJbmZvLmRlc2NyaXB0aW9uLT5jb2RlYygpKTsKKworICAgICAgICAgICAgLy8gNS4z
LjggQ3JlYXRlIGEgbmV3IHRyYWNrIGJ1ZmZlciB0byBzdG9yZSBjb2RlZCBmcmFtZXMgZm9yIHRo
aXMgdHJhY2suCisgICAgICAgICAgICBtX3ByaXZhdGUtPmFkZFRyYWNrQnVmZmVyKG5ld1ZpZGVv
VHJhY2stPmlkKCksIFdURk1vdmUodmlkZW9UcmFja0luZm8uZGVzY3JpcHRpb24pKTsKICAgICAg
ICAgfQogCiAgICAgICAgIC8vIDUuNCBGb3IgZWFjaCB0ZXh0IHRyYWNrIGluIHRoZSBpbml0aWFs
aXphdGlvbiBzZWdtZW50LCBydW4gZm9sbG93aW5nIHN0ZXBzOgpAQCAtODgyLDEwICs4ODIsMTAg
QEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlh
bGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXQKICAgICAgICAgICAgIC8vIHJlZmVyZW5jZWQgYnkg
dGhlIHRleHRUcmFja3MgYXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50LgogICAgICAg
ICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT5lbnN1cmVUZXh0VHJhY2tzKCkuYXBwZW5k
KG5ld1RleHRUcmFjay5jb3B5UmVmKCkpOwogCi0gICAgICAgICAgICAvLyA1LjQuNyBDcmVhdGUg
YSBuZXcgdHJhY2sgYnVmZmVyIHRvIHN0b3JlIGNvZGVkIGZyYW1lcyBmb3IgdGhpcyB0cmFjay4K
LSAgICAgICAgICAgIG1fcHJpdmF0ZS0+YWRkVHJhY2tCdWZmZXIobmV3VGV4dFRyYWNrLT5pZCgp
LCB0ZXh0VHJhY2tJbmZvLmRlc2NyaXB0aW9uKTsKLQogICAgICAgICAgICAgbV90ZXh0Q29kZWNz
LmFwcGVuZCh0ZXh0VHJhY2tJbmZvLmRlc2NyaXB0aW9uLT5jb2RlYygpKTsKKworICAgICAgICAg
ICAgLy8gNS40LjcgQ3JlYXRlIGEgbmV3IHRyYWNrIGJ1ZmZlciB0byBzdG9yZSBjb2RlZCBmcmFt
ZXMgZm9yIHRoaXMgdHJhY2suCisgICAgICAgICAgICBtX3ByaXZhdGUtPmFkZFRyYWNrQnVmZmVy
KG5ld1RleHRUcmFjay0+aWQoKSwgV1RGTW92ZSh0ZXh0VHJhY2tJbmZvLmRlc2NyaXB0aW9uKSk7
CiAgICAgICAgIH0KIAogICAgICAgICAvLyA1LjUgSWYgYWN0aXZlIHRyYWNrIGZsYWcgZXF1YWxz
IHRydWUsIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CkBAIC05MDIsNiArOTAyLDcgQEAg
dm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6
YXRpb25TZWdtZW50KGNvbnN0IEluaXQKICAgICAvLyAoTm90ZTogSXNzdWUgIzE1NSBhZGRzIHRo
aXMgc3RlcCBhZnRlciBzdGVwIDU6KQogICAgIC8vIDYuIFNldCAgcGVuZGluZyBpbml0aWFsaXph
dGlvbiBzZWdtZW50IGZvciBjaGFuZ2VUeXBlIGZsYWcgIHRvIGZhbHNlLgogICAgIG1fcGVuZGlu
Z0luaXRpYWxpemF0aW9uU2VnbWVudEZvckNoYW5nZVR5cGUgPSBmYWxzZTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwogCiAgICAgLy8gNi4gSWYgdGhlIEhUTUxNZWRpYUVsZW1lbnQucmVhZHlT
dGF0ZSBhdHRyaWJ1dGUgaXMgSEFWRV9OT1RISU5HLCB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0
ZXBzOgogICAgIGlmIChtX3ByaXZhdGUtPnJlYWR5U3RhdGUoKSA9PSBNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZTo6SGF2ZU5vdGhpbmcpIHsKQEAgLTEwMTEsMTYgKzEwMTIsNiBAQCBib29sIFNvdXJj
ZUJ1ZmZlcjo6aGFzVmlkZW8oKSBjb25zdAogICAgIHJldHVybiBtX3ZpZGVvVHJhY2tzICYmIG1f
dmlkZW9UcmFja3MtPmxlbmd0aCgpOwogfQogCi1ib29sIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVm
ZmVyUHJpdmF0ZUhhc0F1ZGlvKCkgY29uc3QKLXsKLSAgICByZXR1cm4gaGFzQXVkaW8oKTsKLX0K
LQotYm9vbCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbygpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGhhc1ZpZGVvKCk7Ci19Ci0KIHZvaWQgU291cmNlQnVmZmVyOjp2aWRl
b1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2smIHRyYWNrKQogewogICAgIC8vIDIuNC41
IENoYW5nZXMgdG8gc2VsZWN0ZWQvZW5hYmxlZCB0cmFjayBzdGF0ZQpAQCAtMTIwNCw5ICsxMTk1
LDkgQEAgYm9vbCBTb3VyY2VCdWZmZXI6OmNhblBsYXlUaHJvdWdoUmFuZ2UoUGxhdGZvcm1UaW1l
UmFuZ2VzJiByYW5nZXMpCiAgICAgcmV0dXJuIHVuYnVmZmVyZWRUaW1lLnRvRG91YmxlKCkgLyBt
X2F2ZXJhZ2VCdWZmZXJSYXRlIDwgdGltZVJlbWFpbmluZy50b0RvdWJsZSgpOwogfQogCi1zaXpl
X3QgU291cmNlQnVmZmVyOjpleHRyYU1lbW9yeUNvc3QoKSBjb25zdAordWludDY0X3QgU291cmNl
QnVmZmVyOjpleHRyYU1lbW9yeUNvc3QoKSBjb25zdAogewotICAgIHNpemVfdCBleHRyYU1lbW9y
eUNvc3QgPSBtX3BlbmRpbmdBcHBlbmREYXRhLmNhcGFjaXR5KCk7CisgICAgdWludDY0X3QgZXh0
cmFNZW1vcnlDb3N0ID0gbV9wZW5kaW5nQXBwZW5kRGF0YS5jYXBhY2l0eSgpOwogICAgIGV4dHJh
TWVtb3J5Q29zdCArPSBtX3ByaXZhdGUtPnRvdGFsVHJhY2tCdWZmZXJTaXplSW5CeXRlcygpOwog
CiAgICAgcmV0dXJuIGV4dHJhTWVtb3J5Q29zdDsKQEAgLTEyMTQsMTEgKzEyMDUsMTEgQEAgc2l6
ZV90IFNvdXJjZUJ1ZmZlcjo6ZXh0cmFNZW1vcnlDb3N0KCkgY29uc3QKIAogdm9pZCBTb3VyY2VC
dWZmZXI6OnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKCkKIHsKLSAgICBzaXplX3QgZXh0cmFN
ZW1vcnlDb3N0ID0gdGhpcy0+ZXh0cmFNZW1vcnlDb3N0KCk7CisgICAgdWludDY0X3QgZXh0cmFN
ZW1vcnlDb3N0ID0gdGhpcy0+ZXh0cmFNZW1vcnlDb3N0KCk7CiAgICAgaWYgKGV4dHJhTWVtb3J5
Q29zdCA8PSBtX3JlcG9ydGVkRXh0cmFNZW1vcnlDb3N0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBzaXplX3QgZXh0cmFNZW1vcnlDb3N0RGVsdGEgPSBleHRyYU1lbW9yeUNvc3QgLSBtX3JlcG9y
dGVkRXh0cmFNZW1vcnlDb3N0OworICAgIHVpbnQ2NF90IGV4dHJhTWVtb3J5Q29zdERlbHRhID0g
ZXh0cmFNZW1vcnlDb3N0IC0gbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdDsKICAgICBtX3JlcG9y
dGVkRXh0cmFNZW1vcnlDb3N0ID0gZXh0cmFNZW1vcnlDb3N0OwogCiAgICAgSlNDOjpKU0xvY2tI
b2xkZXIgbG9jayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkpOwpAQCAtMTI0Miw3ICsx
MjMzLDcgQEAgTWVkaWFUaW1lIFNvdXJjZUJ1ZmZlcjo6bWluaW11bVVwY29taW5nUHJlc2VudGF0
aW9uVGltZUZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmkKICAgICByZXR1cm4gbV9wcml2YXRlLT5t
aW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lRm9yVHJhY2tJRCh0cmFja0lEKTsKIH0KIAot
dm9pZCBTb3VyY2VCdWZmZXI6OnNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRChjb25zdCBB
dG9tU3RyaW5nJiB0cmFja0lELCBzaXplX3QgbWF4UXVldWVEZXB0aCkKK3ZvaWQgU291cmNlQnVm
ZmVyOjpzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYgdHJh
Y2tJRCwgdWludDY0X3QgbWF4UXVldWVEZXB0aCkKIHsKICAgICBtX3ByaXZhdGUtPnNldE1heGlt
dW1RdWV1ZURlcHRoRm9yVHJhY2tJRCh0cmFja0lELCBtYXhRdWV1ZURlcHRoKTsKIH0KQEAgLTEz
MDIsMTQgKzEyOTMsMjQgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNldFNob3VsZEdlbmVyYXRlVGlt
ZXN0YW1wcyhib29sIGZsYWcpCiAgICAgbV9wcml2YXRlLT5zZXRTaG91bGRHZW5lcmF0ZVRpbWVz
dGFtcHMoZmxhZyk7CiB9CiAKK3ZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRl
QnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCBmbGFnKQoreworICAgIG1fYnVmZmVyZWREaXJ0eSA9
IGZsYWc7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVy
ZWRSYW5nZXNDaGFuZ2VkKGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYgdGltZVJhbmdlcykKK3sK
KyAgICBtX2J1ZmZlcmVkLT5yYW5nZXMoKSA9IHRpbWVSYW5nZXM7Cit9CisKIGJvb2wgU291cmNl
QnVmZmVyOjppc0J1ZmZlcmVkRGlydHkoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUt
PmlzQnVmZmVyZWREaXJ0eSgpOworICAgIHJldHVybiBtX2J1ZmZlcmVkRGlydHk7CiB9CiAKIHZv
aWQgU291cmNlQnVmZmVyOjpzZXRCdWZmZXJlZERpcnR5KGJvb2wgZmxhZykKIHsKLSAgICBtX3By
aXZhdGUtPnNldEJ1ZmZlcmVkRGlydHkoZmxhZyk7CisgICAgbV9idWZmZXJlZERpcnR5ID0gZmxh
ZzsKIH0KIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKaW5kZXggZDE1YzI5YmNkODg2MmU5
MmI0NmQ5M2IwMTI1MDUwMTkzNDllMmNmOC4uMjI5M2JjNTA3N2JiMTc2OTg0MjJkZTBlNjZlZGY0
YTc5YjFmYWU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L1NvdXJjZUJ1ZmZlci5oCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25P
cjx2b2lkPiByZW1vdmUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJik7CiAgICAg
RXhjZXB0aW9uT3I8dm9pZD4gY2hhbmdlVHlwZShjb25zdCBTdHJpbmcmKTsKIAotICAgIGNvbnN0
IFRpbWVSYW5nZXMmIGJ1ZmZlcmVkSW50ZXJuYWwoKSBjb25zdCB7IEFTU0VSVChtX3ByaXZhdGUt
PmJ1ZmZlcmVkKCkpOyByZXR1cm4gKm1fcHJpdmF0ZS0+YnVmZmVyZWQoKTsgfQorICAgIGNvbnN0
IFRpbWVSYW5nZXMmIGJ1ZmZlcmVkSW50ZXJuYWwoKSBjb25zdCB7IEFTU0VSVChtX2J1ZmZlcmVk
KTsgcmV0dXJuICptX2J1ZmZlcmVkOyB9CiAKICAgICB2b2lkIGFib3J0SWZVcGRhdGluZygpOwog
ICAgIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpOwpAQCAtMTQ4LDE1ICsxNDgsMTUgQEAg
cHJpdmF0ZToKICAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5h
bDsKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQKLSAgICB2b2lkIHNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXRpYWxp
emF0aW9uU2VnbWVudCYpIGZpbmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJl
Y2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2
YXRlU3RyZWFtRW5kZWRXaXRoRGVjb2RlRXJyb3IoKSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1
ZmZlclByaXZhdGVBcHBlbmRFcnJvcihib29sIGRlY29kZUVycm9yKSBmaW5hbDsKKyAgICB2b2lk
IHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQpIGZpbmFsOwog
ICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRp
bWUmIGR1cmF0aW9uKSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQYXJz
ZVNhbXBsZShkb3VibGUgc2FtcGxlRHVyYXRpb24pIGZpbmFsOwogICAgIHZvaWQgc291cmNlQnVm
ZmVyUHJpdmF0ZURpZERyb3BTYW1wbGUoKSBmaW5hbDsKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlclBy
aXZhdGVTdHJlYW1FbmRlZFdpdGhEZWNvZGVFcnJvcigpIGZpbmFsOwotICAgIGJvb2wgc291cmNl
QnVmZmVyUHJpdmF0ZUhhc0F1ZGlvKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzb3VyY2VCdWZm
ZXJQcml2YXRlSGFzVmlkZW8oKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlclBy
aXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQpIGZpbmFsOworICAgIHZvaWQgc291cmNl
QnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGJvb2wpIGZpbmFsOworICAgIHZvaWQg
c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChjb25zdCBQbGF0Zm9ybVRp
bWVSYW5nZXMmKSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZl
UmVuZGVyaW5nRXJyb3IoaW50IGVycm9yQ29kZSkgZmluYWw7CiAKICAgICAvLyBBdWRpb1RyYWNr
Q2xpZW50CkBAIC0xODUsMTMgKzE4NSwxMyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCB2YWxpZGF0
ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0aWFsaXphdGlvblNlZ21lbnQmKTsKIAot
ICAgIHNpemVfdCBtYXhpbXVtQnVmZmVyU2l6ZSgpIGNvbnN0OworICAgIHVpbnQ2NF90IG1heGlt
dW1CdWZmZXJTaXplKCkgY29uc3Q7CiAKICAgICB2b2lkIG1vbml0b3JCdWZmZXJpbmdSYXRlKCk7
CiAKICAgICB2b2lkIHJlbW92ZVRpbWVyRmlyZWQoKTsKIAotICAgIHNpemVfdCBleHRyYU1lbW9y
eUNvc3QoKSBjb25zdDsKKyAgICB1aW50NjRfdCBleHRyYU1lbW9yeUNvc3QoKSBjb25zdDsKICAg
ICB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKCk7CiAKICAgICB2b2lkIGFwcGVuZEVy
cm9yKGJvb2wpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBP
UlQgVmVjdG9yPFN0cmluZz4gYnVmZmVyZWRTYW1wbGVzRm9yVHJhY2tJRChjb25zdCBBdG9tU3Ry
aW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gZW5xdWV1ZWRTYW1wbGVz
Rm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFU
aW1lIG1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWVGb3JUcmFja0lEKGNvbnN0IEF0b21T
dHJpbmcmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1heGltdW1RdWV1ZURlcHRoRm9y
VHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJiwgdWlu
dDY0X3QpOwogCiAgICAgUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGU+IG1fcHJpdmF0ZTsKICAgICBN
ZWRpYVNvdXJjZSogbV9zb3VyY2U7CkBAIC0yMzEsOCArMjMxLDEwIEBAIHByaXZhdGU6CiAgICAg
TW9ub3RvbmljVGltZSBtX3RpbWVPZkJ1ZmZlcmluZ01vbml0b3I7CiAgICAgZG91YmxlIG1fYnVm
ZmVyZWRTaW5jZUxhc3RNb25pdG9yIHsgMCB9OwogICAgIGRvdWJsZSBtX2F2ZXJhZ2VCdWZmZXJS
YXRlIHsgMCB9OworICAgIGJvb2wgbV9idWZmZXJlZERpcnR5IHsgdHJ1ZSB9OworICAgIFJlZlB0
cjxUaW1lUmFuZ2VzPiBtX2J1ZmZlcmVkOwogCi0gICAgc2l6ZV90IG1fcmVwb3J0ZWRFeHRyYU1l
bW9yeUNvc3QgeyAwIH07CisgICAgdWludDY0X3QgbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdCB7
IDAgfTsKIAogICAgIE1lZGlhVGltZSBtX3BlbmRpbmdSZW1vdmVTdGFydDsKICAgICBNZWRpYVRp
bWUgbV9wZW5kaW5nUmVtb3ZlRW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVNvdXJjZVByaXZhdGUuaAppbmRleCA2NTcwYmY2ZWU5NjgyN2UwMDk0
NmY5ZjE5NjA4OGFkYzJjNGJkYjYzLi4yOTMyODg2M2IxNGYyNmRjYjljYzExYzAyMzY2MGQ1MjAz
Yjg5MGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVNvdXJjZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVNvdXJjZVByaXZhdGUuaApAQCAtNTUsMTAgKzU1LDExIEBAIHB1YmxpYzoKICAgICAgICAg
UmVhY2hlZElkTGltaXQKICAgICB9OwogICAgIHZpcnR1YWwgQWRkU3RhdHVzIGFkZFNvdXJjZUJ1
ZmZlcihjb25zdCBDb250ZW50VHlwZSYsIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlPiYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikgPSAwOwogICAgIGVudW0gRW5k
T2ZTdHJlYW1TdGF0dXMgeyBFb3NOb0Vycm9yLCBFb3NOZXR3b3JrRXJyb3IsIEVvc0RlY29kZUVy
cm9yIH07CiAgICAgdmlydHVhbCB2b2lkIG1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1
cykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bm1hcmtFbmRPZlN0cmVhbSgpID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNFbmRlZCgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSkgPSAwOwpAQCAtNjYsMTAgKzY3
LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2FpdEZvclNlZWtDb21wbGV0ZWQoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlZWtDb21wbGV0ZWQoKSA9IDA7CiAKKyAgICB2b2lkIHNl
dFRpbWVGdWRnZUZhY3Rvcihjb25zdCBNZWRpYVRpbWUmIGZ1ZGdlRmFjdG9yKSB7IG1fdGltZUZ1
ZGdlRmFjdG9yID0gZnVkZ2VGYWN0b3I7IH0KKyAgICBNZWRpYVRpbWUgdGltZUZ1ZGdlRmFjdG9y
KCkgY29uc3QgeyByZXR1cm4gbV90aW1lRnVkZ2VGYWN0b3I7IH0KICAgICB2b2lkIHNldElzU2Vl
a2luZyhib29sIGZsYWcpIHsgbV9pc1NlZWtpbmcgPSBmbGFnOyB9CiAgICAgYm9vbCBpc1NlZWtp
bmcoKSBjb25zdCB7IHJldHVybiBtX2lzU2Vla2luZzsgfQogCiBwcml2YXRlOgorICAgIE1lZGlh
VGltZSBtX3RpbWVGdWRnZUZhY3RvcjsKICAgICBib29sIG1faXNTZWVraW5nIHsgZmFsc2UgfTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJj
ZUJ1ZmZlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291
cmNlQnVmZmVyUHJpdmF0ZS5jcHAKaW5kZXggMGYzZmE2NmQ5OTFlYjM5YTMwNjFhZTJmOGViZmVl
YjJkNTMwNDVjOS4uMTk3ODMxYWFlNjZmOGRhZDQzOWFlN2VmZWZiNjY2ODI5OGE0MmU0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJp
dmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVm
ZmVyUHJpdmF0ZS5jcHAKQEAgLTY1LDYgKzY1LDggQEAgU291cmNlQnVmZmVyUHJpdmF0ZTo6U291
cmNlQnVmZmVyUHJpdmF0ZSgpCiB7CiB9CiAKK1NvdXJjZUJ1ZmZlclByaXZhdGU6On5Tb3VyY2VC
dWZmZXJQcml2YXRlKCkgPSBkZWZhdWx0OworCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnJl
c2V0VGltZXN0YW1wT2Zmc2V0SW5UcmFja0J1ZmZlcnMoKQogewogICAgIGZvciAoYXV0byYgdHJh
Y2tCdWZmZXIgOiBtX3RyYWNrQnVmZmVyTWFwLnZhbHVlcygpKSB7CkBAIC03Myw2ICs3NSwxMiBA
QCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnJlc2V0VGltZXN0YW1wT2Zmc2V0SW5UcmFja0J1
ZmZlcnMoKQogICAgIH0KIH0KIAordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpzZXRCdWZmZXJl
ZERpcnR5KGJvb2wgZmxhZykKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50
LT5zb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoZmxhZyk7Cit9CisKIHZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6cmVzZXRUcmFja0J1ZmZlcnMoKQogewogICAgIGZvciAo
YXV0byYgdHJhY2tCdWZmZXJQYWlyIDogbV90cmFja0J1ZmZlck1hcC52YWx1ZXMoKSkgewpAQCAt
OTYsNiArMTA0LDEzIEBAIE1lZGlhVGltZSBTb3VyY2VCdWZmZXJQcml2YXRlOjpoaWdoZXN0UHJl
c2VudGF0aW9uVGltZXN0YW1wKCkgY29uc3QKICAgICByZXR1cm4gaGlnaGVzdFRpbWU7CiB9CiAK
K3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0QnVmZmVyZWRSYW5nZXMoY29uc3QgUGxhdGZv
cm1UaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQoreworICAgIG1fYnVmZmVyZWQtPnJhbmdlcygpID0g
dGltZVJhbmdlczsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zb3VyY2VC
dWZmZXJQcml2YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2VkKG1fYnVmZmVyZWQtPnJhbmdlcygpKTsK
K30KKwogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjp1cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1
ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVkKQogewogICAgIC8vIDMuMSBBdHRyaWJ1dGVzLCBidWZm
ZXJlZApAQCAtMTEyLDcgKzEyNyw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6dXBkYXRl
QnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCkKICAgICAvLyBOT1RF
OiBTaG9ydCBjaXJjdWl0IHRoZSBmb2xsb3dpbmcgaWYgbm9uZSBvZiB0aGUgVHJhY2tCdWZmZXJz
IGhhdmUgYnVmZmVyZWQgcmFuZ2VzIHRvIGF2b2lkIGdlbmVyYXRpbmcKICAgICAvLyBhIHNpbmds
ZSByYW5nZSBvZiB7MCwgMH0uCiAgICAgaWYgKGhpZ2hlc3RFbmRUaW1lLmlzTmVnYXRpdmVJbmZp
bml0ZSgpKSB7Ci0gICAgICAgIG1fYnVmZmVyZWQtPnJhbmdlcygpID0gUGxhdGZvcm1UaW1lUmFu
Z2VzKCk7CisgICAgICAgIHNldEJ1ZmZlcmVkUmFuZ2VzKFBsYXRmb3JtVGltZVJhbmdlcygpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM3LDEwICsxNTIsMjAgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlOjp1cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3Vy
Y2VJc0VuZGVkKQogCiAgICAgLy8gNS4gSWYgaW50ZXJzZWN0aW9uIHJhbmdlcyBkb2VzIG5vdCBj
b250YWluIHRoZSBleGFjdCBzYW1lIHJhbmdlIGluZm9ybWF0aW9uIGFzIHRoZSBjdXJyZW50IHZh
bHVlIG9mIHRoaXMgYXR0cmlidXRlLAogICAgIC8vICAgIHRoZW4gdXBkYXRlIHRoZSBjdXJyZW50
IHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIHRvIGludGVyc2VjdGlvbiByYW5nZXMuCi0gICAgbV9i
dWZmZXJlZC0+cmFuZ2VzKCkgPSBpbnRlcnNlY3Rpb25SYW5nZXM7CisgICAgc2V0QnVmZmVyZWRS
YW5nZXMoaW50ZXJzZWN0aW9uUmFuZ2VzKTsKICAgICBzZXRCdWZmZXJlZERpcnR5KHRydWUpOwog
fQogCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZENvbXBsZXRlZChib29sIHBhcnNp
bmdTdWNjZWVkZWQsIGJvb2wgaXNFbmRlZCkKK3sKKyAgICAvLyBSZXNvbHZlIHRoZSBjaGFuZ2Vz
IGluIFRyYWNrQnVmZmVycycgYnVmZmVyZWQgcmFuZ2VzCisgICAgLy8gaW50byB0aGUgU291cmNl
QnVmZmVyJ3MgYnVmZmVyZWQgcmFuZ2VzCisgICAgdXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZm
ZXJzKGlzRW5kZWQpOworCisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c291
cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKHBhcnNpbmdTdWNjZWVkZWQgPyBTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2NlZWRlZCA6IFNvdXJj
ZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdDo6UGFyc2luZ0ZhaWxlZCk7Cit9CisK
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6cmVlbnF1ZVNhbXBsZXMoY29uc3QgQXRvbVN0cmlu
ZyYgdHJhY2tJRCkKIHsKICAgICBpZiAoIW1faXNBdHRhY2hlZCkKQEAgLTE3OCw5ICsyMDMsOSBA
QCBWZWN0b3I8U3RyaW5nPiBTb3VyY2VCdWZmZXJQcml2YXRlOjpidWZmZXJlZFNhbXBsZXNGb3JU
cmFja0lEKGNvbnN0IEF0b21TdHJpbmcmCiB7CiAgICAgYXV0byBpdCA9IG1fdHJhY2tCdWZmZXJN
YXAuZmluZCh0cmFja0lEKTsKICAgICBpZiAoaXQgPT0gbV90cmFja0J1ZmZlck1hcC5lbmQoKSkK
LSAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CisgICAgICAgIHJldHVybiB7IH07CiAK
LSAgICBUcmFja0J1ZmZlciYgdHJhY2tCdWZmZXIgPSBpdC0+dmFsdWU7CisgICAgYXV0byYgdHJh
Y2tCdWZmZXIgPSBpdC0+dmFsdWU7CiAgICAgVmVjdG9yPFN0cmluZz4gc2FtcGxlRGVzY3JpcHRp
b25zOwogICAgIGZvciAoYXV0byYgcGFpciA6IHRyYWNrQnVmZmVyLnNhbXBsZXMuZGVjb2RlT3Jk
ZXIoKSkKICAgICAgICAgc2FtcGxlRGVzY3JpcHRpb25zLmFwcGVuZCh0b1N0cmluZygqcGFpci5z
ZWNvbmQpKTsKQEAgLTMxNyw3ICszNDIsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnBy
b3ZpZGVNZWRpYURhdGEoVHJhY2tCdWZmZXImIHRyYWNrQnVmZmVyLCBjb25zdCBBdG9tUwogICAg
IHVwZGF0ZU1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWUodHJhY2tCdWZmZXIsIHRyYWNr
SUQpOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgREVCVUdfTE9HKExPR0lERU5U
SUZJRVIsICJlbnF1ZXVlZCAiLCBlbnF1ZXVlZFNhbXBsZXMsICIgc2FtcGxlcywgIiwgc3RhdGlj
X2Nhc3Q8c2l6ZV90Pih0cmFja0J1ZmZlci5kZWNvZGVRdWV1ZS5zaXplKCkpLCAiIHJlbWFpbmlu
ZyIpOworICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiZW5xdWV1ZWQgIiwgZW5xdWV1ZWRT
YW1wbGVzLCAiIHNhbXBsZXMsICIsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0cmFja0J1ZmZlci5k
ZWNvZGVRdWV1ZS5zaXplKCkpLCAiIHJlbWFpbmluZyIpOwogI2VuZGlmCiAKICAgICBhbGxTYW1w
bGVzSW5UcmFja0VucXVldWVkKHRyYWNrSUQpOwpAQCAtMzM5LDcgKzM2NCw3IEBAIHZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZTo6cmVlbnF1ZXVlTWVkaWFGb3JUaW1lKFRyYWNrQnVmZmVyJiB0cmFj
a0J1ZmZlciwgY29uc3QKICAgICAgICAgY3VycmVudFNhbXBsZVBUU0l0ZXJhdG9yID0gdHJhY2tC
dWZmZXIuc2FtcGxlcy5wcmVzZW50YXRpb25PcmRlcigpLmZpbmRTYW1wbGVTdGFydGluZ09uT3JB
ZnRlclByZXNlbnRhdGlvblRpbWUodGltZSk7CiAKICAgICBpZiAoY3VycmVudFNhbXBsZVBUU0l0
ZXJhdG9yID09IHRyYWNrQnVmZmVyLnNhbXBsZXMucHJlc2VudGF0aW9uT3JkZXIoKS5lbmQoKQot
ICAgICAgICB8fCAoY3VycmVudFNhbXBsZVBUU0l0ZXJhdG9yLT5maXJzdCAtIHRpbWUpID4gbV9j
dXJyZW50VGltZUZ1ZGdlRmFjdG9yKQorICAgICAgICB8fCAoY3VycmVudFNhbXBsZVBUU0l0ZXJh
dG9yLT5maXJzdCAtIHRpbWUpID4gdGltZUZ1ZGdlRmFjdG9yKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIFNlYWNoIGJhY2t3YXJkIGZvciB0aGUgcHJldmlvdXMgc3luYyBzYW1wbGUuCkBA
IC0zNjcsNyArMzkyLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpyZWVucXVldWVNZWRp
YUZvclRpbWUoVHJhY2tCdWZmZXImIHRyYWNrQnVmZmVyLCBjb25zdAogICAgIHRyYWNrQnVmZmVy
Lm5lZWRzUmVlbnF1ZXVlaW5nID0gZmFsc2U7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZTo6cmVlbnF1ZXVlTWVkaWFJZk5lZWRlZChjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBz
aXplX3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgc2l6ZV90IG1heGltdW1CdWZmZXJTaXpl
KQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpyZWVucXVldWVNZWRpYUlmTmVlZGVkKGNvbnN0
IE1lZGlhVGltZSYgY3VycmVudFRpbWUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNp
dHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplKQogewogICAgIGZvciAoYXV0byYgdHJhY2tC
dWZmZXJQYWlyIDogbV90cmFja0J1ZmZlck1hcCkgewogICAgICAgICBUcmFja0J1ZmZlciYgdHJh
Y2tCdWZmZXIgPSB0cmFja0J1ZmZlclBhaXIudmFsdWU7CkBAIC0zOTgsNyArNDIzLDcgQEAgc3Rh
dGljIFBsYXRmb3JtVGltZVJhbmdlcyByZW1vdmVTYW1wbGVzRnJvbVRyYWNrQnVmZmVyKGNvbnN0
IERlY29kZU9yZGVyU2FtcGxlTWEKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBNZWRp
YVRpbWUgZWFybGllc3RTYW1wbGUgPSBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCk7
CiAgICAgTWVkaWFUaW1lIGxhdGVzdFNhbXBsZSA9IE1lZGlhVGltZTo6emVyb1RpbWUoKTsKLSAg
ICBzaXplX3QgYnl0ZXNSZW1vdmVkID0gMDsKKyAgICB1aW50NjRfdCBieXRlc1JlbW92ZWQgPSAw
OwogICAgIGF1dG8gbG9nSWRlbnRpZmllciA9IFdURjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmll
cihzb3VyY2VCdWZmZXJQcml2YXRlLT5sb2dDbGFzc05hbWUoKSwgbG9nUHJlZml4LCBzb3VyY2VC
dWZmZXJQcml2YXRlLT5sb2dJZGVudGlmaWVyKCkpOwogICAgIGF1dG8mIGxvZ2dlciA9IHNvdXJj
ZUJ1ZmZlclByaXZhdGUtPmxvZ2dlcigpOwogICAgIGF1dG8gd2lsbExvZyA9IGxvZ2dlci53aWxs
TG9nKHNvdXJjZUJ1ZmZlclByaXZhdGUtPmxvZ0NoYW5uZWwoKSwgV1RGTG9nTGV2ZWw6OkRlYnVn
KTsKQEAgLTQwOCw3ICs0MzMsNyBAQCBzdGF0aWMgUGxhdGZvcm1UaW1lUmFuZ2VzIHJlbW92ZVNh
bXBsZXNGcm9tVHJhY2tCdWZmZXIoY29uc3QgRGVjb2RlT3JkZXJTYW1wbGVNYQogICAgIGZvciAo
Y29uc3QgYXV0byYgc2FtcGxlSXQgOiBzYW1wbGVzKSB7CiAgICAgICAgIGNvbnN0IERlY29kZU9y
ZGVyU2FtcGxlTWFwOjpLZXlUeXBlJiBkZWNvZGVLZXkgPSBzYW1wbGVJdC5maXJzdDsKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAgICAgc2l6ZV90IHN0YXJ0QnVmZmVyU2l6ZSA9IHRy
YWNrQnVmZmVyLnNhbXBsZXMuc2l6ZUluQnl0ZXMoKTsKKyAgICAgICAgdWludDY0X3Qgc3RhcnRC
dWZmZXJTaXplID0gdHJhY2tCdWZmZXIuc2FtcGxlcy5zaXplSW5CeXRlcygpOwogI2VuZGlmCiAK
ICAgICAgICAgY29uc3QgUmVmUHRyPE1lZGlhU2FtcGxlPiYgc2FtcGxlID0gc2FtcGxlSXQuc2Vj
b25kOwpAQCAtNTcwLDcgKzU5NSw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6cmVtb3Zl
Q29kZWRGcmFtZXMoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUCiAgICAgTE9H
KE1lZGlhLCAiU291cmNlQnVmZmVyOjpyZW1vdmVDb2RlZEZyYW1lcyglcCkgLSBidWZmZXJlZCA9
ICVzIiwgdGhpcywgdG9TdHJpbmcobV9idWZmZXJlZC0+cmFuZ2VzKCkpLnV0ZjgoKS5kYXRhKCkp
OwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmV2aWN0Q29kZWRGcmFtZXMoc2l6ZV90
IG5ld0RhdGFTaXplLCBzaXplX3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgc2l6ZV90IG1h
eGltdW1CdWZmZXJTaXplLCBjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBjb25zdCBNZWRp
YVRpbWUmIGR1cmF0aW9uLCBib29sIGlzRW5kZWQpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6
OmV2aWN0Q29kZWRGcmFtZXModWludDY0X3QgbmV3RGF0YVNpemUsIHVpbnQ2NF90IHBlbmRpbmdB
cHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplLCBjb25zdCBNZWRp
YVRpbWUmIGN1cnJlbnRUaW1lLCBjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uLCBib29sIGlzRW5k
ZWQpCiB7CiAgICAgLy8gMy41LjEzIENvZGVkIEZyYW1lIEV2aWN0aW9uIEFsZ29yaXRobQogICAg
IC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL21lZGlhLXNvdXJjZS8jc291cmNlYnVmZmVyLWNvZGVk
LWZyYW1lLWV2aWN0aW9uCkBAIC01OTQsNyArNjE5LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlOjpldmljdENvZGVkRnJhbWVzKHNpemVfdCBuZXdEYXRhU2l6ZSwgc2l6ZV90IHBlbmRpbmdB
cHAKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRCAmJiBmYWxzZQogICAgIERFQlVHX0xPRyhM
T0dJREVOVElGSUVSLCAiY3VycmVudFRpbWUgPSAiLCBjdXJyZW50VGltZSwgIiwgcmVxdWlyZSAi
LCBleHRyYU1lbW9yeUNvc3QoKSArIG5ld0RhdGFTaXplLCAiIGJ5dGVzLCBtYXhpbXVtIGJ1ZmZl
ciBzaXplIGlzICIsIG1heGltdW1CdWZmZXJTaXplKTsKLSAgICBzaXplX3QgaW5pdGlhbEJ1ZmZl
cmVkU2l6ZSA9IGV4dHJhTWVtb3J5Q29zdCgpOworICAgIHVpbnQ2NF90IGluaXRpYWxCdWZmZXJl
ZFNpemUgPSBleHRyYU1lbW9yeUNvc3QoKTsKICNlbmRpZgogCiAgICAgTWVkaWFUaW1lIHJhbmdl
U3RhcnQgPSBNZWRpYVRpbWU6Onplcm9UaW1lKCk7CkBAIC02MjMsMTAgKzY0OCwxMCBAQCB2b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGU6OmV2aWN0Q29kZWRGcmFtZXMoc2l6ZV90IG5ld0RhdGFTaXpl
LCBzaXplX3QgcGVuZGluZ0FwcAogICAgIC8vIHRoZSBjdXJyZW50IGJ1ZmZlcmVkIHJhbmdlKSwg
ZGVsZXRlIDMwIHNlY29uZHMgYXQgYSB0aW1lIGZyb20gZHVyYXRpb24gYmFjayB0byB0aGUgY3Vy
cmVudCB0aW1lIHJhbmdlIG9yIDMwIHNlY29uZHMgYWZ0ZXIKICAgICAvLyBjdXJyZW5UaW1lIHdo
aWNoZXZlciB3ZSBoaXQgZmlyc3QuCiAgICAgYXV0byBidWZmZXJlZCA9IG1fYnVmZmVyZWQtPnJh
bmdlcygpOwotICAgIHNpemVfdCBjdXJyZW50VGltZVJhbmdlID0gYnVmZmVyZWQuZmluZChjdXJy
ZW50VGltZSk7CisgICAgdWludDY0X3QgY3VycmVudFRpbWVSYW5nZSA9IGJ1ZmZlcmVkLmZpbmQo
Y3VycmVudFRpbWUpOwogICAgIGlmIChjdXJyZW50VGltZVJhbmdlID09IGJ1ZmZlcmVkLmxlbmd0
aCgpIC0gMSkgewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRCAmJiBmYWxzZQotICAgIEVSUk9S
X0xPRyhMT0dJREVOVElGSUVSLCAiRkFJTEVEIHRvIGZyZWUgZW5vdWdoIGFmdGVyIGV2aWN0aW5n
ICIsIGluaXRpYWxCdWZmZXJlZFNpemUgLSBleHRyYU1lbW9yeUNvc3QoKSk7CisgICAgICAgIEVS
Uk9SX0xPRyhMT0dJREVOVElGSUVSLCAiRkFJTEVEIHRvIGZyZWUgZW5vdWdoIGFmdGVyIGV2aWN0
aW5nICIsIGluaXRpYWxCdWZmZXJlZFNpemUgLSBleHRyYU1lbW9yeUNvc3QoKSk7CiAjZW5kaWYK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTYzNiw3ICs2NjEsNyBAQCB2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGU6OmV2aWN0Q29kZWRGcmFtZXMoc2l6ZV90IG5ld0RhdGFTaXplLCBzaXplX3Qg
cGVuZGluZ0FwcAogICAgIHJhbmdlRW5kID0gZHVyYXRpb247CiAgICAgaWYgKCFyYW5nZUVuZC5p
c0Zpbml0ZSgpKSB7CiAgICAgICAgIHJhbmdlRW5kID0gYnVmZmVyZWQubWF4aW11bUJ1ZmZlcmVk
VGltZSgpOwotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRCAmJiBmYWxzZQorI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAogICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgIk1lZGlhU291
cmNlIGR1cmF0aW9uIGlzIG5vdCBhIGZpbml0ZSB2YWx1ZSwgdXNpbmcgbWF4aW11bSBidWZmZXJl
ZCB0aW1lOiAiLCByYW5nZUVuZCk7CiAjZW5kaWYKICAgICB9CkBAIC02NDQsOSArNjY5LDkgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpldmljdENvZGVkRnJhbWVzKHNpemVfdCBuZXdEYXRh
U2l6ZSwgc2l6ZV90IHBlbmRpbmdBcHAKICAgICByYW5nZVN0YXJ0ID0gcmFuZ2VFbmQgLSB0aGly
dHlTZWNvbmRzOwogICAgIHdoaWxlIChyYW5nZVN0YXJ0ID4gbWluaW11bVJhbmdlU3RhcnQpIHsK
ICAgICAgICAgLy8gRG8gbm90IGV2aWN0IGRhdGEgZnJvbSB0aGUgdGltZSByYW5nZSB0aGF0IGNv
bnRhaW5zIGN1cnJlbnRUaW1lLgotICAgICAgICBzaXplX3Qgc3RhcnRUaW1lUmFuZ2UgPSBidWZm
ZXJlZC5maW5kKHJhbmdlU3RhcnQpOworICAgICAgICB1aW50NjRfdCBzdGFydFRpbWVSYW5nZSA9
IGJ1ZmZlcmVkLmZpbmQocmFuZ2VTdGFydCk7CiAgICAgICAgIGlmIChjdXJyZW50VGltZVJhbmdl
ICE9IG5vdEZvdW5kICYmIHN0YXJ0VGltZVJhbmdlID09IGN1cnJlbnRUaW1lUmFuZ2UpIHsKLSAg
ICAgICAgICAgIHNpemVfdCBlbmRUaW1lUmFuZ2UgPSBidWZmZXJlZC5maW5kKHJhbmdlRW5kKTsK
KyAgICAgICAgICAgIHVpbnQ2NF90IGVuZFRpbWVSYW5nZSA9IGJ1ZmZlcmVkLmZpbmQocmFuZ2VF
bmQpOwogICAgICAgICAgICAgaWYgKGN1cnJlbnRUaW1lUmFuZ2UgIT0gbm90Rm91bmQgJiYgZW5k
VGltZVJhbmdlID09IGN1cnJlbnRUaW1lUmFuZ2UpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAK
QEAgLTY3NCwyMiArNjk5LDI1IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZXZpY3RDb2Rl
ZEZyYW1lcyhzaXplX3QgbmV3RGF0YVNpemUsIHNpemVfdCBwZW5kaW5nQXBwCiAjZW5kaWYKIH0K
IAotc2l6ZV90IFNvdXJjZUJ1ZmZlclByaXZhdGU6OnRvdGFsVHJhY2tCdWZmZXJTaXplSW5CeXRl
cygpIGNvbnN0Cit1aW50NjRfdCBTb3VyY2VCdWZmZXJQcml2YXRlOjp0b3RhbFRyYWNrQnVmZmVy
U2l6ZUluQnl0ZXMoKSBjb25zdAogewotICAgIHNpemVfdCB0b3RhbFNpemVJbkJ5dGVzID0gMDsK
KyAgICB1aW50NjRfdCB0b3RhbFNpemVJbkJ5dGVzID0gMDsKICAgICBmb3IgKGF1dG8mIHRyYWNr
QnVmZmVyIDogbV90cmFja0J1ZmZlck1hcC52YWx1ZXMoKSkKICAgICAgICAgdG90YWxTaXplSW5C
eXRlcyArPSB0cmFja0J1ZmZlci5zYW1wbGVzLnNpemVJbkJ5dGVzKCk7CiAKICAgICByZXR1cm4g
dG90YWxTaXplSW5CeXRlczsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjphZGRUcmFj
a0J1ZmZlcihjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lkLCBSZWZQdHI8TWVkaWFEZXNjcmlwdGlv
bj4gZGVzY3JpcHRpb24pCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmFkZFRyYWNrQnVmZmVy
KGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSWQsIFJlZlB0cjxNZWRpYURlc2NyaXB0aW9uPiYmIGRl
c2NyaXB0aW9uKQogewogICAgIEFTU0VSVCghbV90cmFja0J1ZmZlck1hcC5jb250YWlucyh0cmFj
a0lkKSk7CiAgICAgYXV0byYgdHJhY2tCdWZmZXIgPSBtX3RyYWNrQnVmZmVyTWFwLmFkZCh0cmFj
a0lkLCBUcmFja0J1ZmZlcigpKS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICAvLyA1LjIuOSBBZGQg
dGhlIHRyYWNrIGRlc2NyaXB0aW9uIGZvciB0aGlzIHRyYWNrIHRvIHRoZSB0cmFjayBidWZmZXIu
CiAgICAgdHJhY2tCdWZmZXIuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsKKworICAgIG1faGFz
QXVkaW8gPSBtX2hhc0F1ZGlvIHx8IHRyYWNrQnVmZmVyLmRlc2NyaXB0aW9uLT5pc0F1ZGlvKCk7
CisgICAgbV9oYXNWaWRlbyA9IG1faGFzVmlkZW8gfHwgdHJhY2tCdWZmZXIuZGVzY3JpcHRpb24t
PmlzVmlkZW8oKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjp1cGRhdGVUcmFja0lk
cyhWZWN0b3I8c3RkOjpwYWlyPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+PiYmIHRyYWNrSWRQYWly
cykKQEAgLTcwOSw3ICs3MzcsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnNldEFsbFRy
YWNrQnVmZmVyc05lZWRSYW5kb21BY2Nlc3MoKQogICAgICAgICB0cmFja0J1ZmZlci5uZWVkUmFu
ZG9tQWNjZXNzRmxhZyA9IHRydWU7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlk
UmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBTb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQmIHNlZ21lbnQpCit2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGU6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9jbGllbnQpCiAg
ICAgICAgIHJldHVybjsKQEAgLTcxOSw3ICs3NDcsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGU6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgU291cmNlQnVmZmVyUHJp
dgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclBy
aXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KHNlZ21lbnQpOworICAgIG1fY2xp
ZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChX
VEZNb3ZlKHNlZ21lbnQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICBtX3Jl
Y2VpdmVkRmlyc3RJbml0aWFsaXphdGlvblNlZ21lbnQgPSB0cnVlOwogICAgIG1fcGVuZGluZ0lu
aXRpYWxpemF0aW9uU2VnbWVudEZvckNoYW5nZVR5cGUgPSBmYWxzZTsKQEAgLTExODAsMTEgKzEy
MDgsMTEgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlU2FtcGxlKE1lZGlh
U2FtcGxlJiBzYW1wbGUpCiAgICAgICAgIC8vIGRpc2pvaW50IHJhbmdlcyBzZXBhcmF0ZWQgYnkg
bGVzcyB0aGFuIGEgImZ1ZGdlIGZhY3RvciIuCiAgICAgICAgIGF1dG8gcHJlc2VudGF0aW9uRW5k
VGltZSA9IHByZXNlbnRhdGlvblRpbWVzdGFtcCArIGZyYW1lRHVyYXRpb247CiAgICAgICAgIGF1
dG8gbmVhcmVzdFRvUHJlc2VudGF0aW9uU3RhcnRUaW1lID0gdHJhY2tCdWZmZXIuYnVmZmVyZWQu
bmVhcmVzdChwcmVzZW50YXRpb25UaW1lc3RhbXApOwotICAgICAgICBpZiAobmVhcmVzdFRvUHJl
c2VudGF0aW9uU3RhcnRUaW1lLmlzVmFsaWQoKSAmJiAocHJlc2VudGF0aW9uVGltZXN0YW1wIC0g
bmVhcmVzdFRvUHJlc2VudGF0aW9uU3RhcnRUaW1lKS5pc0JldHdlZW4oTWVkaWFUaW1lOjp6ZXJv
VGltZSgpLCBtX2N1cnJlbnRUaW1lRnVkZ2VGYWN0b3IpKQorICAgICAgICBpZiAobmVhcmVzdFRv
UHJlc2VudGF0aW9uU3RhcnRUaW1lLmlzVmFsaWQoKSAmJiAocHJlc2VudGF0aW9uVGltZXN0YW1w
IC0gbmVhcmVzdFRvUHJlc2VudGF0aW9uU3RhcnRUaW1lKS5pc0JldHdlZW4oTWVkaWFUaW1lOjp6
ZXJvVGltZSgpLCB0aW1lRnVkZ2VGYWN0b3IoKSkpCiAgICAgICAgICAgICBwcmVzZW50YXRpb25U
aW1lc3RhbXAgPSBuZWFyZXN0VG9QcmVzZW50YXRpb25TdGFydFRpbWU7CiAKICAgICAgICAgYXV0
byBuZWFyZXN0VG9QcmVzZW50YXRpb25FbmRUaW1lID0gdHJhY2tCdWZmZXIuYnVmZmVyZWQubmVh
cmVzdChwcmVzZW50YXRpb25FbmRUaW1lKTsKLSAgICAgICAgaWYgKG5lYXJlc3RUb1ByZXNlbnRh
dGlvbkVuZFRpbWUuaXNWYWxpZCgpICYmIChuZWFyZXN0VG9QcmVzZW50YXRpb25FbmRUaW1lIC0g
cHJlc2VudGF0aW9uRW5kVGltZSkuaXNCZXR3ZWVuKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgbV9j
dXJyZW50VGltZUZ1ZGdlRmFjdG9yKSkKKyAgICAgICAgaWYgKG5lYXJlc3RUb1ByZXNlbnRhdGlv
bkVuZFRpbWUuaXNWYWxpZCgpICYmIChuZWFyZXN0VG9QcmVzZW50YXRpb25FbmRUaW1lIC0gcHJl
c2VudGF0aW9uRW5kVGltZSkuaXNCZXR3ZWVuKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgdGltZUZ1
ZGdlRmFjdG9yKCkpKQogICAgICAgICAgICAgcHJlc2VudGF0aW9uRW5kVGltZSA9IG5lYXJlc3RU
b1ByZXNlbnRhdGlvbkVuZFRpbWU7CiAKICAgICAgICAgdHJhY2tCdWZmZXIuYnVmZmVyZWQuYWRk
KHByZXNlbnRhdGlvblRpbWVzdGFtcCwgcHJlc2VudGF0aW9uRW5kVGltZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgK
aW5kZXggMTFkZmYzNDliZWM3ZDdlOWMyMjMxNzM2YTQ2ZDQ4ZTc3ZTQ3NmI3YS4uNDAxZGJkNzdi
ZDIwNGI5OGMyODNmY2ExZmQ1NDIwOWM5N2ZlZWIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtNjMsOCAr
NjMsOSBAQCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlCiB7CiBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgU291cmNlQnVmZmVyUHJpdmF0ZSgpOwotICAgIHZpcnR1YWwgflNvdXJjZUJ1ZmZl
clByaXZhdGUoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U291cmNl
QnVmZmVyUHJpdmF0ZSgpOwogCisgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRQYXJz
ZXJTdGF0ZSgpID0gMDsKQEAgLTcyLDQwICs3MywzOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBN
ZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKSA9IDA7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5T
d2l0Y2hUb1R5cGUoY29uc3QgQ29udGVudFR5cGUmKSB7IHJldHVybiBmYWxzZTsgfQogCisgICAg
dmlydHVhbCB2b2lkIHJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQoY29uc3QgTWVkaWFUaW1lJiBjdXJy
ZW50TWVkaWFUaW1lLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRf
dCBtYXhpbXVtQnVmZmVyU2l6ZSk7CisgICAgdmlydHVhbCB2b2lkIGFkZFRyYWNrQnVmZmVyKGNv
bnN0IEF0b21TdHJpbmcmIHRyYWNrSWQsIFJlZlB0cjxNZWRpYURlc2NyaXB0aW9uPiYmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdHJ5U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCgpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZl
cnMoYm9vbCBzb3VyY2VJc0VuZGVkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
ZXZpY3RDb2RlZEZyYW1lcyh1aW50NjRfdCBuZXdEYXRhU2l6ZSwgdWludDY0X3QgcGVuZGluZ0Fw
cGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUsIGNvbnN0IE1lZGlh
VGltZSYgY3VycmVudFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24sIGJvb2wgaXNFbmRl
ZCk7CisKICAgICB2b2lkIHNldENsaWVudChTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50KiBjbGll
bnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KICAgICB2b2lkIHNldElzQXR0YWNoZWQoYm9vbCBm
bGFnKSB7IG1faXNBdHRhY2hlZCA9IGZsYWc7IH0KLSAgICB2b2lkIHNldEN1cnJlbnRUaW1lRnVk
Z2VGYWN0b3IoY29uc3QgTWVkaWFUaW1lJiB0aW1lKSB7IG1fY3VycmVudFRpbWVGdWRnZUZhY3Rv
ciA9IHRpbWU7IH0KKyAgICBib29sIGhhc0F1ZGlvKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBdWRp
bzsgfQorICAgIGJvb2wgaGFzVmlkZW8oKSBjb25zdCB7IHJldHVybiBtX2hhc1ZpZGVvOyB9CiAg
ICAgdm9pZCBzZXRBcHBlbmRXaW5kb3dTdGFydChjb25zdCBNZWRpYVRpbWUmIGFwcGVuZFdpbmRv
d1N0YXJ0KSB7IG1fYXBwZW5kV2luZG93U3RhcnQgPSBhcHBlbmRXaW5kb3dTdGFydDt9CiAgICAg
dm9pZCBzZXRBcHBlbmRXaW5kb3dFbmQoY29uc3QgTWVkaWFUaW1lJiBhcHBlbmRXaW5kb3dFbmQp
IHsgbV9hcHBlbmRXaW5kb3dFbmQgPSBhcHBlbmRXaW5kb3dFbmQ7IH0KICAgICBib29sIGJ1ZmZl
ckZ1bGwoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlckZ1bGw7IH0KLSAgICBUaW1lUmFuZ2VzKiBi
dWZmZXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyZWQuZ2V0KCk7IH0KLSAgICBib29sIGlz
QnVmZmVyZWREaXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyZWREaXJ0eTsgfQotICAgIHZv
aWQgc2V0QnVmZmVyZWREaXJ0eShib29sIGZsYWcpIHsgbV9idWZmZXJlZERpcnR5ID0gZmxhZzsg
fQorCisgICAgdm9pZCBzZXRCdWZmZXJlZERpcnR5KGJvb2wpOwogICAgIHZvaWQgcmVzZXRUcmFj
a0J1ZmZlcnMoKTsKICAgICB2b2lkIGNsZWFyVHJhY2tCdWZmZXJzKCk7CiAgICAgdm9pZCByZXNl
dFRpbWVzdGFtcE9mZnNldEluVHJhY2tCdWZmZXJzKCk7CiAgICAgTWVkaWFUaW1lIHRpbWVzdGFt
cE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0YW1wT2Zmc2V0OyB9CiAgICAgdm9pZCBz
ZXRUaW1lc3RhbXBPZmZzZXQoY29uc3QgTWVkaWFUaW1lJiB0aW1lc3RhbXBPZmZzZXQpIHsgbV90
aW1lc3RhbXBPZmZzZXQgPSB0aW1lc3RhbXBPZmZzZXQ7IH0KICAgICBNZWRpYVRpbWUgaGlnaGVz
dFByZXNlbnRhdGlvblRpbWVzdGFtcCgpIGNvbnN0OwotICAgIHZvaWQgdXBkYXRlQnVmZmVyZWRG
cm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCk7CiAgICAgdm9pZCBzZWVrVG9UaW1l
KGNvbnN0IE1lZGlhVGltZSYpOwotICAgIHZvaWQgdHJ5U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tF
bnF1ZXVlZCgpOwogICAgIHZvaWQgc3RhcnRDaGFuZ2luZ1R5cGUoKSB7IG1fcGVuZGluZ0luaXRp
YWxpemF0aW9uU2VnbWVudEZvckNoYW5nZVR5cGUgPSB0cnVlOyB9Ci0KLSAgICB2b2lkIHJlZW5x
dWV1ZU1lZGlhSWZOZWVkZWQoY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50TWVkaWFUaW1lLCBzaXpl
X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgc2l6ZV90IG1heGltdW1CdWZmZXJTaXplKTsK
ICAgICB2b2lkIHJlbW92ZUNvZGVkRnJhbWVzKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0
IE1lZGlhVGltZSYgZW5kLCBjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRNZWRpYVRpbWUsIGJvb2wg
aXNFbmRlZCk7Ci0gICAgdm9pZCBldmljdENvZGVkRnJhbWVzKHNpemVfdCBuZXdEYXRhU2l6ZSwg
c2l6ZV90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHNpemVfdCBtYXhpbXVtQnVmZmVyU2l6
ZSwgY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50VGltZSwgY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlv
biwgYm9vbCBpc0VuZGVkKTsKLSAgICB2b2lkIGFkZFRyYWNrQnVmZmVyKGNvbnN0IEF0b21TdHJp
bmcmIHRyYWNrSWQsIFJlZlB0cjxNZWRpYURlc2NyaXB0aW9uPik7CiAgICAgdm9pZCB1cGRhdGVU
cmFja0lkcyhWZWN0b3I8c3RkOjpwYWlyPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+PiYmIHRyYWNr
SWRQYWlycyk7CiAgICAgdm9pZCBzZXRBbGxUcmFja0J1ZmZlcnNOZWVkUmFuZG9tQWNjZXNzKCk7
CiAgICAgdm9pZCBzZXRTaG91bGRHZW5lcmF0ZVRpbWVzdGFtcHMoYm9vbCBmbGFnKSB7IG1fc2hv
dWxkR2VuZXJhdGVUaW1lc3RhbXBzID0gZmxhZzsgfQogICAgIHZvaWQgc2V0TW9kZShTb3VyY2VC
dWZmZXJBcHBlbmRNb2RlIG1vZGUpIHsgbV9hcHBlbmRNb2RlID0gbW9kZTsgfQogICAgIHZvaWQg
c2V0R3JvdXBTdGFydFRpbWVzdGFtcChjb25zdCBNZWRpYVRpbWUmIG1lZGlhVGltZSkgeyBtX2dy
b3VwU3RhcnRUaW1lc3RhbXAgPSBtZWRpYVRpbWU7IH0KICAgICB2b2lkIHNldEdyb3VwU3RhcnRU
aW1lc3RhbXBUb0VuZFRpbWVzdGFtcCgpIHsgbV9ncm91cFN0YXJ0VGltZXN0YW1wID0gbV9ncm91
cEVuZFRpbWVzdGFtcDsgfQotICAgIHNpemVfdCB0b3RhbFRyYWNrQnVmZmVyU2l6ZUluQnl0ZXMo
KSBjb25zdDsKKyAgICB1aW50NjRfdCB0b3RhbFRyYWNrQnVmZmVyU2l6ZUluQnl0ZXMoKSBjb25z
dDsKIAogICAgIHN0cnVjdCBUcmFja0J1ZmZlciB7CiAgICAgICAgIE1lZGlhVGltZSBsYXN0RGVj
b2RlVGltZXN0YW1wOwpAQCAtMTM0LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZl
Y3RvcjxTdHJpbmc+IGVucXVldWVkU2FtcGxlc0ZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYp
IHsgcmV0dXJuIHsgfTsgfQogICAgIFZlY3RvcjxTdHJpbmc+IGJ1ZmZlcmVkU2FtcGxlc0ZvclRy
YWNrSUQoY29uc3QgQXRvbVN0cmluZyYpOwogICAgIHZpcnR1YWwgTWVkaWFUaW1lIG1pbmltdW1V
cGNvbWluZ1ByZXNlbnRhdGlvblRpbWVGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmKSB7IHJl
dHVybiBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWF4
aW11bVF1ZXVlRGVwdGhGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmLCBzaXplX3QpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQoY29uc3QgQXRv
bVN0cmluZyYsIHVpbnQ2NF90KSB7IH0KICAgICBNZWRpYVRpbWUgZmFzdFNlZWtUaW1lRm9yTWVk
aWFUaW1lKGNvbnN0IE1lZGlhVGltZSYgdGFyZ2V0VGltZSwgY29uc3QgTWVkaWFUaW1lJiBuZWdh
dGl2ZVRocmVzaG9sZCwgY29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZVRocmVzaG9sZCk7CiAKICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTE0Myw2ICsxNDMsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgTWVkaWFUaW1lIHRpbWVGdWRnZUZhY3Rvcigp
IGNvbnN0IHsgcmV0dXJuIHsyMDAyLCAyNDAwMH07IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNBY3Rp
dmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NlZWtpbmco
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgTWVkaWFUaW1lIGN1cnJlbnRN
ZWRpYVRpbWUoKSBjb25zdCB7IHJldHVybiB7IH07IH0KQEAgLTE1Nyw4ICsxNTgsOSBAQCBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHNldE1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRp
bWUoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IE1lZGlhVGltZSYpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBjbGVhck1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWUoY29uc3QgQXRvbVN0cmlu
ZyYpIHsgfQogCisgICAgdm9pZCBhcHBlbmRDb21wbGV0ZWQoYm9vbCBwYXJzaW5nU3VjY2VlZGVk
LCBib29sIGlzRW5kZWQpOwogICAgIHZvaWQgcmVlbnF1ZVNhbXBsZXMoY29uc3QgQXRvbVN0cmlu
ZyYgdHJhY2tJRCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNv
bnN0IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudCYpOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChTb3VyY2VCdWZmZXJQcml2
YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTYW1wbGUoTWVkaWFTYW1wbGUmKTsKICAgICB2
b2lkIHByb3ZpZGVNZWRpYURhdGEoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCk7CiAKQEAgLTE2
OSwxMSArMTcxLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWVucXVldWVNZWRpYUZvclRpbWUo
VHJhY2tCdWZmZXImLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lELCBjb25zdCBNZWRpYVRpbWUm
KTsKICAgICBib29sIHZhbGlkYXRlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IFNvdXJjZUJ1
ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudCYpOwogICAgIHZvaWQgcHJv
dmlkZU1lZGlhRGF0YShUcmFja0J1ZmZlciYsIGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpOwor
ICAgIHZvaWQgc2V0QnVmZmVyZWRSYW5nZXMoY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJik7CiAK
ICAgICBib29sIG1faXNBdHRhY2hlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc0F1ZGlvIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1faGFzVmlkZW8geyBmYWxzZSB9OwogCiAgICAgSGFzaE1hcDxB
dG9tU3RyaW5nLCBUcmFja0J1ZmZlcj4gbV90cmFja0J1ZmZlck1hcDsKLSAgICBNZWRpYVRpbWUg
bV9jdXJyZW50VGltZUZ1ZGdlRmFjdG9yOwogCiAgICAgU291cmNlQnVmZmVyQXBwZW5kTW9kZSBt
X2FwcGVuZE1vZGUgeyBTb3VyY2VCdWZmZXJBcHBlbmRNb2RlOjpTZWdtZW50cyB9OwogCkBAIC0x
OTAsNyArMTk0LDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9idWZmZXJGdWxsIHsgZmFsc2Ug
fTsKICAgICBSZWZQdHI8VGltZVJhbmdlcz4gbV9idWZmZXJlZDsKLSAgICBib29sIG1fYnVmZmVy
ZWREaXJ0eSB7IHRydWUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQuaAppbmRleCBlY2QzYzc2M2YxMjRiN2MwZDRjNzU5NWJkM2E2YWYxNjVjM2Q5
NDNiLi5hN2YwNDEyZjE0MDkyMDU1MTJhNDM5Y2Y4YjFhNGUzMGNjY2RmZDUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIEF1ZGlvVHJhY2tQcml2YXRl
OwogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTsKIGNsYXNzIE1lZGlhU2FtcGxlOwogY2xh
c3MgTWVkaWFEZXNjcmlwdGlvbjsKK2NsYXNzIFBsYXRmb3JtVGltZVJhbmdlczsKIGNsYXNzIFZp
ZGVvVHJhY2tQcml2YXRlOwogCiBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50IHsKQEAg
LTYzLDIxICs2NCwyMiBAQCBwdWJsaWM6CiAgICAgICAgIH07CiAgICAgICAgIFZlY3RvcjxUZXh0
VHJhY2tJbmZvcm1hdGlvbj4gdGV4dFRyYWNrczsKICAgICB9OwotICAgIHZpcnR1YWwgdm9pZCBz
b3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJ
bml0aWFsaXphdGlvblNlZ21lbnQmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZl
clByaXZhdGVBcHBlbmRFcnJvcihib29sIGRlY29kZUVycm9yKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUo
ZG91YmxlIGZyYW1lRHVyYXRpb24pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVy
UHJpdmF0ZURpZERyb3BTYW1wbGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemF0aW9uU2Vn
bWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc291cmNlQnVmZmVyUHJpdmF0ZVN0cmVhbUVuZGVkV2l0aERlY29kZUVycm9yKCkgPSAwOwot
ICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VCdWZmZXJQcml2YXRlSGFzQXVkaW8oKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbygpIGNvbnN0ID0g
MDsKIAorICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9v
bCBkZWNvZGVFcnJvcikgPSAwOwogICAgIGVudW0gY2xhc3MgQXBwZW5kUmVzdWx0IDogdWludDhf
dCB7CiAgICAgICAgIEFwcGVuZFN1Y2NlZWRlZCwKICAgICAgICAgUmVhZFN0cmVhbUZhaWxlZCwK
ICAgICAgICAgUGFyc2luZ0ZhaWxlZAogICAgIH07CiAgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1
ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBs
ZShkb3VibGUgZnJhbWVEdXJhdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZm
ZXJQcml2YXRlRGlkRHJvcFNhbXBsZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVm
ZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChjb25zdCBQbGF0Zm9y
bVRpbWVSYW5nZXMmKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0
ZURpZFJlY2VpdmVSZW5kZXJpbmdFcnJvcihpbnQgZXJyb3JDb2RlKSA9IDA7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUu
aAppbmRleCAwYzQxM2MyZGRmNWQ5ZGEyYTE1YjExMzVjMDhlNTEwODUyYjgwMmM2Li5lYTVhMjlj
ZWI1Y2ZlOWYwMjQyN2M1ZWFkZGMxNjQyNzRjYjZkNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgKQEAgLTY0LDcgKzY0
LDYgQEAgcHVibGljOgogICAgIHVzaW5nIFNlbGVjdGVkQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rp
b248dm9pZChWaWRlb1RyYWNrUHJpdmF0ZSYsIGJvb2wgc2VsZWN0ZWQpPjsKICAgICB2b2lkIHNl
dFNlbGVjdGVkQ2hhbmdlZENhbGxiYWNrKFNlbGVjdGVkQ2hhbmdlZENhbGxiYWNrJiYgY2FsbGJh
Y2spIHsgbV9zZWxlY3RlZENoYW5nZWRDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOyB9CiAK
LQogcHJvdGVjdGVkOgogICAgIFZpZGVvVHJhY2tQcml2YXRlKCkgPSBkZWZhdWx0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgKaW5k
ZXggMTEzNmZkMjUyYjgyZmVjYzc2YjdlOThmYjRkOGViYWI1Y2VlYjk0NS4uNjhjZmQ1MjM0NmI5
YzM1OGNkM2QxNzUwOTNjNTdkYzhkNzk3OGJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaApAQCAtNjIsMTQgKzYyLDE1IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IGNyZWF0ZShN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqLCBNZWRpYVNvdXJjZVByaXZhdGVD
bGllbnQqKTsKICAgICB2aXJ0dWFsIH5NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKCk7CiAKLSAg
ICBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqIHBsYXllcigpIGNvbnN0IHsg
cmV0dXJuIG1fcGxheWVyOyB9CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDKiBwbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXllci5nZXQoKTsgfQogICAgIGNvbnN0
IFZlY3RvcjxSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+PiYgc291cmNlQnVmZmVy
cygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQnVmZmVyczsgfQogICAgIGNvbnN0IFZlY3RvcjxT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyo+JiBhY3RpdmVTb3VyY2VCdWZmZXJzKCkgY29uc3Qg
eyByZXR1cm4gbV9hY3RpdmVTb3VyY2VCdWZmZXJzOyB9CiAKICAgICBBZGRTdGF0dXMgYWRkU291
cmNlQnVmZmVyKGNvbnN0IENvbnRlbnRUeXBlJiwgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGU+
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKICAgICB2b2lk
IG1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cykgb3ZlcnJpZGU7CiAgICAgdm9pZCB1
bm1hcmtFbmRPZlN0cmVhbSgpIG92ZXJyaWRlOworICAgIGJvb2wgaXNFbmRlZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1faXNFbmRlZDsgfQogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
IHJlYWR5U3RhdGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFJlYWR5U3RhdGUoTWVk
aWFQbGF5ZXI6OlJlYWR5U3RhdGUpIG92ZXJyaWRlOwogICAgIHZvaWQgd2FpdEZvclNlZWtDb21w
bGV0ZWQoKSBvdmVycmlkZTsKQEAgLTEyOSw3ICsxMzAsNyBAQCBwcml2YXRlOgogCiAgICAgZnJp
ZW5kIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOwogCi0gICAgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBtX3BsYXllcjsKKyAgICBXZWFrUHRyPE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gbV9wbGF5ZXI7CiAgICAgUmVmUHRyPE1lZGlh
U291cmNlUHJpdmF0ZUNsaWVudD4gbV9jbGllbnQ7CiAgICAgVmVjdG9yPFJlZlB0cjxTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQz4+IG1fc291cmNlQnVmZmVyczsKICAgICBWZWN0b3I8U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMqPiBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQppbmRleCBi
MDAzOTMxYzdkNzU5ZjI5ZDllMDY2ZmIxMjAyMzA3Y2Y1MjQ5NTY2Li41NmZkODk1MTljNGEyYmJm
ZTk5ODFkZjhkZDJmZDI1MDkzOWFhNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KQEAgLTU0LDcgKzU0LDcgQEAgUmVmPE1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmNyZWF0
ZShNZWRpYVBsYXllclByaXYKIH0KIAogTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6TWVkaWFT
b3VyY2VQcml2YXRlQVZGT2JqQyhNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMq
IHBhcmVudCwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBjbGllbnQpCi0gICAgOiBtX3BsYXll
cihwYXJlbnQpCisgICAgOiBtX3BsYXllcihtYWtlV2Vha1B0cihwYXJlbnQpKQogICAgICwgbV9j
bGllbnQoY2xpZW50KQogICAgICwgbV9pc0VuZGVkKGZhbHNlKQogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRApAQCAtMTI4LDcgKzEyOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVS
YW5nZXM+IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmJ1ZmZlcmVkKCkKICAgICByZXR1cm4g
bV9jbGllbnQtPmJ1ZmZlcmVkKCk7CiB9CiAKLXZvaWQgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2Jq
Qzo6ZHVyYXRpb25DaGFuZ2VkKCkKK3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6ZHVy
YXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpCiB7CiAgICAgbV9wbGF5ZXItPmR1cmF0aW9u
Q2hhbmdlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5oCmluZGV4IDU0NjUzMmJhMTllYTQ0ZjhmYWY0OWFkMTk3NTIxZjk3ZThl
MWVlNjguLjA1NmZjOTEwZjk0YTk2NDM0ZWZhZmI0NWRlMTJmNjFhMmM5MGJlZjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKQEAg
LTI4LDcgKzI4LDExIEBACiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2luY2x1ZGUgIlNv
dXJjZUJ1ZmZlclBhcnNlci5oIgorI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1R5
cGVDYXN0cy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgogCiBPQkpDX0NMQVNTIEFWQXNzZXQ7CkBAIC03OCw2ICs4MiwxMCBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVudCB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX3BhcnNlclN0YXRlV2FzUmVzZXQgeyBmYWxzZSB9OwogCisg
ICAgTG9jayBtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5TXV0ZXg7CisgICAgQ29uZGl0aW9uIG1f
dHJhY2tCdWZmZXJNYW5hZ2VyUmVhZHlDb25kaXRpb247CisgICAgSGFzaFNldDx1aW50NjRfdD4g
bV90cmFja0J1ZmZlck1hbmFnZXJSZWFkeVNldDsKKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAogICAgIFJlZlB0cjxjb25zdCBXVEY6OkxvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9p
ZCogbV9sb2dJZGVudGlmaWVyIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KaW5kZXggMzVkOWY1NTBjM2IyMTA0
MWFlZjdkMmE2NDNiOGFhYzdiNGEzOTU1Yi4uYTFkOTY3M2Q2MDQ1ZDdjY2FhMGU2NGMxNmFlNjJk
ZTE3ZDVmMDE0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0yNzIsNiArMjcyLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQ
YXJzZXJBVkZPYmpDOjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQog
ICAgICAgICBpZiAoc2VnbWVudC5kdXJhdGlvbi5pc0ludmFsaWQoKSB8fCBzZWdtZW50LmR1cmF0
aW9uID09IE1lZGlhVGltZTo6emVyb1RpbWUoKSkKICAgICAgICAgICAgIHNlZ21lbnQuZHVyYXRp
b24gPSBQQUw6OnRvTWVkaWFUaW1lKFthc3NldCBkdXJhdGlvbl0pOwogCisgICAgICAgIFZlY3Rv
cjx1aW50NjRfdD4gdHJhY2tJRHM7CiAgICAgICAgIGZvciAoQVZBc3NldFRyYWNrKiB0cmFjayBp
biBbYXNzZXQgdHJhY2tzXSkgewogICAgICAgICAgICAgaWYgKFt0cmFjayBoYXNNZWRpYUNoYXJh
Y3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0xlZ2libGVdKSB7CiAgICAgICAgICAgICAg
ICAgLy8gRklYTUUoMTI1MTYxKTogSGFuZGxlIGluLWJhbmQgdGV4dCB0cmFja3MuCkBAIC0yODQs
MTggKzI4NSwyNiBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFBhcnNlU3Ry
ZWFtRGF0YUFzQXNzZXQoQVZBc3NldCogYXNzZXQpCiAgICAgICAgICAgICAgICAgaW5mby50cmFj
ayA9IHZpZGVvVHJhY2suY29weVJlZigpOwogICAgICAgICAgICAgICAgIGluZm8uZGVzY3JpcHRp
b24gPSBNZWRpYURlc2NyaXB0aW9uQVZGT2JqQzo6Y3JlYXRlKHRyYWNrKTsKICAgICAgICAgICAg
ICAgICBzZWdtZW50LnZpZGVvVHJhY2tzLmFwcGVuZChpbmZvKTsKKyAgICAgICAgICAgICAgICB0
cmFja0lEcy5hcHBlbmQodmlkZW9UcmFjay0+dHJhY2tJRCgpKTsKICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoW3RyYWNrIGhhc01lZGlhQ2hhcmFjdGVyaXN0aWM6QVZNZWRpYUNoYXJhY3RlcmlzdGlj
QXVkaWJsZV0pIHsKICAgICAgICAgICAgICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJ
bml0aWFsaXphdGlvblNlZ21lbnQ6OkF1ZGlvVHJhY2tJbmZvcm1hdGlvbiBpbmZvOwogICAgICAg
ICAgICAgICAgIGF1dG8gYXVkaW9UcmFjayA9IEF1ZGlvVHJhY2tQcml2YXRlTWVkaWFTb3VyY2VB
VkZPYmpDOjpjcmVhdGUodHJhY2spOwogICAgICAgICAgICAgICAgIGluZm8udHJhY2sgPSBhdWRp
b1RyYWNrLmNvcHlSZWYoKTsKICAgICAgICAgICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gTWVk
aWFEZXNjcmlwdGlvbkFWRk9iakM6OmNyZWF0ZSh0cmFjayk7CiAgICAgICAgICAgICAgICAgc2Vn
bWVudC5hdWRpb1RyYWNrcy5hcHBlbmQoaW5mbyk7CisgICAgICAgICAgICAgICAgdHJhY2tJRHMu
YXBwZW5kKGF1ZGlvVHJhY2stPnRyYWNrSUQoKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIC8vIEZJWE1FKDEyNTE2MSkgICAgOiBBZGQgVGV4dFRyYWNrIHN1cHBvcnQKICAgICAgICAg
fQogCi0gICAgICAgIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhXVEZNb3Zl
KHNlZ21lbnQpKTsKKyAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNr
KFdURk1vdmUoc2VnbWVudCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyks
IHRyYWNrSURzID0gV1RGTW92ZSh0cmFja0lEcyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBh
dXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdHJhY2tCdWZmZXJNYW5hZ2VyUmVhZHlNdXRleCk7Cisg
ICAgICAgICAgICBmb3IgKGF1dG8gdHJhY2tJRCA6IHRyYWNrSURzKQorICAgICAgICAgICAgICAg
IG1fdHJhY2tCdWZmZXJNYW5hZ2VyUmVhZHlTZXQuYWRkKHRyYWNrSUQpOworCisgICAgICAgICAg
ICBtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5Q29uZGl0aW9uLm5vdGlmeUFsbCgpOworICAgICAg
ICB9KTsKICAgICB9KTsKIH0KIApAQCAtMzEwLDYgKzMxOSwxNSBAQCB2b2lkIFNvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakM6OmRpZEZhaWxUb1BhcnNlU3RyZWFtRGF0YVdpdGhFcnJvcihOU0Vycm9y
KiBlcnJvcgogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92aWRlTWVkaWFE
YXRhRm9yVHJhY2tJRCh1aW50NjRfdCB0cmFja0lELCBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVC
dWZmZXIsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlLCB1bnNpZ25lZCBmbGFncykKIHsKICAgICBV
TlVTRURfUEFSQU0oZmxhZ3MpOworCisgICAgLy8gV2FpdCBmb3IgdGhlIHRyYWNrIGJ1ZmZlciBt
YW5hZ2VyIGlzIHJlYWR5IGZvciB0aGlzIHRyYWNrCisgICAgeworICAgICAgICBzdGQ6OnVuaXF1
ZV9sb2NrPExvY2s+IGxvY2sobV90cmFja0J1ZmZlck1hbmFnZXJSZWFkeU11dGV4KTsKKyAgICAg
ICAgbV90cmFja0J1ZmZlck1hbmFnZXJSZWFkeUNvbmRpdGlvbi53YWl0KGxvY2ssIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRyYWNrSURdIHsKKyAgICAgICAgICAgIHJl
dHVybiBtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5U2V0LmNvbnRhaW5zKHRyYWNrSUQpOworICAg
ICAgICB9KTsKKyAgICB9CisKICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBzdHJvbmdUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHNhbXBsZUJ1ZmZlciA9IHJldGFpblB0cihzYW1wbGVCdWZmZXIp
LCB0cmFja0lELCBtZWRpYVR5cGUgPSBtZWRpYVR5cGVdIHsKICAgICAgICAgaWYgKCFtX2RpZFBy
b3ZpZGVNZWRpYURhdGFDYWxsYmFjaykKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IDhi
MWVlYTYzMDA3ZWQ1YzRkMDg3NDQ2ZTc0M2IxM2E0YzFjYzAwYmQuLjFmNjI1YjNjNzhlODNlNTEx
NDQ4MDA5YmJjNDQ5NThlMzYzYWQ0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtOTEsOSArOTEsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCB3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRh
Rm9yVHJhY2tJRCh1aW50NjRfdCB0cmFja0lEKTsKICAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50
S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoUmVmPFVpbnQ4QXJyYXk+JiYs
IHVpbnQ2NF90IHRyYWNrSUQsIEJveDxCaW5hcnlTZW1hcGhvcmU+KTsKIAotICAgIGJvb2wgaGFz
VmlkZW8oKSBjb25zdDsKICAgICBib29sIGhhc1NlbGVjdGVkVmlkZW8oKSBjb25zdDsKLSAgICBi
b29sIGhhc0F1ZGlvKCkgY29uc3Q7CiAKICAgICB2b2lkIHRyYWNrRGlkQ2hhbmdlU2VsZWN0ZWQo
VmlkZW9UcmFja1ByaXZhdGUmLCBib29sIHNlbGVjdGVkKTsKICAgICB2b2lkIHRyYWNrRGlkQ2hh
bmdlRW5hYmxlZChBdWRpb1RyYWNrUHJpdmF0ZSYsIGJvb2wgZW5hYmxlZCk7CkBAIC0xNDAsNyAr
MTM4LDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
QyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiwgUmVmPFNvdXJjZUJ1ZmZlclBhcnNlcj4mJik7
CiAKICAgICB1c2luZyBJbml0aWFsaXphdGlvblNlZ21lbnQgPSBTb3VyY2VCdWZmZXJQcml2YXRl
Q2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ7Ci0gICAgdm9pZCBkaWRQYXJzZUluaXRpYWxp
emF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJik7CisgICAgdm9pZCBkaWRQYXJzZUlu
aXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhp
bnQzMl90KTsKICAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKFJlZjxNZWRp
YVNhbXBsZT4mJiwgdWludDY0X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpOwog
CkBAIC0xNTQsNiArMTUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZsdXNoKGNvbnN0IEF0b21T
dHJpbmcmIHRyYWNrSUQpIGZpbmFsOwogICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFT
YW1wbGU+JiYsIGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpIGZpbmFsOwogICAgIGJvb2wgaXNS
ZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpIGZpbmFsOworICAg
IE1lZGlhVGltZSB0aW1lRnVkZ2VGYWN0b3IoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldEFj
dGl2ZShib29sKSBmaW5hbDsKICAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgZmluYWw7CiAgICAg
dm9pZCBub3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG9tU3RyaW5n
JiB0cmFja0lEKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggNGQ2MTQ3ZTkxNjQ5MjRmNDJkNGRkZWY0YTZi
NmY4MGM2ZTUyYzM4ZS4uZTdlN2IxYTRjMDU4MzQ4M2VlMmJiYjMzYjNkMmU2OGY3ZmFjZjU0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMubW0KQEAgLTMwOCwxMCArMzA4LDEyIEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDCiAK
ICAgICBzb3VyY2VCdWZmZXJNYXAoKS5hZGQobV9tYXBJRCwgbWFrZVdlYWtQdHIoKnRoaXMpKTsK
IAotICAgIG1fcGFyc2VyLT5zZXREaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2Vn
bWVudCkgbXV0YWJsZSB7CisgICAgbV9wYXJzZXItPnNldERpZFBhcnNlSW5pdGlhbGl6YXRpb25E
YXRhQ2FsbGJhY2soW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChJbml0aWFs
aXphdGlvblNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+ZGlkUGFyc2VJ
bml0aWFsaXphdGlvbkRhdGEoV1RGTW92ZShzZWdtZW50KSk7CisgICAgICAgIGlmICghd2Vha1Ro
aXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZGlkUGFyc2VJbml0aWFsaXphdGlv
bkRhdGEoV1RGTW92ZShzZWdtZW50KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAg
IH0pOwogCiAgICAgbV9wYXJzZXItPnNldERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0Nh
bGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoaW50MzJfdCBlcnJvckNvZGUp
IG11dGFibGUgewpAQCAtMzQ0LDcgKzM0Niw3IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
Ojp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoKQogICAgICAgICBtX2hhc1Nlc3Npb25TZW1h
cGhvcmUtPnNpZ25hbCgpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpk
aWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50
KQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXphdGlv
bkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJ
RklFUik7CiAKQEAgLTM4NCw3ICszODYsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbgogICAg
IGlmIChtX21lZGlhU291cmNlKQogICAgICAgICBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+Y2hh
cmFjdGVyaXN0aWNzQ2hhbmdlZCgpOwogCi0gICAgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2Vn
bWVudChzZWdtZW50KTsKKyAgICBkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KFdURk1v
dmUoc2VnbWVudCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nKGlu
dDMyX3QgY29kZSkKQEAgLTU3Nyw4ICs1NzksNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjphcHBlbmRDb21wbGV0ZWQoKQogICAgIGlmIChtX3BhcnNpbmdTdWNjZWVkZWQgJiYg
bV9tZWRpYVNvdXJjZSkKICAgICAgICAgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPnNldExvYWRp
bmdQcm9ncmVzc3NlZCh0cnVlKTsKIAotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGll
bnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShtX3BhcnNpbmdTdWNjZWVkZWQg
PyBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2NlZWRl
ZCA6IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdDo6UGFyc2luZ0ZhaWxl
ZCk7CisgICAgU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kQ29tcGxldGVkKG1fcGFyc2luZ1N1
Y2NlZWRlZCwgbV9tZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPmlzRW5kZWQoKSA6IHRydWUp
OwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphYm9ydCgpCkBAIC02ODEs
MjEgKzY4MiwxMSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRSZWFkeVN0
YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdAogICAgICAgICBtX21lZGlhU291
cmNlLT5wbGF5ZXIoKS0+c2V0UmVhZHlTdGF0ZShyZWFkeVN0YXRlKTsKIH0KIAotYm9vbCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6aGFzVmlkZW8oKSBjb25zdAotewotICAgIHJldHVybiBt
X2NsaWVudCAmJiBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKCk7Ci19Ci0K
IGJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc1NlbGVjdGVkVmlkZW8oKSBjb25z
dAogewogICAgIHJldHVybiBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgIT0gbm90Rm91bmQ7CiB9CiAK
LWJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc0F1ZGlvKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9jbGllbnQgJiYgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRp
bygpOwotfQotCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5n
ZVNlbGVjdGVkKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaywgYm9vbCBzZWxlY3RlZCkKIHsKICAg
ICBhdXRvIHRyYWNrSUQgPSB0cmFjay5pZCgpLnN0cmluZygpLnRvVUludDY0KCk7CkBAIC0xMDYy
LDcgKzEwNTMsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjplbnF1ZXVlU2Ft
cGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUsIGNvbnN0CiAKICAgICAgICAgYXV0byByZW5k
ZXJlciA9IG1fYXVkaW9SZW5kZXJlcnMuZ2V0KHRyYWNrSUQpOwogICAgICAgICBbcmVuZGVyZXIg
ZW5xdWV1ZVNhbXBsZUJ1ZmZlcjpwbGF0Zm9ybVNhbXBsZS5zYW1wbGUuY21TYW1wbGVCdWZmZXJd
OwotICAgICAgICBpZiAobV9tZWRpYVNvdXJjZSAmJiAhc2FtcGxlLT5pc05vbkRpc3BsYXlpbmco
KSkKKyAgICAgICAgaWYgKG1fbWVkaWFTb3VyY2UgJiYgIXNhbXBsZS0+aXNOb25EaXNwbGF5aW5n
KCkgJiYgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCkpCiAgICAgICAgICAgICBtX21lZGlhU291cmNl
LT5wbGF5ZXIoKS0+c2V0SGFzQXZhaWxhYmxlQXVkaW9TYW1wbGUocmVuZGVyZXIuZ2V0KCksIHRy
dWUpOwogICAgIH0KIH0KQEAgLTEwOTEsNiArMTA4MiwxNCBAQCBib29sIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjppc1JlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJh
Y2tJRAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorTWVkaWFUaW1lIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjp0aW1lRnVkZ2VGYWN0b3IoKSBjb25zdAoreworICAgIGlmIChtX21lZGlhU291
cmNlKQorICAgICAgICByZXR1cm4gbV9tZWRpYVNvdXJjZS0+dGltZUZ1ZGdlRmFjdG9yKCk7CisK
KyAgICByZXR1cm4gU291cmNlQnVmZmVyUHJpdmF0ZTo6dGltZUZ1ZGdlRmFjdG9yKCk7Cit9CisK
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNldEFjdGl2ZShib29sIGlzQWN0aXZl
KQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgaXNBY3RpdmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXIuaAppbmRleCAwZGM4MWYwNmQyN2RjZDA5NzM5ZDA3ZTQ1MDc1OGI2MzYyOWQ3MWM3
Li5lMTBjZGFiYzQ3YTQ0NWQzMWNhOTBmOWJmNDgxMmZmYzRhMDMxMTY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk1lZGlhUGxheWVyRW51bXMu
aCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvVWludDhBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAt
NjksNyArNzAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBXaWxsIGJlIGNhbGxlZCBvbiB0aGUgbWFp
biB0aHJlYWQuCiAgICAgdXNpbmcgSW5pdGlhbGl6YXRpb25TZWdtZW50ID0gU291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OwotICAgIHVzaW5nIERpZFBhcnNl
SW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoSW5pdGlhbGl6
YXRpb25TZWdtZW50JiYpPjsKKyAgICB1c2luZyBEaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNh
bGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEluaXRpYWxpemF0aW9uU2VnbWVudCYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpPjsKICAgICB2b2lkIHNldERpZFBhcnNlSW5pdGlhbGl6
YXRpb25EYXRhQ2FsbGJhY2soRGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayYmIGNh
bGxiYWNrKQogICAgIHsKICAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
CmluZGV4IDg0YmM1NzRkYzBmMDNmOGZmYjQzNjg5MGZjNGExYTVkZWFhOWU2NDEuLmUyMWVmOWY3
ZjIwMzgyNzgwYTlmMTMzODM4N2IyM2JiNjlkMDE5YjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwCkBAIC03MTYsMTIgKzcxNiwxOSBAQCBTdGF0dXMgU291cmNlQnVmZmVyUGFy
c2VyV2ViTTo6T25DbHVzdGVyQmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwg
YwogICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CiAKICAg
ICBpZiAobV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCAmJiBtX2RpZFBhcnNlSW5p
dGlhbGl6YXRpb25EYXRhQ2FsbGJhY2spIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpbml0aWFsaXphdGlvblNlZ21lbnQg
PSBXVEZNb3ZlKCptX2luaXRpYWxpemF0aW9uU2VnbWVudCldICgpIG11dGFibGUgewotICAgICAg
ICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFdURk1vdmUoaW5pdGlh
bGl6YXRpb25TZWdtZW50KSk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5pdGlhbGl6YXRpb25TZWdtZW50ID0gV1RGTW92
ZSgqbV9pbml0aWFsaXphdGlvblNlZ21lbnQpLCB0cmFja0lEcyA9IFdURk1vdmUobV9pbml0aWFs
aXphdGlvblNlZ21lbnRUcmFja0lEcyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBtX2RpZFBh
cnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soV1RGTW92ZShpbml0aWFsaXphdGlvblNlZ21l
bnQpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCB0cmFja0lEcyA9IFdU
Rk1vdmUodHJhY2tJRHMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGF1dG8gbG9ja2Vy
ID0gaG9sZExvY2sobV90cmFja0J1ZmZlck1hbmFnZXJSZWFkeU11dGV4KTsKKyAgICAgICAgICAg
ICAgICBmb3IgKGF1dG8gdHJhY2tJRCA6IHRyYWNrSURzKQorICAgICAgICAgICAgICAgICAgICBt
X3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5U2V0LmFkZCh0cmFja0lEKTsKKworICAgICAgICAgICAg
ICAgIG1fdHJhY2tCdWZmZXJNYW5hZ2VyUmVhZHlDb25kaXRpb24ubm90aWZ5QWxsKCk7CisgICAg
ICAgICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfQogICAgIG1faW5pdGlhbGl6YXRpb25TZWdt
ZW50RW5jb3VudGVyZWQgPSBmYWxzZTsKICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudCA9IG51
bGxwdHI7CisgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRUcmFja0lEcy5jbGVhcigpOwogCiAg
ICAgaWYgKGNsdXN0ZXIudGltZWNvZGUuaXNfcHJlc2VudCgpKQogICAgICAgICBtX2N1cnJlbnRU
aW1lY29kZSA9IGNsdXN0ZXIudGltZWNvZGUudmFsdWUoKTsKQEAgLTczOCwxMCArNzQ1LDEzIEBA
IFN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblRyYWNrRW50cnkoY29uc3QgRWxlbWVu
dE1ldGFkYXRhJiBtZXRhZGF0YSwgY29uCiAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjpr
T2tDb21wbGV0ZWQpOwogCiAgICAgYXV0byB0cmFja1R5cGUgPSB0cmFja0VudHJ5LnRyYWNrX3R5
cGUudmFsdWUoKTsKLSAgICBpZiAodHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a1ZpZGVvKQorICAg
IGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprVmlkZW8pIHsKICAgICAgICAgbV9pbml0aWFs
aXphdGlvblNlZ21lbnQtPnZpZGVvVHJhY2tzLmFwcGVuZCh7IE1lZGlhRGVzY3JpcHRpb25XZWJN
OjpjcmVhdGUoVHJhY2tFbnRyeSh0cmFja0VudHJ5KSksIFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6
Y3JlYXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpIH0pOwotICAgIGVsc2UgaWYgKHRyYWNrVHlw
ZSA9PSBUcmFja1R5cGU6OmtBdWRpbykKKyAgICAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRU
cmFja0lEcy5hcHBlbmQodHJhY2tFbnRyeS50cmFja191aWQudmFsdWUoKSk7CisgICAgfSBlbHNl
IGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprQXVkaW8pIHsKICAgICAgICAgbV9pbml0aWFs
aXphdGlvblNlZ21lbnQtPmF1ZGlvVHJhY2tzLmFwcGVuZCh7IE1lZGlhRGVzY3JpcHRpb25XZWJN
OjpjcmVhdGUoVHJhY2tFbnRyeSh0cmFja0VudHJ5KSksIEF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6
Y3JlYXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpIH0pOworICAgICAgICBtX2luaXRpYWxpemF0
aW9uU2VnbWVudFRyYWNrSURzLmFwcGVuZCh0cmFja0VudHJ5LnRyYWNrX3VpZC52YWx1ZSgpKTsK
KyAgICB9CiAgICAgbV90cmFja3MuYXBwZW5kKHsgVHJhY2tFbnRyeSh0cmFja0VudHJ5KSwgeyB9
LCBudWxscHRyLCBudWxscHRyLCAwIH0pOwogCiAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtP
a0NvbXBsZXRlZCk7CkBAIC0xMjAzLDYgKzEyMTMsMTQgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1
ZmZlclBhcnNlcldlYk06Ok9uRnJhbWUoY29uc3QgRnJhbWVNZXRhZGF0YSYgbWV0YWRhdGEsIFJl
YWQKIAogICAgICAgICBhdXRvIHRyYWNrSUQgPSB0cmFjay50cmFja191aWQudmFsdWUoKTsKIAor
ICAgICAgICAvLyBXYWl0IGZvciB0aGUgdHJhY2sgYnVmZmVyIG1hbmFnZXIgaXMgcmVhZHkgZm9y
IHRoaXMgdHJhY2sKKyAgICAgICAgeworICAgICAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxMb2Nr
PiBsb2NrKG1fdHJhY2tCdWZmZXJNYW5hZ2VyUmVhZHlNdXRleCk7CisgICAgICAgICAgICBtX3Ry
YWNrQnVmZmVyTWFuYWdlclJlYWR5Q29uZGl0aW9uLndhaXQobG9jaywgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdHJhY2tJRF0geworICAgICAgICAgICAgICAgIHJldHVy
biBtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5U2V0LmNvbnRhaW5zKHRyYWNrSUQpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgIH0KKwogICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNhbXBsZUJ1ZmZlciA9IFdURk1vdmUoc2Ft
cGxlQnVmZmVyKSwgdHJhY2tJRF0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBpZiAoIW1fZGlk
UHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKQogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uaAppbmRleCA0NWJkNjlmZmI0NzEyYmU1MjQ1ZTYyNmNmYjdj
ZGU5ODdlOGFiYWNmLi5hNTQzOGVkYzFlNjExOTI3OTJmMDEyZTVlYzQzN2U1NTQ4MmRjMzQ1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VC
dWZmZXJQYXJzZXJXZWJNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCkBAIC0zMSw3ICszMSwxMCBAQAogI2luY2x1
ZGUgPGNvbW1vbi92cDlfaGVhZGVyX3BhcnNlci5oPgogI2luY2x1ZGUgPHdlYm0vY2FsbGJhY2su
aD4KICNpbmNsdWRlIDx3ZWJtL3N0YXR1cy5oPgorI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4K
ICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2lu
Y2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUg
PHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgpAQCAtMTQxLDYgKzE0
NCwxMSBAQCBwcml2YXRlOgogICAgIE9wdGlvbmFsPEJsb2NrVmFyaWFudD4gbV9jdXJyZW50Qmxv
Y2s7CiAgICAgT3B0aW9uYWw8dWludDY0X3Q+IG1fcmV3aW5kVG9Qb3NpdGlvbjsKIAorICAgIFZl
Y3Rvcjx1aW50NjRfdD4gbV9pbml0aWFsaXphdGlvblNlZ21lbnRUcmFja0lEczsKKyAgICBMb2Nr
IG1fdHJhY2tCdWZmZXJNYW5hZ2VyUmVhZHlNdXRleDsKKyAgICBDb25kaXRpb24gbV90cmFja0J1
ZmZlck1hbmFnZXJSZWFkeUNvbmRpdGlvbjsKKyAgICBIYXNoU2V0PHVpbnQ2NF90PiBtX3RyYWNr
QnVmZmVyTWFuYWdlclJlYWR5U2V0OworCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAg
UmVmUHRyPGNvbnN0IFdURjo6TG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xv
Z0lkZW50aWZpZXIgeyBudWxscHRyIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRl
LmNwcAppbmRleCA5YjRkMWY4MjEwMDFjYzU5YmY4NzA4YWNmNzgyNTZhMjkxYzU2ZjFjLi45Nzlh
ODFkM2I5MGNiNjYwYWU3N2JhYWIyOGRhMGVjOTZjYjM5MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01l
ZGlhU291cmNlUHJpdmF0ZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBs
YXRmb3JtVGltZVJhbmdlcz4gTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6YnVmZmVyZWQoKQogICAg
IHJldHVybiBtX2NsaWVudC0+YnVmZmVyZWQoKTsKIH0KIAotdm9pZCBNb2NrTWVkaWFTb3VyY2VQ
cml2YXRlOjpkdXJhdGlvbkNoYW5nZWQoKQordm9pZCBNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpk
dXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikKIHsKICAgICBtX3BsYXllci51cGRhdGVE
dXJhdGlvbihkdXJhdGlvbigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmgK
aW5kZXggN2E2OTNhZWQzNWNhNmM5YzkzNjkxMDJhYTU1MjRmZTMwZmFkNDQwMS4uZTNkOTgwN2M2
YjE1MjFmYzliMDRlNjRiMTY5ZjVlZWRkNDY0NTE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3Vy
Y2VQcml2YXRlLmgKQEAgLTgwLDggKzgwLDkgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1lZGlhU291
cmNlUHJpdmF0ZSBPdmVycmlkZXMKICAgICBBZGRTdGF0dXMgYWRkU291cmNlQnVmZmVyKGNvbnN0
IENvbnRlbnRUeXBlJiwgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGU+Jikgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGR1cmF0aW9uQ2hh
bmdlZChjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIG1hcmtFbmRPZlN0cmVh
bShFbmRPZlN0cmVhbVN0YXR1cykgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0VuZGVkKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gbV9pc0VuZGVkOyB9CiAgICAgdm9pZCB1bm1hcmtFbmRPZlN0cmVh
bSgpIG92ZXJyaWRlOwogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5
U3RhdGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApp
bmRleCAyZmM5MGQzNTRmNmI5NjdjNWM5NTAyN2IyMjNlNGEzNTc4MDBmMzBhLi5jNjExMDY1YzM4
ZjZiOTBkMmRhNDIxNzdiOTU0Mjc0ZmU4N2EyYTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VC
dWZmZXJQcml2YXRlLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgTW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGU6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQogCiAgICAgd2hp
bGUgKG1faW5wdXRCdWZmZXIuc2l6ZSgpICYmIHJlc3VsdCA9PSBTb3VyY2VCdWZmZXJQcml2YXRl
Q2xpZW50OjpBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2NlZWRlZCkgewogICAgICAgICBhdXRvIGJ1
ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobV9pbnB1dEJ1ZmZlci5kYXRhKCksIG1faW5wdXRC
dWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgc2l6ZV90IGJveExlbmd0aCA9IE1vY2tCb3g6OnBlZWtM
ZW5ndGgoYnVmZmVyLnB0cigpKTsKKyAgICAgICAgdWludDY0X3QgYm94TGVuZ3RoID0gTW9ja0Jv
eDo6cGVla0xlbmd0aChidWZmZXIucHRyKCkpOwogICAgICAgICBpZiAoYm94TGVuZ3RoID4gYnVm
ZmVyLT5ieXRlTGVuZ3RoKCkpCiAgICAgICAgICAgICBicmVhazsKIApAQCAtMTU5LDYgKzE1OSwx
MCBAQCB2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQoVmVjdG9yPHVuc2lnbmVk
IGNoYXI+JiYgZGF0YSkKICAgICAgICAgbV9pbnB1dEJ1ZmZlci5yZW1vdmUoMCwgYm94TGVuZ3Ro
KTsKICAgICB9CiAKKyAgICAvLyBSZXNvbHZlIHRoZSBjaGFuZ2VzIGluIFRyYWNrQnVmZmVycycg
YnVmZmVyZWQgcmFuZ2VzCisgICAgLy8gaW50byB0aGUgU291cmNlQnVmZmVyJ3MgYnVmZmVyZWQg
cmFuZ2VzCisgICAgdXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKG1fbWVkaWFTb3VyY2Ut
PmlzRW5kZWQoKSk7CisKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5zb3Vy
Y2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUocmVzdWx0KTsKIH0KQEAgLTE5MSw3ICsxOTUs
NyBAQCB2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRp
b25TZWdtZW50KGNvbnN0IE1vY2tJbml0aWFsaQogICAgICAgICB9CiAgICAgfQogCi0gICAgU291
cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChzZWdtZW50
KTsKKyAgICBTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdt
ZW50KFdURk1vdmUoc2VnbWVudCksIFtdKCkgeyB9KTsKIH0KIAogdm9pZCBNb2NrU291cmNlQnVm
ZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZVNhbXBsZShjb25zdCBNb2NrU2FtcGxlQm94JiBzYW1wbGVC
b3gpCkBAIC0yNDksNyArMjUzLDcgQEAgTWVkaWFUaW1lIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRl
OjptaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lRm9yVHJhY2tJRChjb24KICAgICByZXR1
cm4gbV9taW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lOwogfQogCi12b2lkIE1vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlOjpzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQoY29uc3QgQXRv
bVN0cmluZyYsIHNpemVfdCBtYXhRdWV1ZURlcHRoKQordm9pZCBNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6c2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmLCB1
aW50NjRfdCBtYXhRdWV1ZURlcHRoKQogewogICAgIG1fbWF4UXVldWVEZXB0aCA9IG1heFF1ZXVl
RGVwdGg7CiB9CkBAIC0zMjIsMTYgKzMyNiw2IEBAIHZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZh
dGU6OmVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmIHNhbXBsZSwgY29uc3QgQXRvCiAg
ICAgbV9lbnF1ZXVlZFNhbXBsZXMuYXBwZW5kKHRvU3RyaW5nKHNhbXBsZS5nZXQoKSkpOwogfQog
Ci1ib29sIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpoYXNWaWRlbygpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fY2xpZW50ICYmIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlSGFzVmlkZW8o
KTsKLX0KLQotYm9vbCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6aGFzQXVkaW8oKSBjb25zdAot
ewotICAgIHJldHVybiBtX2NsaWVudCAmJiBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUhh
c0F1ZGlvKCk7Ci19Ci0KICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIFdURkxvZ0NoYW5uZWwm
IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpsb2dDaGFubmVsKCkgY29uc3QKIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaAppbmRleCBiNmM1NDdkZDk1YzFmNmIwYmRkZDJlNDEx
YWYxNDJiMzk4ZmRmZmU1Li44YjJhMTM4OTQ2YzI4ZjJmM2U3ZGViZmU3MzY1Y2NjN2JhZmJhM2Yw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oCkBAIC00Niw5ICs0Niw2IEBA
IHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJNZWRpYVNvdXJjZSgpIHsgbV9tZWRpYVNvdXJjZSA9
IG51bGxwdHI7IH0KIAotICAgIGJvb2wgaGFzVmlkZW8oKSBjb25zdDsKLSAgICBib29sIGhhc0F1
ZGlvKCkgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTW9ja1NvdXJjZUJ1ZmZlclBy
aXZhdGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSopOwogCkBAIC03NSw3ICs3Miw3IEBAIHByaXZh
dGU6CiAKICAgICBWZWN0b3I8U3RyaW5nPiBlbnF1ZXVlZFNhbXBsZXNGb3JUcmFja0lEKGNvbnN0
IEF0b21TdHJpbmcmKSBmaW5hbDsKICAgICBNZWRpYVRpbWUgbWluaW11bVVwY29taW5nUHJlc2Vu
dGF0aW9uVGltZUZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwotICAgIHZvaWQg
c2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmLCBzaXplX3Qp
IGZpbmFsOworICAgIHZvaWQgc2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JUcmFja0lEKGNvbnN0IEF0
b21TdHJpbmcmLCB1aW50NjRfdCkgZmluYWw7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVJbml0aWFs
aXphdGlvblNlZ21lbnQoY29uc3QgTW9ja0luaXRpYWxpemF0aW9uQm94Jik7CiAgICAgdm9pZCBk
aWRSZWNlaXZlU2FtcGxlKGNvbnN0IE1vY2tTYW1wbGVCb3gmKTsKQEAgLTk0LDcgKzkxLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG1faXNBY3RpdmUgeyBmYWxzZSB9OwogICAgIE1lZGlhVGltZSBt
X21pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWU7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9l
bnF1ZXVlZFNhbXBsZXM7Ci0gICAgT3B0aW9uYWw8c2l6ZV90PiBtX21heFF1ZXVlRGVwdGg7Cisg
ICAgT3B0aW9uYWw8dWludDY0X3Q+IG1fbWF4UXVldWVEZXB0aDsKICAgICBWZWN0b3I8Y2hhcj4g
bV9pbnB1dEJ1ZmZlcjsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNw
cAppbmRleCA5M2UyZjI3ZDgyZThmOTI0Zjc4NWM1MGE2NTA1MDVhZGI2YTM2NzI2Li5lYWU5M2U3
M2FiMGM1NzYzODBkNDU4Yzc5NDQ5MWEwNjYxMGI5N2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcApAQCAt
NjAsNyArNjAsNyBAQCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uJiBSZW1vdGVBdWRp
b1RyYWNrUHJveHk6OmNvbmZpZ3VyYXRpb24oKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uOwogCi0gICAg
Y29uZmlndXJhdGlvbi0+aWRlbnRpZmllciA9IG1fdHJhY2tQcml2YXRlLT5pZCgpOworICAgIGNv
bmZpZ3VyYXRpb24tPnRyYWNrSWQgPSBtX3RyYWNrUHJpdmF0ZS0+aWQoKTsKICAgICBjb25maWd1
cmF0aW9uLT5sYWJlbCA9IG1fdHJhY2tQcml2YXRlLT5sYWJlbCgpOwogICAgIGNvbmZpZ3VyYXRp
b24tPmxhbmd1YWdlID0gbV90cmFja1ByaXZhdGUtPmxhbmd1YWdlKCk7CiAgICAgY29uZmlndXJh
dGlvbi0+dHJhY2tJbmRleCA9IG1fdHJhY2tQcml2YXRlLT50cmFja0luZGV4KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS5jcHAKaW5kZXggYzNiMDczNGE0ZWY5OGQyYTdlNzM5MGVhOTgwM2UzZTAzNmI3ZWM1Mi4u
NDJlZTc5YmIwNmU0NzUyNWRhYjM1NDI2ZDNhZGJhMTU4YTYzYTFjMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
LmNwcApAQCAtMTM0LDEwICsxMzQsMTQgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojps
b2FkKFVSTCYmIHVybCwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYKIH0KIAog
I2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6Omxv
YWRNZWRpYVNvdXJjZShVUkwmJiB1cmwsIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiBjb250
ZW50VHlwZSwgUmVtb3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyIG1lZGlhU291cmNlSWRlbnRpZmll
cikKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bG9hZE1lZGlhU291cmNlKFVSTCYmIHVy
bCwgY29uc3QgV2ViQ29yZTo6Q29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBSZW1vdGVNZWRpYVNv
dXJjZUlkZW50aWZpZXIgbWVkaWFTb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBtX21lZGlhU291cmNlUHJveHkgPSBhZG9wdFJlZigqbmV3IFJlbW90ZU1lZGlh
U291cmNlUHJveHkobV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSwgbWVkaWFT
b3VyY2VJZGVudGlmaWVyLCAqdGhpcykpOwogICAgIG1fcGxheWVyLT5sb2FkKHVybCwgY29udGVu
dFR5cGUsIG1fbWVkaWFTb3VyY2VQcm94eS5nZXQoKSk7CisKKyAgICBSZW1vdGVNZWRpYVBsYXll
ckNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAgICBnZXRDb25maWd1cmF0aW9uKGNvbmZp
Z3VyYXRpb24pOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29uZmlndXJhdGlvbikp
OwogfQogI2VuZGlmCiAKQEAgLTc1OSw3ICs3NjMsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OnVwZGF0ZUNhY2hlZFN0YXRlKCkKIAogICAgIGlmIChtX2J1ZmZlcmVkQ2hhbmdlZCkg
ewogICAgICAgICBtX2J1ZmZlcmVkQ2hhbmdlZCA9IGZhbHNlOwotICAgICAgICBtX2NhY2hlZFN0
YXRlLmJ1ZmZlcmVkUmFuZ2VzID0gKm1fcGxheWVyLT5idWZmZXJlZCgpOworICAgICAgICBpZiAo
bV9lbmdpbmVJZGVudGlmaWVyICE9IE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRp
Zmllcjo6QVZGb3VuZGF0aW9uTVNFKQorICAgICAgICAgICAgbV9jYWNoZWRTdGF0ZS5idWZmZXJl
ZFJhbmdlcyA9ICptX3BsYXllci0+YnVmZmVyZWQoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5o
CmluZGV4IGI4MjQ3NzEzYWRhZjFjNDUzZWE0YzY1ODFkYWQ0M2JiMWUwYzIwNjYuLmFlNmFkOGI0
NjBiOWY2YmRiM2IwMDQwZjc4MGJmMTk1ZjQ0OWJjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaApAQCAtMTE1
LDcgKzExNSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbG9hZChVUkwmJiwgT3B0aW9uYWw8U2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYmLCBjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYsIGNv
bnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25m
aWd1cmF0aW9uJiYpPiYmKTsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIHZvaWQgbG9h
ZE1lZGlhU291cmNlKFVSTCYmLCBjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYsIFJlbW90ZU1l
ZGlhU291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBsb2FkTWVkaWFTb3VyY2UoVVJMJiYsIGNv
bnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiwgUmVtb3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4m
Jik7CiAjZW5kaWYKICAgICB2b2lkIGNhbmNlbExvYWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5tZXNzYWdlcy5pbgppbmRleCAwOGVhMTVjYzY2YjJlYTlkMDcwZGE2YmI3MWY4OGI3NDUxY2Yw
MTU4Li4yY2RlMDgwNDlhZGVkYjRjNjE2OTU2OTRiMGI4OWI1ZWYwZmExMDM4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjgsNyArMjgsNyBAQCBtZXNzYWdlcyAtPiBS
ZW1vdGVNZWRpYVBsYXllclByb3h5IE5vdFJlZkNvdW50ZWQgewogCiAgICAgTG9hZChVUkwgdXJs
LCBPcHRpb25hbDxXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2FuZGJveEV4dGVu
c2lvbiwgV2ViQ29yZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUsIFN0cmluZyBrZXlTeXN0ZW0p
IC0+IChzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24gcGxheWVy
Q29uZmlndXJhdGlvbikgQXN5bmMKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIExvYWRN
ZWRpYVNvdXJjZShVUkwgdXJsLCBXZWJDb3JlOjpDb250ZW50VHlwZSBjb250ZW50VHlwZSwgV2Vi
S2l0OjpSZW1vdGVNZWRpYVNvdXJjZUlkZW50aWZpZXIgbWVkaWFTb3VyY2VJZGVudGlmaWVyKSBT
eW5jaHJvbm91cworICAgIExvYWRNZWRpYVNvdXJjZShVUkwgdXJsLCBXZWJDb3JlOjpDb250ZW50
VHlwZSBjb250ZW50VHlwZSwgV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZUlkZW50aWZpZXIgbWVk
aWFTb3VyY2VJZGVudGlmaWVyKSAtPiAoc3RydWN0IFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJD
b25maWd1cmF0aW9uIHBsYXllckNvbmZpZ3VyYXRpb24pIEFzeW5jCiAjZW5kaWYKICAgICBDYW5j
ZWxMb2FkKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhU291cmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhU291cmNlUHJveHkuY3BwCmluZGV4IDQ5OWJkNjFjMmY3ODIyMjNmYTM4ZmM5
N2IxODJmYTZkMmI5MzgxZGUuLjJlNDgyZGViNjVkZjM2NGRhZmM5NDdjZWUyYjc1NDVkZTMzZThi
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVNvdXJjZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFTb3VyY2VQcm94eS5jcHAKQEAgLTYxLDEzICs2MSwxMiBAQCB2b2lkIFJlbW90ZU1l
ZGlhU291cmNlUHJveHk6OnNldFByaXZhdGVBbmRPcGVuKFJlZjxNZWRpYVNvdXJjZVByaXZhdGU+
JiYgbWVkaWFTbwogCiBNZWRpYVRpbWUgUmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6ZHVyYXRpb24o
KSBjb25zdAogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICBy
ZXR1cm4gbV9kdXJhdGlvbjsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdl
cz4gUmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6YnVmZmVyZWQoKSBjb25zdAogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG1ha2VV
bmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCkBAIC0xMTIsNiArMTExLDIyIEBAIHZv
aWQgUmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6YWRkU291cmNlQnVmZmVyKGNvbnN0IFdlYkNvcmU6
OkNvbnRlbnRUeXBlJiBjb250ZW50CiAgICAgY2FsbGJhY2soc3RhdHVzLCByZW1vdGVTb3VyY2VJ
ZGVudGlmaWVyKTsKIH0KIAordm9pZCBSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpkdXJhdGlvbkNo
YW5nZWQoY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbikKK3sKKyAgICBpZiAobV9kdXJhdGlvbiA9
PSBkdXJhdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9u
OworICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0ZS0+ZHVyYXRpb25DaGFuZ2Vk
KGR1cmF0aW9uKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpzZXRSZWFkeVN0
YXRlKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKK3sK
KyAgICBpZiAobV9wcml2YXRlKQorICAgICAgICBtX3ByaXZhdGUtPnNldFJlYWR5U3RhdGUocmVh
ZHlTdGF0ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgKaW5kZXgg
NTk2OGM3YmJkMTg5Y2Q0NzllZjRhZWFiNGQ0NDk5NTMzZmQzZDY1Yi4uOTU5MzQ0OWQzYjVlNWNm
ZWQ5NmI1MTVlODE3ZTAzZGEwY2NhMDhmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oCkBAIC03NiwxNyArNzYs
MjEgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCi0g
ICAgLy8gdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYs
IElQQzo6RGVjb2RlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+JikgZmluYWw7CiAKLSAgICB1c2luZyBBZGRTb3VyY2VCdWZmZXJDYWxsYmFjayA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpBZGRTdGF0dXMs
IE9wdGlvbmFsPFJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXI+IHJlbW90ZVNvdXJjZUJ1ZmZl
cklkZW50aWZpZXIpPjsKKyAgICB1c2luZyBBZGRTb3VyY2VCdWZmZXJDYWxsYmFjayA9IENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpBZGRTdGF0dXMs
IE9wdGlvbmFsPFJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXI+KT47CiAgICAgdm9pZCBhZGRT
b3VyY2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6Q29udGVudFR5cGUmLCBBZGRTb3VyY2VCdWZmZXJD
YWxsYmFjayYmKTsKKyAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmKTsK
KyAgICB2b2lkIHNldFJlYWR5U3RhdGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlT
dGF0ZSk7CiAKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M7CiAgICAgUmVtb3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsK
ICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlPiBtX3ByaXZhdGU7CiAgICAg
V2Vha1B0cjxSZW1vdGVNZWRpYVBsYXllclByb3h5PiBtX3JlbW90ZU1lZGlhUGxheWVyUHJveHk7
CiAKKyAgICBNZWRpYVRpbWUgbV9kdXJhdGlvbjsKKwogICAgIFZlY3RvcjxSZWZQdHI8UmVtb3Rl
U291cmNlQnVmZmVyUHJveHk+PiBtX3NvdXJjZUJ1ZmZlcnM7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJj
ZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGNhNmI3NTJkNzcwNjBkZWNjYjlkYzNiYzc5NjQ4OWY0
ZWM5MjBkYWQuLmQ5OTkxMjY4OGViYjBkNTlhZGNkYjUzN2NlODM1ZWZlNzk2ZTlmNjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVBy
b3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVNvdXJjZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNyw2ICsyNyw4IEBACiAKIG1lc3Nh
Z2VzIC0+IFJlbW90ZU1lZGlhU291cmNlUHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgQWRkU291
cmNlQnVmZmVyKFdlYkNvcmU6OkNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlKSAtPiAoZW51bTp1aW50
OF90IFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZTo6QWRkU3RhdHVzIHN0YXR1cywgT3B0aW9u
YWw8V2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyPiByZW1vdGVTb3VyY2VCdWZm
ZXJJZGVudGlmaWVyKSBTeW5jaHJvbm91cworICAgIER1cmF0aW9uQ2hhbmdlZChNZWRpYVRpbWUg
ZHVyYXRpb24pCisgICAgU2V0UmVhZHlTdGF0ZShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpS
ZWFkeVN0YXRlIHJlYWR5U3RhdGUpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAKaW5k
ZXggMjY1YjczYjZhNGRmMzUzZjQ1M2RiNzIzY2MzMjk4YmM3ODViMmM3NC4uODQ3MzNmYzBhYjQ5
YjYzNTU3NzE5MGE4YmFlOTJlZGNkYjg2MWZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwCkBAIC0z
NCw3ICszNCw5IEBACiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIgogI2luY2x1
ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhRGVz
Y3JpcHRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9QbGF0Zm9ybVRpbWVSYW5nZXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAK
QEAgLTU0LDE0ICs1NiwxNiBAQCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6UmVtb3RlU291cmNl
QnVmZmVyUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubgogewogICAgIG1fY29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2
ZXIoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1l
KCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CiAgICAgbV9zb3VyY2VCdWZmZXJQ
cml2YXRlLT5zZXRDbGllbnQodGhpcyk7CisgICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlLT5zZXRJ
c0F0dGFjaGVkKHRydWUpOwogfQogCiBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6flJlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5KCkKIHsKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPnNldElzQXR0
YWNoZWQoZmFsc2UpOwogICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlUmVjZWl2
ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsK
IH0KIAotdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURp
ZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50
JiBzZWdtZW50KQordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJp
dmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YXRpb25TZWdtZW50
JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIGlmICghbV9yZW1vdGVNZWRpYVBsYXllclByb3h5KQogICAgICAgICByZXR1cm47
CkBAIC03MSwxOSArNzUsMzQgQEAgdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNl
QnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQKICAgICBmb3IgKGF1
dG8mIGF1ZGlvVHJhY2tJbmZvIDogc2VnbWVudC5hdWRpb1RyYWNrcykgewogICAgICAgICBhdXRv
IGlkZW50aWZpZXIgPSBtX3JlbW90ZU1lZGlhUGxheWVyUHJveHktPmFkZFJlbW90ZUF1ZGlvVHJh
Y2tQcm94eSgqYXVkaW9UcmFja0luZm8udHJhY2spOwogICAgICAgICBzZWdtZW50SW5mby5hdWRp
b1RyYWNrcy5hcHBlbmQoeyBNZWRpYURlc2NyaXB0aW9uSW5mbygqYXVkaW9UcmFja0luZm8uZGVz
Y3JpcHRpb24pLCBpZGVudGlmaWVyIH0pOworCisgICAgICAgIEFTU0VSVCghbV90cmFja0lkcy5j
b250YWlucyhpZGVudGlmaWVyKSk7CisgICAgICAgIEFTU0VSVCghbV9tZWRpYURlc2NyaXB0aW9u
cy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgICAgIG1fdHJhY2tJZHMuYWRkKGlkZW50aWZp
ZXIsIGF1ZGlvVHJhY2tJbmZvLnRyYWNrLT5pZCgpKTsKKyAgICAgICAgbV9tZWRpYURlc2NyaXB0
aW9ucy5hZGQoaWRlbnRpZmllciwgKmF1ZGlvVHJhY2tJbmZvLmRlc2NyaXB0aW9uKTsKICAgICB9
CiAKICAgICBmb3IgKGF1dG8mIHZpZGVvVHJhY2tJbmZvIDogc2VnbWVudC52aWRlb1RyYWNrcykg
ewogICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX3JlbW90ZU1lZGlhUGxheWVyUHJveHktPmFk
ZFJlbW90ZVZpZGVvVHJhY2tQcm94eSgqdmlkZW9UcmFja0luZm8udHJhY2spOwogICAgICAgICBz
ZWdtZW50SW5mby52aWRlb1RyYWNrcy5hcHBlbmQoeyBNZWRpYURlc2NyaXB0aW9uSW5mbygqdmlk
ZW9UcmFja0luZm8uZGVzY3JpcHRpb24pLCBpZGVudGlmaWVyIH0pOworCisgICAgICAgIEFTU0VS
VCghbV90cmFja0lkcy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgICAgIEFTU0VSVCghbV9t
ZWRpYURlc2NyaXB0aW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgICAgIG1fdHJhY2tJ
ZHMuYWRkKGlkZW50aWZpZXIsIHZpZGVvVHJhY2tJbmZvLnRyYWNrLT5pZCgpKTsKKyAgICAgICAg
bV9tZWRpYURlc2NyaXB0aW9ucy5hZGQoaWRlbnRpZmllciwgKnZpZGVvVHJhY2tJbmZvLmRlc2Ny
aXB0aW9uKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIHRleHRUcmFja0luZm8gOiBzZWdtZW50
LnRleHRUcmFja3MpIHsKICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gbV9yZW1vdGVNZWRpYVBs
YXllclByb3h5LT5hZGRSZW1vdGVUZXh0VHJhY2tQcm94eSgqdGV4dFRyYWNrSW5mby50cmFjayk7
CiAgICAgICAgIHNlZ21lbnRJbmZvLnRleHRUcmFja3MuYXBwZW5kKHsgTWVkaWFEZXNjcmlwdGlv
bkluZm8oKnRleHRUcmFja0luZm8uZGVzY3JpcHRpb24pLCBpZGVudGlmaWVyIH0pOworCisgICAg
ICAgIEFTU0VSVCghbV90cmFja0lkcy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgICAgIEFT
U0VSVCghbV9tZWRpYURlc2NyaXB0aW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgICAg
IG1fdHJhY2tJZHMuYWRkKGlkZW50aWZpZXIsIHRleHRUcmFja0luZm8udHJhY2stPmlkKCkpOwor
ICAgICAgICBtX21lZGlhRGVzY3JpcHRpb25zLmFkZChpZGVudGlmaWVyLCAqdGV4dFRyYWNrSW5m
by5kZXNjcmlwdGlvbik7CiAgICAgfQogCi0gICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3Vy
Y2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChzZWdtZW50SW5m
byksIG1faWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rp
b24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KHNl
Z21lbnRJbmZvKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1faWRlbnRpZmllcik7CiB9
CiAKIHZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBl
bmRFcnJvcihib29sKQpAQCAtOTEsMTQgKzExMCwxNCBAQCB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9vbCkKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCi12b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZm
ZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpCit2b2lkIFJlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKGNvbnN0
IE1lZGlhVGltZSYgZHVyYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQoZHVy
YXRpb24pLCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoZG91YmxlKQordm9pZCBSZW1vdGVT
b3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxlKGRvdWJs
ZSBzYW1wbGVEdXJhdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fY29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxlKHNhbXBsZUR1
cmF0aW9uKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94
eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZERyb3BTYW1wbGUoKQpAQCAtMTExLDI2ICsxMzAsMjQg
QEAgdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZVN0cmVh
bUVuZGVkV2l0aERlY29kZUVycm9yKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1ib29s
IFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlSGFzQXVkaW8oKSBj
b25zdAordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUFw
cGVuZENvbXBsZXRlKFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCBhcHBl
bmRSZXN1bHQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpT
b3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxl
dGUoYXBwZW5kUmVzdWx0KSwgbV9pZGVudGlmaWVyKTsKIH0KIAotYm9vbCBSZW1vdGVTb3VyY2VC
dWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKCkgY29uc3QKK3ZvaWQgUmVt
b3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVy
aW5nRXJyb3IoaW50IGVycm9yQ29kZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVm
ZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVu
ZFJlc3VsdCBhcHBlbmRSZXN1bHQpCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3Vy
Y2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCBmbGFnKQogewotICAgIG1f
Y29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKGFw
cGVuZFJlc3VsdCksIG1faWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpT
b3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoZmxhZyksIG1faWRlbnRpZmll
cik7CiB9CiAKLXZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZh
dGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJyb3IoaW50IGVycm9yQ29kZSkKK3ZvaWQgUmVtb3RlU291
cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQo
Y29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRlQnVm
ZmVyZWRSYW5nZXNDaGFuZ2VkKHRpbWVSYW5nZXMpLCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lk
IFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjphcHBlbmQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNl
JiBkYXRhKQpAQCAtMTM4LDYgKzE1NSw0MyBAQCB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
OjphcHBlbmQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogICAgIG1fc291cmNlQnVm
ZmVyUHJpdmF0ZS0+YXBwZW5kKGRhdGEudmVjdG9yKCkpOwogfQogCit2b2lkIFJlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5OjpzZXRBY3RpdmUoYm9vbCBhY3RpdmUpCit7CisgICAgbV9zb3VyY2VCdWZm
ZXJQcml2YXRlLT5zZXRBY3RpdmUoYWN0aXZlKTsKK30KKwordm9pZCBSZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eTo6c2V0UmVhZHlTdGF0ZShXZWJDb3JlOjpNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBz
dGF0ZSkKK3sKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPnNldFJlYWR5U3RhdGUoc3RhdGUp
OworfQorCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojp1cGRhdGVCdWZmZXJlZEZyb21U
cmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVkKQoreworICAgIG1fc291cmNlQnVmZmVyUHJp
dmF0ZS0+dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKHNvdXJjZUlzRW5kZWQpOworfQor
Cit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpldmljdENvZGVkRnJhbWVzKHVpbnQ2NF90
IG5ld0RhdGFTaXplLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRf
dCBtYXhpbXVtQnVmZmVyU2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50VGltZSwgY29uc3Qg
TWVkaWFUaW1lJiBkdXJhdGlvbiwgYm9vbCBpc0VuZGVkKQoreworICAgIG1fc291cmNlQnVmZmVy
UHJpdmF0ZS0+ZXZpY3RDb2RlZEZyYW1lcyhuZXdEYXRhU2l6ZSwgcGVuZGluZ0FwcGVuZERhdGFD
YXBhY2l0eSwgbWF4aW11bUJ1ZmZlclNpemUsIGN1cnJlbnRUaW1lLCBkdXJhdGlvbiwgaXNFbmRl
ZCk7Cit9CisKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OmFkZFRyYWNrQnVmZmVyKFRy
YWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgdHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllcikK
K3sKKyAgICBBU1NFUlQobV90cmFja0lkcy5jb250YWlucyh0cmFja1ByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyKSk7CisgICAgQVNTRVJUKG1fbWVkaWFEZXNjcmlwdGlvbnMuY29udGFpbnModHJhY2tQ
cml2YXRlUmVtb3RlSWRlbnRpZmllcikpOworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+YWRk
VHJhY2tCdWZmZXIobV90cmFja0lkcy5nZXQodHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciks
IG1fbWVkaWFEZXNjcmlwdGlvbnMuZ2V0KHRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpKTsK
K30KKwordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6cmVlbnF1ZXVlTWVkaWFJZk5lZWRl
ZChjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRNZWRpYVRpbWUsIHVpbnQ2NF90IHBlbmRpbmdBcHBl
bmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplKQoreworICAgIG1fc291
cmNlQnVmZmVyUHJpdmF0ZS0+cmVlbnF1ZXVlTWVkaWFJZk5lZWRlZChjdXJyZW50TWVkaWFUaW1l
LCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCBtYXhpbXVtQnVmZmVyU2l6ZSk7Cit9CisKK3Zv
aWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnRyeVNpZ25hbEFsbFNhbXBsZXNJblRyYWNrRW5x
dWV1ZWQoKQoreworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+dHJ5U2lnbmFsQWxsU2FtcGxl
c0luVHJhY2tFbnF1ZXVlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlm
IC8vIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclBy
b3h5LmgKaW5kZXggYmM5Zjk5ZGZiN2EyMzBiNTg5YWUzNDJlNWNkMDQ3NzA3NWYwMjEzOC4uNmVj
ZDhiY2Y2OGVlYjdmY2FiMTE1YzY5Y2ExYzE0ZGZkYzUyYjUxZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmgK
QEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgi
CiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlU291cmNlQnVm
ZmVySWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIu
aCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhRGVzY3JpcHRpb24uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NvdXJjZUJ1ZmZlclByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1ZmZl
clByaXZhdGVDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC00MywxMCArNDUsMTIg
QEAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTWVk
aWFTYW1wbGU7CitjbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXM7CiB9CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCitzdHJ1Y3QgTWVkaWFEZXNjcmlwdGlvbkluZm87CiBjbGFzcyBSZW1vdGVNZWRpYVBs
YXllclByb3h5OwogCiBjbGFzcyBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eSBmaW5hbApAQCAtNTgs
MTYgKzYyLDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZVNvdXJjZUJ1ZmZlclBy
b3h5PiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90ZVNvdXJjZUJ1ZmZl
cklkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlPiYmLCBSZW1vdGVN
ZWRpYVBsYXllclByb3h5Jik7CiAgICAgdmlydHVhbCB+UmVtb3RlU291cmNlQnVmZmVyUHJveHko
KTsKIAotICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlv
blNlZ21lbnQoY29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50JikgZmluYWw7CisgICAgdm9pZCBz
b3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0aWFs
aXphdGlvblNlZ21lbnQmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKKyAg
ICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVTdHJlYW1FbmRlZFdpdGhEZWNvZGVFcnJvcigpIGZp
bmFsOwogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZEVycm9yKGJvb2wgZGVjb2Rl
RXJyb3IpIGZpbmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRl
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCkgZmluYWw7
CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlh
VGltZSYpIGZpbmFsOwogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxl
KGRvdWJsZSBzYW1wbGVEdXJhdGlvbikgZmluYWw7CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2
YXRlRGlkRHJvcFNhbXBsZSgpIGZpbmFsOwotICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZVN0
cmVhbUVuZGVkV2l0aERlY29kZUVycm9yKCkgZmluYWw7Ci0gICAgYm9vbCBzb3VyY2VCdWZmZXJQ
cml2YXRlSGFzQXVkaW8oKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHNvdXJjZUJ1ZmZlclByaXZh
dGVIYXNWaWRlbygpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUJ1
ZmZlcmVkRGlydHlDaGFuZ2VkKGJvb2wpIGZpbmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJp
dmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5n
ZXMmKSBmaW5hbDsKIAotICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRl
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCkgZmluYWw7
CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVJlbmRlcmluZ0Vycm9yKGlu
dCBlcnJvckNvZGUpIGZpbmFsOwogCiBwcml2YXRlOgpAQCAtNzcsMTIgKzgxLDIyIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRl
Y29kZXImKSBmaW5hbDsKICAgICAvLyB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNv
bm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYp
IGZpbmFsOwogCisgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCk7CiAgICAgdm9pZCBhcHBlbmQoY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBzZXRSZWFkeVN0YXRlKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcmVkRnJvbVRy
YWNrQnVmZmVycyhib29sIHNvdXJjZUlzRW5kZWQpOworICAgIHZvaWQgZXZpY3RDb2RlZEZyYW1l
cyh1aW50NjRfdCBuZXdEYXRhU2l6ZSwgdWludDY0X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0
eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUsIGNvbnN0IE1lZGlhVGltZSYgY3VycmVudFRp
bWUsIGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24sIGJvb2wgaXNFbmRlZCk7CisgICAgdm9pZCBh
ZGRUcmFja0J1ZmZlcihUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJl
ZW5xdWV1ZU1lZGlhSWZOZWVkZWQoY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50TWVkaWFUaW1lLCB1
aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVy
U2l6ZSk7CisgICAgdm9pZCB0cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKCk7CiAK
ICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7
CiAgICAgUmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgUmVm
PFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU+IG1fc291cmNlQnVmZmVyUHJpdmF0ZTsKICAg
ICBXZWFrUHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+IG1fcmVtb3RlTWVkaWFQbGF5ZXJQcm94
eTsKKworICAgIEhhc2hNYXA8VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgQXRvbVN0cmlu
Zz4gbV90cmFja0lkczsKKyAgICBIYXNoTWFwPFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIs
IFJlZjxXZWJDb3JlOjpNZWRpYURlc2NyaXB0aW9uPj4gbV9tZWRpYURlc2NyaXB0aW9uczsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IGEwOGZmMDFkYTMwZDA2N2I5ZTQxZmI1YTExM2U3YmE0M2ZlMGUwMTcuLmY0MWZk
ZTRlNzlmYTcwOWMyMzhkYzI3NzQ2ZDkwODRmZjgwMTRhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVy
UHJveHkubWVzc2FnZXMuaW4KQEAgLTI2LDcgKzI2LDE0IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9D
RVNTKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVTb3VyY2VC
dWZmZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBTZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiAg
ICAgQXBwZW5kKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQorICAgIFNldFJlYWR5U3RhdGUoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3RhdGUpCisgICAgVXBkYXRlQnVmZmVyZWRG
cm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCkKKyAgICBFdmljdENvZGVkRnJhbWVz
KHVpbnQ2NF90IG5ld0RhdGFTaXplLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5
LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSwgTWVkaWFUaW1lIGN1cnJlbnRUaW1lLCBNZWRp
YVRpbWUgZHVyYXRpb24sIGJvb2wgaXNFbmRlZCkKKyAgICBBZGRUcmFja0J1ZmZlcihXZWJLaXQ6
OlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgdHJhY2tJZCkKKyAgICBSZWVucXVldWVNZWRp
YUlmTmVlZGVkKE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lLCB1aW50NjRfdCBwZW5kaW5nQXBw
ZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSkKKyAgICBUcnlTaWdu
YWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKCkKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcApp
bmRleCA2NzQ0OGU5YTc0OGYxOGFkYTQ1MjU5MDliYTJjZDMxNDBiMjI1MWVkLi4xMzIxNWE2NzM5
N2MwY2NmODg3NGZiNGFhZjEwMDgzZDMwYjEyMWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKQEAgLTY0LDcg
KzY0LDcgQEAgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24mIFJlbW90ZVRleHRU
cmFja1Byb3h5Ojpjb25maWd1cmF0aW9uKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb247CiAKLSAg
ICBjb25maWd1cmF0aW9uLT5pZGVudGlmaWVyID0gbV90cmFja1ByaXZhdGUtPmlkKCk7CisgICAg
Y29uZmlndXJhdGlvbi0+dHJhY2tJZCA9IG1fdHJhY2tQcml2YXRlLT5pZCgpOwogICAgIGNvbmZp
Z3VyYXRpb24tPmxhYmVsID0gbV90cmFja1ByaXZhdGUtPmxhYmVsKCk7CiAgICAgY29uZmlndXJh
dGlvbi0+bGFuZ3VhZ2UgPSBtX3RyYWNrUHJpdmF0ZS0+bGFuZ3VhZ2UoKTsKICAgICBjb25maWd1
cmF0aW9uLT50cmFja0luZGV4ID0gbV90cmFja1ByaXZhdGUtPnRyYWNrSW5kZXgoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb1RyYWNrUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQ
cm94eS5jcHAKaW5kZXggMzUwZjhlYTczMDdiZDIzN2FhODNmNmNjOTQ1YjU2MTBkZjZmMWM3MS4u
YjkyYTg0ZTNhOWI2OGFjNmM0ZjJhZjM0MjZhZWQ3YTc5NDEyZGFjNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5j
cHAKQEAgLTYwLDcgKzYwLDcgQEAgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYgUmVt
b3RlVmlkZW9UcmFja1Byb3h5Ojpjb25maWd1cmF0aW9uKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbjsK
IAotICAgIGNvbmZpZ3VyYXRpb24tPmlkZW50aWZpZXIgPSBtX3RyYWNrUHJpdmF0ZS0+aWQoKTsK
KyAgICBjb25maWd1cmF0aW9uLT50cmFja0lkID0gbV90cmFja1ByaXZhdGUtPmlkKCk7CiAgICAg
Y29uZmlndXJhdGlvbi0+bGFiZWwgPSBtX3RyYWNrUHJpdmF0ZS0+bGFiZWwoKTsKICAgICBjb25m
aWd1cmF0aW9uLT5sYW5ndWFnZSA9IG1fdHJhY2tQcml2YXRlLT5sYW5ndWFnZSgpOwogICAgIGNv
bmZpZ3VyYXRpb24tPnRyYWNrSW5kZXggPSBtX3RyYWNrUHJpdmF0ZS0+dHJhY2tJbmRleCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RleHRUcmFja1ByaXZh
dGVSZW1vdGVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaAppbmRleCBjMTM5Y2ZjMTRiNDcx
ZmIyNThkYmJlODE4MmIzZDVjNjIxNjJiNTkyLi42NTYwNWIwMWExMjg2YzMxMjk3ZWJjNjBjZTBm
Yzg1MDViNTIyZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaApA
QCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBUZXh0VHJhY2tQ
cml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7Ci0gICAgQXRvbVN0cmluZyBpZGVudGlmaWVyOwor
ICAgIEF0b21TdHJpbmcgdHJhY2tJZDsKICAgICBBdG9tU3RyaW5nIGxhYmVsOwogICAgIEF0b21T
dHJpbmcgbGFuZ3VhZ2U7CiAgICAgQXRvbVN0cmluZyBpbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0
Y2hUeXBlOwpAQCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3QgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNv
bmZpZ3VyYXRpb24gewogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiAgICAgdm9pZCBlbmNv
ZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICB7Ci0gICAgICAgIGVuY29kZXIgPDwgaWRl
bnRpZmllcjsKKyAgICAgICAgZW5jb2RlciA8PCB0cmFja0lkOwogICAgICAgICBlbmNvZGVyIDw8
IGxhYmVsOwogICAgICAgICBlbmNvZGVyIDw8IGxhbmd1YWdlOwogICAgICAgICBlbmNvZGVyIDw8
IGluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGU7CkBAIC03NSw5ICs3NSw5IEBAIHN0cnVj
dCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7CiAgICAgdGVtcGxhdGUgPGNs
YXNzIERlY29kZXI+CiAgICAgc3RhdGljIE9wdGlvbmFsPFRleHRUcmFja1ByaXZhdGVSZW1vdGVD
b25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9w
dGlvbmFsPEF0b21TdHJpbmc+IGlkZW50aWZpZXI7Ci0gICAgICAgIGRlY29kZXIgPj4gaWRlbnRp
ZmllcjsKLSAgICAgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICBPcHRpb25hbDxBdG9tU3Ry
aW5nPiB0cmFja0lkOworICAgICAgICBkZWNvZGVyID4+IHRyYWNrSWQ7CisgICAgICAgIGlmICgh
dHJhY2tJZCkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0
aW9uYWw8QXRvbVN0cmluZz4gbGFiZWw7CkBAIC0xNTEsNyArMTUxLDcgQEAgc3RydWN0IFRleHRU
cmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIHsKICAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHt7Ci0gICAgICAgICAgICBXVEZNb3ZlKCppZGVu
dGlmaWVyKSwKKyAgICAgICAgICAgIFdURk1vdmUoKnRyYWNrSWQpLAogICAgICAgICAgICAgV1RG
TW92ZSgqbGFiZWwpLAogICAgICAgICAgICAgV1RGTW92ZSgqbGFuZ3VhZ2UpLAogICAgICAgICAg
ICAgV1RGTW92ZSgqaW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZSksCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVtb3RlQ29uZmln
dXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RyYWNrUHJpdmF0ZVJl
bW90ZUNvbmZpZ3VyYXRpb24uaAppbmRleCA0NDQyMmIzMDE0ZjIwMjIxNmJlZDZhNTdhM2Y4ZWRk
Nzk0OGU5MjQ2Li5hOGYwNWQxOGZkOTk4OGViYjk5Yzc2NzNiNjg3YTY3MGQ5MmUwMTQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVtb3Rl
Q29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9UcmFj
a1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBzdHJ1Y3QgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7Ci0g
ICAgQXRvbVN0cmluZyBpZGVudGlmaWVyOworICAgIEF0b21TdHJpbmcgdHJhY2tJZDsKICAgICBB
dG9tU3RyaW5nIGxhYmVsOwogICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2U7CiAgICAgTWVkaWFUaW1l
IHN0YXJ0VGltZVZhcmlhbmNlIHsgTWVkaWFUaW1lOjp6ZXJvVGltZSgpIH07CkBAIC00OSw3ICs0
OSw3IEBAIHN0cnVjdCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIHsKICAgICB0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0CiAgICAgewotICAgICAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7CisgICAgICAgIGVuY29k
ZXIgPDwgdHJhY2tJZDsKICAgICAgICAgZW5jb2RlciA8PCBsYWJlbDsKICAgICAgICAgZW5jb2Rl
ciA8PCBsYW5ndWFnZTsKICAgICAgICAgZW5jb2RlciA8PCBzdGFydFRpbWVWYXJpYW5jZTsKQEAg
LTYzLDkgKzYzLDkgQEAgc3RydWN0IFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24gewog
ICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgogICAgIHN0YXRpYyBPcHRpb25hbDxUcmFja1By
aXZhdGVSZW1vdGVDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7
Ci0gICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IGlkZW50aWZpZXI7Ci0gICAgICAgIGRlY29k
ZXIgPj4gaWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICBPcHRp
b25hbDxBdG9tU3RyaW5nPiB0cmFja0lkOworICAgICAgICBkZWNvZGVyID4+IHRyYWNrSWQ7Cisg
ICAgICAgIGlmICghdHJhY2tJZCkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAK
ICAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gbGFiZWw7CkBAIC0xMDksNyArMTA5LDcgQEAg
c3RydWN0IFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24gewogICAgICAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4ge3sKLSAgICAgICAgICAgIFdURk1v
dmUoKmlkZW50aWZpZXIpLAorICAgICAgICAgICAgV1RGTW92ZSgqdHJhY2tJZCksCiAgICAgICAg
ICAgICBXVEZNb3ZlKCpsYWJlbCksCiAgICAgICAgICAgICBXVEZNb3ZlKCpsYW5ndWFnZSksCiAg
ICAgICAgICAgICBXVEZNb3ZlKCpzdGFydFRpbWVWYXJpYW5jZSksCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVS
ZW1vdGUuY3BwCmluZGV4IDcyMWMwYWE5MjA3MjRlOWIzM2I1ODY1MzAzMTM3YjZjYTU0OTAwYTAu
LmUyYTNlOTAxYWZmNGU2NDE0MWJmYzk5YzZmMGM0NTcyOWIxZDhiY2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1By
aXZhdGVSZW1vdGUuY3BwCkBAIC01Myw5ICs1Myw5IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVS
ZW1vdGU6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2YXRl
UmVtb3RlOjp1cGRhdGVDb25maWd1cmF0aW9uKFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRp
b24mJiBjb25maWd1cmF0aW9uKQogewotICAgIGlmIChjb25maWd1cmF0aW9uLmlkZW50aWZpZXIg
IT0gbV9pZCkgeworICAgIGlmIChjb25maWd1cmF0aW9uLnRyYWNrSWQgIT0gbV9pZCkgewogICAg
ICAgICBhdXRvIGNoYW5nZWQgPSAhbV9pZC5pc0VtcHR5KCk7Ci0gICAgICAgIG1faWQgPSBjb25m
aWd1cmF0aW9uLmlkZW50aWZpZXI7CisgICAgICAgIG1faWQgPSBjb25maWd1cmF0aW9uLnRyYWNr
SWQ7CiAgICAgICAgIGlmIChjaGFuZ2VkICYmIGNsaWVudCgpKQogICAgICAgICAgICAgY2xpZW50
KCktPmlkQ2hhbmdlZChtX2lkKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmgKaW5kZXgg
NTNkYzliZTMzYzliZmMwZGM0YTdiMDFmYzFmMTAxZjllODc2YTVjNS4uY2Y3YzBlOTNlZjQ2ZjQ5
MDFjZWNjNWY5ZjdhOGU2MWUzZjE2YjNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuaApAQCAt
NDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlv
VHJhY2tQcml2YXRlUmVtb3RlKGNvbm5lY3Rpb24sIGlkZW5kaWZpZXIsIFdURk1vdmUoY29uZmln
dXJhdGlvbikpKTsKICAgICB9CiAKKyAgICBBdG9tU3RyaW5nIGlkKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9pZDsgfQogICAgIHZvaWQgdXBkYXRlQ29uZmlndXJhdGlvbihUcmFja1ByaXZhdGVS
ZW1vdGVDb25maWd1cmF0aW9uJiYpOwogCiBwcml2YXRlOgpAQCAtNTUsNyArNTYsNiBAQCBwcml2
YXRlOgogCiAgICAgdXNpbmcgQXVkaW9UcmFja0tpbmQgPSBXZWJDb3JlOjpBdWRpb1RyYWNrUHJp
dmF0ZTo6S2luZDsKICAgICBBdWRpb1RyYWNrS2luZCBraW5kKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9raW5kOyB9Ci0gICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
aWQ7IH0KICAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sYWJl
bDsgfQogICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xh
bmd1YWdlOyB9CiAgICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Ry
YWNrSW5kZXg7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA2ZGRlZTg3YWJk
Y2M3NmY4NjlhZDU1NGRiNTExMmIzNmI4MmYyZDZiLi43MTMyMWU2YmU2MDA0ODM4YzNiNjM1ZDBl
ZmRjNGMxZWY2ODkzMjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC02MzMs
NyArNjMzLDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5CiB7CiAgICAgaWYgKG1fcmVtb3Rl
RW5naW5lSWRlbnRpZmllciA9PSBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZp
ZXI6OkFWRm91bmRhdGlvbk1TRSkgewogICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBSZW1vdGVN
ZWRpYVNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7Ci0gICAgICAgIGNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpMb2FkTWVkaWFTb3VyY2UodXJs
LCBjb250ZW50VHlwZSwgaWRlbnRpZmllciksIG1faWQpOworICAgICAgICBjb25uZWN0aW9uKCku
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpMb2Fk
TWVkaWFTb3VyY2UodXJsLCBjb250ZW50VHlwZSwgaWRlbnRpZmllciksIFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKCp0aGlzKV0oYXV0byYmIGNvbmZpZ3VyYXRpb24pIHsKKyAgICAgICAgICAgIGlm
ICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9jb25maWd1cmF0aW9uID0g
V1RGTW92ZShjb25maWd1cmF0aW9uKTsKKyAgICAgICAgfSwgbV9pZCk7CiAgICAgICAgIG1fbWVk
aWFTb3VyY2VQcml2YXRlID0gTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjpjcmVhdGUobV9tYW5h
Z2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCksIGlkZW50aWZpZXIsIG1fbWFuYWdlci50eXBlQ2Fj
aGUobV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyKSwgKnRoaXMsIGNsaWVudCk7CiAKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9N
ZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDBhYzc4NzIwYmFjNGQ0
MjhkMTI0NzA0ODk4NjU5MzkzOGZmNzg1ZGEuLjUwMzIyNTJiZjUwZjE2MjQ1YjE1ZmU0ZTBmMmZj
MTkyZGU1MTg1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTEwMyw5ICsx
MDMsOSBAQCBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBNZWRpYVNvdXJjZVByaXZhdGVS
ZW1vdGU6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDbwogICAgIHJldHVybiBzdGF0dXM7CiB9CiAK
LXZvaWQgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjpkdXJhdGlvbkNoYW5nZWQoKQordm9pZCBN
ZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OmR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUm
IGR1cmF0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9ncHVQcm9jZXNzQ29u
bmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTb3VyY2VQcm94
eTo6RHVyYXRpb25DaGFuZ2VkKGR1cmF0aW9uKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBN
ZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6Om1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1
cykKQEAgLTExOCwxNCArMTE4LDIwIEBAIHZvaWQgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjp1
bm1hcmtFbmRPZlN0cmVhbSgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAorYm9vbCBNZWRp
YVNvdXJjZVByaXZhdGVSZW1vdGU6OmlzRW5kZWQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBN
ZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OnJlYWR5U3RhdGUoKSBjb25zdAogewogICAgIHJldHVy
biBtX21lZGlhUGxheWVyUHJpdmF0ZSA/IG1fbWVkaWFQbGF5ZXJQcml2YXRlLT5yZWFkeVN0YXRl
KCkgOiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmc7CiB9CiAKLXZvaWQgTWVk
aWFTb3VyY2VQcml2YXRlUmVtb3RlOjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0
YXRlKQordm9pZCBNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OnNldFJlYWR5U3RhdGUoTWVkaWFQ
bGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhU291cmNlUHJveHk6OlNldFJlYWR5U3RhdGUocmVhZHlTdGF0ZSksIG1faWRlbnRp
Zmllcik7CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjp3YWl0Rm9yU2Vla0Nv
bXBsZXRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuaAppbmRleCA3NzgzNGY3YTE5ZGNiMGI5
NGVkNTJmNjY4MDBlNjA1YzMxNTM0Nzk5Li42NGY3Mzg1YjI5MjlmOWYzMDRiNDJjOGEzNmUyYjI1
NzYyZjllOGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmgKQEAgLTU2LDkgKzU2LDEwIEBA
IHB1YmxpYzoKIAogICAgIC8vIE1lZGlhU291cmNlUHJpdmF0ZSBvdmVycmlkZXMKICAgICBBZGRT
dGF0dXMgYWRkU291cmNlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiwgUmVmUHRy
PFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU+JikgZmluYWw7Ci0gICAgdm9pZCBkdXJhdGlv
bkNoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRp
bWUmKSBmaW5hbDsKICAgICB2b2lkIG1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cykg
ZmluYWw7CiAgICAgdm9pZCB1bm1hcmtFbmRPZlN0cmVhbSgpIGZpbmFsOworICAgIGJvb2wgaXNF
bmRlZCgpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
IHJlYWR5U3RhdGUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldFJlYWR5U3RhdGUoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpIGZpbmFsOwogICAgIHZvaWQgd2FpdEZvclNlZWtD
b21wbGV0ZWQoKSBmaW5hbDsKQEAgLTc5LDYgKzgwLDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8
V2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50PiBtX2NsaWVudDsKICAgICBWZWN0b3I8
UmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU+PiBtX3NvdXJjZUJ1ZmZlcnM7CiAKKyAg
ICBNZWRpYVRpbWUgbV9kdXJhdGlvbjsKKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAg
IGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJNZWRp
YVNvdXJjZVByaXZhdGVSZW1vdGUiOyB9CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZS5jcHAKaW5kZXggNjMyZTAwZmIxNTJkMGZkNzQ2NTc2ZTM0Y2FmYmY5ZTJiNDYz
YmY3ZC4uNmVkZTQyMmE5Yzk0MzcyZjQyZDQwYTZiZjMxZGM2NWFhMzFjYjU0MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRl
UmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiUmVt
b3RlU291cmNlQnVmZmVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtVGltZVJhbmdlcy5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
IApAQCAtMTAwLDE3ICsxMDEsMTUgQEAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgU291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZTo6cmVhZHlTdGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbWVkaWFQ
bGF5ZXJQcml2YXRlID8gbV9tZWRpYVBsYXllclByaXZhdGUtPnJlYWR5U3RhdGUoKSA6IE1lZGlh
UGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZzsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlUmVtb3RlOjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKQordm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlIHN0YXRlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19CisgICAgaWYgKCFt
X21lZGlhU291cmNlUHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOwogCi12b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVSZW1vdGU6OmZsdXNoKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6U2V0UmVhZHlTdGF0ZShz
dGF0ZSksIG1fcmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcik7CiB9CiAKLXZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZTo6ZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYsIGNv
bnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6
OmZsdXNoKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KQEAgLTEyMCw5ICsxMTksMTMgQEAgYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
Ojppc1JlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c2V0QWN0
aXZlKGJvb2wpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNldEFjdGl2ZShib29s
IGFjdGl2ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV9tZWRpYVNvdXJj
ZVByaXZhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNBY3RpdmUgPSBhY3RpdmU7Cisg
ICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlU291cmNlQnVmZmVyUHJveHk6OlNldEFjdGl2ZShhY3RpdmUpLCBtX3JlbW90ZVNvdXJjZUJ1
ZmZlcklkZW50aWZpZXIpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6Om5v
dGlmeUNsaWVudFdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNr
SUQpCkBAIC0xNTEsNyArMTU0LDM2IEBAIGJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6
Y2FuU3dpdGNoVG9UeXBlKGNvbnN0IENvbnRlbnRUeXBlJikKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZURp
ZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YXRpb25TZWdtZW50SW5mbyYm
IHNlZ21lbnRJbmZvKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjp1cGRhdGVCdWZm
ZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVkKQoreworICAgIGlmICghbV9t
ZWRpYVNvdXJjZVByaXZhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclBy
b3h5OjpVcGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoc291cmNlSXNFbmRlZCksIG1fcmVt
b3RlU291cmNlQnVmZmVySWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZTo6ZXZpY3RDb2RlZEZyYW1lcyh1aW50NjRfdCBuZXdEYXRhU2l6ZSwgdWludDY0X3Qg
cGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUsIGNv
bnN0IE1lZGlhVGltZSYgY3VycmVudFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24sIGJv
b2wgaXNFbmRlZCkKK3sKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6RXZpY3RDb2RlZEZyYW1lcyhu
ZXdEYXRhU2l6ZSwgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgbWF4aW11bUJ1ZmZlclNpemUs
IGN1cnJlbnRUaW1lLCBkdXJhdGlvbiwgaXNFbmRlZCksIG1fcmVtb3RlU291cmNlQnVmZmVySWRl
bnRpZmllcik7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6YWRkVHJhY2tC
dWZmZXIoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJZCwgUmVmUHRyPE1lZGlhRGVzY3JpcHRpb24+
JiYpCit7CisgICAgQVNTRVJUKG1fdHJhY2tJZGVudGlmaWVyTWFwLmNvbnRhaW5zKHRyYWNrSWQp
KTsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6QWRkVHJhY2tCdWZmZXIobV90cmFja0lkZW50aWZp
ZXJNYXAuZ2V0KHRyYWNrSWQpKSwgbV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpyZWVucXVldWVNZWRpYUlmTmVlZGVk
KGNvbnN0IE1lZGlhVGltZSYgY3VycmVudE1lZGlhVGltZSwgdWludDY0X3QgcGVuZGluZ0FwcGVu
ZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUpCit7CisgICAgbV9ncHVQ
cm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNl
QnVmZmVyUHJveHk6OlJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQoY3VycmVudE1lZGlhVGltZSwgcGVu
ZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgbWF4aW11bUJ1ZmZlclNpemUpLCBtX3JlbW90ZVNvdXJj
ZUJ1ZmZlcklkZW50aWZpZXIpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6
OnRyeVNpZ25hbEFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoKQoreworICAgIG1fZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5OjpUcnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKCksIG1fcmVtb3RlU291
cmNlQnVmZmVySWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5p
dGlhbGl6YXRpb25TZWdtZW50SW5mbyYmIHNlZ21lbnRJbmZvLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2NsaWVudCB8fCAhbV9t
ZWRpYVBsYXllclByaXZhdGUpCiAgICAgICAgIHJldHVybjsKQEAgLTE2NCw2ICsxOTYsNyBAQCB2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNl
aXZlSW5pdGlhbGl6YXRpb25TZWdtZQogICAgICAgICBpbmZvLnRyYWNrID0gbV9tZWRpYVBsYXll
clByaXZhdGUtPmF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlKGF1ZGlvVHJhY2suaWRlbnRpZmllcik7
CiAgICAgICAgIGluZm8uZGVzY3JpcHRpb24gPSBSZW1vdGVNZWRpYURlc2NyaXB0aW9uOjpjcmVh
dGUoYXVkaW9UcmFjay5kZXNjcmlwdGlvbik7CiAgICAgICAgIHNlZ21lbnQuYXVkaW9UcmFja3Mu
YXBwZW5kKGluZm8pOworICAgICAgICBtX3RyYWNrSWRlbnRpZmllck1hcC5hZGQoaW5mby50cmFj
ay0+aWQoKSwgYXVkaW9UcmFjay5pZGVudGlmaWVyKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8m
IHZpZGVvVHJhY2sgOiBzZWdtZW50SW5mby52aWRlb1RyYWNrcykgewpAQCAtMTcxLDYgKzIwNCw3
IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZURp
ZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lCiAgICAgICAgIGluZm8udHJhY2sgPSBtX21lZGlh
UGxheWVyUHJpdmF0ZS0+dmlkZW9UcmFja1ByaXZhdGVSZW1vdGUodmlkZW9UcmFjay5pZGVudGlm
aWVyKTsKICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IFJlbW90ZU1lZGlhRGVzY3JpcHRpb246
OmNyZWF0ZSh2aWRlb1RyYWNrLmRlc2NyaXB0aW9uKTsKICAgICAgICAgc2VnbWVudC52aWRlb1Ry
YWNrcy5hcHBlbmQoaW5mbyk7CisgICAgICAgIG1fdHJhY2tJZGVudGlmaWVyTWFwLmFkZChpbmZv
LnRyYWNrLT5pZCgpLCB2aWRlb1RyYWNrLmlkZW50aWZpZXIpOwogICAgIH0KIAogICAgIGZvciAo
YXV0byYgdGV4dFRyYWNrIDogc2VnbWVudEluZm8udGV4dFRyYWNrcykgewpAQCAtMTc4LDkgKzIx
MiwxMCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJjZUJ1ZmZlclByaXZh
dGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZQogICAgICAgICBpbmZvLnRyYWNrID0gbV9t
ZWRpYVBsYXllclByaXZhdGUtPnRleHRUcmFja1ByaXZhdGVSZW1vdGUodGV4dFRyYWNrLmlkZW50
aWZpZXIpOwogICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gUmVtb3RlTWVkaWFEZXNjcmlwdGlv
bjo6Y3JlYXRlKHRleHRUcmFjay5kZXNjcmlwdGlvbik7CiAgICAgICAgIHNlZ21lbnQudGV4dFRy
YWNrcy5hcHBlbmQoaW5mbyk7CisgICAgICAgIG1fdHJhY2tJZGVudGlmaWVyTWFwLmFkZChpbmZv
LnRyYWNrLT5pZCgpLCB0ZXh0VHJhY2suaWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgbV9jbGll
bnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KFdU
Rk1vdmUoc2VnbWVudCkpOworICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVj
ZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291
cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6
OkFwcGVuZFJlc3VsdCBhcHBlbmRSZXN1bHQpCkBAIC0xODksNiArMjI0LDMwIEBAIHZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRl
KFNvdXJjZUJ1ZmZlclByCiAgICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlQXBw
ZW5kQ29tcGxldGUoYXBwZW5kUmVzdWx0KTsKIH0KIAordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
UmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGlt
ZSYgZHVyYXRpb24pCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c291
cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChkdXJhdGlvbik7Cit9CisKK3ZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxl
KGRvdWJsZSBzYW1wbGVEdXJhdGlvbikKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1f
Y2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoc2FtcGxlRHVyYXRpb24p
OworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJjZUJ1ZmZlclByaXZh
dGVCdWZmZXJlZERpcnR5Q2hhbmdlZChib29sIGRpcnR5KQoreworICAgIGlmIChtX2NsaWVudCkK
KyAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdl
ZChkaXJ0eSk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVm
ZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybVRp
bWVSYW5nZXMmIHRpbWVSYW5nZXMpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2Ns
aWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZCh0aW1lUmFuZ2Vz
KTsKK30KKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogV1RGTG9nQ2hhbm5lbCYgU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZTo6bG9nQ2hhbm5lbCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZS5oCmluZGV4IDRkMGUwMzA5YWQ1OWQ2OTRmMTNiYzE0YzQ3Y2JiYTRhZjJmN2E4
NjIuLjc2MmY2M2JmN2QyYjc5YmZlZWJmZTJhY2VhODIzMzE3NDUxOTAwNDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJl
bW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiR1BVUHJvY2Vz
c0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJS
ZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiVHJhY2tQcml2YXRlUmVt
b3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFR5cGUuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL01lZGlhU2FtcGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VyY2VCdWZm
ZXJQcml2YXRlLmg+CkBAIC00Niw2ICs0NywxMCBAQCBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3Mg
RGVjb2RlcjsKIH0KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUGxhdGZvcm1UaW1lUmFu
Z2VzOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IEluaXRpYWxpemF0aW9uU2Vn
bWVudEluZm87CkBAIC03NCwyNSArNzksNDAgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBz
ZXRSZWFkeVN0YXRlKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKSBmaW5hbDsKICAg
ICB2b2lkIGZsdXNoKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpIGZpbmFsOwotICAgIHZvaWQg
ZW5xdWV1ZVNhbXBsZShSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYsIGNvbnN0IEF0b21TdHJp
bmcmIHRyYWNrSUQpIGZpbmFsOwogICAgIGJvb2wgaXNSZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0
IEF0b21TdHJpbmcmIHRyYWNrSUQpIGZpbmFsOwogICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wpIGZp
bmFsOworICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWN0aXZl
OyB9CiAgICAgdm9pZCBub3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBB
dG9tU3RyaW5nJiB0cmFja0lEKSBmaW5hbDsKICAgICBib29sIGNhblNldE1pbmltdW1VcGNvbWlu
Z1ByZXNlbnRhdGlvblRpbWUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0IGZpbmFsOwogICAgIHZv
aWQgc2V0TWluaW11bVVwY29taW5nUHJlc2VudGF0aW9uVGltZShjb25zdCBBdG9tU3RyaW5nJiwg
Y29uc3QgTWVkaWFUaW1lJikgZmluYWw7CiAgICAgdm9pZCBjbGVhck1pbmltdW1VcGNvbWluZ1By
ZXNlbnRhdGlvblRpbWUoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogICAgIGJvb2wgY2FuU3dp
dGNoVG9UeXBlKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJikgZmluYWw7CisgICAgdm9pZCB1
cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVkKSBmaW5hbDsK
KyAgICB2b2lkIGV2aWN0Q29kZWRGcmFtZXModWludDY0X3QgbmV3RGF0YVNpemUsIHVpbnQ2NF90
IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplLCBj
b25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uLCBi
b29sIGlzRW5kZWQpIGZpbmFsOworICAgIHZvaWQgYWRkVHJhY2tCdWZmZXIoY29uc3QgQXRvbVN0
cmluZyYgdHJhY2tJZCwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhRGVzY3JpcHRpb24+JiYpIGZpbmFs
OworICAgIHZvaWQgcmVlbnF1ZXVlTWVkaWFJZk5lZWRlZChjb25zdCBNZWRpYVRpbWUmIGN1cnJl
bnRNZWRpYVRpbWUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90
IG1heGltdW1CdWZmZXJTaXplKSBmaW5hbDsKKyAgICB2b2lkIHRyeVNpZ25hbEFsbFNhbXBsZXNJ
blRyYWNrRW5xdWV1ZWQoKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBD
OjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0KLSAgICB2b2lkIHNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemF0aW9u
U2VnbWVudEluZm8mJik7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUlu
aXRpYWxpemF0aW9uU2VnbWVudChJbml0aWFsaXphdGlvblNlZ21lbnRJbmZvJiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlU3RyZWFt
RW5kZWRXaXRoRGVjb2RlRXJyb3IoKTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBl
bmRFcnJvcihib29sIGRlY29kZUVycm9yKTsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVB
cHBlbmRDb21wbGV0ZShXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRS
ZXN1bHQpOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25z
dCBNZWRpYVRpbWUmKTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBs
ZShkb3VibGUgc2FtcGxlRHVyYXRpb24pOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURp
ZERyb3BTYW1wbGUoKTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVu
ZGVyaW5nRXJyb3IoaW50IGVycm9yQ29kZSk7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRl
QnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCBkaXJ0eSk7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQ
cml2YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtVGltZVJh
bmdlcyYpOwogCiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rp
b247CiAgICAgUmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllciBtX3JlbW90ZVNvdXJjZUJ1ZmZl
cklkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU+IG1fbWVk
aWFTb3VyY2VQcml2YXRlOwogICAgIFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlPiBt
X21lZGlhUGxheWVyUHJpdmF0ZTsKLSAgICBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKKworICAgIEhhc2hNYXA8QXRvbVN0cmluZywgVHJh
Y2tQcml2YXRlUmVtb3RlSWRlbnRpZmllcj4gbV90cmFja0lkZW50aWZpZXJNYXA7CisKKyAgICBi
b29sIG1faXNBY3RpdmUgeyBmYWxzZSB9OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAg
ICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlci5n
ZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9T
b3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCmlu
ZGV4IDQwNjQyZjYwMzZlZjdlMTFlMjNiODBmNWE0NTFkNzZmM2VkMjhjNGUuLjZjOGNjYTBmZTg5
N2M1OTllYzRjZWI4YTJiZWE1YTlhYWJmNDY4NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KQEAgLTI2LDggKzI2LDEyIEBACiAjaWYgRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCiBtZXNzYWdlcyAtPiBTb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlIE5vdFJlZkNvdW50ZWQgewotICAgIFNvdXJjZUJ1ZmZlclByaXZh
dGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KHN0cnVjdCBXZWJLaXQ6OkluaXRpYWxp
emF0aW9uU2VnbWVudEluZm8gc2VnbWVudENvbmZpZ3VyYXRpb24pCisgICAgU291cmNlQnVmZmVy
UHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoc3RydWN0IFdlYktpdDo6SW5p
dGlhbGl6YXRpb25TZWdtZW50SW5mbyBzZWdtZW50Q29uZmlndXJhdGlvbikgLT4gKCkgQXN5bmMK
ICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0IGFwcGVuZFJlc3VsdCkKKyAgICBTb3VyY2VC
dWZmZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKE1lZGlhVGltZSBkdXJhdGlvbikKKyAgICBTb3Vy
Y2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoZG91YmxlIHNhbXBsZUR1cmF0aW9uKQorICAg
IFNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZChib29sIGRpcnR5KQorICAg
IFNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQoV2ViQ29yZTo6UGxhdGZv
cm1UaW1lUmFuZ2VzIHRpbWVSYW5nZXMpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90
ZS5jcHAKaW5kZXggNzMyMjNiODY4NDIxM2EwYmQ4ZjcxMjgyYThlOGRlYTYxNTk5NWVjMC4uMmI1
NmZlZDIzZGVjMzU4NTlhYjg1N2U2ZjZkZmZkNzk4ZTFhYWUxMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVS
ZW1vdGUuY3BwCkBAIC01Niw5ICs1Niw5IEBAIHZvaWQgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6
c2V0TW9kZShUZXh0VHJhY2tNb2RlIG1vZGUpCiAKIHZvaWQgVGV4dFRyYWNrUHJpdmF0ZVJlbW90
ZTo6dXBkYXRlQ29uZmlndXJhdGlvbihUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlv
biYmIGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgaWYgKGNvbmZpZ3VyYXRpb24uaWRlbnRpZmllciAh
PSBtX2lkKSB7CisgICAgaWYgKGNvbmZpZ3VyYXRpb24udHJhY2tJZCAhPSBtX2lkKSB7CiAgICAg
ICAgIGF1dG8gY2hhbmdlZCA9ICFtX2lkLmlzRW1wdHkoKTsKLSAgICAgICAgbV9pZCA9IGNvbmZp
Z3VyYXRpb24uaWRlbnRpZmllcjsKKyAgICAgICAgbV9pZCA9IGNvbmZpZ3VyYXRpb24udHJhY2tJ
ZDsKICAgICAgICAgaWYgKGNoYW5nZWQgJiYgY2xpZW50KCkpCiAgICAgICAgICAgICBjbGllbnQo
KS0+aWRDaGFuZ2VkKG1faWQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvVmlkZW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9WaWRlb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKaW5k
ZXggYWM2ZWEwMTQyNzFjMzMxMjZjZDc1MmIzZmZkM2I3ODU0MzlkZTY1Ny4uMzVlOGU3ZDgzOWM3
MjgwMWY2YTk2ZmJlZDI3MjA2NGQ0ZmQ2NmYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9WaWRlb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9WaWRlb1RyYWNrUHJpdmF0ZVJlbW90ZS5j
cHAKQEAgLTUyLDkgKzUyLDkgQEAgdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZVJlbW90ZTo6c2V0U2Vs
ZWN0ZWQoYm9vbCBzZWxlY3RlZCkKIAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZVJlbW90ZTo6dXBk
YXRlQ29uZmlndXJhdGlvbihUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uJiYgY29uZmln
dXJhdGlvbikKIHsKLSAgICBpZiAoY29uZmlndXJhdGlvbi5pZGVudGlmaWVyICE9IG1faWQpIHsK
KyAgICBpZiAoY29uZmlndXJhdGlvbi50cmFja0lkICE9IG1faWQpIHsKICAgICAgICAgYXV0byBj
aGFuZ2VkID0gIW1faWQuaXNFbXB0eSgpOwotICAgICAgICBtX2lkID0gY29uZmlndXJhdGlvbi5p
ZGVudGlmaWVyOworICAgICAgICBtX2lkID0gY29uZmlndXJhdGlvbi50cmFja0lkOwogICAgICAg
ICBpZiAoY2hhbmdlZCAmJiBjbGllbnQoKSkKICAgICAgICAgICAgIGNsaWVudCgpLT5pZENoYW5n
ZWQobV9pZCk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415512</attachid>
            <date>2020-12-05 23:24:43 -0800</date>
            <delta_ts>2020-12-06 13:17:26 -0800</delta_ts>
            <desc>WIP - fix build failures on GTK/WPE and layout test failures</desc>
            <filename>bug-219402-20201205232443.patch</filename>
            <type>text/plain</type>
            <size>121892</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RlYmRkNjNmYjkxNzM2
MTE4MDVlOWY1NDI4Zjk0YmExMWJiMWNlNy4uYTFhZWFkM2QzY2NlNmQ3ZWY3NzNlY2EzYjZkNTIz
NTYzMDVkZDEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwMSBAQAorMjAyMC0xMi0wNCAgUGVu
ZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUgUHJv
Y2Vzc11bTVNFXSBJbXBsZW1lbnQgYmFzaWMgdmlkZW8gcGxheWJhY2sKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0UHJpdmF0
ZUFuZE9wZW4pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnNldER1cmF0aW9uSW50
ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVy
cm9yKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OlNvdXJjZUJ1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXI6On5Tb3VyY2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXI6Om1heGltdW1CdWZmZXJTaXplIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFs
aXphdGlvblNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpleHRyYU1l
bW9yeUNvc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpyZXBvcnRF
eHRyYU1lbW9yeUFsbG9jYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNl
dE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdl
c0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjppc0J1ZmZlcmVkRGly
dHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzZXRCdWZmZXJlZERp
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0
ZUhhc0F1ZGlvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
cjo6c291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAg
KiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL01lZGlhU291cmNlUHJpdmF0ZS5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
b3VyY2VQcml2YXRlOjpzZXRUaW1lRnVkZ2VGYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTb3VyY2VQcml2YXRlOjp0aW1lRnVkZ2VGYWN0b3IgY29uc3QpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0QnVmZmVyZWREaXJ0eSk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQcml2YXRlOjpzZXRCdWZmZXJlZFJhbmdlcyk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjp1cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kQ29tcGxldGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmJ1ZmZlcmVkU2FtcGxl
c0ZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6cHJv
dmlkZU1lZGlhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjpy
ZWVucXVldWVNZWRpYUZvclRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJp
dmF0ZTo6cmVlbnF1ZXVlTWVkaWFJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVT
YW1wbGVzRnJvbVRyYWNrQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGU6OmV2aWN0Q29kZWRGcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UHJpdmF0ZTo6dG90YWxUcmFja0J1ZmZlclNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmFkZFRyYWNrQnVmZmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZVNh
bXBsZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6aGFzQXVkaW8gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6aGFzVmlkZW8gY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6c3RhcnRDaGFuZ2luZ1R5
cGUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0TWF4aW11bVF1
ZXVlRGVwdGhGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGU6OnRpbWVGdWRnZUZhY3RvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlOjpzZXRBY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZTo6c2V0Q3VycmVudFRpbWVGdWRnZUZhY3Rvcik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjpidWZmZXJlZCBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjppc0J1ZmZlcmVkRGly
dHkgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZTo6c2V0QnVmZmVyZWREaXJ0eSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL1ZpZGVvVHJhY2tQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMubW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpkdXJh
dGlvbkNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpmbHVzaFBlbmRpbmdN
ZWRpYURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6
cmVzZXRQYXJzZXJTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDOjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNl
ckFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW06CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBh
cnNlSW5pdGlhbGl6YXRpb25EYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjphcHBlbmRDb21wbGV0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRpbWVGdWRnZUZhY3RvciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6aGFzVmlkZW8gY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc0F1
ZGlvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OmFwcGVuZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6Zmx1c2hQZW5kaW5nTWVkaWFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclBhcnNlcldlYk06OnJlc2V0UGFyc2VyU3RhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6aW52YWxpZGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkNsdXN0ZXJCZWdpbik6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkZyYW1lKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg6CisgICAgICAgICogcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OmR1cmF0aW9uQ2hhbmdlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRl
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVy
UHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6
YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRS
ZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlOjpzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQpOgorICAgICAg
ICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6Omhhc1ZpZGVvIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpoYXNBdWRp
byBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oOgorCiAyMDIwLTEyLTA0ICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkgYXVkaW8gcmVzYW1wbGluZyBjb2Rl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCmluZGV4IDMzN2E1NDQwZTIxNzZhOWRlNTYyZDJiNTQ3OGQ3OWMxNDA4NDk4ZjEuLjZh
MDU1YTliMzM5ZGM0NTFiMGRiYjU2MjYyYWFjOWIwMzc3NDgzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsODcgQEAKKzIwMjAtMTItMDQgIFBlbmcgTGl1ICA8cGVuZy5saXU2QGFwcGxlLmNvbT4KKwor
ICAgICAgICBbTWVkaWEgaW4gR1BVIFByb2Nlc3NdW01TRV0gSW1wbGVtZW50IGJhc2ljIHZpZGVv
IHBsYXliYWNrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTk0MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlQXVkaW9UcmFja1Byb3h5Ojpjb25maWd1cmF0aW9uKToKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpsb2FkTWVkaWFTb3VyY2UpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllclByb3h5Ojp1cGRhdGVDYWNoZWRTdGF0ZSk6Cisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lmg6CisgICAg
ICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmlu
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNlUHJveHk6OmR1cmF0aW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6YnVmZmVyZWQgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpkdXJhdGlvbkNo
YW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpzZXRSZWFk
eVN0YXRlKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJv
eHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHku
bWVzc2FnZXMuaW46CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpS
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5Ojp+UmVtb3RlU291cmNlQnVmZmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0
aWFsaXphdGlvblNlZ21lbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VT
YW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNl
QnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291
cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJy
b3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVm
ZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
U291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5n
ZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c2V0QWN0aXZl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNldFJlYWR5U3Rh
dGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6dXBkYXRlQnVm
ZmVyZWRGcm9tVHJhY2tCdWZmZXJzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVm
ZmVyUHJveHk6OmV2aWN0Q29kZWRGcmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eTo6YWRkVHJhY2tCdWZmZXIpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVT
b3VyY2VCdWZmZXJQcm94eTo6cmVlbnF1ZXVlTWVkaWFJZk5lZWRlZCk6CisgICAgICAgIChXZWJL
aXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojp0cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0Vu
cXVldWVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJj
ZUJ1ZmZlclByaXZhdGVIYXNBdWRpbyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlSGFzVmlkZW8gY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVm
ZmVyUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4
dFRyYWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJhY2tQcm94eTo6
Y29uZmlndXJhdGlvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb1Ry
YWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb1RyYWNrUHJveHk6OmNv
bmZpZ3VyYXRpb24pOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0
ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6VGV4dFRyYWNrUHJpdmF0
ZVJlbW90ZUNvbmZpZ3VyYXRpb246OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlRl
eHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uOjpkZWNvZGUpOgorICAgICAgICAqIEdQ
VVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oOgorICAgICAg
ICAoV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uOjpkZWNv
ZGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVt
b3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXVkaW9UcmFja1ByaXZhdGVSZW1vdGU6OnVwZGF0
ZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJh
Y2tQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlOjpsb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVNv
dXJjZVByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZh
dGVSZW1vdGU6OmR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNl
UHJpdmF0ZVJlbW90ZTo6aXNFbmRlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291
cmNlUHJpdmF0ZVJlbW90ZTo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAo
V2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpmbHVzaCk6CisgICAgICAgIChXZWJL
aXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNldEFjdGl2ZSk6CisgICAgICAgIChXZWJL
aXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVm
ZmVycyk6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmV2aWN0
Q29kZWRGcmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
OjphZGRUcmFja0J1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGU6OnJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlOjp0cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKToK
KyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVy
UHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQpOgorICAgICAgICAoV2ViS2l0
OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25D
aGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291
cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6U291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFu
Z2VkKToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNl
QnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlNv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmVucXVldWVTYW1wbGUpOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaDoKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZh
dGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjp1
cGRhdGVDb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9WaWRl
b1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvVHJhY2tQcml2
YXRlUmVtb3RlOjp1cGRhdGVDb25maWd1cmF0aW9uKToKKwogMjAyMC0xMi0wNCAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBDYW5jZWwgaW1h
Z2UgZXh0cmFjdGlvbiB3aGVuIG5hdmlnYXRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKaW5kZXggZmVlNTQ3MzlkNTVmMGUxZDVh
MTZiNWFjOWIxNGIyYzBhYjcyZjg5MS4uYWRmN2IxOTVhYmJiMDNjMDEwZjIwODI3ZWUwYWNkZmZm
ZTA0YTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5jcHAKQEAgLTEyNCw2ICsxMjQsNyBAQCB2b2lkIE1lZGlhU291cmNlOjpzZXRQ
cml2YXRlQW5kT3BlbihSZWY8TWVkaWFTb3VyY2VQcml2YXRlPiYmIG1lZGlhU291cmNlUHJpdmF0
ZQogICAgIEFTU0VSVCghbV9wcml2YXRlKTsKICAgICBBU1NFUlQobV9tZWRpYUVsZW1lbnQpOwog
ICAgIG1fcHJpdmF0ZSA9IFdURk1vdmUobWVkaWFTb3VyY2VQcml2YXRlKTsKKyAgICBtX3ByaXZh
dGUtPnNldFRpbWVGdWRnZUZhY3RvcihjdXJyZW50VGltZUZ1ZGdlRmFjdG9yKCkpOwogCiAgICAg
Ly8gMi40LjEgQXR0YWNoaW5nIHRvIGEgbWVkaWEgZWxlbWVudAogICAgIC8vIGh0dHBzOi8vcmF3
Z2l0LmNvbS93M2MvbWVkaWEtc291cmNlLzQ1NjI3NjQ2MzQ0ZWVhMDE3MGRkMWNiYzVhM2Q1MDhj
YTc1MWFiYjgvbWVkaWEtc291cmNlLXJlc3BlYy5odG1sI21lZGlhc291cmNlLWF0dGFjaApAQCAt
NTU2LDcgKzU1Nyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhU291cmNlOjpzZXREdXJhdGlv
bkludGVybmFsKGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24pCiAgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSLCBkdXJhdGlvbik7CiAKICAgICAvLyA2LiBVcGRhdGUgdGhlIG1lZGlhIGR1cmF0
aW9uIHRvIG5ldyBkdXJhdGlvbiBhbmQgcnVuIHRoZSBIVE1MTWVkaWFFbGVtZW50IGR1cmF0aW9u
IGNoYW5nZSBhbGdvcml0aG0uCi0gICAgbV9wcml2YXRlLT5kdXJhdGlvbkNoYW5nZWQoKTsKKyAg
ICBtX3ByaXZhdGUtPmR1cmF0aW9uQ2hhbmdlZChkdXJhdGlvbik7CiAKICAgICByZXR1cm4geyB9
OwogfQpAQCAtNjI4LDYgKzYyOSw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0
aEVycm9yKE9wdGlvbmFsPEVuZE9mU3RyZWFtRXJyb3I+IGVycm9yKQogICAgICAgICAgICAgc291
cmNlQnVmZmVyLT50cnlTaWduYWxBbGxTYW1wbGVzRW5xdWV1ZWQoKTsKICAgICAgICAgbV9wcml2
YXRlLT5tYXJrRW5kT2ZTdHJlYW0oTWVkaWFTb3VyY2VQcml2YXRlOjpFb3NOb0Vycm9yKTsKICAg
ICB9IGVsc2UgaWYgKGVycm9yID09IEVuZE9mU3RyZWFtRXJyb3I6Ok5ldHdvcmspIHsKKyAgICAg
ICAgbV9wcml2YXRlLT5tYXJrRW5kT2ZTdHJlYW0oTWVkaWFTb3VyY2VQcml2YXRlOjpFb3NOZXR3
b3JrRXJyb3IpOwogICAgICAgICAvLyDihrMgSWYgZXJyb3IgaXMgc2V0IHRvICJuZXR3b3JrIgog
ICAgICAgICBBU1NFUlQobV9tZWRpYUVsZW1lbnQpOwogICAgICAgICBpZiAobV9tZWRpYUVsZW1l
bnQtPnJlYWR5U3RhdGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50OjpIQVZFX05PVEhJTkcpIHsKQEAg
LTY0Niw2ICs2NDgsOCBAQCB2b2lkIE1lZGlhU291cmNlOjpzdHJlYW1FbmRlZFdpdGhFcnJvcihP
cHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPiBlcnJvcikKICAgICB9IGVsc2UgewogICAgICAgICAv
LyDihrMgSWYgZXJyb3IgaXMgc2V0IHRvICJkZWNvZGUiCiAgICAgICAgIEFTU0VSVChlcnJvciA9
PSBFbmRPZlN0cmVhbUVycm9yOjpEZWNvZGUpOworICAgICAgICBtX3ByaXZhdGUtPm1hcmtFbmRP
ZlN0cmVhbShNZWRpYVNvdXJjZVByaXZhdGU6OkVvc0RlY29kZUVycm9yKTsKKwogICAgICAgICBB
U1NFUlQobV9tZWRpYUVsZW1lbnQpOwogICAgICAgICBpZiAobV9tZWRpYUVsZW1lbnQtPnJlYWR5
U3RhdGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50OjpIQVZFX05PVEhJTkcpIHsKICAgICAgICAgICAg
IC8vICDihrMgSWYgdGhlIEhUTUxNZWRpYUVsZW1lbnQucmVhZHlTdGF0ZSBhdHRyaWJ1dGUgZXF1
YWxzIEhBVkVfTk9USElORwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IGNkZTE4M2Y4OTI3NDdkMzJhZGE4MmU3ZDVlMmI5
YjQzZWM1M2JkZmUuLjNkM2E2MTkyMTQ3NmFkMjY2ZDI1ZmI5MjdiNDRhYzk4Mjg0MGVlYWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZl
ci5jcHAKQEAgLTgxLDYgKzgxLDcgQEAgU291cmNlQnVmZmVyOjpTb3VyY2VCdWZmZXIoUmVmPFNv
dXJjZUJ1ZmZlclByaXZhdGU+JiYgc291cmNlQnVmZmVyUHJpdmF0ZSwgTWVkaWEKICAgICAsIG1f
YXBwZW5kV2luZG93RW5kKE1lZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSkKICAgICAs
IG1fYXBwZW5kU3RhdGUoV2FpdGluZ0ZvclNlZ21lbnQpCiAgICAgLCBtX3RpbWVPZkJ1ZmZlcmlu
Z01vbml0b3IoTW9ub3RvbmljVGltZTo6bm93KCkpCisgICAgLCBtX2J1ZmZlcmVkKFRpbWVSYW5n
ZXM6OmNyZWF0ZSgpKQogICAgICwgbV9wZW5kaW5nUmVtb3ZlU3RhcnQoTWVkaWFUaW1lOjppbnZh
bGlkVGltZSgpKQogICAgICwgbV9wZW5kaW5nUmVtb3ZlRW5kKE1lZGlhVGltZTo6aW52YWxpZFRp
bWUoKSkKICAgICAsIG1fcmVtb3ZlVGltZXIoKnRoaXMsICZTb3VyY2VCdWZmZXI6OnJlbW92ZVRp
bWVyRmlyZWQpCkBAIC05NCw3ICs5NSw2IEBAIFNvdXJjZUJ1ZmZlcjo6U291cmNlQnVmZmVyKFJl
ZjxTb3VyY2VCdWZmZXJQcml2YXRlPiYmIHNvdXJjZUJ1ZmZlclByaXZhdGUsIE1lZGlhCiAKICAg
ICBtX3ByaXZhdGUtPnNldENsaWVudCh0aGlzKTsKICAgICBtX3ByaXZhdGUtPnNldElzQXR0YWNo
ZWQodHJ1ZSk7Ci0gICAgbV9wcml2YXRlLT5zZXRDdXJyZW50VGltZUZ1ZGdlRmFjdG9yKG1fc291
cmNlLT5jdXJyZW50VGltZUZ1ZGdlRmFjdG9yKCkpOwogfQogCiBTb3VyY2VCdWZmZXI6On5Tb3Vy
Y2VCdWZmZXIoKQpAQCAtMTAyLDggKzEwMiw4IEBAIFNvdXJjZUJ1ZmZlcjo6flNvdXJjZUJ1ZmZl
cigpCiAgICAgQVNTRVJUKGlzUmVtb3ZlZCgpKTsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJ
RVIpOwogCi0gICAgbV9wcml2YXRlLT5zZXRDbGllbnQobnVsbHB0cik7CiAgICAgbV9wcml2YXRl
LT5zZXRJc0F0dGFjaGVkKGZhbHNlKTsKKyAgICBtX3ByaXZhdGUtPnNldENsaWVudChudWxscHRy
KTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPFRpbWVSYW5nZXM+PiBTb3VyY2VCdWZmZXI6OmJ1ZmZl
cmVkKCkgY29uc3QKQEAgLTExNiw3ICsxMTYsNyBAQCBFeGNlcHRpb25PcjxSZWY8VGltZVJhbmdl
cz4+IFNvdXJjZUJ1ZmZlcjo6YnVmZmVyZWQoKSBjb25zdAogICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIAogICAgIC8vIDIuIFJldHVybiBhIG5ldyBzdGF0
aWMgbm9ybWFsaXplZCBUaW1lUmFuZ2VzIG9iamVjdCBmb3IgdGhlIG1lZGlhIHNlZ21lbnRzIGJ1
ZmZlcmVkLgotICAgIHJldHVybiBtX3ByaXZhdGUtPmJ1ZmZlcmVkKCktPmNvcHkoKTsKKyAgICBy
ZXR1cm4gbV9idWZmZXJlZC0+Y29weSgpOwogfQogCiBkb3VibGUgU291cmNlQnVmZmVyOjp0aW1l
c3RhbXBPZmZzZXQoKSBjb25zdApAQCAtNTUyLDEwICs1NTIsNiBAQCB2b2lkIFNvdXJjZUJ1ZmZl
cjo6c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKEFwcGVuZFJlc3VsdCByZXN1bHQp
CiAgICAgaWYgKGlzUmVtb3ZlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBSZXNvbHZl
IHRoZSBjaGFuZ2VzIGl0IFRyYWNrQnVmZmVycycgYnVmZmVyZWQgcmFuZ2VzCi0gICAgLy8gaW50
byB0aGUgU291cmNlQnVmZmVyJ3MgYnVmZmVyZWQgcmFuZ2VzCi0gICAgbV9wcml2YXRlLT51cGRh
dGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMobV9zb3VyY2UtPmlzRW5kZWQoKSk7Ci0KICAgICAv
LyBTZWN0aW9uIDMuNS41IEJ1ZmZlciBBcHBlbmQgQWxnb3JpdGhtLCBjdGQuCiAgICAgLy8gaHR0
cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlhL3Jhdy1maWxlL2RlZmF1bHQvbWVkaWEtc291
cmNlL21lZGlhLXNvdXJjZS5odG1sI3NvdXJjZWJ1ZmZlci1idWZmZXItYXBwZW5kCiAKQEAgLTYz
NCw3ICs2MzAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6cmVtb3ZlVGltZXJGaXJlZCgpCiAgICAg
c2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkudXBkYXRlZW5kRXZlbnQpOwogfQogCi1zaXplX3Qg
U291cmNlQnVmZmVyOjptYXhpbXVtQnVmZmVyU2l6ZSgpIGNvbnN0Cit1aW50NjRfdCBTb3VyY2VC
dWZmZXI6Om1heGltdW1CdWZmZXJTaXplKCkgY29uc3QKIHsKICAgICBpZiAoaXNSZW1vdmVkKCkp
CiAgICAgICAgIHJldHVybiAwOwpAQCAtNjc4LDEwICs2NzQsMTIgQEAgdm9pZCBTb3VyY2VCdWZm
ZXI6OnNldEFjdGl2ZShib29sIGFjdGl2ZSkKICAgICAgICAgbV9zb3VyY2UtPnNvdXJjZUJ1ZmZl
ckRpZENoYW5nZUFjdGl2ZVN0YXRlKCp0aGlzLCBhY3RpdmUpOwogfQogCi12b2lkIFNvdXJjZUJ1
ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQo
Y29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50JiBzZWdtZW50KQordm9pZCBTb3VyY2VCdWZmZXI6
OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRp
YWxpemF0aW9uU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAoaXNSZW1vdmVkKCkpCisgICAgaWYgKGlzUmVt
b3ZlZCgpKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsK
KyAgICB9CiAKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogCkBAIC03MDQsNiArNzAy
LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5p
dGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXQKICAgICAvLyB3aXRoIHRoZSBkZWNvZGUgZXJy
b3IgcGFyYW1ldGVyIHNldCB0byB0cnVlIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICBpZiAo
c2VnbWVudC5hdWRpb1RyYWNrcy5pc0VtcHR5KCkgJiYgc2VnbWVudC52aWRlb1RyYWNrcy5pc0Vt
cHR5KCkgJiYgc2VnbWVudC50ZXh0VHJhY2tzLmlzRW1wdHkoKSkgewogICAgICAgICBhcHBlbmRF
cnJvcih0cnVlKTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtNzEzLDYgKzcxMiw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VC
dWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0CiAg
ICAgICAgIC8vIHdpdGggdGhlIGRlY29kZSBlcnJvciBwYXJhbWV0ZXIgc2V0IHRvIHRydWUgYW5k
IGFib3J0IHRoZXNlIHN0ZXBzLgogICAgICAgICBpZiAoIXZhbGlkYXRlSW5pdGlhbGl6YXRpb25T
ZWdtZW50KHNlZ21lbnQpKSB7CiAgICAgICAgICAgICBhcHBlbmRFcnJvcih0cnVlKTsKKyAgICAg
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApAQCAtODE1LDEwICs4MTUsMTAgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXQKICAgICAg
ICAgICAgIC8vIHJlZmVyZW5jZWQgYnkgdGhlIGF1ZGlvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUg
SFRNTE1lZGlhRWxlbWVudC4KICAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+
ZW5zdXJlQXVkaW9UcmFja3MoKS5hcHBlbmQobmV3QXVkaW9UcmFjay5jb3B5UmVmKCkpOwogCi0g
ICAgICAgICAgICAvLyA1LjIuOCBDcmVhdGUgYSBuZXcgdHJhY2sgYnVmZmVyIHRvIHN0b3JlIGNv
ZGVkIGZyYW1lcyBmb3IgdGhpcyB0cmFjay4KLSAgICAgICAgICAgIG1fcHJpdmF0ZS0+YWRkVHJh
Y2tCdWZmZXIobmV3QXVkaW9UcmFjay0+aWQoKSwgYXVkaW9UcmFja0luZm8uZGVzY3JpcHRpb24p
OwotCiAgICAgICAgICAgICBtX2F1ZGlvQ29kZWNzLmFwcGVuZChhdWRpb1RyYWNrSW5mby5kZXNj
cmlwdGlvbi0+Y29kZWMoKSk7CisKKyAgICAgICAgICAgIC8vIDUuMi44IENyZWF0ZSBhIG5ldyB0
cmFjayBidWZmZXIgdG8gc3RvcmUgY29kZWQgZnJhbWVzIGZvciB0aGlzIHRyYWNrLgorICAgICAg
ICAgICAgbV9wcml2YXRlLT5hZGRUcmFja0J1ZmZlcihuZXdBdWRpb1RyYWNrLT5pZCgpLCBXVEZN
b3ZlKGF1ZGlvVHJhY2tJbmZvLmRlc2NyaXB0aW9uKSk7CiAgICAgICAgIH0KIAogICAgICAgICAv
LyA1LjMgRm9yIGVhY2ggdmlkZW8gdHJhY2sgaW4gdGhlIGluaXRpYWxpemF0aW9uIHNlZ21lbnQs
IHJ1biBmb2xsb3dpbmcgc3RlcHM6CkBAIC04NTAsMTAgKzg1MCwxMCBAQCB2b2lkIFNvdXJjZUJ1
ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQo
Y29uc3QgSW5pdAogICAgICAgICAgICAgLy8gcmVmZXJlbmNlZCBieSB0aGUgdmlkZW9UcmFja3Mg
YXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50LgogICAgICAgICAgICAgbV9zb3VyY2Ut
Pm1lZGlhRWxlbWVudCgpLT5lbnN1cmVWaWRlb1RyYWNrcygpLmFwcGVuZChuZXdWaWRlb1RyYWNr
LmNvcHlSZWYoKSk7CiAKLSAgICAgICAgICAgIC8vIDUuMy44IENyZWF0ZSBhIG5ldyB0cmFjayBi
dWZmZXIgdG8gc3RvcmUgY29kZWQgZnJhbWVzIGZvciB0aGlzIHRyYWNrLgotICAgICAgICAgICAg
bV9wcml2YXRlLT5hZGRUcmFja0J1ZmZlcihuZXdWaWRlb1RyYWNrLT5pZCgpLCB2aWRlb1RyYWNr
SW5mby5kZXNjcmlwdGlvbik7Ci0KICAgICAgICAgICAgIG1fdmlkZW9Db2RlY3MuYXBwZW5kKHZp
ZGVvVHJhY2tJbmZvLmRlc2NyaXB0aW9uLT5jb2RlYygpKTsKKworICAgICAgICAgICAgLy8gNS4z
LjggQ3JlYXRlIGEgbmV3IHRyYWNrIGJ1ZmZlciB0byBzdG9yZSBjb2RlZCBmcmFtZXMgZm9yIHRo
aXMgdHJhY2suCisgICAgICAgICAgICBtX3ByaXZhdGUtPmFkZFRyYWNrQnVmZmVyKG5ld1ZpZGVv
VHJhY2stPmlkKCksIFdURk1vdmUodmlkZW9UcmFja0luZm8uZGVzY3JpcHRpb24pKTsKICAgICAg
ICAgfQogCiAgICAgICAgIC8vIDUuNCBGb3IgZWFjaCB0ZXh0IHRyYWNrIGluIHRoZSBpbml0aWFs
aXphdGlvbiBzZWdtZW50LCBydW4gZm9sbG93aW5nIHN0ZXBzOgpAQCAtODgyLDEwICs4ODIsMTAg
QEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlh
bGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXQKICAgICAgICAgICAgIC8vIHJlZmVyZW5jZWQgYnkg
dGhlIHRleHRUcmFja3MgYXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50LgogICAgICAg
ICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT5lbnN1cmVUZXh0VHJhY2tzKCkuYXBwZW5k
KG5ld1RleHRUcmFjay5jb3B5UmVmKCkpOwogCi0gICAgICAgICAgICAvLyA1LjQuNyBDcmVhdGUg
YSBuZXcgdHJhY2sgYnVmZmVyIHRvIHN0b3JlIGNvZGVkIGZyYW1lcyBmb3IgdGhpcyB0cmFjay4K
LSAgICAgICAgICAgIG1fcHJpdmF0ZS0+YWRkVHJhY2tCdWZmZXIobmV3VGV4dFRyYWNrLT5pZCgp
LCB0ZXh0VHJhY2tJbmZvLmRlc2NyaXB0aW9uKTsKLQogICAgICAgICAgICAgbV90ZXh0Q29kZWNz
LmFwcGVuZCh0ZXh0VHJhY2tJbmZvLmRlc2NyaXB0aW9uLT5jb2RlYygpKTsKKworICAgICAgICAg
ICAgLy8gNS40LjcgQ3JlYXRlIGEgbmV3IHRyYWNrIGJ1ZmZlciB0byBzdG9yZSBjb2RlZCBmcmFt
ZXMgZm9yIHRoaXMgdHJhY2suCisgICAgICAgICAgICBtX3ByaXZhdGUtPmFkZFRyYWNrQnVmZmVy
KG5ld1RleHRUcmFjay0+aWQoKSwgV1RGTW92ZSh0ZXh0VHJhY2tJbmZvLmRlc2NyaXB0aW9uKSk7
CiAgICAgICAgIH0KIAogICAgICAgICAvLyA1LjUgSWYgYWN0aXZlIHRyYWNrIGZsYWcgZXF1YWxz
IHRydWUsIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcgc3RlcHM6CkBAIC05MDIsNiArOTAyLDcgQEAg
dm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6
YXRpb25TZWdtZW50KGNvbnN0IEluaXQKICAgICAvLyAoTm90ZTogSXNzdWUgIzE1NSBhZGRzIHRo
aXMgc3RlcCBhZnRlciBzdGVwIDU6KQogICAgIC8vIDYuIFNldCAgcGVuZGluZyBpbml0aWFsaXph
dGlvbiBzZWdtZW50IGZvciBjaGFuZ2VUeXBlIGZsYWcgIHRvIGZhbHNlLgogICAgIG1fcGVuZGlu
Z0luaXRpYWxpemF0aW9uU2VnbWVudEZvckNoYW5nZVR5cGUgPSBmYWxzZTsKKyAgICBjb21wbGV0
aW9uSGFuZGxlcigpOwogCiAgICAgLy8gNi4gSWYgdGhlIEhUTUxNZWRpYUVsZW1lbnQucmVhZHlT
dGF0ZSBhdHRyaWJ1dGUgaXMgSEFWRV9OT1RISU5HLCB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0
ZXBzOgogICAgIGlmIChtX3ByaXZhdGUtPnJlYWR5U3RhdGUoKSA9PSBNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZTo6SGF2ZU5vdGhpbmcpIHsKQEAgLTEwMTEsMTYgKzEwMTIsNiBAQCBib29sIFNvdXJj
ZUJ1ZmZlcjo6aGFzVmlkZW8oKSBjb25zdAogICAgIHJldHVybiBtX3ZpZGVvVHJhY2tzICYmIG1f
dmlkZW9UcmFja3MtPmxlbmd0aCgpOwogfQogCi1ib29sIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVm
ZmVyUHJpdmF0ZUhhc0F1ZGlvKCkgY29uc3QKLXsKLSAgICByZXR1cm4gaGFzQXVkaW8oKTsKLX0K
LQotYm9vbCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbygpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIGhhc1ZpZGVvKCk7Ci19Ci0KIHZvaWQgU291cmNlQnVmZmVyOjp2aWRl
b1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJhY2smIHRyYWNrKQogewogICAgIC8vIDIuNC41
IENoYW5nZXMgdG8gc2VsZWN0ZWQvZW5hYmxlZCB0cmFjayBzdGF0ZQpAQCAtMTIwNCw5ICsxMTk1
LDkgQEAgYm9vbCBTb3VyY2VCdWZmZXI6OmNhblBsYXlUaHJvdWdoUmFuZ2UoUGxhdGZvcm1UaW1l
UmFuZ2VzJiByYW5nZXMpCiAgICAgcmV0dXJuIHVuYnVmZmVyZWRUaW1lLnRvRG91YmxlKCkgLyBt
X2F2ZXJhZ2VCdWZmZXJSYXRlIDwgdGltZVJlbWFpbmluZy50b0RvdWJsZSgpOwogfQogCi1zaXpl
X3QgU291cmNlQnVmZmVyOjpleHRyYU1lbW9yeUNvc3QoKSBjb25zdAordWludDY0X3QgU291cmNl
QnVmZmVyOjpleHRyYU1lbW9yeUNvc3QoKSBjb25zdAogewotICAgIHNpemVfdCBleHRyYU1lbW9y
eUNvc3QgPSBtX3BlbmRpbmdBcHBlbmREYXRhLmNhcGFjaXR5KCk7CisgICAgdWludDY0X3QgZXh0
cmFNZW1vcnlDb3N0ID0gbV9wZW5kaW5nQXBwZW5kRGF0YS5jYXBhY2l0eSgpOwogICAgIGV4dHJh
TWVtb3J5Q29zdCArPSBtX3ByaXZhdGUtPnRvdGFsVHJhY2tCdWZmZXJTaXplSW5CeXRlcygpOwog
CiAgICAgcmV0dXJuIGV4dHJhTWVtb3J5Q29zdDsKQEAgLTEyMTQsMTEgKzEyMDUsMTEgQEAgc2l6
ZV90IFNvdXJjZUJ1ZmZlcjo6ZXh0cmFNZW1vcnlDb3N0KCkgY29uc3QKIAogdm9pZCBTb3VyY2VC
dWZmZXI6OnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKCkKIHsKLSAgICBzaXplX3QgZXh0cmFN
ZW1vcnlDb3N0ID0gdGhpcy0+ZXh0cmFNZW1vcnlDb3N0KCk7CisgICAgdWludDY0X3QgZXh0cmFN
ZW1vcnlDb3N0ID0gdGhpcy0+ZXh0cmFNZW1vcnlDb3N0KCk7CiAgICAgaWYgKGV4dHJhTWVtb3J5
Q29zdCA8PSBtX3JlcG9ydGVkRXh0cmFNZW1vcnlDb3N0KQogICAgICAgICByZXR1cm47CiAKLSAg
ICBzaXplX3QgZXh0cmFNZW1vcnlDb3N0RGVsdGEgPSBleHRyYU1lbW9yeUNvc3QgLSBtX3JlcG9y
dGVkRXh0cmFNZW1vcnlDb3N0OworICAgIHVpbnQ2NF90IGV4dHJhTWVtb3J5Q29zdERlbHRhID0g
ZXh0cmFNZW1vcnlDb3N0IC0gbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdDsKICAgICBtX3JlcG9y
dGVkRXh0cmFNZW1vcnlDb3N0ID0gZXh0cmFNZW1vcnlDb3N0OwogCiAgICAgSlNDOjpKU0xvY2tI
b2xkZXIgbG9jayhzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPnZtKCkpOwpAQCAtMTI0Miw3ICsx
MjMzLDcgQEAgTWVkaWFUaW1lIFNvdXJjZUJ1ZmZlcjo6bWluaW11bVVwY29taW5nUHJlc2VudGF0
aW9uVGltZUZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmkKICAgICByZXR1cm4gbV9wcml2YXRlLT5t
aW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lRm9yVHJhY2tJRCh0cmFja0lEKTsKIH0KIAot
dm9pZCBTb3VyY2VCdWZmZXI6OnNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRChjb25zdCBB
dG9tU3RyaW5nJiB0cmFja0lELCBzaXplX3QgbWF4UXVldWVEZXB0aCkKK3ZvaWQgU291cmNlQnVm
ZmVyOjpzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYgdHJh
Y2tJRCwgdWludDY0X3QgbWF4UXVldWVEZXB0aCkKIHsKICAgICBtX3ByaXZhdGUtPnNldE1heGlt
dW1RdWV1ZURlcHRoRm9yVHJhY2tJRCh0cmFja0lELCBtYXhRdWV1ZURlcHRoKTsKIH0KQEAgLTEz
MDIsMTQgKzEyOTMsMjQgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNldFNob3VsZEdlbmVyYXRlVGlt
ZXN0YW1wcyhib29sIGZsYWcpCiAgICAgbV9wcml2YXRlLT5zZXRTaG91bGRHZW5lcmF0ZVRpbWVz
dGFtcHMoZmxhZyk7CiB9CiAKK3ZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRl
QnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCBmbGFnKQoreworICAgIG1fYnVmZmVyZWREaXJ0eSA9
IGZsYWc7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVy
ZWRSYW5nZXNDaGFuZ2VkKGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYgdGltZVJhbmdlcykKK3sK
KyAgICBtX2J1ZmZlcmVkLT5yYW5nZXMoKSA9IHRpbWVSYW5nZXM7Cit9CisKIGJvb2wgU291cmNl
QnVmZmVyOjppc0J1ZmZlcmVkRGlydHkoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUt
PmlzQnVmZmVyZWREaXJ0eSgpOworICAgIHJldHVybiBtX2J1ZmZlcmVkRGlydHk7CiB9CiAKIHZv
aWQgU291cmNlQnVmZmVyOjpzZXRCdWZmZXJlZERpcnR5KGJvb2wgZmxhZykKIHsKLSAgICBtX3By
aXZhdGUtPnNldEJ1ZmZlcmVkRGlydHkoZmxhZyk7CisgICAgbV9idWZmZXJlZERpcnR5ID0gZmxh
ZzsKIH0KIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKaW5kZXggZDE1YzI5YmNkODg2MmU5
MmI0NmQ5M2IwMTI1MDUwMTkzNDllMmNmOC4uMjI5M2JjNTA3N2JiMTc2OTg0MjJkZTBlNjZlZGY0
YTc5YjFmYWU0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJj
ZS9Tb3VyY2VCdWZmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L1NvdXJjZUJ1ZmZlci5oCkBAIC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25P
cjx2b2lkPiByZW1vdmUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJik7CiAgICAg
RXhjZXB0aW9uT3I8dm9pZD4gY2hhbmdlVHlwZShjb25zdCBTdHJpbmcmKTsKIAotICAgIGNvbnN0
IFRpbWVSYW5nZXMmIGJ1ZmZlcmVkSW50ZXJuYWwoKSBjb25zdCB7IEFTU0VSVChtX3ByaXZhdGUt
PmJ1ZmZlcmVkKCkpOyByZXR1cm4gKm1fcHJpdmF0ZS0+YnVmZmVyZWQoKTsgfQorICAgIGNvbnN0
IFRpbWVSYW5nZXMmIGJ1ZmZlcmVkSW50ZXJuYWwoKSBjb25zdCB7IEFTU0VSVChtX2J1ZmZlcmVk
KTsgcmV0dXJuICptX2J1ZmZlcmVkOyB9CiAKICAgICB2b2lkIGFib3J0SWZVcGRhdGluZygpOwog
ICAgIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJjZSgpOwpAQCAtMTQ4LDE1ICsxNDgsMTUgQEAg
cHJpdmF0ZToKICAgICBib29sIHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5h
bDsKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQKLSAgICB2b2lkIHNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXRpYWxp
emF0aW9uU2VnbWVudCYpIGZpbmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJl
Y2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2
YXRlU3RyZWFtRW5kZWRXaXRoRGVjb2RlRXJyb3IoKSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1
ZmZlclByaXZhdGVBcHBlbmRFcnJvcihib29sIGRlY29kZUVycm9yKSBmaW5hbDsKKyAgICB2b2lk
IHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQpIGZpbmFsOwog
ICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRp
bWUmIGR1cmF0aW9uKSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQYXJz
ZVNhbXBsZShkb3VibGUgc2FtcGxlRHVyYXRpb24pIGZpbmFsOwogICAgIHZvaWQgc291cmNlQnVm
ZmVyUHJpdmF0ZURpZERyb3BTYW1wbGUoKSBmaW5hbDsKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlclBy
aXZhdGVTdHJlYW1FbmRlZFdpdGhEZWNvZGVFcnJvcigpIGZpbmFsOwotICAgIGJvb2wgc291cmNl
QnVmZmVyUHJpdmF0ZUhhc0F1ZGlvKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzb3VyY2VCdWZm
ZXJQcml2YXRlSGFzVmlkZW8oKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlclBy
aXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQpIGZpbmFsOworICAgIHZvaWQgc291cmNl
QnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGJvb2wpIGZpbmFsOworICAgIHZvaWQg
c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChjb25zdCBQbGF0Zm9ybVRp
bWVSYW5nZXMmKSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZl
UmVuZGVyaW5nRXJyb3IoaW50IGVycm9yQ29kZSkgZmluYWw7CiAKICAgICAvLyBBdWRpb1RyYWNr
Q2xpZW50CkBAIC0xODUsMTMgKzE4NSwxMyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCB2YWxpZGF0
ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0aWFsaXphdGlvblNlZ21lbnQmKTsKIAot
ICAgIHNpemVfdCBtYXhpbXVtQnVmZmVyU2l6ZSgpIGNvbnN0OworICAgIHVpbnQ2NF90IG1heGlt
dW1CdWZmZXJTaXplKCkgY29uc3Q7CiAKICAgICB2b2lkIG1vbml0b3JCdWZmZXJpbmdSYXRlKCk7
CiAKICAgICB2b2lkIHJlbW92ZVRpbWVyRmlyZWQoKTsKIAotICAgIHNpemVfdCBleHRyYU1lbW9y
eUNvc3QoKSBjb25zdDsKKyAgICB1aW50NjRfdCBleHRyYU1lbW9yeUNvc3QoKSBjb25zdDsKICAg
ICB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKCk7CiAKICAgICB2b2lkIGFwcGVuZEVy
cm9yKGJvb2wpOwpAQCAtMjA0LDcgKzIwNCw3IEBAIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBP
UlQgVmVjdG9yPFN0cmluZz4gYnVmZmVyZWRTYW1wbGVzRm9yVHJhY2tJRChjb25zdCBBdG9tU3Ry
aW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gZW5xdWV1ZWRTYW1wbGVz
Rm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFU
aW1lIG1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWVGb3JUcmFja0lEKGNvbnN0IEF0b21T
dHJpbmcmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1heGltdW1RdWV1ZURlcHRoRm9y
VHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJiwgdWlu
dDY0X3QpOwogCiAgICAgUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGU+IG1fcHJpdmF0ZTsKICAgICBN
ZWRpYVNvdXJjZSogbV9zb3VyY2U7CkBAIC0yMzEsOCArMjMxLDEwIEBAIHByaXZhdGU6CiAgICAg
TW9ub3RvbmljVGltZSBtX3RpbWVPZkJ1ZmZlcmluZ01vbml0b3I7CiAgICAgZG91YmxlIG1fYnVm
ZmVyZWRTaW5jZUxhc3RNb25pdG9yIHsgMCB9OwogICAgIGRvdWJsZSBtX2F2ZXJhZ2VCdWZmZXJS
YXRlIHsgMCB9OworICAgIGJvb2wgbV9idWZmZXJlZERpcnR5IHsgdHJ1ZSB9OworICAgIFJlZlB0
cjxUaW1lUmFuZ2VzPiBtX2J1ZmZlcmVkOwogCi0gICAgc2l6ZV90IG1fcmVwb3J0ZWRFeHRyYU1l
bW9yeUNvc3QgeyAwIH07CisgICAgdWludDY0X3QgbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdCB7
IDAgfTsKIAogICAgIE1lZGlhVGltZSBtX3BlbmRpbmdSZW1vdmVTdGFydDsKICAgICBNZWRpYVRp
bWUgbV9wZW5kaW5nUmVtb3ZlRW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9NZWRpYVNvdXJjZVByaXZhdGUuaAppbmRleCA2NTcwYmY2ZWU5NjgyN2UwMDk0
NmY5ZjE5NjA4OGFkYzJjNGJkYjYzLi4yOTMyODg2M2IxNGYyNmRjYjljYzExYzAyMzY2MGQ1MjAz
Yjg5MGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVNvdXJjZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9N
ZWRpYVNvdXJjZVByaXZhdGUuaApAQCAtNTUsMTAgKzU1LDExIEBAIHB1YmxpYzoKICAgICAgICAg
UmVhY2hlZElkTGltaXQKICAgICB9OwogICAgIHZpcnR1YWwgQWRkU3RhdHVzIGFkZFNvdXJjZUJ1
ZmZlcihjb25zdCBDb250ZW50VHlwZSYsIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlPiYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBkdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikgPSAwOwogICAgIGVudW0gRW5k
T2ZTdHJlYW1TdGF0dXMgeyBFb3NOb0Vycm9yLCBFb3NOZXR3b3JrRXJyb3IsIEVvc0RlY29kZUVy
cm9yIH07CiAgICAgdmlydHVhbCB2b2lkIG1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1
cykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bm1hcmtFbmRPZlN0cmVhbSgpID0gMDsKKyAgICB2
aXJ0dWFsIGJvb2wgaXNFbmRlZCgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSkgPSAwOwpAQCAtNjYsMTAgKzY3
LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2FpdEZvclNlZWtDb21wbGV0ZWQoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlZWtDb21wbGV0ZWQoKSA9IDA7CiAKKyAgICB2b2lkIHNl
dFRpbWVGdWRnZUZhY3Rvcihjb25zdCBNZWRpYVRpbWUmIGZ1ZGdlRmFjdG9yKSB7IG1fdGltZUZ1
ZGdlRmFjdG9yID0gZnVkZ2VGYWN0b3I7IH0KKyAgICBNZWRpYVRpbWUgdGltZUZ1ZGdlRmFjdG9y
KCkgY29uc3QgeyByZXR1cm4gbV90aW1lRnVkZ2VGYWN0b3I7IH0KICAgICB2b2lkIHNldElzU2Vl
a2luZyhib29sIGZsYWcpIHsgbV9pc1NlZWtpbmcgPSBmbGFnOyB9CiAgICAgYm9vbCBpc1NlZWtp
bmcoKSBjb25zdCB7IHJldHVybiBtX2lzU2Vla2luZzsgfQogCiBwcml2YXRlOgorICAgIE1lZGlh
VGltZSBtX3RpbWVGdWRnZUZhY3RvcjsKICAgICBib29sIG1faXNTZWVraW5nIHsgZmFsc2UgfTsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJj
ZUJ1ZmZlclByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291
cmNlQnVmZmVyUHJpdmF0ZS5jcHAKaW5kZXggMGYzZmE2NmQ5OTFlYjM5YTMwNjFhZTJmOGViZmVl
YjJkNTMwNDVjOS4uMTk3ODMxYWFlNjZmOGRhZDQzOWFlN2VmZWZiNjY2ODI5OGE0MmU0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJp
dmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVm
ZmVyUHJpdmF0ZS5jcHAKQEAgLTY1LDYgKzY1LDggQEAgU291cmNlQnVmZmVyUHJpdmF0ZTo6U291
cmNlQnVmZmVyUHJpdmF0ZSgpCiB7CiB9CiAKK1NvdXJjZUJ1ZmZlclByaXZhdGU6On5Tb3VyY2VC
dWZmZXJQcml2YXRlKCkgPSBkZWZhdWx0OworCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnJl
c2V0VGltZXN0YW1wT2Zmc2V0SW5UcmFja0J1ZmZlcnMoKQogewogICAgIGZvciAoYXV0byYgdHJh
Y2tCdWZmZXIgOiBtX3RyYWNrQnVmZmVyTWFwLnZhbHVlcygpKSB7CkBAIC03Myw2ICs3NSwxMiBA
QCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnJlc2V0VGltZXN0YW1wT2Zmc2V0SW5UcmFja0J1
ZmZlcnMoKQogICAgIH0KIH0KIAordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpzZXRCdWZmZXJl
ZERpcnR5KGJvb2wgZmxhZykKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50
LT5zb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoZmxhZyk7Cit9CisKIHZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6cmVzZXRUcmFja0J1ZmZlcnMoKQogewogICAgIGZvciAo
YXV0byYgdHJhY2tCdWZmZXJQYWlyIDogbV90cmFja0J1ZmZlck1hcC52YWx1ZXMoKSkgewpAQCAt
OTYsNiArMTA0LDEzIEBAIE1lZGlhVGltZSBTb3VyY2VCdWZmZXJQcml2YXRlOjpoaWdoZXN0UHJl
c2VudGF0aW9uVGltZXN0YW1wKCkgY29uc3QKICAgICByZXR1cm4gaGlnaGVzdFRpbWU7CiB9CiAK
K3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0QnVmZmVyZWRSYW5nZXMoY29uc3QgUGxhdGZv
cm1UaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQoreworICAgIG1fYnVmZmVyZWQtPnJhbmdlcygpID0g
dGltZVJhbmdlczsKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zb3VyY2VC
dWZmZXJQcml2YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2VkKG1fYnVmZmVyZWQtPnJhbmdlcygpKTsK
K30KKwogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjp1cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1
ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVkKQogewogICAgIC8vIDMuMSBBdHRyaWJ1dGVzLCBidWZm
ZXJlZApAQCAtMTEyLDcgKzEyNyw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6dXBkYXRl
QnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCkKICAgICAvLyBOT1RF
OiBTaG9ydCBjaXJjdWl0IHRoZSBmb2xsb3dpbmcgaWYgbm9uZSBvZiB0aGUgVHJhY2tCdWZmZXJz
IGhhdmUgYnVmZmVyZWQgcmFuZ2VzIHRvIGF2b2lkIGdlbmVyYXRpbmcKICAgICAvLyBhIHNpbmds
ZSByYW5nZSBvZiB7MCwgMH0uCiAgICAgaWYgKGhpZ2hlc3RFbmRUaW1lLmlzTmVnYXRpdmVJbmZp
bml0ZSgpKSB7Ci0gICAgICAgIG1fYnVmZmVyZWQtPnJhbmdlcygpID0gUGxhdGZvcm1UaW1lUmFu
Z2VzKCk7CisgICAgICAgIHNldEJ1ZmZlcmVkUmFuZ2VzKFBsYXRmb3JtVGltZVJhbmdlcygpKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM3LDEwICsxNTIsMjAgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlOjp1cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3Vy
Y2VJc0VuZGVkKQogCiAgICAgLy8gNS4gSWYgaW50ZXJzZWN0aW9uIHJhbmdlcyBkb2VzIG5vdCBj
b250YWluIHRoZSBleGFjdCBzYW1lIHJhbmdlIGluZm9ybWF0aW9uIGFzIHRoZSBjdXJyZW50IHZh
bHVlIG9mIHRoaXMgYXR0cmlidXRlLAogICAgIC8vICAgIHRoZW4gdXBkYXRlIHRoZSBjdXJyZW50
IHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIHRvIGludGVyc2VjdGlvbiByYW5nZXMuCi0gICAgbV9i
dWZmZXJlZC0+cmFuZ2VzKCkgPSBpbnRlcnNlY3Rpb25SYW5nZXM7CisgICAgc2V0QnVmZmVyZWRS
YW5nZXMoaW50ZXJzZWN0aW9uUmFuZ2VzKTsKICAgICBzZXRCdWZmZXJlZERpcnR5KHRydWUpOwog
fQogCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZENvbXBsZXRlZChib29sIHBhcnNp
bmdTdWNjZWVkZWQsIGJvb2wgaXNFbmRlZCkKK3sKKyAgICAvLyBSZXNvbHZlIHRoZSBjaGFuZ2Vz
IGluIFRyYWNrQnVmZmVycycgYnVmZmVyZWQgcmFuZ2VzCisgICAgLy8gaW50byB0aGUgU291cmNl
QnVmZmVyJ3MgYnVmZmVyZWQgcmFuZ2VzCisgICAgdXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZm
ZXJzKGlzRW5kZWQpOworCisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c291
cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKHBhcnNpbmdTdWNjZWVkZWQgPyBTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2NlZWRlZCA6IFNvdXJj
ZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdDo6UGFyc2luZ0ZhaWxlZCk7Cit9CisK
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6cmVlbnF1ZVNhbXBsZXMoY29uc3QgQXRvbVN0cmlu
ZyYgdHJhY2tJRCkKIHsKICAgICBpZiAoIW1faXNBdHRhY2hlZCkKQEAgLTE3OCw5ICsyMDMsOSBA
QCBWZWN0b3I8U3RyaW5nPiBTb3VyY2VCdWZmZXJQcml2YXRlOjpidWZmZXJlZFNhbXBsZXNGb3JU
cmFja0lEKGNvbnN0IEF0b21TdHJpbmcmCiB7CiAgICAgYXV0byBpdCA9IG1fdHJhY2tCdWZmZXJN
YXAuZmluZCh0cmFja0lEKTsKICAgICBpZiAoaXQgPT0gbV90cmFja0J1ZmZlck1hcC5lbmQoKSkK
LSAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CisgICAgICAgIHJldHVybiB7IH07CiAK
LSAgICBUcmFja0J1ZmZlciYgdHJhY2tCdWZmZXIgPSBpdC0+dmFsdWU7CisgICAgYXV0byYgdHJh
Y2tCdWZmZXIgPSBpdC0+dmFsdWU7CiAgICAgVmVjdG9yPFN0cmluZz4gc2FtcGxlRGVzY3JpcHRp
b25zOwogICAgIGZvciAoYXV0byYgcGFpciA6IHRyYWNrQnVmZmVyLnNhbXBsZXMuZGVjb2RlT3Jk
ZXIoKSkKICAgICAgICAgc2FtcGxlRGVzY3JpcHRpb25zLmFwcGVuZCh0b1N0cmluZygqcGFpci5z
ZWNvbmQpKTsKQEAgLTMxNyw3ICszNDIsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnBy
b3ZpZGVNZWRpYURhdGEoVHJhY2tCdWZmZXImIHRyYWNrQnVmZmVyLCBjb25zdCBBdG9tUwogICAg
IHVwZGF0ZU1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWUodHJhY2tCdWZmZXIsIHRyYWNr
SUQpOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgREVCVUdfTE9HKExPR0lERU5U
SUZJRVIsICJlbnF1ZXVlZCAiLCBlbnF1ZXVlZFNhbXBsZXMsICIgc2FtcGxlcywgIiwgc3RhdGlj
X2Nhc3Q8c2l6ZV90Pih0cmFja0J1ZmZlci5kZWNvZGVRdWV1ZS5zaXplKCkpLCAiIHJlbWFpbmlu
ZyIpOworICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiZW5xdWV1ZWQgIiwgZW5xdWV1ZWRT
YW1wbGVzLCAiIHNhbXBsZXMsICIsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0cmFja0J1ZmZlci5k
ZWNvZGVRdWV1ZS5zaXplKCkpLCAiIHJlbWFpbmluZyIpOwogI2VuZGlmCiAKICAgICBhbGxTYW1w
bGVzSW5UcmFja0VucXVldWVkKHRyYWNrSUQpOwpAQCAtMzM5LDcgKzM2NCw3IEBAIHZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZTo6cmVlbnF1ZXVlTWVkaWFGb3JUaW1lKFRyYWNrQnVmZmVyJiB0cmFj
a0J1ZmZlciwgY29uc3QKICAgICAgICAgY3VycmVudFNhbXBsZVBUU0l0ZXJhdG9yID0gdHJhY2tC
dWZmZXIuc2FtcGxlcy5wcmVzZW50YXRpb25PcmRlcigpLmZpbmRTYW1wbGVTdGFydGluZ09uT3JB
ZnRlclByZXNlbnRhdGlvblRpbWUodGltZSk7CiAKICAgICBpZiAoY3VycmVudFNhbXBsZVBUU0l0
ZXJhdG9yID09IHRyYWNrQnVmZmVyLnNhbXBsZXMucHJlc2VudGF0aW9uT3JkZXIoKS5lbmQoKQot
ICAgICAgICB8fCAoY3VycmVudFNhbXBsZVBUU0l0ZXJhdG9yLT5maXJzdCAtIHRpbWUpID4gbV9j
dXJyZW50VGltZUZ1ZGdlRmFjdG9yKQorICAgICAgICB8fCAoY3VycmVudFNhbXBsZVBUU0l0ZXJh
dG9yLT5maXJzdCAtIHRpbWUpID4gdGltZUZ1ZGdlRmFjdG9yKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIFNlYWNoIGJhY2t3YXJkIGZvciB0aGUgcHJldmlvdXMgc3luYyBzYW1wbGUuCkBA
IC0zNjcsNyArMzkyLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpyZWVucXVldWVNZWRp
YUZvclRpbWUoVHJhY2tCdWZmZXImIHRyYWNrQnVmZmVyLCBjb25zdAogICAgIHRyYWNrQnVmZmVy
Lm5lZWRzUmVlbnF1ZXVlaW5nID0gZmFsc2U7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZTo6cmVlbnF1ZXVlTWVkaWFJZk5lZWRlZChjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBz
aXplX3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgc2l6ZV90IG1heGltdW1CdWZmZXJTaXpl
KQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpyZWVucXVldWVNZWRpYUlmTmVlZGVkKGNvbnN0
IE1lZGlhVGltZSYgY3VycmVudFRpbWUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNp
dHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplKQogewogICAgIGZvciAoYXV0byYgdHJhY2tC
dWZmZXJQYWlyIDogbV90cmFja0J1ZmZlck1hcCkgewogICAgICAgICBUcmFja0J1ZmZlciYgdHJh
Y2tCdWZmZXIgPSB0cmFja0J1ZmZlclBhaXIudmFsdWU7CkBAIC0zOTgsNyArNDIzLDcgQEAgc3Rh
dGljIFBsYXRmb3JtVGltZVJhbmdlcyByZW1vdmVTYW1wbGVzRnJvbVRyYWNrQnVmZmVyKGNvbnN0
IERlY29kZU9yZGVyU2FtcGxlTWEKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBNZWRp
YVRpbWUgZWFybGllc3RTYW1wbGUgPSBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCk7
CiAgICAgTWVkaWFUaW1lIGxhdGVzdFNhbXBsZSA9IE1lZGlhVGltZTo6emVyb1RpbWUoKTsKLSAg
ICBzaXplX3QgYnl0ZXNSZW1vdmVkID0gMDsKKyAgICB1aW50NjRfdCBieXRlc1JlbW92ZWQgPSAw
OwogICAgIGF1dG8gbG9nSWRlbnRpZmllciA9IFdURjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmll
cihzb3VyY2VCdWZmZXJQcml2YXRlLT5sb2dDbGFzc05hbWUoKSwgbG9nUHJlZml4LCBzb3VyY2VC
dWZmZXJQcml2YXRlLT5sb2dJZGVudGlmaWVyKCkpOwogICAgIGF1dG8mIGxvZ2dlciA9IHNvdXJj
ZUJ1ZmZlclByaXZhdGUtPmxvZ2dlcigpOwogICAgIGF1dG8gd2lsbExvZyA9IGxvZ2dlci53aWxs
TG9nKHNvdXJjZUJ1ZmZlclByaXZhdGUtPmxvZ0NoYW5uZWwoKSwgV1RGTG9nTGV2ZWw6OkRlYnVn
KTsKQEAgLTQwOCw3ICs0MzMsNyBAQCBzdGF0aWMgUGxhdGZvcm1UaW1lUmFuZ2VzIHJlbW92ZVNh
bXBsZXNGcm9tVHJhY2tCdWZmZXIoY29uc3QgRGVjb2RlT3JkZXJTYW1wbGVNYQogICAgIGZvciAo
Y29uc3QgYXV0byYgc2FtcGxlSXQgOiBzYW1wbGVzKSB7CiAgICAgICAgIGNvbnN0IERlY29kZU9y
ZGVyU2FtcGxlTWFwOjpLZXlUeXBlJiBkZWNvZGVLZXkgPSBzYW1wbGVJdC5maXJzdDsKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAgICAgc2l6ZV90IHN0YXJ0QnVmZmVyU2l6ZSA9IHRy
YWNrQnVmZmVyLnNhbXBsZXMuc2l6ZUluQnl0ZXMoKTsKKyAgICAgICAgdWludDY0X3Qgc3RhcnRC
dWZmZXJTaXplID0gdHJhY2tCdWZmZXIuc2FtcGxlcy5zaXplSW5CeXRlcygpOwogI2VuZGlmCiAK
ICAgICAgICAgY29uc3QgUmVmUHRyPE1lZGlhU2FtcGxlPiYgc2FtcGxlID0gc2FtcGxlSXQuc2Vj
b25kOwpAQCAtNTcwLDcgKzU5NSw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6cmVtb3Zl
Q29kZWRGcmFtZXMoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUCiAgICAgTE9H
KE1lZGlhLCAiU291cmNlQnVmZmVyOjpyZW1vdmVDb2RlZEZyYW1lcyglcCkgLSBidWZmZXJlZCA9
ICVzIiwgdGhpcywgdG9TdHJpbmcobV9idWZmZXJlZC0+cmFuZ2VzKCkpLnV0ZjgoKS5kYXRhKCkp
OwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmV2aWN0Q29kZWRGcmFtZXMoc2l6ZV90
IG5ld0RhdGFTaXplLCBzaXplX3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgc2l6ZV90IG1h
eGltdW1CdWZmZXJTaXplLCBjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBjb25zdCBNZWRp
YVRpbWUmIGR1cmF0aW9uLCBib29sIGlzRW5kZWQpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6
OmV2aWN0Q29kZWRGcmFtZXModWludDY0X3QgbmV3RGF0YVNpemUsIHVpbnQ2NF90IHBlbmRpbmdB
cHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplLCBjb25zdCBNZWRp
YVRpbWUmIGN1cnJlbnRUaW1lLCBjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uLCBib29sIGlzRW5k
ZWQpCiB7CiAgICAgLy8gMy41LjEzIENvZGVkIEZyYW1lIEV2aWN0aW9uIEFsZ29yaXRobQogICAg
IC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL21lZGlhLXNvdXJjZS8jc291cmNlYnVmZmVyLWNvZGVk
LWZyYW1lLWV2aWN0aW9uCkBAIC01OTQsNyArNjE5LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlOjpldmljdENvZGVkRnJhbWVzKHNpemVfdCBuZXdEYXRhU2l6ZSwgc2l6ZV90IHBlbmRpbmdB
cHAKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRCAmJiBmYWxzZQogICAgIERFQlVHX0xPRyhM
T0dJREVOVElGSUVSLCAiY3VycmVudFRpbWUgPSAiLCBjdXJyZW50VGltZSwgIiwgcmVxdWlyZSAi
LCBleHRyYU1lbW9yeUNvc3QoKSArIG5ld0RhdGFTaXplLCAiIGJ5dGVzLCBtYXhpbXVtIGJ1ZmZl
ciBzaXplIGlzICIsIG1heGltdW1CdWZmZXJTaXplKTsKLSAgICBzaXplX3QgaW5pdGlhbEJ1ZmZl
cmVkU2l6ZSA9IGV4dHJhTWVtb3J5Q29zdCgpOworICAgIHVpbnQ2NF90IGluaXRpYWxCdWZmZXJl
ZFNpemUgPSBleHRyYU1lbW9yeUNvc3QoKTsKICNlbmRpZgogCiAgICAgTWVkaWFUaW1lIHJhbmdl
U3RhcnQgPSBNZWRpYVRpbWU6Onplcm9UaW1lKCk7CkBAIC02MjMsMTAgKzY0OCwxMCBAQCB2b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGU6OmV2aWN0Q29kZWRGcmFtZXMoc2l6ZV90IG5ld0RhdGFTaXpl
LCBzaXplX3QgcGVuZGluZ0FwcAogICAgIC8vIHRoZSBjdXJyZW50IGJ1ZmZlcmVkIHJhbmdlKSwg
ZGVsZXRlIDMwIHNlY29uZHMgYXQgYSB0aW1lIGZyb20gZHVyYXRpb24gYmFjayB0byB0aGUgY3Vy
cmVudCB0aW1lIHJhbmdlIG9yIDMwIHNlY29uZHMgYWZ0ZXIKICAgICAvLyBjdXJyZW5UaW1lIHdo
aWNoZXZlciB3ZSBoaXQgZmlyc3QuCiAgICAgYXV0byBidWZmZXJlZCA9IG1fYnVmZmVyZWQtPnJh
bmdlcygpOwotICAgIHNpemVfdCBjdXJyZW50VGltZVJhbmdlID0gYnVmZmVyZWQuZmluZChjdXJy
ZW50VGltZSk7CisgICAgdWludDY0X3QgY3VycmVudFRpbWVSYW5nZSA9IGJ1ZmZlcmVkLmZpbmQo
Y3VycmVudFRpbWUpOwogICAgIGlmIChjdXJyZW50VGltZVJhbmdlID09IGJ1ZmZlcmVkLmxlbmd0
aCgpIC0gMSkgewogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRCAmJiBmYWxzZQotICAgIEVSUk9S
X0xPRyhMT0dJREVOVElGSUVSLCAiRkFJTEVEIHRvIGZyZWUgZW5vdWdoIGFmdGVyIGV2aWN0aW5n
ICIsIGluaXRpYWxCdWZmZXJlZFNpemUgLSBleHRyYU1lbW9yeUNvc3QoKSk7CisgICAgICAgIEVS
Uk9SX0xPRyhMT0dJREVOVElGSUVSLCAiRkFJTEVEIHRvIGZyZWUgZW5vdWdoIGFmdGVyIGV2aWN0
aW5nICIsIGluaXRpYWxCdWZmZXJlZFNpemUgLSBleHRyYU1lbW9yeUNvc3QoKSk7CiAjZW5kaWYK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTYzNiw3ICs2NjEsNyBAQCB2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGU6OmV2aWN0Q29kZWRGcmFtZXMoc2l6ZV90IG5ld0RhdGFTaXplLCBzaXplX3Qg
cGVuZGluZ0FwcAogICAgIHJhbmdlRW5kID0gZHVyYXRpb247CiAgICAgaWYgKCFyYW5nZUVuZC5p
c0Zpbml0ZSgpKSB7CiAgICAgICAgIHJhbmdlRW5kID0gYnVmZmVyZWQubWF4aW11bUJ1ZmZlcmVk
VGltZSgpOwotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRCAmJiBmYWxzZQorI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAogICAgICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgIk1lZGlhU291
cmNlIGR1cmF0aW9uIGlzIG5vdCBhIGZpbml0ZSB2YWx1ZSwgdXNpbmcgbWF4aW11bSBidWZmZXJl
ZCB0aW1lOiAiLCByYW5nZUVuZCk7CiAjZW5kaWYKICAgICB9CkBAIC02NDQsOSArNjY5LDkgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpldmljdENvZGVkRnJhbWVzKHNpemVfdCBuZXdEYXRh
U2l6ZSwgc2l6ZV90IHBlbmRpbmdBcHAKICAgICByYW5nZVN0YXJ0ID0gcmFuZ2VFbmQgLSB0aGly
dHlTZWNvbmRzOwogICAgIHdoaWxlIChyYW5nZVN0YXJ0ID4gbWluaW11bVJhbmdlU3RhcnQpIHsK
ICAgICAgICAgLy8gRG8gbm90IGV2aWN0IGRhdGEgZnJvbSB0aGUgdGltZSByYW5nZSB0aGF0IGNv
bnRhaW5zIGN1cnJlbnRUaW1lLgotICAgICAgICBzaXplX3Qgc3RhcnRUaW1lUmFuZ2UgPSBidWZm
ZXJlZC5maW5kKHJhbmdlU3RhcnQpOworICAgICAgICB1aW50NjRfdCBzdGFydFRpbWVSYW5nZSA9
IGJ1ZmZlcmVkLmZpbmQocmFuZ2VTdGFydCk7CiAgICAgICAgIGlmIChjdXJyZW50VGltZVJhbmdl
ICE9IG5vdEZvdW5kICYmIHN0YXJ0VGltZVJhbmdlID09IGN1cnJlbnRUaW1lUmFuZ2UpIHsKLSAg
ICAgICAgICAgIHNpemVfdCBlbmRUaW1lUmFuZ2UgPSBidWZmZXJlZC5maW5kKHJhbmdlRW5kKTsK
KyAgICAgICAgICAgIHVpbnQ2NF90IGVuZFRpbWVSYW5nZSA9IGJ1ZmZlcmVkLmZpbmQocmFuZ2VF
bmQpOwogICAgICAgICAgICAgaWYgKGN1cnJlbnRUaW1lUmFuZ2UgIT0gbm90Rm91bmQgJiYgZW5k
VGltZVJhbmdlID09IGN1cnJlbnRUaW1lUmFuZ2UpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAK
QEAgLTY3NCwyMiArNjk5LDI1IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZXZpY3RDb2Rl
ZEZyYW1lcyhzaXplX3QgbmV3RGF0YVNpemUsIHNpemVfdCBwZW5kaW5nQXBwCiAjZW5kaWYKIH0K
IAotc2l6ZV90IFNvdXJjZUJ1ZmZlclByaXZhdGU6OnRvdGFsVHJhY2tCdWZmZXJTaXplSW5CeXRl
cygpIGNvbnN0Cit1aW50NjRfdCBTb3VyY2VCdWZmZXJQcml2YXRlOjp0b3RhbFRyYWNrQnVmZmVy
U2l6ZUluQnl0ZXMoKSBjb25zdAogewotICAgIHNpemVfdCB0b3RhbFNpemVJbkJ5dGVzID0gMDsK
KyAgICB1aW50NjRfdCB0b3RhbFNpemVJbkJ5dGVzID0gMDsKICAgICBmb3IgKGF1dG8mIHRyYWNr
QnVmZmVyIDogbV90cmFja0J1ZmZlck1hcC52YWx1ZXMoKSkKICAgICAgICAgdG90YWxTaXplSW5C
eXRlcyArPSB0cmFja0J1ZmZlci5zYW1wbGVzLnNpemVJbkJ5dGVzKCk7CiAKICAgICByZXR1cm4g
dG90YWxTaXplSW5CeXRlczsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjphZGRUcmFj
a0J1ZmZlcihjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lkLCBSZWZQdHI8TWVkaWFEZXNjcmlwdGlv
bj4gZGVzY3JpcHRpb24pCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmFkZFRyYWNrQnVmZmVy
KGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSWQsIFJlZlB0cjxNZWRpYURlc2NyaXB0aW9uPiYmIGRl
c2NyaXB0aW9uKQogewogICAgIEFTU0VSVCghbV90cmFja0J1ZmZlck1hcC5jb250YWlucyh0cmFj
a0lkKSk7CiAgICAgYXV0byYgdHJhY2tCdWZmZXIgPSBtX3RyYWNrQnVmZmVyTWFwLmFkZCh0cmFj
a0lkLCBUcmFja0J1ZmZlcigpKS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICAvLyA1LjIuOSBBZGQg
dGhlIHRyYWNrIGRlc2NyaXB0aW9uIGZvciB0aGlzIHRyYWNrIHRvIHRoZSB0cmFjayBidWZmZXIu
CiAgICAgdHJhY2tCdWZmZXIuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsKKworICAgIG1faGFz
QXVkaW8gPSBtX2hhc0F1ZGlvIHx8IHRyYWNrQnVmZmVyLmRlc2NyaXB0aW9uLT5pc0F1ZGlvKCk7
CisgICAgbV9oYXNWaWRlbyA9IG1faGFzVmlkZW8gfHwgdHJhY2tCdWZmZXIuZGVzY3JpcHRpb24t
PmlzVmlkZW8oKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjp1cGRhdGVUcmFja0lk
cyhWZWN0b3I8c3RkOjpwYWlyPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+PiYmIHRyYWNrSWRQYWly
cykKQEAgLTcwOSw3ICs3MzcsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnNldEFsbFRy
YWNrQnVmZmVyc05lZWRSYW5kb21BY2Nlc3MoKQogICAgICAgICB0cmFja0J1ZmZlci5uZWVkUmFu
ZG9tQWNjZXNzRmxhZyA9IHRydWU7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlk
UmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBTb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQmIHNlZ21lbnQpCit2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGU6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9jbGllbnQpCiAg
ICAgICAgIHJldHVybjsKQEAgLTcxOSw3ICs3NDcsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGU6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgU291cmNlQnVmZmVyUHJp
dgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclBy
aXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KHNlZ21lbnQpOworICAgIG1fY2xp
ZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChX
VEZNb3ZlKHNlZ21lbnQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICBtX3Jl
Y2VpdmVkRmlyc3RJbml0aWFsaXphdGlvblNlZ21lbnQgPSB0cnVlOwogICAgIG1fcGVuZGluZ0lu
aXRpYWxpemF0aW9uU2VnbWVudEZvckNoYW5nZVR5cGUgPSBmYWxzZTsKQEAgLTExODAsMTEgKzEy
MDgsMTEgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlU2FtcGxlKE1lZGlh
U2FtcGxlJiBzYW1wbGUpCiAgICAgICAgIC8vIGRpc2pvaW50IHJhbmdlcyBzZXBhcmF0ZWQgYnkg
bGVzcyB0aGFuIGEgImZ1ZGdlIGZhY3RvciIuCiAgICAgICAgIGF1dG8gcHJlc2VudGF0aW9uRW5k
VGltZSA9IHByZXNlbnRhdGlvblRpbWVzdGFtcCArIGZyYW1lRHVyYXRpb247CiAgICAgICAgIGF1
dG8gbmVhcmVzdFRvUHJlc2VudGF0aW9uU3RhcnRUaW1lID0gdHJhY2tCdWZmZXIuYnVmZmVyZWQu
bmVhcmVzdChwcmVzZW50YXRpb25UaW1lc3RhbXApOwotICAgICAgICBpZiAobmVhcmVzdFRvUHJl
c2VudGF0aW9uU3RhcnRUaW1lLmlzVmFsaWQoKSAmJiAocHJlc2VudGF0aW9uVGltZXN0YW1wIC0g
bmVhcmVzdFRvUHJlc2VudGF0aW9uU3RhcnRUaW1lKS5pc0JldHdlZW4oTWVkaWFUaW1lOjp6ZXJv
VGltZSgpLCBtX2N1cnJlbnRUaW1lRnVkZ2VGYWN0b3IpKQorICAgICAgICBpZiAobmVhcmVzdFRv
UHJlc2VudGF0aW9uU3RhcnRUaW1lLmlzVmFsaWQoKSAmJiAocHJlc2VudGF0aW9uVGltZXN0YW1w
IC0gbmVhcmVzdFRvUHJlc2VudGF0aW9uU3RhcnRUaW1lKS5pc0JldHdlZW4oTWVkaWFUaW1lOjp6
ZXJvVGltZSgpLCB0aW1lRnVkZ2VGYWN0b3IoKSkpCiAgICAgICAgICAgICBwcmVzZW50YXRpb25U
aW1lc3RhbXAgPSBuZWFyZXN0VG9QcmVzZW50YXRpb25TdGFydFRpbWU7CiAKICAgICAgICAgYXV0
byBuZWFyZXN0VG9QcmVzZW50YXRpb25FbmRUaW1lID0gdHJhY2tCdWZmZXIuYnVmZmVyZWQubmVh
cmVzdChwcmVzZW50YXRpb25FbmRUaW1lKTsKLSAgICAgICAgaWYgKG5lYXJlc3RUb1ByZXNlbnRh
dGlvbkVuZFRpbWUuaXNWYWxpZCgpICYmIChuZWFyZXN0VG9QcmVzZW50YXRpb25FbmRUaW1lIC0g
cHJlc2VudGF0aW9uRW5kVGltZSkuaXNCZXR3ZWVuKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgbV9j
dXJyZW50VGltZUZ1ZGdlRmFjdG9yKSkKKyAgICAgICAgaWYgKG5lYXJlc3RUb1ByZXNlbnRhdGlv
bkVuZFRpbWUuaXNWYWxpZCgpICYmIChuZWFyZXN0VG9QcmVzZW50YXRpb25FbmRUaW1lIC0gcHJl
c2VudGF0aW9uRW5kVGltZSkuaXNCZXR3ZWVuKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgdGltZUZ1
ZGdlRmFjdG9yKCkpKQogICAgICAgICAgICAgcHJlc2VudGF0aW9uRW5kVGltZSA9IG5lYXJlc3RU
b1ByZXNlbnRhdGlvbkVuZFRpbWU7CiAKICAgICAgICAgdHJhY2tCdWZmZXIuYnVmZmVyZWQuYWRk
KHByZXNlbnRhdGlvblRpbWVzdGFtcCwgcHJlc2VudGF0aW9uRW5kVGltZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgK
aW5kZXggMTFkZmYzNDliZWM3ZDdlOWMyMjMxNzM2YTQ2ZDQ4ZTc3ZTQ3NmI3YS4uNDAxZGJkNzdi
ZDIwNGI5OGMyODNmY2ExZmQ1NDIwOWM5N2ZlZWIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtNjMsOCAr
NjMsOSBAQCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlCiB7CiBwdWJsaWM6CiAgICAgV0VCQ09S
RV9FWFBPUlQgU291cmNlQnVmZmVyUHJpdmF0ZSgpOwotICAgIHZpcnR1YWwgflNvdXJjZUJ1ZmZl
clByaXZhdGUoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U291cmNl
QnVmZmVyUHJpdmF0ZSgpOwogCisgICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sKSA9IDA7
CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJikgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRQYXJz
ZXJTdGF0ZSgpID0gMDsKQEAgLTcyLDQwICs3MywzOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBN
ZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKSA9IDA7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5T
d2l0Y2hUb1R5cGUoY29uc3QgQ29udGVudFR5cGUmKSB7IHJldHVybiBmYWxzZTsgfQogCisgICAg
dmlydHVhbCB2b2lkIHJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQoY29uc3QgTWVkaWFUaW1lJiBjdXJy
ZW50TWVkaWFUaW1lLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRf
dCBtYXhpbXVtQnVmZmVyU2l6ZSk7CisgICAgdmlydHVhbCB2b2lkIGFkZFRyYWNrQnVmZmVyKGNv
bnN0IEF0b21TdHJpbmcmIHRyYWNrSWQsIFJlZlB0cjxNZWRpYURlc2NyaXB0aW9uPiYmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgdHJ5U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCgpOworICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB1cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZl
cnMoYm9vbCBzb3VyY2VJc0VuZGVkKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQg
ZXZpY3RDb2RlZEZyYW1lcyh1aW50NjRfdCBuZXdEYXRhU2l6ZSwgdWludDY0X3QgcGVuZGluZ0Fw
cGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUsIGNvbnN0IE1lZGlh
VGltZSYgY3VycmVudFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24sIGJvb2wgaXNFbmRl
ZCk7CisKICAgICB2b2lkIHNldENsaWVudChTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50KiBjbGll
bnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KICAgICB2b2lkIHNldElzQXR0YWNoZWQoYm9vbCBm
bGFnKSB7IG1faXNBdHRhY2hlZCA9IGZsYWc7IH0KLSAgICB2b2lkIHNldEN1cnJlbnRUaW1lRnVk
Z2VGYWN0b3IoY29uc3QgTWVkaWFUaW1lJiB0aW1lKSB7IG1fY3VycmVudFRpbWVGdWRnZUZhY3Rv
ciA9IHRpbWU7IH0KKyAgICBib29sIGhhc0F1ZGlvKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBdWRp
bzsgfQorICAgIGJvb2wgaGFzVmlkZW8oKSBjb25zdCB7IHJldHVybiBtX2hhc1ZpZGVvOyB9CiAg
ICAgdm9pZCBzZXRBcHBlbmRXaW5kb3dTdGFydChjb25zdCBNZWRpYVRpbWUmIGFwcGVuZFdpbmRv
d1N0YXJ0KSB7IG1fYXBwZW5kV2luZG93U3RhcnQgPSBhcHBlbmRXaW5kb3dTdGFydDt9CiAgICAg
dm9pZCBzZXRBcHBlbmRXaW5kb3dFbmQoY29uc3QgTWVkaWFUaW1lJiBhcHBlbmRXaW5kb3dFbmQp
IHsgbV9hcHBlbmRXaW5kb3dFbmQgPSBhcHBlbmRXaW5kb3dFbmQ7IH0KICAgICBib29sIGJ1ZmZl
ckZ1bGwoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlckZ1bGw7IH0KLSAgICBUaW1lUmFuZ2VzKiBi
dWZmZXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyZWQuZ2V0KCk7IH0KLSAgICBib29sIGlz
QnVmZmVyZWREaXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyZWREaXJ0eTsgfQotICAgIHZv
aWQgc2V0QnVmZmVyZWREaXJ0eShib29sIGZsYWcpIHsgbV9idWZmZXJlZERpcnR5ID0gZmxhZzsg
fQorCisgICAgdm9pZCBzZXRCdWZmZXJlZERpcnR5KGJvb2wpOwogICAgIHZvaWQgcmVzZXRUcmFj
a0J1ZmZlcnMoKTsKICAgICB2b2lkIGNsZWFyVHJhY2tCdWZmZXJzKCk7CiAgICAgdm9pZCByZXNl
dFRpbWVzdGFtcE9mZnNldEluVHJhY2tCdWZmZXJzKCk7CiAgICAgTWVkaWFUaW1lIHRpbWVzdGFt
cE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0YW1wT2Zmc2V0OyB9CiAgICAgdm9pZCBz
ZXRUaW1lc3RhbXBPZmZzZXQoY29uc3QgTWVkaWFUaW1lJiB0aW1lc3RhbXBPZmZzZXQpIHsgbV90
aW1lc3RhbXBPZmZzZXQgPSB0aW1lc3RhbXBPZmZzZXQ7IH0KICAgICBNZWRpYVRpbWUgaGlnaGVz
dFByZXNlbnRhdGlvblRpbWVzdGFtcCgpIGNvbnN0OwotICAgIHZvaWQgdXBkYXRlQnVmZmVyZWRG
cm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCk7CiAgICAgdm9pZCBzZWVrVG9UaW1l
KGNvbnN0IE1lZGlhVGltZSYpOwotICAgIHZvaWQgdHJ5U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tF
bnF1ZXVlZCgpOwogICAgIHZvaWQgc3RhcnRDaGFuZ2luZ1R5cGUoKSB7IG1fcGVuZGluZ0luaXRp
YWxpemF0aW9uU2VnbWVudEZvckNoYW5nZVR5cGUgPSB0cnVlOyB9Ci0KLSAgICB2b2lkIHJlZW5x
dWV1ZU1lZGlhSWZOZWVkZWQoY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50TWVkaWFUaW1lLCBzaXpl
X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgc2l6ZV90IG1heGltdW1CdWZmZXJTaXplKTsK
ICAgICB2b2lkIHJlbW92ZUNvZGVkRnJhbWVzKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0
IE1lZGlhVGltZSYgZW5kLCBjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRNZWRpYVRpbWUsIGJvb2wg
aXNFbmRlZCk7Ci0gICAgdm9pZCBldmljdENvZGVkRnJhbWVzKHNpemVfdCBuZXdEYXRhU2l6ZSwg
c2l6ZV90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHNpemVfdCBtYXhpbXVtQnVmZmVyU2l6
ZSwgY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50VGltZSwgY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlv
biwgYm9vbCBpc0VuZGVkKTsKLSAgICB2b2lkIGFkZFRyYWNrQnVmZmVyKGNvbnN0IEF0b21TdHJp
bmcmIHRyYWNrSWQsIFJlZlB0cjxNZWRpYURlc2NyaXB0aW9uPik7CiAgICAgdm9pZCB1cGRhdGVU
cmFja0lkcyhWZWN0b3I8c3RkOjpwYWlyPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+PiYmIHRyYWNr
SWRQYWlycyk7CiAgICAgdm9pZCBzZXRBbGxUcmFja0J1ZmZlcnNOZWVkUmFuZG9tQWNjZXNzKCk7
CiAgICAgdm9pZCBzZXRTaG91bGRHZW5lcmF0ZVRpbWVzdGFtcHMoYm9vbCBmbGFnKSB7IG1fc2hv
dWxkR2VuZXJhdGVUaW1lc3RhbXBzID0gZmxhZzsgfQogICAgIHZvaWQgc2V0TW9kZShTb3VyY2VC
dWZmZXJBcHBlbmRNb2RlIG1vZGUpIHsgbV9hcHBlbmRNb2RlID0gbW9kZTsgfQogICAgIHZvaWQg
c2V0R3JvdXBTdGFydFRpbWVzdGFtcChjb25zdCBNZWRpYVRpbWUmIG1lZGlhVGltZSkgeyBtX2dy
b3VwU3RhcnRUaW1lc3RhbXAgPSBtZWRpYVRpbWU7IH0KICAgICB2b2lkIHNldEdyb3VwU3RhcnRU
aW1lc3RhbXBUb0VuZFRpbWVzdGFtcCgpIHsgbV9ncm91cFN0YXJ0VGltZXN0YW1wID0gbV9ncm91
cEVuZFRpbWVzdGFtcDsgfQotICAgIHNpemVfdCB0b3RhbFRyYWNrQnVmZmVyU2l6ZUluQnl0ZXMo
KSBjb25zdDsKKyAgICB1aW50NjRfdCB0b3RhbFRyYWNrQnVmZmVyU2l6ZUluQnl0ZXMoKSBjb25z
dDsKIAogICAgIHN0cnVjdCBUcmFja0J1ZmZlciB7CiAgICAgICAgIE1lZGlhVGltZSBsYXN0RGVj
b2RlVGltZXN0YW1wOwpAQCAtMTM0LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZl
Y3RvcjxTdHJpbmc+IGVucXVldWVkU2FtcGxlc0ZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYp
IHsgcmV0dXJuIHsgfTsgfQogICAgIFZlY3RvcjxTdHJpbmc+IGJ1ZmZlcmVkU2FtcGxlc0ZvclRy
YWNrSUQoY29uc3QgQXRvbVN0cmluZyYpOwogICAgIHZpcnR1YWwgTWVkaWFUaW1lIG1pbmltdW1V
cGNvbWluZ1ByZXNlbnRhdGlvblRpbWVGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmKSB7IHJl
dHVybiBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWF4
aW11bVF1ZXVlRGVwdGhGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmLCBzaXplX3QpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQoY29uc3QgQXRv
bVN0cmluZyYsIHVpbnQ2NF90KSB7IH0KICAgICBNZWRpYVRpbWUgZmFzdFNlZWtUaW1lRm9yTWVk
aWFUaW1lKGNvbnN0IE1lZGlhVGltZSYgdGFyZ2V0VGltZSwgY29uc3QgTWVkaWFUaW1lJiBuZWdh
dGl2ZVRocmVzaG9sZCwgY29uc3QgTWVkaWFUaW1lJiBwb3NpdGl2ZVRocmVzaG9sZCk7CiAKICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTE0Myw2ICsxNDMsNyBAQCBwdWJsaWM6CiAjZW5k
aWYKIAogcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgTWVkaWFUaW1lIHRpbWVGdWRnZUZhY3Rvcigp
IGNvbnN0IHsgcmV0dXJuIHsyMDAyLCAyNDAwMH07IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNBY3Rp
dmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NlZWtpbmco
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgTWVkaWFUaW1lIGN1cnJlbnRN
ZWRpYVRpbWUoKSBjb25zdCB7IHJldHVybiB7IH07IH0KQEAgLTE1Nyw4ICsxNTgsOSBAQCBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHNldE1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRp
bWUoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IE1lZGlhVGltZSYpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBjbGVhck1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWUoY29uc3QgQXRvbVN0cmlu
ZyYpIHsgfQogCisgICAgdm9pZCBhcHBlbmRDb21wbGV0ZWQoYm9vbCBwYXJzaW5nU3VjY2VlZGVk
LCBib29sIGlzRW5kZWQpOwogICAgIHZvaWQgcmVlbnF1ZVNhbXBsZXMoY29uc3QgQXRvbVN0cmlu
ZyYgdHJhY2tJRCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNv
bnN0IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudCYpOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChTb3VyY2VCdWZmZXJQcml2
YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTYW1wbGUoTWVkaWFTYW1wbGUmKTsKICAgICB2
b2lkIHByb3ZpZGVNZWRpYURhdGEoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCk7CiAKQEAgLTE2
OSwxMSArMTcxLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWVucXVldWVNZWRpYUZvclRpbWUo
VHJhY2tCdWZmZXImLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lELCBjb25zdCBNZWRpYVRpbWUm
KTsKICAgICBib29sIHZhbGlkYXRlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IFNvdXJjZUJ1
ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudCYpOwogICAgIHZvaWQgcHJv
dmlkZU1lZGlhRGF0YShUcmFja0J1ZmZlciYsIGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpOwor
ICAgIHZvaWQgc2V0QnVmZmVyZWRSYW5nZXMoY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJik7CiAK
ICAgICBib29sIG1faXNBdHRhY2hlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc0F1ZGlvIHsg
ZmFsc2UgfTsKKyAgICBib29sIG1faGFzVmlkZW8geyBmYWxzZSB9OwogCiAgICAgSGFzaE1hcDxB
dG9tU3RyaW5nLCBUcmFja0J1ZmZlcj4gbV90cmFja0J1ZmZlck1hcDsKLSAgICBNZWRpYVRpbWUg
bV9jdXJyZW50VGltZUZ1ZGdlRmFjdG9yOwogCiAgICAgU291cmNlQnVmZmVyQXBwZW5kTW9kZSBt
X2FwcGVuZE1vZGUgeyBTb3VyY2VCdWZmZXJBcHBlbmRNb2RlOjpTZWdtZW50cyB9OwogCkBAIC0x
OTAsNyArMTk0LDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9idWZmZXJGdWxsIHsgZmFsc2Ug
fTsKICAgICBSZWZQdHI8VGltZVJhbmdlcz4gbV9idWZmZXJlZDsKLSAgICBib29sIG1fYnVmZmVy
ZWREaXJ0eSB7IHRydWUgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQuaAppbmRleCBlY2QzYzc2M2YxMjRiN2MwZDRjNzU5NWJkM2E2YWYxNjVjM2Q5
NDNiLi5hN2YwNDEyZjE0MDkyMDU1MTJhNDM5Y2Y4YjFhNGUzMGNjY2RmZDUzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBAIGNsYXNzIEF1ZGlvVHJhY2tQcml2YXRl
OwogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTsKIGNsYXNzIE1lZGlhU2FtcGxlOwogY2xh
c3MgTWVkaWFEZXNjcmlwdGlvbjsKK2NsYXNzIFBsYXRmb3JtVGltZVJhbmdlczsKIGNsYXNzIFZp
ZGVvVHJhY2tQcml2YXRlOwogCiBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50IHsKQEAg
LTYzLDIxICs2NCwyMiBAQCBwdWJsaWM6CiAgICAgICAgIH07CiAgICAgICAgIFZlY3RvcjxUZXh0
VHJhY2tJbmZvcm1hdGlvbj4gdGV4dFRyYWNrczsKICAgICB9OwotICAgIHZpcnR1YWwgdm9pZCBz
b3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJ
bml0aWFsaXphdGlvblNlZ21lbnQmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZl
clByaXZhdGVBcHBlbmRFcnJvcihib29sIGRlY29kZUVycm9yKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUo
ZG91YmxlIGZyYW1lRHVyYXRpb24pID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVy
UHJpdmF0ZURpZERyb3BTYW1wbGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemF0aW9uU2Vn
bWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc291cmNlQnVmZmVyUHJpdmF0ZVN0cmVhbUVuZGVkV2l0aERlY29kZUVycm9yKCkgPSAwOwot
ICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VCdWZmZXJQcml2YXRlSGFzQXVkaW8oKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbygpIGNvbnN0ID0g
MDsKIAorICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9v
bCBkZWNvZGVFcnJvcikgPSAwOwogICAgIGVudW0gY2xhc3MgQXBwZW5kUmVzdWx0IDogdWludDhf
dCB7CiAgICAgICAgIEFwcGVuZFN1Y2NlZWRlZCwKICAgICAgICAgUmVhZFN0cmVhbUZhaWxlZCwK
ICAgICAgICAgUGFyc2luZ0ZhaWxlZAogICAgIH07CiAgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1
ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUm
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBs
ZShkb3VibGUgZnJhbWVEdXJhdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZm
ZXJQcml2YXRlRGlkRHJvcFNhbXBsZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVm
ZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChjb25zdCBQbGF0Zm9y
bVRpbWVSYW5nZXMmKSA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0
ZURpZFJlY2VpdmVSZW5kZXJpbmdFcnJvcihpbnQgZXJyb3JDb2RlKSA9IDA7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUu
aAppbmRleCAwYzQxM2MyZGRmNWQ5ZGEyYTE1YjExMzVjMDhlNTEwODUyYjgwMmM2Li5lYTVhMjlj
ZWI1Y2ZlOWYwMjQyN2M1ZWFkZGMxNjQyNzRjYjZkNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgKQEAgLTY0LDcgKzY0
LDYgQEAgcHVibGljOgogICAgIHVzaW5nIFNlbGVjdGVkQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rp
b248dm9pZChWaWRlb1RyYWNrUHJpdmF0ZSYsIGJvb2wgc2VsZWN0ZWQpPjsKICAgICB2b2lkIHNl
dFNlbGVjdGVkQ2hhbmdlZENhbGxiYWNrKFNlbGVjdGVkQ2hhbmdlZENhbGxiYWNrJiYgY2FsbGJh
Y2spIHsgbV9zZWxlY3RlZENoYW5nZWRDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOyB9CiAK
LQogcHJvdGVjdGVkOgogICAgIFZpZGVvVHJhY2tQcml2YXRlKCkgPSBkZWZhdWx0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgKaW5k
ZXggMTEzNmZkMjUyYjgyZmVjYzc2YjdlOThmYjRkOGViYWI1Y2VlYjk0NS4uNjhjZmQ1MjM0NmI5
YzM1OGNkM2QxNzUwOTNjNTdkYzhkNzk3OGJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaApAQCAtNjIsMTQgKzYyLDE1IEBAIHB1
YmxpYzoKICAgICBzdGF0aWMgUmVmPE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IGNyZWF0ZShN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqLCBNZWRpYVNvdXJjZVByaXZhdGVD
bGllbnQqKTsKICAgICB2aXJ0dWFsIH5NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKCk7CiAKLSAg
ICBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqIHBsYXllcigpIGNvbnN0IHsg
cmV0dXJuIG1fcGxheWVyOyB9CisgICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDKiBwbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXllci5nZXQoKTsgfQogICAgIGNvbnN0
IFZlY3RvcjxSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+PiYgc291cmNlQnVmZmVy
cygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQnVmZmVyczsgfQogICAgIGNvbnN0IFZlY3RvcjxT
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyo+JiBhY3RpdmVTb3VyY2VCdWZmZXJzKCkgY29uc3Qg
eyByZXR1cm4gbV9hY3RpdmVTb3VyY2VCdWZmZXJzOyB9CiAKICAgICBBZGRTdGF0dXMgYWRkU291
cmNlQnVmZmVyKGNvbnN0IENvbnRlbnRUeXBlJiwgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGU+
Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2
b2lkIGR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKICAgICB2b2lk
IG1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cykgb3ZlcnJpZGU7CiAgICAgdm9pZCB1
bm1hcmtFbmRPZlN0cmVhbSgpIG92ZXJyaWRlOworICAgIGJvb2wgaXNFbmRlZCgpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIG1faXNFbmRlZDsgfQogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
IHJlYWR5U3RhdGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFJlYWR5U3RhdGUoTWVk
aWFQbGF5ZXI6OlJlYWR5U3RhdGUpIG92ZXJyaWRlOwogICAgIHZvaWQgd2FpdEZvclNlZWtDb21w
bGV0ZWQoKSBvdmVycmlkZTsKQEAgLTEyOSw3ICsxMzAsNyBAQCBwcml2YXRlOgogCiAgICAgZnJp
ZW5kIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOwogCi0gICAgTWVkaWFQbGF5ZXJQ
cml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBtX3BsYXllcjsKKyAgICBXZWFrUHRyPE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gbV9wbGF5ZXI7CiAgICAgUmVmUHRyPE1lZGlh
U291cmNlUHJpdmF0ZUNsaWVudD4gbV9jbGllbnQ7CiAgICAgVmVjdG9yPFJlZlB0cjxTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQz4+IG1fc291cmNlQnVmZmVyczsKICAgICBWZWN0b3I8U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMqPiBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQppbmRleCBi
MDAzOTMxYzdkNzU5ZjI5ZDllMDY2ZmIxMjAyMzA3Y2Y1MjQ5NTY2Li41NmZkODk1MTljNGEyYmJm
ZTk5ODFkZjhkZDJmZDI1MDkzOWFhNWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpD
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KQEAgLTU0LDcgKzU0LDcgQEAgUmVmPE1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmNyZWF0
ZShNZWRpYVBsYXllclByaXYKIH0KIAogTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6TWVkaWFT
b3VyY2VQcml2YXRlQVZGT2JqQyhNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMq
IHBhcmVudCwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50KiBjbGllbnQpCi0gICAgOiBtX3BsYXll
cihwYXJlbnQpCisgICAgOiBtX3BsYXllcihtYWtlV2Vha1B0cihwYXJlbnQpKQogICAgICwgbV9j
bGllbnQoY2xpZW50KQogICAgICwgbV9pc0VuZGVkKGZhbHNlKQogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRApAQCAtMTI4LDcgKzEyOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVS
YW5nZXM+IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmJ1ZmZlcmVkKCkKICAgICByZXR1cm4g
bV9jbGllbnQtPmJ1ZmZlcmVkKCk7CiB9CiAKLXZvaWQgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2Jq
Qzo6ZHVyYXRpb25DaGFuZ2VkKCkKK3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6ZHVy
YXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpCiB7CiAgICAgbV9wbGF5ZXItPmR1cmF0aW9u
Q2hhbmdlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5oCmluZGV4IDU0NjUzMmJhMTllYTQ0ZjhmYWY0OWFkMTk3NTIxZjk3ZThl
MWVlNjguLjVmMjA5ODViNjhiMGExNGYzMjdiM2Q0ZTQzMTg3NjU1MmIwMGI3M2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1Nv
dXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKQEAg
LTI4LDcgKzI4LDExIEBACiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2luY2x1ZGUgIlNv
dXJjZUJ1ZmZlclBhcnNlci5oIgorI2luY2x1ZGUgPHd0Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8d3RmL1R5
cGVDYXN0cy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgogCiBPQkpDX0NMQVNTIEFWQXNzZXQ7CkBAIC03OCw2ICs4MiwxMCBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVudCB7
IGZhbHNlIH07CiAgICAgYm9vbCBtX3BhcnNlclN0YXRlV2FzUmVzZXQgeyBmYWxzZSB9OwogCisg
ICAgTG9jayBtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5TXV0ZXg7CisgICAgQ29uZGl0aW9uIG1f
dHJhY2tCdWZmZXJNYW5hZ2VyUmVhZHlDb25kaXRpb247CisgICAgSGFzaE1hcDx1aW50NjRfdCwg
Ym9vbD4gbV90cmFja0J1ZmZlck1hbmFnZXJSZWFkeU1hcDsKKwogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAogICAgIFJlZlB0cjxjb25zdCBXVEY6OkxvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29u
c3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyIHsgbnVsbHB0ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KaW5kZXggMzVkOWY1NTBj
M2IyMTA0MWFlZjdkMmE2NDNiOGFhYzdiNGEzOTU1Yi4uOTNlYjNmOGI0ZjAwMzgyNDI1MWFmOWNh
YTlhNjlkMjczNTFjYzQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0yNTgsNyArMjU4LDE5IEBAIHZvaWQgU291cmNl
QnVmZmVyUGFyc2VyQVZGT2JqQzo6c2V0TG9nZ2VyKGNvbnN0IExvZ2dlciYgbG9nZ2VyLCBjb25z
dCB2b2lkKiBsb2dJCiAKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUGFyc2VT
dHJlYW1EYXRhQXNBc3NldChBVkFzc2V0KiBhc3NldCkKIHsKLSAgICBjYWxsT25NYWluVGhyZWFk
KFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyksIGFzc2V0ID0gcmV0YWluUHRyKGFz
c2V0KV0geworICAgIFZlY3Rvcjx1aW50NjRfdD4gdHJhY2tJRHM7CisgICAgZm9yIChBVkFzc2V0
VHJhY2sqIHRyYWNrIGluIFthc3NldCB0cmFja3NdKSB7CisgICAgICAgIGlmIChbdHJhY2sgaGFz
TWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFjdGVyaXN0aWNWaXN1YWxdIHx8IFt0cmFj
ayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFDaGFyYWN0ZXJpc3RpY0F1ZGlibGVdKQor
ICAgICAgICAgICAgdHJhY2tJRHMuYXBwZW5kKFt0cmFjayB0cmFja0lEXSk7CisgICAgfQorCisg
ICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdHJhY2tCdWZmZXJNYW5hZ2Vy
UmVhZHlNdXRleCk7CisgICAgICAgIGZvciAoYXV0byB0cmFja0lEIDogdHJhY2tJRHMpCisgICAg
ICAgICAgICBtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5TWFwLmFkZCh0cmFja0lELCBmYWxzZSk7
CisgICAgfQorCisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgc3Ryb25nVGhpcyA9IG1ha2VS
ZWYoKnRoaXMpLCBhc3NldCA9IHJldGFpblB0cihhc3NldCksIHRyYWNrSURzID0gV1RGTW92ZSh0
cmFja0lEcyldKCkgbXV0YWJsZSB7CiAgICAgICAgIG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJ
bml0aWFsaXphdGlvblNlZ21lbnQgPSBmYWxzZTsKIAogICAgICAgICBpZiAoIW1fZGlkUGFyc2VJ
bml0aWFsaXphdGlvbkRhdGFDYWxsYmFjaykKQEAgLTI5NSw3ICszMDcsMTMgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQq
IGFzc2V0KQogICAgICAgICAgICAgLy8gRklYTUUoMTI1MTYxKSAgICA6IEFkZCBUZXh0VHJhY2sg
c3VwcG9ydAogICAgICAgICB9CiAKLSAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0
YUNhbGxiYWNrKFdURk1vdmUoc2VnbWVudCkpOworICAgICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6
YXRpb25EYXRhQ2FsbGJhY2soV1RGTW92ZShzZWdtZW50KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgdHJhY2tJRHMgPSBXVEZNb3ZlKHRyYWNrSURzKV0oKSBtdXRhYmxl
IHsKKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV90cmFja0J1ZmZlck1hbmFn
ZXJSZWFkeU11dGV4KTsKKyAgICAgICAgICAgIGZvciAoYXV0byB0cmFja0lEIDogdHJhY2tJRHMp
CisgICAgICAgICAgICAgICAgbV90cmFja0J1ZmZlck1hbmFnZXJSZWFkeU1hcC5zZXQodHJhY2tJ
RCwgdHJ1ZSk7CisKKyAgICAgICAgICAgIG1fdHJhY2tCdWZmZXJNYW5hZ2VyUmVhZHlDb25kaXRp
b24ubm90aWZ5QWxsKCk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCkBAIC0zMTAsNiArMzI4
LDE2IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkRmFpbFRvUGFyc2VTdHJl
YW1EYXRhV2l0aEVycm9yKE5TRXJyb3IqIGVycm9yCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKHVpbnQ2NF90IHRyYWNrSUQsIENN
U2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVu
c2lnbmVkIGZsYWdzKQogewogICAgIFVOVVNFRF9QQVJBTShmbGFncyk7CisKKyAgICAvLyBXYWl0
IGZvciB0aGUgdHJhY2sgYnVmZmVyIG1hbmFnZXIgaXMgcmVhZHkgZm9yIHRoaXMgdHJhY2sgKGlm
IHRoZSB0cmFjayBleGlzdHMgaW4gdGhlCisgICAgLy8gaW5pdGlhbGl6YXRpb24gc2VnbWVudCkK
KyAgICB7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8TG9jaz4gbG9jayhtX3RyYWNrQnVmZmVy
TWFuYWdlclJlYWR5TXV0ZXgpOworICAgICAgICBtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5Q29u
ZGl0aW9uLndhaXQobG9jaywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
dHJhY2tJRF0geworICAgICAgICAgICAgcmV0dXJuICFtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5
TWFwLmNvbnRhaW5zKHRyYWNrSUQpIHx8IG1fdHJhY2tCdWZmZXJNYW5hZ2VyUmVhZHlNYXAuZ2V0
KHRyYWNrSUQpOworICAgICAgICB9KTsKKyAgICB9CisKICAgICBjYWxsT25NYWluVGhyZWFkKFt0
aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyksIHNhbXBsZUJ1ZmZlciA9IHJldGFpblB0
cihzYW1wbGVCdWZmZXIpLCB0cmFja0lELCBtZWRpYVR5cGUgPSBtZWRpYVR5cGVdIHsKICAgICAg
ICAgaWYgKCFtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjaykKICAgICAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQy5oCmluZGV4IDhiMWVlYTYzMDA3ZWQ1YzRkMDg3NDQ2ZTc0M2IxM2E0YzFjYzAwYmQuLjFm
NjI1YjNjNzhlODNlNTExNDQ4MDA5YmJjNDQ5NThlMzYzYWQ0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApAQCAtOTEsOSAr
OTEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5p
dGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCh1aW50NjRfdCB0cmFja0lEKTsKICAgICB2b2lkIGRp
ZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZvclRyYWNrSUQoUmVm
PFVpbnQ4QXJyYXk+JiYsIHVpbnQ2NF90IHRyYWNrSUQsIEJveDxCaW5hcnlTZW1hcGhvcmU+KTsK
IAotICAgIGJvb2wgaGFzVmlkZW8oKSBjb25zdDsKICAgICBib29sIGhhc1NlbGVjdGVkVmlkZW8o
KSBjb25zdDsKLSAgICBib29sIGhhc0F1ZGlvKCkgY29uc3Q7CiAKICAgICB2b2lkIHRyYWNrRGlk
Q2hhbmdlU2VsZWN0ZWQoVmlkZW9UcmFja1ByaXZhdGUmLCBib29sIHNlbGVjdGVkKTsKICAgICB2
b2lkIHRyYWNrRGlkQ2hhbmdlRW5hYmxlZChBdWRpb1RyYWNrUHJpdmF0ZSYsIGJvb2wgZW5hYmxl
ZCk7CkBAIC0xNDAsNyArMTM4LDcgQEAgcHJpdmF0ZToKICAgICBleHBsaWNpdCBTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKiwgUmVmPFNvdXJjZUJ1
ZmZlclBhcnNlcj4mJik7CiAKICAgICB1c2luZyBJbml0aWFsaXphdGlvblNlZ21lbnQgPSBTb3Vy
Y2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQ7Ci0gICAgdm9pZCBk
aWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJik7CisgICAg
dm9pZCBkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJiwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRpZEVuY291bnRlckVycm9y
RHVyaW5nUGFyc2luZyhpbnQzMl90KTsKICAgICB2b2lkIGRpZFByb3ZpZGVNZWRpYURhdGFGb3JU
cmFja0lEKFJlZjxNZWRpYVNhbXBsZT4mJiwgdWludDY0X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5n
JiBtZWRpYVR5cGUpOwogCkBAIC0xNTQsNiArMTUyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGZs
dXNoKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpIGZpbmFsOwogICAgIHZvaWQgZW5xdWV1ZVNh
bXBsZShSZWY8TWVkaWFTYW1wbGU+JiYsIGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpIGZpbmFs
OwogICAgIGJvb2wgaXNSZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNr
SUQpIGZpbmFsOworICAgIE1lZGlhVGltZSB0aW1lRnVkZ2VGYWN0b3IoKSBjb25zdCBmaW5hbDsK
ICAgICB2b2lkIHNldEFjdGl2ZShib29sKSBmaW5hbDsKICAgICBib29sIGlzQWN0aXZlKCkgY29u
c3QgZmluYWw7CiAgICAgdm9pZCBub3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhj
b25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggNGQ2MTQ3ZTkxNjQ5
MjRmNDJkNGRkZWY0YTZiNmY4MGM2ZTUyYzM4ZS4uZTdlN2IxYTRjMDU4MzQ4M2VlMmJiYjMzYjNk
MmU2OGY3ZmFjZjU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTMwOCwxMCArMzA4LDEyIEBAIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVBy
aXZhdGVBVkZPYmpDCiAKICAgICBzb3VyY2VCdWZmZXJNYXAoKS5hZGQobV9tYXBJRCwgbWFrZVdl
YWtQdHIoKnRoaXMpKTsKIAotICAgIG1fcGFyc2VyLT5zZXREaWRQYXJzZUluaXRpYWxpemF0aW9u
RGF0YUNhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoSW5pdGlhbGl6YXRp
b25TZWdtZW50JiYgc2VnbWVudCkgbXV0YWJsZSB7CisgICAgbV9wYXJzZXItPnNldERpZFBhcnNl
SW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
dGhpcyldIChJbml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG11dGFibGUgewogICAgICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICB3ZWFr
VGhpcy0+ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoV1RGTW92ZShzZWdtZW50KSk7CisgICAg
ICAgIGlmICghd2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZGlkUGFy
c2VJbml0aWFsaXphdGlvbkRhdGEoV1RGTW92ZShzZWdtZW50KSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOwogICAgIH0pOwogCiAgICAgbV9wYXJzZXItPnNldERpZEVuY291bnRlckVycm9y
RHVyaW5nUGFyc2luZ0NhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoaW50
MzJfdCBlcnJvckNvZGUpIG11dGFibGUgewpAQCAtMzQ0LDcgKzM0Niw3IEBAIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoKQogICAgICAgICBt
X2hhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNl
Z21lbnQmJiBzZWdtZW50KQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFy
c2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFMV0FZ
U19MT0coTE9HSURFTlRJRklFUik7CiAKQEAgLTM4NCw3ICszODYsNyBAQCB2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXph
dGlvblNlZ21lbgogICAgIGlmIChtX21lZGlhU291cmNlKQogICAgICAgICBtX21lZGlhU291cmNl
LT5wbGF5ZXIoKS0+Y2hhcmFjdGVyaXN0aWNzQ2hhbmdlZCgpOwogCi0gICAgZGlkUmVjZWl2ZUlu
aXRpYWxpemF0aW9uU2VnbWVudChzZWdtZW50KTsKKyAgICBkaWRSZWNlaXZlSW5pdGlhbGl6YXRp
b25TZWdtZW50KFdURk1vdmUoc2VnbWVudCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkRW5jb3VudGVyRXJyb3JE
dXJpbmdQYXJzaW5nKGludDMyX3QgY29kZSkKQEAgLTU3Nyw4ICs1NzksNyBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphcHBlbmRDb21wbGV0ZWQoKQogICAgIGlmIChtX3BhcnNp
bmdTdWNjZWVkZWQgJiYgbV9tZWRpYVNvdXJjZSkKICAgICAgICAgbV9tZWRpYVNvdXJjZS0+cGxh
eWVyKCktPnNldExvYWRpbmdQcm9ncmVzc3NlZCh0cnVlKTsKIAotICAgIGlmIChtX2NsaWVudCkK
LSAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShtX3Bh
cnNpbmdTdWNjZWVkZWQgPyBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQ6
OkFwcGVuZFN1Y2NlZWRlZCA6IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3Vs
dDo6UGFyc2luZ0ZhaWxlZCk7CisgICAgU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kQ29tcGxl
dGVkKG1fcGFyc2luZ1N1Y2NlZWRlZCwgbV9tZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPmlz
RW5kZWQoKSA6IHRydWUpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjph
Ym9ydCgpCkBAIC02ODEsMjEgKzY4MiwxMSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdAogICAg
ICAgICBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c2V0UmVhZHlTdGF0ZShyZWFkeVN0YXRlKTsK
IH0KIAotYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6aGFzVmlkZW8oKSBjb25zdAot
ewotICAgIHJldHVybiBtX2NsaWVudCAmJiBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUhh
c1ZpZGVvKCk7Ci19Ci0KIGJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc1NlbGVj
dGVkVmlkZW8oKSBjb25zdAogewogICAgIHJldHVybiBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgIT0g
bm90Rm91bmQ7CiB9CiAKLWJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc0F1ZGlv
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jbGllbnQgJiYgbV9jbGllbnQtPnNvdXJjZUJ1ZmZl
clByaXZhdGVIYXNBdWRpbygpOwotfQotCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
Ojp0cmFja0RpZENoYW5nZVNlbGVjdGVkKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaywgYm9vbCBz
ZWxlY3RlZCkKIHsKICAgICBhdXRvIHRyYWNrSUQgPSB0cmFjay5pZCgpLnN0cmluZygpLnRvVUlu
dDY0KCk7CkBAIC0xMDYyLDcgKzEwNTMsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjplbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUsIGNvbnN0CiAKICAg
ICAgICAgYXV0byByZW5kZXJlciA9IG1fYXVkaW9SZW5kZXJlcnMuZ2V0KHRyYWNrSUQpOwogICAg
ICAgICBbcmVuZGVyZXIgZW5xdWV1ZVNhbXBsZUJ1ZmZlcjpwbGF0Zm9ybVNhbXBsZS5zYW1wbGUu
Y21TYW1wbGVCdWZmZXJdOwotICAgICAgICBpZiAobV9tZWRpYVNvdXJjZSAmJiAhc2FtcGxlLT5p
c05vbkRpc3BsYXlpbmcoKSkKKyAgICAgICAgaWYgKG1fbWVkaWFTb3VyY2UgJiYgIXNhbXBsZS0+
aXNOb25EaXNwbGF5aW5nKCkgJiYgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCkpCiAgICAgICAgICAg
ICBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c2V0SGFzQXZhaWxhYmxlQXVkaW9TYW1wbGUocmVu
ZGVyZXIuZ2V0KCksIHRydWUpOwogICAgIH0KIH0KQEAgLTEwOTEsNiArMTA4MiwxNCBAQCBib29s
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjppc1JlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3Qg
QXRvbVN0cmluZyYgdHJhY2tJRAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorTWVkaWFUaW1lIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0aW1lRnVkZ2VGYWN0b3IoKSBjb25zdAoreworICAg
IGlmIChtX21lZGlhU291cmNlKQorICAgICAgICByZXR1cm4gbV9tZWRpYVNvdXJjZS0+dGltZUZ1
ZGdlRmFjdG9yKCk7CisKKyAgICByZXR1cm4gU291cmNlQnVmZmVyUHJpdmF0ZTo6dGltZUZ1ZGdl
RmFjdG9yKCk7Cit9CisKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNldEFjdGl2
ZShib29sIGlzQWN0aXZlKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgaXNBY3Rp
dmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAppbmRleCAwZGM4MWYwNmQyN2RjZDA5NzM5ZDA3ZTQ1
MDc1OGI2MzYyOWQ3MWM3Li5lMTBjZGFiYzQ3YTQ0NWQzMWNhOTBmOWJmNDgxMmZmYzRhMDMxMTY3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3Vy
Y2VCdWZmZXJQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk1l
ZGlhUGxheWVyRW51bXMuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50Lmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVWludDhBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9D
b21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVz
cGFjZSBXVEYgewpAQCAtNjksNyArNzAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBXaWxsIGJlIGNh
bGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgdXNpbmcgSW5pdGlhbGl6YXRpb25TZWdtZW50
ID0gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OwotICAg
IHVzaW5nIERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9u
PHZvaWQoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYpPjsKKyAgICB1c2luZyBEaWRQYXJzZUluaXRp
YWxpemF0aW9uRGF0YUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEluaXRpYWxpemF0aW9u
U2VnbWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpPjsKICAgICB2b2lkIHNldERp
ZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soRGlkUGFyc2VJbml0aWFsaXphdGlvbkRh
dGFDYWxsYmFjayYmIGNhbGxiYWNrKQogICAgIHsKICAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxp
emF0aW9uRGF0YUNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJN
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZl
clBhcnNlcldlYk0uY3BwCmluZGV4IDg0YmM1NzRkYzBmMDNmOGZmYjQzNjg5MGZjNGExYTVkZWFh
OWU2NDEuLjY0YTUwMDEyODg2MTZkZTJkNzdmMzljYjg4MmJlOWVjN2Y2ZDUwMjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCkBAIC03MTYsMTIgKzcxNiwyNSBAQCBTdGF0dXMg
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25DbHVzdGVyQmVnaW4oY29uc3QgRWxlbWVudE1ldGFk
YXRhJiBtZXRhZGF0YSwgYwogICAgICAgICByZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3Vn
aE1lbW9yeSk7CiAKICAgICBpZiAobV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCAm
JiBtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2spIHsKLSAgICAgICAgY2FsbE9u
TWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpbml0aWFs
aXphdGlvblNlZ21lbnQgPSBXVEZNb3ZlKCptX2luaXRpYWxpemF0aW9uU2VnbWVudCldICgpIG11
dGFibGUgewotICAgICAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNr
KFdURk1vdmUoaW5pdGlhbGl6YXRpb25TZWdtZW50KSk7CisgICAgICAgIHsKKyAgICAgICAgICAg
IGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV90cmFja0J1ZmZlck1hbmFnZXJSZWFkeU11dGV4KTsK
KyAgICAgICAgICAgIGZvciAoYXV0byB0cmFja0lEIDogbV9pbml0aWFsaXphdGlvblNlZ21lbnRU
cmFja0lEcykKKyAgICAgICAgICAgICAgICBtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5TWFwLmFk
ZCh0cmFja0lELCBmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluaXRpYWxpemF0aW9uU2Vn
bWVudCA9IFdURk1vdmUoKm1faW5pdGlhbGl6YXRpb25TZWdtZW50KSwgdHJhY2tJRHMgPSBXVEZN
b3ZlKG1faW5pdGlhbGl6YXRpb25TZWdtZW50VHJhY2tJRHMpXSgpIG11dGFibGUgeworICAgICAg
ICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFdURk1vdmUoaW5pdGlh
bGl6YXRpb25TZWdtZW50KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
dHJhY2tJRHMgPSBXVEZNb3ZlKHRyYWNrSURzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAg
ICBhdXRvIGxvY2tlciA9IGhvbGRMb2NrKG1fdHJhY2tCdWZmZXJNYW5hZ2VyUmVhZHlNdXRleCk7
CisgICAgICAgICAgICAgICAgZm9yIChhdXRvIHRyYWNrSUQgOiB0cmFja0lEcykKKyAgICAgICAg
ICAgICAgICAgICAgbV90cmFja0J1ZmZlck1hbmFnZXJSZWFkeU1hcC5zZXQodHJhY2tJRCwgdHJ1
ZSk7CisKKyAgICAgICAgICAgICAgICBtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5Q29uZGl0aW9u
Lm5vdGlmeUFsbCgpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0KICAgICBt
X2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkID0gZmFsc2U7CiAgICAgbV9pbml0aWFs
aXphdGlvblNlZ21lbnQgPSBudWxscHRyOworICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50VHJh
Y2tJRHMuY2xlYXIoKTsKIAogICAgIGlmIChjbHVzdGVyLnRpbWVjb2RlLmlzX3ByZXNlbnQoKSkK
ICAgICAgICAgbV9jdXJyZW50VGltZWNvZGUgPSBjbHVzdGVyLnRpbWVjb2RlLnZhbHVlKCk7CkBA
IC03MzgsMTAgKzc1MSwxMyBAQCBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25UcmFj
a0VudHJ5KGNvbnN0IEVsZW1lbnRNZXRhZGF0YSYgbWV0YWRhdGEsIGNvbgogICAgICAgICByZXR1
cm4gU3RhdHVzKFN0YXR1czo6a09rQ29tcGxldGVkKTsKIAogICAgIGF1dG8gdHJhY2tUeXBlID0g
dHJhY2tFbnRyeS50cmFja190eXBlLnZhbHVlKCk7Ci0gICAgaWYgKHRyYWNrVHlwZSA9PSBUcmFj
a1R5cGU6OmtWaWRlbykKKyAgICBpZiAodHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a1ZpZGVvKSB7
CiAgICAgICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50LT52aWRlb1RyYWNrcy5hcHBlbmQoeyBN
ZWRpYURlc2NyaXB0aW9uV2ViTTo6Y3JlYXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpLCBWaWRl
b1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRyYWNrRW50cnkpKSB9KTsKLSAg
ICBlbHNlIGlmICh0cmFja1R5cGUgPT0gVHJhY2tUeXBlOjprQXVkaW8pCisgICAgICAgIG1faW5p
dGlhbGl6YXRpb25TZWdtZW50VHJhY2tJRHMuYXBwZW5kKHRyYWNrRW50cnkudHJhY2tfdWlkLnZh
bHVlKCkpOworICAgIH0gZWxzZSBpZiAodHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a0F1ZGlvKSB7
CiAgICAgICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50LT5hdWRpb1RyYWNrcy5hcHBlbmQoeyBN
ZWRpYURlc2NyaXB0aW9uV2ViTTo6Y3JlYXRlKFRyYWNrRW50cnkodHJhY2tFbnRyeSkpLCBBdWRp
b1RyYWNrUHJpdmF0ZVdlYk06OmNyZWF0ZShUcmFja0VudHJ5KHRyYWNrRW50cnkpKSB9KTsKKyAg
ICAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRUcmFja0lEcy5hcHBlbmQodHJhY2tFbnRyeS50
cmFja191aWQudmFsdWUoKSk7CisgICAgfQogICAgIG1fdHJhY2tzLmFwcGVuZCh7IFRyYWNrRW50
cnkodHJhY2tFbnRyeSksIHsgfSwgbnVsbHB0ciwgbnVsbHB0ciwgMCB9KTsKIAogICAgIHJldHVy
biBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOwpAQCAtMTIwMyw2ICsxMjE5LDE0IEBAIHdl
Ym06OlN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkZyYW1lKGNvbnN0IEZyYW1lTWV0
YWRhdGEmIG1ldGFkYXRhLCBSZWFkCiAKICAgICAgICAgYXV0byB0cmFja0lEID0gdHJhY2sudHJh
Y2tfdWlkLnZhbHVlKCk7CiAKKyAgICAgICAgLy8gV2FpdCBmb3IgdGhlIHRyYWNrIGJ1ZmZlciBt
YW5hZ2VyIGlzIHJlYWR5IGZvciB0aGlzIHRyYWNrCisgICAgICAgIHsKKyAgICAgICAgICAgIHN0
ZDo6dW5pcXVlX2xvY2s8TG9jaz4gbG9jayhtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5TXV0ZXgp
OworICAgICAgICAgICAgbV90cmFja0J1ZmZlck1hbmFnZXJSZWFkeUNvbmRpdGlvbi53YWl0KGxv
Y2ssIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHRyYWNrSURdIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gIW1fdHJhY2tCdWZmZXJNYW5hZ2VyUmVhZHlNYXAuY29udGFp
bnModHJhY2tJRCkgfHwgbV90cmFja0J1ZmZlck1hbmFnZXJSZWFkeU1hcC5nZXQodHJhY2tJRCk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQo
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2FtcGxlQnVmZmVyID0gV1RG
TW92ZShzYW1wbGVCdWZmZXIpLCB0cmFja0lEXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlm
ICghbV9kaWRQcm92aWRlTWVkaWFEYXRhQ2FsbGJhY2spCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291
cmNlQnVmZmVyUGFyc2VyV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCmluZGV4IDQ1YmQ2OWZmYjQ3MTJiZTUyNDVl
NjI2Y2ZiN2NkZTk4N2U4YWJhY2YuLjI4ZjFjMDkxOGU3NGE4MThiY2YwMGE4ZDNkMzU0YjBjYmRl
OWI3NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKQEAgLTMxLDcgKzMxLDEwIEBA
CiAjaW5jbHVkZSA8Y29tbW9uL3ZwOV9oZWFkZXJfcGFyc2VyLmg+CiAjaW5jbHVkZSA8d2VibS9j
YWxsYmFjay5oPgogI2luY2x1ZGUgPHdlYm0vc3RhdHVzLmg+CisjaW5jbHVkZSA8d3RmL0NvbmRp
dGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvTWVkaWFUaW1lLmg+CiAj
aW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CkBAIC0x
NDEsNiArMTQ0LDExIEBAIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8QmxvY2tWYXJpYW50PiBtX2N1
cnJlbnRCbG9jazsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gbV9yZXdpbmRUb1Bvc2l0aW9uOwog
CisgICAgVmVjdG9yPHVpbnQ2NF90PiBtX2luaXRpYWxpemF0aW9uU2VnbWVudFRyYWNrSURzOwor
ICAgIExvY2sgbV90cmFja0J1ZmZlck1hbmFnZXJSZWFkeU11dGV4OworICAgIENvbmRpdGlvbiBt
X3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5Q29uZGl0aW9uOworICAgIEhhc2hNYXA8dWludDY0X3Qs
IGJvb2w+IG1fdHJhY2tCdWZmZXJNYW5hZ2VyUmVhZHlNYXA7CisKICNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQKICAgICBSZWZQdHI8Y29uc3QgV1RGOjpMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNv
bnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllciB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VQcml2
YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvTWVkaWFTb3VyY2VQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA3NzFlYTA4Y2Vm
NDQxYzU5ZDY4NGZjNWNlZGIzM2YwNmEzNmZjZjgxLi5lZmVmN2JhM2MyODJlZTY1MzA4ZTA1NGUz
Mzc2YjRlNWEyZWRiMzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJj
ZVByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgTWVkaWFTb3VyY2VQ
cml2YXRlR1N0cmVhbWVyOjpyZW1vdmVTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVyUHJpdmF0ZSog
c291cmNlCiAgICAgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLnJlbW92ZShzb3VyY2VCdWZmZXJQcml2
YXRlR1N0cmVhbWVyLmdldCgpKTsKIH0KIAotdm9pZCBNZWRpYVNvdXJjZVByaXZhdGVHU3RyZWFt
ZXI6OmR1cmF0aW9uQ2hhbmdlZCgpCit2b2lkIE1lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1lcjo6
ZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKIApAQCAtMTA5LDExICsxMDksMTMgQEAgdm9pZCBNZWRpYVNvdXJjZVByaXZhdGVH
U3RyZWFtZXI6Om1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cyBzdGF0dXMpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBtX3BsYXllclByaXZhdGUubWFya0VuZE9m
U3RyZWFtKHN0YXR1cyk7CisgICAgbV9pc0VuZGVkID0gdHJ1ZTsKIH0KIAogdm9pZCBNZWRpYVNv
dXJjZVByaXZhdGVHU3RyZWFtZXI6OnVubWFya0VuZE9mU3RyZWFtKCkKIHsKICAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIG1faXNFbmRlZCA9IGZhbHNlOwogfQogCiBNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZSBNZWRpYVNvdXJjZVByaXZhdGVHU3RyZWFtZXI6OnJlYWR5U3RhdGUoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9NZWRpYVNvdXJjZVByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VQcml2YXRlR1N0cmVhbWVyLmgKaW5k
ZXggMjUyNGFhMGY5YmY3NWNlY2RmNzgzNjIzN2QxNDI0N2EzYzI0NmVhZi4uMzRjZjcwYjcyM2Q3
ZGFlODFjMGRkNzRjMDUyZDI3Y2U2ZjRiZTUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVByaXZhdGVHU3RyZWFt
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNl
L01lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC02MSw5ICs2MSwxMCBAQCBwdWJsaWM6
CiAgICAgQWRkU3RhdHVzIGFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDb250ZW50VHlwZSYsIFJlZlB0
cjxTb3VyY2VCdWZmZXJQcml2YXRlPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlU291cmNl
QnVmZmVyKFNvdXJjZUJ1ZmZlclByaXZhdGUqKTsKIAotICAgIHZvaWQgZHVyYXRpb25DaGFuZ2Vk
KCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBtYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMpIG92
ZXJyaWRlOwogICAgIHZvaWQgdW5tYXJrRW5kT2ZTdHJlYW0oKSBvdmVycmlkZTsKKyAgICBib29s
IGlzRW5kZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzRW5kZWQ7IH0KIAogICAgIE1l
ZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2
b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpIG92ZXJyaWRlOwpAQCAt
OTQsNiArOTUsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8U291cmNlQnVmZmVyUHJpdmF0ZUdT
dHJlYW1lcio+IG1fYWN0aXZlU291cmNlQnVmZmVyczsKICAgICBSZWY8TWVkaWFTb3VyY2VQcml2
YXRlQ2xpZW50PiBtX21lZGlhU291cmNlOwogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ck1TRSYgbV9wbGF5ZXJQcml2YXRlOworICAgIGJvb2wgbV9pc0VuZGVkIHsgZmFsc2UgfTsKICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsK
ICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3Vy
Y2VQcml2YXRlLmNwcAppbmRleCA5YjRkMWY4MjEwMDFjYzU5YmY4NzA4YWNmNzgyNTZhMjkxYzU2
ZjFjLi45NzlhODFkM2I5MGNiNjYwYWU3N2JhYWIyOGRhMGVjOTZjYjM5MjAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJj
ZVByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3Vy
Y2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgc3RkOjp1bmlx
dWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6YnVmZmVy
ZWQoKQogICAgIHJldHVybiBtX2NsaWVudC0+YnVmZmVyZWQoKTsKIH0KIAotdm9pZCBNb2NrTWVk
aWFTb3VyY2VQcml2YXRlOjpkdXJhdGlvbkNoYW5nZWQoKQordm9pZCBNb2NrTWVkaWFTb3VyY2VQ
cml2YXRlOjpkdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikKIHsKICAgICBtX3BsYXll
ci51cGRhdGVEdXJhdGlvbihkdXJhdGlvbigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQ
cml2YXRlLmgKaW5kZXggN2E2OTNhZWQzNWNhNmM5YzkzNjkxMDJhYTU1MjRmZTMwZmFkNDQwMS4u
ZTNkOTgwN2M2YjE1MjFmYzliMDRlNjRiMTY5ZjVlZWRkNDY0NTE5OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2
YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
TWVkaWFTb3VyY2VQcml2YXRlLmgKQEAgLTgwLDggKzgwLDkgQEAgcHJpdmF0ZToKIAogICAgIC8v
IE1lZGlhU291cmNlUHJpdmF0ZSBPdmVycmlkZXMKICAgICBBZGRTdGF0dXMgYWRkU291cmNlQnVm
ZmVyKGNvbnN0IENvbnRlbnRUeXBlJiwgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGU+Jikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGR1
cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIG1hcmtF
bmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cykgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0VuZGVk
KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0VuZGVkOyB9CiAgICAgdm9pZCB1bm1hcmtF
bmRPZlN0cmVhbSgpIG92ZXJyaWRlOwogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5
U3RhdGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2
YXRlLmNwcAppbmRleCAyZmM5MGQzNTRmNmI5NjdjNWM5NTAyN2IyMjNlNGEzNTc4MDBmMzBhLi5j
NjExMDY1YzM4ZjZiOTBkMmRhNDIxNzdiOTU0Mjc0ZmU4N2EyYTFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2
YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgTW9ja1Nv
dXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQog
CiAgICAgd2hpbGUgKG1faW5wdXRCdWZmZXIuc2l6ZSgpICYmIHJlc3VsdCA9PSBTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2NlZWRlZCkgewogICAgICAg
ICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobV9pbnB1dEJ1ZmZlci5kYXRhKCks
IG1faW5wdXRCdWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgc2l6ZV90IGJveExlbmd0aCA9IE1vY2tC
b3g6OnBlZWtMZW5ndGgoYnVmZmVyLnB0cigpKTsKKyAgICAgICAgdWludDY0X3QgYm94TGVuZ3Ro
ID0gTW9ja0JveDo6cGVla0xlbmd0aChidWZmZXIucHRyKCkpOwogICAgICAgICBpZiAoYm94TGVu
Z3RoID4gYnVmZmVyLT5ieXRlTGVuZ3RoKCkpCiAgICAgICAgICAgICBicmVhazsKIApAQCAtMTU5
LDYgKzE1OSwxMCBAQCB2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQoVmVjdG9y
PHVuc2lnbmVkIGNoYXI+JiYgZGF0YSkKICAgICAgICAgbV9pbnB1dEJ1ZmZlci5yZW1vdmUoMCwg
Ym94TGVuZ3RoKTsKICAgICB9CiAKKyAgICAvLyBSZXNvbHZlIHRoZSBjaGFuZ2VzIGluIFRyYWNr
QnVmZmVycycgYnVmZmVyZWQgcmFuZ2VzCisgICAgLy8gaW50byB0aGUgU291cmNlQnVmZmVyJ3Mg
YnVmZmVyZWQgcmFuZ2VzCisgICAgdXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKG1fbWVk
aWFTb3VyY2UtPmlzRW5kZWQoKSk7CisKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xp
ZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUocmVzdWx0KTsKIH0KQEAgLTE5
MSw3ICsxOTUsNyBAQCB2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlSW5p
dGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IE1vY2tJbml0aWFsaQogICAgICAgICB9CiAgICAgfQog
Ci0gICAgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVu
dChzZWdtZW50KTsKKyAgICBTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlSW5pdGlhbGl6
YXRpb25TZWdtZW50KFdURk1vdmUoc2VnbWVudCksIFtdKCkgeyB9KTsKIH0KIAogdm9pZCBNb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZVNhbXBsZShjb25zdCBNb2NrU2FtcGxlQm94
JiBzYW1wbGVCb3gpCkBAIC0yNDksNyArMjUzLDcgQEAgTWVkaWFUaW1lIE1vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlOjptaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lRm9yVHJhY2tJRChjb24K
ICAgICByZXR1cm4gbV9taW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lOwogfQogCi12b2lk
IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQo
Y29uc3QgQXRvbVN0cmluZyYsIHNpemVfdCBtYXhRdWV1ZURlcHRoKQordm9pZCBNb2NrU291cmNl
QnVmZmVyUHJpdmF0ZTo6c2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JUcmFja0lEKGNvbnN0IEF0b21T
dHJpbmcmLCB1aW50NjRfdCBtYXhRdWV1ZURlcHRoKQogewogICAgIG1fbWF4UXVldWVEZXB0aCA9
IG1heFF1ZXVlRGVwdGg7CiB9CkBAIC0zMjIsMTYgKzMyNiw2IEBAIHZvaWQgTW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGU6OmVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmIHNhbXBsZSwgY29u
c3QgQXRvCiAgICAgbV9lbnF1ZXVlZFNhbXBsZXMuYXBwZW5kKHRvU3RyaW5nKHNhbXBsZS5nZXQo
KSkpOwogfQogCi1ib29sIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpoYXNWaWRlbygpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fY2xpZW50ICYmIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRl
SGFzVmlkZW8oKTsKLX0KLQotYm9vbCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6aGFzQXVkaW8o
KSBjb25zdAotewotICAgIHJldHVybiBtX2NsaWVudCAmJiBtX2NsaWVudC0+c291cmNlQnVmZmVy
UHJpdmF0ZUhhc0F1ZGlvKCk7Ci19Ci0KICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIFdURkxv
Z0NoYW5uZWwmIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpsb2dDaGFubmVsKCkgY29uc3QKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVk
aWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaAppbmRleCBiNmM1NDdkZDk1YzFmNmIw
YmRkZDJlNDExYWYxNDJiMzk4ZmRmZmU1Li44YjJhMTM4OTQ2YzI4ZjJmM2U3ZGViZmU3MzY1Y2Nj
N2JhZmJhM2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oCkBAIC00Niw5
ICs0Niw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJNZWRpYVNvdXJjZSgpIHsgbV9tZWRp
YVNvdXJjZSA9IG51bGxwdHI7IH0KIAotICAgIGJvb2wgaGFzVmlkZW8oKSBjb25zdDsKLSAgICBi
b29sIGhhc0F1ZGlvKCkgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTW9ja1NvdXJj
ZUJ1ZmZlclByaXZhdGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSopOwogCkBAIC03NSw3ICs3Miw3
IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8U3RyaW5nPiBlbnF1ZXVlZFNhbXBsZXNGb3JUcmFj
a0lEKGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKICAgICBNZWRpYVRpbWUgbWluaW11bVVwY29t
aW5nUHJlc2VudGF0aW9uVGltZUZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwot
ICAgIHZvaWQgc2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcm
LCBzaXplX3QpIGZpbmFsOworICAgIHZvaWQgc2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JUcmFja0lE
KGNvbnN0IEF0b21TdHJpbmcmLCB1aW50NjRfdCkgZmluYWw7CiAKICAgICB2b2lkIGRpZFJlY2Vp
dmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgTW9ja0luaXRpYWxpemF0aW9uQm94Jik7CiAg
ICAgdm9pZCBkaWRSZWNlaXZlU2FtcGxlKGNvbnN0IE1vY2tTYW1wbGVCb3gmKTsKQEAgLTk0LDcg
KzkxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNBY3RpdmUgeyBmYWxzZSB9OwogICAgIE1l
ZGlhVGltZSBtX21pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWU7CiAgICAgVmVjdG9yPFN0
cmluZz4gbV9lbnF1ZXVlZFNhbXBsZXM7Ci0gICAgT3B0aW9uYWw8c2l6ZV90PiBtX21heFF1ZXVl
RGVwdGg7CisgICAgT3B0aW9uYWw8dWludDY0X3Q+IG1fbWF4UXVldWVEZXB0aDsKICAgICBWZWN0
b3I8Y2hhcj4gbV9pbnB1dEJ1ZmZlcjsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFj
a1Byb3h5LmNwcAppbmRleCA5M2UyZjI3ZDgyZThmOTI0Zjc4NWM1MGE2NTA1MDVhZGI2YTM2NzI2
Li5lYWU5M2U3M2FiMGM1NzYzODBkNDU4Yzc5NDQ5MWEwNjYxMGI5N2I2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5
LmNwcApAQCAtNjAsNyArNjAsNyBAQCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uJiBS
ZW1vdGVBdWRpb1RyYWNrUHJveHk6OmNvbmZpZ3VyYXRpb24oKQogewogICAgIHN0YXRpYyBOZXZl
ckRlc3Ryb3llZDxUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9u
OwogCi0gICAgY29uZmlndXJhdGlvbi0+aWRlbnRpZmllciA9IG1fdHJhY2tQcml2YXRlLT5pZCgp
OworICAgIGNvbmZpZ3VyYXRpb24tPnRyYWNrSWQgPSBtX3RyYWNrUHJpdmF0ZS0+aWQoKTsKICAg
ICBjb25maWd1cmF0aW9uLT5sYWJlbCA9IG1fdHJhY2tQcml2YXRlLT5sYWJlbCgpOwogICAgIGNv
bmZpZ3VyYXRpb24tPmxhbmd1YWdlID0gbV90cmFja1ByaXZhdGUtPmxhbmd1YWdlKCk7CiAgICAg
Y29uZmlndXJhdGlvbi0+dHJhY2tJbmRleCA9IG1fdHJhY2tQcml2YXRlLT50cmFja0luZGV4KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5jcHAKaW5kZXggYzNiMDczNGE0ZWY5OGQyYTdlNzM5MGVhOTgwM2UzZTAz
NmI3ZWM1Mi4uNDJlZTc5YmIwNmU0NzUyNWRhYjM1NDI2ZDNhZGJhMTU4YTYzYTFjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5LmNwcApAQCAtMTM0LDEwICsxMzQsMTQgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXll
clByb3h5Ojpsb2FkKFVSTCYmIHVybCwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxl
PiYKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi12b2lkIFJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OmxvYWRNZWRpYVNvdXJjZShVUkwmJiB1cmwsIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRU
eXBlJiBjb250ZW50VHlwZSwgUmVtb3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyIG1lZGlhU291cmNl
SWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bG9hZE1lZGlhU291cmNl
KFVSTCYmIHVybCwgY29uc3QgV2ViQ29yZTo6Q29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBSZW1v
dGVNZWRpYVNvdXJjZUlkZW50aWZpZXIgbWVkaWFTb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBtX21lZGlhU291cmNlUHJveHkgPSBhZG9wdFJlZigqbmV3IFJl
bW90ZU1lZGlhU291cmNlUHJveHkobV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mo
KSwgbWVkaWFTb3VyY2VJZGVudGlmaWVyLCAqdGhpcykpOwogICAgIG1fcGxheWVyLT5sb2FkKHVy
bCwgY29udGVudFR5cGUsIG1fbWVkaWFTb3VyY2VQcm94eS5nZXQoKSk7CisKKyAgICBSZW1vdGVN
ZWRpYVBsYXllckNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAgICBnZXRDb25maWd1cmF0
aW9uKGNvbmZpZ3VyYXRpb24pOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29uZmln
dXJhdGlvbikpOwogfQogI2VuZGlmCiAKQEAgLTc1OSw3ICs3NjMsOCBAQCB2b2lkIFJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6OnVwZGF0ZUNhY2hlZFN0YXRlKCkKIAogICAgIGlmIChtX2J1ZmZlcmVk
Q2hhbmdlZCkgewogICAgICAgICBtX2J1ZmZlcmVkQ2hhbmdlZCA9IGZhbHNlOwotICAgICAgICBt
X2NhY2hlZFN0YXRlLmJ1ZmZlcmVkUmFuZ2VzID0gKm1fcGxheWVyLT5idWZmZXJlZCgpOworICAg
ICAgICBpZiAobV9lbmdpbmVJZGVudGlmaWVyICE9IE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5n
aW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uTVNFKQorICAgICAgICAgICAgbV9jYWNoZWRTdGF0
ZS5idWZmZXJlZFJhbmdlcyA9ICptX3BsYXllci0+YnVmZmVyZWQoKTsKICAgICB9CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXll
clByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5oCmluZGV4IGI4MjQ3NzEzYWRhZjFjNDUzZWE0YzY1ODFkYWQ0M2JiMWUwYzIwNjYu
LmFlNmFkOGI0NjBiOWY2YmRiM2IwMDQwZjc4MGJmMTk1ZjQ0OWJjZjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
aApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbG9hZChVUkwmJiwgT3B0
aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYmLCBjb25zdCBXZWJDb3JlOjpDb250ZW50
VHlwZSYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQ
bGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmKTsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAg
IHZvaWQgbG9hZE1lZGlhU291cmNlKFVSTCYmLCBjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYs
IFJlbW90ZU1lZGlhU291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBsb2FkTWVkaWFTb3VyY2Uo
VVJMJiYsIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiwgUmVtb3RlTWVkaWFTb3VyY2VJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJh
dGlvbiYmKT4mJik7CiAjZW5kaWYKICAgICB2b2lkIGNhbmNlbExvYWQoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHku
bWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCAwOGVhMTVjYzY2YjJlYTlkMDcwZGE2YmI3MWY4
OGI3NDUxY2YwMTU4Li4yY2RlMDgwNDlhZGVkYjRjNjE2OTU2OTRiMGI4OWI1ZWYwZmExMDM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjgsNyArMjgsNyBAQCBtZXNz
YWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllclByb3h5IE5vdFJlZkNvdW50ZWQgewogCiAgICAgTG9h
ZChVUkwgdXJsLCBPcHRpb25hbDxXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2Fu
ZGJveEV4dGVuc2lvbiwgV2ViQ29yZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUsIFN0cmluZyBr
ZXlTeXN0ZW0pIC0+IChzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRp
b24gcGxheWVyQ29uZmlndXJhdGlvbikgQXN5bmMKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQot
ICAgIExvYWRNZWRpYVNvdXJjZShVUkwgdXJsLCBXZWJDb3JlOjpDb250ZW50VHlwZSBjb250ZW50
VHlwZSwgV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZUlkZW50aWZpZXIgbWVkaWFTb3VyY2VJZGVu
dGlmaWVyKSBTeW5jaHJvbm91cworICAgIExvYWRNZWRpYVNvdXJjZShVUkwgdXJsLCBXZWJDb3Jl
OjpDb250ZW50VHlwZSBjb250ZW50VHlwZSwgV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZUlkZW50
aWZpZXIgbWVkaWFTb3VyY2VJZGVudGlmaWVyKSAtPiAoc3RydWN0IFdlYktpdDo6UmVtb3RlTWVk
aWFQbGF5ZXJDb25maWd1cmF0aW9uIHBsYXllckNvbmZpZ3VyYXRpb24pIEFzeW5jCiAjZW5kaWYK
ICAgICBDYW5jZWxMb2FkKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuY3BwCmluZGV4IDQ5OWJkNjFjMmY3ODIy
MjNmYTM4ZmM5N2IxODJmYTZkMmI5MzgxZGUuLjJlNDgyZGViNjVkZjM2NGRhZmM5NDdjZWUyYjc1
NDVkZTMzZThiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVNvdXJjZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHAKQEAgLTYxLDEzICs2MSwxMiBAQCB2b2lk
IFJlbW90ZU1lZGlhU291cmNlUHJveHk6OnNldFByaXZhdGVBbmRPcGVuKFJlZjxNZWRpYVNvdXJj
ZVByaXZhdGU+JiYgbWVkaWFTbwogCiBNZWRpYVRpbWUgUmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6
ZHVyYXRpb24oKSBjb25zdAogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHsg
fTsKKyAgICByZXR1cm4gbV9kdXJhdGlvbjsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3Jt
VGltZVJhbmdlcz4gUmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6YnVmZmVyZWQoKSBjb25zdAogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCkBAIC0xMTIsNiArMTEx
LDIyIEBAIHZvaWQgUmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6YWRkU291cmNlQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiBjb250ZW50CiAgICAgY2FsbGJhY2soc3RhdHVzLCByZW1v
dGVTb3VyY2VJZGVudGlmaWVyKTsKIH0KIAordm9pZCBSZW1vdGVNZWRpYVNvdXJjZVByb3h5Ojpk
dXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbikKK3sKKyAgICBpZiAobV9k
dXJhdGlvbiA9PSBkdXJhdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kdXJhdGlvbiA9
IGR1cmF0aW9uOworICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0ZS0+ZHVyYXRp
b25DaGFuZ2VkKGR1cmF0aW9uKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNvdXJjZVByb3h5Ojpz
ZXRSZWFkeVN0YXRlKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGUgcmVhZHlT
dGF0ZSkKK3sKKyAgICBpZiAobV9wcml2YXRlKQorICAgICAgICBtX3ByaXZhdGUtPnNldFJlYWR5
U3RhdGUocmVhZHlTdGF0ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5
LmgKaW5kZXggNTk2OGM3YmJkMTg5Y2Q0NzllZjRhZWFiNGQ0NDk5NTMzZmQzZDY1Yi4uOTU5MzQ0
OWQzYjVlNWNmZWQ5NmI1MTVlODE3ZTAzZGEwY2NhMDhmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oCkBAIC03
NiwxNyArNzYsMjEgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJl
Y2VpdmVyCi0gICAgLy8gdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJ
UEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+JikgZmluYWw7CiAKLSAgICB1c2luZyBBZGRTb3VyY2VCdWZmZXJDYWxsYmFj
ayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpB
ZGRTdGF0dXMsIE9wdGlvbmFsPFJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXI+IHJlbW90ZVNv
dXJjZUJ1ZmZlcklkZW50aWZpZXIpPjsKKyAgICB1c2luZyBBZGRTb3VyY2VCdWZmZXJDYWxsYmFj
ayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpB
ZGRTdGF0dXMsIE9wdGlvbmFsPFJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXI+KT47CiAgICAg
dm9pZCBhZGRTb3VyY2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6Q29udGVudFR5cGUmLCBBZGRTb3Vy
Y2VCdWZmZXJDYWxsYmFjayYmKTsKKyAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRp
YVRpbWUmKTsKKyAgICB2b2lkIHNldFJlYWR5U3RhdGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVt
czo6UmVhZHlTdGF0ZSk7CiAKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M7CiAgICAgUmVtb3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyIG1faWRl
bnRpZmllcjsKICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlPiBtX3ByaXZh
dGU7CiAgICAgV2Vha1B0cjxSZW1vdGVNZWRpYVBsYXllclByb3h5PiBtX3JlbW90ZU1lZGlhUGxh
eWVyUHJveHk7CiAKKyAgICBNZWRpYVRpbWUgbV9kdXJhdGlvbjsKKwogICAgIFZlY3RvcjxSZWZQ
dHI8UmVtb3RlU291cmNlQnVmZmVyUHJveHk+PiBtX3NvdXJjZUJ1ZmZlcnM7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQ
cm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVNvdXJjZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGNhNmI3NTJkNzcwNjBkZWNjYjlkYzNi
Yzc5NjQ4OWY0ZWM5MjBkYWQuLmQ5OTkxMjY4OGViYjBkNTlhZGNkYjUzN2NlODM1ZWZlNzk2ZTlm
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVNvdXJjZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNyw2ICsyNyw4IEBA
CiAKIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhU291cmNlUHJveHkgTm90UmVmQ291bnRlZCB7CiAg
ICAgQWRkU291cmNlQnVmZmVyKFdlYkNvcmU6OkNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlKSAtPiAo
ZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZTo6QWRkU3RhdHVzIHN0YXR1
cywgT3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyPiByZW1vdGVT
b3VyY2VCdWZmZXJJZGVudGlmaWVyKSBTeW5jaHJvbm91cworICAgIER1cmF0aW9uQ2hhbmdlZChN
ZWRpYVRpbWUgZHVyYXRpb24pCisgICAgU2V0UmVhZHlTdGF0ZShXZWJDb3JlOjpNZWRpYVBsYXll
ckVudW1zOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94
eS5jcHAKaW5kZXggMjY1YjczYjZhNGRmMzUzZjQ1M2RiNzIzY2MzMjk4YmM3ODViMmM3NC4uODQ3
MzNmYzBhYjQ5YjYzNTU3NzE5MGE4YmFlOTJlZGNkYjg2MWZkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHku
Y3BwCkBAIC0zNCw3ICszNCw5IEBACiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5o
IgogI2luY2x1ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3Jl
L01lZGlhRGVzY3JpcHRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+
CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVRpbWVSYW5nZXMuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CiAKQEAgLTU0LDE0ICs1NiwxNiBAQCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6UmVt
b3RlU291cmNlQnVmZmVyUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubgogewog
ICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNz
YWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjptZXNzYWdlUmVj
ZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CiAgICAgbV9zb3Vy
Y2VCdWZmZXJQcml2YXRlLT5zZXRDbGllbnQodGhpcyk7CisgICAgbV9zb3VyY2VCdWZmZXJQcml2
YXRlLT5zZXRJc0F0dGFjaGVkKHRydWUpOwogfQogCiBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6
flJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5KCkKIHsKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUt
PnNldElzQXR0YWNoZWQoZmFsc2UpOwogICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNz
YWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJ
bnQ2NCgpKTsKIH0KIAotdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVy
UHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgSW5pdGlhbGl6YXRp
b25TZWdtZW50JiBzZWdtZW50KQordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNl
QnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YXRp
b25TZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewogICAgIGlmICghbV9yZW1vdGVNZWRpYVBsYXllclByb3h5KQogICAgICAg
ICByZXR1cm47CkBAIC03MSwxOSArNzUsMzQgQEAgdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94
eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQKICAg
ICBmb3IgKGF1dG8mIGF1ZGlvVHJhY2tJbmZvIDogc2VnbWVudC5hdWRpb1RyYWNrcykgewogICAg
ICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX3JlbW90ZU1lZGlhUGxheWVyUHJveHktPmFkZFJlbW90
ZUF1ZGlvVHJhY2tQcm94eSgqYXVkaW9UcmFja0luZm8udHJhY2spOwogICAgICAgICBzZWdtZW50
SW5mby5hdWRpb1RyYWNrcy5hcHBlbmQoeyBNZWRpYURlc2NyaXB0aW9uSW5mbygqYXVkaW9UcmFj
a0luZm8uZGVzY3JpcHRpb24pLCBpZGVudGlmaWVyIH0pOworCisgICAgICAgIEFTU0VSVCghbV90
cmFja0lkcy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgICAgIEFTU0VSVCghbV9tZWRpYURl
c2NyaXB0aW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgICAgIG1fdHJhY2tJZHMuYWRk
KGlkZW50aWZpZXIsIGF1ZGlvVHJhY2tJbmZvLnRyYWNrLT5pZCgpKTsKKyAgICAgICAgbV9tZWRp
YURlc2NyaXB0aW9ucy5hZGQoaWRlbnRpZmllciwgKmF1ZGlvVHJhY2tJbmZvLmRlc2NyaXB0aW9u
KTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIHZpZGVvVHJhY2tJbmZvIDogc2VnbWVudC52aWRl
b1RyYWNrcykgewogICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX3JlbW90ZU1lZGlhUGxheWVy
UHJveHktPmFkZFJlbW90ZVZpZGVvVHJhY2tQcm94eSgqdmlkZW9UcmFja0luZm8udHJhY2spOwog
ICAgICAgICBzZWdtZW50SW5mby52aWRlb1RyYWNrcy5hcHBlbmQoeyBNZWRpYURlc2NyaXB0aW9u
SW5mbygqdmlkZW9UcmFja0luZm8uZGVzY3JpcHRpb24pLCBpZGVudGlmaWVyIH0pOworCisgICAg
ICAgIEFTU0VSVCghbV90cmFja0lkcy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgICAgIEFT
U0VSVCghbV9tZWRpYURlc2NyaXB0aW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgICAg
IG1fdHJhY2tJZHMuYWRkKGlkZW50aWZpZXIsIHZpZGVvVHJhY2tJbmZvLnRyYWNrLT5pZCgpKTsK
KyAgICAgICAgbV9tZWRpYURlc2NyaXB0aW9ucy5hZGQoaWRlbnRpZmllciwgKnZpZGVvVHJhY2tJ
bmZvLmRlc2NyaXB0aW9uKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIHRleHRUcmFja0luZm8g
OiBzZWdtZW50LnRleHRUcmFja3MpIHsKICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gbV9yZW1v
dGVNZWRpYVBsYXllclByb3h5LT5hZGRSZW1vdGVUZXh0VHJhY2tQcm94eSgqdGV4dFRyYWNrSW5m
by50cmFjayk7CiAgICAgICAgIHNlZ21lbnRJbmZvLnRleHRUcmFja3MuYXBwZW5kKHsgTWVkaWFE
ZXNjcmlwdGlvbkluZm8oKnRleHRUcmFja0luZm8uZGVzY3JpcHRpb24pLCBpZGVudGlmaWVyIH0p
OworCisgICAgICAgIEFTU0VSVCghbV90cmFja0lkcy5jb250YWlucyhpZGVudGlmaWVyKSk7Cisg
ICAgICAgIEFTU0VSVCghbV9tZWRpYURlc2NyaXB0aW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7
CisgICAgICAgIG1fdHJhY2tJZHMuYWRkKGlkZW50aWZpZXIsIHRleHRUcmFja0luZm8udHJhY2st
PmlkKCkpOworICAgICAgICBtX21lZGlhRGVzY3JpcHRpb25zLmFkZChpZGVudGlmaWVyLCAqdGV4
dFRyYWNrSW5mby5kZXNjcmlwdGlvbik7CiAgICAgfQogCi0gICAgbV9jb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlOjpTb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChz
ZWdtZW50SW5mbyksIG1faWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNz
LmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25T
ZWdtZW50KHNlZ21lbnRJbmZvKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1faWRlbnRp
Zmllcik7CiB9CiAKIHZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclBy
aXZhdGVBcHBlbmRFcnJvcihib29sKQpAQCAtOTEsMTQgKzExMCwxNCBAQCB2b2lkIFJlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9vbCkKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpz
b3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpCit2b2lk
IFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25DaGFu
Z2VkKGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6
OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNo
YW5nZWQoZHVyYXRpb24pLCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoZG91YmxlKQordm9p
ZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2Ft
cGxlKGRvdWJsZSBzYW1wbGVEdXJhdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxl
KHNhbXBsZUR1cmF0aW9uKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVTb3VyY2VC
dWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZERyb3BTYW1wbGUoKQpAQCAtMTExLDI2
ICsxMzAsMjQgQEAgdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJp
dmF0ZVN0cmVhbUVuZGVkV2l0aERlY29kZUVycm9yKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQogCi1ib29sIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlSGFz
QXVkaW8oKSBjb25zdAordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVy
UHJpdmF0ZUFwcGVuZENvbXBsZXRlKFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJl
c3VsdCBhcHBlbmRSZXN1bHQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4g
ZmFsc2U7CisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRlQXBw
ZW5kQ29tcGxldGUoYXBwZW5kUmVzdWx0KSwgbV9pZGVudGlmaWVyKTsKIH0KIAotYm9vbCBSZW1v
dGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKCkgY29uc3QK
K3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNl
aXZlUmVuZGVyaW5nRXJyb3IoaW50IGVycm9yQ29kZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6
c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKFNvdXJjZUJ1ZmZlclByaXZhdGVDbGll
bnQ6OkFwcGVuZFJlc3VsdCBhcHBlbmRSZXN1bHQpCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclBy
b3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCBmbGFnKQog
ewotICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdl
czo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENv
bXBsZXRlKGFwcGVuZFJlc3VsdCksIG1faWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRl
UmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoZmxhZyksIG1f
aWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJyb3IoaW50IGVycm9yQ29kZSkKK3ZvaWQg
UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdl
c0NoYW5nZWQoY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2VkKHRpbWVSYW5nZXMpLCBtX2lkZW50aWZpZXIpOwog
fQogCiB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjphcHBlbmQoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiBkYXRhKQpAQCAtMTM4LDYgKzE1NSw0MyBAQCB2b2lkIFJlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5OjphcHBlbmQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogICAgIG1f
c291cmNlQnVmZmVyUHJpdmF0ZS0+YXBwZW5kKGRhdGEudmVjdG9yKCkpOwogfQogCit2b2lkIFJl
bW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpzZXRBY3RpdmUoYm9vbCBhY3RpdmUpCit7CisgICAgbV9z
b3VyY2VCdWZmZXJQcml2YXRlLT5zZXRBY3RpdmUoYWN0aXZlKTsKK30KKwordm9pZCBSZW1vdGVT
b3VyY2VCdWZmZXJQcm94eTo6c2V0UmVhZHlTdGF0ZShXZWJDb3JlOjpNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZSBzdGF0ZSkKK3sKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPnNldFJlYWR5U3Rh
dGUoc3RhdGUpOworfQorCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojp1cGRhdGVCdWZm
ZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVkKQoreworICAgIG1fc291cmNl
QnVmZmVyUHJpdmF0ZS0+dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKHNvdXJjZUlzRW5k
ZWQpOworfQorCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpldmljdENvZGVkRnJhbWVz
KHVpbnQ2NF90IG5ld0RhdGFTaXplLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5
LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50VGlt
ZSwgY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbiwgYm9vbCBpc0VuZGVkKQoreworICAgIG1fc291
cmNlQnVmZmVyUHJpdmF0ZS0+ZXZpY3RDb2RlZEZyYW1lcyhuZXdEYXRhU2l6ZSwgcGVuZGluZ0Fw
cGVuZERhdGFDYXBhY2l0eSwgbWF4aW11bUJ1ZmZlclNpemUsIGN1cnJlbnRUaW1lLCBkdXJhdGlv
biwgaXNFbmRlZCk7Cit9CisKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OmFkZFRyYWNr
QnVmZmVyKFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgdHJhY2tQcml2YXRlUmVtb3RlSWRl
bnRpZmllcikKK3sKKyAgICBBU1NFUlQobV90cmFja0lkcy5jb250YWlucyh0cmFja1ByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyKSk7CisgICAgQVNTRVJUKG1fbWVkaWFEZXNjcmlwdGlvbnMuY29udGFp
bnModHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllcikpOworICAgIG1fc291cmNlQnVmZmVyUHJp
dmF0ZS0+YWRkVHJhY2tCdWZmZXIobV90cmFja0lkcy5nZXQodHJhY2tQcml2YXRlUmVtb3RlSWRl
bnRpZmllciksIG1fbWVkaWFEZXNjcmlwdGlvbnMuZ2V0KHRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIpKTsKK30KKwordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6cmVlbnF1ZXVlTWVk
aWFJZk5lZWRlZChjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRNZWRpYVRpbWUsIHVpbnQ2NF90IHBl
bmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplKQorewor
ICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+cmVlbnF1ZXVlTWVkaWFJZk5lZWRlZChjdXJyZW50
TWVkaWFUaW1lLCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCBtYXhpbXVtQnVmZmVyU2l6ZSk7
Cit9CisKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnRyeVNpZ25hbEFsbFNhbXBsZXNJ
blRyYWNrRW5xdWV1ZWQoKQoreworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+dHJ5U2lnbmFs
QWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VC
dWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5LmgKaW5kZXggYmM5Zjk5ZGZiN2EyMzBiNTg5YWUzNDJlNWNkMDQ3NzA3NWYw
MjEzOC4uNmVjZDhiY2Y2OGVlYjdmY2FiMTE1YzY5Y2ExYzE0ZGZkYzUyYjUxZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5LmgKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUmVtb3Rl
U291cmNlQnVmZmVySWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhRGVzY3JpcHRpb24uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL1NvdXJjZUJ1ZmZlclByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nv
dXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC00Mywx
MCArNDUsMTIgQEAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgTWVkaWFTYW1wbGU7CitjbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXM7CiB9CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewogCitzdHJ1Y3QgTWVkaWFEZXNjcmlwdGlvbkluZm87CiBjbGFzcyBSZW1v
dGVNZWRpYVBsYXllclByb3h5OwogCiBjbGFzcyBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eSBmaW5h
bApAQCAtNTgsMTYgKzYyLDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5PiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90ZVNv
dXJjZUJ1ZmZlcklkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlPiYm
LCBSZW1vdGVNZWRpYVBsYXllclByb3h5Jik7CiAgICAgdmlydHVhbCB+UmVtb3RlU291cmNlQnVm
ZmVyUHJveHkoKTsKIAotICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0
aWFsaXphdGlvblNlZ21lbnQoY29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50JikgZmluYWw7Cisg
ICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVu
dChJbml0aWFsaXphdGlvblNlZ21lbnQmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBm
aW5hbDsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVTdHJlYW1FbmRlZFdpdGhEZWNvZGVF
cnJvcigpIGZpbmFsOwogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZEVycm9yKGJv
b2wgZGVjb2RlRXJyb3IpIGZpbmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUFwcGVu
ZENvbXBsZXRlKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3Vs
dCkgZmluYWw7CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKGNv
bnN0IE1lZGlhVGltZSYpIGZpbmFsOwogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFBh
cnNlU2FtcGxlKGRvdWJsZSBzYW1wbGVEdXJhdGlvbikgZmluYWw7CiAgICAgdm9pZCBzb3VyY2VC
dWZmZXJQcml2YXRlRGlkRHJvcFNhbXBsZSgpIGZpbmFsOwotICAgIHZvaWQgc291cmNlQnVmZmVy
UHJpdmF0ZVN0cmVhbUVuZGVkV2l0aERlY29kZUVycm9yKCkgZmluYWw7Ci0gICAgYm9vbCBzb3Vy
Y2VCdWZmZXJQcml2YXRlSGFzQXVkaW8oKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHNvdXJjZUJ1
ZmZlclByaXZhdGVIYXNWaWRlbygpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc291cmNlQnVmZmVy
UHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGJvb2wpIGZpbmFsOworICAgIHZvaWQgc291cmNl
QnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpQbGF0Zm9y
bVRpbWVSYW5nZXMmKSBmaW5hbDsKIAotICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUFwcGVu
ZENvbXBsZXRlKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3Vs
dCkgZmluYWw7CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVJlbmRlcmlu
Z0Vycm9yKGludCBlcnJvckNvZGUpIGZpbmFsOwogCiBwcml2YXRlOgpAQCAtNzcsMTIgKzgxLDIy
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICAvLyB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpF
bmNvZGVyPiYpIGZpbmFsOwogCisgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCk7CiAgICAgdm9pZCBh
cHBlbmQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBzZXRSZWFkeVN0YXRl
KFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZl
cmVkRnJvbVRyYWNrQnVmZmVycyhib29sIHNvdXJjZUlzRW5kZWQpOworICAgIHZvaWQgZXZpY3RD
b2RlZEZyYW1lcyh1aW50NjRfdCBuZXdEYXRhU2l6ZSwgdWludDY0X3QgcGVuZGluZ0FwcGVuZERh
dGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUsIGNvbnN0IE1lZGlhVGltZSYg
Y3VycmVudFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24sIGJvb2wgaXNFbmRlZCk7Cisg
ICAgdm9pZCBhZGRUcmFja0J1ZmZlcihUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKKyAg
ICB2b2lkIHJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQoY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50TWVk
aWFUaW1lLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhp
bXVtQnVmZmVyU2l6ZSk7CisgICAgdm9pZCB0cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0VucXVl
dWVkKCk7CiAKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M7CiAgICAgUmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7
CiAgICAgUmVmPFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU+IG1fc291cmNlQnVmZmVyUHJp
dmF0ZTsKICAgICBXZWFrUHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+IG1fcmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eTsKKworICAgIEhhc2hNYXA8VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwg
QXRvbVN0cmluZz4gbV90cmFja0lkczsKKyAgICBIYXNoTWFwPFRyYWNrUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpNZWRpYURlc2NyaXB0aW9uPj4gbV9tZWRpYURlc2NyaXB0
aW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
Lm1lc3NhZ2VzLmluCmluZGV4IGEwOGZmMDFkYTMwZDA2N2I5ZTQxZmI1YTExM2U3YmE0M2ZlMGUw
MTcuLmY0MWZkZTRlNzlmYTcwOWMyMzhkYzI3NzQ2ZDkwODRmZjgwMTRhN2UgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291
cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTI2LDcgKzI2LDE0IEBACiAjaWYgRU5BQkxF
KEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCiBtZXNzYWdlcyAtPiBSZW1v
dGVTb3VyY2VCdWZmZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBTZXRBY3RpdmUoYm9vbCBh
Y3RpdmUpCiAgICAgQXBwZW5kKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQorICAgIFNldFJlYWR5
U3RhdGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3RhdGUpCisgICAgVXBkYXRl
QnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCkKKyAgICBFdmljdENv
ZGVkRnJhbWVzKHVpbnQ2NF90IG5ld0RhdGFTaXplLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0
YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSwgTWVkaWFUaW1lIGN1cnJlbnRU
aW1lLCBNZWRpYVRpbWUgZHVyYXRpb24sIGJvb2wgaXNFbmRlZCkKKyAgICBBZGRUcmFja0J1ZmZl
cihXZWJLaXQ6OlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgdHJhY2tJZCkKKyAgICBSZWVu
cXVldWVNZWRpYUlmTmVlZGVkKE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lLCB1aW50NjRfdCBw
ZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSkKKyAg
ICBUcnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKCkKIH0KIAogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1By
b3h5LmNwcAppbmRleCA2NzQ0OGU5YTc0OGYxOGFkYTQ1MjU5MDliYTJjZDMxNDBiMjI1MWVkLi4x
MzIxNWE2NzM5N2MwY2NmODg3NGZiNGFhZjEwMDgzZDMwYjEyMWE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAK
QEAgLTY0LDcgKzY0LDcgQEAgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24mIFJl
bW90ZVRleHRUcmFja1Byb3h5Ojpjb25maWd1cmF0aW9uKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRp
b247CiAKLSAgICBjb25maWd1cmF0aW9uLT5pZGVudGlmaWVyID0gbV90cmFja1ByaXZhdGUtPmlk
KCk7CisgICAgY29uZmlndXJhdGlvbi0+dHJhY2tJZCA9IG1fdHJhY2tQcml2YXRlLT5pZCgpOwog
ICAgIGNvbmZpZ3VyYXRpb24tPmxhYmVsID0gbV90cmFja1ByaXZhdGUtPmxhYmVsKCk7CiAgICAg
Y29uZmlndXJhdGlvbi0+bGFuZ3VhZ2UgPSBtX3RyYWNrUHJpdmF0ZS0+bGFuZ3VhZ2UoKTsKICAg
ICBjb25maWd1cmF0aW9uLT50cmFja0luZGV4ID0gbV90cmFja1ByaXZhdGUtPnRyYWNrSW5kZXgo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRl
b1RyYWNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZp
ZGVvVHJhY2tQcm94eS5jcHAKaW5kZXggMzUwZjhlYTczMDdiZDIzN2FhODNmNmNjOTQ1YjU2MTBk
ZjZmMWM3MS4uYjkyYTg0ZTNhOWI2OGFjNmM0ZjJhZjM0MjZhZWQ3YTc5NDEyZGFjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJh
Y2tQcm94eS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJh
dGlvbiYgUmVtb3RlVmlkZW9UcmFja1Byb3h5Ojpjb25maWd1cmF0aW9uKCkKIHsKICAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbj4gY29uZmln
dXJhdGlvbjsKIAotICAgIGNvbmZpZ3VyYXRpb24tPmlkZW50aWZpZXIgPSBtX3RyYWNrUHJpdmF0
ZS0+aWQoKTsKKyAgICBjb25maWd1cmF0aW9uLT50cmFja0lkID0gbV90cmFja1ByaXZhdGUtPmlk
KCk7CiAgICAgY29uZmlndXJhdGlvbi0+bGFiZWwgPSBtX3RyYWNrUHJpdmF0ZS0+bGFiZWwoKTsK
ICAgICBjb25maWd1cmF0aW9uLT5sYW5ndWFnZSA9IG1fdHJhY2tQcml2YXRlLT5sYW5ndWFnZSgp
OwogICAgIGNvbmZpZ3VyYXRpb24tPnRyYWNrSW5kZXggPSBtX3RyYWNrUHJpdmF0ZS0+dHJhY2tJ
bmRleCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RleHRU
cmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaAppbmRleCBjMTM5
Y2ZjMTRiNDcxZmIyNThkYmJlODE4MmIzZDVjNjIxNjJiNTkyLi42NTYwNWIwMWExMjg2YzMxMjk3
ZWJjNjBjZTBmYzg1MDViNTIyZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3Vy
YXRpb24uaApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBU
ZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7Ci0gICAgQXRvbVN0cmluZyBpZGVu
dGlmaWVyOworICAgIEF0b21TdHJpbmcgdHJhY2tJZDsKICAgICBBdG9tU3RyaW5nIGxhYmVsOwog
ICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2U7CiAgICAgQXRvbVN0cmluZyBpbkJhbmRNZXRhZGF0YVRy
YWNrRGlzcGF0Y2hUeXBlOwpAQCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3QgVGV4dFRyYWNrUHJpdmF0
ZVJlbW90ZUNvbmZpZ3VyYXRpb24gewogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiAgICAg
dm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICB7Ci0gICAgICAgIGVuY29k
ZXIgPDwgaWRlbnRpZmllcjsKKyAgICAgICAgZW5jb2RlciA8PCB0cmFja0lkOwogICAgICAgICBl
bmNvZGVyIDw8IGxhYmVsOwogICAgICAgICBlbmNvZGVyIDw8IGxhbmd1YWdlOwogICAgICAgICBl
bmNvZGVyIDw8IGluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGU7CkBAIC03NSw5ICs3NSw5
IEBAIHN0cnVjdCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7CiAgICAgdGVt
cGxhdGUgPGNsYXNzIERlY29kZXI+CiAgICAgc3RhdGljIE9wdGlvbmFsPFRleHRUcmFja1ByaXZh
dGVSZW1vdGVDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0g
ICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IGlkZW50aWZpZXI7Ci0gICAgICAgIGRlY29kZXIg
Pj4gaWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICBPcHRpb25h
bDxBdG9tU3RyaW5nPiB0cmFja0lkOworICAgICAgICBkZWNvZGVyID4+IHRyYWNrSWQ7CisgICAg
ICAgIGlmICghdHJhY2tJZCkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAg
ICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gbGFiZWw7CkBAIC0xNTEsNyArMTUxLDcgQEAgc3Ry
dWN0IFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIHsKICAgICAgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHt7Ci0gICAgICAgICAgICBXVEZN
b3ZlKCppZGVudGlmaWVyKSwKKyAgICAgICAgICAgIFdURk1vdmUoKnRyYWNrSWQpLAogICAgICAg
ICAgICAgV1RGTW92ZSgqbGFiZWwpLAogICAgICAgICAgICAgV1RGTW92ZSgqbGFuZ3VhZ2UpLAog
ICAgICAgICAgICAgV1RGTW92ZSgqaW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZSksCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVt
b3RlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RyYWNr
UHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaAppbmRleCA0NDQyMmIzMDE0ZjIwMjIxNmJlZDZh
NTdhM2Y4ZWRkNzk0OGU5MjQ2Li5hOGYwNWQxOGZkOTk4OGViYjk5Yzc2NzNiNjg3YTY3MGQ5MmUw
MTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2
YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9UcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgKQEAgLTM0LDcgKzM0LDcgQEAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJh
dGlvbiB7Ci0gICAgQXRvbVN0cmluZyBpZGVudGlmaWVyOworICAgIEF0b21TdHJpbmcgdHJhY2tJ
ZDsKICAgICBBdG9tU3RyaW5nIGxhYmVsOwogICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2U7CiAgICAg
TWVkaWFUaW1lIHN0YXJ0VGltZVZhcmlhbmNlIHsgTWVkaWFUaW1lOjp6ZXJvVGltZSgpIH07CkBA
IC00OSw3ICs0OSw3IEBAIHN0cnVjdCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIHsK
ICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAgICAgewotICAgICAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7CisgICAg
ICAgIGVuY29kZXIgPDwgdHJhY2tJZDsKICAgICAgICAgZW5jb2RlciA8PCBsYWJlbDsKICAgICAg
ICAgZW5jb2RlciA8PCBsYW5ndWFnZTsKICAgICAgICAgZW5jb2RlciA8PCBzdGFydFRpbWVWYXJp
YW5jZTsKQEAgLTYzLDkgKzYzLDkgQEAgc3RydWN0IFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3Vy
YXRpb24gewogICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgogICAgIHN0YXRpYyBPcHRpb25h
bDxUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IGlkZW50aWZpZXI7Ci0gICAg
ICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFpZGVudGlmaWVyKQorICAg
ICAgICBPcHRpb25hbDxBdG9tU3RyaW5nPiB0cmFja0lkOworICAgICAgICBkZWNvZGVyID4+IHRy
YWNrSWQ7CisgICAgICAgIGlmICghdHJhY2tJZCkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gbGFiZWw7CkBAIC0xMDksNyAr
MTA5LDcgQEAgc3RydWN0IFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24gewogICAgICAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4ge3sKLSAgICAgICAg
ICAgIFdURk1vdmUoKmlkZW50aWZpZXIpLAorICAgICAgICAgICAgV1RGTW92ZSgqdHJhY2tJZCks
CiAgICAgICAgICAgICBXVEZNb3ZlKCpsYWJlbCksCiAgICAgICAgICAgICBXVEZNb3ZlKCpsYW5n
dWFnZSksCiAgICAgICAgICAgICBXVEZNb3ZlKCpzdGFydFRpbWVWYXJpYW5jZSksCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRl
UmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFj
a1ByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDcyMWMwYWE5MjA3MjRlOWIzM2I1ODY1MzAzMTM3YjZj
YTU0OTAwYTAuLmUyYTNlOTAxYWZmNGU2NDE0MWJmYzk5YzZmMGM0NTcyOWIxZDhiY2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZh
dGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVk
aW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwCkBAIC01Myw5ICs1Myw5IEBAIHZvaWQgQXVkaW9UcmFj
a1ByaXZhdGVSZW1vdGU6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQogCiB2b2lkIEF1ZGlvVHJh
Y2tQcml2YXRlUmVtb3RlOjp1cGRhdGVDb25maWd1cmF0aW9uKFRyYWNrUHJpdmF0ZVJlbW90ZUNv
bmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQogewotICAgIGlmIChjb25maWd1cmF0aW9uLmlk
ZW50aWZpZXIgIT0gbV9pZCkgeworICAgIGlmIChjb25maWd1cmF0aW9uLnRyYWNrSWQgIT0gbV9p
ZCkgewogICAgICAgICBhdXRvIGNoYW5nZWQgPSAhbV9pZC5pc0VtcHR5KCk7Ci0gICAgICAgIG1f
aWQgPSBjb25maWd1cmF0aW9uLmlkZW50aWZpZXI7CisgICAgICAgIG1faWQgPSBjb25maWd1cmF0
aW9uLnRyYWNrSWQ7CiAgICAgICAgIGlmIChjaGFuZ2VkICYmIGNsaWVudCgpKQogICAgICAgICAg
ICAgY2xpZW50KCktPmlkQ2hhbmdlZChtX2lkKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3Rl
LmgKaW5kZXggNTNkYzliZTMzYzliZmMwZGM0YTdiMDFmYzFmMTAxZjllODc2YTVjNS4uY2Y3YzBl
OTNlZjQ2ZjQ5MDFjZWNjNWY5ZjdhOGU2MWUzZjE2YjNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1v
dGUuaApAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IEF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlKGNvbm5lY3Rpb24sIGlkZW5kaWZpZXIsIFdURk1v
dmUoY29uZmlndXJhdGlvbikpKTsKICAgICB9CiAKKyAgICBBdG9tU3RyaW5nIGlkKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9pZDsgfQogICAgIHZvaWQgdXBkYXRlQ29uZmlndXJhdGlvbihUcmFj
a1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uJiYpOwogCiBwcml2YXRlOgpAQCAtNTUsNyArNTYs
NiBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXVkaW9UcmFja0tpbmQgPSBXZWJDb3JlOjpBdWRp
b1RyYWNrUHJpdmF0ZTo6S2luZDsKICAgICBBdWRpb1RyYWNrS2luZCBraW5kKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gbV9raW5kOyB9Ci0gICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1faWQ7IH0KICAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9sYWJlbDsgfQogICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX2xhbmd1YWdlOyB9CiAgICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiBtX3RyYWNrSW5kZXg7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA2
ZGRlZTg3YWJkY2M3NmY4NjlhZDU1NGRiNTExMmIzNmI4MmYyZDZiLi43MTMyMWU2YmU2MDA0ODM4
YzNiNjM1ZDBlZmRjNGMxZWY2ODkzMjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3Bw
CkBAIC02MzMsNyArNjMzLDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2Fk
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5CiB7CiAgICAgaWYg
KG1fcmVtb3RlRW5naW5lSWRlbnRpZmllciA9PSBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2lu
ZUlkZW50aWZpZXI6OkFWRm91bmRhdGlvbk1TRSkgewogICAgICAgICBhdXRvIGlkZW50aWZpZXIg
PSBSZW1vdGVNZWRpYVNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7Ci0gICAgICAgIGNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpMb2FkTWVkaWFT
b3VyY2UodXJsLCBjb250ZW50VHlwZSwgaWRlbnRpZmllciksIG1faWQpOworICAgICAgICBjb25u
ZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclBy
b3h5OjpMb2FkTWVkaWFTb3VyY2UodXJsLCBjb250ZW50VHlwZSwgaWRlbnRpZmllciksIFt3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oYXV0byYmIGNvbmZpZ3VyYXRpb24pIHsKKyAgICAg
ICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9jb25maWd1
cmF0aW9uID0gV1RGTW92ZShjb25maWd1cmF0aW9uKTsKKyAgICAgICAgfSwgbV9pZCk7CiAgICAg
ICAgIG1fbWVkaWFTb3VyY2VQcml2YXRlID0gTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjpjcmVh
dGUobV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCksIGlkZW50aWZpZXIsIG1fbWFuYWdl
ci50eXBlQ2FjaGUobV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyKSwgKnRoaXMsIGNsaWVudCk7CiAK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDBhYzc4
NzIwYmFjNGQ0MjhkMTI0NzA0ODk4NjU5MzkzOGZmNzg1ZGEuLjUwMzIyNTJiZjUwZjE2MjQ1YjE1
ZmU0ZTBmMmZjMTkyZGU1MTg1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5jcHAKQEAg
LTEwMyw5ICsxMDMsOSBAQCBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBNZWRpYVNvdXJj
ZVByaXZhdGVSZW1vdGU6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDbwogICAgIHJldHVybiBzdGF0
dXM7CiB9CiAKLXZvaWQgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjpkdXJhdGlvbkNoYW5nZWQo
KQordm9pZCBNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OmR1cmF0aW9uQ2hhbmdlZChjb25zdCBN
ZWRpYVRpbWUmIGR1cmF0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9ncHVQ
cm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFT
b3VyY2VQcm94eTo6RHVyYXRpb25DaGFuZ2VkKGR1cmF0aW9uKSwgbV9pZGVudGlmaWVyKTsKIH0K
IAogdm9pZCBNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6Om1hcmtFbmRPZlN0cmVhbShFbmRPZlN0
cmVhbVN0YXR1cykKQEAgLTExOCwxNCArMTE4LDIwIEBAIHZvaWQgTWVkaWFTb3VyY2VQcml2YXRl
UmVtb3RlOjp1bm1hcmtFbmRPZlN0cmVhbSgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAor
Ym9vbCBNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OmlzRW5kZWQoKSBjb25zdAoreworICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZSBNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OnJlYWR5U3RhdGUoKSBjb25zdAogewog
ICAgIHJldHVybiBtX21lZGlhUGxheWVyUHJpdmF0ZSA/IG1fbWVkaWFQbGF5ZXJQcml2YXRlLT5y
ZWFkeVN0YXRlKCkgOiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmc7CiB9CiAK
LXZvaWQgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVy
OjpSZWFkeVN0YXRlKQordm9pZCBNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OnNldFJlYWR5U3Rh
dGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhU291cmNlUHJveHk6OlNldFJlYWR5U3RhdGUocmVhZHlTdGF0ZSks
IG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjp3YWl0
Rm9yU2Vla0NvbXBsZXRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuaAppbmRleCA3NzgzNGY3
YTE5ZGNiMGI5NGVkNTJmNjY4MDBlNjA1YzMxNTM0Nzk5Li42NGY3Mzg1YjI5MjlmOWYzMDRiNDJj
OGEzNmUyYjI1NzYyZjllOGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmgKQEAgLTU2LDkg
KzU2LDEwIEBAIHB1YmxpYzoKIAogICAgIC8vIE1lZGlhU291cmNlUHJpdmF0ZSBvdmVycmlkZXMK
ICAgICBBZGRTdGF0dXMgYWRkU291cmNlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBl
JiwgUmVmUHRyPFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU+JikgZmluYWw7Ci0gICAgdm9p
ZCBkdXJhdGlvbkNoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZChjb25z
dCBNZWRpYVRpbWUmKSBmaW5hbDsKICAgICB2b2lkIG1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVh
bVN0YXR1cykgZmluYWw7CiAgICAgdm9pZCB1bm1hcmtFbmRPZlN0cmVhbSgpIGZpbmFsOworICAg
IGJvb2wgaXNFbmRlZCgpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldFJlYWR5U3Rh
dGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpIGZpbmFsOwogICAgIHZvaWQgd2Fp
dEZvclNlZWtDb21wbGV0ZWQoKSBmaW5hbDsKQEAgLTc5LDYgKzgwLDggQEAgcHJpdmF0ZToKICAg
ICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50PiBtX2NsaWVudDsKICAg
ICBWZWN0b3I8UmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU+PiBtX3NvdXJjZUJ1ZmZl
cnM7CiAKKyAgICBNZWRpYVRpbWUgbV9kdXJhdGlvbjsKKwogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRAogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuICJNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUiOyB9CiAgICAgY29uc3Qgdm9pZCogbG9nSWRl
bnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggNjMyZTAwZmIxNTJkMGZkNzQ2NTc2ZTM0Y2Fm
YmY5ZTJiNDYzYmY3ZC4uNmVkZTQyMmE5Yzk0MzcyZjQyZDQwYTZiZjMxZGM2NWFhMzFjYjU0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5j
bHVkZSAiUmVtb3RlU291cmNlQnVmZmVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1w
bGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtVGltZVJhbmdlcy5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KIApAQCAtMTAwLDE3ICsxMDEsMTUgQEAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUg
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6cmVhZHlTdGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJu
IG1fbWVkaWFQbGF5ZXJQcml2YXRlID8gbV9tZWRpYVBsYXllclByaXZhdGUtPnJlYWR5U3RhdGUo
KSA6IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZzsKIH0KIAotdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0
YXRlKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzZXRSZWFkeVN0YXRlKE1lZGlh
UGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19Cisg
ICAgaWYgKCFtX21lZGlhU291cmNlUHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOwogCi12b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmZsdXNoKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6U2V0UmVh
ZHlTdGF0ZShzdGF0ZSksIG1fcmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcik7CiB9CiAKLXZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6ZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1w
bGU+JiYsIGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGU6OmZsdXNoKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KQEAgLTEyMCw5ICsxMTksMTMgQEAgYm9vbCBTb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlOjppc1JlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJ
RCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZTo6c2V0QWN0aXZlKGJvb2wpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNldEFj
dGl2ZShib29sIGFjdGl2ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV9t
ZWRpYVNvdXJjZVByaXZhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNBY3RpdmUgPSBh
Y3RpdmU7CisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OlNldEFjdGl2ZShhY3RpdmUpLCBtX3JlbW90
ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGU6Om5vdGlmeUNsaWVudFdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21TdHJp
bmcmIHRyYWNrSUQpCkBAIC0xNTEsNyArMTU0LDM2IEBAIGJvb2wgU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZTo6Y2FuU3dpdGNoVG9UeXBlKGNvbnN0IENvbnRlbnRUeXBlJikKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVy
UHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YXRpb25TZWdt
ZW50SW5mbyYmIHNlZ21lbnRJbmZvKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjp1
cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVkKQoreworICAg
IGlmICghbV9tZWRpYVNvdXJjZVByaXZhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZ3B1
UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5OjpVcGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoc291cmNlSXNFbmRl
ZCksIG1fcmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZTo6ZXZpY3RDb2RlZEZyYW1lcyh1aW50NjRfdCBuZXdEYXRhU2l6ZSwg
dWludDY0X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZl
clNpemUsIGNvbnN0IE1lZGlhVGltZSYgY3VycmVudFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgZHVy
YXRpb24sIGJvb2wgaXNFbmRlZCkKK3sKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6RXZpY3RDb2Rl
ZEZyYW1lcyhuZXdEYXRhU2l6ZSwgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgbWF4aW11bUJ1
ZmZlclNpemUsIGN1cnJlbnRUaW1lLCBkdXJhdGlvbiwgaXNFbmRlZCksIG1fcmVtb3RlU291cmNl
QnVmZmVySWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6
YWRkVHJhY2tCdWZmZXIoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJZCwgUmVmUHRyPE1lZGlhRGVz
Y3JpcHRpb24+JiYpCit7CisgICAgQVNTRVJUKG1fdHJhY2tJZGVudGlmaWVyTWFwLmNvbnRhaW5z
KHRyYWNrSWQpKTsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6QWRkVHJhY2tCdWZmZXIobV90cmFj
a0lkZW50aWZpZXJNYXAuZ2V0KHRyYWNrSWQpKSwgbV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlm
aWVyKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpyZWVucXVldWVNZWRp
YUlmTmVlZGVkKGNvbnN0IE1lZGlhVGltZSYgY3VycmVudE1lZGlhVGltZSwgdWludDY0X3QgcGVu
ZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUpCit7Cisg
ICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVt
b3RlU291cmNlQnVmZmVyUHJveHk6OlJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQoY3VycmVudE1lZGlh
VGltZSwgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgbWF4aW11bUJ1ZmZlclNpemUpLCBtX3Jl
bW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGU6OnRyeVNpZ25hbEFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoKQoreworICAgIG1f
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5OjpUcnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKCksIG1f
cmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNl
Z21lbnQoSW5pdGlhbGl6YXRpb25TZWdtZW50SW5mbyYmIHNlZ21lbnRJbmZvLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2NsaWVu
dCB8fCAhbV9tZWRpYVBsYXllclByaXZhdGUpCiAgICAgICAgIHJldHVybjsKQEAgLTE2NCw2ICsx
OTYsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJjZUJ1ZmZlclByaXZh
dGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZQogICAgICAgICBpbmZvLnRyYWNrID0gbV9t
ZWRpYVBsYXllclByaXZhdGUtPmF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlKGF1ZGlvVHJhY2suaWRl
bnRpZmllcik7CiAgICAgICAgIGluZm8uZGVzY3JpcHRpb24gPSBSZW1vdGVNZWRpYURlc2NyaXB0
aW9uOjpjcmVhdGUoYXVkaW9UcmFjay5kZXNjcmlwdGlvbik7CiAgICAgICAgIHNlZ21lbnQuYXVk
aW9UcmFja3MuYXBwZW5kKGluZm8pOworICAgICAgICBtX3RyYWNrSWRlbnRpZmllck1hcC5hZGQo
aW5mby50cmFjay0+aWQoKSwgYXVkaW9UcmFjay5pZGVudGlmaWVyKTsKICAgICB9CiAKICAgICBm
b3IgKGF1dG8mIHZpZGVvVHJhY2sgOiBzZWdtZW50SW5mby52aWRlb1RyYWNrcykgewpAQCAtMTcx
LDYgKzIwNCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVy
UHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lCiAgICAgICAgIGluZm8udHJhY2sg
PSBtX21lZGlhUGxheWVyUHJpdmF0ZS0+dmlkZW9UcmFja1ByaXZhdGVSZW1vdGUodmlkZW9UcmFj
ay5pZGVudGlmaWVyKTsKICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IFJlbW90ZU1lZGlhRGVz
Y3JpcHRpb246OmNyZWF0ZSh2aWRlb1RyYWNrLmRlc2NyaXB0aW9uKTsKICAgICAgICAgc2VnbWVu
dC52aWRlb1RyYWNrcy5hcHBlbmQoaW5mbyk7CisgICAgICAgIG1fdHJhY2tJZGVudGlmaWVyTWFw
LmFkZChpbmZvLnRyYWNrLT5pZCgpLCB2aWRlb1RyYWNrLmlkZW50aWZpZXIpOwogICAgIH0KIAog
ICAgIGZvciAoYXV0byYgdGV4dFRyYWNrIDogc2VnbWVudEluZm8udGV4dFRyYWNrcykgewpAQCAt
MTc4LDkgKzIxMiwxMCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZQogICAgICAgICBpbmZvLnRy
YWNrID0gbV9tZWRpYVBsYXllclByaXZhdGUtPnRleHRUcmFja1ByaXZhdGVSZW1vdGUodGV4dFRy
YWNrLmlkZW50aWZpZXIpOwogICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gUmVtb3RlTWVkaWFE
ZXNjcmlwdGlvbjo6Y3JlYXRlKHRleHRUcmFjay5kZXNjcmlwdGlvbik7CiAgICAgICAgIHNlZ21l
bnQudGV4dFRyYWNrcy5hcHBlbmQoaW5mbyk7CisgICAgICAgIG1fdHJhY2tJZGVudGlmaWVyTWFw
LmFkZChpbmZvLnRyYWNrLT5pZCgpLCB0ZXh0VHJhY2suaWRlbnRpZmllcik7CiAgICAgfQogCi0g
ICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25T
ZWdtZW50KFdURk1vdmUoc2VnbWVudCkpOworICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2
YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJl
bW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKFNvdXJjZUJ1ZmZlclByaXZh
dGVDbGllbnQ6OkFwcGVuZFJlc3VsdCBhcHBlbmRSZXN1bHQpCkBAIC0xODksNiArMjI0LDMwIEBA
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVu
ZENvbXBsZXRlKFNvdXJjZUJ1ZmZlclByCiAgICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQ
cml2YXRlQXBwZW5kQ29tcGxldGUoYXBwZW5kUmVzdWx0KTsKIH0KIAordm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKGNvbnN0
IE1lZGlhVGltZSYgZHVyYXRpb24pCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2Ns
aWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChkdXJhdGlvbik7Cit9CisK
K3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFBh
cnNlU2FtcGxlKGRvdWJsZSBzYW1wbGVEdXJhdGlvbikKK3sKKyAgICBpZiAobV9jbGllbnQpCisg
ICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoc2FtcGxl
RHVyYXRpb24pOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJjZUJ1
ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZChib29sIGRpcnR5KQoreworICAgIGlmICht
X2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERp
cnR5Q2hhbmdlZChkaXJ0eSk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6
c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpQ
bGF0Zm9ybVRpbWVSYW5nZXMmIHRpbWVSYW5nZXMpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAg
ICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZCh0
aW1lUmFuZ2VzKTsKK30KKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogV1RGTG9nQ2hhbm5l
bCYgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6bG9nQ2hhbm5lbCgpIGNvbnN0CiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDRkMGUwMzA5YWQ1OWQ2OTRmMTNiYzE0YzQ3Y2Ji
YTRhZjJmN2E4NjIuLjc2MmY2M2JmN2QyYjc5YmZlZWJmZTJhY2VhODIzMzE3NDUxOTAwNDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAi
R1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNp
bmNsdWRlICJSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiVHJhY2tQ
cml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFR5cGUu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2FtcGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
b3VyY2VCdWZmZXJQcml2YXRlLmg+CkBAIC00Niw2ICs0NywxMCBAQCBjbGFzcyBDb25uZWN0aW9u
OwogY2xhc3MgRGVjb2RlcjsKIH0KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUGxhdGZv
cm1UaW1lUmFuZ2VzOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IEluaXRpYWxp
emF0aW9uU2VnbWVudEluZm87CkBAIC03NCwyNSArNzksNDAgQEAgcHJpdmF0ZToKICAgICBXZWJD
b3JlOjpNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgZmluYWw7CiAg
ICAgdm9pZCBzZXRSZWFkeVN0YXRlKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKSBm
aW5hbDsKICAgICB2b2lkIGZsdXNoKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpIGZpbmFsOwot
ICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYsIGNvbnN0
IEF0b21TdHJpbmcmIHRyYWNrSUQpIGZpbmFsOwogICAgIGJvb2wgaXNSZWFkeUZvck1vcmVTYW1w
bGVzKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpIGZpbmFsOwogICAgIHZvaWQgc2V0QWN0aXZl
KGJvb2wpIGZpbmFsOworICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2lzQWN0aXZlOyB9CiAgICAgdm9pZCBub3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxl
cyhjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKSBmaW5hbDsKICAgICBib29sIGNhblNldE1pbmlt
dW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0IGZpbmFs
OwogICAgIHZvaWQgc2V0TWluaW11bVVwY29taW5nUHJlc2VudGF0aW9uVGltZShjb25zdCBBdG9t
U3RyaW5nJiwgY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CiAgICAgdm9pZCBjbGVhck1pbmltdW1V
cGNvbWluZ1ByZXNlbnRhdGlvblRpbWUoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogICAgIGJv
b2wgY2FuU3dpdGNoVG9UeXBlKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJikgZmluYWw7Cisg
ICAgdm9pZCB1cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVk
KSBmaW5hbDsKKyAgICB2b2lkIGV2aWN0Q29kZWRGcmFtZXModWludDY0X3QgbmV3RGF0YVNpemUs
IHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1CdWZm
ZXJTaXplLCBjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBjb25zdCBNZWRpYVRpbWUmIGR1
cmF0aW9uLCBib29sIGlzRW5kZWQpIGZpbmFsOworICAgIHZvaWQgYWRkVHJhY2tCdWZmZXIoY29u
c3QgQXRvbVN0cmluZyYgdHJhY2tJZCwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhRGVzY3JpcHRpb24+
JiYpIGZpbmFsOworICAgIHZvaWQgcmVlbnF1ZXVlTWVkaWFJZk5lZWRlZChjb25zdCBNZWRpYVRp
bWUmIGN1cnJlbnRNZWRpYVRpbWUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHks
IHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplKSBmaW5hbDsKKyAgICB2b2lkIHRyeVNpZ25hbEFs
bFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1l
c3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0KLSAgICB2b2lk
IHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRp
YWxpemF0aW9uU2VnbWVudEluZm8mJik7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlk
UmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0aWFsaXphdGlvblNlZ21lbnRJbmZvJiYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2
YXRlU3RyZWFtRW5kZWRXaXRoRGVjb2RlRXJyb3IoKTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclBy
aXZhdGVBcHBlbmRFcnJvcihib29sIGRlY29kZUVycm9yKTsKICAgICB2b2lkIHNvdXJjZUJ1ZmZl
clByaXZhdGVBcHBlbmRDb21wbGV0ZShXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50
OjpBcHBlbmRSZXN1bHQpOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hh
bmdlZChjb25zdCBNZWRpYVRpbWUmKTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQ
YXJzZVNhbXBsZShkb3VibGUgc2FtcGxlRHVyYXRpb24pOworICAgIHZvaWQgc291cmNlQnVmZmVy
UHJpdmF0ZURpZERyb3BTYW1wbGUoKTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRS
ZWNlaXZlUmVuZGVyaW5nRXJyb3IoaW50IGVycm9yQ29kZSk7CisgICAgdm9pZCBzb3VyY2VCdWZm
ZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCBkaXJ0eSk7CisgICAgdm9pZCBzb3Vy
Y2VCdWZmZXJQcml2YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlBsYXRm
b3JtVGltZVJhbmdlcyYpOwogCiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIG1fZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb247CiAgICAgUmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllciBtX3JlbW90ZVNv
dXJjZUJ1ZmZlcklkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxNZWRpYVNvdXJjZVByaXZhdGVSZW1v
dGU+IG1fbWVkaWFTb3VyY2VQcml2YXRlOwogICAgIFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlPiBtX21lZGlhUGxheWVyUHJpdmF0ZTsKLSAgICBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKKworICAgIEhhc2hNYXA8QXRvbVN0
cmluZywgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllcj4gbV90cmFja0lkZW50aWZpZXJNYXA7
CisKKyAgICBib29sIG1faXNBY3RpdmUgeyBmYWxzZSB9OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiAgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X2xvZ2dlci5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1lc3Nh
Z2VzLmluCmluZGV4IDQwNjQyZjYwMzZlZjdlMTFlMjNiODBmNWE0NTFkNzZmM2VkMjhjNGUuLjZj
OGNjYTBmZTg5N2M1OTllYzRjZWI4YTJiZWE1YTlhYWJmNDY4NjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KQEAgLTI2LDggKzI2LDEyIEBACiAjaWYg
RU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCiBtZXNzYWdlcyAt
PiBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlIE5vdFJlZkNvdW50ZWQgewotICAgIFNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KHN0cnVjdCBXZWJLaXQ6
OkluaXRpYWxpemF0aW9uU2VnbWVudEluZm8gc2VnbWVudENvbmZpZ3VyYXRpb24pCisgICAgU291
cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoc3RydWN0IFdl
YktpdDo6SW5pdGlhbGl6YXRpb25TZWdtZW50SW5mbyBzZWdtZW50Q29uZmlndXJhdGlvbikgLT4g
KCkgQXN5bmMKICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0IGFwcGVuZFJlc3VsdCkKKyAg
ICBTb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKE1lZGlhVGltZSBkdXJhdGlvbikK
KyAgICBTb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoZG91YmxlIHNhbXBsZUR1cmF0
aW9uKQorICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZChib29sIGRp
cnR5KQorICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQoV2ViQ29y
ZTo6UGxhdGZvcm1UaW1lUmFuZ2VzIHRpbWVSYW5nZXMpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVt
b3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJp
dmF0ZVJlbW90ZS5jcHAKaW5kZXggNzMyMjNiODY4NDIxM2EwYmQ4ZjcxMjgyYThlOGRlYTYxNTk5
NWVjMC4uMmI1NmZlZDIzZGVjMzU4NTlhYjg1N2U2ZjZkZmZkNzk4ZTFhYWUxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVt
b3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFj
a1ByaXZhdGVSZW1vdGUuY3BwCkBAIC01Niw5ICs1Niw5IEBAIHZvaWQgVGV4dFRyYWNrUHJpdmF0
ZVJlbW90ZTo6c2V0TW9kZShUZXh0VHJhY2tNb2RlIG1vZGUpCiAKIHZvaWQgVGV4dFRyYWNrUHJp
dmF0ZVJlbW90ZTo6dXBkYXRlQ29uZmlndXJhdGlvbihUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29u
ZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgaWYgKGNvbmZpZ3VyYXRpb24uaWRl
bnRpZmllciAhPSBtX2lkKSB7CisgICAgaWYgKGNvbmZpZ3VyYXRpb24udHJhY2tJZCAhPSBtX2lk
KSB7CiAgICAgICAgIGF1dG8gY2hhbmdlZCA9ICFtX2lkLmlzRW1wdHkoKTsKLSAgICAgICAgbV9p
ZCA9IGNvbmZpZ3VyYXRpb24uaWRlbnRpZmllcjsKKyAgICAgICAgbV9pZCA9IGNvbmZpZ3VyYXRp
b24udHJhY2tJZDsKICAgICAgICAgaWYgKGNoYW5nZWQgJiYgY2xpZW50KCkpCiAgICAgICAgICAg
ICBjbGllbnQoKS0+aWRDaGFuZ2VkKG1faWQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVmlkZW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9WaWRlb1RyYWNrUHJpdmF0ZVJlbW90
ZS5jcHAKaW5kZXggYWM2ZWEwMTQyNzFjMzMxMjZjZDc1MmIzZmZkM2I3ODU0MzlkZTY1Ny4uMzVl
OGU3ZDgzOWM3MjgwMWY2YTk2ZmJlZDI3MjA2NGQ0ZmQ2NmYwMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9WaWRlb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9WaWRlb1RyYWNrUHJpdmF0
ZVJlbW90ZS5jcHAKQEAgLTUyLDkgKzUyLDkgQEAgdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZVJlbW90
ZTo6c2V0U2VsZWN0ZWQoYm9vbCBzZWxlY3RlZCkKIAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZVJl
bW90ZTo6dXBkYXRlQ29uZmlndXJhdGlvbihUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9u
JiYgY29uZmlndXJhdGlvbikKIHsKLSAgICBpZiAoY29uZmlndXJhdGlvbi5pZGVudGlmaWVyICE9
IG1faWQpIHsKKyAgICBpZiAoY29uZmlndXJhdGlvbi50cmFja0lkICE9IG1faWQpIHsKICAgICAg
ICAgYXV0byBjaGFuZ2VkID0gIW1faWQuaXNFbXB0eSgpOwotICAgICAgICBtX2lkID0gY29uZmln
dXJhdGlvbi5pZGVudGlmaWVyOworICAgICAgICBtX2lkID0gY29uZmlndXJhdGlvbi50cmFja0lk
OwogICAgICAgICBpZiAoY2hhbmdlZCAmJiBjbGllbnQoKSkKICAgICAgICAgICAgIGNsaWVudCgp
LT5pZENoYW5nZWQobV9pZCk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415531</attachid>
            <date>2020-12-06 13:17:28 -0800</date>
            <delta_ts>2020-12-08 18:43:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219402-20201206131727.patch</filename>
            <type>text/plain</type>
            <size>124531</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RlYmRkNjNmYjkxNzM2
MTE4MDVlOWY1NDI4Zjk0YmExMWJiMWNlNy4uZGYzZjcyNDIwNjg1YWJhMTdkYTkzZTZlZjljMGU1
MWEyZmNiMzg5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAyMC0xMi0wNiAgUGVu
ZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUgUHJv
Y2Vzc11bTVNFXSBJbXBsZW1lbnQgYmFzaWMgdmlkZW8gcGxheWJhY2sKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkanVzdCB0aGUgaW1wbGVtZW50YXRp
b24gdG8gc3VwcG9ydCBiYXNpYyBtZWRpYSBwbGF5YmFjayB3aGVuIHRoZSBNU0UgbWVkaWEgcGxh
eWVyIHJ1bnMKKyAgICAgICAgaW4gdGhlIEdQVSBwcm9jZXNzLgorCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNv
dXJjZTo6c2V0UHJpdmF0ZUFuZE9wZW4pOiBQcm9wYWdhdGUgdGhlIHRpbWUgZnVkZ2UgZmFjdG9y
IHRvCisgICAgICAgIGBNZWRpYVNvdXJjZVByaXZhdGVgIHNvIHRoYXQgYFNvdXJjZUJ1ZmZlclBy
aXZhdGVgIGNhbiB1c2UgaXQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0RHVy
YXRpb25JbnRlcm5hbCk6IFByb3BhZ2F0ZSB0aGUgZHVyYXRpb24gaW5mb3JtYXRpb24KKyAgICAg
ICAgdG8gYE1lZGlhU291cmNlUHJpdmF0ZWAgc28gdGhhdCBgU291cmNlQnVmZmVyUHJpdmF0ZWAg
Y2FuIHVzZSBpdC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpzdHJlYW1FbmRlZFdp
dGhFcnJvcik6IE1hcmsgdGhlIHN0cmVhbSBpcyBlbmQgaW4gYE1lZGlhU291cmNlUHJpdmF0ZWAu
CisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OlNvdXJjZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXI6On5Tb3VyY2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZSk6IE1vdmUgdGhlIGNvZGUgdG8g
dXBkYXRlCisgICAgICAgIGBidWZmZXJlZGAgdG8gYFNvdXJjZUJ1ZmZlclByaXZhdGVgIHRvIG1h
a2Ugc3VyZSB0aGUgYGJ1ZmZlcmVkYCBhdHRyaWJ1dGUgaXMgdXBkYXRlZCB0aW1lbHkuCisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6Om1heGltdW1CdWZmZXJTaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2Vp
dmVJbml0aWFsaXphdGlvblNlZ21lbnQpOiBBZGQgYSBjb21wbGV0aW9uSGFuZGxlcgorICAgICAg
ICBwYXJhbWV0ZXIgdG8gbm90aWZ5IHRoZSBjYWxsZXIgKGBTb3VyY2VCdWZmZXJQYXJzZXJgKSB0
aGF0IHRoZSB0cmFjayBidWZmZXIgbWFuYWdlciAoYFNvdXJjZUJ1ZmZlclByaXZhdGVgKQorICAg
ICAgICBpcyByZWFkeSB0byByZWNlaXZlIG1lZGlhIHNhbXBsZXMuCisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXI6OmV4dHJhTWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXI6OnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JUcmFja0lEKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVk
RGlydHlDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVm
ZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXI6OmlzQnVmZmVyZWREaXJ0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXI6OnNldEJ1ZmZlcmVkRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlSGFzQXVkaW8gY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlSGFzVmlkZW8gY29u
c3QpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVy
Lmg6CisgICAgICAgIFNvbWUgcGFyYW1ldGVycyBhbmQgcmV0dXJuIHZhbHVlcyBhcmUgY2hhbmdl
ZCBmcm9tIGBzaXplX3RgIHRvIGB1aW50NjRfdGAgYmVjYXVzZSB0aGV5CisgICAgICAgIG5lZWQg
dG8gcGFzcyB3aXRoIElQQyBtZXNzYWdlcyB3aGVuIHdlIHJ1biB0aGUgTVNFIG1lZGlhIHBsYXll
ciBpbiB0aGUgR1BVIHByb2Nlc3MuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9NZWRp
YVNvdXJjZVByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZTo6
c2V0VGltZUZ1ZGdlRmFjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0
ZTo6dGltZUZ1ZGdlRmFjdG9yIGNvbnN0KToKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UHJpdmF0ZTo6c2V0QnVmZmVyZWREaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlOjpzZXRCdWZmZXJlZFJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQcml2YXRlOjp1cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kQ29tcGxldGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmJ1ZmZlcmVkU2FtcGxlc0ZvclRyYWNrSUQp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6cHJvdmlkZU1lZGlhRGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjpyZWVucXVldWVNZWRp
YUZvclRpbWUpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6cmVlbnF1
ZXVlTWVkaWFJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVTYW1wbGVzRnJvbVRy
YWNrQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmV2aWN0
Q29kZWRGcmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6dG90
YWxUcmFja0J1ZmZlclNpemVJbkJ5dGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGU6OmFkZFRyYWNrQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZVNhbXBsZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6aGFzQXVkaW8gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6aGFzVmlkZW8gY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6c3RhcnRDaGFuZ2luZ1R5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JU
cmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OnRpbWVGdWRn
ZUZhY3RvciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjpz
ZXRBY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0
ZTo6c2V0Q3VycmVudFRpbWVGdWRnZUZhY3Rvcik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXJQcml2YXRlOjpidWZmZXJlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjppc0J1ZmZlcmVkRGlydHkgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0QnVmZmVy
ZWREaXJ0eSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50Lmg6CisgICAgICAgIGBTb3VyY2VCdWZmZXJQcml2YXRlYCBjYW4g
ZmlndXJlIHRoZSB2YWx1ZXMgb2YgYGhhc0F1ZGlvYCBhbmQgYGhhc1ZpZGVvYCBiZWNhdXNlIGl0
CisgICAgICAgIG1hbmFnZXMgdGhlIHRyYWNrIGJ1ZmZlcnMsIHNvIHRoZSBmdW5jdGlvbnMgYHNv
dXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRpbygpYCBhbmQKKyAgICAgICAgYHNvdXJjZUJ1ZmZlclBy
aXZhdGVIYXNWaWRlbygpYCBjYW4gYmUgcmVtb3ZlZC4KKworICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmg6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6
Ok1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQzo6ZHVyYXRpb25DaGFuZ2VkKToKKworICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2Vy
QVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldCk6CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRCk6
CisgICAgICAgIFVzZSBhIGNvbmRpdGlvbiB2YXJpYWJsZSB0byBob2xkIHRoZSBjYWxsYmFjayBy
ZWdhcmRpbmcgbmV3IHNhbXBsZXMgYXZhaWxhYmxlCisgICAgICAgIHVudGlsIHRoZSB0cmFjayBi
dWZmZXIgbWFuYWdlciBpcyByZWFkeSB0byByZWNlaXZlIG1lZGlhIHNhbXBsZXMgZm9yIHRoYXQg
dHJhY2suCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
OjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kQ29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0aW1lRnVkZ2VGYWN0b3IgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc1ZpZGVv
IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjpoYXNBdWRpbyBjb25zdCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQ2x1c3RlckJlZ2luKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uVHJhY2tFbnRyeSk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkZyYW1lKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg6CisgICAgICAgIFRo
ZSBzYW1lIGFzIGBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQ2AuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGVHU3RyZWFtZXI6OmR1cmF0
aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGVHU3RyZWFt
ZXI6Om1hcmtFbmRPZlN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZh
dGVHU3RyZWFtZXI6OnVubWFya0VuZE9mU3RyZWFtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1lci5oOgorCisgICAg
ICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OmR1cmF0aW9uQ2hh
bmdlZCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3Vy
Y2VQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291
cmNlQnVmZmVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVy
UHJpdmF0ZTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2
YXRlOjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQp
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6Omhhc1ZpZGVvIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRl
OjpoYXNBdWRpbyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oOgorCiAyMDIwLTEyLTA0ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkgYXVkaW8gcmVzYW1w
bGluZyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMzN2E1NDQwZTIxNzZhOWRlNTYyZDJiNTQ3OGQ3OWMxNDA4
NDk4ZjEuLmRlMWRmNGQyNDc0YTA4MjUzZDIyMTIyNDMyMjdhZGI1NzUzYjY1ZjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTA0IEBACisyMDIwLTEyLTA2ICBQZW5nIExpdSAgPHBlbmcubGl1NkBhcHBs
ZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBQcm9jZXNzXVtNU0VdIEltcGxlbWVudCBi
YXNpYyB2aWRlbyBwbGF5YmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE5NDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBuZWNlc3NhcnkgZnVuY3Rpb25zIHdpdGggSVBDIHRv
IHN1cHBvcnQgbWVkaWEgcGxheWJhY2suCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUF1ZGlvVHJhY2tQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUF1ZGlvVHJh
Y2tQcm94eTo6Y29uZmlndXJhdGlvbik6IFJlbmFtZSBgaWRlbnRpZmllcmAgdG8gYHRyYWNrSWRg
CisgICAgICAgIGJlY2F1c2UgaXQgaXMgZWFzeSB0byBjb25mdXNlIHdpdGggYFRyYWNrUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXJgLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eTo6bG9hZE1lZGlhU291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6dXBkYXRlQ2FjaGVkU3RhdGUpOiBGb3IgTVNFIG1lZGlhIHBsYXllciwgYFNvdXJj
ZUJ1ZmZlcmAKKyAgICAgICAgcHJvdmlkZXMgdGhlIGJ1ZmZlcmVkIHJhbmdlcywgc28gYFJlbW90
ZU1lZGlhUGxheWVyUHJveHlgIGRvZXMgbm90IG5lZWQgdG8gcmVwb3J0IHRoaXMKKyAgICAgICAg
aW5mb3JtYXRpb24gdG8gdGhlIGBNZWRpYVBsYXllcmAgb2JqZWN0IGluIHRoZSBXZWIgcHJvY2Vz
cy4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaDoK
KyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2Fn
ZXMuaW46CisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpkdXJhdGlv
biBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNlUHJveHk6OmJ1ZmZl
cmVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6ZHVy
YXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6
c2V0UmVhZHlTdGF0ZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNv
dXJjZVByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJj
ZVByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVT
b3VyY2VCdWZmZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5Ojp+UmVtb3RlU291cmNlQnVmZmVyUHJveHkpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJl
Y2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRl
RGlkUGFyc2VTYW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94
eTo6c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKToKKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVu
ZGVyaW5nRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6
c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKToKKyAgICAgICAgKFdlYktp
dDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJh
bmdlc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6
c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNl
dFJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6
dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
U291cmNlQnVmZmVyUHJveHk6OmV2aWN0Q29kZWRGcmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6YWRkVHJhY2tCdWZmZXIpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6cmVlbnF1ZXVlTWVkaWFJZk5lZWRlZCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojp0cnlTaWduYWxBbGxTYW1wbGVz
SW5UcmFja0VucXVldWVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJv
eHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRpbyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlSGFz
VmlkZW8gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
U291cmNlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVRleHRU
cmFja1Byb3h5Ojpjb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVZpZGVvVHJhY2tQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVZpZGVvVHJh
Y2tQcm94eTo6Y29uZmlndXJhdGlvbik6CisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1Rl
eHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmg6CisgICAgICAgIChXZWJLaXQ6OlRl
eHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAg
ICAoV2ViS2l0OjpUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToK
KworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJh
dGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9u
OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVDb25m
aWd1cmF0aW9uOjpkZWNvZGUpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVk
aW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdWRpb1RyYWNrUHJp
dmF0ZVJlbW90ZTo6dXBkYXRlQ29uZmlndXJhdGlvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuaDoKKworICAgICAgICAqIFdlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZCk6CisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL0dQVS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OmR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAg
IChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6aXNFbmRlZCBjb25zdCk6CisgICAg
ICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6c2V0UmVhZHlTdGF0ZSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmg6
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c2V0
UmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6
OmZsdXNoKToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c2V0
QWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6dXBk
YXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZTo6ZXZpY3RDb2RlZEZyYW1lcyk6CisgICAgICAgIChXZWJLaXQ6OlNv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFkZFRyYWNrQnVmZmVyKToKKyAgICAgICAgKFdlYktp
dDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6cmVlbnF1ZXVlTWVkaWFJZk5lZWRlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnRyeVNpZ25hbEFsbFNh
bXBsZXNJblRyYWNrRW5xdWV1ZWQpOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2Vn
bWVudCk6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJj
ZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUpOgor
ICAgICAgICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQ
cml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6ZW5xdWV1ZVNh
bXBsZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6dXBkYXRlQ29uZmlndXJhdGlvbik6CisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9WaWRlb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlZpZGVvVHJhY2tQcml2YXRlUmVtb3RlOjp1cGRhdGVDb25maWd1cmF0aW9u
KToKKwogMjAyMC0xMi0wNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4K
IAogICAgICAgICBbaU9TXSBDYW5jZWwgaW1hZ2UgZXh0cmFjdGlvbiB3aGVuIG5hdmlnYXRpbmcK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5j
cHAKaW5kZXggZmVlNTQ3MzlkNTVmMGUxZDVhMTZiNWFjOWIxNGIyYzBhYjcyZjg5MS4uYWRmN2Ix
OTVhYmJiMDNjMDEwZjIwODI3ZWUwYWNkZmZmZTA0YTUzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKQEAgLTEyNCw2ICsxMjQs
NyBAQCB2b2lkIE1lZGlhU291cmNlOjpzZXRQcml2YXRlQW5kT3BlbihSZWY8TWVkaWFTb3VyY2VQ
cml2YXRlPiYmIG1lZGlhU291cmNlUHJpdmF0ZQogICAgIEFTU0VSVCghbV9wcml2YXRlKTsKICAg
ICBBU1NFUlQobV9tZWRpYUVsZW1lbnQpOwogICAgIG1fcHJpdmF0ZSA9IFdURk1vdmUobWVkaWFT
b3VyY2VQcml2YXRlKTsKKyAgICBtX3ByaXZhdGUtPnNldFRpbWVGdWRnZUZhY3RvcihjdXJyZW50
VGltZUZ1ZGdlRmFjdG9yKCkpOwogCiAgICAgLy8gMi40LjEgQXR0YWNoaW5nIHRvIGEgbWVkaWEg
ZWxlbWVudAogICAgIC8vIGh0dHBzOi8vcmF3Z2l0LmNvbS93M2MvbWVkaWEtc291cmNlLzQ1NjI3
NjQ2MzQ0ZWVhMDE3MGRkMWNiYzVhM2Q1MDhjYTc1MWFiYjgvbWVkaWEtc291cmNlLXJlc3BlYy5o
dG1sI21lZGlhc291cmNlLWF0dGFjaApAQCAtNTU2LDcgKzU1Nyw3IEBAIEV4Y2VwdGlvbk9yPHZv
aWQ+IE1lZGlhU291cmNlOjpzZXREdXJhdGlvbkludGVybmFsKGNvbnN0IE1lZGlhVGltZSYgZHVy
YXRpb24pCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBkdXJhdGlvbik7CiAKICAgICAv
LyA2LiBVcGRhdGUgdGhlIG1lZGlhIGR1cmF0aW9uIHRvIG5ldyBkdXJhdGlvbiBhbmQgcnVuIHRo
ZSBIVE1MTWVkaWFFbGVtZW50IGR1cmF0aW9uIGNoYW5nZSBhbGdvcml0aG0uCi0gICAgbV9wcml2
YXRlLT5kdXJhdGlvbkNoYW5nZWQoKTsKKyAgICBtX3ByaXZhdGUtPmR1cmF0aW9uQ2hhbmdlZChk
dXJhdGlvbik7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtNjI4LDYgKzYyOSw3IEBAIHZvaWQg
TWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVycm9yKE9wdGlvbmFsPEVuZE9mU3RyZWFtRXJy
b3I+IGVycm9yKQogICAgICAgICAgICAgc291cmNlQnVmZmVyLT50cnlTaWduYWxBbGxTYW1wbGVz
RW5xdWV1ZWQoKTsKICAgICAgICAgbV9wcml2YXRlLT5tYXJrRW5kT2ZTdHJlYW0oTWVkaWFTb3Vy
Y2VQcml2YXRlOjpFb3NOb0Vycm9yKTsKICAgICB9IGVsc2UgaWYgKGVycm9yID09IEVuZE9mU3Ry
ZWFtRXJyb3I6Ok5ldHdvcmspIHsKKyAgICAgICAgbV9wcml2YXRlLT5tYXJrRW5kT2ZTdHJlYW0o
TWVkaWFTb3VyY2VQcml2YXRlOjpFb3NOZXR3b3JrRXJyb3IpOwogICAgICAgICAvLyDihrMgSWYg
ZXJyb3IgaXMgc2V0IHRvICJuZXR3b3JrIgogICAgICAgICBBU1NFUlQobV9tZWRpYUVsZW1lbnQp
OwogICAgICAgICBpZiAobV9tZWRpYUVsZW1lbnQtPnJlYWR5U3RhdGUoKSA9PSBIVE1MTWVkaWFF
bGVtZW50OjpIQVZFX05PVEhJTkcpIHsKQEAgLTY0Niw2ICs2NDgsOCBAQCB2b2lkIE1lZGlhU291
cmNlOjpzdHJlYW1FbmRlZFdpdGhFcnJvcihPcHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPiBlcnJv
cikKICAgICB9IGVsc2UgewogICAgICAgICAvLyDihrMgSWYgZXJyb3IgaXMgc2V0IHRvICJkZWNv
ZGUiCiAgICAgICAgIEFTU0VSVChlcnJvciA9PSBFbmRPZlN0cmVhbUVycm9yOjpEZWNvZGUpOwor
ICAgICAgICBtX3ByaXZhdGUtPm1hcmtFbmRPZlN0cmVhbShNZWRpYVNvdXJjZVByaXZhdGU6OkVv
c0RlY29kZUVycm9yKTsKKwogICAgICAgICBBU1NFUlQobV9tZWRpYUVsZW1lbnQpOwogICAgICAg
ICBpZiAobV9tZWRpYUVsZW1lbnQtPnJlYWR5U3RhdGUoKSA9PSBIVE1MTWVkaWFFbGVtZW50OjpI
QVZFX05PVEhJTkcpIHsKICAgICAgICAgICAgIC8vICDihrMgSWYgdGhlIEhUTUxNZWRpYUVsZW1l
bnQucmVhZHlTdGF0ZSBhdHRyaWJ1dGUgZXF1YWxzIEhBVkVfTk9USElORwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCmluZGV4IGNk
ZTE4M2Y4OTI3NDdkMzJhZGE4MmU3ZDVlMmI5YjQzZWM1M2JkZmUuLjNkM2E2MTkyMTQ3NmFkMjY2
ZDI1ZmI5MjdiNDRhYzk4Mjg0MGVlYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKQEAgLTgxLDYgKzgxLDcgQEAgU291cmNl
QnVmZmVyOjpTb3VyY2VCdWZmZXIoUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGU+JiYgc291cmNlQnVm
ZmVyUHJpdmF0ZSwgTWVkaWEKICAgICAsIG1fYXBwZW5kV2luZG93RW5kKE1lZGlhVGltZTo6cG9z
aXRpdmVJbmZpbml0ZVRpbWUoKSkKICAgICAsIG1fYXBwZW5kU3RhdGUoV2FpdGluZ0ZvclNlZ21l
bnQpCiAgICAgLCBtX3RpbWVPZkJ1ZmZlcmluZ01vbml0b3IoTW9ub3RvbmljVGltZTo6bm93KCkp
CisgICAgLCBtX2J1ZmZlcmVkKFRpbWVSYW5nZXM6OmNyZWF0ZSgpKQogICAgICwgbV9wZW5kaW5n
UmVtb3ZlU3RhcnQoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKQogICAgICwgbV9wZW5kaW5nUmVt
b3ZlRW5kKE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSkKICAgICAsIG1fcmVtb3ZlVGltZXIoKnRo
aXMsICZTb3VyY2VCdWZmZXI6OnJlbW92ZVRpbWVyRmlyZWQpCkBAIC05NCw3ICs5NSw2IEBAIFNv
dXJjZUJ1ZmZlcjo6U291cmNlQnVmZmVyKFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlPiYmIHNvdXJj
ZUJ1ZmZlclByaXZhdGUsIE1lZGlhCiAKICAgICBtX3ByaXZhdGUtPnNldENsaWVudCh0aGlzKTsK
ICAgICBtX3ByaXZhdGUtPnNldElzQXR0YWNoZWQodHJ1ZSk7Ci0gICAgbV9wcml2YXRlLT5zZXRD
dXJyZW50VGltZUZ1ZGdlRmFjdG9yKG1fc291cmNlLT5jdXJyZW50VGltZUZ1ZGdlRmFjdG9yKCkp
OwogfQogCiBTb3VyY2VCdWZmZXI6On5Tb3VyY2VCdWZmZXIoKQpAQCAtMTAyLDggKzEwMiw4IEBA
IFNvdXJjZUJ1ZmZlcjo6flNvdXJjZUJ1ZmZlcigpCiAgICAgQVNTRVJUKGlzUmVtb3ZlZCgpKTsK
ICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogCi0gICAgbV9wcml2YXRlLT5zZXRDbGll
bnQobnVsbHB0cik7CiAgICAgbV9wcml2YXRlLT5zZXRJc0F0dGFjaGVkKGZhbHNlKTsKKyAgICBt
X3ByaXZhdGUtPnNldENsaWVudChudWxscHRyKTsKIH0KIAogRXhjZXB0aW9uT3I8UmVmPFRpbWVS
YW5nZXM+PiBTb3VyY2VCdWZmZXI6OmJ1ZmZlcmVkKCkgY29uc3QKQEAgLTExNiw3ICsxMTYsNyBA
QCBFeGNlcHRpb25PcjxSZWY8VGltZVJhbmdlcz4+IFNvdXJjZUJ1ZmZlcjo6YnVmZmVyZWQoKSBj
b25zdAogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKIAog
ICAgIC8vIDIuIFJldHVybiBhIG5ldyBzdGF0aWMgbm9ybWFsaXplZCBUaW1lUmFuZ2VzIG9iamVj
dCBmb3IgdGhlIG1lZGlhIHNlZ21lbnRzIGJ1ZmZlcmVkLgotICAgIHJldHVybiBtX3ByaXZhdGUt
PmJ1ZmZlcmVkKCktPmNvcHkoKTsKKyAgICByZXR1cm4gbV9idWZmZXJlZC0+Y29weSgpOwogfQog
CiBkb3VibGUgU291cmNlQnVmZmVyOjp0aW1lc3RhbXBPZmZzZXQoKSBjb25zdApAQCAtNTUyLDEw
ICs1NTIsNiBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENv
bXBsZXRlKEFwcGVuZFJlc3VsdCByZXN1bHQpCiAgICAgaWYgKGlzUmVtb3ZlZCgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICAvLyBSZXNvbHZlIHRoZSBjaGFuZ2VzIGl0IFRyYWNrQnVmZmVycycg
YnVmZmVyZWQgcmFuZ2VzCi0gICAgLy8gaW50byB0aGUgU291cmNlQnVmZmVyJ3MgYnVmZmVyZWQg
cmFuZ2VzCi0gICAgbV9wcml2YXRlLT51cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMobV9z
b3VyY2UtPmlzRW5kZWQoKSk7Ci0KICAgICAvLyBTZWN0aW9uIDMuNS41IEJ1ZmZlciBBcHBlbmQg
QWxnb3JpdGhtLCBjdGQuCiAgICAgLy8gaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9odG1sLW1lZGlh
L3Jhdy1maWxlL2RlZmF1bHQvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS5odG1sI3NvdXJjZWJ1
ZmZlci1idWZmZXItYXBwZW5kCiAKQEAgLTYzNCw3ICs2MzAsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZl
cjo6cmVtb3ZlVGltZXJGaXJlZCgpCiAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkudXBk
YXRlZW5kRXZlbnQpOwogfQogCi1zaXplX3QgU291cmNlQnVmZmVyOjptYXhpbXVtQnVmZmVyU2l6
ZSgpIGNvbnN0Cit1aW50NjRfdCBTb3VyY2VCdWZmZXI6Om1heGltdW1CdWZmZXJTaXplKCkgY29u
c3QKIHsKICAgICBpZiAoaXNSZW1vdmVkKCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNjc4LDEw
ICs2NzQsMTIgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNldEFjdGl2ZShib29sIGFjdGl2ZSkKICAg
ICAgICAgbV9zb3VyY2UtPnNvdXJjZUJ1ZmZlckRpZENoYW5nZUFjdGl2ZVN0YXRlKCp0aGlzLCBh
Y3RpdmUpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJl
Y2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50JiBz
ZWdtZW50KQordm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZl
SW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemF0aW9uU2VnbWVudCYmIHNlZ21lbnQsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBpZiAo
aXNSZW1vdmVkKCkpCisgICAgaWYgKGlzUmVtb3ZlZCgpKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBBTFdBWVNfTE9HKExPR0lE
RU5USUZJRVIpOwogCkBAIC03MDQsNiArNzAyLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJj
ZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXQK
ICAgICAvLyB3aXRoIHRoZSBkZWNvZGUgZXJyb3IgcGFyYW1ldGVyIHNldCB0byB0cnVlIGFuZCBh
Ym9ydCB0aGVzZSBzdGVwcy4KICAgICBpZiAoc2VnbWVudC5hdWRpb1RyYWNrcy5pc0VtcHR5KCkg
JiYgc2VnbWVudC52aWRlb1RyYWNrcy5pc0VtcHR5KCkgJiYgc2VnbWVudC50ZXh0VHJhY2tzLmlz
RW1wdHkoKSkgewogICAgICAgICBhcHBlbmRFcnJvcih0cnVlKTsKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzEzLDYgKzcxMiw3IEBA
IHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxp
emF0aW9uU2VnbWVudChjb25zdCBJbml0CiAgICAgICAgIC8vIHdpdGggdGhlIGRlY29kZSBlcnJv
ciBwYXJhbWV0ZXIgc2V0IHRvIHRydWUgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgogICAgICAgICBp
ZiAoIXZhbGlkYXRlSW5pdGlhbGl6YXRpb25TZWdtZW50KHNlZ21lbnQpKSB7CiAgICAgICAgICAg
ICBhcHBlbmRFcnJvcih0cnVlKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtODE1LDEwICs4MTUsMTAgQEAgdm9p
ZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRp
b25TZWdtZW50KGNvbnN0IEluaXQKICAgICAgICAgICAgIC8vIHJlZmVyZW5jZWQgYnkgdGhlIGF1
ZGlvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KICAgICAgICAgICAg
IG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+ZW5zdXJlQXVkaW9UcmFja3MoKS5hcHBlbmQobmV3
QXVkaW9UcmFjay5jb3B5UmVmKCkpOwogCi0gICAgICAgICAgICAvLyA1LjIuOCBDcmVhdGUgYSBu
ZXcgdHJhY2sgYnVmZmVyIHRvIHN0b3JlIGNvZGVkIGZyYW1lcyBmb3IgdGhpcyB0cmFjay4KLSAg
ICAgICAgICAgIG1fcHJpdmF0ZS0+YWRkVHJhY2tCdWZmZXIobmV3QXVkaW9UcmFjay0+aWQoKSwg
YXVkaW9UcmFja0luZm8uZGVzY3JpcHRpb24pOwotCiAgICAgICAgICAgICBtX2F1ZGlvQ29kZWNz
LmFwcGVuZChhdWRpb1RyYWNrSW5mby5kZXNjcmlwdGlvbi0+Y29kZWMoKSk7CisKKyAgICAgICAg
ICAgIC8vIDUuMi44IENyZWF0ZSBhIG5ldyB0cmFjayBidWZmZXIgdG8gc3RvcmUgY29kZWQgZnJh
bWVzIGZvciB0aGlzIHRyYWNrLgorICAgICAgICAgICAgbV9wcml2YXRlLT5hZGRUcmFja0J1ZmZl
cihuZXdBdWRpb1RyYWNrLT5pZCgpLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJbmZvLmRlc2NyaXB0aW9u
KSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyA1LjMgRm9yIGVhY2ggdmlkZW8gdHJhY2sgaW4g
dGhlIGluaXRpYWxpemF0aW9uIHNlZ21lbnQsIHJ1biBmb2xsb3dpbmcgc3RlcHM6CkBAIC04NTAs
MTAgKzg1MCwxMCBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJl
Y2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgSW5pdAogICAgICAgICAgICAgLy8gcmVm
ZXJlbmNlZCBieSB0aGUgdmlkZW9UcmFja3MgYXR0cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVt
ZW50LgogICAgICAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT5lbnN1cmVWaWRlb1Ry
YWNrcygpLmFwcGVuZChuZXdWaWRlb1RyYWNrLmNvcHlSZWYoKSk7CiAKLSAgICAgICAgICAgIC8v
IDUuMy44IENyZWF0ZSBhIG5ldyB0cmFjayBidWZmZXIgdG8gc3RvcmUgY29kZWQgZnJhbWVzIGZv
ciB0aGlzIHRyYWNrLgotICAgICAgICAgICAgbV9wcml2YXRlLT5hZGRUcmFja0J1ZmZlcihuZXdW
aWRlb1RyYWNrLT5pZCgpLCB2aWRlb1RyYWNrSW5mby5kZXNjcmlwdGlvbik7Ci0KICAgICAgICAg
ICAgIG1fdmlkZW9Db2RlY3MuYXBwZW5kKHZpZGVvVHJhY2tJbmZvLmRlc2NyaXB0aW9uLT5jb2Rl
YygpKTsKKworICAgICAgICAgICAgLy8gNS4zLjggQ3JlYXRlIGEgbmV3IHRyYWNrIGJ1ZmZlciB0
byBzdG9yZSBjb2RlZCBmcmFtZXMgZm9yIHRoaXMgdHJhY2suCisgICAgICAgICAgICBtX3ByaXZh
dGUtPmFkZFRyYWNrQnVmZmVyKG5ld1ZpZGVvVHJhY2stPmlkKCksIFdURk1vdmUodmlkZW9UcmFj
a0luZm8uZGVzY3JpcHRpb24pKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIDUuNCBGb3IgZWFj
aCB0ZXh0IHRyYWNrIGluIHRoZSBpbml0aWFsaXphdGlvbiBzZWdtZW50LCBydW4gZm9sbG93aW5n
IHN0ZXBzOgpAQCAtODgyLDEwICs4ODIsMTAgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXQKICAg
ICAgICAgICAgIC8vIHJlZmVyZW5jZWQgYnkgdGhlIHRleHRUcmFja3MgYXR0cmlidXRlIG9uIHRo
ZSBIVE1MTWVkaWFFbGVtZW50LgogICAgICAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgp
LT5lbnN1cmVUZXh0VHJhY2tzKCkuYXBwZW5kKG5ld1RleHRUcmFjay5jb3B5UmVmKCkpOwogCi0g
ICAgICAgICAgICAvLyA1LjQuNyBDcmVhdGUgYSBuZXcgdHJhY2sgYnVmZmVyIHRvIHN0b3JlIGNv
ZGVkIGZyYW1lcyBmb3IgdGhpcyB0cmFjay4KLSAgICAgICAgICAgIG1fcHJpdmF0ZS0+YWRkVHJh
Y2tCdWZmZXIobmV3VGV4dFRyYWNrLT5pZCgpLCB0ZXh0VHJhY2tJbmZvLmRlc2NyaXB0aW9uKTsK
LQogICAgICAgICAgICAgbV90ZXh0Q29kZWNzLmFwcGVuZCh0ZXh0VHJhY2tJbmZvLmRlc2NyaXB0
aW9uLT5jb2RlYygpKTsKKworICAgICAgICAgICAgLy8gNS40LjcgQ3JlYXRlIGEgbmV3IHRyYWNr
IGJ1ZmZlciB0byBzdG9yZSBjb2RlZCBmcmFtZXMgZm9yIHRoaXMgdHJhY2suCisgICAgICAgICAg
ICBtX3ByaXZhdGUtPmFkZFRyYWNrQnVmZmVyKG5ld1RleHRUcmFjay0+aWQoKSwgV1RGTW92ZSh0
ZXh0VHJhY2tJbmZvLmRlc2NyaXB0aW9uKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyA1LjUg
SWYgYWN0aXZlIHRyYWNrIGZsYWcgZXF1YWxzIHRydWUsIHRoZW4gcnVuIHRoZSBmb2xsb3dpbmcg
c3RlcHM6CkBAIC05MDIsNiArOTAyLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXQKICAgICAv
LyAoTm90ZTogSXNzdWUgIzE1NSBhZGRzIHRoaXMgc3RlcCBhZnRlciBzdGVwIDU6KQogICAgIC8v
IDYuIFNldCAgcGVuZGluZyBpbml0aWFsaXphdGlvbiBzZWdtZW50IGZvciBjaGFuZ2VUeXBlIGZs
YWcgIHRvIGZhbHNlLgogICAgIG1fcGVuZGluZ0luaXRpYWxpemF0aW9uU2VnbWVudEZvckNoYW5n
ZVR5cGUgPSBmYWxzZTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogCiAgICAgLy8gNi4gSWYg
dGhlIEhUTUxNZWRpYUVsZW1lbnQucmVhZHlTdGF0ZSBhdHRyaWJ1dGUgaXMgSEFWRV9OT1RISU5H
LCB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgogICAgIGlmIChtX3ByaXZhdGUtPnJlYWR5
U3RhdGUoKSA9PSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmcpIHsKQEAgLTEw
MTEsMTYgKzEwMTIsNiBAQCBib29sIFNvdXJjZUJ1ZmZlcjo6aGFzVmlkZW8oKSBjb25zdAogICAg
IHJldHVybiBtX3ZpZGVvVHJhY2tzICYmIG1fdmlkZW9UcmFja3MtPmxlbmd0aCgpOwogfQogCi1i
b29sIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlvKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gaGFzQXVkaW8oKTsKLX0KLQotYm9vbCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1
ZmZlclByaXZhdGVIYXNWaWRlbygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGhhc1ZpZGVvKCk7Ci19
Ci0KIHZvaWQgU291cmNlQnVmZmVyOjp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFuZ2VkKFZpZGVvVHJh
Y2smIHRyYWNrKQogewogICAgIC8vIDIuNC41IENoYW5nZXMgdG8gc2VsZWN0ZWQvZW5hYmxlZCB0
cmFjayBzdGF0ZQpAQCAtMTIwNCw5ICsxMTk1LDkgQEAgYm9vbCBTb3VyY2VCdWZmZXI6OmNhblBs
YXlUaHJvdWdoUmFuZ2UoUGxhdGZvcm1UaW1lUmFuZ2VzJiByYW5nZXMpCiAgICAgcmV0dXJuIHVu
YnVmZmVyZWRUaW1lLnRvRG91YmxlKCkgLyBtX2F2ZXJhZ2VCdWZmZXJSYXRlIDwgdGltZVJlbWFp
bmluZy50b0RvdWJsZSgpOwogfQogCi1zaXplX3QgU291cmNlQnVmZmVyOjpleHRyYU1lbW9yeUNv
c3QoKSBjb25zdAordWludDY0X3QgU291cmNlQnVmZmVyOjpleHRyYU1lbW9yeUNvc3QoKSBjb25z
dAogewotICAgIHNpemVfdCBleHRyYU1lbW9yeUNvc3QgPSBtX3BlbmRpbmdBcHBlbmREYXRhLmNh
cGFjaXR5KCk7CisgICAgdWludDY0X3QgZXh0cmFNZW1vcnlDb3N0ID0gbV9wZW5kaW5nQXBwZW5k
RGF0YS5jYXBhY2l0eSgpOwogICAgIGV4dHJhTWVtb3J5Q29zdCArPSBtX3ByaXZhdGUtPnRvdGFs
VHJhY2tCdWZmZXJTaXplSW5CeXRlcygpOwogCiAgICAgcmV0dXJuIGV4dHJhTWVtb3J5Q29zdDsK
QEAgLTEyMTQsMTEgKzEyMDUsMTEgQEAgc2l6ZV90IFNvdXJjZUJ1ZmZlcjo6ZXh0cmFNZW1vcnlD
b3N0KCkgY29uc3QKIAogdm9pZCBTb3VyY2VCdWZmZXI6OnJlcG9ydEV4dHJhTWVtb3J5QWxsb2Nh
dGVkKCkKIHsKLSAgICBzaXplX3QgZXh0cmFNZW1vcnlDb3N0ID0gdGhpcy0+ZXh0cmFNZW1vcnlD
b3N0KCk7CisgICAgdWludDY0X3QgZXh0cmFNZW1vcnlDb3N0ID0gdGhpcy0+ZXh0cmFNZW1vcnlD
b3N0KCk7CiAgICAgaWYgKGV4dHJhTWVtb3J5Q29zdCA8PSBtX3JlcG9ydGVkRXh0cmFNZW1vcnlD
b3N0KQogICAgICAgICByZXR1cm47CiAKLSAgICBzaXplX3QgZXh0cmFNZW1vcnlDb3N0RGVsdGEg
PSBleHRyYU1lbW9yeUNvc3QgLSBtX3JlcG9ydGVkRXh0cmFNZW1vcnlDb3N0OworICAgIHVpbnQ2
NF90IGV4dHJhTWVtb3J5Q29zdERlbHRhID0gZXh0cmFNZW1vcnlDb3N0IC0gbV9yZXBvcnRlZEV4
dHJhTWVtb3J5Q29zdDsKICAgICBtX3JlcG9ydGVkRXh0cmFNZW1vcnlDb3N0ID0gZXh0cmFNZW1v
cnlDb3N0OwogCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPnZtKCkpOwpAQCAtMTI0Miw3ICsxMjMzLDcgQEAgTWVkaWFUaW1lIFNvdXJjZUJ1ZmZl
cjo6bWluaW11bVVwY29taW5nUHJlc2VudGF0aW9uVGltZUZvclRyYWNrSUQoY29uc3QgQXRvbVN0
cmkKICAgICByZXR1cm4gbV9wcml2YXRlLT5taW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1l
Rm9yVHJhY2tJRCh0cmFja0lEKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXI6OnNldE1heGltdW1R
dWV1ZURlcHRoRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lELCBzaXplX3QgbWF4
UXVldWVEZXB0aCkKK3ZvaWQgU291cmNlQnVmZmVyOjpzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRy
YWNrSUQoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCwgdWludDY0X3QgbWF4UXVldWVEZXB0aCkK
IHsKICAgICBtX3ByaXZhdGUtPnNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRCh0cmFja0lE
LCBtYXhRdWV1ZURlcHRoKTsKIH0KQEAgLTEzMDIsMTQgKzEyOTMsMjQgQEAgdm9pZCBTb3VyY2VC
dWZmZXI6OnNldFNob3VsZEdlbmVyYXRlVGltZXN0YW1wcyhib29sIGZsYWcpCiAgICAgbV9wcml2
YXRlLT5zZXRTaG91bGRHZW5lcmF0ZVRpbWVzdGFtcHMoZmxhZyk7CiB9CiAKK3ZvaWQgU291cmNl
QnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCBmbGFn
KQoreworICAgIG1fYnVmZmVyZWREaXJ0eSA9IGZsYWc7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVy
Ojpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2VkKGNvbnN0IFBsYXRmb3Jt
VGltZVJhbmdlcyYgdGltZVJhbmdlcykKK3sKKyAgICBtX2J1ZmZlcmVkLT5yYW5nZXMoKSA9IHRp
bWVSYW5nZXM7Cit9CisKIGJvb2wgU291cmNlQnVmZmVyOjppc0J1ZmZlcmVkRGlydHkoKSBjb25z
dAogewotICAgIHJldHVybiBtX3ByaXZhdGUtPmlzQnVmZmVyZWREaXJ0eSgpOworICAgIHJldHVy
biBtX2J1ZmZlcmVkRGlydHk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyOjpzZXRCdWZmZXJlZERp
cnR5KGJvb2wgZmxhZykKIHsKLSAgICBtX3ByaXZhdGUtPnNldEJ1ZmZlcmVkRGlydHkoZmxhZyk7
CisgICAgbV9idWZmZXJlZERpcnR5ID0gZmxhZzsKIH0KIAogI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVm
ZmVyLmgKaW5kZXggZDE1YzI5YmNkODg2MmU5MmI0NmQ5M2IwMTI1MDUwMTkzNDllMmNmOC4uMjI5
M2JjNTA3N2JiMTc2OTg0MjJkZTBlNjZlZGY0YTc5YjFmYWU0NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCkBAIC05Niw3ICs5Niw3
IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmUoY29uc3QgTWVkaWFUaW1l
JiwgY29uc3QgTWVkaWFUaW1lJik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gY2hhbmdlVHlwZShj
b25zdCBTdHJpbmcmKTsKIAotICAgIGNvbnN0IFRpbWVSYW5nZXMmIGJ1ZmZlcmVkSW50ZXJuYWwo
KSBjb25zdCB7IEFTU0VSVChtX3ByaXZhdGUtPmJ1ZmZlcmVkKCkpOyByZXR1cm4gKm1fcHJpdmF0
ZS0+YnVmZmVyZWQoKTsgfQorICAgIGNvbnN0IFRpbWVSYW5nZXMmIGJ1ZmZlcmVkSW50ZXJuYWwo
KSBjb25zdCB7IEFTU0VSVChtX2J1ZmZlcmVkKTsgcmV0dXJuICptX2J1ZmZlcmVkOyB9CiAKICAg
ICB2b2lkIGFib3J0SWZVcGRhdGluZygpOwogICAgIHZvaWQgcmVtb3ZlZEZyb21NZWRpYVNvdXJj
ZSgpOwpAQCAtMTQ4LDE1ICsxNDgsMTUgQEAgcHJpdmF0ZToKICAgICBib29sIHZpcnR1YWxIYXNQ
ZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIFNvdXJjZUJ1ZmZlclByaXZh
dGVDbGllbnQKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6
YXRpb25TZWdtZW50KGNvbnN0IEluaXRpYWxpemF0aW9uU2VnbWVudCYpIGZpbmFsOworICAgIHZv
aWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5p
dGlhbGl6YXRpb25TZWdtZW50JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7
CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlU3RyZWFtRW5kZWRXaXRoRGVjb2RlRXJyb3Io
KSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRFcnJvcihib29sIGRl
Y29kZUVycm9yKSBmaW5hbDsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21w
bGV0ZShBcHBlbmRSZXN1bHQpIGZpbmFsOwogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUR1
cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uKSBmaW5hbDsKICAgICB2b2lk
IHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBsZShkb3VibGUgc2FtcGxlRHVyYXRpb24p
IGZpbmFsOwogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZERyb3BTYW1wbGUoKSBmaW5h
bDsKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVTdHJlYW1FbmRlZFdpdGhEZWNvZGVFcnJv
cigpIGZpbmFsOwotICAgIGJvb2wgc291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlvKCkgY29uc3Qg
ZmluYWw7Ci0gICAgYm9vbCBzb3VyY2VCdWZmZXJQcml2YXRlSGFzVmlkZW8oKSBjb25zdCBmaW5h
bDsKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1
bHQpIGZpbmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFu
Z2VkKGJvb2wpIGZpbmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFu
Z2VzQ2hhbmdlZChjb25zdCBQbGF0Zm9ybVRpbWVSYW5nZXMmKSBmaW5hbDsKICAgICB2b2lkIHNv
dXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJyb3IoaW50IGVycm9yQ29kZSkg
ZmluYWw7CiAKICAgICAvLyBBdWRpb1RyYWNrQ2xpZW50CkBAIC0xODUsMTMgKzE4NSwxMyBAQCBw
cml2YXRlOgogCiAgICAgYm9vbCB2YWxpZGF0ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJ
bml0aWFsaXphdGlvblNlZ21lbnQmKTsKIAotICAgIHNpemVfdCBtYXhpbXVtQnVmZmVyU2l6ZSgp
IGNvbnN0OworICAgIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplKCkgY29uc3Q7CiAKICAgICB2
b2lkIG1vbml0b3JCdWZmZXJpbmdSYXRlKCk7CiAKICAgICB2b2lkIHJlbW92ZVRpbWVyRmlyZWQo
KTsKIAotICAgIHNpemVfdCBleHRyYU1lbW9yeUNvc3QoKSBjb25zdDsKKyAgICB1aW50NjRfdCBl
eHRyYU1lbW9yeUNvc3QoKSBjb25zdDsKICAgICB2b2lkIHJlcG9ydEV4dHJhTWVtb3J5QWxsb2Nh
dGVkKCk7CiAKICAgICB2b2lkIGFwcGVuZEVycm9yKGJvb2wpOwpAQCAtMjA0LDcgKzIwNCw3IEBA
IHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gYnVmZmVyZWRTYW1w
bGVzRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVj
dG9yPFN0cmluZz4gZW5xdWV1ZWRTYW1wbGVzRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFUaW1lIG1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlv
blRpbWVGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJiwgc2l6
ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJh
Y2tJRChjb25zdCBBdG9tU3RyaW5nJiwgdWludDY0X3QpOwogCiAgICAgUmVmPFNvdXJjZUJ1ZmZl
clByaXZhdGU+IG1fcHJpdmF0ZTsKICAgICBNZWRpYVNvdXJjZSogbV9zb3VyY2U7CkBAIC0yMzEs
OCArMjMxLDEwIEBAIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX3RpbWVPZkJ1ZmZlcmlu
Z01vbml0b3I7CiAgICAgZG91YmxlIG1fYnVmZmVyZWRTaW5jZUxhc3RNb25pdG9yIHsgMCB9Owog
ICAgIGRvdWJsZSBtX2F2ZXJhZ2VCdWZmZXJSYXRlIHsgMCB9OworICAgIGJvb2wgbV9idWZmZXJl
ZERpcnR5IHsgdHJ1ZSB9OworICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBtX2J1ZmZlcmVkOwogCi0g
ICAgc2l6ZV90IG1fcmVwb3J0ZWRFeHRyYU1lbW9yeUNvc3QgeyAwIH07CisgICAgdWludDY0X3Qg
bV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdCB7IDAgfTsKIAogICAgIE1lZGlhVGltZSBtX3BlbmRp
bmdSZW1vdmVTdGFydDsKICAgICBNZWRpYVRpbWUgbV9wZW5kaW5nUmVtb3ZlRW5kOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVNvdXJjZVByaXZhdGUu
aAppbmRleCA2NTcwYmY2ZWU5NjgyN2UwMDk0NmY5ZjE5NjA4OGFkYzJjNGJkYjYzLi4yOTMyODg2
M2IxNGYyNmRjYjljYzExYzAyMzY2MGQ1MjAzYjg5MGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVNvdXJjZVByaXZhdGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVNvdXJjZVByaXZhdGUuaApAQCAtNTUsMTAg
KzU1LDExIEBAIHB1YmxpYzoKICAgICAgICAgUmVhY2hlZElkTGltaXQKICAgICB9OwogICAgIHZp
cnR1YWwgQWRkU3RhdHVzIGFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDb250ZW50VHlwZSYsIFJlZlB0
cjxTb3VyY2VCdWZmZXJQcml2YXRlPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZHVyYXRpb25D
aGFuZ2VkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVk
aWFUaW1lJikgPSAwOwogICAgIGVudW0gRW5kT2ZTdHJlYW1TdGF0dXMgeyBFb3NOb0Vycm9yLCBF
b3NOZXR3b3JrRXJyb3IsIEVvc0RlY29kZUVycm9yIH07CiAgICAgdmlydHVhbCB2b2lkIG1hcmtF
bmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cykgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1bm1h
cmtFbmRPZlN0cmVhbSgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFbmRlZCgpIGNvbnN0ID0g
MDsKIAogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNv
bnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZSkgPSAwOwpAQCAtNjYsMTAgKzY3LDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgd2FpdEZvclNlZWtDb21wbGV0ZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNlZWtDb21w
bGV0ZWQoKSA9IDA7CiAKKyAgICB2b2lkIHNldFRpbWVGdWRnZUZhY3Rvcihjb25zdCBNZWRpYVRp
bWUmIGZ1ZGdlRmFjdG9yKSB7IG1fdGltZUZ1ZGdlRmFjdG9yID0gZnVkZ2VGYWN0b3I7IH0KKyAg
ICBNZWRpYVRpbWUgdGltZUZ1ZGdlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV90aW1lRnVkZ2VG
YWN0b3I7IH0KICAgICB2b2lkIHNldElzU2Vla2luZyhib29sIGZsYWcpIHsgbV9pc1NlZWtpbmcg
PSBmbGFnOyB9CiAgICAgYm9vbCBpc1NlZWtpbmcoKSBjb25zdCB7IHJldHVybiBtX2lzU2Vla2lu
ZzsgfQogCiBwcml2YXRlOgorICAgIE1lZGlhVGltZSBtX3RpbWVGdWRnZUZhY3RvcjsKICAgICBi
b29sIG1faXNTZWVraW5nIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKaW5kZXggMGYz
ZmE2NmQ5OTFlYjM5YTMwNjFhZTJmOGViZmVlYjJkNTMwNDVjOS4uN2JlMDAyMWQ5YmI2ZGYxMDdk
NzFhNGYxNWE3MTU1NmRlMTllZTcwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTY1LDYgKzY1LDgg
QEAgU291cmNlQnVmZmVyUHJpdmF0ZTo6U291cmNlQnVmZmVyUHJpdmF0ZSgpCiB7CiB9CiAKK1Nv
dXJjZUJ1ZmZlclByaXZhdGU6On5Tb3VyY2VCdWZmZXJQcml2YXRlKCkgPSBkZWZhdWx0OworCiB2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnJlc2V0VGltZXN0YW1wT2Zmc2V0SW5UcmFja0J1ZmZl
cnMoKQogewogICAgIGZvciAoYXV0byYgdHJhY2tCdWZmZXIgOiBtX3RyYWNrQnVmZmVyTWFwLnZh
bHVlcygpKSB7CkBAIC03Myw2ICs3NSwxMiBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnJl
c2V0VGltZXN0YW1wT2Zmc2V0SW5UcmFja0J1ZmZlcnMoKQogICAgIH0KIH0KIAordm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlOjpzZXRCdWZmZXJlZERpcnR5KGJvb2wgZmxhZykKK3sKKyAgICBpZiAo
bV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWRE
aXJ0eUNoYW5nZWQoZmxhZyk7Cit9CisKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6cmVzZXRU
cmFja0J1ZmZlcnMoKQogewogICAgIGZvciAoYXV0byYgdHJhY2tCdWZmZXJQYWlyIDogbV90cmFj
a0J1ZmZlck1hcC52YWx1ZXMoKSkgewpAQCAtOTYsNiArMTA0LDEzIEBAIE1lZGlhVGltZSBTb3Vy
Y2VCdWZmZXJQcml2YXRlOjpoaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1wKCkgY29uc3QKICAg
ICByZXR1cm4gaGlnaGVzdFRpbWU7CiB9CiAKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0
QnVmZmVyZWRSYW5nZXMoY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQorewor
ICAgIG1fYnVmZmVyZWQtPnJhbmdlcygpID0gdGltZVJhbmdlczsKKyAgICBpZiAobV9jbGllbnQp
CisgICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWRSYW5nZXNDaGFu
Z2VkKG1fYnVmZmVyZWQtPnJhbmdlcygpKTsKK30KKwogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
Ojp1cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVkKQogewog
ICAgIC8vIDMuMSBBdHRyaWJ1dGVzLCBidWZmZXJlZApAQCAtMTEyLDcgKzEyNyw3IEBAIHZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZTo6dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wg
c291cmNlSXNFbmRlZCkKICAgICAvLyBOT1RFOiBTaG9ydCBjaXJjdWl0IHRoZSBmb2xsb3dpbmcg
aWYgbm9uZSBvZiB0aGUgVHJhY2tCdWZmZXJzIGhhdmUgYnVmZmVyZWQgcmFuZ2VzIHRvIGF2b2lk
IGdlbmVyYXRpbmcKICAgICAvLyBhIHNpbmdsZSByYW5nZSBvZiB7MCwgMH0uCiAgICAgaWYgKGhp
Z2hlc3RFbmRUaW1lLmlzTmVnYXRpdmVJbmZpbml0ZSgpKSB7Ci0gICAgICAgIG1fYnVmZmVyZWQt
PnJhbmdlcygpID0gUGxhdGZvcm1UaW1lUmFuZ2VzKCk7CisgICAgICAgIHNldEJ1ZmZlcmVkUmFu
Z2VzKFBsYXRmb3JtVGltZVJhbmdlcygpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MTM3LDEwICsxNTIsMjAgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjp1cGRhdGVCdWZmZXJl
ZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVkKQogCiAgICAgLy8gNS4gSWYgaW50
ZXJzZWN0aW9uIHJhbmdlcyBkb2VzIG5vdCBjb250YWluIHRoZSBleGFjdCBzYW1lIHJhbmdlIGlu
Zm9ybWF0aW9uIGFzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlLAogICAgIC8v
ICAgIHRoZW4gdXBkYXRlIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIHRvIGlu
dGVyc2VjdGlvbiByYW5nZXMuCi0gICAgbV9idWZmZXJlZC0+cmFuZ2VzKCkgPSBpbnRlcnNlY3Rp
b25SYW5nZXM7CisgICAgc2V0QnVmZmVyZWRSYW5nZXMoaW50ZXJzZWN0aW9uUmFuZ2VzKTsKICAg
ICBzZXRCdWZmZXJlZERpcnR5KHRydWUpOwogfQogCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6
OmFwcGVuZENvbXBsZXRlZChib29sIHBhcnNpbmdTdWNjZWVkZWQsIGJvb2wgaXNFbmRlZCkKK3sK
KyAgICAvLyBSZXNvbHZlIHRoZSBjaGFuZ2VzIGluIFRyYWNrQnVmZmVycycgYnVmZmVyZWQgcmFu
Z2VzCisgICAgLy8gaW50byB0aGUgU291cmNlQnVmZmVyJ3MgYnVmZmVyZWQgcmFuZ2VzCisgICAg
dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGlzRW5kZWQpOworCisgICAgaWYgKG1fY2xp
ZW50KQorICAgICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRl
KHBhcnNpbmdTdWNjZWVkZWQgPyBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1
bHQ6OkFwcGVuZFN1Y2NlZWRlZCA6IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJl
c3VsdDo6UGFyc2luZ0ZhaWxlZCk7Cit9CisKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6cmVl
bnF1ZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkKIHsKICAgICBpZiAoIW1faXNB
dHRhY2hlZCkKQEAgLTE3OCw5ICsyMDMsOSBAQCBWZWN0b3I8U3RyaW5nPiBTb3VyY2VCdWZmZXJQ
cml2YXRlOjpidWZmZXJlZFNhbXBsZXNGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmCiB7CiAg
ICAgYXV0byBpdCA9IG1fdHJhY2tCdWZmZXJNYXAuZmluZCh0cmFja0lEKTsKICAgICBpZiAoaXQg
PT0gbV90cmFja0J1ZmZlck1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+
KCk7CisgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBUcmFja0J1ZmZlciYgdHJhY2tCdWZmZXIg
PSBpdC0+dmFsdWU7CisgICAgYXV0byYgdHJhY2tCdWZmZXIgPSBpdC0+dmFsdWU7CiAgICAgVmVj
dG9yPFN0cmluZz4gc2FtcGxlRGVzY3JpcHRpb25zOwogICAgIGZvciAoYXV0byYgcGFpciA6IHRy
YWNrQnVmZmVyLnNhbXBsZXMuZGVjb2RlT3JkZXIoKSkKICAgICAgICAgc2FtcGxlRGVzY3JpcHRp
b25zLmFwcGVuZCh0b1N0cmluZygqcGFpci5zZWNvbmQpKTsKQEAgLTMxNyw3ICszNDIsNyBAQCB2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnByb3ZpZGVNZWRpYURhdGEoVHJhY2tCdWZmZXImIHRy
YWNrQnVmZmVyLCBjb25zdCBBdG9tUwogICAgIHVwZGF0ZU1pbmltdW1VcGNvbWluZ1ByZXNlbnRh
dGlvblRpbWUodHJhY2tCdWZmZXIsIHRyYWNrSUQpOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECi0gICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsICJlbnF1ZXVlZCAiLCBlbnF1ZXVlZFNh
bXBsZXMsICIgc2FtcGxlcywgIiwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih0cmFja0J1ZmZlci5kZWNv
ZGVRdWV1ZS5zaXplKCkpLCAiIHJlbWFpbmluZyIpOworICAgIERFQlVHX0xPRyhMT0dJREVOVElG
SUVSLCAiZW5xdWV1ZWQgIiwgZW5xdWV1ZWRTYW1wbGVzLCAiIHNhbXBsZXMsICIsIHN0YXRpY19j
YXN0PHVpbnQ2NF90Pih0cmFja0J1ZmZlci5kZWNvZGVRdWV1ZS5zaXplKCkpLCAiIHJlbWFpbmlu
ZyIpOwogI2VuZGlmCiAKICAgICBhbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKHRyYWNrSUQpOwpA
QCAtMzM5LDcgKzM2NCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6cmVlbnF1ZXVlTWVk
aWFGb3JUaW1lKFRyYWNrQnVmZmVyJiB0cmFja0J1ZmZlciwgY29uc3QKICAgICAgICAgY3VycmVu
dFNhbXBsZVBUU0l0ZXJhdG9yID0gdHJhY2tCdWZmZXIuc2FtcGxlcy5wcmVzZW50YXRpb25PcmRl
cigpLmZpbmRTYW1wbGVTdGFydGluZ09uT3JBZnRlclByZXNlbnRhdGlvblRpbWUodGltZSk7CiAK
ICAgICBpZiAoY3VycmVudFNhbXBsZVBUU0l0ZXJhdG9yID09IHRyYWNrQnVmZmVyLnNhbXBsZXMu
cHJlc2VudGF0aW9uT3JkZXIoKS5lbmQoKQotICAgICAgICB8fCAoY3VycmVudFNhbXBsZVBUU0l0
ZXJhdG9yLT5maXJzdCAtIHRpbWUpID4gbV9jdXJyZW50VGltZUZ1ZGdlRmFjdG9yKQorICAgICAg
ICB8fCAoY3VycmVudFNhbXBsZVBUU0l0ZXJhdG9yLT5maXJzdCAtIHRpbWUpID4gdGltZUZ1ZGdl
RmFjdG9yKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFNlYWNoIGJhY2t3YXJkIGZvciB0
aGUgcHJldmlvdXMgc3luYyBzYW1wbGUuCkBAIC0zNjcsNyArMzkyLDcgQEAgdm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlOjpyZWVucXVldWVNZWRpYUZvclRpbWUoVHJhY2tCdWZmZXImIHRyYWNrQnVm
ZmVyLCBjb25zdAogICAgIHRyYWNrQnVmZmVyLm5lZWRzUmVlbnF1ZXVlaW5nID0gZmFsc2U7CiB9
CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6cmVlbnF1ZXVlTWVkaWFJZk5lZWRlZChjb25z
dCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBzaXplX3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0
eSwgc2l6ZV90IG1heGltdW1CdWZmZXJTaXplKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpy
ZWVucXVldWVNZWRpYUlmTmVlZGVkKGNvbnN0IE1lZGlhVGltZSYgY3VycmVudFRpbWUsIHVpbnQ2
NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXpl
KQogewogICAgIGZvciAoYXV0byYgdHJhY2tCdWZmZXJQYWlyIDogbV90cmFja0J1ZmZlck1hcCkg
ewogICAgICAgICBUcmFja0J1ZmZlciYgdHJhY2tCdWZmZXIgPSB0cmFja0J1ZmZlclBhaXIudmFs
dWU7CkBAIC0zOTgsNyArNDIzLDcgQEAgc3RhdGljIFBsYXRmb3JtVGltZVJhbmdlcyByZW1vdmVT
YW1wbGVzRnJvbVRyYWNrQnVmZmVyKGNvbnN0IERlY29kZU9yZGVyU2FtcGxlTWEKICNpZiAhUkVM
RUFTRV9MT0dfRElTQUJMRUQKICAgICBNZWRpYVRpbWUgZWFybGllc3RTYW1wbGUgPSBNZWRpYVRp
bWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CiAgICAgTWVkaWFUaW1lIGxhdGVzdFNhbXBsZSA9
IE1lZGlhVGltZTo6emVyb1RpbWUoKTsKLSAgICBzaXplX3QgYnl0ZXNSZW1vdmVkID0gMDsKKyAg
ICB1aW50NjRfdCBieXRlc1JlbW92ZWQgPSAwOwogICAgIGF1dG8gbG9nSWRlbnRpZmllciA9IFdU
Rjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcihzb3VyY2VCdWZmZXJQcml2YXRlLT5sb2dDbGFz
c05hbWUoKSwgbG9nUHJlZml4LCBzb3VyY2VCdWZmZXJQcml2YXRlLT5sb2dJZGVudGlmaWVyKCkp
OwogICAgIGF1dG8mIGxvZ2dlciA9IHNvdXJjZUJ1ZmZlclByaXZhdGUtPmxvZ2dlcigpOwogICAg
IGF1dG8gd2lsbExvZyA9IGxvZ2dlci53aWxsTG9nKHNvdXJjZUJ1ZmZlclByaXZhdGUtPmxvZ0No
YW5uZWwoKSwgV1RGTG9nTGV2ZWw6OkRlYnVnKTsKQEAgLTQwOCw3ICs0MzMsNyBAQCBzdGF0aWMg
UGxhdGZvcm1UaW1lUmFuZ2VzIHJlbW92ZVNhbXBsZXNGcm9tVHJhY2tCdWZmZXIoY29uc3QgRGVj
b2RlT3JkZXJTYW1wbGVNYQogICAgIGZvciAoY29uc3QgYXV0byYgc2FtcGxlSXQgOiBzYW1wbGVz
KSB7CiAgICAgICAgIGNvbnN0IERlY29kZU9yZGVyU2FtcGxlTWFwOjpLZXlUeXBlJiBkZWNvZGVL
ZXkgPSBzYW1wbGVJdC5maXJzdDsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAgICAg
c2l6ZV90IHN0YXJ0QnVmZmVyU2l6ZSA9IHRyYWNrQnVmZmVyLnNhbXBsZXMuc2l6ZUluQnl0ZXMo
KTsKKyAgICAgICAgdWludDY0X3Qgc3RhcnRCdWZmZXJTaXplID0gdHJhY2tCdWZmZXIuc2FtcGxl
cy5zaXplSW5CeXRlcygpOwogI2VuZGlmCiAKICAgICAgICAgY29uc3QgUmVmUHRyPE1lZGlhU2Ft
cGxlPiYgc2FtcGxlID0gc2FtcGxlSXQuc2Vjb25kOwpAQCAtNTcwLDcgKzU5NSw3IEBAIHZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZTo6cmVtb3ZlQ29kZWRGcmFtZXMoY29uc3QgTWVkaWFUaW1lJiBz
dGFydCwgY29uc3QgTWVkaWFUCiAgICAgTE9HKE1lZGlhLCAiU291cmNlQnVmZmVyOjpyZW1vdmVD
b2RlZEZyYW1lcyglcCkgLSBidWZmZXJlZCA9ICVzIiwgdGhpcywgdG9TdHJpbmcobV9idWZmZXJl
ZC0+cmFuZ2VzKCkpLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGU6OmV2aWN0Q29kZWRGcmFtZXMoc2l6ZV90IG5ld0RhdGFTaXplLCBzaXplX3QgcGVuZGluZ0Fw
cGVuZERhdGFDYXBhY2l0eSwgc2l6ZV90IG1heGltdW1CdWZmZXJTaXplLCBjb25zdCBNZWRpYVRp
bWUmIGN1cnJlbnRUaW1lLCBjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uLCBib29sIGlzRW5kZWQp
Cit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmV2aWN0Q29kZWRGcmFtZXModWludDY0X3QgbmV3
RGF0YVNpemUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1h
eGltdW1CdWZmZXJTaXplLCBjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBjb25zdCBNZWRp
YVRpbWUmIGR1cmF0aW9uLCBib29sIGlzRW5kZWQpCiB7CiAgICAgLy8gMy41LjEzIENvZGVkIEZy
YW1lIEV2aWN0aW9uIEFsZ29yaXRobQogICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL21lZGlh
LXNvdXJjZS8jc291cmNlYnVmZmVyLWNvZGVkLWZyYW1lLWV2aWN0aW9uCkBAIC01OTQsNyArNjE5
LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpldmljdENvZGVkRnJhbWVzKHNpemVfdCBu
ZXdEYXRhU2l6ZSwgc2l6ZV90IHBlbmRpbmdBcHAKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RCAmJiBmYWxzZQogICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiY3VycmVudFRpbWUgPSAi
LCBjdXJyZW50VGltZSwgIiwgcmVxdWlyZSAiLCBleHRyYU1lbW9yeUNvc3QoKSArIG5ld0RhdGFT
aXplLCAiIGJ5dGVzLCBtYXhpbXVtIGJ1ZmZlciBzaXplIGlzICIsIG1heGltdW1CdWZmZXJTaXpl
KTsKLSAgICBzaXplX3QgaW5pdGlhbEJ1ZmZlcmVkU2l6ZSA9IGV4dHJhTWVtb3J5Q29zdCgpOwor
ICAgIHVpbnQ2NF90IGluaXRpYWxCdWZmZXJlZFNpemUgPSBleHRyYU1lbW9yeUNvc3QoKTsKICNl
bmRpZgogCiAgICAgTWVkaWFUaW1lIHJhbmdlU3RhcnQgPSBNZWRpYVRpbWU6Onplcm9UaW1lKCk7
CkBAIC02MjMsMTAgKzY0OCwxMCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmV2aWN0Q29k
ZWRGcmFtZXMoc2l6ZV90IG5ld0RhdGFTaXplLCBzaXplX3QgcGVuZGluZ0FwcAogICAgIC8vIHRo
ZSBjdXJyZW50IGJ1ZmZlcmVkIHJhbmdlKSwgZGVsZXRlIDMwIHNlY29uZHMgYXQgYSB0aW1lIGZy
b20gZHVyYXRpb24gYmFjayB0byB0aGUgY3VycmVudCB0aW1lIHJhbmdlIG9yIDMwIHNlY29uZHMg
YWZ0ZXIKICAgICAvLyBjdXJyZW5UaW1lIHdoaWNoZXZlciB3ZSBoaXQgZmlyc3QuCiAgICAgYXV0
byBidWZmZXJlZCA9IG1fYnVmZmVyZWQtPnJhbmdlcygpOwotICAgIHNpemVfdCBjdXJyZW50VGlt
ZVJhbmdlID0gYnVmZmVyZWQuZmluZChjdXJyZW50VGltZSk7CisgICAgdWludDY0X3QgY3VycmVu
dFRpbWVSYW5nZSA9IGJ1ZmZlcmVkLmZpbmQoY3VycmVudFRpbWUpOwogICAgIGlmIChjdXJyZW50
VGltZVJhbmdlID09IGJ1ZmZlcmVkLmxlbmd0aCgpIC0gMSkgewogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRCAmJiBmYWxzZQotICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiRkFJTEVEIHRv
IGZyZWUgZW5vdWdoIGFmdGVyIGV2aWN0aW5nICIsIGluaXRpYWxCdWZmZXJlZFNpemUgLSBleHRy
YU1lbW9yeUNvc3QoKSk7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVSLCAiRkFJTEVE
IHRvIGZyZWUgZW5vdWdoIGFmdGVyIGV2aWN0aW5nICIsIGluaXRpYWxCdWZmZXJlZFNpemUgLSBl
eHRyYU1lbW9yeUNvc3QoKSk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTYz
Niw3ICs2NjEsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmV2aWN0Q29kZWRGcmFtZXMo
c2l6ZV90IG5ld0RhdGFTaXplLCBzaXplX3QgcGVuZGluZ0FwcAogICAgIHJhbmdlRW5kID0gZHVy
YXRpb247CiAgICAgaWYgKCFyYW5nZUVuZC5pc0Zpbml0ZSgpKSB7CiAgICAgICAgIHJhbmdlRW5k
ID0gYnVmZmVyZWQubWF4aW11bUJ1ZmZlcmVkVGltZSgpOwotI2lmICFSRUxFQVNFX0xPR19ESVNB
QkxFRCAmJiBmYWxzZQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBERUJVR19M
T0coTE9HSURFTlRJRklFUiwgIk1lZGlhU291cmNlIGR1cmF0aW9uIGlzIG5vdCBhIGZpbml0ZSB2
YWx1ZSwgdXNpbmcgbWF4aW11bSBidWZmZXJlZCB0aW1lOiAiLCByYW5nZUVuZCk7CiAjZW5kaWYK
ICAgICB9CkBAIC02NDQsOSArNjY5LDkgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpldmlj
dENvZGVkRnJhbWVzKHNpemVfdCBuZXdEYXRhU2l6ZSwgc2l6ZV90IHBlbmRpbmdBcHAKICAgICBy
YW5nZVN0YXJ0ID0gcmFuZ2VFbmQgLSB0aGlydHlTZWNvbmRzOwogICAgIHdoaWxlIChyYW5nZVN0
YXJ0ID4gbWluaW11bVJhbmdlU3RhcnQpIHsKICAgICAgICAgLy8gRG8gbm90IGV2aWN0IGRhdGEg
ZnJvbSB0aGUgdGltZSByYW5nZSB0aGF0IGNvbnRhaW5zIGN1cnJlbnRUaW1lLgotICAgICAgICBz
aXplX3Qgc3RhcnRUaW1lUmFuZ2UgPSBidWZmZXJlZC5maW5kKHJhbmdlU3RhcnQpOworICAgICAg
ICB1aW50NjRfdCBzdGFydFRpbWVSYW5nZSA9IGJ1ZmZlcmVkLmZpbmQocmFuZ2VTdGFydCk7CiAg
ICAgICAgIGlmIChjdXJyZW50VGltZVJhbmdlICE9IG5vdEZvdW5kICYmIHN0YXJ0VGltZVJhbmdl
ID09IGN1cnJlbnRUaW1lUmFuZ2UpIHsKLSAgICAgICAgICAgIHNpemVfdCBlbmRUaW1lUmFuZ2Ug
PSBidWZmZXJlZC5maW5kKHJhbmdlRW5kKTsKKyAgICAgICAgICAgIHVpbnQ2NF90IGVuZFRpbWVS
YW5nZSA9IGJ1ZmZlcmVkLmZpbmQocmFuZ2VFbmQpOwogICAgICAgICAgICAgaWYgKGN1cnJlbnRU
aW1lUmFuZ2UgIT0gbm90Rm91bmQgJiYgZW5kVGltZVJhbmdlID09IGN1cnJlbnRUaW1lUmFuZ2Up
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTY3NCwyMiArNjk5LDI1IEBAIHZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZTo6ZXZpY3RDb2RlZEZyYW1lcyhzaXplX3QgbmV3RGF0YVNpemUsIHNp
emVfdCBwZW5kaW5nQXBwCiAjZW5kaWYKIH0KIAotc2l6ZV90IFNvdXJjZUJ1ZmZlclByaXZhdGU6
OnRvdGFsVHJhY2tCdWZmZXJTaXplSW5CeXRlcygpIGNvbnN0Cit1aW50NjRfdCBTb3VyY2VCdWZm
ZXJQcml2YXRlOjp0b3RhbFRyYWNrQnVmZmVyU2l6ZUluQnl0ZXMoKSBjb25zdAogewotICAgIHNp
emVfdCB0b3RhbFNpemVJbkJ5dGVzID0gMDsKKyAgICB1aW50NjRfdCB0b3RhbFNpemVJbkJ5dGVz
ID0gMDsKICAgICBmb3IgKGF1dG8mIHRyYWNrQnVmZmVyIDogbV90cmFja0J1ZmZlck1hcC52YWx1
ZXMoKSkKICAgICAgICAgdG90YWxTaXplSW5CeXRlcyArPSB0cmFja0J1ZmZlci5zYW1wbGVzLnNp
emVJbkJ5dGVzKCk7CiAKICAgICByZXR1cm4gdG90YWxTaXplSW5CeXRlczsKIH0KIAotdm9pZCBT
b3VyY2VCdWZmZXJQcml2YXRlOjphZGRUcmFja0J1ZmZlcihjb25zdCBBdG9tU3RyaW5nJiB0cmFj
a0lkLCBSZWZQdHI8TWVkaWFEZXNjcmlwdGlvbj4gZGVzY3JpcHRpb24pCit2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGU6OmFkZFRyYWNrQnVmZmVyKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSWQsIFJl
ZlB0cjxNZWRpYURlc2NyaXB0aW9uPiYmIGRlc2NyaXB0aW9uKQogewogICAgIEFTU0VSVCghbV90
cmFja0J1ZmZlck1hcC5jb250YWlucyh0cmFja0lkKSk7CiAgICAgYXV0byYgdHJhY2tCdWZmZXIg
PSBtX3RyYWNrQnVmZmVyTWFwLmFkZCh0cmFja0lkLCBUcmFja0J1ZmZlcigpKS5pdGVyYXRvci0+
dmFsdWU7CiAKICAgICAvLyA1LjIuOSBBZGQgdGhlIHRyYWNrIGRlc2NyaXB0aW9uIGZvciB0aGlz
IHRyYWNrIHRvIHRoZSB0cmFjayBidWZmZXIuCiAgICAgdHJhY2tCdWZmZXIuZGVzY3JpcHRpb24g
PSBkZXNjcmlwdGlvbjsKKworICAgIG1faGFzQXVkaW8gPSBtX2hhc0F1ZGlvIHx8IHRyYWNrQnVm
ZmVyLmRlc2NyaXB0aW9uLT5pc0F1ZGlvKCk7CisgICAgbV9oYXNWaWRlbyA9IG1faGFzVmlkZW8g
fHwgdHJhY2tCdWZmZXIuZGVzY3JpcHRpb24tPmlzVmlkZW8oKTsKIH0KIAogdm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlOjp1cGRhdGVUcmFja0lkcyhWZWN0b3I8c3RkOjpwYWlyPEF0b21TdHJpbmcs
IEF0b21TdHJpbmc+PiYmIHRyYWNrSWRQYWlycykKQEAgLTcwOSwxNyArNzM3LDE5IEBAIHZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0QWxsVHJhY2tCdWZmZXJzTmVlZFJhbmRvbUFjY2Vzcygp
CiAgICAgICAgIHRyYWNrQnVmZmVyLm5lZWRSYW5kb21BY2Nlc3NGbGFnID0gdHJ1ZTsKIH0KIAot
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50
KGNvbnN0IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudCYg
c2VnbWVudCkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZUluaXRpYWxpemF0
aW9uU2VnbWVudChTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21l
bnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7Ci0gICAgaWYgKCFtX2NsaWVudCkKKyAgICBpZiAoIW1fY2xpZW50KSB7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAo
bV9yZWNlaXZlZEZpcnN0SW5pdGlhbGl6YXRpb25TZWdtZW50ICYmICF2YWxpZGF0ZUluaXRpYWxp
emF0aW9uU2VnbWVudChzZWdtZW50KSkgewogICAgICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVy
UHJpdmF0ZUFwcGVuZEVycm9yKHRydWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
bV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdt
ZW50KHNlZ21lbnQpOworICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2
ZUluaXRpYWxpemF0aW9uU2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAKICAgICBtX3JlY2VpdmVkRmlyc3RJbml0aWFsaXphdGlvblNlZ21lbnQg
PSB0cnVlOwogICAgIG1fcGVuZGluZ0luaXRpYWxpemF0aW9uU2VnbWVudEZvckNoYW5nZVR5cGUg
PSBmYWxzZTsKQEAgLTExODAsMTEgKzEyMTAsMTEgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
OjpkaWRSZWNlaXZlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiAgICAgICAgIC8vIGRpc2pv
aW50IHJhbmdlcyBzZXBhcmF0ZWQgYnkgbGVzcyB0aGFuIGEgImZ1ZGdlIGZhY3RvciIuCiAgICAg
ICAgIGF1dG8gcHJlc2VudGF0aW9uRW5kVGltZSA9IHByZXNlbnRhdGlvblRpbWVzdGFtcCArIGZy
YW1lRHVyYXRpb247CiAgICAgICAgIGF1dG8gbmVhcmVzdFRvUHJlc2VudGF0aW9uU3RhcnRUaW1l
ID0gdHJhY2tCdWZmZXIuYnVmZmVyZWQubmVhcmVzdChwcmVzZW50YXRpb25UaW1lc3RhbXApOwot
ICAgICAgICBpZiAobmVhcmVzdFRvUHJlc2VudGF0aW9uU3RhcnRUaW1lLmlzVmFsaWQoKSAmJiAo
cHJlc2VudGF0aW9uVGltZXN0YW1wIC0gbmVhcmVzdFRvUHJlc2VudGF0aW9uU3RhcnRUaW1lKS5p
c0JldHdlZW4oTWVkaWFUaW1lOjp6ZXJvVGltZSgpLCBtX2N1cnJlbnRUaW1lRnVkZ2VGYWN0b3Ip
KQorICAgICAgICBpZiAobmVhcmVzdFRvUHJlc2VudGF0aW9uU3RhcnRUaW1lLmlzVmFsaWQoKSAm
JiAocHJlc2VudGF0aW9uVGltZXN0YW1wIC0gbmVhcmVzdFRvUHJlc2VudGF0aW9uU3RhcnRUaW1l
KS5pc0JldHdlZW4oTWVkaWFUaW1lOjp6ZXJvVGltZSgpLCB0aW1lRnVkZ2VGYWN0b3IoKSkpCiAg
ICAgICAgICAgICBwcmVzZW50YXRpb25UaW1lc3RhbXAgPSBuZWFyZXN0VG9QcmVzZW50YXRpb25T
dGFydFRpbWU7CiAKICAgICAgICAgYXV0byBuZWFyZXN0VG9QcmVzZW50YXRpb25FbmRUaW1lID0g
dHJhY2tCdWZmZXIuYnVmZmVyZWQubmVhcmVzdChwcmVzZW50YXRpb25FbmRUaW1lKTsKLSAgICAg
ICAgaWYgKG5lYXJlc3RUb1ByZXNlbnRhdGlvbkVuZFRpbWUuaXNWYWxpZCgpICYmIChuZWFyZXN0
VG9QcmVzZW50YXRpb25FbmRUaW1lIC0gcHJlc2VudGF0aW9uRW5kVGltZSkuaXNCZXR3ZWVuKE1l
ZGlhVGltZTo6emVyb1RpbWUoKSwgbV9jdXJyZW50VGltZUZ1ZGdlRmFjdG9yKSkKKyAgICAgICAg
aWYgKG5lYXJlc3RUb1ByZXNlbnRhdGlvbkVuZFRpbWUuaXNWYWxpZCgpICYmIChuZWFyZXN0VG9Q
cmVzZW50YXRpb25FbmRUaW1lIC0gcHJlc2VudGF0aW9uRW5kVGltZSkuaXNCZXR3ZWVuKE1lZGlh
VGltZTo6emVyb1RpbWUoKSwgdGltZUZ1ZGdlRmFjdG9yKCkpKQogICAgICAgICAgICAgcHJlc2Vu
dGF0aW9uRW5kVGltZSA9IG5lYXJlc3RUb1ByZXNlbnRhdGlvbkVuZFRpbWU7CiAKICAgICAgICAg
dHJhY2tCdWZmZXIuYnVmZmVyZWQuYWRkKHByZXNlbnRhdGlvblRpbWVzdGFtcCwgcHJlc2VudGF0
aW9uRW5kVGltZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Tb3VyY2VCdWZmZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKaW5kZXggMTFkZmYzNDliZWM3ZDdlOWMyMjMxNzM2YTQ2
ZDQ4ZTc3ZTQ3NmI3YS4uNDAxZGJkNzdiZDIwNGI5OGMyODNmY2ExZmQ1NDIwOWM5N2ZlZWIwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVy
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1
ZmZlclByaXZhdGUuaApAQCAtNjMsOCArNjMsOSBAQCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRl
CiB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU291cmNlQnVmZmVyUHJpdmF0ZSgpOwot
ICAgIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclByaXZhdGUoKSA9IGRlZmF1bHQ7CisgICAgV0VCQ09S
RV9FWFBPUlQgdmlydHVhbCB+U291cmNlQnVmZmVyUHJpdmF0ZSgpOwogCisgICAgdmlydHVhbCB2
b2lkIHNldEFjdGl2ZShib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZChWZWN0b3I8
dW5zaWduZWQgY2hhcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhYm9ydCgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpID0gMDsKQEAgLTcyLDQwICs3MywzOSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRl
KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVy
OjpSZWFkeVN0YXRlKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0aXZlKGJvb2wpIHsg
fQogICAgIHZpcnR1YWwgYm9vbCBjYW5Td2l0Y2hUb1R5cGUoY29uc3QgQ29udGVudFR5cGUmKSB7
IHJldHVybiBmYWxzZTsgfQogCisgICAgdmlydHVhbCB2b2lkIHJlZW5xdWV1ZU1lZGlhSWZOZWVk
ZWQoY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50TWVkaWFUaW1lLCB1aW50NjRfdCBwZW5kaW5nQXBw
ZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSk7CisgICAgdmlydHVh
bCB2b2lkIGFkZFRyYWNrQnVmZmVyKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSWQsIFJlZlB0cjxN
ZWRpYURlc2NyaXB0aW9uPiYmKTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJ5U2lnbmFsQWxsU2FtcGxl
c0luVHJhY2tFbnF1ZXVlZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgdm9pZCB1cGRh
dGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVkKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZXZpY3RDb2RlZEZyYW1lcyh1aW50NjRfdCBuZXdEYXRh
U2l6ZSwgdWludDY0X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11
bUJ1ZmZlclNpemUsIGNvbnN0IE1lZGlhVGltZSYgY3VycmVudFRpbWUsIGNvbnN0IE1lZGlhVGlt
ZSYgZHVyYXRpb24sIGJvb2wgaXNFbmRlZCk7CisKICAgICB2b2lkIHNldENsaWVudChTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGllbnQ7IH0KICAgICB2
b2lkIHNldElzQXR0YWNoZWQoYm9vbCBmbGFnKSB7IG1faXNBdHRhY2hlZCA9IGZsYWc7IH0KLSAg
ICB2b2lkIHNldEN1cnJlbnRUaW1lRnVkZ2VGYWN0b3IoY29uc3QgTWVkaWFUaW1lJiB0aW1lKSB7
IG1fY3VycmVudFRpbWVGdWRnZUZhY3RvciA9IHRpbWU7IH0KKyAgICBib29sIGhhc0F1ZGlvKCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNBdWRpbzsgfQorICAgIGJvb2wgaGFzVmlkZW8oKSBjb25zdCB7
IHJldHVybiBtX2hhc1ZpZGVvOyB9CiAgICAgdm9pZCBzZXRBcHBlbmRXaW5kb3dTdGFydChjb25z
dCBNZWRpYVRpbWUmIGFwcGVuZFdpbmRvd1N0YXJ0KSB7IG1fYXBwZW5kV2luZG93U3RhcnQgPSBh
cHBlbmRXaW5kb3dTdGFydDt9CiAgICAgdm9pZCBzZXRBcHBlbmRXaW5kb3dFbmQoY29uc3QgTWVk
aWFUaW1lJiBhcHBlbmRXaW5kb3dFbmQpIHsgbV9hcHBlbmRXaW5kb3dFbmQgPSBhcHBlbmRXaW5k
b3dFbmQ7IH0KICAgICBib29sIGJ1ZmZlckZ1bGwoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlckZ1
bGw7IH0KLSAgICBUaW1lUmFuZ2VzKiBidWZmZXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVy
ZWQuZ2V0KCk7IH0KLSAgICBib29sIGlzQnVmZmVyZWREaXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1f
YnVmZmVyZWREaXJ0eTsgfQotICAgIHZvaWQgc2V0QnVmZmVyZWREaXJ0eShib29sIGZsYWcpIHsg
bV9idWZmZXJlZERpcnR5ID0gZmxhZzsgfQorCisgICAgdm9pZCBzZXRCdWZmZXJlZERpcnR5KGJv
b2wpOwogICAgIHZvaWQgcmVzZXRUcmFja0J1ZmZlcnMoKTsKICAgICB2b2lkIGNsZWFyVHJhY2tC
dWZmZXJzKCk7CiAgICAgdm9pZCByZXNldFRpbWVzdGFtcE9mZnNldEluVHJhY2tCdWZmZXJzKCk7
CiAgICAgTWVkaWFUaW1lIHRpbWVzdGFtcE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0
YW1wT2Zmc2V0OyB9CiAgICAgdm9pZCBzZXRUaW1lc3RhbXBPZmZzZXQoY29uc3QgTWVkaWFUaW1l
JiB0aW1lc3RhbXBPZmZzZXQpIHsgbV90aW1lc3RhbXBPZmZzZXQgPSB0aW1lc3RhbXBPZmZzZXQ7
IH0KICAgICBNZWRpYVRpbWUgaGlnaGVzdFByZXNlbnRhdGlvblRpbWVzdGFtcCgpIGNvbnN0Owot
ICAgIHZvaWQgdXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRl
ZCk7CiAgICAgdm9pZCBzZWVrVG9UaW1lKGNvbnN0IE1lZGlhVGltZSYpOwotICAgIHZvaWQgdHJ5
U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCgpOwogICAgIHZvaWQgc3RhcnRDaGFuZ2lu
Z1R5cGUoKSB7IG1fcGVuZGluZ0luaXRpYWxpemF0aW9uU2VnbWVudEZvckNoYW5nZVR5cGUgPSB0
cnVlOyB9Ci0KLSAgICB2b2lkIHJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQoY29uc3QgTWVkaWFUaW1l
JiBjdXJyZW50TWVkaWFUaW1lLCBzaXplX3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgc2l6
ZV90IG1heGltdW1CdWZmZXJTaXplKTsKICAgICB2b2lkIHJlbW92ZUNvZGVkRnJhbWVzKGNvbnN0
IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCBNZWRpYVRpbWUm
IGN1cnJlbnRNZWRpYVRpbWUsIGJvb2wgaXNFbmRlZCk7Ci0gICAgdm9pZCBldmljdENvZGVkRnJh
bWVzKHNpemVfdCBuZXdEYXRhU2l6ZSwgc2l6ZV90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHks
IHNpemVfdCBtYXhpbXVtQnVmZmVyU2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50VGltZSwg
Y29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbiwgYm9vbCBpc0VuZGVkKTsKLSAgICB2b2lkIGFkZFRy
YWNrQnVmZmVyKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSWQsIFJlZlB0cjxNZWRpYURlc2NyaXB0
aW9uPik7CiAgICAgdm9pZCB1cGRhdGVUcmFja0lkcyhWZWN0b3I8c3RkOjpwYWlyPEF0b21TdHJp
bmcsIEF0b21TdHJpbmc+PiYmIHRyYWNrSWRQYWlycyk7CiAgICAgdm9pZCBzZXRBbGxUcmFja0J1
ZmZlcnNOZWVkUmFuZG9tQWNjZXNzKCk7CiAgICAgdm9pZCBzZXRTaG91bGRHZW5lcmF0ZVRpbWVz
dGFtcHMoYm9vbCBmbGFnKSB7IG1fc2hvdWxkR2VuZXJhdGVUaW1lc3RhbXBzID0gZmxhZzsgfQog
ICAgIHZvaWQgc2V0TW9kZShTb3VyY2VCdWZmZXJBcHBlbmRNb2RlIG1vZGUpIHsgbV9hcHBlbmRN
b2RlID0gbW9kZTsgfQogICAgIHZvaWQgc2V0R3JvdXBTdGFydFRpbWVzdGFtcChjb25zdCBNZWRp
YVRpbWUmIG1lZGlhVGltZSkgeyBtX2dyb3VwU3RhcnRUaW1lc3RhbXAgPSBtZWRpYVRpbWU7IH0K
ICAgICB2b2lkIHNldEdyb3VwU3RhcnRUaW1lc3RhbXBUb0VuZFRpbWVzdGFtcCgpIHsgbV9ncm91
cFN0YXJ0VGltZXN0YW1wID0gbV9ncm91cEVuZFRpbWVzdGFtcDsgfQotICAgIHNpemVfdCB0b3Rh
bFRyYWNrQnVmZmVyU2l6ZUluQnl0ZXMoKSBjb25zdDsKKyAgICB1aW50NjRfdCB0b3RhbFRyYWNr
QnVmZmVyU2l6ZUluQnl0ZXMoKSBjb25zdDsKIAogICAgIHN0cnVjdCBUcmFja0J1ZmZlciB7CiAg
ICAgICAgIE1lZGlhVGltZSBsYXN0RGVjb2RlVGltZXN0YW1wOwpAQCAtMTM0LDcgKzEzNCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGVucXVldWVkU2FtcGxlc0ZvclRy
YWNrSUQoY29uc3QgQXRvbVN0cmluZyYpIHsgcmV0dXJuIHsgfTsgfQogICAgIFZlY3RvcjxTdHJp
bmc+IGJ1ZmZlcmVkU2FtcGxlc0ZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYpOwogICAgIHZp
cnR1YWwgTWVkaWFUaW1lIG1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWVGb3JUcmFja0lE
KGNvbnN0IEF0b21TdHJpbmcmKSB7IHJldHVybiBNZWRpYVRpbWU6OmludmFsaWRUaW1lKCk7IH0K
LSAgICB2aXJ0dWFsIHZvaWQgc2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JUcmFja0lEKGNvbnN0IEF0
b21TdHJpbmcmLCBzaXplX3QpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRNYXhpbXVtUXVldWVE
ZXB0aEZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYsIHVpbnQ2NF90KSB7IH0KICAgICBNZWRp
YVRpbWUgZmFzdFNlZWtUaW1lRm9yTWVkaWFUaW1lKGNvbnN0IE1lZGlhVGltZSYgdGFyZ2V0VGlt
ZSwgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZVRocmVzaG9sZCwgY29uc3QgTWVkaWFUaW1lJiBw
b3NpdGl2ZVRocmVzaG9sZCk7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTE0Myw2
ICsxNDMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgTWVk
aWFUaW1lIHRpbWVGdWRnZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIHsyMDAyLCAyNDAwMH07IH0K
ICAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAg
IHZpcnR1YWwgYm9vbCBpc1NlZWtpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgTWVkaWFUaW1lIGN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdCB7IHJldHVybiB7IH07IH0K
QEAgLTE1Nyw4ICsxNTgsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHNldE1pbmlt
dW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWUoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IE1lZGlh
VGltZSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhck1pbmltdW1VcGNvbWluZ1ByZXNlbnRh
dGlvblRpbWUoY29uc3QgQXRvbVN0cmluZyYpIHsgfQogCisgICAgdm9pZCBhcHBlbmRDb21wbGV0
ZWQoYm9vbCBwYXJzaW5nU3VjY2VlZGVkLCBib29sIGlzRW5kZWQpOwogICAgIHZvaWQgcmVlbnF1
ZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZl
SW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6Oklu
aXRpYWxpemF0aW9uU2VnbWVudCYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9u
U2VnbWVudChTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQm
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTYW1w
bGUoTWVkaWFTYW1wbGUmKTsKICAgICB2b2lkIHByb3ZpZGVNZWRpYURhdGEoY29uc3QgQXRvbVN0
cmluZyYgdHJhY2tJRCk7CiAKQEAgLTE2OSwxMSArMTcxLDEzIEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZWVucXVldWVNZWRpYUZvclRpbWUoVHJhY2tCdWZmZXImLCBjb25zdCBBdG9tU3RyaW5nJiB0
cmFja0lELCBjb25zdCBNZWRpYVRpbWUmKTsKICAgICBib29sIHZhbGlkYXRlSW5pdGlhbGl6YXRp
b25TZWdtZW50KGNvbnN0IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9u
U2VnbWVudCYpOwogICAgIHZvaWQgcHJvdmlkZU1lZGlhRGF0YShUcmFja0J1ZmZlciYsIGNvbnN0
IEF0b21TdHJpbmcmIHRyYWNrSUQpOworICAgIHZvaWQgc2V0QnVmZmVyZWRSYW5nZXMoY29uc3Qg
UGxhdGZvcm1UaW1lUmFuZ2VzJik7CiAKICAgICBib29sIG1faXNBdHRhY2hlZCB7IGZhbHNlIH07
CisgICAgYm9vbCBtX2hhc0F1ZGlvIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzVmlkZW8geyBm
YWxzZSB9OwogCiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBUcmFja0J1ZmZlcj4gbV90cmFja0J1
ZmZlck1hcDsKLSAgICBNZWRpYVRpbWUgbV9jdXJyZW50VGltZUZ1ZGdlRmFjdG9yOwogCiAgICAg
U291cmNlQnVmZmVyQXBwZW5kTW9kZSBtX2FwcGVuZE1vZGUgeyBTb3VyY2VCdWZmZXJBcHBlbmRN
b2RlOjpTZWdtZW50cyB9OwogCkBAIC0xOTAsNyArMTk0LDYgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgbV9idWZmZXJGdWxsIHsgZmFsc2UgfTsKICAgICBSZWZQdHI8VGltZVJhbmdlcz4gbV9idWZm
ZXJlZDsKLSAgICBib29sIG1fYnVmZmVyZWREaXJ0eSB7IHRydWUgfTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaAppbmRleCBlY2QzYzc2M2YxMjRi
N2MwZDRjNzU5NWJkM2E2YWYxNjVjM2Q5NDNiLi5hN2YwNDEyZjE0MDkyMDU1MTJhNDM5Y2Y4YjFh
NGUzMGNjY2RmZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oCkBAIC0zNiw2ICszNiw3IEBA
IGNsYXNzIEF1ZGlvVHJhY2tQcml2YXRlOwogY2xhc3MgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTsK
IGNsYXNzIE1lZGlhU2FtcGxlOwogY2xhc3MgTWVkaWFEZXNjcmlwdGlvbjsKK2NsYXNzIFBsYXRm
b3JtVGltZVJhbmdlczsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwogCiBjbGFzcyBTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50IHsKQEAgLTYzLDIxICs2NCwyMiBAQCBwdWJsaWM6CiAgICAgICAg
IH07CiAgICAgICAgIFZlY3RvcjxUZXh0VHJhY2tJbmZvcm1hdGlvbj4gdGV4dFRyYWNrczsKICAg
ICB9OwotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRp
YWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0aWFsaXphdGlvblNlZ21lbnQmKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRFcnJvcihib29sIGRlY29kZUVy
cm9yKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNo
YW5nZWQoY29uc3QgTWVkaWFUaW1lJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZm
ZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoZG91YmxlIGZyYW1lRHVyYXRpb24pID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZERyb3BTYW1wbGUoKSA9IDA7CisgICAg
dmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25T
ZWdtZW50KEluaXRpYWxpemF0aW9uU2VnbWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZVN0cmVhbUVuZGVk
V2l0aERlY29kZUVycm9yKCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VCdWZmZXJQcml2
YXRlSGFzQXVkaW8oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIHNvdXJjZUJ1ZmZlclBy
aXZhdGVIYXNWaWRlbygpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZm
ZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9vbCBkZWNvZGVFcnJvcikgPSAwOwogICAgIGVudW0gY2xh
c3MgQXBwZW5kUmVzdWx0IDogdWludDhfdCB7CiAgICAgICAgIEFwcGVuZFN1Y2NlZWRlZCwKICAg
ICAgICAgUmVhZFN0cmVhbUZhaWxlZCwKICAgICAgICAgUGFyc2luZ0ZhaWxlZAogICAgIH07CiAg
ICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRS
ZXN1bHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9u
Q2hhbmdlZChjb25zdCBNZWRpYVRpbWUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBsZShkb3VibGUgZnJhbWVEdXJhdGlvbikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkRHJvcFNhbXBsZSgpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGJv
b2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFu
Z2VzQ2hhbmdlZChjb25zdCBQbGF0Zm9ybVRpbWVSYW5nZXMmKSA9IDA7CisKICAgICB2aXJ0dWFs
IHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVSZW5kZXJpbmdFcnJvcihpbnQgZXJy
b3JDb2RlKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaAppbmRleCAwYzQxM2MyZGRmNWQ5ZGEyYTE1YjExMzVj
MDhlNTEwODUyYjgwMmM2Li5lYTVhMjljZWI1Y2ZlOWYwMjQyN2M1ZWFkZGMxNjQyNzRjYjZkNjA5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNr
UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJh
Y2tQcml2YXRlLmgKQEAgLTY0LDcgKzY0LDYgQEAgcHVibGljOgogICAgIHVzaW5nIFNlbGVjdGVk
Q2hhbmdlZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChWaWRlb1RyYWNrUHJpdmF0ZSYsIGJvb2wg
c2VsZWN0ZWQpPjsKICAgICB2b2lkIHNldFNlbGVjdGVkQ2hhbmdlZENhbGxiYWNrKFNlbGVjdGVk
Q2hhbmdlZENhbGxiYWNrJiYgY2FsbGJhY2spIHsgbV9zZWxlY3RlZENoYW5nZWRDYWxsYmFjayA9
IFdURk1vdmUoY2FsbGJhY2spOyB9CiAKLQogcHJvdGVjdGVkOgogICAgIFZpZGVvVHJhY2tQcml2
YXRlKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNv
dXJjZVByaXZhdGVBVkZPYmpDLmgKaW5kZXggMTEzNmZkMjUyYjgyZmVjYzc2YjdlOThmYjRkOGVi
YWI1Y2VlYjk0NS4uNjhjZmQ1MjM0NmI5YzM1OGNkM2QxNzUwOTNjNTdkYzhkNzk3OGJhNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29i
amMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMu
aApAQCAtNjIsMTQgKzYyLDE1IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPE1lZGlhU291cmNl
UHJpdmF0ZUFWRk9iakM+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akMqLCBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqKTsKICAgICB2aXJ0dWFsIH5NZWRpYVNvdXJj
ZVByaXZhdGVBVkZPYmpDKCk7CiAKLSAgICBNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFW
Rk9iakMqIHBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWVyOyB9CisgICAgTWVkaWFQbGF5
ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBwbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Bs
YXllci5nZXQoKTsgfQogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM+PiYgc291cmNlQnVmZmVycygpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlQnVmZmVy
czsgfQogICAgIGNvbnN0IFZlY3RvcjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyo+JiBhY3Rp
dmVTb3VyY2VCdWZmZXJzKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVTb3VyY2VCdWZmZXJzOyB9
CiAKICAgICBBZGRTdGF0dXMgYWRkU291cmNlQnVmZmVyKGNvbnN0IENvbnRlbnRUeXBlJiwgUmVm
UHRyPFNvdXJjZUJ1ZmZlclByaXZhdGU+Jikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkdXJhdGlvbkNo
YW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRp
bWUmKSBvdmVycmlkZTsKICAgICB2b2lkIG1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1
cykgb3ZlcnJpZGU7CiAgICAgdm9pZCB1bm1hcmtFbmRPZlN0cmVhbSgpIG92ZXJyaWRlOworICAg
IGJvb2wgaXNFbmRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNFbmRlZDsgfQogICAg
IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpIG92ZXJyaWRlOwog
ICAgIHZvaWQgd2FpdEZvclNlZWtDb21wbGV0ZWQoKSBvdmVycmlkZTsKQEAgLTEyOSw3ICsxMzAs
NyBAQCBwcml2YXRlOgogCiAgICAgZnJpZW5kIGNsYXNzIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOwogCi0gICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBtX3BsYXll
cjsKKyAgICBXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQz4gbV9w
bGF5ZXI7CiAgICAgUmVmUHRyPE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudD4gbV9jbGllbnQ7CiAg
ICAgVmVjdG9yPFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4+IG1fc291cmNlQnVm
ZmVyczsKICAgICBWZWN0b3I8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqPiBtX2FjdGl2ZVNv
dXJjZUJ1ZmZlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQ
cml2YXRlQVZGT2JqQy5tbQppbmRleCBiMDAzOTMxYzdkNzU5ZjI5ZDllMDY2ZmIxMjAyMzA3Y2Y1
MjQ5NTY2Li41NmZkODk1MTljNGEyYmJmZTk5ODFkZjhkZDJmZDI1MDkzOWFhNWNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0K
QEAgLTU0LDcgKzU0LDcgQEAgUmVmPE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IE1lZGlhU291
cmNlUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZShNZWRpYVBsYXllclByaXYKIH0KIAogTWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQzo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyhNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqIHBhcmVudCwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50
KiBjbGllbnQpCi0gICAgOiBtX3BsYXllcihwYXJlbnQpCisgICAgOiBtX3BsYXllcihtYWtlV2Vh
a1B0cihwYXJlbnQpKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9pc0VuZGVkKGZh
bHNlKQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtMTI4LDcgKzEyOCw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6
OmJ1ZmZlcmVkKCkKICAgICByZXR1cm4gbV9jbGllbnQtPmJ1ZmZlcmVkKCk7CiB9CiAKLXZvaWQg
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6ZHVyYXRpb25DaGFuZ2VkKCkKK3ZvaWQgTWVkaWFT
b3VyY2VQcml2YXRlQVZGT2JqQzo6ZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpCiB7
CiAgICAgbV9wbGF5ZXItPmR1cmF0aW9uQ2hhbmdlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oCmluZGV4IDU0NjUzMmJhMTll
YTQ0ZjhmYWY0OWFkMTk3NTIxZjk3ZThlMWVlNjguLjVmMjA5ODViNjhiMGExNGYzMjdiM2Q0ZTQz
MTg3NjU1MmIwMGI3M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLmgKQEAgLTI4LDcgKzI4LDExIEBACiAjaWYgRU5BQkxFKE1FRElB
X1NPVVJDRSkKIAogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlci5oIgorI2luY2x1ZGUgPHd0
Zi9Db25kaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9M
b2NrLmg+CiAjaW5jbHVkZSA8d3RmL1R5cGVDYXN0cy5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBPQkpDX0NMQVNTIEFWQXNzZXQ7CkBAIC03
OCw2ICs4MiwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kaXNjYXJkU2FtcGxlc1VudGlsTmV4
dEluaXRpYWxpemF0aW9uU2VnbWVudCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3BhcnNlclN0YXRl
V2FzUmVzZXQgeyBmYWxzZSB9OwogCisgICAgTG9jayBtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5
TXV0ZXg7CisgICAgQ29uZGl0aW9uIG1fdHJhY2tCdWZmZXJNYW5hZ2VyUmVhZHlDb25kaXRpb247
CisgICAgSGFzaE1hcDx1aW50NjRfdCwgYm9vbD4gbV90cmFja0J1ZmZlck1hbmFnZXJSZWFkeU1h
cDsKKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIFJlZlB0cjxjb25zdCBXVEY6Okxv
Z2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyIHsgbnVsbHB0
ciB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakMubW0KaW5kZXggMzVkOWY1NTBjM2IyMTA0MWFlZjdkMmE2NDNiOGFhYzdiNGEzOTU1Yi4u
OTNlYjNmOGI0ZjAwMzgyNDI1MWFmOWNhYTlhNjlkMjczNTFjYzQxYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUGFyc2VyQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCkBAIC0yNTgs
NyArMjU4LDE5IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6c2V0TG9nZ2VyKGNv
bnN0IExvZ2dlciYgbG9nZ2VyLCBjb25zdCB2b2lkKiBsb2dJCiAKIHZvaWQgU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChBVkFzc2V0KiBhc3NldCkK
IHsKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhp
cyksIGFzc2V0ID0gcmV0YWluUHRyKGFzc2V0KV0geworICAgIFZlY3Rvcjx1aW50NjRfdD4gdHJh
Y2tJRHM7CisgICAgZm9yIChBVkFzc2V0VHJhY2sqIHRyYWNrIGluIFthc3NldCB0cmFja3NdKSB7
CisgICAgICAgIGlmIChbdHJhY2sgaGFzTWVkaWFDaGFyYWN0ZXJpc3RpYzpBVk1lZGlhQ2hhcmFj
dGVyaXN0aWNWaXN1YWxdIHx8IFt0cmFjayBoYXNNZWRpYUNoYXJhY3RlcmlzdGljOkFWTWVkaWFD
aGFyYWN0ZXJpc3RpY0F1ZGlibGVdKQorICAgICAgICAgICAgdHJhY2tJRHMuYXBwZW5kKFt0cmFj
ayB0cmFja0lEXSk7CisgICAgfQorCisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1fdHJhY2tCdWZmZXJNYW5hZ2VyUmVhZHlNdXRleCk7CisgICAgICAgIGZvciAoYXV0byB0
cmFja0lEIDogdHJhY2tJRHMpCisgICAgICAgICAgICBtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5
TWFwLmFkZCh0cmFja0lELCBmYWxzZSk7CisgICAgfQorCisgICAgY2FsbE9uTWFpblRocmVhZChb
dGhpcywgc3Ryb25nVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBhc3NldCA9IHJldGFpblB0cihhc3Nl
dCksIHRyYWNrSURzID0gV1RGTW92ZSh0cmFja0lEcyldKCkgbXV0YWJsZSB7CiAgICAgICAgIG1f
ZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlvblNlZ21lbnQgPSBmYWxzZTsKIAog
ICAgICAgICBpZiAoIW1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjaykKQEAgLTI5
NSw3ICszMDcsMTMgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQYXJzZVN0
cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQogICAgICAgICAgICAgLy8gRklYTUUoMTI1
MTYxKSAgICA6IEFkZCBUZXh0VHJhY2sgc3VwcG9ydAogICAgICAgICB9CiAKLSAgICAgICAgbV9k
aWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFdURk1vdmUoc2VnbWVudCkpOworICAg
ICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soV1RGTW92ZShzZWdtZW50
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdHJhY2tJRHMgPSBXVEZN
b3ZlKHRyYWNrSURzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9s
ZExvY2sobV90cmFja0J1ZmZlck1hbmFnZXJSZWFkeU11dGV4KTsKKyAgICAgICAgICAgIGZvciAo
YXV0byB0cmFja0lEIDogdHJhY2tJRHMpCisgICAgICAgICAgICAgICAgbV90cmFja0J1ZmZlck1h
bmFnZXJSZWFkeU1hcC5zZXQodHJhY2tJRCwgdHJ1ZSk7CisKKyAgICAgICAgICAgIG1fdHJhY2tC
dWZmZXJNYW5hZ2VyUmVhZHlDb25kaXRpb24ubm90aWZ5QWxsKCk7CisgICAgICAgIH0pOwogICAg
IH0pOwogfQogCkBAIC0zMTAsNiArMzI4LDE2IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZG
T2JqQzo6ZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0aEVycm9yKE5TRXJyb3IqIGVycm9yCiB2
b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFj
a0lEKHVpbnQ2NF90IHRyYWNrSUQsIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgY29u
c3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkIGZsYWdzKQogewogICAgIFVOVVNFRF9QQVJB
TShmbGFncyk7CisKKyAgICAvLyBXYWl0IGZvciB0aGUgdHJhY2sgYnVmZmVyIG1hbmFnZXIgaXMg
cmVhZHkgZm9yIHRoaXMgdHJhY2sgKGlmIHRoZSB0cmFjayBleGlzdHMgaW4gdGhlCisgICAgLy8g
aW5pdGlhbGl6YXRpb24gc2VnbWVudCkKKyAgICB7CisgICAgICAgIHN0ZDo6dW5pcXVlX2xvY2s8
TG9jaz4gbG9jayhtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5TXV0ZXgpOworICAgICAgICBtX3Ry
YWNrQnVmZmVyTWFuYWdlclJlYWR5Q29uZGl0aW9uLndhaXQobG9jaywgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgdHJhY2tJRF0geworICAgICAgICAgICAgcmV0dXJuICFt
X3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5TWFwLmNvbnRhaW5zKHRyYWNrSUQpIHx8IG1fdHJhY2tC
dWZmZXJNYW5hZ2VyUmVhZHlNYXAuZ2V0KHRyYWNrSUQpOworICAgICAgICB9KTsKKyAgICB9CisK
ICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigqdGhpcyks
IHNhbXBsZUJ1ZmZlciA9IHJldGFpblB0cihzYW1wbGVCdWZmZXIpLCB0cmFja0lELCBtZWRpYVR5
cGUgPSBtZWRpYVR5cGVdIHsKICAgICAgICAgaWYgKCFtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxs
YmFjaykKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCmluZGV4IDhiMWVlYTYzMDA3ZWQ1YzRkMDg3
NDQ2ZTc0M2IxM2E0YzFjYzAwYmQuLjFmNjI1YjNjNzhlODNlNTExNDQ4MDA5YmJjNDQ5NThlMzYz
YWQ0YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakMuaApAQCAtOTEsOSArOTEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsUHJv
dmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRCh1aW50NjRf
dCB0cmFja0lEKTsKICAgICB2b2lkIGRpZFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxp
emF0aW9uRGF0YUZvclRyYWNrSUQoUmVmPFVpbnQ4QXJyYXk+JiYsIHVpbnQ2NF90IHRyYWNrSUQs
IEJveDxCaW5hcnlTZW1hcGhvcmU+KTsKIAotICAgIGJvb2wgaGFzVmlkZW8oKSBjb25zdDsKICAg
ICBib29sIGhhc1NlbGVjdGVkVmlkZW8oKSBjb25zdDsKLSAgICBib29sIGhhc0F1ZGlvKCkgY29u
c3Q7CiAKICAgICB2b2lkIHRyYWNrRGlkQ2hhbmdlU2VsZWN0ZWQoVmlkZW9UcmFja1ByaXZhdGUm
LCBib29sIHNlbGVjdGVkKTsKICAgICB2b2lkIHRyYWNrRGlkQ2hhbmdlRW5hYmxlZChBdWRpb1Ry
YWNrUHJpdmF0ZSYsIGJvb2wgZW5hYmxlZCk7CkBAIC0xNDAsNyArMTM4LDcgQEAgcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZh
dGVBVkZPYmpDKiwgUmVmPFNvdXJjZUJ1ZmZlclBhcnNlcj4mJik7CiAKICAgICB1c2luZyBJbml0
aWFsaXphdGlvblNlZ21lbnQgPSBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXph
dGlvblNlZ21lbnQ7Ci0gICAgdm9pZCBkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFs
aXphdGlvblNlZ21lbnQmJik7CisgICAgdm9pZCBkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJ
bml0aWFsaXphdGlvblNlZ21lbnQmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAg
ICB2b2lkIGRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhpbnQzMl90KTsKICAgICB2b2lk
IGRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKFJlZjxNZWRpYVNhbXBsZT4mJiwgdWludDY0
X3QgdHJhY2tJRCwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUpOwogCkBAIC0xNTQsNiArMTUyLDcg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGZsdXNoKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpIGZp
bmFsOwogICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYsIGNvbnN0IEF0
b21TdHJpbmcmIHRyYWNrSUQpIGZpbmFsOwogICAgIGJvb2wgaXNSZWFkeUZvck1vcmVTYW1wbGVz
KGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpIGZpbmFsOworICAgIE1lZGlhVGltZSB0aW1lRnVk
Z2VGYWN0b3IoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldEFjdGl2ZShib29sKSBmaW5hbDsK
ICAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBub3RpZnlDbGllbnRX
aGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKSBmaW5hbDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMubW0KaW5kZXggNGQ2MTQ3ZTkxNjQ5MjRmNDJkNGRkZWY0YTZiNmY4MGM2ZTUyYzM4ZS4uNDNm
M2JjMTUxNDAxOTk1NjI4YjQwZmFjZTlhNGJmNDExNTgwMGFhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0KQEAgLTMwOCwx
MCArMzA4LDE0IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQyhNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDCiAKICAgICBzb3VyY2VCdWZmZXJN
YXAoKS5hZGQobV9tYXBJRCwgbWFrZVdlYWtQdHIoKnRoaXMpKTsKIAotICAgIG1fcGFyc2VyLT5z
ZXREaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKHRoaXMpXSAoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCkgbXV0YWJsZSB7Cisg
ICAgbV9wYXJzZXItPnNldERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soW3RoaXMs
IHdlYWtUaGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChJbml0aWFsaXphdGlvblNlZ21lbnQmJiBz
ZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIG11
dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBpZiAod2Vh
a1RoaXMpCi0gICAgICAgICAgICB3ZWFrVGhpcy0+ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEo
V1RGTW92ZShzZWdtZW50KSk7CisgICAgICAgIGlmICghd2Vha1RoaXMpIHsKKyAgICAgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShXVEZNb3ZlKHNlZ21lbnQpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgfSk7CiAKICAgICBtX3BhcnNlci0+c2V0RGlk
RW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nQ2FsbGJhY2soW3dlYWtUaGlzID0gbWFrZVdlYWtQ
dHIodGhpcyldIChpbnQzMl90IGVycm9yQ29kZSkgbXV0YWJsZSB7CkBAIC0zNDQsMTIgKzM0OCwx
NCBAQCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6flNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDKCkKICAgICAgICAgbV9oYXNTZXNzaW9uU2VtYXBob3JlLT5zaWduYWwoKTsKIH0KIAotdm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEo
SW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVu
dCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogCi0gICAgaWYgKCFtX21lZGlh
U291cmNlKQorICAgIGlmICghbV9tZWRpYVNvdXJjZSkgeworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcigpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgaWYgKG1fbWVkaWFTb3VyY2Ut
PnBsYXllcigpLT5zaG91bGRDaGVja0hhcmR3YXJlU3VwcG9ydCgpKSB7CiAgICAgICAgIGZvciAo
YXV0byYgaW5mbyA6IHNlZ21lbnQudmlkZW9UcmFja3MpIHsKQEAgLTM1OCw2ICszNjQsNyBAQCB2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0
YShJbml0aWFsaXphdGlvblNlZ21lbgogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAgICAgaWYgKCFjb2RlY3NNZWV0SGFyZHdhcmVEZWNvZGVSZXF1aXJlbWVudHMoe3sgKmNvZGVj
IH19LCBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+bWVkaWFDb250ZW50VHlwZXNSZXF1aXJpbmdI
YXJkd2FyZVN1cHBvcnQoKSkpIHsKICAgICAgICAgICAgICAgICBtX3BhcnNpbmdTdWNjZWVkZWQg
PSBmYWxzZTsKKyAgICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMzg0LDcgKzM5MSw3
IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRp
b25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVuCiAgICAgaWYgKG1fbWVkaWFTb3VyY2UpCiAgICAg
ICAgIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5jaGFyYWN0ZXJpc3RpY3NDaGFuZ2VkKCk7CiAK
LSAgICBkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KHNlZ21lbnQpOworICAgIGRpZFJl
Y2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoV1RGTW92ZShzZWdtZW50KSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpk
aWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmcoaW50MzJfdCBjb2RlKQpAQCAtNTc3LDggKzU4
NCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZENvbXBsZXRlZCgp
CiAgICAgaWYgKG1fcGFyc2luZ1N1Y2NlZWRlZCAmJiBtX21lZGlhU291cmNlKQogICAgICAgICBt
X21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c2V0TG9hZGluZ1Byb2dyZXNzc2VkKHRydWUpOwogCi0g
ICAgaWYgKG1fY2xpZW50KQotICAgICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUFw
cGVuZENvbXBsZXRlKG1fcGFyc2luZ1N1Y2NlZWRlZCA/IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGll
bnQ6OkFwcGVuZFJlc3VsdDo6QXBwZW5kU3VjY2VlZGVkIDogU291cmNlQnVmZmVyUHJpdmF0ZUNs
aWVudDo6QXBwZW5kUmVzdWx0OjpQYXJzaW5nRmFpbGVkKTsKKyAgICBTb3VyY2VCdWZmZXJQcml2
YXRlOjphcHBlbmRDb21wbGV0ZWQobV9wYXJzaW5nU3VjY2VlZGVkLCBtX21lZGlhU291cmNlID8g
bV9tZWRpYVNvdXJjZS0+aXNFbmRlZCgpIDogdHJ1ZSk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZUFWRk9iakM6OmFib3J0KCkKQEAgLTY4MSwyMSArNjg3LDExIEBAIHZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3Rh
dGUgcmVhZHlTdGF0CiAgICAgICAgIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5zZXRSZWFkeVN0
YXRlKHJlYWR5U3RhdGUpOwogfQogCi1ib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpo
YXNWaWRlbygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xpZW50ICYmIG1fY2xpZW50LT5zb3Vy
Y2VCdWZmZXJQcml2YXRlSGFzVmlkZW8oKTsKLX0KLQogYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6aGFzU2VsZWN0ZWRWaWRlbygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZW5hYmxl
ZFZpZGVvVHJhY2tJRCAhPSBub3RGb3VuZDsKIH0KIAotYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6aGFzQXVkaW8oKSBjb25zdAotewotICAgIHJldHVybiBtX2NsaWVudCAmJiBtX2Ns
aWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlvKCk7Ci19Ci0KIHZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OnRyYWNrRGlkQ2hhbmdlU2VsZWN0ZWQoVmlkZW9UcmFja1ByaXZh
dGUmIHRyYWNrLCBib29sIHNlbGVjdGVkKQogewogICAgIGF1dG8gdHJhY2tJRCA9IHRyYWNrLmlk
KCkuc3RyaW5nKCkudG9VSW50NjQoKTsKQEAgLTEwNjIsNyArMTA1OCw3IEBAIHZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM6OmVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmIHNh
bXBsZSwgY29uc3QKIAogICAgICAgICBhdXRvIHJlbmRlcmVyID0gbV9hdWRpb1JlbmRlcmVycy5n
ZXQodHJhY2tJRCk7CiAgICAgICAgIFtyZW5kZXJlciBlbnF1ZXVlU2FtcGxlQnVmZmVyOnBsYXRm
b3JtU2FtcGxlLnNhbXBsZS5jbVNhbXBsZUJ1ZmZlcl07Ci0gICAgICAgIGlmIChtX21lZGlhU291
cmNlICYmICFzYW1wbGUtPmlzTm9uRGlzcGxheWluZygpKQorICAgICAgICBpZiAobV9tZWRpYVNv
dXJjZSAmJiAhc2FtcGxlLT5pc05vbkRpc3BsYXlpbmcoKSAmJiBtX21lZGlhU291cmNlLT5wbGF5
ZXIoKSkKICAgICAgICAgICAgIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5zZXRIYXNBdmFpbGFi
bGVBdWRpb1NhbXBsZShyZW5kZXJlci5nZXQoKSwgdHJ1ZSk7CiAgICAgfQogfQpAQCAtMTA5MSw2
ICsxMDg3LDE0IEBAIGJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmlzUmVhZHlGb3JN
b3JlU2FtcGxlcyhjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lECiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCitNZWRpYVRpbWUgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnRpbWVGdWRnZUZhY3Rv
cigpIGNvbnN0Cit7CisgICAgaWYgKG1fbWVkaWFTb3VyY2UpCisgICAgICAgIHJldHVybiBtX21l
ZGlhU291cmNlLT50aW1lRnVkZ2VGYWN0b3IoKTsKKworICAgIHJldHVybiBTb3VyY2VCdWZmZXJQ
cml2YXRlOjp0aW1lRnVkZ2VGYWN0b3IoKTsKK30KKwogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6c2V0QWN0aXZlKGJvb2wgaXNBY3RpdmUpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSLCBpc0FjdGl2ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCmluZGV4IDBkYzgxZjA2
ZDI3ZGNkMDk3MzlkMDdlNDUwNzU4YjYzNjI5ZDcxYzcuLmUxMGNkYWJjNDdhNDQ1ZDMxY2E5MGY5
YmY0ODEyZmZjNGEwMzExNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oCkBAIC0zMCw2ICszMCw3
IEBACiAjaW5jbHVkZSAiTWVkaWFQbGF5ZXJFbnVtcy5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZl
clByaXZhdGVDbGllbnQuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50OEFycmF5Lmg+
CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KIAogbmFtZXNwYWNlIFdURiB7CkBAIC02OSw3ICs3MCw3IEBAIHB1YmxpYzoKIAog
ICAgIC8vIFdpbGwgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KICAgICB1c2luZyBJbml0
aWFsaXphdGlvblNlZ21lbnQgPSBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXph
dGlvblNlZ21lbnQ7Ci0gICAgdXNpbmcgRGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFj
ayA9IFdURjo6RnVuY3Rpb248dm9pZChJbml0aWFsaXphdGlvblNlZ21lbnQmJik+OworICAgIHVz
aW5nIERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZv
aWQoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik+
OwogICAgIHZvaWQgc2V0RGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhEaWRQYXJz
ZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrJiYgY2FsbGJhY2spCiAgICAgewogICAgICAgICBt
X2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJj
ZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggODRiYzU3NGRjMGYwM2Y4ZmZi
NDM2ODkwZmM0YTFhNWRlYWE5ZTY0MS4uNjRhNTAwMTI4ODYxNmRlMmQ3N2YzOWNiODgyYmU5ZWM3
ZjZkNTAyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKQEAgLTcxNiwxMiAr
NzE2LDI1IEBAIFN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkNsdXN0ZXJCZWdpbihj
b25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjCiAgICAgICAgIHJldHVybiBTdGF0dXMo
U3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKIAogICAgIGlmIChtX2luaXRpYWxpemF0aW9uU2Vn
bWVudEVuY291bnRlcmVkICYmIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjaykg
ewotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGluaXRpYWxpemF0aW9uU2VnbWVudCA9IFdURk1vdmUoKm1faW5pdGlhbGl6YXRp
b25TZWdtZW50KV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6
YXRpb25EYXRhQ2FsbGJhY2soV1RGTW92ZShpbml0aWFsaXphdGlvblNlZ21lbnQpKTsKKyAgICAg
ICAgeworICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3RyYWNrQnVmZmVyTWFu
YWdlclJlYWR5TXV0ZXgpOworICAgICAgICAgICAgZm9yIChhdXRvIHRyYWNrSUQgOiBtX2luaXRp
YWxpemF0aW9uU2VnbWVudFRyYWNrSURzKQorICAgICAgICAgICAgICAgIG1fdHJhY2tCdWZmZXJN
YW5hZ2VyUmVhZHlNYXAuYWRkKHRyYWNrSUQsIGZhbHNlKTsKKyAgICAgICAgfQorCisgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
aW5pdGlhbGl6YXRpb25TZWdtZW50ID0gV1RGTW92ZSgqbV9pbml0aWFsaXphdGlvblNlZ21lbnQp
LCB0cmFja0lEcyA9IFdURk1vdmUobV9pbml0aWFsaXphdGlvblNlZ21lbnRUcmFja0lEcyldKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJh
Y2soV1RGTW92ZShpbml0aWFsaXphdGlvblNlZ21lbnQpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCB0cmFja0lEcyA9IFdURk1vdmUodHJhY2tJRHMpXSgpIG11dGFibGUg
eworICAgICAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV90cmFja0J1ZmZlck1h
bmFnZXJSZWFkeU11dGV4KTsKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8gdHJhY2tJRCA6IHRy
YWNrSURzKQorICAgICAgICAgICAgICAgICAgICBtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5TWFw
LnNldCh0cmFja0lELCB0cnVlKTsKKworICAgICAgICAgICAgICAgIG1fdHJhY2tCdWZmZXJNYW5h
Z2VyUmVhZHlDb25kaXRpb24ubm90aWZ5QWxsKCk7CisgICAgICAgICAgICB9KTsKICAgICAgICAg
fSk7CiAgICAgfQogICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3VudGVyZWQgPSBmYWxz
ZTsKICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudCA9IG51bGxwdHI7CisgICAgbV9pbml0aWFs
aXphdGlvblNlZ21lbnRUcmFja0lEcy5jbGVhcigpOwogCiAgICAgaWYgKGNsdXN0ZXIudGltZWNv
ZGUuaXNfcHJlc2VudCgpKQogICAgICAgICBtX2N1cnJlbnRUaW1lY29kZSA9IGNsdXN0ZXIudGlt
ZWNvZGUudmFsdWUoKTsKQEAgLTczOCwxMCArNzUxLDEzIEBAIFN0YXR1cyBTb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNOjpPblRyYWNrRW50cnkoY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwg
Y29uCiAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprT2tDb21wbGV0ZWQpOwogCiAgICAg
YXV0byB0cmFja1R5cGUgPSB0cmFja0VudHJ5LnRyYWNrX3R5cGUudmFsdWUoKTsKLSAgICBpZiAo
dHJhY2tUeXBlID09IFRyYWNrVHlwZTo6a1ZpZGVvKQorICAgIGlmICh0cmFja1R5cGUgPT0gVHJh
Y2tUeXBlOjprVmlkZW8pIHsKICAgICAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnQtPnZpZGVv
VHJhY2tzLmFwcGVuZCh7IE1lZGlhRGVzY3JpcHRpb25XZWJNOjpjcmVhdGUoVHJhY2tFbnRyeSh0
cmFja0VudHJ5KSksIFZpZGVvVHJhY2tQcml2YXRlV2ViTTo6Y3JlYXRlKFRyYWNrRW50cnkodHJh
Y2tFbnRyeSkpIH0pOwotICAgIGVsc2UgaWYgKHRyYWNrVHlwZSA9PSBUcmFja1R5cGU6OmtBdWRp
bykKKyAgICAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRUcmFja0lEcy5hcHBlbmQodHJhY2tF
bnRyeS50cmFja191aWQudmFsdWUoKSk7CisgICAgfSBlbHNlIGlmICh0cmFja1R5cGUgPT0gVHJh
Y2tUeXBlOjprQXVkaW8pIHsKICAgICAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnQtPmF1ZGlv
VHJhY2tzLmFwcGVuZCh7IE1lZGlhRGVzY3JpcHRpb25XZWJNOjpjcmVhdGUoVHJhY2tFbnRyeSh0
cmFja0VudHJ5KSksIEF1ZGlvVHJhY2tQcml2YXRlV2ViTTo6Y3JlYXRlKFRyYWNrRW50cnkodHJh
Y2tFbnRyeSkpIH0pOworICAgICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudFRyYWNrSURzLmFw
cGVuZCh0cmFja0VudHJ5LnRyYWNrX3VpZC52YWx1ZSgpKTsKKyAgICB9CiAgICAgbV90cmFja3Mu
YXBwZW5kKHsgVHJhY2tFbnRyeSh0cmFja0VudHJ5KSwgeyB9LCBudWxscHRyLCBudWxscHRyLCAw
IH0pOwogCiAgICAgcmV0dXJuIFN0YXR1cyhTdGF0dXM6OmtPa0NvbXBsZXRlZCk7CkBAIC0xMjAz
LDYgKzEyMTksMTQgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRnJh
bWUoY29uc3QgRnJhbWVNZXRhZGF0YSYgbWV0YWRhdGEsIFJlYWQKIAogICAgICAgICBhdXRvIHRy
YWNrSUQgPSB0cmFjay50cmFja191aWQudmFsdWUoKTsKIAorICAgICAgICAvLyBXYWl0IGZvciB0
aGUgdHJhY2sgYnVmZmVyIG1hbmFnZXIgaXMgcmVhZHkgZm9yIHRoaXMgdHJhY2sKKyAgICAgICAg
eworICAgICAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxMb2NrPiBsb2NrKG1fdHJhY2tCdWZmZXJN
YW5hZ2VyUmVhZHlNdXRleCk7CisgICAgICAgICAgICBtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5
Q29uZGl0aW9uLndhaXQobG9jaywgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgdHJhY2tJRF0geworICAgICAgICAgICAgICAgIHJldHVybiAhbV90cmFja0J1ZmZlck1hbmFn
ZXJSZWFkeU1hcC5jb250YWlucyh0cmFja0lEKSB8fCBtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5
TWFwLmdldCh0cmFja0lEKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKICAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBz
YW1wbGVCdWZmZXIgPSBXVEZNb3ZlKHNhbXBsZUJ1ZmZlciksIHRyYWNrSURdICgpIG11dGFibGUg
ewogICAgICAgICAgICAgaWYgKCFtX2RpZFByb3ZpZGVNZWRpYURhdGFDYWxsYmFjaykKICAgICAg
ICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKaW5kZXggNDVi
ZDY5ZmZiNDcxMmJlNTI0NWU2MjZjZmI3Y2RlOTg3ZThhYmFjZi4uMjhmMWMwOTE4ZTc0YTgxOGJj
ZjAwYThkM2QzNTRiMGNiZGU5Yjc2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaApA
QCAtMzEsNyArMzEsMTAgQEAKICNpbmNsdWRlIDxjb21tb24vdnA5X2hlYWRlcl9wYXJzZXIuaD4K
ICNpbmNsdWRlIDx3ZWJtL2NhbGxiYWNrLmg+CiAjaW5jbHVkZSA8d2VibS9zdGF0dXMuaD4KKyNp
bmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1ZGUgPHd0
Zi9NZWRpYVRpbWUuaD4KICNpbmNsdWRlIDx3dGYvVW5pcXVlUmVmLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZhcmlhbnQuaD4KQEAgLTE0MSw2ICsxNDQsMTEgQEAgcHJpdmF0ZToKICAgICBPcHRpb25hbDxC
bG9ja1ZhcmlhbnQ+IG1fY3VycmVudEJsb2NrOwogICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtX3Jl
d2luZFRvUG9zaXRpb247CiAKKyAgICBWZWN0b3I8dWludDY0X3Q+IG1faW5pdGlhbGl6YXRpb25T
ZWdtZW50VHJhY2tJRHM7CisgICAgTG9jayBtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5TXV0ZXg7
CisgICAgQ29uZGl0aW9uIG1fdHJhY2tCdWZmZXJNYW5hZ2VyUmVhZHlDb25kaXRpb247CisgICAg
SGFzaE1hcDx1aW50NjRfdCwgYm9vbD4gbV90cmFja0J1ZmZlck1hbmFnZXJSZWFkeU1hcDsKKwog
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIFJlZlB0cjxjb25zdCBXVEY6OkxvZ2dlcj4g
bV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyIHsgbnVsbHB0ciB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21z
ZS9NZWRpYVNvdXJjZVByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVByaXZhdGVHU3RyZWFtZXIuY3Bw
CmluZGV4IDc3MWVhMDhjZWY0NDFjNTlkNjg0ZmM1Y2VkYjMzZjA2YTM2ZmNmODEuLmVmZWY3YmEz
YzI4MmVlNjUzMDhlMDU0ZTMzNzZiNGU1YTJlZGIzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VQcml2YXRlR1N0
cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL01lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTkzLDcgKzkzLDcgQEAg
dm9pZCBNZWRpYVNvdXJjZVByaXZhdGVHU3RyZWFtZXI6OnJlbW92ZVNvdXJjZUJ1ZmZlcihTb3Vy
Y2VCdWZmZXJQcml2YXRlKiBzb3VyY2UKICAgICBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnMucmVtb3Zl
KHNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuZ2V0KCkpOwogfQogCi12b2lkIE1lZGlhU291
cmNlUHJpdmF0ZUdTdHJlYW1lcjo6ZHVyYXRpb25DaGFuZ2VkKCkKK3ZvaWQgTWVkaWFTb3VyY2VQ
cml2YXRlR1N0cmVhbWVyOjpkdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC0xMDksMTEgKzEwOSwxMyBAQCB2b2lkIE1l
ZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1lcjo6bWFya0VuZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3Rh
dHVzIHN0YXR1cykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIG1fcGxheWVy
UHJpdmF0ZS5tYXJrRW5kT2ZTdHJlYW0oc3RhdHVzKTsKKyAgICBtX2lzRW5kZWQgPSB0cnVlOwog
fQogCiB2b2lkIE1lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1lcjo6dW5tYXJrRW5kT2ZTdHJlYW0o
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9pc0VuZGVkID0gZmFsc2U7CiB9CiAK
IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIE1lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1lcjo6cmVh
ZHlTdGF0ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVByaXZh
dGVHU3RyZWFtZXIuaAppbmRleCAyNTI0YWEwZjliZjc1Y2VjZGY3ODM2MjM3ZDE0MjQ3YTNjMjQ2
ZWFmLi4zNGNmNzBiNzIzZDdkYWU4MWMwZGQ3NGMwNTJkMjdjZTZmNGJlNTI0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291
cmNlUHJpdmF0ZUdTdHJlYW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VQcml2YXRlR1N0cmVhbWVyLmgKQEAgLTYxLDkg
KzYxLDEwIEBAIHB1YmxpYzoKICAgICBBZGRTdGF0dXMgYWRkU291cmNlQnVmZmVyKGNvbnN0IENv
bnRlbnRUeXBlJiwgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGU+Jikgb3ZlcnJpZGU7CiAgICAg
dm9pZCByZW1vdmVTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVyUHJpdmF0ZSopOwogCi0gICAgdm9p
ZCBkdXJhdGlvbkNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZChj
b25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIG1hcmtFbmRPZlN0cmVhbShFbmRP
ZlN0cmVhbVN0YXR1cykgb3ZlcnJpZGU7CiAgICAgdm9pZCB1bm1hcmtFbmRPZlN0cmVhbSgpIG92
ZXJyaWRlOworICAgIGJvb2wgaXNFbmRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNF
bmRlZDsgfQogCiAgICAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0
ZSkgb3ZlcnJpZGU7CkBAIC05NCw2ICs5NSw3IEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxTb3Vy
Y2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyKj4gbV9hY3RpdmVTb3VyY2VCdWZmZXJzOwogICAgIFJl
ZjxNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQ+IG1fbWVkaWFTb3VyY2U7CiAgICAgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyTVNFJiBtX3BsYXllclByaXZhdGU7CisgICAgYm9vbCBtX2lzRW5k
ZWQgeyBmYWxzZSB9OwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIFJlZjxjb25zdCBM
b2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllcjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlh
U291cmNlUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291
cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwCmluZGV4IDliNGQxZjgyMTAwMWNjNTliZjg3
MDhhY2Y3ODI1NmEyOTFjNTZmMWMuLjk3OWE4MWQzYjkwY2I2NjBhZTc3YmFhYjI4ZGEwZWM5NmNi
MzkyMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3Vy
Y2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmNwcApAQCAtOTMsNyAr
OTMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNb2NrTWVkaWFTb3Vy
Y2VQcml2YXRlOjpidWZmZXJlZCgpCiAgICAgcmV0dXJuIG1fY2xpZW50LT5idWZmZXJlZCgpOwog
fQogCi12b2lkIE1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OmR1cmF0aW9uQ2hhbmdlZCgpCit2b2lk
IE1vY2tNZWRpYVNvdXJjZVByaXZhdGU6OmR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUm
KQogewogICAgIG1fcGxheWVyLnVwZGF0ZUR1cmF0aW9uKGR1cmF0aW9uKCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFT
b3VyY2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNl
L01vY2tNZWRpYVNvdXJjZVByaXZhdGUuaAppbmRleCA3YTY5M2FlZDM1Y2E2YzljOTM2OTEwMmFh
NTUyNGZlMzBmYWQ0NDAxLi5lM2Q5ODA3YzZiMTUyMWZjOWIwNGU2NGIxNjlmNWVlZGQ0NjQ1MTk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01v
Y2tNZWRpYVNvdXJjZVByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuaApAQCAtODAsOCArODAsOSBAQCBw
cml2YXRlOgogCiAgICAgLy8gTWVkaWFTb3VyY2VQcml2YXRlIE92ZXJyaWRlcwogICAgIEFkZFN0
YXR1cyBhZGRTb3VyY2VCdWZmZXIoY29uc3QgQ29udGVudFR5cGUmLCBSZWZQdHI8U291cmNlQnVm
ZmVyUHJpdmF0ZT4mKSBvdmVycmlkZTsKLSAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZCgpIG92ZXJy
aWRlOworICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpIG92ZXJyaWRl
OwogICAgIHZvaWQgbWFya0VuZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVzKSBvdmVycmlkZTsK
KyAgICBib29sIGlzRW5kZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzRW5kZWQ7IH0K
ICAgICB2b2lkIHVubWFya0VuZE9mU3RyZWFtKCkgb3ZlcnJpZGU7CiAgICAgTWVkaWFQbGF5ZXI6
OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZvaWQgc2V0UmVh
ZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCmluZGV4IDJmYzkwZDM1NGY2Yjk2N2M1Yzk1MDI3YjIy
M2U0YTM1NzgwMGYzMGEuLmM2MTEwNjVjMzhmNmI5MGQyZGE0MjE3N2I5NTQyNzRmZTg3YTJhMWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC0xNDIsNyArMTQy
LDcgQEAgdm9pZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25l
ZCBjaGFyPiYmIGRhdGEpCiAKICAgICB3aGlsZSAobV9pbnB1dEJ1ZmZlci5zaXplKCkgJiYgcmVz
dWx0ID09IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdDo6QXBwZW5kU3Vj
Y2VlZGVkKSB7CiAgICAgICAgIGF1dG8gYnVmZmVyID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShtX2lu
cHV0QnVmZmVyLmRhdGEoKSwgbV9pbnB1dEJ1ZmZlci5zaXplKCkpOwotICAgICAgICBzaXplX3Qg
Ym94TGVuZ3RoID0gTW9ja0JveDo6cGVla0xlbmd0aChidWZmZXIucHRyKCkpOworICAgICAgICB1
aW50NjRfdCBib3hMZW5ndGggPSBNb2NrQm94OjpwZWVrTGVuZ3RoKGJ1ZmZlci5wdHIoKSk7CiAg
ICAgICAgIGlmIChib3hMZW5ndGggPiBidWZmZXItPmJ5dGVMZW5ndGgoKSkKICAgICAgICAgICAg
IGJyZWFrOwogCkBAIC0xNTksNiArMTU5LDEwIEBAIHZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZh
dGU6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQogICAgICAgICBtX2lucHV0
QnVmZmVyLnJlbW92ZSgwLCBib3hMZW5ndGgpOwogICAgIH0KIAorICAgIC8vIFJlc29sdmUgdGhl
IGNoYW5nZXMgaW4gVHJhY2tCdWZmZXJzJyBidWZmZXJlZCByYW5nZXMKKyAgICAvLyBpbnRvIHRo
ZSBTb3VyY2VCdWZmZXIncyBidWZmZXJlZCByYW5nZXMKKyAgICB1cGRhdGVCdWZmZXJlZEZyb21U
cmFja0J1ZmZlcnMobV9tZWRpYVNvdXJjZS0+aXNFbmRlZCgpKTsKKwogICAgIGlmIChtX2NsaWVu
dCkKICAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShy
ZXN1bHQpOwogfQpAQCAtMTkxLDcgKzE5NSw3IEBAIHZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZh
dGU6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgTW9ja0luaXRpYWxpCiAg
ICAgICAgIH0KICAgICB9CiAKLSAgICBTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlSW5p
dGlhbGl6YXRpb25TZWdtZW50KHNlZ21lbnQpOworICAgIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmRp
ZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoV1RGTW92ZShzZWdtZW50KSwgW10oKSB7IH0p
OwogfQogCiB2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlU2FtcGxlKGNv
bnN0IE1vY2tTYW1wbGVCb3gmIHNhbXBsZUJveCkKQEAgLTI0OSw3ICsyNTMsNyBAQCBNZWRpYVRp
bWUgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6Om1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRp
bWVGb3JUcmFja0lEKGNvbgogICAgIHJldHVybiBtX21pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlv
blRpbWU7CiB9CiAKLXZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OnNldE1heGltdW1RdWV1
ZURlcHRoRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJiwgc2l6ZV90IG1heFF1ZXVlRGVwdGgp
Cit2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRy
YWNrSUQoY29uc3QgQXRvbVN0cmluZyYsIHVpbnQ2NF90IG1heFF1ZXVlRGVwdGgpCiB7CiAgICAg
bV9tYXhRdWV1ZURlcHRoID0gbWF4UXVldWVEZXB0aDsKIH0KQEAgLTMyMiwxNiArMzI2LDYgQEAg
dm9pZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6ZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1w
bGU+JiYgc2FtcGxlLCBjb25zdCBBdG8KICAgICBtX2VucXVldWVkU2FtcGxlcy5hcHBlbmQodG9T
dHJpbmcoc2FtcGxlLmdldCgpKSk7CiB9CiAKLWJvb2wgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6
Omhhc1ZpZGVvKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jbGllbnQgJiYgbV9jbGllbnQtPnNv
dXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbygpOwotfQotCi1ib29sIE1vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlOjpoYXNBdWRpbygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xpZW50ICYmIG1fY2xp
ZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlSGFzQXVkaW8oKTsKLX0KLQogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAogV1RGTG9nQ2hhbm5lbCYgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmxvZ0No
YW5uZWwoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oCmluZGV4
IGI2YzU0N2RkOTVjMWY2YjBiZGRkMmU0MTFhZjE0MmIzOThmZGZmZTUuLjhiMmExMzg5NDZjMjhm
MmYzZTdkZWJmZTczNjVjY2M3YmFmYmEzZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlLmgKQEAgLTQ2LDkgKzQ2LDYgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhck1lZGlh
U291cmNlKCkgeyBtX21lZGlhU291cmNlID0gbnVsbHB0cjsgfQogCi0gICAgYm9vbCBoYXNWaWRl
bygpIGNvbnN0OwotICAgIGJvb2wgaGFzQXVkaW8oKSBjb25zdDsKLQogcHJpdmF0ZToKICAgICBl
eHBsaWNpdCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZShNb2NrTWVkaWFTb3VyY2VQcml2YXRlKik7
CiAKQEAgLTc1LDcgKzcyLDcgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxTdHJpbmc+IGVucXVl
dWVkU2FtcGxlc0ZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogICAgIE1lZGlh
VGltZSBtaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lRm9yVHJhY2tJRChjb25zdCBBdG9t
U3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCBzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQo
Y29uc3QgQXRvbVN0cmluZyYsIHNpemVfdCkgZmluYWw7CisgICAgdm9pZCBzZXRNYXhpbXVtUXVl
dWVEZXB0aEZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYsIHVpbnQ2NF90KSBmaW5hbDsKIAog
ICAgIHZvaWQgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBNb2NrSW5pdGlh
bGl6YXRpb25Cb3gmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTYW1wbGUoY29uc3QgTW9ja1NhbXBs
ZUJveCYpOwpAQCAtOTQsNyArOTEsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0FjdGl2ZSB7
IGZhbHNlIH07CiAgICAgTWVkaWFUaW1lIG1fbWluaW11bVVwY29taW5nUHJlc2VudGF0aW9uVGlt
ZTsKICAgICBWZWN0b3I8U3RyaW5nPiBtX2VucXVldWVkU2FtcGxlczsKLSAgICBPcHRpb25hbDxz
aXplX3Q+IG1fbWF4UXVldWVEZXB0aDsKKyAgICBPcHRpb25hbDx1aW50NjRfdD4gbV9tYXhRdWV1
ZURlcHRoOwogICAgIFZlY3RvcjxjaGFyPiBtX2lucHV0QnVmZmVyOwogCiAjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwCmluZGV4IDkzZTJmMjdkODJlOGY5MjRmNzg1YzUw
YTY1MDUwNWFkYjZhMzY3MjYuLmVhZTkzZTczYWIwYzU3NjM4MGQ0NThjNzk0NDkxYTA2NjEwYjk3
YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRp
b1RyYWNrUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVBdWRpb1RyYWNrUHJveHkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFRyYWNrUHJpdmF0ZVJlbW90
ZUNvbmZpZ3VyYXRpb24mIFJlbW90ZUF1ZGlvVHJhY2tQcm94eTo6Y29uZmlndXJhdGlvbigpCiB7
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRp
b24+IGNvbmZpZ3VyYXRpb247CiAKLSAgICBjb25maWd1cmF0aW9uLT5pZGVudGlmaWVyID0gbV90
cmFja1ByaXZhdGUtPmlkKCk7CisgICAgY29uZmlndXJhdGlvbi0+dHJhY2tJZCA9IG1fdHJhY2tQ
cml2YXRlLT5pZCgpOwogICAgIGNvbmZpZ3VyYXRpb24tPmxhYmVsID0gbV90cmFja1ByaXZhdGUt
PmxhYmVsKCk7CiAgICAgY29uZmlndXJhdGlvbi0+bGFuZ3VhZ2UgPSBtX3RyYWNrUHJpdmF0ZS0+
bGFuZ3VhZ2UoKTsKICAgICBjb25maWd1cmF0aW9uLT50cmFja0luZGV4ID0gbV90cmFja1ByaXZh
dGUtPnRyYWNrSW5kZXgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAppbmRleCBjM2IwNzM0YTRlZjk4ZDJh
N2U3MzkwZWE5ODAzZTNlMDM2YjdlYzUyLi40MmVlNzliYjA2ZTQ3NTI1ZGFiMzU0MjZkM2FkYmEx
NThhNjNhMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCkBAIC0xMzQsMTAgKzEzNCwxNCBAQCB2b2lk
IFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmxvYWQoVVJMJiYgdXJsLCBPcHRpb25hbDxTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGU+JgogfQogCiAjaWYgRU5BQkxFKE1FRElBX1NPVVJDRSkKLXZvaWQg
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bG9hZE1lZGlhU291cmNlKFVSTCYmIHVybCwgY29uc3Qg
V2ViQ29yZTo6Q29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBSZW1vdGVNZWRpYVNvdXJjZUlkZW50
aWZpZXIgbWVkaWFTb3VyY2VJZGVudGlmaWVyKQordm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5
Ojpsb2FkTWVkaWFTb3VyY2UoVVJMJiYgdXJsLCBjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYg
Y29udGVudFR5cGUsIFJlbW90ZU1lZGlhU291cmNlSWRlbnRpZmllciBtZWRpYVNvdXJjZUlkZW50
aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0
aW9uJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIG1fbWVkaWFTb3VyY2VQcm94eSA9
IGFkb3B0UmVmKCpuZXcgUmVtb3RlTWVkaWFTb3VyY2VQcm94eShtX21hbmFnZXIuZ3B1Q29ubmVj
dGlvblRvV2ViUHJvY2VzcygpLCBtZWRpYVNvdXJjZUlkZW50aWZpZXIsICp0aGlzKSk7CiAgICAg
bV9wbGF5ZXItPmxvYWQodXJsLCBjb250ZW50VHlwZSwgbV9tZWRpYVNvdXJjZVByb3h5LmdldCgp
KTsKKworICAgIFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOwor
ICAgIGdldENvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7CisgICAgY29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShjb25maWd1cmF0aW9uKSk7CiB9CiAjZW5kaWYKIApAQCAtNzU5LDcgKzc2Myw4
IEBAIHZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6dXBkYXRlQ2FjaGVkU3RhdGUoKQogCiAg
ICAgaWYgKG1fYnVmZmVyZWRDaGFuZ2VkKSB7CiAgICAgICAgIG1fYnVmZmVyZWRDaGFuZ2VkID0g
ZmFsc2U7Ci0gICAgICAgIG1fY2FjaGVkU3RhdGUuYnVmZmVyZWRSYW5nZXMgPSAqbV9wbGF5ZXIt
PmJ1ZmZlcmVkKCk7CisgICAgICAgIGlmIChtX2VuZ2luZUlkZW50aWZpZXIgIT0gTWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpBVkZvdW5kYXRpb25NU0UpCisgICAgICAg
ICAgICBtX2NhY2hlZFN0YXRlLmJ1ZmZlcmVkUmFuZ2VzID0gKm1fcGxheWVyLT5idWZmZXJlZCgp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKaW5kZXggYjgyNDc3MTNhZGFmMWM0NTNlYTRjNjU4
MWRhZDQzYmIxZTBjMjA2Ni4uYWU2YWQ4YjQ2MGI5ZjZiZGIzYjAwNDBmNzgwYmYxOTVmNDQ5YmNm
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
UGxheWVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5oCkBAIC0xMTUsNyArMTE1LDcgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBsb2FkKFVSTCYmLCBPcHRpb25hbDxTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGU+JiYsIGNvbnN0
IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiwgY29uc3QgU3RyaW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mJik+JiYpOwogI2lmIEVOQUJMRShN
RURJQV9TT1VSQ0UpCi0gICAgdm9pZCBsb2FkTWVkaWFTb3VyY2UoVVJMJiYsIGNvbnN0IFdlYkNv
cmU6OkNvbnRlbnRUeXBlJiwgUmVtb3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyKTsKKyAgICB2b2lk
IGxvYWRNZWRpYVNvdXJjZShVUkwmJiwgY29uc3QgV2ViQ29yZTo6Q29udGVudFR5cGUmLCBSZW1v
dGVNZWRpYVNvdXJjZUlkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVk
aWFQbGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmKTsKICNlbmRpZgogICAgIHZvaWQgY2FuY2VsTG9h
ZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDA4ZWExNWNjNjZi
MmVhOWQwNzBkYTZiYjcxZjg4Yjc0NTFjZjAxNTguLjJjZGUwODA0OWFkZWRiNGM2MTY5NTY5NGIw
Yjg5YjVlZjBmYTEwMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0y
OCw3ICsyOCw3IEBAIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhUGxheWVyUHJveHkgTm90UmVmQ291
bnRlZCB7CiAKICAgICBMb2FkKFVSTCB1cmwsIE9wdGlvbmFsPFdlYktpdDo6U2FuZGJveEV4dGVu
c2lvbjo6SGFuZGxlPiBzYW5kYm94RXh0ZW5zaW9uLCBXZWJDb3JlOjpDb250ZW50VHlwZSBjb250
ZW50VHlwZSwgU3RyaW5nIGtleVN5c3RlbSkgLT4gKHN0cnVjdCBXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyQ29uZmlndXJhdGlvbiBwbGF5ZXJDb25maWd1cmF0aW9uKSBBc3luYwogI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCi0gICAgTG9hZE1lZGlhU291cmNlKFVSTCB1cmwsIFdlYkNvcmU6OkNv
bnRlbnRUeXBlIGNvbnRlbnRUeXBlLCBXZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNlSWRlbnRpZmll
ciBtZWRpYVNvdXJjZUlkZW50aWZpZXIpIFN5bmNocm9ub3VzCisgICAgTG9hZE1lZGlhU291cmNl
KFVSTCB1cmwsIFdlYkNvcmU6OkNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlLCBXZWJLaXQ6OlJlbW90
ZU1lZGlhU291cmNlSWRlbnRpZmllciBtZWRpYVNvdXJjZUlkZW50aWZpZXIpIC0+IChzdHJ1Y3Qg
V2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24gcGxheWVyQ29uZmlndXJhdGlv
bikgQXN5bmMKICNlbmRpZgogICAgIENhbmNlbExvYWQoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHAKaW5k
ZXggNDk5YmQ2MWMyZjc4MjIyM2ZhMzhmYzk3YjE4MmZhNmQyYjkzODFkZS4uMmU0ODJkZWI2NWRm
MzY0ZGFmYzk0N2NlZTJiNzU0NWRlMzNlOGJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmNwcApAQCAtNjEs
MTMgKzYxLDEyIEBAIHZvaWQgUmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6c2V0UHJpdmF0ZUFuZE9w
ZW4oUmVmPE1lZGlhU291cmNlUHJpdmF0ZT4mJiBtZWRpYVNvCiAKIE1lZGlhVGltZSBSZW1vdGVN
ZWRpYVNvdXJjZVByb3h5OjpkdXJhdGlvbigpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICByZXR1cm4geyB9OworICAgIHJldHVybiBtX2R1cmF0aW9uOwogfQogCiBzdGQ6OnVu
aXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpidWZm
ZXJlZCgpIGNvbnN0CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICByZXR1cm4gbWFrZVVuaXF1ZTxQbGF0Zm9ybVRpbWVSYW5nZXM+KCk7CiB9
CiAKQEAgLTExMiw2ICsxMTEsMjIgQEAgdm9pZCBSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjphZGRT
b3VyY2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6Q29udGVudFR5cGUmIGNvbnRlbnQKICAgICBjYWxs
YmFjayhzdGF0dXMsIHJlbW90ZVNvdXJjZUlkZW50aWZpZXIpOwogfQogCit2b2lkIFJlbW90ZU1l
ZGlhU291cmNlUHJveHk6OmR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9u
KQoreworICAgIGlmIChtX2R1cmF0aW9uID09IGR1cmF0aW9uKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2R1cmF0aW9uID0gZHVyYXRpb247CisgICAgaWYgKG1fcHJpdmF0ZSkKKyAgICAgICAg
bV9wcml2YXRlLT5kdXJhdGlvbkNoYW5nZWQoZHVyYXRpb24pOworfQorCit2b2lkIFJlbW90ZU1l
ZGlhU291cmNlUHJveHk6OnNldFJlYWR5U3RhdGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6
UmVhZHlTdGF0ZSByZWFkeVN0YXRlKQoreworICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAgIG1f
cHJpdmF0ZS0+c2V0UmVhZHlTdGF0ZShyZWFkeVN0YXRlKTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9T
T1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFTb3VyY2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhU291cmNlUHJveHkuaAppbmRleCA1OTY4YzdiYmQxODljZDQ3OWVmNGFlYWI0ZDQ0OTk1
MzNmZDNkNjViLi45NTkzNDQ5ZDNiNWU1Y2ZlZDk2YjUxNWU4MTdlMDNkYTBjY2EwOGYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNv
dXJjZVByb3h5LmgKQEAgLTc2LDE3ICs3NiwyMSBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAg
Ly8gSVBDOjpNZXNzYWdlUmVjZWl2ZXIKLSAgICAvLyB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQ
Qzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAgdm9p
ZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwg
c3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAotICAgIHVzaW5nIEFkZFNv
dXJjZUJ1ZmZlckNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNZWRp
YVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cywgT3B0aW9uYWw8UmVtb3RlU291cmNlQnVmZmVySWRl
bnRpZmllcj4gcmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcik+OworICAgIHVzaW5nIEFkZFNv
dXJjZUJ1ZmZlckNhbGxiYWNrID0gQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJDb3JlOjpNZWRp
YVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cywgT3B0aW9uYWw8UmVtb3RlU291cmNlQnVmZmVySWRl
bnRpZmllcj4pPjsKICAgICB2b2lkIGFkZFNvdXJjZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpDb250
ZW50VHlwZSYsIEFkZFNvdXJjZUJ1ZmZlckNhbGxiYWNrJiYpOworICAgIHZvaWQgZHVyYXRpb25D
aGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpOworICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShXZWJDb3Jl
OjpNZWRpYVBsYXllckVudW1zOjpSZWFkeVN0YXRlKTsKIAogICAgIEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIG1fY29ubmVjdGlvblRvV2ViUHJvY2VzczsKICAgICBSZW1vdGVNZWRpYVNvdXJj
ZUlkZW50aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNvdXJj
ZVByaXZhdGU+IG1fcHJpdmF0ZTsKICAgICBXZWFrUHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+
IG1fcmVtb3RlTWVkaWFQbGF5ZXJQcm94eTsKIAorICAgIE1lZGlhVGltZSBtX2R1cmF0aW9uOwor
CiAgICAgVmVjdG9yPFJlZlB0cjxSZW1vdGVTb3VyY2VCdWZmZXJQcm94eT4+IG1fc291cmNlQnVm
ZmVyczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVNvdXJjZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkubWVzc2FnZXMuaW4KaW5kZXggY2E2Yjc1
MmQ3NzA2MGRlY2NiOWRjM2JjNzk2NDg5ZjRlYzkyMGRhZC4uZDk5OTEyNjg4ZWJiMGQ1OWFkY2Ri
NTM3Y2U4MzVlZmU3OTZlOWY2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkubWVzc2FnZXMuaW4K
QEAgLTI3LDYgKzI3LDggQEAKIAogbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFTb3VyY2VQcm94eSBO
b3RSZWZDb3VudGVkIHsKICAgICBBZGRTb3VyY2VCdWZmZXIoV2ViQ29yZTo6Q29udGVudFR5cGUg
Y29udGVudFR5cGUpIC0+IChlbnVtOnVpbnQ4X3QgV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRl
OjpBZGRTdGF0dXMgc3RhdHVzLCBPcHRpb25hbDxXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlcklk
ZW50aWZpZXI+IHJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpIFN5bmNocm9ub3VzCisgICAg
RHVyYXRpb25DaGFuZ2VkKE1lZGlhVGltZSBkdXJhdGlvbikKKyAgICBTZXRSZWFkeVN0YXRlKFdl
YkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKIH0KIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291
cmNlQnVmZmVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcAppbmRleCAyNjViNzNiNmE0ZGYzNTNmNDUzZGI3MjNjYzMy
OThiYzc4NWIyYzc0Li44NDczM2ZjMGFiNDliNjM1NTc3MTkwYThiYWU5MmVkY2RiODYxZmRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVm
ZmVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVT
b3VyY2VCdWZmZXJQcm94eS5jcHAKQEAgLTM0LDcgKzM0LDkgQEAKICNpbmNsdWRlICJSZW1vdGVN
ZWRpYVBsYXllclByb3h5LmgiCiAjaW5jbHVkZSAiUmVtb3RlU291cmNlQnVmZmVyUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgor
I2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFEZXNjcmlwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
Tm90SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtVGltZVJhbmdlcy5o
PgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIApAQCAtNTQsMTQgKzU2LDE2IEBAIFJlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eShHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiBjb25uCiB7CiAgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLm1lc3NhZ2VSZWNl
aXZlck1hcCgpLmFkZE1lc3NhZ2VSZWNlaXZlcihNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVy
UHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwgbV9pZGVudGlmaWVyLnRvVUludDY0KCksICp0
aGlzKTsKICAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPnNldENsaWVudCh0aGlzKTsKKyAgICBt
X3NvdXJjZUJ1ZmZlclByaXZhdGUtPnNldElzQXR0YWNoZWQodHJ1ZSk7CiB9CiAKIFJlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5Ojp+UmVtb3RlU291cmNlQnVmZmVyUHJveHkoKQogeworICAgIG1fc291
cmNlQnVmZmVyUHJpdmF0ZS0+c2V0SXNBdHRhY2hlZChmYWxzZSk7CiAgICAgbV9jb25uZWN0aW9u
VG9XZWJQcm9jZXNzLm1lc3NhZ2VSZWNlaXZlck1hcCgpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihN
ZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6Om1lc3NhZ2VSZWNlaXZlck5hbWUoKSwg
bV9pZGVudGlmaWVyLnRvVUludDY0KCkpOwogfQogCi12b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclBy
b3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChj
b25zdCBJbml0aWFsaXphdGlvblNlZ21lbnQmIHNlZ21lbnQpCit2b2lkIFJlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2Vn
bWVudChJbml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX3JlbW90ZU1lZGlhUGxh
eWVyUHJveHkpCiAgICAgICAgIHJldHVybjsKQEAgLTcxLDE5ICs3NSwzNCBAQCB2b2lkIFJlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxp
emF0aW9uU2VnbWVudAogICAgIGZvciAoYXV0byYgYXVkaW9UcmFja0luZm8gOiBzZWdtZW50LmF1
ZGlvVHJhY2tzKSB7CiAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IG1fcmVtb3RlTWVkaWFQbGF5
ZXJQcm94eS0+YWRkUmVtb3RlQXVkaW9UcmFja1Byb3h5KCphdWRpb1RyYWNrSW5mby50cmFjayk7
CiAgICAgICAgIHNlZ21lbnRJbmZvLmF1ZGlvVHJhY2tzLmFwcGVuZCh7IE1lZGlhRGVzY3JpcHRp
b25JbmZvKCphdWRpb1RyYWNrSW5mby5kZXNjcmlwdGlvbiksIGlkZW50aWZpZXIgfSk7CisKKyAg
ICAgICAgQVNTRVJUKCFtX3RyYWNrSWRzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICAgICAg
QVNTRVJUKCFtX21lZGlhRGVzY3JpcHRpb25zLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICAg
ICAgbV90cmFja0lkcy5hZGQoaWRlbnRpZmllciwgYXVkaW9UcmFja0luZm8udHJhY2stPmlkKCkp
OworICAgICAgICBtX21lZGlhRGVzY3JpcHRpb25zLmFkZChpZGVudGlmaWVyLCAqYXVkaW9UcmFj
a0luZm8uZGVzY3JpcHRpb24pOwogICAgIH0KIAogICAgIGZvciAoYXV0byYgdmlkZW9UcmFja0lu
Zm8gOiBzZWdtZW50LnZpZGVvVHJhY2tzKSB7CiAgICAgICAgIGF1dG8gaWRlbnRpZmllciA9IG1f
cmVtb3RlTWVkaWFQbGF5ZXJQcm94eS0+YWRkUmVtb3RlVmlkZW9UcmFja1Byb3h5KCp2aWRlb1Ry
YWNrSW5mby50cmFjayk7CiAgICAgICAgIHNlZ21lbnRJbmZvLnZpZGVvVHJhY2tzLmFwcGVuZCh7
IE1lZGlhRGVzY3JpcHRpb25JbmZvKCp2aWRlb1RyYWNrSW5mby5kZXNjcmlwdGlvbiksIGlkZW50
aWZpZXIgfSk7CisKKyAgICAgICAgQVNTRVJUKCFtX3RyYWNrSWRzLmNvbnRhaW5zKGlkZW50aWZp
ZXIpKTsKKyAgICAgICAgQVNTRVJUKCFtX21lZGlhRGVzY3JpcHRpb25zLmNvbnRhaW5zKGlkZW50
aWZpZXIpKTsKKyAgICAgICAgbV90cmFja0lkcy5hZGQoaWRlbnRpZmllciwgdmlkZW9UcmFja0lu
Zm8udHJhY2stPmlkKCkpOworICAgICAgICBtX21lZGlhRGVzY3JpcHRpb25zLmFkZChpZGVudGlm
aWVyLCAqdmlkZW9UcmFja0luZm8uZGVzY3JpcHRpb24pOwogICAgIH0KIAogICAgIGZvciAoYXV0
byYgdGV4dFRyYWNrSW5mbyA6IHNlZ21lbnQudGV4dFRyYWNrcykgewogICAgICAgICBhdXRvIGlk
ZW50aWZpZXIgPSBtX3JlbW90ZU1lZGlhUGxheWVyUHJveHktPmFkZFJlbW90ZVRleHRUcmFja1By
b3h5KCp0ZXh0VHJhY2tJbmZvLnRyYWNrKTsKICAgICAgICAgc2VnbWVudEluZm8udGV4dFRyYWNr
cy5hcHBlbmQoeyBNZWRpYURlc2NyaXB0aW9uSW5mbygqdGV4dFRyYWNrSW5mby5kZXNjcmlwdGlv
biksIGlkZW50aWZpZXIgfSk7CisKKyAgICAgICAgQVNTRVJUKCFtX3RyYWNrSWRzLmNvbnRhaW5z
KGlkZW50aWZpZXIpKTsKKyAgICAgICAgQVNTRVJUKCFtX21lZGlhRGVzY3JpcHRpb25zLmNvbnRh
aW5zKGlkZW50aWZpZXIpKTsKKyAgICAgICAgbV90cmFja0lkcy5hZGQoaWRlbnRpZmllciwgdGV4
dFRyYWNrSW5mby50cmFjay0+aWQoKSk7CisgICAgICAgIG1fbWVkaWFEZXNjcmlwdGlvbnMuYWRk
KGlkZW50aWZpZXIsICp0ZXh0VHJhY2tJbmZvLmRlc2NyaXB0aW9uKTsKICAgICB9CiAKLSAgICBt
X2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlh
bGl6YXRpb25TZWdtZW50KHNlZ21lbnRJbmZvKSwgbV9pZGVudGlmaWVyKTsKKyAgICBtX2Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2Vp
dmVJbml0aWFsaXphdGlvblNlZ21lbnQoc2VnbWVudEluZm8pLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94
eTo6c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZEVycm9yKGJvb2wpCkBAIC05MSwxNCArMTEwLDE0
IEBAIHZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBl
bmRFcnJvcihib29sKQogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUmVtb3RlU291
cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQoY29uc3Qg
TWVkaWFUaW1lJikKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclBy
aXZhdGVEdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbikKIHsKLSAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVy
UHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChkdXJhdGlvbiksIG1faWRlbnRpZmllcik7CiB9CiAKLXZv
aWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQYXJzZVNh
bXBsZShkb3VibGUpCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQ
cml2YXRlRGlkUGFyc2VTYW1wbGUoZG91YmxlIHNhbXBsZUR1cmF0aW9uKQogewotICAgIG5vdElt
cGxlbWVudGVkKCk7CisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2
YXRlRGlkUGFyc2VTYW1wbGUoc2FtcGxlRHVyYXRpb24pLCBtX2lkZW50aWZpZXIpOwogfQogCiB2
b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkRHJvcFNh
bXBsZSgpCkBAIC0xMTEsMjYgKzEzMCwyNCBAQCB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
Ojpzb3VyY2VCdWZmZXJQcml2YXRlU3RyZWFtRW5kZWRXaXRoRGVjb2RlRXJyb3IoKQogICAgIG5v
dEltcGxlbWVudGVkKCk7CiB9CiAKLWJvb2wgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJj
ZUJ1ZmZlclByaXZhdGVIYXNBdWRpbygpIGNvbnN0Cit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclBy
b3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudDo6QXBwZW5kUmVzdWx0IGFwcGVuZFJlc3VsdCkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiBmYWxzZTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShhcHBlbmRSZXN1bHQpLCBtX2lkZW50aWZpZXIp
OwogfQogCi1ib29sIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRl
SGFzVmlkZW8oKSBjb25zdAordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVm
ZmVyUHJpdmF0ZURpZFJlY2VpdmVSZW5kZXJpbmdFcnJvcihpbnQgZXJyb3JDb2RlKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFJlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoU291cmNl
QnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0IGFwcGVuZFJlc3VsdCkKK3ZvaWQgUmVt
b3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hh
bmdlZChib29sIGZsYWcpCiB7Ci0gICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoYXBwZW5kUmVzdWx0KSwgbV9pZGVudGlmaWVyKTsKKyAg
ICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5
Q2hhbmdlZChmbGFnKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVSZW5kZXJpbmdFcnJvcihpbnQg
ZXJyb3JDb2RlKQordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJp
dmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChjb25zdCBQbGF0Zm9ybVRpbWVSYW5nZXMmIHRpbWVS
YW5nZXMpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQodGltZVJhbmdlcyks
IG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OmFwcGVu
ZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmIGRhdGEpCkBAIC0xMzgsNiArMTU1LDQzIEBAIHZv
aWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OmFwcGVuZChjb25zdCBJUEM6OkRhdGFSZWZlcmVu
Y2UmIGRhdGEpCiAgICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlLT5hcHBlbmQoZGF0YS52ZWN0b3Io
KSk7CiB9CiAKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNldEFjdGl2ZShib29sIGFj
dGl2ZSkKK3sKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPnNldEFjdGl2ZShhY3RpdmUpOwor
fQorCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpzZXRSZWFkeVN0YXRlKFdlYkNvcmU6
Ok1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQoreworICAgIG1fc291cmNlQnVmZmVyUHJp
dmF0ZS0+c2V0UmVhZHlTdGF0ZShzdGF0ZSk7Cit9CisKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVy
UHJveHk6OnVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVmZmVycyhib29sIHNvdXJjZUlzRW5kZWQp
Cit7CisgICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlLT51cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1
ZmZlcnMoc291cmNlSXNFbmRlZCk7Cit9CisKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6
OmV2aWN0Q29kZWRGcmFtZXModWludDY0X3QgbmV3RGF0YVNpemUsIHVpbnQ2NF90IHBlbmRpbmdB
cHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplLCBjb25zdCBNZWRp
YVRpbWUmIGN1cnJlbnRUaW1lLCBjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uLCBib29sIGlzRW5k
ZWQpCit7CisgICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlLT5ldmljdENvZGVkRnJhbWVzKG5ld0Rh
dGFTaXplLCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCBtYXhpbXVtQnVmZmVyU2l6ZSwgY3Vy
cmVudFRpbWUsIGR1cmF0aW9uLCBpc0VuZGVkKTsKK30KKwordm9pZCBSZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eTo6YWRkVHJhY2tCdWZmZXIoVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFj
a1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyKQoreworICAgIEFTU0VSVChtX3RyYWNrSWRzLmNvbnRh
aW5zKHRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpKTsKKyAgICBBU1NFUlQobV9tZWRpYURl
c2NyaXB0aW9ucy5jb250YWlucyh0cmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyKSk7CisgICAg
bV9zb3VyY2VCdWZmZXJQcml2YXRlLT5hZGRUcmFja0J1ZmZlcihtX3RyYWNrSWRzLmdldCh0cmFj
a1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyKSwgbV9tZWRpYURlc2NyaXB0aW9ucy5nZXQodHJhY2tQ
cml2YXRlUmVtb3RlSWRlbnRpZmllcikpOworfQorCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclBy
b3h5OjpyZWVucXVldWVNZWRpYUlmTmVlZGVkKGNvbnN0IE1lZGlhVGltZSYgY3VycmVudE1lZGlh
VGltZSwgdWludDY0X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11
bUJ1ZmZlclNpemUpCit7CisgICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlLT5yZWVucXVldWVNZWRp
YUlmTmVlZGVkKGN1cnJlbnRNZWRpYVRpbWUsIHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIG1h
eGltdW1CdWZmZXJTaXplKTsKK30KKwordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6dHJ5
U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCgpCit7CisgICAgbV9zb3VyY2VCdWZmZXJQ
cml2YXRlLT50cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFC
TEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaAppbmRleCBiYzlmOTlkZmI3YTIzMGI1ODlh
ZTM0MmU1Y2QwNDc3MDc1ZjAyMTM4Li42ZWNkOGJjZjY4ZWViN2ZjYWIxMTVjNjljYTFjMTRkZmRj
NTJiNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
U291cmNlQnVmZmVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlU291cmNlQnVmZmVyUHJveHkuaApAQCAtMzAsNiArMzAsOCBAQAogI2luY2x1ZGUgIkdQ
VUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
ICNpbmNsdWRlICJSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiVHJh
Y2tQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgorI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFEZXNj
cmlwdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZS5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KQEAgLTQzLDEwICs0NSwxMiBAQCBjbGFzcyBEYXRhUmVmZXJlbmNlOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBNZWRpYVNhbXBsZTsKK2NsYXNzIFBsYXRmb3JtVGltZVJh
bmdlczsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0cnVjdCBNZWRpYURlc2NyaXB0aW9u
SW5mbzsKIGNsYXNzIFJlbW90ZU1lZGlhUGxheWVyUHJveHk7CiAKIGNsYXNzIFJlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5IGZpbmFsCkBAIC01OCwxNiArNjIsMTYgQEAgcHVibGljOgogICAgIHN0YXRp
YyBSZWY8UmVtb3RlU291cmNlQnVmZmVyUHJveHk+IGNyZWF0ZShHUFVDb25uZWN0aW9uVG9XZWJQ
cm9jZXNzJiwgUmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllciwgUmVmPFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGU+JiYsIFJlbW90ZU1lZGlhUGxheWVyUHJveHkmKTsKICAgICB2aXJ0dWFs
IH5SZW1vdGVTb3VyY2VCdWZmZXJQcm94eSgpOwogCi0gICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2
YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0aWFsaXphdGlvblNl
Z21lbnQmKSBmaW5hbDsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5p
dGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemF0aW9uU2VnbWVudCYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZVN0cmVh
bUVuZGVkV2l0aERlY29kZUVycm9yKCkgZmluYWw7CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2
YXRlQXBwZW5kRXJyb3IoYm9vbCBkZWNvZGVFcnJvcikgZmluYWw7CisgICAgdm9pZCBzb3VyY2VC
dWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUNs
aWVudDo6QXBwZW5kUmVzdWx0KSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVE
dXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CiAgICAgdm9pZCBzb3VyY2VC
dWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoZG91YmxlIHNhbXBsZUR1cmF0aW9uKSBmaW5hbDsK
ICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWREcm9wU2FtcGxlKCkgZmluYWw7Ci0gICAg
dm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlU3RyZWFtRW5kZWRXaXRoRGVjb2RlRXJyb3IoKSBmaW5h
bDsKLSAgICBib29sIHNvdXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRpbygpIGNvbnN0IGZpbmFsOwot
ICAgIGJvb2wgc291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKCkgY29uc3QgZmluYWw7CisgICAg
dm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCkgZmluYWw7
CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2VkKGNvbnN0
IFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdlcyYpIGZpbmFsOwogCi0gICAgdm9pZCBzb3VyY2VC
dWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUNs
aWVudDo6QXBwZW5kUmVzdWx0KSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVE
aWRSZWNlaXZlUmVuZGVyaW5nRXJyb3IoaW50IGVycm9yQ29kZSkgZmluYWw7CiAKIHByaXZhdGU6
CkBAIC03NywxMiArODEsMjIgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdl
KElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogICAgIC8vIHZvaWQgZGlk
UmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6
dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKKyAgICB2b2lkIHNldEFjdGl2ZShi
b29sKTsKICAgICB2b2lkIGFwcGVuZChjb25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKTsKKyAgICB2
b2lkIHNldFJlYWR5U3RhdGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpOworICAg
IHZvaWQgdXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCk7
CisgICAgdm9pZCBldmljdENvZGVkRnJhbWVzKHVpbnQ2NF90IG5ld0RhdGFTaXplLCB1aW50NjRf
dCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSwg
Y29uc3QgTWVkaWFUaW1lJiBjdXJyZW50VGltZSwgY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbiwg
Ym9vbCBpc0VuZGVkKTsKKyAgICB2b2lkIGFkZFRyYWNrQnVmZmVyKFRyYWNrUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIpOworICAgIHZvaWQgcmVlbnF1ZXVlTWVkaWFJZk5lZWRlZChjb25zdCBNZWRp
YVRpbWUmIGN1cnJlbnRNZWRpYVRpbWUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNp
dHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplKTsKKyAgICB2b2lkIHRyeVNpZ25hbEFsbFNh
bXBsZXNJblRyYWNrRW5xdWV1ZWQoKTsKIAogICAgIEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IG1fY29ubmVjdGlvblRvV2ViUHJvY2VzczsKICAgICBSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlm
aWVyIG1faWRlbnRpZmllcjsKICAgICBSZWY8V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZT4g
bV9zb3VyY2VCdWZmZXJQcml2YXRlOwogICAgIFdlYWtQdHI8UmVtb3RlTWVkaWFQbGF5ZXJQcm94
eT4gbV9yZW1vdGVNZWRpYVBsYXllclByb3h5OworCisgICAgSGFzaE1hcDxUcmFja1ByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyLCBBdG9tU3RyaW5nPiBtX3RyYWNrSWRzOworICAgIEhhc2hNYXA8VHJh
Y2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgUmVmPFdlYkNvcmU6Ok1lZGlhRGVzY3JpcHRpb24+
PiBtX21lZGlhRGVzY3JpcHRpb25zOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVy
UHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
U291cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYTA4ZmYwMWRhMzBkMDY3YjllNDFm
YjVhMTEzZTdiYTQzZmUwZTAxNy4uZjQxZmRlNGU3OWZhNzA5YzIzOGRjMjc3NDZkOTA4NGZmODAx
NGE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjYsNyArMjYs
MTQgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAK
IG1lc3NhZ2VzIC0+IFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5IE5vdFJlZkNvdW50ZWQgeworICAg
IFNldEFjdGl2ZShib29sIGFjdGl2ZSkKICAgICBBcHBlbmQoSVBDOjpEYXRhUmVmZXJlbmNlIGRh
dGEpCisgICAgU2V0UmVhZHlTdGF0ZShXZWJDb3JlOjpNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBz
dGF0ZSkKKyAgICBVcGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0Vu
ZGVkKQorICAgIEV2aWN0Q29kZWRGcmFtZXModWludDY0X3QgbmV3RGF0YVNpemUsIHVpbnQ2NF90
IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplLCBN
ZWRpYVRpbWUgY3VycmVudFRpbWUsIE1lZGlhVGltZSBkdXJhdGlvbiwgYm9vbCBpc0VuZGVkKQor
ICAgIEFkZFRyYWNrQnVmZmVyKFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0
cmFja0lkKQorICAgIFJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQoTWVkaWFUaW1lIGN1cnJlbnRNZWRp
YVRpbWUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGlt
dW1CdWZmZXJTaXplKQorICAgIFRyeVNpZ25hbEFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoKQog
fQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCmluZGV4IDY3NDQ4ZTlhNzQ4ZjE4YWRhNDUyNTkwOWJh
MmNkMzE0MGIyMjUxZWQuLjEzMjE1YTY3Mzk3YzBjY2Y4ODc0ZmI0YWFmMTAwODNkMzBiMTIxYTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJh
Y2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRl
eHRUcmFja1Byb3h5LmNwcApAQCAtNjQsNyArNjQsNyBAQCBUZXh0VHJhY2tQcml2YXRlUmVtb3Rl
Q29uZmlndXJhdGlvbiYgUmVtb3RlVGV4dFRyYWNrUHJveHk6OmNvbmZpZ3VyYXRpb24oKQogewog
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJh
dGlvbj4gY29uZmlndXJhdGlvbjsKIAotICAgIGNvbmZpZ3VyYXRpb24tPmlkZW50aWZpZXIgPSBt
X3RyYWNrUHJpdmF0ZS0+aWQoKTsKKyAgICBjb25maWd1cmF0aW9uLT50cmFja0lkID0gbV90cmFj
a1ByaXZhdGUtPmlkKCk7CiAgICAgY29uZmlndXJhdGlvbi0+bGFiZWwgPSBtX3RyYWNrUHJpdmF0
ZS0+bGFiZWwoKTsKICAgICBjb25maWd1cmF0aW9uLT5sYW5ndWFnZSA9IG1fdHJhY2tQcml2YXRl
LT5sYW5ndWFnZSgpOwogICAgIGNvbmZpZ3VyYXRpb24tPnRyYWNrSW5kZXggPSBtX3RyYWNrUHJp
dmF0ZS0+dHJhY2tJbmRleCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5LmNwcAppbmRleCAzNTBmOGVhNzMwN2JkMjM3
YWE4M2Y2Y2M5NDViNTYxMGRmNmYxYzcxLi5iOTJhODRlM2E5YjY4YWM2YzRmMmFmMzQyNmFlZDdh
Nzk0MTJkYWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVmlkZW9UcmFja1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5LmNwcApAQCAtNjAsNyArNjAsNyBAQCBUcmFja1ByaXZh
dGVSZW1vdGVDb25maWd1cmF0aW9uJiBSZW1vdGVWaWRlb1RyYWNrUHJveHk6OmNvbmZpZ3VyYXRp
b24oKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxUcmFja1ByaXZhdGVSZW1vdGVDb25m
aWd1cmF0aW9uPiBjb25maWd1cmF0aW9uOwogCi0gICAgY29uZmlndXJhdGlvbi0+aWRlbnRpZmll
ciA9IG1fdHJhY2tQcml2YXRlLT5pZCgpOworICAgIGNvbmZpZ3VyYXRpb24tPnRyYWNrSWQgPSBt
X3RyYWNrUHJpdmF0ZS0+aWQoKTsKICAgICBjb25maWd1cmF0aW9uLT5sYWJlbCA9IG1fdHJhY2tQ
cml2YXRlLT5sYWJlbCgpOwogICAgIGNvbmZpZ3VyYXRpb24tPmxhbmd1YWdlID0gbV90cmFja1By
aXZhdGUtPmxhbmd1YWdlKCk7CiAgICAgY29uZmlndXJhdGlvbi0+dHJhY2tJbmRleCA9IG1fdHJh
Y2tQcml2YXRlLT50cmFja0luZGV4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJh
dGlvbi5oCmluZGV4IGMxMzljZmMxNGI0NzFmYjI1OGRiYmU4MTgyYjNkNWM2MjE2MmI1OTIuLjY1
NjA1YjAxYTEyODZjMzEyOTdlYmM2MGNlMGZjODUwNWI1MjJlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJh
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9UZXh0VHJhY2tQcml2
YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oCkBAIC0zNCw3ICszNCw3IEBACiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAogc3RydWN0IFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIHsKLSAg
ICBBdG9tU3RyaW5nIGlkZW50aWZpZXI7CisgICAgQXRvbVN0cmluZyB0cmFja0lkOwogICAgIEF0
b21TdHJpbmcgbGFiZWw7CiAgICAgQXRvbVN0cmluZyBsYW5ndWFnZTsKICAgICBBdG9tU3RyaW5n
IGluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGU7CkBAIC01NSw3ICs1NSw3IEBAIHN0cnVj
dCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7CiAgICAgdGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4KICAgICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAg
IHsKLSAgICAgICAgZW5jb2RlciA8PCBpZGVudGlmaWVyOworICAgICAgICBlbmNvZGVyIDw8IHRy
YWNrSWQ7CiAgICAgICAgIGVuY29kZXIgPDwgbGFiZWw7CiAgICAgICAgIGVuY29kZXIgPDwgbGFu
Z3VhZ2U7CiAgICAgICAgIGVuY29kZXIgPDwgaW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlw
ZTsKQEAgLTc1LDkgKzc1LDkgQEAgc3RydWN0IFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1
cmF0aW9uIHsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KICAgICBzdGF0aWMgT3B0aW9u
YWw8VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24+IGRlY29kZShEZWNvZGVyJiBk
ZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gaWRlbnRpZmllcjsK
LSAgICAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwotICAgICAgICBpZiAoIWlkZW50aWZpZXIp
CisgICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IHRyYWNrSWQ7CisgICAgICAgIGRlY29kZXIg
Pj4gdHJhY2tJZDsKKyAgICAgICAgaWYgKCF0cmFja0lkKQogICAgICAgICAgICAgcmV0dXJuIFdU
Rjo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxBdG9tU3RyaW5nPiBsYWJlbDsKQEAgLTE1
MSw3ICsxNTEsNyBAQCBzdHJ1Y3QgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24g
ewogICAgICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4ge3sK
LSAgICAgICAgICAgIFdURk1vdmUoKmlkZW50aWZpZXIpLAorICAgICAgICAgICAgV1RGTW92ZSgq
dHJhY2tJZCksCiAgICAgICAgICAgICBXVEZNb3ZlKCpsYWJlbCksCiAgICAgICAgICAgICBXVEZN
b3ZlKCpsYW5ndWFnZSksCiAgICAgICAgICAgICBXVEZNb3ZlKCppbkJhbmRNZXRhZGF0YVRyYWNr
RGlzcGF0Y2hUeXBlKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9UcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oCmluZGV4IDQ0NDIy
YjMwMTRmMjAyMjE2YmVkNmE1N2EzZjhlZGQ3OTQ4ZTkyNDYuLmE4ZjA1ZDE4ZmQ5OTg4ZWJiOTlj
NzY3M2I2ODdhNjcwZDkyZTAxNDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9UcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1RyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaApA
QCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBUcmFja1ByaXZh
dGVSZW1vdGVDb25maWd1cmF0aW9uIHsKLSAgICBBdG9tU3RyaW5nIGlkZW50aWZpZXI7CisgICAg
QXRvbVN0cmluZyB0cmFja0lkOwogICAgIEF0b21TdHJpbmcgbGFiZWw7CiAgICAgQXRvbVN0cmlu
ZyBsYW5ndWFnZTsKICAgICBNZWRpYVRpbWUgc3RhcnRUaW1lVmFyaWFuY2UgeyBNZWRpYVRpbWU6
Onplcm9UaW1lKCkgfTsKQEAgLTQ5LDcgKzQ5LDcgQEAgc3RydWN0IFRyYWNrUHJpdmF0ZVJlbW90
ZUNvbmZpZ3VyYXRpb24gewogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiAgICAgdm9pZCBl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICB7Ci0gICAgICAgIGVuY29kZXIgPDwg
aWRlbnRpZmllcjsKKyAgICAgICAgZW5jb2RlciA8PCB0cmFja0lkOwogICAgICAgICBlbmNvZGVy
IDw8IGxhYmVsOwogICAgICAgICBlbmNvZGVyIDw8IGxhbmd1YWdlOwogICAgICAgICBlbmNvZGVy
IDw8IHN0YXJ0VGltZVZhcmlhbmNlOwpAQCAtNjMsOSArNjMsOSBAQCBzdHJ1Y3QgVHJhY2tQcml2
YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7CiAgICAgdGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CiAg
ICAgc3RhdGljIE9wdGlvbmFsPFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24+IGRlY29k
ZShEZWNvZGVyJiBkZWNvZGVyKQogICAgIHsKLSAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4g
aWRlbnRpZmllcjsKLSAgICAgICAgZGVjb2RlciA+PiBpZGVudGlmaWVyOwotICAgICAgICBpZiAo
IWlkZW50aWZpZXIpCisgICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IHRyYWNrSWQ7CisgICAg
ICAgIGRlY29kZXIgPj4gdHJhY2tJZDsKKyAgICAgICAgaWYgKCF0cmFja0lkKQogICAgICAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgICAgICBPcHRpb25hbDxBdG9tU3RyaW5nPiBs
YWJlbDsKQEAgLTEwOSw3ICsxMDksNyBAQCBzdHJ1Y3QgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmln
dXJhdGlvbiB7CiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgICAgIHJl
dHVybiB7ewotICAgICAgICAgICAgV1RGTW92ZSgqaWRlbnRpZmllciksCisgICAgICAgICAgICBX
VEZNb3ZlKCp0cmFja0lkKSwKICAgICAgICAgICAgIFdURk1vdmUoKmxhYmVsKSwKICAgICAgICAg
ICAgIFdURk1vdmUoKmxhbmd1YWdlKSwKICAgICAgICAgICAgIFdURk1vdmUoKnN0YXJ0VGltZVZh
cmlhbmNlKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
QXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQ
VS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggNzIxYzBhYTkyMDcyNGU5
YjMzYjU4NjUzMDMxMzdiNmNhNTQ5MDBhMC4uZTJhM2U5MDFhZmY0ZTY0MTQxYmZjOTljNmYwYzQ1
NzI5YjFkOGJjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTUzLDkgKzUzLDkg
QEAgdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZTo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQp
CiAKIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVSZW1vdGU6OnVwZGF0ZUNvbmZpZ3VyYXRpb24oVHJh
Y2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgaWYg
KGNvbmZpZ3VyYXRpb24uaWRlbnRpZmllciAhPSBtX2lkKSB7CisgICAgaWYgKGNvbmZpZ3VyYXRp
b24udHJhY2tJZCAhPSBtX2lkKSB7CiAgICAgICAgIGF1dG8gY2hhbmdlZCA9ICFtX2lkLmlzRW1w
dHkoKTsKLSAgICAgICAgbV9pZCA9IGNvbmZpZ3VyYXRpb24uaWRlbnRpZmllcjsKKyAgICAgICAg
bV9pZCA9IGNvbmZpZ3VyYXRpb24udHJhY2tJZDsKICAgICAgICAgaWYgKGNoYW5nZWQgJiYgY2xp
ZW50KCkpCiAgICAgICAgICAgICBjbGllbnQoKS0+aWRDaGFuZ2VkKG1faWQpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1By
aXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9U
cmFja1ByaXZhdGVSZW1vdGUuaAppbmRleCA1M2RjOWJlMzNjOWJmYzBkYzRhN2IwMWZjMWYxMDFm
OWU4NzZhNWM1Li5jZjdjMGU5M2VmNDZmNDkwMWNlY2M1ZjlmN2E4ZTYxZTNmMTZiM2ZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2
YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRp
b1RyYWNrUHJpdmF0ZVJlbW90ZS5oCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUoY29ubmVjdGlvbiwg
aWRlbmRpZmllciwgV1RGTW92ZShjb25maWd1cmF0aW9uKSkpOwogICAgIH0KIAorICAgIEF0b21T
dHJpbmcgaWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkOyB9CiAgICAgdm9pZCB1cGRhdGVD
b25maWd1cmF0aW9uKFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24mJik7CiAKIHByaXZh
dGU6CkBAIC01NSw3ICs1Niw2IEBAIHByaXZhdGU6CiAKICAgICB1c2luZyBBdWRpb1RyYWNrS2lu
ZCA9IFdlYkNvcmU6OkF1ZGlvVHJhY2tQcml2YXRlOjpLaW5kOwogICAgIEF1ZGlvVHJhY2tLaW5k
IGtpbmQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2tpbmQ7IH0KLSAgICBBdG9tU3RyaW5nIGlk
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9pZDsgfQogICAgIEF0b21TdHJpbmcgbGFiZWwoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX2xhYmVsOyB9CiAgICAgQXRvbVN0cmluZyBsYW5ndWFnZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbGFuZ3VhZ2U7IH0KICAgICBpbnQgdHJhY2tJbmRleCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fdHJhY2tJbmRleDsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUuY3BwCmluZGV4IDZkZGVlODdhYmRjYzc2Zjg2OWFkNTU0ZGI1MTEyYjM2YjgyZjJkNmIu
LjcxMzIxZTZiZTYwMDQ4MzhjM2I2MzVkMGVmZGM0YzFlZjY4OTMyM2UgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTYzMyw3ICs2MzMsMTAgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRUeXBlJiBjb250
ZW50VHkKIHsKICAgICBpZiAobV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyID09IE1lZGlhUGxheWVy
RW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uTVNFKSB7CiAgICAgICAg
IGF1dG8gaWRlbnRpZmllciA9IFJlbW90ZU1lZGlhU291cmNlSWRlbnRpZmllcjo6Z2VuZXJhdGUo
KTsKLSAgICAgICAgY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUGxheWVy
UHJveHk6OkxvYWRNZWRpYVNvdXJjZSh1cmwsIGNvbnRlbnRUeXBlLCBpZGVudGlmaWVyKSwgbV9p
ZCk7CisgICAgICAgIGNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhUGxheWVyUHJveHk6OkxvYWRNZWRpYVNvdXJjZSh1cmwsIGNvbnRlbnRUeXBlLCBp
ZGVudGlmaWVyKSwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXShhdXRvJiYgY29uZmln
dXJhdGlvbikgeworICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAgICAgICAgIHdl
YWtUaGlzLT5tX2NvbmZpZ3VyYXRpb24gPSBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pOworICAgICAg
ICB9LCBtX2lkKTsKICAgICAgICAgbV9tZWRpYVNvdXJjZVByaXZhdGUgPSBNZWRpYVNvdXJjZVBy
aXZhdGVSZW1vdGU6OmNyZWF0ZShtX21hbmFnZXIuZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24oKSwgaWRl
bnRpZmllciwgbV9tYW5hZ2VyLnR5cGVDYWNoZShtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIpLCAq
dGhpcywgY2xpZW50KTsKIAogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90
ZS5jcHAKaW5kZXggMGFjNzg3MjBiYWM0ZDQyOGQxMjQ3MDQ4OTg2NTkzOTM4ZmY3ODVkYS4uNTAz
MjI1MmJmNTBmMTYyNDViMTVmZTRlMGYyZmMxOTJkZTUxODU0OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2
YXRlUmVtb3RlLmNwcApAQCAtMTAzLDkgKzEwMyw5IEBAIE1lZGlhU291cmNlUHJpdmF0ZTo6QWRk
U3RhdHVzIE1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6YWRkU291cmNlQnVmZmVyKGNvbnN0IENv
CiAgICAgcmV0dXJuIHN0YXR1czsKIH0KIAotdm9pZCBNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6
OmR1cmF0aW9uQ2hhbmdlZCgpCit2b2lkIE1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6ZHVyYXRp
b25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpEdXJhdGlvbkNoYW5nZWQoZHVyYXRpb24pLCBt
X2lkZW50aWZpZXIpOwogfQogCiB2b2lkIE1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6bWFya0Vu
ZE9mU3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVzKQpAQCAtMTE4LDE0ICsxMTgsMjAgQEAgdm9pZCBN
ZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OnVubWFya0VuZE9mU3RyZWFtKCkKICAgICBub3RJbXBs
ZW1lbnRlZCgpOwogfQogCitib29sIE1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6aXNFbmRlZCgp
IGNvbnN0Cit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIE1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6cmVhZHlT
dGF0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fbWVkaWFQbGF5ZXJQcml2YXRlID8gbV9tZWRp
YVBsYXllclByaXZhdGUtPnJlYWR5U3RhdGUoKSA6IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpI
YXZlTm90aGluZzsKIH0KIAotdm9pZCBNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OnNldFJlYWR5
U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpCit2b2lkIE1lZGlhU291cmNlUHJpdmF0ZVJl
bW90ZTo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKQog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi5jb25u
ZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6U2V0UmVhZHlT
dGF0ZShyZWFkeVN0YXRlKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBNZWRpYVNvdXJjZVBy
aXZhdGVSZW1vdGU6OndhaXRGb3JTZWVrQ29tcGxldGVkKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90
ZS5oCmluZGV4IDc3ODM0ZjdhMTlkY2IwYjk0ZWQ1MmY2NjgwMGU2MDVjMzE1MzQ3OTkuLjY0Zjcz
ODViMjkyOWY5ZjMwNGI0MmM4YTM2ZTJiMjU3NjJmOWU4ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVS
ZW1vdGUuaApAQCAtNTYsOSArNTYsMTAgQEAgcHVibGljOgogCiAgICAgLy8gTWVkaWFTb3VyY2VQ
cml2YXRlIG92ZXJyaWRlcwogICAgIEFkZFN0YXR1cyBhZGRTb3VyY2VCdWZmZXIoY29uc3QgV2Vi
Q29yZTo6Q29udGVudFR5cGUmLCBSZWZQdHI8V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZT4m
KSBmaW5hbDsKLSAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZCgpIGZpbmFsOworICAgIHZvaWQgZHVy
YXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOwogICAgIHZvaWQgbWFya0VuZE9m
U3RyZWFtKEVuZE9mU3RyZWFtU3RhdHVzKSBmaW5hbDsKICAgICB2b2lkIHVubWFya0VuZE9mU3Ry
ZWFtKCkgZmluYWw7CisgICAgYm9vbCBpc0VuZGVkKCkgY29uc3QgZmluYWw7CiAgICAgV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0IGZpbmFsOwogICAg
IHZvaWQgc2V0UmVhZHlTdGF0ZShXZWJDb3JlOjpNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSkgZmlu
YWw7CiAgICAgdm9pZCB3YWl0Rm9yU2Vla0NvbXBsZXRlZCgpIGZpbmFsOwpAQCAtNzksNiArODAs
OCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGVDbGll
bnQ+IG1fY2xpZW50OwogICAgIFZlY3RvcjxSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZT4+IG1fc291cmNlQnVmZmVyczsKIAorICAgIE1lZGlhVGltZSBtX2R1cmF0aW9uOworCiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgY29uc3QgY2hhciogbG9nQ2xhc3NOYW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gIk1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZSI7IH0KICAgICBj
b25zdCB2b2lkKiBsb2dJZGVudGlmaWVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sb2dJZGVu
dGlmaWVyOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA2MzJlMDBmYjE1
MmQwZmQ3NDY1NzZlMzRjYWZiZjllMmI0NjNiZjdkLi42ZWRlNDIyYTljOTQzNzJmNDJkNDBhNmJm
MzFkYzY1YWEzMWNiNTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTM1
LDYgKzM1LDcgQEAKICNpbmNsdWRlICJSZW1vdGVTb3VyY2VCdWZmZXJQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1U
aW1lUmFuZ2VzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCkBAIC0xMDAsMTcgKzEwMSwxNSBAQCBNZWRpYVBs
YXllcjo6UmVhZHlTdGF0ZSBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpyZWFkeVN0YXRlKCkg
Y29uc3QKICAgICByZXR1cm4gbV9tZWRpYVBsYXllclByaXZhdGUgPyBtX21lZGlhUGxheWVyUHJp
dmF0ZS0+cmVhZHlTdGF0ZSgpIDogTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5n
OwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNldFJlYWR5U3RhdGUoTWVk
aWFQbGF5ZXI6OlJlYWR5U3RhdGUpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNl
dFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3RhdGUpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KKyAgICBpZiAoIW1fbWVkaWFTb3VyY2VQcml2YXRlKQorICAgICAgICBy
ZXR1cm47CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6Zmx1c2goY29uc3QgQXRv
bVN0cmluZyYgdHJhY2tJRCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5OjpTZXRSZWFkeVN0YXRlKHN0YXRlKSwgbV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVu
dGlmaWVyKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjplbnF1ZXVlU2Ft
cGxlKFJlZjxNZWRpYVNhbXBsZT4mJiwgY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkKK3ZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6Zmx1c2goY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJ
RCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQpAQCAtMTIwLDkgKzExOSwxMyBAQCBib29s
IFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmlzUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBB
dG9tU3RyaW5nJiB0cmFja0lEKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlOjpzZXRBY3RpdmUoYm9vbCkKK3ZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZTo6c2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgaWYgKCFtX21lZGlhU291cmNlUHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9pc0FjdGl2ZSA9IGFjdGl2ZTsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6U2V0QWN0aXZl
KGFjdGl2ZSksIG1fcmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcik7CiB9CiAKIHZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6bm90aWZ5Q2xpZW50V2hlblJlYWR5Rm9yTW9yZVNhbXBs
ZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkKQEAgLTE1MSw3ICsxNTQsMzYgQEAgYm9vbCBT
b3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpjYW5Td2l0Y2hUb1R5cGUoY29uc3QgQ29udGVudFR5
cGUmKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJ
bml0aWFsaXphdGlvblNlZ21lbnRJbmZvJiYgc2VnbWVudEluZm8pCit2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVSZW1vdGU6OnVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVmZmVycyhib29sIHNvdXJj
ZUlzRW5kZWQpCit7CisgICAgaWYgKCFtX21lZGlhU291cmNlUHJpdmF0ZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OlVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVm
ZmVycyhzb3VyY2VJc0VuZGVkKSwgbV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyKTsKK30K
Kwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpldmljdENvZGVkRnJhbWVzKHVpbnQ2
NF90IG5ld0RhdGFTaXplLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50
NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50VGltZSwgY29u
c3QgTWVkaWFUaW1lJiBkdXJhdGlvbiwgYm9vbCBpc0VuZGVkKQoreworICAgIG1fZ3B1UHJvY2Vz
c0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5OjpFdmljdENvZGVkRnJhbWVzKG5ld0RhdGFTaXplLCBwZW5kaW5nQXBwZW5kRGF0YUNh
cGFjaXR5LCBtYXhpbXVtQnVmZmVyU2l6ZSwgY3VycmVudFRpbWUsIGR1cmF0aW9uLCBpc0VuZGVk
KSwgbV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyKTsKK30KKwordm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlOjphZGRUcmFja0J1ZmZlcihjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lk
LCBSZWZQdHI8TWVkaWFEZXNjcmlwdGlvbj4mJikKK3sKKyAgICBBU1NFUlQobV90cmFja0lkZW50
aWZpZXJNYXAuY29udGFpbnModHJhY2tJZCkpOworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24u
Y29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpBZGRU
cmFja0J1ZmZlcihtX3RyYWNrSWRlbnRpZmllck1hcC5nZXQodHJhY2tJZCkpLCBtX3JlbW90ZVNv
dXJjZUJ1ZmZlcklkZW50aWZpZXIpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGU6OnJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQoY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50TWVkaWFU
aW1lLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVt
QnVmZmVyU2l6ZSkKK3sKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6UmVlbnF1ZXVlTWVkaWFJZk5l
ZWRlZChjdXJyZW50TWVkaWFUaW1lLCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCBtYXhpbXVt
QnVmZmVyU2l6ZSksIG1fcmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcik7Cit9CisKK3ZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6dHJ5U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tFbnF1
ZXVlZCgpCit7CisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OlRyeVNpZ25hbEFsbFNhbXBsZXNJblRy
YWNrRW5xdWV1ZWQoKSwgbV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2
ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0aWFsaXphdGlvblNlZ21lbnRJbmZvJiYgc2VnbWVu
dEluZm8sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
ICAgICBpZiAoIW1fY2xpZW50IHx8ICFtX21lZGlhUGxheWVyUHJpdmF0ZSkKICAgICAgICAgcmV0
dXJuOwpAQCAtMTY0LDYgKzE5Niw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lCiAgICAgICAg
IGluZm8udHJhY2sgPSBtX21lZGlhUGxheWVyUHJpdmF0ZS0+YXVkaW9UcmFja1ByaXZhdGVSZW1v
dGUoYXVkaW9UcmFjay5pZGVudGlmaWVyKTsKICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IFJl
bW90ZU1lZGlhRGVzY3JpcHRpb246OmNyZWF0ZShhdWRpb1RyYWNrLmRlc2NyaXB0aW9uKTsKICAg
ICAgICAgc2VnbWVudC5hdWRpb1RyYWNrcy5hcHBlbmQoaW5mbyk7CisgICAgICAgIG1fdHJhY2tJ
ZGVudGlmaWVyTWFwLmFkZChpbmZvLnRyYWNrLT5pZCgpLCBhdWRpb1RyYWNrLmlkZW50aWZpZXIp
OwogICAgIH0KIAogICAgIGZvciAoYXV0byYgdmlkZW9UcmFjayA6IHNlZ21lbnRJbmZvLnZpZGVv
VHJhY2tzKSB7CkBAIC0xNzEsNiArMjA0LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWUKICAg
ICAgICAgaW5mby50cmFjayA9IG1fbWVkaWFQbGF5ZXJQcml2YXRlLT52aWRlb1RyYWNrUHJpdmF0
ZVJlbW90ZSh2aWRlb1RyYWNrLmlkZW50aWZpZXIpOwogICAgICAgICBpbmZvLmRlc2NyaXB0aW9u
ID0gUmVtb3RlTWVkaWFEZXNjcmlwdGlvbjo6Y3JlYXRlKHZpZGVvVHJhY2suZGVzY3JpcHRpb24p
OwogICAgICAgICBzZWdtZW50LnZpZGVvVHJhY2tzLmFwcGVuZChpbmZvKTsKKyAgICAgICAgbV90
cmFja0lkZW50aWZpZXJNYXAuYWRkKGluZm8udHJhY2stPmlkKCksIHZpZGVvVHJhY2suaWRlbnRp
Zmllcik7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiB0ZXh0VHJhY2sgOiBzZWdtZW50SW5mby50
ZXh0VHJhY2tzKSB7CkBAIC0xNzgsOSArMjEyLDEwIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21l
CiAgICAgICAgIGluZm8udHJhY2sgPSBtX21lZGlhUGxheWVyUHJpdmF0ZS0+dGV4dFRyYWNrUHJp
dmF0ZVJlbW90ZSh0ZXh0VHJhY2suaWRlbnRpZmllcik7CiAgICAgICAgIGluZm8uZGVzY3JpcHRp
b24gPSBSZW1vdGVNZWRpYURlc2NyaXB0aW9uOjpjcmVhdGUodGV4dFRyYWNrLmRlc2NyaXB0aW9u
KTsKICAgICAgICAgc2VnbWVudC50ZXh0VHJhY2tzLmFwcGVuZChpbmZvKTsKKyAgICAgICAgbV90
cmFja0lkZW50aWZpZXJNYXAuYWRkKGluZm8udHJhY2stPmlkKCksIHRleHRUcmFjay5pZGVudGlm
aWVyKTsKICAgICB9CiAKLSAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2Vp
dmVJbml0aWFsaXphdGlvblNlZ21lbnQoV1RGTW92ZShzZWdtZW50KSk7CisgICAgbV9jbGllbnQt
PnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KFdURk1v
dmUoc2VnbWVudCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUo
U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0IGFwcGVuZFJlc3VsdCkKQEAg
LTE4OSw2ICsyMjQsMzAgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VC
dWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoU291cmNlQnVmZmVyUHIKICAgICAgICAgbV9jbGll
bnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShhcHBlbmRSZXN1bHQpOwogfQog
Cit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJjZUJ1ZmZlclByaXZhdGVEdXJh
dGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbikKK3sKKyAgICBpZiAobV9jbGll
bnQpCisgICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25DaGFuZ2Vk
KGR1cmF0aW9uKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VC
dWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoZG91YmxlIHNhbXBsZUR1cmF0aW9uKQoreworICAg
IGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQ
YXJzZVNhbXBsZShzYW1wbGVEdXJhdGlvbik7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGJvb2wgZGly
dHkpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVy
UHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGRpcnR5KTsKK30KKwordm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2Vk
KGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdlcyYgdGltZVJhbmdlcykKK3sKKyAgICBp
ZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVy
ZWRSYW5nZXNDaGFuZ2VkKHRpbWVSYW5nZXMpOworfQorCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECiBXVEZMb2dDaGFubmVsJiBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpsb2dDaGFubmVs
KCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKaW5kZXggNGQwZTAzMDlhZDU5
ZDY5NGYxM2JjMTRjNDdjYmJhNGFmMmY3YTg2Mi4uNzYyZjYzYmY3ZDJiNzliZmVlYmZlMmFjZWE4
MjMzMTc0NTE5MDA0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmgKQEAgLTMwLDYgKzMw
LDcgQEAKICNpbmNsdWRlICJHUFVQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk1lc3Nh
Z2VSZWNlaXZlci5oIgogI2luY2x1ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIuaCIK
KyNpbmNsdWRlICJUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9Db250ZW50VHlwZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTWVkaWFTYW1wbGUuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1ZmZlclByaXZhdGUuaD4KQEAgLTQ2LDYgKzQ3LDEwIEBA
IGNsYXNzIENvbm5lY3Rpb247CiBjbGFzcyBEZWNvZGVyOwogfQogCituYW1lc3BhY2UgV2ViQ29y
ZSB7CitjbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXM7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBzdHJ1Y3QgSW5pdGlhbGl6YXRpb25TZWdtZW50SW5mbzsKQEAgLTc0LDI1ICs3OSw0MCBAQCBw
cml2YXRlOgogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUo
KSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldFJlYWR5U3RhdGUoV2ViQ29yZTo6TWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGUpIGZpbmFsOwogICAgIHZvaWQgZmx1c2goY29uc3QgQXRvbVN0cmluZyYg
dHJhY2tJRCkgZmluYWw7Ci0gICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFJlZjxXZWJDb3JlOjpNZWRp
YVNhbXBsZT4mJiwgY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkgZmluYWw7CiAgICAgYm9vbCBp
c1JlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkgZmluYWw7CiAg
ICAgdm9pZCBzZXRBY3RpdmUoYm9vbCkgZmluYWw7CisgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1faXNBY3RpdmU7IH0KICAgICB2b2lkIG5vdGlmeUNsaWVudFdoZW5S
ZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpIGZpbmFsOwogICAg
IGJvb2wgY2FuU2V0TWluaW11bVVwY29taW5nUHJlc2VudGF0aW9uVGltZShjb25zdCBBdG9tU3Ry
aW5nJikgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRNaW5pbXVtVXBjb21pbmdQcmVzZW50YXRp
b25UaW1lKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKICAgICB2
b2lkIGNsZWFyTWluaW11bVVwY29taW5nUHJlc2VudGF0aW9uVGltZShjb25zdCBBdG9tU3RyaW5n
JikgZmluYWw7CiAgICAgYm9vbCBjYW5Td2l0Y2hUb1R5cGUoY29uc3QgV2ViQ29yZTo6Q29udGVu
dFR5cGUmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVmZmVycyhi
b29sIHNvdXJjZUlzRW5kZWQpIGZpbmFsOworICAgIHZvaWQgZXZpY3RDb2RlZEZyYW1lcyh1aW50
NjRfdCBuZXdEYXRhU2l6ZSwgdWludDY0X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgdWlu
dDY0X3QgbWF4aW11bUJ1ZmZlclNpemUsIGNvbnN0IE1lZGlhVGltZSYgY3VycmVudFRpbWUsIGNv
bnN0IE1lZGlhVGltZSYgZHVyYXRpb24sIGJvb2wgaXNFbmRlZCkgZmluYWw7CisgICAgdm9pZCBh
ZGRUcmFja0J1ZmZlcihjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lkLCBSZWZQdHI8V2ViQ29yZTo6
TWVkaWFEZXNjcmlwdGlvbj4mJikgZmluYWw7CisgICAgdm9pZCByZWVucXVldWVNZWRpYUlmTmVl
ZGVkKGNvbnN0IE1lZGlhVGltZSYgY3VycmVudE1lZGlhVGltZSwgdWludDY0X3QgcGVuZGluZ0Fw
cGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUpIGZpbmFsOworICAg
IHZvaWQgdHJ5U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCgpIGZpbmFsOwogCiAgICAg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBm
aW5hbDsKLQotICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXph
dGlvblNlZ21lbnQoSW5pdGlhbGl6YXRpb25TZWdtZW50SW5mbyYmKTsKKyAgICB2b2lkIHNvdXJj
ZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemF0
aW9uU2VnbWVudEluZm8mJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lk
IHNvdXJjZUJ1ZmZlclByaXZhdGVTdHJlYW1FbmRlZFdpdGhEZWNvZGVFcnJvcigpOworICAgIHZv
aWQgc291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZEVycm9yKGJvb2wgZGVjb2RlRXJyb3IpOwogICAg
IHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCk7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQ
cml2YXRlRHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpOworICAgIHZvaWQgc291cmNl
QnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxlKGRvdWJsZSBzYW1wbGVEdXJhdGlvbik7CisgICAg
dm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkRHJvcFNhbXBsZSgpOworICAgIHZvaWQgc291cmNl
QnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVSZW5kZXJpbmdFcnJvcihpbnQgZXJyb3JDb2RlKTsKKyAg
ICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZChib29sIGRpcnR5
KTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQoY29u
c3QgV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzJik7CiAKICAgICBHUFVQcm9jZXNzQ29ubmVj
dGlvbiYgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbjsKICAgICBSZW1vdGVTb3VyY2VCdWZmZXJJZGVu
dGlmaWVyIG1fcmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcjsKICAgICBXZWFrUHRyPE1lZGlh
U291cmNlUHJpdmF0ZVJlbW90ZT4gbV9tZWRpYVNvdXJjZVByaXZhdGU7CiAgICAgV2Vha1B0cjxN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU+IG1fbWVkaWFQbGF5ZXJQcml2YXRlOwotICAgIFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OworCisg
ICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyPiBtX3Ry
YWNrSWRlbnRpZmllck1hcDsKKworICAgIGJvb2wgbV9pc0FjdGl2ZSB7IGZhbHNlIH07CiAKICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBMb2dnZXImIGxvZ2dlcigpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fbG9nZ2VyLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUubWVzc2Fn
ZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KaW5kZXggNDA2NDJmNjAzNmVmN2UxMWUyM2I4MGY1YTQ1
MWQ3NmYzZWQyOGM0ZS4uNmM4Y2NhMGZlODk3YzU5OWVjNGNlYjhhMmJlYTVhOWFhYmY0Njg2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgpAQCAtMjYs
OCArMjYsMTIgQEAKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJQV9TT1VS
Q0UpCiAKIG1lc3NhZ2VzIC0+IFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUgTm90UmVmQ291bnRl
ZCB7Ci0gICAgU291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21l
bnQoc3RydWN0IFdlYktpdDo6SW5pdGlhbGl6YXRpb25TZWdtZW50SW5mbyBzZWdtZW50Q29uZmln
dXJhdGlvbikKKyAgICBTb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9u
U2VnbWVudChzdHJ1Y3QgV2ViS2l0OjpJbml0aWFsaXphdGlvblNlZ21lbnRJbmZvIHNlZ21lbnRD
b25maWd1cmF0aW9uKSAtPiAoKSBBc3luYwogICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRD
b21wbGV0ZShXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQg
YXBwZW5kUmVzdWx0KQorICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQoTWVk
aWFUaW1lIGR1cmF0aW9uKQorICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBsZShk
b3VibGUgc2FtcGxlRHVyYXRpb24pCisgICAgU291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGly
dHlDaGFuZ2VkKGJvb2wgZGlydHkpCisgICAgU291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFu
Z2VzQ2hhbmdlZChXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXMgdGltZVJhbmdlcykKIH0KIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Rl
eHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcAppbmRleCA3MzIyM2I4Njg0MjEzYTBiZDhm
NzEyODJhOGU4ZGVhNjE1OTk1ZWMwLi4yYjU2ZmVkMjNkZWMzNTg1OWFiODU3ZTZmNmRmZmQ3OThl
MWFhZTExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Rl
eHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTU2LDkgKzU2LDkgQEAgdm9p
ZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjpzZXRNb2RlKFRleHRUcmFja01vZGUgbW9kZSkKIAog
dm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjp1cGRhdGVDb25maWd1cmF0aW9uKFRleHRUcmFj
a1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKIHsKLSAgICBpZiAo
Y29uZmlndXJhdGlvbi5pZGVudGlmaWVyICE9IG1faWQpIHsKKyAgICBpZiAoY29uZmlndXJhdGlv
bi50cmFja0lkICE9IG1faWQpIHsKICAgICAgICAgYXV0byBjaGFuZ2VkID0gIW1faWQuaXNFbXB0
eSgpOwotICAgICAgICBtX2lkID0gY29uZmlndXJhdGlvbi5pZGVudGlmaWVyOworICAgICAgICBt
X2lkID0gY29uZmlndXJhdGlvbi50cmFja0lkOwogICAgICAgICBpZiAoY2hhbmdlZCAmJiBjbGll
bnQoKSkKICAgICAgICAgICAgIGNsaWVudCgpLT5pZENoYW5nZWQobV9pZCk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9WaWRlb1RyYWNrUHJp
dmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1ZpZGVv
VHJhY2tQcml2YXRlUmVtb3RlLmNwcAppbmRleCBhYzZlYTAxNDI3MWMzMzEyNmNkNzUyYjNmZmQz
Yjc4NTQzOWRlNjU3Li4zNWU4ZTdkODM5YzcyODAxZjZhOTZmYmVkMjcyMDY0ZDRmZDY2ZjAxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1ZpZGVvVHJhY2tQ
cml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L1ZpZGVvVHJhY2tQcml2YXRlUmVtb3RlLmNwcApAQCAtNTIsOSArNTIsOSBAQCB2b2lkIFZpZGVv
VHJhY2tQcml2YXRlUmVtb3RlOjpzZXRTZWxlY3RlZChib29sIHNlbGVjdGVkKQogCiB2b2lkIFZp
ZGVvVHJhY2tQcml2YXRlUmVtb3RlOjp1cGRhdGVDb25maWd1cmF0aW9uKFRyYWNrUHJpdmF0ZVJl
bW90ZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQogewotICAgIGlmIChjb25maWd1cmF0
aW9uLmlkZW50aWZpZXIgIT0gbV9pZCkgeworICAgIGlmIChjb25maWd1cmF0aW9uLnRyYWNrSWQg
IT0gbV9pZCkgewogICAgICAgICBhdXRvIGNoYW5nZWQgPSAhbV9pZC5pc0VtcHR5KCk7Ci0gICAg
ICAgIG1faWQgPSBjb25maWd1cmF0aW9uLmlkZW50aWZpZXI7CisgICAgICAgIG1faWQgPSBjb25m
aWd1cmF0aW9uLnRyYWNrSWQ7CiAgICAgICAgIGlmIChjaGFuZ2VkICYmIGNsaWVudCgpKQogICAg
ICAgICAgICAgY2xpZW50KCktPmlkQ2hhbmdlZChtX2lkKTsKICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415699</attachid>
            <date>2020-12-08 18:43:02 -0800</date>
            <delta_ts>2020-12-08 20:33:02 -0800</delta_ts>
            <desc>Update the patch based on Jer&apos;s comment</desc>
            <filename>bug-219402-20201208184301.patch</filename>
            <type>text/plain</type>
            <size>122424</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RlYmRkNjNmYjkxNzM2
MTE4MDVlOWY1NDI4Zjk0YmExMWJiMWNlNy4uYTA2ZGRhNjZkNzkzMDNjZjVkZDdmY2E1MmE0MzNh
NDRmZTU3ZTRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAyMC0xMi0wOCAgUGVu
ZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUgUHJv
Y2Vzc11bTVNFXSBJbXBsZW1lbnQgYmFzaWMgdmlkZW8gcGxheWJhY2sKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkanVzdCB0aGUgaW1wbGVtZW50YXRp
b24gdG8gc3VwcG9ydCBiYXNpYyBtZWRpYSBwbGF5YmFjayB3aGVuIHRoZSBNU0UgbWVkaWEgcGxh
eWVyIHJ1bnMKKyAgICAgICAgaW4gdGhlIEdQVSBwcm9jZXNzLgorCisgICAgICAgICogTW9kdWxl
cy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNv
dXJjZTo6c2V0UHJpdmF0ZUFuZE9wZW4pOiBQcm9wYWdhdGUgdGhlIHRpbWUgZnVkZ2UgZmFjdG9y
IHRvCisgICAgICAgIGBNZWRpYVNvdXJjZVByaXZhdGVgIHNvIHRoYXQgYFNvdXJjZUJ1ZmZlclBy
aXZhdGVgIGNhbiB1c2UgaXQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0RHVy
YXRpb25JbnRlcm5hbCk6IFByb3BhZ2F0ZSB0aGUgZHVyYXRpb24gaW5mb3JtYXRpb24KKyAgICAg
ICAgdG8gYE1lZGlhU291cmNlUHJpdmF0ZWAgc28gdGhhdCBgU291cmNlQnVmZmVyUHJpdmF0ZWAg
Y2FuIHVzZSBpdC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU291cmNlOjpzdHJlYW1FbmRlZFdp
dGhFcnJvcik6IE1hcmsgdGhlIHN0cmVhbSBpcyBlbmQgaW4gYE1lZGlhU291cmNlUHJpdmF0ZWAu
CisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OlNvdXJjZUJ1ZmZlcik6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VCdWZmZXI6On5Tb3VyY2VCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyOjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZSk6IE1vdmUgdGhlIGNvZGUgdG8g
dXBkYXRlCisgICAgICAgIGBidWZmZXJlZGAgdG8gYFNvdXJjZUJ1ZmZlclByaXZhdGVgIHRvIG1h
a2Ugc3VyZSB0aGUgYGJ1ZmZlcmVkYCBhdHRyaWJ1dGUgaXMgdXBkYXRlZCB0aW1lbHkuCisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6Om1heGltdW1CdWZmZXJTaXplIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2Vp
dmVJbml0aWFsaXphdGlvblNlZ21lbnQpOiBBZGQgYSBjb21wbGV0aW9uSGFuZGxlcgorICAgICAg
ICBwYXJhbWV0ZXIgdG8gbm90aWZ5IHRoZSBjYWxsZXIgKGBTb3VyY2VCdWZmZXJQYXJzZXJgKSB0
aGF0IHRoZSB0cmFjayBidWZmZXIgbWFuYWdlciAoYFNvdXJjZUJ1ZmZlclByaXZhdGVgKQorICAg
ICAgICBoYXMgaGFuZGxlZCB0aGUgaW5pdGlhbGl6YXRpb24gc2VnbWVudCBhbmQgaXMgcmVhZHkg
dG8gcmVjZWl2ZSBtZWRpYSBzYW1wbGVzLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
OjpleHRyYU1lbW9yeUNvc3QgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
OjpyZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VC
dWZmZXI6OnNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3Jl
OjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZm
ZXJlZFJhbmdlc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjppc0J1
ZmZlcmVkRGlydHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpzZXRC
dWZmZXJlZERpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVm
ZmVyUHJpdmF0ZUhhc0F1ZGlvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICBT
b21lIHBhcmFtZXRlcnMgYW5kIHJldHVybiB2YWx1ZXMgYXJlIGNoYW5nZWQgZnJvbSBgc2l6ZV90
YCB0byBgdWludDY0X3RgIGJlY2F1c2UgdGhleQorICAgICAgICBuZWVkIHRvIHBhc3Mgd2l0aCBJ
UEMgbWVzc2FnZXMgd2hlbiB3ZSBydW4gdGhlIE1TRSBtZWRpYSBwbGF5ZXIgaW4gdGhlIEdQVSBw
cm9jZXNzLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU6OnNldFRpbWVGdWRnZUZh
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU6OnRpbWVGdWRnZUZh
Y3RvciBjb25zdCk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQ
cml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OnNldEJ1
ZmZlcmVkRGlydHkpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0
QnVmZmVyZWRSYW5nZXMpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6
dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGU6OmFwcGVuZENvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXJQcml2YXRlOjpidWZmZXJlZFNhbXBsZXNGb3JUcmFja0lEKToKKyAgICAgICAgKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OnByb3ZpZGVNZWRpYURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6cmVlbnF1ZXVlTWVkaWFGb3JUaW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OnJlZW5xdWV1ZU1lZGlhSWZOZWVk
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlU2FtcGxlc0Zyb21UcmFja0J1ZmZlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjpldmljdENvZGVkRnJhbWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OnRvdGFsVHJhY2tCdWZmZXJT
aXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
OjphZGRUcmFja0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
OjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVTYW1wbGUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGU6Omhhc0F1ZGlvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGU6Omhhc1ZpZGVvIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGU6OnN0YXJ0Q2hhbmdpbmdUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNv
dXJjZUJ1ZmZlclByaXZhdGU6OnNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRCk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjp0aW1lRnVkZ2VGYWN0b3IgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0QWN0aXZlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OnNldEN1cnJlbnRU
aW1lRnVkZ2VGYWN0b3IpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UHJpdmF0ZTo6YnVmZmVyZWQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6U291
cmNlQnVmZmVyUHJpdmF0ZTo6aXNCdWZmZXJlZERpcnR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OnNldEJ1ZmZlcmVkRGlydHkpOiBEZWxl
dGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZUNs
aWVudC5oOgorICAgICAgICBgU291cmNlQnVmZmVyUHJpdmF0ZWAgY2FuIGZpZ3VyZSBvdXQgdGhl
IHZhbHVlcyBvZiBgaGFzQXVkaW9gIGFuZCBgaGFzVmlkZW9gIGJlY2F1c2UKKyAgICAgICAgaXQg
bWFuYWdlcyB0aGUgdHJhY2sgYnVmZmVycywgc28gdGhlIGZ1bmN0aW9ucyBgc291cmNlQnVmZmVy
UHJpdmF0ZUhhc0F1ZGlvKClgIGFuZAorICAgICAgICBgc291cmNlQnVmZmVyUHJpdmF0ZUhhc1Zp
ZGVvKClgIGNhbiBiZSByZW1vdmVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmlk
ZW9UcmFja1ByaXZhdGUuaDoKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1t
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6TWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDOjpkdXJhdGlvbkNoYW5nZWQpOgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpk
aWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKToKKyAgICAgICAg
VXNlIGEgY29uZGl0aW9uIHZhcmlhYmxlIHRvIGhvbGQgdGhlIGNhbGxiYWNrIHJlZ2FyZGluZyBu
ZXcgc2FtcGxlcyBhdmFpbGFibGUKKyAgICAgICAgdW50aWwgdGhlIHRyYWNrIGJ1ZmZlciBtYW5h
Z2VyIGhhcyBoYW5kbGVkIHRoZSBpbml0aWFsaXphdGlvbiBzZWdtZW50LgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFW
Rk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQyk6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXph
dGlvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
OmFwcGVuZENvbXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6ZW5xdWV1ZVNhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6dGltZUZ1ZGdlRmFjdG9yIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpoYXNWaWRlbyBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6aGFzQXVkaW8gY29u
c3QpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjpPbkNsdXN0ZXJCZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNOjpPblRyYWNrRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVy
UGFyc2VyV2ViTTo6T25GcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2Ev
U291cmNlQnVmZmVyUGFyc2VyV2ViTS5oOgorICAgICAgICBUaGUgc2FtZSBhcyBgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakNgLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL21zZS9NZWRpYVNvdXJjZVByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFTb3VyY2VQcml2YXRlR1N0cmVhbWVyOjpkdXJhdGlvbkNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlR1N0cmVhbWVyOjptYXJrRW5kT2ZTdHJlYW0p
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlR1N0cmVhbWVyOjp1bm1hcmtF
bmRPZlN0cmVhbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9N
ZWRpYVNvdXJjZVByaXZhdGVHU3RyZWFtZXIuaDoKKworICAgICAgICAqIHBsYXRmb3JtL21vY2sv
bWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpkdXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAqIHBs
YXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZUluaXRp
YWxpemF0aW9uU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6c2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpoYXNWaWRlbyBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6aGFzQXVkaW8gY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1
ZmZlclByaXZhdGUuaDoKKwogMjAyMC0xMi0wNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFNpbXBsaWZ5IGF1ZGlvIHJlc2FtcGxpbmcgY29kZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCAzMzdhNTQ0MGUyMTc2YTlkZTU2MmQyYjU0NzhkNzljMTQwODQ5OGYxLi5hOThhMDM5OTdmNjc5
N2QwMmM5ZDljNzBkNDA0ZTUzOWYzMDMyZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAor
MjAyMC0xMi0wOCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtN
ZWRpYSBpbiBHUFUgUHJvY2Vzc11bTVNFXSBJbXBsZW1lbnQgYmFzaWMgdmlkZW8gcGxheWJhY2sK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQwMgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVu
dCB0aGUgbmVjZXNzYXJ5IGZ1bmN0aW9ucyB3aXRoIElQQyB0byBzdXBwb3J0IG1lZGlhIHBsYXli
YWNrLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb1RyYWNrUHJveHk6OmNvbmZpZ3VyYXRp
b24pOiBSZW5hbWUgYGlkZW50aWZpZXJgIHRvIGB0cmFja0lkYAorICAgICAgICBiZWNhdXNlIGl0
IGlzIGVhc3kgdG8gY29uZnVzZSB3aXRoIGBUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyYC4K
KworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmxvYWRNZWRpYVNvdXJj
ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnVwZGF0ZUNhY2hl
ZFN0YXRlKTogRm9yIE1TRSBtZWRpYSBwbGF5ZXIsIGBTb3VyY2VCdWZmZXJgCisgICAgICAgIHBy
b3ZpZGVzIHRoZSBidWZmZXJlZCByYW5nZXMsIHNvIGBSZW1vdGVNZWRpYVBsYXllclByb3h5YCBk
b2VzIG5vdCBuZWVkIHRvIHJlcG9ydCB0aGlzCisgICAgICAgIGluZm9ybWF0aW9uIHRvIHRoZSBg
TWVkaWFQbGF5ZXJgIG9iamVjdCBpbiB0aGUgV2ViIHByb2Nlc3MuCisgICAgICAgICogR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6ZHVyYXRpb24gY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpidWZmZXJlZCBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNlUHJveHk6OmR1cmF0aW9uQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNlUHJveHk6OnNldFJlYWR5U3RhdGUpOgorICAg
ICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oOgorICAgICAg
ICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5tZXNzYWdlcy5pbjoK
KworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6UmVtb3RlU291cmNl
QnVmZmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6
flJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNl
QnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25T
ZWdtZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJj
ZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVT
b3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxlKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZh
dGVBcHBlbmRDb21wbGV0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclBy
b3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVJlbmRlcmluZ0Vycm9yKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVC
dWZmZXJlZERpcnR5Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2VkKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNldEFjdGl2ZSk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpzZXRSZWFkeVN0YXRlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnVwZGF0ZUJ1ZmZlcmVkRnJvbVRy
YWNrQnVmZmVycyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpl
dmljdENvZGVkRnJhbWVzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJv
eHk6OmFkZFRyYWNrQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVy
UHJveHk6OnJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVT
b3VyY2VCdWZmZXJQcm94eTo6dHJ5U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2
YXRlSGFzQXVkaW8gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvIGNvbnN0KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lmg6
CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5tZXNz
YWdlcy5pbjoKKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJhY2tQcm94eTo6Y29uZmlndXJh
dGlvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb1RyYWNrUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb1RyYWNrUHJveHk6OmNvbmZpZ3VyYXRp
b24pOgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3Rl
Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpUZXh0VHJhY2tQcml2YXRlUmVtb3Rl
Q29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VGV4dFRyYWNr
UHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1RyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKFdl
YktpdDo6VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAg
ICAgICAgKFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToK
KworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3Rl
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXVkaW9UcmFja1ByaXZhdGVSZW1vdGU6OnVwZGF0ZUNv
bmZpZ3VyYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQ
cml2YXRlUmVtb3RlLmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmxvYWQpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFT
b3VyY2VQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFTb3VyY2VQcml2
YXRlUmVtb3RlOjpkdXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJj
ZVByaXZhdGVSZW1vdGU6OmlzRW5kZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNv
dXJjZVByaXZhdGVSZW1vdGU6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
R1BVL21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5oOgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNldFJlYWR5U3RhdGUpOgorICAgICAg
ICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpmbHVzaCk6CisgICAgICAgIChX
ZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNldEFjdGl2ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNr
QnVmZmVycyk6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmV2
aWN0Q29kZWRGcmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlOjphZGRUcmFja0J1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGU6OnJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpTb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlOjp0cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVk
KToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVm
ZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQpOgorICAgICAgICAoV2Vi
S2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRp
b25DaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6U291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlD
aGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291
cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6
OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmVucXVldWVTYW1wbGUpOiBEZWxldGVkLgorICAg
ICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNr
UHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRleHRUcmFja1ByaXZhdGVSZW1v
dGU6OnVwZGF0ZUNvbmZpZ3VyYXRpb24pOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvVmlkZW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpWaWRlb1Ry
YWNrUHJpdmF0ZVJlbW90ZTo6dXBkYXRlQ29uZmlndXJhdGlvbik6CisKIDIwMjAtMTItMDQgIFdl
bnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gQ2Fu
Y2VsIGltYWdlIGV4dHJhY3Rpb24gd2hlbiBuYXZpZ2F0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IGZlZTU0NzM5ZDU1
ZjBlMWQ1YTE2YjVhYzliMTRiMmMwYWI3MmY4OTEuLmFkZjdiMTk1YWJiYjAzYzAxMGYyMDgyN2Vl
MGFjZGZmZmUwNGE1MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
b3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC0xMjQsNiArMTI0LDcgQEAgdm9pZCBNZWRpYVNvdXJj
ZTo6c2V0UHJpdmF0ZUFuZE9wZW4oUmVmPE1lZGlhU291cmNlUHJpdmF0ZT4mJiBtZWRpYVNvdXJj
ZVByaXZhdGUKICAgICBBU1NFUlQoIW1fcHJpdmF0ZSk7CiAgICAgQVNTRVJUKG1fbWVkaWFFbGVt
ZW50KTsKICAgICBtX3ByaXZhdGUgPSBXVEZNb3ZlKG1lZGlhU291cmNlUHJpdmF0ZSk7CisgICAg
bV9wcml2YXRlLT5zZXRUaW1lRnVkZ2VGYWN0b3IoY3VycmVudFRpbWVGdWRnZUZhY3RvcigpKTsK
IAogICAgIC8vIDIuNC4xIEF0dGFjaGluZyB0byBhIG1lZGlhIGVsZW1lbnQKICAgICAvLyBodHRw
czovL3Jhd2dpdC5jb20vdzNjL21lZGlhLXNvdXJjZS80NTYyNzY0NjM0NGVlYTAxNzBkZDFjYmM1
YTNkNTA4Y2E3NTFhYmI4L21lZGlhLXNvdXJjZS1yZXNwZWMuaHRtbCNtZWRpYXNvdXJjZS1hdHRh
Y2gKQEAgLTU1Niw3ICs1NTcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVNvdXJjZTo6c2V0
RHVyYXRpb25JbnRlcm5hbChjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uKQogICAgIEFMV0FZU19M
T0coTE9HSURFTlRJRklFUiwgZHVyYXRpb24pOwogCiAgICAgLy8gNi4gVXBkYXRlIHRoZSBtZWRp
YSBkdXJhdGlvbiB0byBuZXcgZHVyYXRpb24gYW5kIHJ1biB0aGUgSFRNTE1lZGlhRWxlbWVudCBk
dXJhdGlvbiBjaGFuZ2UgYWxnb3JpdGhtLgotICAgIG1fcHJpdmF0ZS0+ZHVyYXRpb25DaGFuZ2Vk
KCk7CisgICAgbV9wcml2YXRlLT5kdXJhdGlvbkNoYW5nZWQoZHVyYXRpb24pOwogCiAgICAgcmV0
dXJuIHsgfTsKIH0KQEAgLTYyOCw2ICs2MjksNyBAQCB2b2lkIE1lZGlhU291cmNlOjpzdHJlYW1F
bmRlZFdpdGhFcnJvcihPcHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPiBlcnJvcikKICAgICAgICAg
ICAgIHNvdXJjZUJ1ZmZlci0+dHJ5U2lnbmFsQWxsU2FtcGxlc0VucXVldWVkKCk7CiAgICAgICAg
IG1fcHJpdmF0ZS0+bWFya0VuZE9mU3RyZWFtKE1lZGlhU291cmNlUHJpdmF0ZTo6RW9zTm9FcnJv
cik7CiAgICAgfSBlbHNlIGlmIChlcnJvciA9PSBFbmRPZlN0cmVhbUVycm9yOjpOZXR3b3JrKSB7
CisgICAgICAgIG1fcHJpdmF0ZS0+bWFya0VuZE9mU3RyZWFtKE1lZGlhU291cmNlUHJpdmF0ZTo6
RW9zTmV0d29ya0Vycm9yKTsKICAgICAgICAgLy8g4oazIElmIGVycm9yIGlzIHNldCB0byAibmV0
d29yayIKICAgICAgICAgQVNTRVJUKG1fbWVkaWFFbGVtZW50KTsKICAgICAgICAgaWYgKG1fbWVk
aWFFbGVtZW50LT5yZWFkeVN0YXRlKCkgPT0gSFRNTE1lZGlhRWxlbWVudDo6SEFWRV9OT1RISU5H
KSB7CkBAIC02NDYsNiArNjQ4LDggQEAgdm9pZCBNZWRpYVNvdXJjZTo6c3RyZWFtRW5kZWRXaXRo
RXJyb3IoT3B0aW9uYWw8RW5kT2ZTdHJlYW1FcnJvcj4gZXJyb3IpCiAgICAgfSBlbHNlIHsKICAg
ICAgICAgLy8g4oazIElmIGVycm9yIGlzIHNldCB0byAiZGVjb2RlIgogICAgICAgICBBU1NFUlQo
ZXJyb3IgPT0gRW5kT2ZTdHJlYW1FcnJvcjo6RGVjb2RlKTsKKyAgICAgICAgbV9wcml2YXRlLT5t
YXJrRW5kT2ZTdHJlYW0oTWVkaWFTb3VyY2VQcml2YXRlOjpFb3NEZWNvZGVFcnJvcik7CisKICAg
ICAgICAgQVNTRVJUKG1fbWVkaWFFbGVtZW50KTsKICAgICAgICAgaWYgKG1fbWVkaWFFbGVtZW50
LT5yZWFkeVN0YXRlKCkgPT0gSFRNTE1lZGlhRWxlbWVudDo6SEFWRV9OT1RISU5HKSB7CiAgICAg
ICAgICAgICAvLyAg4oazIElmIHRoZSBIVE1MTWVkaWFFbGVtZW50LnJlYWR5U3RhdGUgYXR0cmli
dXRlIGVxdWFscyBIQVZFX05PVEhJTkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAppbmRleCBjZGUxODNmODkyNzQ3ZDMyYWRhODJl
N2Q1ZTJiOWI0M2VjNTNiZGZlLi4zZDNhNjE5MjE0NzZhZDI2NmQyNWZiOTI3YjQ0YWM5ODI4NDBl
ZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJj
ZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3Vy
Y2VCdWZmZXIuY3BwCkBAIC04MSw2ICs4MSw3IEBAIFNvdXJjZUJ1ZmZlcjo6U291cmNlQnVmZmVy
KFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlPiYmIHNvdXJjZUJ1ZmZlclByaXZhdGUsIE1lZGlhCiAg
ICAgLCBtX2FwcGVuZFdpbmRvd0VuZChNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkp
CiAgICAgLCBtX2FwcGVuZFN0YXRlKFdhaXRpbmdGb3JTZWdtZW50KQogICAgICwgbV90aW1lT2ZC
dWZmZXJpbmdNb25pdG9yKE1vbm90b25pY1RpbWU6Om5vdygpKQorICAgICwgbV9idWZmZXJlZChU
aW1lUmFuZ2VzOjpjcmVhdGUoKSkKICAgICAsIG1fcGVuZGluZ1JlbW92ZVN0YXJ0KE1lZGlhVGlt
ZTo6aW52YWxpZFRpbWUoKSkKICAgICAsIG1fcGVuZGluZ1JlbW92ZUVuZChNZWRpYVRpbWU6Omlu
dmFsaWRUaW1lKCkpCiAgICAgLCBtX3JlbW92ZVRpbWVyKCp0aGlzLCAmU291cmNlQnVmZmVyOjpy
ZW1vdmVUaW1lckZpcmVkKQpAQCAtOTQsNyArOTUsNiBAQCBTb3VyY2VCdWZmZXI6OlNvdXJjZUJ1
ZmZlcihSZWY8U291cmNlQnVmZmVyUHJpdmF0ZT4mJiBzb3VyY2VCdWZmZXJQcml2YXRlLCBNZWRp
YQogCiAgICAgbV9wcml2YXRlLT5zZXRDbGllbnQodGhpcyk7CiAgICAgbV9wcml2YXRlLT5zZXRJ
c0F0dGFjaGVkKHRydWUpOwotICAgIG1fcHJpdmF0ZS0+c2V0Q3VycmVudFRpbWVGdWRnZUZhY3Rv
cihtX3NvdXJjZS0+Y3VycmVudFRpbWVGdWRnZUZhY3RvcigpKTsKIH0KIAogU291cmNlQnVmZmVy
Ojp+U291cmNlQnVmZmVyKCkKQEAgLTEwMiw4ICsxMDIsOCBAQCBTb3VyY2VCdWZmZXI6On5Tb3Vy
Y2VCdWZmZXIoKQogICAgIEFTU0VSVChpc1JlbW92ZWQoKSk7CiAgICAgQUxXQVlTX0xPRyhMT0dJ
REVOVElGSUVSKTsKIAotICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KG51bGxwdHIpOwogICAgIG1f
cHJpdmF0ZS0+c2V0SXNBdHRhY2hlZChmYWxzZSk7CisgICAgbV9wcml2YXRlLT5zZXRDbGllbnQo
bnVsbHB0cik7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxUaW1lUmFuZ2VzPj4gU291cmNlQnVmZmVy
OjpidWZmZXJlZCgpIGNvbnN0CkBAIC0xMTYsNyArMTE2LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFRp
bWVSYW5nZXM+PiBTb3VyY2VCdWZmZXI6OmJ1ZmZlcmVkKCkgY29uc3QKICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKICAgICAvLyAyLiBSZXR1cm4gYSBu
ZXcgc3RhdGljIG5vcm1hbGl6ZWQgVGltZVJhbmdlcyBvYmplY3QgZm9yIHRoZSBtZWRpYSBzZWdt
ZW50cyBidWZmZXJlZC4KLSAgICByZXR1cm4gbV9wcml2YXRlLT5idWZmZXJlZCgpLT5jb3B5KCk7
CisgICAgcmV0dXJuIG1fYnVmZmVyZWQtPmNvcHkoKTsKIH0KIAogZG91YmxlIFNvdXJjZUJ1ZmZl
cjo6dGltZXN0YW1wT2Zmc2V0KCkgY29uc3QKQEAgLTU1MiwxMCArNTUyLDYgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQg
cmVzdWx0KQogICAgIGlmIChpc1JlbW92ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8g
UmVzb2x2ZSB0aGUgY2hhbmdlcyBpdCBUcmFja0J1ZmZlcnMnIGJ1ZmZlcmVkIHJhbmdlcwotICAg
IC8vIGludG8gdGhlIFNvdXJjZUJ1ZmZlcidzIGJ1ZmZlcmVkIHJhbmdlcwotICAgIG1fcHJpdmF0
ZS0+dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKG1fc291cmNlLT5pc0VuZGVkKCkpOwot
CiAgICAgLy8gU2VjdGlvbiAzLjUuNSBCdWZmZXIgQXBwZW5kIEFsZ29yaXRobSwgY3RkLgogICAg
IC8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS9kZWZhdWx0L21l
ZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCNzb3VyY2VidWZmZXItYnVmZmVyLWFwcGVuZAog
CkBAIC02MzQsNyArNjMwLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnJlbW92ZVRpbWVyRmlyZWQo
KQogICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnVwZGF0ZWVuZEV2ZW50KTsKIH0KIAot
c2l6ZV90IFNvdXJjZUJ1ZmZlcjo6bWF4aW11bUJ1ZmZlclNpemUoKSBjb25zdAordWludDY0X3Qg
U291cmNlQnVmZmVyOjptYXhpbXVtQnVmZmVyU2l6ZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzUmVt
b3ZlZCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTY3OCwxMCArNjc0LDEyIEBAIHZvaWQgU291
cmNlQnVmZmVyOjpzZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAgIG1fc291cmNlLT5zb3Vy
Y2VCdWZmZXJEaWRDaGFuZ2VBY3RpdmVTdGF0ZSgqdGhpcywgYWN0aXZlKTsKIH0KIAotdm9pZCBT
b3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25T
ZWdtZW50KGNvbnN0IEluaXRpYWxpemF0aW9uU2VnbWVudCYgc2VnbWVudCkKK3ZvaWQgU291cmNl
QnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVu
dChJbml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGlzUmVtb3ZlZCgpKQorICAgIGlm
IChpc1JlbW92ZWQoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICBy
ZXR1cm47CisgICAgfQogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIApAQCAtNzA0
LDYgKzcwMiw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVj
ZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0CiAgICAgLy8gd2l0aCB0aGUgZGVj
b2RlIGVycm9yIHBhcmFtZXRlciBzZXQgdG8gdHJ1ZSBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAg
ICAgaWYgKHNlZ21lbnQuYXVkaW9UcmFja3MuaXNFbXB0eSgpICYmIHNlZ21lbnQudmlkZW9UcmFj
a3MuaXNFbXB0eSgpICYmIHNlZ21lbnQudGV4dFRyYWNrcy5pc0VtcHR5KCkpIHsKICAgICAgICAg
YXBwZW5kRXJyb3IodHJ1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTcxMyw2ICs3MTIsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3Qg
SW5pdAogICAgICAgICAvLyB3aXRoIHRoZSBkZWNvZGUgZXJyb3IgcGFyYW1ldGVyIHNldCB0byB0
cnVlIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICAgICAgaWYgKCF2YWxpZGF0ZUluaXRpYWxp
emF0aW9uU2VnbWVudChzZWdtZW50KSkgewogICAgICAgICAgICAgYXBwZW5kRXJyb3IodHJ1ZSk7
CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTgxNSwxMCArODE1LDEwIEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3Vy
Y2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0
CiAgICAgICAgICAgICAvLyByZWZlcmVuY2VkIGJ5IHRoZSBhdWRpb1RyYWNrcyBhdHRyaWJ1dGUg
b24gdGhlIEhUTUxNZWRpYUVsZW1lbnQuCiAgICAgICAgICAgICBtX3NvdXJjZS0+bWVkaWFFbGVt
ZW50KCktPmVuc3VyZUF1ZGlvVHJhY2tzKCkuYXBwZW5kKG5ld0F1ZGlvVHJhY2suY29weVJlZigp
KTsKIAotICAgICAgICAgICAgLy8gNS4yLjggQ3JlYXRlIGEgbmV3IHRyYWNrIGJ1ZmZlciB0byBz
dG9yZSBjb2RlZCBmcmFtZXMgZm9yIHRoaXMgdHJhY2suCi0gICAgICAgICAgICBtX3ByaXZhdGUt
PmFkZFRyYWNrQnVmZmVyKG5ld0F1ZGlvVHJhY2stPmlkKCksIGF1ZGlvVHJhY2tJbmZvLmRlc2Ny
aXB0aW9uKTsKLQogICAgICAgICAgICAgbV9hdWRpb0NvZGVjcy5hcHBlbmQoYXVkaW9UcmFja0lu
Zm8uZGVzY3JpcHRpb24tPmNvZGVjKCkpOworCisgICAgICAgICAgICAvLyA1LjIuOCBDcmVhdGUg
YSBuZXcgdHJhY2sgYnVmZmVyIHRvIHN0b3JlIGNvZGVkIGZyYW1lcyBmb3IgdGhpcyB0cmFjay4K
KyAgICAgICAgICAgIG1fcHJpdmF0ZS0+YWRkVHJhY2tCdWZmZXIobmV3QXVkaW9UcmFjay0+aWQo
KSwgV1RGTW92ZShhdWRpb1RyYWNrSW5mby5kZXNjcmlwdGlvbikpOwogICAgICAgICB9CiAKICAg
ICAgICAgLy8gNS4zIEZvciBlYWNoIHZpZGVvIHRyYWNrIGluIHRoZSBpbml0aWFsaXphdGlvbiBz
ZWdtZW50LCBydW4gZm9sbG93aW5nIHN0ZXBzOgpAQCAtODUwLDEwICs4NTAsMTAgQEAgdm9pZCBT
b3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25T
ZWdtZW50KGNvbnN0IEluaXQKICAgICAgICAgICAgIC8vIHJlZmVyZW5jZWQgYnkgdGhlIHZpZGVv
VHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KICAgICAgICAgICAgIG1f
c291cmNlLT5tZWRpYUVsZW1lbnQoKS0+ZW5zdXJlVmlkZW9UcmFja3MoKS5hcHBlbmQobmV3Vmlk
ZW9UcmFjay5jb3B5UmVmKCkpOwogCi0gICAgICAgICAgICAvLyA1LjMuOCBDcmVhdGUgYSBuZXcg
dHJhY2sgYnVmZmVyIHRvIHN0b3JlIGNvZGVkIGZyYW1lcyBmb3IgdGhpcyB0cmFjay4KLSAgICAg
ICAgICAgIG1fcHJpdmF0ZS0+YWRkVHJhY2tCdWZmZXIobmV3VmlkZW9UcmFjay0+aWQoKSwgdmlk
ZW9UcmFja0luZm8uZGVzY3JpcHRpb24pOwotCiAgICAgICAgICAgICBtX3ZpZGVvQ29kZWNzLmFw
cGVuZCh2aWRlb1RyYWNrSW5mby5kZXNjcmlwdGlvbi0+Y29kZWMoKSk7CisKKyAgICAgICAgICAg
IC8vIDUuMy44IENyZWF0ZSBhIG5ldyB0cmFjayBidWZmZXIgdG8gc3RvcmUgY29kZWQgZnJhbWVz
IGZvciB0aGlzIHRyYWNrLgorICAgICAgICAgICAgbV9wcml2YXRlLT5hZGRUcmFja0J1ZmZlcihu
ZXdWaWRlb1RyYWNrLT5pZCgpLCBXVEZNb3ZlKHZpZGVvVHJhY2tJbmZvLmRlc2NyaXB0aW9uKSk7
CiAgICAgICAgIH0KIAogICAgICAgICAvLyA1LjQgRm9yIGVhY2ggdGV4dCB0cmFjayBpbiB0aGUg
aW5pdGlhbGl6YXRpb24gc2VnbWVudCwgcnVuIGZvbGxvd2luZyBzdGVwczoKQEAgLTg4MiwxMCAr
ODgyLDEwIEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2
ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0CiAgICAgICAgICAgICAvLyByZWZlcmVu
Y2VkIGJ5IHRoZSB0ZXh0VHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4K
ICAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+ZW5zdXJlVGV4dFRyYWNrcygp
LmFwcGVuZChuZXdUZXh0VHJhY2suY29weVJlZigpKTsKIAotICAgICAgICAgICAgLy8gNS40Ljcg
Q3JlYXRlIGEgbmV3IHRyYWNrIGJ1ZmZlciB0byBzdG9yZSBjb2RlZCBmcmFtZXMgZm9yIHRoaXMg
dHJhY2suCi0gICAgICAgICAgICBtX3ByaXZhdGUtPmFkZFRyYWNrQnVmZmVyKG5ld1RleHRUcmFj
ay0+aWQoKSwgdGV4dFRyYWNrSW5mby5kZXNjcmlwdGlvbik7Ci0KICAgICAgICAgICAgIG1fdGV4
dENvZGVjcy5hcHBlbmQodGV4dFRyYWNrSW5mby5kZXNjcmlwdGlvbi0+Y29kZWMoKSk7CisKKyAg
ICAgICAgICAgIC8vIDUuNC43IENyZWF0ZSBhIG5ldyB0cmFjayBidWZmZXIgdG8gc3RvcmUgY29k
ZWQgZnJhbWVzIGZvciB0aGlzIHRyYWNrLgorICAgICAgICAgICAgbV9wcml2YXRlLT5hZGRUcmFj
a0J1ZmZlcihuZXdUZXh0VHJhY2stPmlkKCksIFdURk1vdmUodGV4dFRyYWNrSW5mby5kZXNjcmlw
dGlvbikpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gNS41IElmIGFjdGl2ZSB0cmFjayBmbGFn
IGVxdWFscyB0cnVlLCB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgpAQCAtOTAyLDYgKzkw
Miw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUlu
aXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0CiAgICAgLy8gKE5vdGU6IElzc3VlICMxNTUg
YWRkcyB0aGlzIHN0ZXAgYWZ0ZXIgc3RlcCA1OikKICAgICAvLyA2LiBTZXQgIHBlbmRpbmcgaW5p
dGlhbGl6YXRpb24gc2VnbWVudCBmb3IgY2hhbmdlVHlwZSBmbGFnICB0byBmYWxzZS4KICAgICBt
X3BlbmRpbmdJbml0aWFsaXphdGlvblNlZ21lbnRGb3JDaGFuZ2VUeXBlID0gZmFsc2U7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKIAogICAgIC8vIDYuIElmIHRoZSBIVE1MTWVkaWFFbGVtZW50
LnJlYWR5U3RhdGUgYXR0cmlidXRlIGlzIEhBVkVfTk9USElORywgdGhlbiBydW4gdGhlIGZvbGxv
d2luZyBzdGVwczoKICAgICBpZiAobV9wcml2YXRlLT5yZWFkeVN0YXRlKCkgPT0gTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nKSB7CkBAIC0xMDExLDE2ICsxMDEyLDYgQEAgYm9v
bCBTb3VyY2VCdWZmZXI6Omhhc1ZpZGVvKCkgY29uc3QKICAgICByZXR1cm4gbV92aWRlb1RyYWNr
cyAmJiBtX3ZpZGVvVHJhY2tzLT5sZW5ndGgoKTsKIH0KIAotYm9vbCBTb3VyY2VCdWZmZXI6OnNv
dXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRpbygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGhhc0F1ZGlv
KCk7Ci19Ci0KLWJvb2wgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlSGFzVmlkZW8o
KSBjb25zdAotewotICAgIHJldHVybiBoYXNWaWRlbygpOwotfQotCiB2b2lkIFNvdXJjZUJ1ZmZl
cjo6dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykKIHsKICAgICAv
LyAyLjQuNSBDaGFuZ2VzIHRvIHNlbGVjdGVkL2VuYWJsZWQgdHJhY2sgc3RhdGUKQEAgLTEyMDQs
OSArMTE5NSw5IEBAIGJvb2wgU291cmNlQnVmZmVyOjpjYW5QbGF5VGhyb3VnaFJhbmdlKFBsYXRm
b3JtVGltZVJhbmdlcyYgcmFuZ2VzKQogICAgIHJldHVybiB1bmJ1ZmZlcmVkVGltZS50b0RvdWJs
ZSgpIC8gbV9hdmVyYWdlQnVmZmVyUmF0ZSA8IHRpbWVSZW1haW5pbmcudG9Eb3VibGUoKTsKIH0K
IAotc2l6ZV90IFNvdXJjZUJ1ZmZlcjo6ZXh0cmFNZW1vcnlDb3N0KCkgY29uc3QKK3VpbnQ2NF90
IFNvdXJjZUJ1ZmZlcjo6ZXh0cmFNZW1vcnlDb3N0KCkgY29uc3QKIHsKLSAgICBzaXplX3QgZXh0
cmFNZW1vcnlDb3N0ID0gbV9wZW5kaW5nQXBwZW5kRGF0YS5jYXBhY2l0eSgpOworICAgIHVpbnQ2
NF90IGV4dHJhTWVtb3J5Q29zdCA9IG1fcGVuZGluZ0FwcGVuZERhdGEuY2FwYWNpdHkoKTsKICAg
ICBleHRyYU1lbW9yeUNvc3QgKz0gbV9wcml2YXRlLT50b3RhbFRyYWNrQnVmZmVyU2l6ZUluQnl0
ZXMoKTsKIAogICAgIHJldHVybiBleHRyYU1lbW9yeUNvc3Q7CkBAIC0xMjE0LDExICsxMjA1LDEx
IEBAIHNpemVfdCBTb3VyY2VCdWZmZXI6OmV4dHJhTWVtb3J5Q29zdCgpIGNvbnN0CiAKIHZvaWQg
U291cmNlQnVmZmVyOjpyZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZCgpCiB7Ci0gICAgc2l6ZV90
IGV4dHJhTWVtb3J5Q29zdCA9IHRoaXMtPmV4dHJhTWVtb3J5Q29zdCgpOworICAgIHVpbnQ2NF90
IGV4dHJhTWVtb3J5Q29zdCA9IHRoaXMtPmV4dHJhTWVtb3J5Q29zdCgpOwogICAgIGlmIChleHRy
YU1lbW9yeUNvc3QgPD0gbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdCkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgc2l6ZV90IGV4dHJhTWVtb3J5Q29zdERlbHRhID0gZXh0cmFNZW1vcnlDb3N0IC0g
bV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdDsKKyAgICB1aW50NjRfdCBleHRyYU1lbW9yeUNvc3RE
ZWx0YSA9IGV4dHJhTWVtb3J5Q29zdCAtIG1fcmVwb3J0ZWRFeHRyYU1lbW9yeUNvc3Q7CiAgICAg
bV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdCA9IGV4dHJhTWVtb3J5Q29zdDsKIAogICAgIEpTQzo6
SlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT52bSgpKTsKQEAgLTEy
NDIsNyArMTIzMyw3IEBAIE1lZGlhVGltZSBTb3VyY2VCdWZmZXI6Om1pbmltdW1VcGNvbWluZ1By
ZXNlbnRhdGlvblRpbWVGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpCiAgICAgcmV0dXJuIG1fcHJp
dmF0ZS0+bWluaW11bVVwY29taW5nUHJlc2VudGF0aW9uVGltZUZvclRyYWNrSUQodHJhY2tJRCk7
CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyOjpzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQo
Y29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCwgc2l6ZV90IG1heFF1ZXVlRGVwdGgpCit2b2lkIFNv
dXJjZUJ1ZmZlcjo6c2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJp
bmcmIHRyYWNrSUQsIHVpbnQ2NF90IG1heFF1ZXVlRGVwdGgpCiB7CiAgICAgbV9wcml2YXRlLT5z
ZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQodHJhY2tJRCwgbWF4UXVldWVEZXB0aCk7CiB9
CkBAIC0xMzAyLDE0ICsxMjkzLDI0IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzZXRTaG91bGRHZW5l
cmF0ZVRpbWVzdGFtcHMoYm9vbCBmbGFnKQogICAgIG1fcHJpdmF0ZS0+c2V0U2hvdWxkR2VuZXJh
dGVUaW1lc3RhbXBzKGZsYWcpOwogfQogCit2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVy
UHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGJvb2wgZmxhZykKK3sKKyAgICBtX2J1ZmZlcmVk
RGlydHkgPSBmbGFnOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0
ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChjb25zdCBQbGF0Zm9ybVRpbWVSYW5nZXMmIHRpbWVSYW5n
ZXMpCit7CisgICAgbV9idWZmZXJlZC0+cmFuZ2VzKCkgPSB0aW1lUmFuZ2VzOworfQorCiBib29s
IFNvdXJjZUJ1ZmZlcjo6aXNCdWZmZXJlZERpcnR5KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9w
cml2YXRlLT5pc0J1ZmZlcmVkRGlydHkoKTsKKyAgICByZXR1cm4gbV9idWZmZXJlZERpcnR5Owog
fQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6c2V0QnVmZmVyZWREaXJ0eShib29sIGZsYWcpCiB7Ci0g
ICAgbV9wcml2YXRlLT5zZXRCdWZmZXJlZERpcnR5KGZsYWcpOworICAgIG1fYnVmZmVyZWREaXJ0
eSA9IGZsYWc7CiB9CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCmluZGV4IGQxNWMyOWJj
ZDg4NjJlOTJiNDZkOTNiMDEyNTA1MDE5MzQ5ZTJjZjguLjIyOTNiYzUwNzdiYjE3Njk4NDIyZGUw
ZTY2ZWRmNGE3OWIxZmFlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzb3VyY2UvU291cmNlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgRXhj
ZXB0aW9uT3I8dm9pZD4gcmVtb3ZlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYp
OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNoYW5nZVR5cGUoY29uc3QgU3RyaW5nJik7CiAKLSAg
ICBjb25zdCBUaW1lUmFuZ2VzJiBidWZmZXJlZEludGVybmFsKCkgY29uc3QgeyBBU1NFUlQobV9w
cml2YXRlLT5idWZmZXJlZCgpKTsgcmV0dXJuICptX3ByaXZhdGUtPmJ1ZmZlcmVkKCk7IH0KKyAg
ICBjb25zdCBUaW1lUmFuZ2VzJiBidWZmZXJlZEludGVybmFsKCkgY29uc3QgeyBBU1NFUlQobV9i
dWZmZXJlZCk7IHJldHVybiAqbV9idWZmZXJlZDsgfQogCiAgICAgdm9pZCBhYm9ydElmVXBkYXRp
bmcoKTsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKTsKQEAgLTE0OCwxNSArMTQ4
LDE1IEBAIHByaXZhdGU6CiAgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29u
c3QgZmluYWw7CiAKICAgICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50Ci0gICAgdm9pZCBz
b3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJ
bml0aWFsaXphdGlvblNlZ21lbnQmKSBmaW5hbDsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZh
dGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemF0aW9uU2VnbWVudCYm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQgc291cmNlQnVm
ZmVyUHJpdmF0ZVN0cmVhbUVuZGVkV2l0aERlY29kZUVycm9yKCkgZmluYWw7CiAgICAgdm9pZCBz
b3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9vbCBkZWNvZGVFcnJvcikgZmluYWw7Cisg
ICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoQXBwZW5kUmVzdWx0KSBm
aW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQoY29uc3Qg
TWVkaWFUaW1lJiBkdXJhdGlvbikgZmluYWw7CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRl
RGlkUGFyc2VTYW1wbGUoZG91YmxlIHNhbXBsZUR1cmF0aW9uKSBmaW5hbDsKICAgICB2b2lkIHNv
dXJjZUJ1ZmZlclByaXZhdGVEaWREcm9wU2FtcGxlKCkgZmluYWw7Ci0gICAgdm9pZCBzb3VyY2VC
dWZmZXJQcml2YXRlU3RyZWFtRW5kZWRXaXRoRGVjb2RlRXJyb3IoKSBmaW5hbDsKLSAgICBib29s
IHNvdXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRpbygpIGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc291
cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKCkgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBzb3VyY2VC
dWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoQXBwZW5kUmVzdWx0KSBmaW5hbDsKKyAgICB2b2lk
IHNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZChib29sKSBmaW5hbDsKKyAg
ICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQoY29uc3QgUGxh
dGZvcm1UaW1lUmFuZ2VzJikgZmluYWw7CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlk
UmVjZWl2ZVJlbmRlcmluZ0Vycm9yKGludCBlcnJvckNvZGUpIGZpbmFsOwogCiAgICAgLy8gQXVk
aW9UcmFja0NsaWVudApAQCAtMTg1LDEzICsxODUsMTMgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wg
dmFsaWRhdGVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50
Jik7CiAKLSAgICBzaXplX3QgbWF4aW11bUJ1ZmZlclNpemUoKSBjb25zdDsKKyAgICB1aW50NjRf
dCBtYXhpbXVtQnVmZmVyU2l6ZSgpIGNvbnN0OwogCiAgICAgdm9pZCBtb25pdG9yQnVmZmVyaW5n
UmF0ZSgpOwogCiAgICAgdm9pZCByZW1vdmVUaW1lckZpcmVkKCk7CiAKLSAgICBzaXplX3QgZXh0
cmFNZW1vcnlDb3N0KCkgY29uc3Q7CisgICAgdWludDY0X3QgZXh0cmFNZW1vcnlDb3N0KCkgY29u
c3Q7CiAgICAgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZCgpOwogCiAgICAgdm9pZCBh
cHBlbmRFcnJvcihib29sKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBwcml2YXRlOgogICAgIFdFQkNP
UkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGJ1ZmZlcmVkU2FtcGxlc0ZvclRyYWNrSUQoY29uc3Qg
QXRvbVN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGVucXVldWVk
U2FtcGxlc0ZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JU
IE1lZGlhVGltZSBtaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lRm9yVHJhY2tJRChjb25z
dCBBdG9tU3RyaW5nJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNYXhpbXVtUXVldWVE
ZXB0aEZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYsIHNpemVfdCk7CisgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmlu
ZyYsIHVpbnQ2NF90KTsKIAogICAgIFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlPiBtX3ByaXZhdGU7
CiAgICAgTWVkaWFTb3VyY2UqIG1fc291cmNlOwpAQCAtMjMxLDggKzIzMSwxMCBAQCBwcml2YXRl
OgogICAgIE1vbm90b25pY1RpbWUgbV90aW1lT2ZCdWZmZXJpbmdNb25pdG9yOwogICAgIGRvdWJs
ZSBtX2J1ZmZlcmVkU2luY2VMYXN0TW9uaXRvciB7IDAgfTsKICAgICBkb3VibGUgbV9hdmVyYWdl
QnVmZmVyUmF0ZSB7IDAgfTsKKyAgICBib29sIG1fYnVmZmVyZWREaXJ0eSB7IHRydWUgfTsKKyAg
ICBSZWZQdHI8VGltZVJhbmdlcz4gbV9idWZmZXJlZDsKIAotICAgIHNpemVfdCBtX3JlcG9ydGVk
RXh0cmFNZW1vcnlDb3N0IHsgMCB9OworICAgIHVpbnQ2NF90IG1fcmVwb3J0ZWRFeHRyYU1lbW9y
eUNvc3QgeyAwIH07CiAKICAgICBNZWRpYVRpbWUgbV9wZW5kaW5nUmVtb3ZlU3RhcnQ7CiAgICAg
TWVkaWFUaW1lIG1fcGVuZGluZ1JlbW92ZUVuZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhU291cmNlUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmgKaW5kZXggNjU3MGJmNmVlOTY4
MjdlMDA5NDZmOWYxOTYwODhhZGMyYzRiZGI2My4uMjkzMjg4NjNiMTRmMjZkY2I5Y2MxMWMwMjM2
NjBkNTIwM2I4OTBmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvTWVkaWFTb3VyY2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmgKQEAgLTU1LDEwICs1NSwxMSBAQCBwdWJsaWM6CiAg
ICAgICAgIFJlYWNoZWRJZExpbWl0CiAgICAgfTsKICAgICB2aXJ0dWFsIEFkZFN0YXR1cyBhZGRT
b3VyY2VCdWZmZXIoY29uc3QgQ29udGVudFR5cGUmLCBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0
ZT4mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGR1cmF0aW9uQ2hhbmdlZCgpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpID0gMDsKICAgICBl
bnVtIEVuZE9mU3RyZWFtU3RhdHVzIHsgRW9zTm9FcnJvciwgRW9zTmV0d29ya0Vycm9yLCBFb3NE
ZWNvZGVFcnJvciB9OwogICAgIHZpcnR1YWwgdm9pZCBtYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJl
YW1TdGF0dXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5tYXJrRW5kT2ZTdHJlYW0oKSA9IDA7
CisgICAgdmlydHVhbCBib29sIGlzRW5kZWQoKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIE1l
ZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpID0gMDsKQEAgLTY2
LDEwICs2NywxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdhaXRGb3JTZWVrQ29tcGxl
dGVkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZWVrQ29tcGxldGVkKCkgPSAwOwogCisgICAg
dm9pZCBzZXRUaW1lRnVkZ2VGYWN0b3IoY29uc3QgTWVkaWFUaW1lJiBmdWRnZUZhY3RvcikgeyBt
X3RpbWVGdWRnZUZhY3RvciA9IGZ1ZGdlRmFjdG9yOyB9CisgICAgTWVkaWFUaW1lIHRpbWVGdWRn
ZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZ1ZGdlRmFjdG9yOyB9CiAgICAgdm9pZCBz
ZXRJc1NlZWtpbmcoYm9vbCBmbGFnKSB7IG1faXNTZWVraW5nID0gZmxhZzsgfQogICAgIGJvb2wg
aXNTZWVraW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1NlZWtpbmc7IH0KIAogcHJpdmF0ZToKKyAg
ICBNZWRpYVRpbWUgbV90aW1lRnVkZ2VGYWN0b3I7CiAgICAgYm9vbCBtX2lzU2Vla2luZyB7IGZh
bHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCmluZGV4IDBmM2ZhNjZkOTkxZWIzOWEzMDYxYWUy
ZjhlYmZlZWIyZDUzMDQ1YzkuLjdiZTAwMjFkOWJiNmRmMTA3ZDcxYTRmMTVhNzE1NTZkZTE5ZWU3
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1
ZmZlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1Nv
dXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC02NSw2ICs2NSw4IEBAIFNvdXJjZUJ1ZmZlclByaXZh
dGU6OlNvdXJjZUJ1ZmZlclByaXZhdGUoKQogewogfQogCitTb3VyY2VCdWZmZXJQcml2YXRlOjp+
U291cmNlQnVmZmVyUHJpdmF0ZSgpID0gZGVmYXVsdDsKKwogdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlOjpyZXNldFRpbWVzdGFtcE9mZnNldEluVHJhY2tCdWZmZXJzKCkKIHsKICAgICBmb3IgKGF1
dG8mIHRyYWNrQnVmZmVyIDogbV90cmFja0J1ZmZlck1hcC52YWx1ZXMoKSkgewpAQCAtNzMsNiAr
NzUsMTIgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpyZXNldFRpbWVzdGFtcE9mZnNldElu
VHJhY2tCdWZmZXJzKCkKICAgICB9CiB9CiAKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0
QnVmZmVyZWREaXJ0eShib29sIGZsYWcpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBt
X2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGZsYWcpOwor
fQorCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnJlc2V0VHJhY2tCdWZmZXJzKCkKIHsKICAg
ICBmb3IgKGF1dG8mIHRyYWNrQnVmZmVyUGFpciA6IG1fdHJhY2tCdWZmZXJNYXAudmFsdWVzKCkp
IHsKQEAgLTk2LDYgKzEwNCwxMyBAQCBNZWRpYVRpbWUgU291cmNlQnVmZmVyUHJpdmF0ZTo6aGln
aGVzdFByZXNlbnRhdGlvblRpbWVzdGFtcCgpIGNvbnN0CiAgICAgcmV0dXJuIGhpZ2hlc3RUaW1l
OwogfQogCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnNldEJ1ZmZlcmVkUmFuZ2VzKGNvbnN0
IFBsYXRmb3JtVGltZVJhbmdlcyYgdGltZVJhbmdlcykKK3sKKyAgICBtX2J1ZmZlcmVkLT5yYW5n
ZXMoKSA9IHRpbWVSYW5nZXM7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+
c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChtX2J1ZmZlcmVkLT5yYW5n
ZXMoKSk7Cit9CisKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6dXBkYXRlQnVmZmVyZWRGcm9t
VHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCkKIHsKICAgICAvLyAzLjEgQXR0cmlidXRl
cywgYnVmZmVyZWQKQEAgLTExMiw3ICsxMjcsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6
OnVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVmZmVycyhib29sIHNvdXJjZUlzRW5kZWQpCiAgICAg
Ly8gTk9URTogU2hvcnQgY2lyY3VpdCB0aGUgZm9sbG93aW5nIGlmIG5vbmUgb2YgdGhlIFRyYWNr
QnVmZmVycyBoYXZlIGJ1ZmZlcmVkIHJhbmdlcyB0byBhdm9pZCBnZW5lcmF0aW5nCiAgICAgLy8g
YSBzaW5nbGUgcmFuZ2Ugb2YgezAsIDB9LgogICAgIGlmIChoaWdoZXN0RW5kVGltZS5pc05lZ2F0
aXZlSW5maW5pdGUoKSkgewotICAgICAgICBtX2J1ZmZlcmVkLT5yYW5nZXMoKSA9IFBsYXRmb3Jt
VGltZVJhbmdlcygpOworICAgICAgICBzZXRCdWZmZXJlZFJhbmdlcyhQbGF0Zm9ybVRpbWVSYW5n
ZXMoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzNywxMCArMTUyLDIwIEBAIHZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJv
b2wgc291cmNlSXNFbmRlZCkKIAogICAgIC8vIDUuIElmIGludGVyc2VjdGlvbiByYW5nZXMgZG9l
cyBub3QgY29udGFpbiB0aGUgZXhhY3Qgc2FtZSByYW5nZSBpbmZvcm1hdGlvbiBhcyB0aGUgY3Vy
cmVudCB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSwKICAgICAvLyAgICB0aGVuIHVwZGF0ZSB0aGUg
Y3VycmVudCB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSB0byBpbnRlcnNlY3Rpb24gcmFuZ2VzLgot
ICAgIG1fYnVmZmVyZWQtPnJhbmdlcygpID0gaW50ZXJzZWN0aW9uUmFuZ2VzOworICAgIHNldEJ1
ZmZlcmVkUmFuZ2VzKGludGVyc2VjdGlvblJhbmdlcyk7CiAgICAgc2V0QnVmZmVyZWREaXJ0eSh0
cnVlKTsKIH0KIAordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmRDb21wbGV0ZWQoYm9v
bCBwYXJzaW5nU3VjY2VlZGVkLCBib29sIGlzRW5kZWQpCit7CisgICAgLy8gUmVzb2x2ZSB0aGUg
Y2hhbmdlcyBpbiBUcmFja0J1ZmZlcnMnIGJ1ZmZlcmVkIHJhbmdlcworICAgIC8vIGludG8gdGhl
IFNvdXJjZUJ1ZmZlcidzIGJ1ZmZlcmVkIHJhbmdlcworICAgIHVwZGF0ZUJ1ZmZlcmVkRnJvbVRy
YWNrQnVmZmVycyhpc0VuZGVkKTsKKworICAgIGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGll
bnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShwYXJzaW5nU3VjY2VlZGVkID8g
U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0OjpBcHBlbmRTdWNjZWVkZWQg
OiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQ6OlBhcnNpbmdGYWlsZWQp
OworfQorCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnJlZW5xdWVTYW1wbGVzKGNvbnN0IEF0
b21TdHJpbmcmIHRyYWNrSUQpCiB7CiAgICAgaWYgKCFtX2lzQXR0YWNoZWQpCkBAIC0xNzgsOSAr
MjAzLDkgQEAgVmVjdG9yPFN0cmluZz4gU291cmNlQnVmZmVyUHJpdmF0ZTo6YnVmZmVyZWRTYW1w
bGVzRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJgogewogICAgIGF1dG8gaXQgPSBtX3RyYWNr
QnVmZmVyTWFwLmZpbmQodHJhY2tJRCk7CiAgICAgaWYgKGl0ID09IG1fdHJhY2tCdWZmZXJNYXAu
ZW5kKCkpCi0gICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworICAgICAgICByZXR1cm4g
eyB9OwogCi0gICAgVHJhY2tCdWZmZXImIHRyYWNrQnVmZmVyID0gaXQtPnZhbHVlOworICAgIGF1
dG8mIHRyYWNrQnVmZmVyID0gaXQtPnZhbHVlOwogICAgIFZlY3RvcjxTdHJpbmc+IHNhbXBsZURl
c2NyaXB0aW9uczsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiB0cmFja0J1ZmZlci5zYW1wbGVzLmRl
Y29kZU9yZGVyKCkpCiAgICAgICAgIHNhbXBsZURlc2NyaXB0aW9ucy5hcHBlbmQodG9TdHJpbmco
KnBhaXIuc2Vjb25kKSk7CkBAIC0zMTcsNyArMzQyLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlOjpwcm92aWRlTWVkaWFEYXRhKFRyYWNrQnVmZmVyJiB0cmFja0J1ZmZlciwgY29uc3QgQXRv
bVMKICAgICB1cGRhdGVNaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lKHRyYWNrQnVmZmVy
LCB0cmFja0lEKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIERFQlVHX0xPRyhM
T0dJREVOVElGSUVSLCAiZW5xdWV1ZWQgIiwgZW5xdWV1ZWRTYW1wbGVzLCAiIHNhbXBsZXMsICIs
IHN0YXRpY19jYXN0PHNpemVfdD4odHJhY2tCdWZmZXIuZGVjb2RlUXVldWUuc2l6ZSgpKSwgIiBy
ZW1haW5pbmciKTsKKyAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgImVucXVldWVkICIsIGVu
cXVldWVkU2FtcGxlcywgIiBzYW1wbGVzLCAiLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4odHJhY2tC
dWZmZXIuZGVjb2RlUXVldWUuc2l6ZSgpKSwgIiByZW1haW5pbmciKTsKICNlbmRpZgogCiAgICAg
YWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCh0cmFja0lEKTsKQEAgLTMzOSw3ICszNjQsNyBAQCB2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnJlZW5xdWV1ZU1lZGlhRm9yVGltZShUcmFja0J1ZmZl
ciYgdHJhY2tCdWZmZXIsIGNvbnN0CiAgICAgICAgIGN1cnJlbnRTYW1wbGVQVFNJdGVyYXRvciA9
IHRyYWNrQnVmZmVyLnNhbXBsZXMucHJlc2VudGF0aW9uT3JkZXIoKS5maW5kU2FtcGxlU3RhcnRp
bmdPbk9yQWZ0ZXJQcmVzZW50YXRpb25UaW1lKHRpbWUpOwogCiAgICAgaWYgKGN1cnJlbnRTYW1w
bGVQVFNJdGVyYXRvciA9PSB0cmFja0J1ZmZlci5zYW1wbGVzLnByZXNlbnRhdGlvbk9yZGVyKCku
ZW5kKCkKLSAgICAgICAgfHwgKGN1cnJlbnRTYW1wbGVQVFNJdGVyYXRvci0+Zmlyc3QgLSB0aW1l
KSA+IG1fY3VycmVudFRpbWVGdWRnZUZhY3RvcikKKyAgICAgICAgfHwgKGN1cnJlbnRTYW1wbGVQ
VFNJdGVyYXRvci0+Zmlyc3QgLSB0aW1lKSA+IHRpbWVGdWRnZUZhY3RvcigpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICAvLyBTZWFjaCBiYWNrd2FyZCBmb3IgdGhlIHByZXZpb3VzIHN5bmMgc2Ft
cGxlLgpAQCAtMzY3LDcgKzM5Miw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6cmVlbnF1
ZXVlTWVkaWFGb3JUaW1lKFRyYWNrQnVmZmVyJiB0cmFja0J1ZmZlciwgY29uc3QKICAgICB0cmFj
a0J1ZmZlci5uZWVkc1JlZW5xdWV1ZWluZyA9IGZhbHNlOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGU6OnJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQoY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50
VGltZSwgc2l6ZV90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHNpemVfdCBtYXhpbXVtQnVm
ZmVyU2l6ZSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6cmVlbnF1ZXVlTWVkaWFJZk5lZWRl
ZChjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0
YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSkKIHsKICAgICBmb3IgKGF1dG8m
IHRyYWNrQnVmZmVyUGFpciA6IG1fdHJhY2tCdWZmZXJNYXApIHsKICAgICAgICAgVHJhY2tCdWZm
ZXImIHRyYWNrQnVmZmVyID0gdHJhY2tCdWZmZXJQYWlyLnZhbHVlOwpAQCAtMzk4LDcgKzQyMyw3
IEBAIHN0YXRpYyBQbGF0Zm9ybVRpbWVSYW5nZXMgcmVtb3ZlU2FtcGxlc0Zyb21UcmFja0J1ZmZl
cihjb25zdCBEZWNvZGVPcmRlclNhbXBsZU1hCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAg
ICAgTWVkaWFUaW1lIGVhcmxpZXN0U2FtcGxlID0gTWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRl
VGltZSgpOwogICAgIE1lZGlhVGltZSBsYXRlc3RTYW1wbGUgPSBNZWRpYVRpbWU6Onplcm9UaW1l
KCk7Ci0gICAgc2l6ZV90IGJ5dGVzUmVtb3ZlZCA9IDA7CisgICAgdWludDY0X3QgYnl0ZXNSZW1v
dmVkID0gMDsKICAgICBhdXRvIGxvZ0lkZW50aWZpZXIgPSBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlk
ZW50aWZpZXIoc291cmNlQnVmZmVyUHJpdmF0ZS0+bG9nQ2xhc3NOYW1lKCksIGxvZ1ByZWZpeCwg
c291cmNlQnVmZmVyUHJpdmF0ZS0+bG9nSWRlbnRpZmllcigpKTsKICAgICBhdXRvJiBsb2dnZXIg
PSBzb3VyY2VCdWZmZXJQcml2YXRlLT5sb2dnZXIoKTsKICAgICBhdXRvIHdpbGxMb2cgPSBsb2dn
ZXIud2lsbExvZyhzb3VyY2VCdWZmZXJQcml2YXRlLT5sb2dDaGFubmVsKCksIFdURkxvZ0xldmVs
OjpEZWJ1Zyk7CkBAIC00MDgsNyArNDMzLDcgQEAgc3RhdGljIFBsYXRmb3JtVGltZVJhbmdlcyBy
ZW1vdmVTYW1wbGVzRnJvbVRyYWNrQnVmZmVyKGNvbnN0IERlY29kZU9yZGVyU2FtcGxlTWEKICAg
ICBmb3IgKGNvbnN0IGF1dG8mIHNhbXBsZUl0IDogc2FtcGxlcykgewogICAgICAgICBjb25zdCBE
ZWNvZGVPcmRlclNhbXBsZU1hcDo6S2V5VHlwZSYgZGVjb2RlS2V5ID0gc2FtcGxlSXQuZmlyc3Q7
CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgICAgIHNpemVfdCBzdGFydEJ1ZmZlclNp
emUgPSB0cmFja0J1ZmZlci5zYW1wbGVzLnNpemVJbkJ5dGVzKCk7CisgICAgICAgIHVpbnQ2NF90
IHN0YXJ0QnVmZmVyU2l6ZSA9IHRyYWNrQnVmZmVyLnNhbXBsZXMuc2l6ZUluQnl0ZXMoKTsKICNl
bmRpZgogCiAgICAgICAgIGNvbnN0IFJlZlB0cjxNZWRpYVNhbXBsZT4mIHNhbXBsZSA9IHNhbXBs
ZUl0LnNlY29uZDsKQEAgLTU3MCw3ICs1OTUsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6
OnJlbW92ZUNvZGVkRnJhbWVzKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVAog
ICAgIExPRyhNZWRpYSwgIlNvdXJjZUJ1ZmZlcjo6cmVtb3ZlQ29kZWRGcmFtZXMoJXApIC0gYnVm
ZmVyZWQgPSAlcyIsIHRoaXMsIHRvU3RyaW5nKG1fYnVmZmVyZWQtPnJhbmdlcygpKS51dGY4KCku
ZGF0YSgpKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpldmljdENvZGVkRnJhbWVz
KHNpemVfdCBuZXdEYXRhU2l6ZSwgc2l6ZV90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHNp
emVfdCBtYXhpbXVtQnVmZmVyU2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50VGltZSwgY29u
c3QgTWVkaWFUaW1lJiBkdXJhdGlvbiwgYm9vbCBpc0VuZGVkKQordm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlOjpldmljdENvZGVkRnJhbWVzKHVpbnQ2NF90IG5ld0RhdGFTaXplLCB1aW50NjRfdCBw
ZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSwgY29u
c3QgTWVkaWFUaW1lJiBjdXJyZW50VGltZSwgY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbiwgYm9v
bCBpc0VuZGVkKQogewogICAgIC8vIDMuNS4xMyBDb2RlZCBGcmFtZSBFdmljdGlvbiBBbGdvcml0
aG0KICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9tZWRpYS1zb3VyY2UvI3NvdXJjZWJ1ZmZl
ci1jb2RlZC1mcmFtZS1ldmljdGlvbgpAQCAtNTk0LDcgKzYxOSw3IEBAIHZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZTo6ZXZpY3RDb2RlZEZyYW1lcyhzaXplX3QgbmV3RGF0YVNpemUsIHNpemVfdCBw
ZW5kaW5nQXBwCiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQgJiYgZmFsc2UKICAgICBERUJV
R19MT0coTE9HSURFTlRJRklFUiwgImN1cnJlbnRUaW1lID0gIiwgY3VycmVudFRpbWUsICIsIHJl
cXVpcmUgIiwgZXh0cmFNZW1vcnlDb3N0KCkgKyBuZXdEYXRhU2l6ZSwgIiBieXRlcywgbWF4aW11
bSBidWZmZXIgc2l6ZSBpcyAiLCBtYXhpbXVtQnVmZmVyU2l6ZSk7Ci0gICAgc2l6ZV90IGluaXRp
YWxCdWZmZXJlZFNpemUgPSBleHRyYU1lbW9yeUNvc3QoKTsKKyAgICB1aW50NjRfdCBpbml0aWFs
QnVmZmVyZWRTaXplID0gZXh0cmFNZW1vcnlDb3N0KCk7CiAjZW5kaWYKIAogICAgIE1lZGlhVGlt
ZSByYW5nZVN0YXJ0ID0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpOwpAQCAtNjIzLDEwICs2NDgsMTAg
QEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpldmljdENvZGVkRnJhbWVzKHNpemVfdCBuZXdE
YXRhU2l6ZSwgc2l6ZV90IHBlbmRpbmdBcHAKICAgICAvLyB0aGUgY3VycmVudCBidWZmZXJlZCBy
YW5nZSksIGRlbGV0ZSAzMCBzZWNvbmRzIGF0IGEgdGltZSBmcm9tIGR1cmF0aW9uIGJhY2sgdG8g
dGhlIGN1cnJlbnQgdGltZSByYW5nZSBvciAzMCBzZWNvbmRzIGFmdGVyCiAgICAgLy8gY3VycmVu
VGltZSB3aGljaGV2ZXIgd2UgaGl0IGZpcnN0LgogICAgIGF1dG8gYnVmZmVyZWQgPSBtX2J1ZmZl
cmVkLT5yYW5nZXMoKTsKLSAgICBzaXplX3QgY3VycmVudFRpbWVSYW5nZSA9IGJ1ZmZlcmVkLmZp
bmQoY3VycmVudFRpbWUpOworICAgIHVpbnQ2NF90IGN1cnJlbnRUaW1lUmFuZ2UgPSBidWZmZXJl
ZC5maW5kKGN1cnJlbnRUaW1lKTsKICAgICBpZiAoY3VycmVudFRpbWVSYW5nZSA9PSBidWZmZXJl
ZC5sZW5ndGgoKSAtIDEpIHsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQgJiYgZmFsc2UKLSAg
ICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIkZBSUxFRCB0byBmcmVlIGVub3VnaCBhZnRlciBl
dmljdGluZyAiLCBpbml0aWFsQnVmZmVyZWRTaXplIC0gZXh0cmFNZW1vcnlDb3N0KCkpOworICAg
ICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIkZBSUxFRCB0byBmcmVlIGVub3VnaCBhZnRl
ciBldmljdGluZyAiLCBpbml0aWFsQnVmZmVyZWRTaXplIC0gZXh0cmFNZW1vcnlDb3N0KCkpOwog
I2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02MzYsNyArNjYxLDcgQEAgdm9pZCBT
b3VyY2VCdWZmZXJQcml2YXRlOjpldmljdENvZGVkRnJhbWVzKHNpemVfdCBuZXdEYXRhU2l6ZSwg
c2l6ZV90IHBlbmRpbmdBcHAKICAgICByYW5nZUVuZCA9IGR1cmF0aW9uOwogICAgIGlmICghcmFu
Z2VFbmQuaXNGaW5pdGUoKSkgewogICAgICAgICByYW5nZUVuZCA9IGJ1ZmZlcmVkLm1heGltdW1C
dWZmZXJlZFRpbWUoKTsKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQgJiYgZmFsc2UKKyNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsICJN
ZWRpYVNvdXJjZSBkdXJhdGlvbiBpcyBub3QgYSBmaW5pdGUgdmFsdWUsIHVzaW5nIG1heGltdW0g
YnVmZmVyZWQgdGltZTogIiwgcmFuZ2VFbmQpOwogI2VuZGlmCiAgICAgfQpAQCAtNjQ0LDkgKzY2
OSw5IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZXZpY3RDb2RlZEZyYW1lcyhzaXplX3Qg
bmV3RGF0YVNpemUsIHNpemVfdCBwZW5kaW5nQXBwCiAgICAgcmFuZ2VTdGFydCA9IHJhbmdlRW5k
IC0gdGhpcnR5U2Vjb25kczsKICAgICB3aGlsZSAocmFuZ2VTdGFydCA+IG1pbmltdW1SYW5nZVN0
YXJ0KSB7CiAgICAgICAgIC8vIERvIG5vdCBldmljdCBkYXRhIGZyb20gdGhlIHRpbWUgcmFuZ2Ug
dGhhdCBjb250YWlucyBjdXJyZW50VGltZS4KLSAgICAgICAgc2l6ZV90IHN0YXJ0VGltZVJhbmdl
ID0gYnVmZmVyZWQuZmluZChyYW5nZVN0YXJ0KTsKKyAgICAgICAgdWludDY0X3Qgc3RhcnRUaW1l
UmFuZ2UgPSBidWZmZXJlZC5maW5kKHJhbmdlU3RhcnQpOwogICAgICAgICBpZiAoY3VycmVudFRp
bWVSYW5nZSAhPSBub3RGb3VuZCAmJiBzdGFydFRpbWVSYW5nZSA9PSBjdXJyZW50VGltZVJhbmdl
KSB7Ci0gICAgICAgICAgICBzaXplX3QgZW5kVGltZVJhbmdlID0gYnVmZmVyZWQuZmluZChyYW5n
ZUVuZCk7CisgICAgICAgICAgICB1aW50NjRfdCBlbmRUaW1lUmFuZ2UgPSBidWZmZXJlZC5maW5k
KHJhbmdlRW5kKTsKICAgICAgICAgICAgIGlmIChjdXJyZW50VGltZVJhbmdlICE9IG5vdEZvdW5k
ICYmIGVuZFRpbWVSYW5nZSA9PSBjdXJyZW50VGltZVJhbmdlKQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogCkBAIC02NzQsMjIgKzY5OSwyNSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmV2
aWN0Q29kZWRGcmFtZXMoc2l6ZV90IG5ld0RhdGFTaXplLCBzaXplX3QgcGVuZGluZ0FwcAogI2Vu
ZGlmCiB9CiAKLXNpemVfdCBTb3VyY2VCdWZmZXJQcml2YXRlOjp0b3RhbFRyYWNrQnVmZmVyU2l6
ZUluQnl0ZXMoKSBjb25zdAordWludDY0X3QgU291cmNlQnVmZmVyUHJpdmF0ZTo6dG90YWxUcmFj
a0J1ZmZlclNpemVJbkJ5dGVzKCkgY29uc3QKIHsKLSAgICBzaXplX3QgdG90YWxTaXplSW5CeXRl
cyA9IDA7CisgICAgdWludDY0X3QgdG90YWxTaXplSW5CeXRlcyA9IDA7CiAgICAgZm9yIChhdXRv
JiB0cmFja0J1ZmZlciA6IG1fdHJhY2tCdWZmZXJNYXAudmFsdWVzKCkpCiAgICAgICAgIHRvdGFs
U2l6ZUluQnl0ZXMgKz0gdHJhY2tCdWZmZXIuc2FtcGxlcy5zaXplSW5CeXRlcygpOwogCiAgICAg
cmV0dXJuIHRvdGFsU2l6ZUluQnl0ZXM7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6
YWRkVHJhY2tCdWZmZXIoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJZCwgUmVmUHRyPE1lZGlhRGVz
Y3JpcHRpb24+IGRlc2NyaXB0aW9uKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjphZGRUcmFj
a0J1ZmZlcihjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lkLCBSZWZQdHI8TWVkaWFEZXNjcmlwdGlv
bj4mJiBkZXNjcmlwdGlvbikKIHsKICAgICBBU1NFUlQoIW1fdHJhY2tCdWZmZXJNYXAuY29udGFp
bnModHJhY2tJZCkpOwogICAgIGF1dG8mIHRyYWNrQnVmZmVyID0gbV90cmFja0J1ZmZlck1hcC5h
ZGQodHJhY2tJZCwgVHJhY2tCdWZmZXIoKSkuaXRlcmF0b3ItPnZhbHVlOwogCiAgICAgLy8gNS4y
LjkgQWRkIHRoZSB0cmFjayBkZXNjcmlwdGlvbiBmb3IgdGhpcyB0cmFjayB0byB0aGUgdHJhY2sg
YnVmZmVyLgogICAgIHRyYWNrQnVmZmVyLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247CisKKyAg
ICBtX2hhc0F1ZGlvID0gbV9oYXNBdWRpbyB8fCB0cmFja0J1ZmZlci5kZXNjcmlwdGlvbi0+aXNB
dWRpbygpOworICAgIG1faGFzVmlkZW8gPSBtX2hhc1ZpZGVvIHx8IHRyYWNrQnVmZmVyLmRlc2Ny
aXB0aW9uLT5pc1ZpZGVvKCk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6dXBkYXRl
VHJhY2tJZHMoVmVjdG9yPHN0ZDo6cGFpcjxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPj4mJiB0cmFj
a0lkUGFpcnMpCkBAIC03MDksMTcgKzczNywxOSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6
OnNldEFsbFRyYWNrQnVmZmVyc05lZWRSYW5kb21BY2Nlc3MoKQogICAgICAgICB0cmFja0J1ZmZl
ci5uZWVkUmFuZG9tQWNjZXNzRmxhZyA9IHRydWU7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZTo6ZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBTb3VyY2VCdWZmZXJQ
cml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQmIHNlZ21lbnQpCit2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoU291cmNlQnVm
ZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGlmICghbV9j
bGllbnQpCisgICAgaWYgKCFtX2NsaWVudCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigp
OwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgaWYgKG1fcmVjZWl2ZWRGaXJzdEluaXRp
YWxpemF0aW9uU2VnbWVudCAmJiAhdmFsaWRhdGVJbml0aWFsaXphdGlvblNlZ21lbnQoc2VnbWVu
dCkpIHsKICAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRFcnJvcih0
cnVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY2xpZW50LT5zb3VyY2VCdWZm
ZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChzZWdtZW50KTsKKyAgICBt
X2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21l
bnQoV1RGTW92ZShzZWdtZW50KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCiAgICAg
bV9yZWNlaXZlZEZpcnN0SW5pdGlhbGl6YXRpb25TZWdtZW50ID0gdHJ1ZTsKICAgICBtX3BlbmRp
bmdJbml0aWFsaXphdGlvblNlZ21lbnRGb3JDaGFuZ2VUeXBlID0gZmFsc2U7CkBAIC0xMTgwLDEx
ICsxMjEwLDExIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZVNhbXBsZShN
ZWRpYVNhbXBsZSYgc2FtcGxlKQogICAgICAgICAvLyBkaXNqb2ludCByYW5nZXMgc2VwYXJhdGVk
IGJ5IGxlc3MgdGhhbiBhICJmdWRnZSBmYWN0b3IiLgogICAgICAgICBhdXRvIHByZXNlbnRhdGlv
bkVuZFRpbWUgPSBwcmVzZW50YXRpb25UaW1lc3RhbXAgKyBmcmFtZUR1cmF0aW9uOwogICAgICAg
ICBhdXRvIG5lYXJlc3RUb1ByZXNlbnRhdGlvblN0YXJ0VGltZSA9IHRyYWNrQnVmZmVyLmJ1ZmZl
cmVkLm5lYXJlc3QocHJlc2VudGF0aW9uVGltZXN0YW1wKTsKLSAgICAgICAgaWYgKG5lYXJlc3RU
b1ByZXNlbnRhdGlvblN0YXJ0VGltZS5pc1ZhbGlkKCkgJiYgKHByZXNlbnRhdGlvblRpbWVzdGFt
cCAtIG5lYXJlc3RUb1ByZXNlbnRhdGlvblN0YXJ0VGltZSkuaXNCZXR3ZWVuKE1lZGlhVGltZTo6
emVyb1RpbWUoKSwgbV9jdXJyZW50VGltZUZ1ZGdlRmFjdG9yKSkKKyAgICAgICAgaWYgKG5lYXJl
c3RUb1ByZXNlbnRhdGlvblN0YXJ0VGltZS5pc1ZhbGlkKCkgJiYgKHByZXNlbnRhdGlvblRpbWVz
dGFtcCAtIG5lYXJlc3RUb1ByZXNlbnRhdGlvblN0YXJ0VGltZSkuaXNCZXR3ZWVuKE1lZGlhVGlt
ZTo6emVyb1RpbWUoKSwgdGltZUZ1ZGdlRmFjdG9yKCkpKQogICAgICAgICAgICAgcHJlc2VudGF0
aW9uVGltZXN0YW1wID0gbmVhcmVzdFRvUHJlc2VudGF0aW9uU3RhcnRUaW1lOwogCiAgICAgICAg
IGF1dG8gbmVhcmVzdFRvUHJlc2VudGF0aW9uRW5kVGltZSA9IHRyYWNrQnVmZmVyLmJ1ZmZlcmVk
Lm5lYXJlc3QocHJlc2VudGF0aW9uRW5kVGltZSk7Ci0gICAgICAgIGlmIChuZWFyZXN0VG9QcmVz
ZW50YXRpb25FbmRUaW1lLmlzVmFsaWQoKSAmJiAobmVhcmVzdFRvUHJlc2VudGF0aW9uRW5kVGlt
ZSAtIHByZXNlbnRhdGlvbkVuZFRpbWUpLmlzQmV0d2VlbihNZWRpYVRpbWU6Onplcm9UaW1lKCks
IG1fY3VycmVudFRpbWVGdWRnZUZhY3RvcikpCisgICAgICAgIGlmIChuZWFyZXN0VG9QcmVzZW50
YXRpb25FbmRUaW1lLmlzVmFsaWQoKSAmJiAobmVhcmVzdFRvUHJlc2VudGF0aW9uRW5kVGltZSAt
IHByZXNlbnRhdGlvbkVuZFRpbWUpLmlzQmV0d2VlbihNZWRpYVRpbWU6Onplcm9UaW1lKCksIHRp
bWVGdWRnZUZhY3RvcigpKSkKICAgICAgICAgICAgIHByZXNlbnRhdGlvbkVuZFRpbWUgPSBuZWFy
ZXN0VG9QcmVzZW50YXRpb25FbmRUaW1lOwogCiAgICAgICAgIHRyYWNrQnVmZmVyLmJ1ZmZlcmVk
LmFkZChwcmVzZW50YXRpb25UaW1lc3RhbXAsIHByZXNlbnRhdGlvbkVuZFRpbWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0
ZS5oCmluZGV4IDExZGZmMzQ5YmVjN2Q3ZTljMjIzMTczNmE0NmQ0OGU3N2U0NzZiN2EuLjQwMWRi
ZDc3YmQyMDRiOThjMjgzZmNhMWZkNTQyMDljOTdmZWViMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKQEAgLTYz
LDggKzYzLDkgQEAgY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZQogewogcHVibGljOgogICAgIFdF
QkNPUkVfRVhQT1JUIFNvdXJjZUJ1ZmZlclByaXZhdGUoKTsKLSAgICB2aXJ0dWFsIH5Tb3VyY2VC
dWZmZXJQcml2YXRlKCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNv
dXJjZUJ1ZmZlclByaXZhdGUoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0
UGFyc2VyU3RhdGUoKSA9IDA7CkBAIC03Miw0MCArNzMsMzkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0ID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSkgPSAwOwog
Ci0gICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wg
Y2FuU3dpdGNoVG9UeXBlKGNvbnN0IENvbnRlbnRUeXBlJikgeyByZXR1cm4gZmFsc2U7IH0KIAor
ICAgIHZpcnR1YWwgdm9pZCByZWVucXVldWVNZWRpYUlmTmVlZGVkKGNvbnN0IE1lZGlhVGltZSYg
Y3VycmVudE1lZGlhVGltZSwgdWludDY0X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgdWlu
dDY0X3QgbWF4aW11bUJ1ZmZlclNpemUpOworICAgIHZpcnR1YWwgdm9pZCBhZGRUcmFja0J1ZmZl
cihjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lkLCBSZWZQdHI8TWVkaWFEZXNjcmlwdGlvbj4mJik7
CisgICAgdmlydHVhbCB2b2lkIHRyeVNpZ25hbEFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tC
dWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2
b2lkIGV2aWN0Q29kZWRGcmFtZXModWludDY0X3QgbmV3RGF0YVNpemUsIHVpbnQ2NF90IHBlbmRp
bmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplLCBjb25zdCBN
ZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uLCBib29sIGlz
RW5kZWQpOworCiAgICAgdm9pZCBzZXRDbGllbnQoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCog
Y2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAgICAgdm9pZCBzZXRJc0F0dGFjaGVkKGJv
b2wgZmxhZykgeyBtX2lzQXR0YWNoZWQgPSBmbGFnOyB9Ci0gICAgdm9pZCBzZXRDdXJyZW50VGlt
ZUZ1ZGdlRmFjdG9yKGNvbnN0IE1lZGlhVGltZSYgdGltZSkgeyBtX2N1cnJlbnRUaW1lRnVkZ2VG
YWN0b3IgPSB0aW1lOyB9CisgICAgYm9vbCBoYXNBdWRpbygpIGNvbnN0IHsgcmV0dXJuIG1faGFz
QXVkaW87IH0KKyAgICBib29sIGhhc1ZpZGVvKCkgY29uc3QgeyByZXR1cm4gbV9oYXNWaWRlbzsg
fQogICAgIHZvaWQgc2V0QXBwZW5kV2luZG93U3RhcnQoY29uc3QgTWVkaWFUaW1lJiBhcHBlbmRX
aW5kb3dTdGFydCkgeyBtX2FwcGVuZFdpbmRvd1N0YXJ0ID0gYXBwZW5kV2luZG93U3RhcnQ7fQog
ICAgIHZvaWQgc2V0QXBwZW5kV2luZG93RW5kKGNvbnN0IE1lZGlhVGltZSYgYXBwZW5kV2luZG93
RW5kKSB7IG1fYXBwZW5kV2luZG93RW5kID0gYXBwZW5kV2luZG93RW5kOyB9CiAgICAgYm9vbCBi
dWZmZXJGdWxsKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJGdWxsOyB9Ci0gICAgVGltZVJhbmdl
cyogYnVmZmVyZWQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcmVkLmdldCgpOyB9Ci0gICAgYm9v
bCBpc0J1ZmZlcmVkRGlydHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcmVkRGlydHk7IH0KLSAg
ICB2b2lkIHNldEJ1ZmZlcmVkRGlydHkoYm9vbCBmbGFnKSB7IG1fYnVmZmVyZWREaXJ0eSA9IGZs
YWc7IH0KKworICAgIHZvaWQgc2V0QnVmZmVyZWREaXJ0eShib29sKTsKICAgICB2b2lkIHJlc2V0
VHJhY2tCdWZmZXJzKCk7CiAgICAgdm9pZCBjbGVhclRyYWNrQnVmZmVycygpOwogICAgIHZvaWQg
cmVzZXRUaW1lc3RhbXBPZmZzZXRJblRyYWNrQnVmZmVycygpOwogICAgIE1lZGlhVGltZSB0aW1l
c3RhbXBPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3RpbWVzdGFtcE9mZnNldDsgfQogICAgIHZv
aWQgc2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IE1lZGlhVGltZSYgdGltZXN0YW1wT2Zmc2V0KSB7
IG1fdGltZXN0YW1wT2Zmc2V0ID0gdGltZXN0YW1wT2Zmc2V0OyB9CiAgICAgTWVkaWFUaW1lIGhp
Z2hlc3RQcmVzZW50YXRpb25UaW1lc3RhbXAoKSBjb25zdDsKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZl
cmVkRnJvbVRyYWNrQnVmZmVycyhib29sIHNvdXJjZUlzRW5kZWQpOwogICAgIHZvaWQgc2Vla1Rv
VGltZShjb25zdCBNZWRpYVRpbWUmKTsKLSAgICB2b2lkIHRyeVNpZ25hbEFsbFNhbXBsZXNJblRy
YWNrRW5xdWV1ZWQoKTsKICAgICB2b2lkIHN0YXJ0Q2hhbmdpbmdUeXBlKCkgeyBtX3BlbmRpbmdJ
bml0aWFsaXphdGlvblNlZ21lbnRGb3JDaGFuZ2VUeXBlID0gdHJ1ZTsgfQotCi0gICAgdm9pZCBy
ZWVucXVldWVNZWRpYUlmTmVlZGVkKGNvbnN0IE1lZGlhVGltZSYgY3VycmVudE1lZGlhVGltZSwg
c2l6ZV90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHNpemVfdCBtYXhpbXVtQnVmZmVyU2l6
ZSk7CiAgICAgdm9pZCByZW1vdmVDb2RlZEZyYW1lcyhjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBj
b25zdCBNZWRpYVRpbWUmIGVuZCwgY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50TWVkaWFUaW1lLCBi
b29sIGlzRW5kZWQpOwotICAgIHZvaWQgZXZpY3RDb2RlZEZyYW1lcyhzaXplX3QgbmV3RGF0YVNp
emUsIHNpemVfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCBzaXplX3QgbWF4aW11bUJ1ZmZl
clNpemUsIGNvbnN0IE1lZGlhVGltZSYgY3VycmVudFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgZHVy
YXRpb24sIGJvb2wgaXNFbmRlZCk7Ci0gICAgdm9pZCBhZGRUcmFja0J1ZmZlcihjb25zdCBBdG9t
U3RyaW5nJiB0cmFja0lkLCBSZWZQdHI8TWVkaWFEZXNjcmlwdGlvbj4pOwogICAgIHZvaWQgdXBk
YXRlVHJhY2tJZHMoVmVjdG9yPHN0ZDo6cGFpcjxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPj4mJiB0
cmFja0lkUGFpcnMpOwogICAgIHZvaWQgc2V0QWxsVHJhY2tCdWZmZXJzTmVlZFJhbmRvbUFjY2Vz
cygpOwogICAgIHZvaWQgc2V0U2hvdWxkR2VuZXJhdGVUaW1lc3RhbXBzKGJvb2wgZmxhZykgeyBt
X3Nob3VsZEdlbmVyYXRlVGltZXN0YW1wcyA9IGZsYWc7IH0KICAgICB2b2lkIHNldE1vZGUoU291
cmNlQnVmZmVyQXBwZW5kTW9kZSBtb2RlKSB7IG1fYXBwZW5kTW9kZSA9IG1vZGU7IH0KICAgICB2
b2lkIHNldEdyb3VwU3RhcnRUaW1lc3RhbXAoY29uc3QgTWVkaWFUaW1lJiBtZWRpYVRpbWUpIHsg
bV9ncm91cFN0YXJ0VGltZXN0YW1wID0gbWVkaWFUaW1lOyB9CiAgICAgdm9pZCBzZXRHcm91cFN0
YXJ0VGltZXN0YW1wVG9FbmRUaW1lc3RhbXAoKSB7IG1fZ3JvdXBTdGFydFRpbWVzdGFtcCA9IG1f
Z3JvdXBFbmRUaW1lc3RhbXA7IH0KLSAgICBzaXplX3QgdG90YWxUcmFja0J1ZmZlclNpemVJbkJ5
dGVzKCkgY29uc3Q7CisgICAgdWludDY0X3QgdG90YWxUcmFja0J1ZmZlclNpemVJbkJ5dGVzKCkg
Y29uc3Q7CiAKICAgICBzdHJ1Y3QgVHJhY2tCdWZmZXIgewogICAgICAgICBNZWRpYVRpbWUgbGFz
dERlY29kZVRpbWVzdGFtcDsKQEAgLTEzNCw3ICsxMzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBWZWN0b3I8U3RyaW5nPiBlbnF1ZXVlZFNhbXBsZXNGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJp
bmcmKSB7IHJldHVybiB7IH07IH0KICAgICBWZWN0b3I8U3RyaW5nPiBidWZmZXJlZFNhbXBsZXNG
b3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmKTsKICAgICB2aXJ0dWFsIE1lZGlhVGltZSBtaW5p
bXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJikg
eyByZXR1cm4gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNl
dE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJiwgc2l6ZV90KSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JUcmFja0lEKGNvbnN0
IEF0b21TdHJpbmcmLCB1aW50NjRfdCkgeyB9CiAgICAgTWVkaWFUaW1lIGZhc3RTZWVrVGltZUZv
ck1lZGlhVGltZShjb25zdCBNZWRpYVRpbWUmIHRhcmdldFRpbWUsIGNvbnN0IE1lZGlhVGltZSYg
bmVnYXRpdmVUaHJlc2hvbGQsIGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpdmVUaHJlc2hvbGQpOwog
CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0xNDMsNiArMTQzLDcgQEAgcHVibGljOgog
I2VuZGlmCiAKIHByb3RlY3RlZDoKKyAgICB2aXJ0dWFsIE1lZGlhVGltZSB0aW1lRnVkZ2VGYWN0
b3IoKSBjb25zdCB7IHJldHVybiB7MjAwMiwgMjQwMDB9OyB9CiAgICAgdmlydHVhbCBib29sIGlz
QWN0aXZlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTZWVr
aW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIE1lZGlhVGltZSBjdXJy
ZW50TWVkaWFUaW1lKCkgY29uc3QgeyByZXR1cm4geyB9OyB9CkBAIC0xNTcsOCArMTU4LDkgQEAg
cHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBzZXRNaW5pbXVtVXBjb21pbmdQcmVzZW50YXRp
b25UaW1lKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBNZWRpYVRpbWUmKSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgY2xlYXJNaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lKGNvbnN0IEF0b21T
dHJpbmcmKSB7IH0KIAorICAgIHZvaWQgYXBwZW5kQ29tcGxldGVkKGJvb2wgcGFyc2luZ1N1Y2Nl
ZWRlZCwgYm9vbCBpc0VuZGVkKTsKICAgICB2b2lkIHJlZW5xdWVTYW1wbGVzKGNvbnN0IEF0b21T
dHJpbmcmIHRyYWNrSUQpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVu
dChjb25zdCBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQm
KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoU291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50JiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2FtcGxlKE1lZGlhU2FtcGxlJik7CiAg
ICAgdm9pZCBwcm92aWRlTWVkaWFEYXRhKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpOwogCkBA
IC0xNjksMTEgKzE3MSwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVlbnF1ZXVlTWVkaWFGb3JU
aW1lKFRyYWNrQnVmZmVyJiwgY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCwgY29uc3QgTWVkaWFU
aW1lJik7CiAgICAgYm9vbCB2YWxpZGF0ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQmKTsKICAgICB2b2lk
IHByb3ZpZGVNZWRpYURhdGEoVHJhY2tCdWZmZXImLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lE
KTsKKyAgICB2b2lkIHNldEJ1ZmZlcmVkUmFuZ2VzKGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYp
OwogCiAgICAgYm9vbCBtX2lzQXR0YWNoZWQgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNBdWRp
byB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1ZpZGVvIHsgZmFsc2UgfTsKIAogICAgIEhhc2hN
YXA8QXRvbVN0cmluZywgVHJhY2tCdWZmZXI+IG1fdHJhY2tCdWZmZXJNYXA7Ci0gICAgTWVkaWFU
aW1lIG1fY3VycmVudFRpbWVGdWRnZUZhY3RvcjsKIAogICAgIFNvdXJjZUJ1ZmZlckFwcGVuZE1v
ZGUgbV9hcHBlbmRNb2RlIHsgU291cmNlQnVmZmVyQXBwZW5kTW9kZTo6U2VnbWVudHMgfTsKIApA
QCAtMTkwLDcgKzE5NCw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fYnVmZmVyRnVsbCB7IGZh
bHNlIH07CiAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IG1fYnVmZmVyZWQ7Ci0gICAgYm9vbCBtX2J1
ZmZlcmVkRGlydHkgeyB0cnVlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2
YXRlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50LmgKaW5kZXggZWNkM2M3NjNmMTI0YjdjMGQ0Yzc1OTViZDNhNmFmMTY1
YzNkOTQzYi4uYTdmMDQxMmYxNDA5MjA1NTEyYTQzOWNmOGIxYTRlMzBjY2NkZmQ1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1
ZmZlclByaXZhdGVDbGllbnQuaApAQCAtMzYsNiArMzYsNyBAQCBjbGFzcyBBdWRpb1RyYWNrUHJp
dmF0ZTsKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGU7CiBjbGFzcyBNZWRpYVNhbXBsZTsK
IGNsYXNzIE1lZGlhRGVzY3JpcHRpb247CitjbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXM7CiBjbGFz
cyBWaWRlb1RyYWNrUHJpdmF0ZTsKIAogY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCB7
CkBAIC02MywyMSArNjQsMjIgQEAgcHVibGljOgogICAgICAgICB9OwogICAgICAgICBWZWN0b3I8
VGV4dFRyYWNrSW5mb3JtYXRpb24+IHRleHRUcmFja3M7CiAgICAgfTsKLSAgICB2aXJ0dWFsIHZv
aWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29u
c3QgSW5pdGlhbGl6YXRpb25TZWdtZW50JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VC
dWZmZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9vbCBkZWNvZGVFcnJvcikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGlt
ZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2Ft
cGxlKGRvdWJsZSBmcmFtZUR1cmF0aW9uKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1
ZmZlclByaXZhdGVEaWREcm9wU2FtcGxlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VC
dWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0aWFsaXphdGlv
blNlZ21lbnQmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVTdHJlYW1FbmRlZFdpdGhEZWNvZGVFcnJvcigpID0g
MDsKLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlvKCkgY29uc3Qg
PSAwOwotICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VCdWZmZXJQcml2YXRlSGFzVmlkZW8oKSBjb25z
dCA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZEVycm9y
KGJvb2wgZGVjb2RlRXJyb3IpID0gMDsKICAgICBlbnVtIGNsYXNzIEFwcGVuZFJlc3VsdCA6IHVp
bnQ4X3QgewogICAgICAgICBBcHBlbmRTdWNjZWVkZWQsCiAgICAgICAgIFJlYWRTdHJlYW1GYWls
ZWQsCiAgICAgICAgIFBhcnNpbmdGYWlsZWQKICAgICB9OwogICAgIHZpcnR1YWwgdm9pZCBzb3Vy
Y2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoQXBwZW5kUmVzdWx0KSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFU
aW1lJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VT
YW1wbGUoZG91YmxlIGZyYW1lRHVyYXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc291cmNl
QnVmZmVyUHJpdmF0ZURpZERyb3BTYW1wbGUoKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNvdXJj
ZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZChib29sKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQoY29uc3QgUGxh
dGZvcm1UaW1lUmFuZ2VzJikgPSAwOworCiAgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclBy
aXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJyb3IoaW50IGVycm9yQ29kZSkgPSAwOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1By
aXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2
YXRlLmgKaW5kZXggMGM0MTNjMmRkZjVkOWRhMmExNWIxMTM1YzA4ZTUxMDg1MmI4MDJjNi4uZWE1
YTI5Y2ViNWNmZTlmMDI0MjdjNWVhZGRjMTY0Mjc0Y2I2ZDYwOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oCkBAIC02NCw3
ICs2NCw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBTZWxlY3RlZENoYW5nZWRDYWxsYmFjayA9IEZ1
bmN0aW9uPHZvaWQoVmlkZW9UcmFja1ByaXZhdGUmLCBib29sIHNlbGVjdGVkKT47CiAgICAgdm9p
ZCBzZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFjayhTZWxlY3RlZENoYW5nZWRDYWxsYmFjayYmIGNh
bGxiYWNrKSB7IG1fc2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsg
fQogCi0KIHByb3RlY3RlZDoKICAgICBWaWRlb1RyYWNrUHJpdmF0ZSgpID0gZGVmYXVsdDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5o
CmluZGV4IDExMzZmZDI1MmI4MmZlY2M3NmI3ZTk4ZmI0ZDhlYmFiNWNlZWI5NDUuLjY4Y2ZkNTIz
NDZiOWMzNThjZDNkMTc1MDkzYzU3ZGM4ZDc5NzhiYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgKQEAgLTYyLDE0ICs2MiwxNSBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBjcmVh
dGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiwgTWVkaWFTb3VyY2VQcml2
YXRlQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQygpOwog
Ci0gICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBwbGF5ZXIoKSBjb25z
dCB7IHJldHVybiBtX3BsYXllcjsgfQorICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQyogcGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXIuZ2V0KCk7IH0KICAgICBj
b25zdCBWZWN0b3I8UmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPj4mIHNvdXJjZUJ1
ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUJ1ZmZlcnM7IH0KICAgICBjb25zdCBWZWN0
b3I8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqPiYgYWN0aXZlU291cmNlQnVmZmVycygpIGNv
bnN0IHsgcmV0dXJuIG1fYWN0aXZlU291cmNlQnVmZmVyczsgfQogCiAgICAgQWRkU3RhdHVzIGFk
ZFNvdXJjZUJ1ZmZlcihjb25zdCBDb250ZW50VHlwZSYsIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2
YXRlPiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBtYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMpIG92ZXJyaWRlOwogICAgIHZv
aWQgdW5tYXJrRW5kT2ZTdHJlYW0oKSBvdmVycmlkZTsKKyAgICBib29sIGlzRW5kZWQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2lzRW5kZWQ7IH0KICAgICBNZWRpYVBsYXllcjo6UmVhZHlT
dGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSZWFkeVN0YXRl
KE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKSBvdmVycmlkZTsKICAgICB2b2lkIHdhaXRGb3JTZWVr
Q29tcGxldGVkKCkgb3ZlcnJpZGU7CkBAIC0xMjksNyArMTMwLDcgQEAgcHJpdmF0ZToKIAogICAg
IGZyaWVuZCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzsKIAotICAgIE1lZGlhUGxh
eWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyogbV9wbGF5ZXI7CisgICAgV2Vha1B0cjxNZWRp
YVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IG1fcGxheWVyOwogICAgIFJlZlB0cjxN
ZWRpYVNvdXJjZVByaXZhdGVDbGllbnQ+IG1fY2xpZW50OwogICAgIFZlY3RvcjxSZWZQdHI8U291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+PiBtX3NvdXJjZUJ1ZmZlcnM7CiAgICAgVmVjdG9yPFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKj4gbV9hY3RpdmVTb3VyY2VCdWZmZXJzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMubW0KaW5k
ZXggYjAwMzkzMWM3ZDc1OWYyOWQ5ZTA2NmZiMTIwMjMwN2NmNTI0OTU2Ni4uNTZmZDg5NTE5YzRh
MmJiZmU5OTgxZGY4ZGQyZmQyNTA5MzlhYTVjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCkBAIC01NCw3ICs1NCw3IEBAIFJl
ZjxNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpj
cmVhdGUoTWVkaWFQbGF5ZXJQcml2CiB9CiAKIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6Ok1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakMoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDKiBwYXJlbnQsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCogY2xpZW50KQotICAgIDogbV9w
bGF5ZXIocGFyZW50KQorICAgIDogbV9wbGF5ZXIobWFrZVdlYWtQdHIocGFyZW50KSkKICAgICAs
IG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1faXNFbmRlZChmYWxzZSkKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1U
aW1lUmFuZ2VzPiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpidWZmZXJlZCgpCiAgICAgcmV0
dXJuIG1fY2xpZW50LT5idWZmZXJlZCgpOwogfQogCi12b2lkIE1lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakM6OmR1cmF0aW9uQ2hhbmdlZCgpCit2b2lkIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6
OmR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmKQogewogICAgIG1fcGxheWVyLT5kdXJh
dGlvbkNoYW5nZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclBhcnNlckFWRk9iakMuaAppbmRleCA1NDY1MzJiYTE5ZWE0NGY4ZmFmNDlhZDE5NzUyMWY5
N2U4ZTFlZTY4Li4yYjE1MzliNTEyODZhNjYxNzU2OGNmNTBlMzYzNDRlZmJhYzFhZjIyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5o
CkBAIC0yOCw3ICsyOCwxMCBAQAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCiAKICNpbmNsdWRl
ICJTb3VyY2VCdWZmZXJQYXJzZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CisjaW5j
bHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CisjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIE9CSkNfQ0xBU1MgQVZB
c3NldDsKQEAgLTc4LDYgKzgxLDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Rpc2NhcmRTYW1w
bGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1f
cGFyc2VyU3RhdGVXYXNSZXNldCB7IGZhbHNlIH07CiAKKyAgICBMb2NrIG1fdHJhY2tCdWZmZXJN
YW5hZ2VyUmVhZHlNdXRleDsKKyAgICBDb25kaXRpb24gbV9pbml0aWFsaXphdGlvblNlZ21lbnRJ
c0hhbmRsZWRDb25kaXRpb247CisgICAgYm9vbCBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFu
ZGxlZCB7IGZhbHNlIH07CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBSZWZQdHI8
Y29uc3QgV1RGOjpMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRp
ZmllciB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IDM1ZDlmNTUwYzNiMjEwNDFhZWY3ZDJhNjQzYjhh
YWM3YjRhMzk1NWIuLmJmNDY3ODUxNzlkZWVlNTgwNTY5ZTJlMjFkMTk1MTkzMjBhZWUyNzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2Jq
Qy5tbQpAQCAtMjU4LDcgKzI1OCwxMiBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6
OnNldExvZ2dlcihjb25zdCBMb2dnZXImIGxvZ2dlciwgY29uc3Qgdm9pZCogbG9nSQogCiB2b2lk
IFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQoQVZB
c3NldCogYXNzZXQpCiB7Ci0gICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgc3Ryb25nVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBhc3NldCA9IHJldGFpblB0cihhc3NldCldIHsKKyAgICB7CisgICAg
ICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV90cmFja0J1ZmZlck1hbmFnZXJSZWFkeU11dGV4
KTsKKyAgICAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWQgPSBmYWxzZTsKKyAg
ICB9CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBzdHJvbmdUaGlzID0gbWFrZVJlZigq
dGhpcyksIGFzc2V0ID0gcmV0YWluUHRyKGFzc2V0KV0oKSBtdXRhYmxlIHsKICAgICAgICAgbV9k
aXNjYXJkU2FtcGxlc1VudGlsTmV4dEluaXRpYWxpemF0aW9uU2VnbWVudCA9IGZhbHNlOwogCiAg
ICAgICAgIGlmICghbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKQpAQCAtMjk1
LDcgKzMwMCwxMSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFBhcnNlU3Ry
ZWFtRGF0YUFzQXNzZXQoQVZBc3NldCogYXNzZXQpCiAgICAgICAgICAgICAvLyBGSVhNRSgxMjUx
NjEpICAgIDogQWRkIFRleHRUcmFjayBzdXBwb3J0CiAgICAgICAgIH0KIAotICAgICAgICBtX2Rp
ZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soV1RGTW92ZShzZWdtZW50KSk7CisgICAg
ICAgIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhXVEZNb3ZlKHNlZ21lbnQp
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSgpIG11dGFibGUgeworICAg
ICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayhtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5
TXV0ZXgpOworICAgICAgICAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWQgPSB0
cnVlOworICAgICAgICAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWRDb25kaXRp
b24ubm90aWZ5QWxsKCk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCkBAIC0zMTAsNiArMzE5
LDE1IEBAIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkRmFpbFRvUGFyc2VTdHJl
YW1EYXRhV2l0aEVycm9yKE5TRXJyb3IqIGVycm9yCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakM6OmRpZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKHVpbnQ2NF90IHRyYWNrSUQsIENN
U2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVu
c2lnbmVkIGZsYWdzKQogewogICAgIFVOVVNFRF9QQVJBTShmbGFncyk7CisKKyAgICAvLyBXYWl0
IHVudGlsIHRoZSBpbml0aWFsaXphdGlvbiBzZWdtZW50IGlzIGhhbmRsZWQKKyAgICB7CisgICAg
ICAgIHN0ZDo6dW5pcXVlX2xvY2s8TG9jaz4gbG9jayhtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5
TXV0ZXgpOworICAgICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZENvbmRpdGlv
bi53YWl0KGxvY2ssIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAg
ICAgICAgICAgIHJldHVybiBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZDsKKyAgICAg
ICAgfSk7CisgICAgfQorCiAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgc3Ryb25nVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBzYW1wbGVCdWZmZXIgPSByZXRhaW5QdHIoc2FtcGxlQnVmZmVyKSwg
dHJhY2tJRCwgbWVkaWFUeXBlID0gbWVkaWFUeXBlXSB7CiAgICAgICAgIGlmICghbV9kaWRQcm92
aWRlTWVkaWFEYXRhQ2FsbGJhY2spCiAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
YXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAppbmRleCA4YjFl
ZWE2MzAwN2VkNWM0ZDA4NzQ0NmU3NDNiMTNhNGMxY2MwMGJkLi4xZjYyNWIzYzc4ZTgzZTUxMTQ0
ODAwOWJiYzQ0OTU4ZTM2M2FkNGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKQEAgLTkxLDkgKzkxLDcgQEAgcHVibGljOgog
ICAgIHZvaWQgd2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0aW9uRGF0YUZv
clRyYWNrSUQodWludDY0X3QgdHJhY2tJRCk7CiAgICAgdm9pZCBkaWRQcm92aWRlQ29udGVudEtl
eVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKFJlZjxVaW50OEFycmF5PiYmLCB1
aW50NjRfdCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBob3JlPik7CiAKLSAgICBib29sIGhhc1Zp
ZGVvKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNTZWxlY3RlZFZpZGVvKCkgY29uc3Q7Ci0gICAgYm9v
bCBoYXNBdWRpbygpIGNvbnN0OwogCiAgICAgdm9pZCB0cmFja0RpZENoYW5nZVNlbGVjdGVkKFZp
ZGVvVHJhY2tQcml2YXRlJiwgYm9vbCBzZWxlY3RlZCk7CiAgICAgdm9pZCB0cmFja0RpZENoYW5n
ZUVuYWJsZWQoQXVkaW9UcmFja1ByaXZhdGUmLCBib29sIGVuYWJsZWQpOwpAQCAtMTQwLDcgKzEz
OCw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMo
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyosIFJlZjxTb3VyY2VCdWZmZXJQYXJzZXI+JiYpOwog
CiAgICAgdXNpbmcgSW5pdGlhbGl6YXRpb25TZWdtZW50ID0gU291cmNlQnVmZmVyUHJpdmF0ZUNs
aWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OwotICAgIHZvaWQgZGlkUGFyc2VJbml0aWFsaXph
dGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYpOworICAgIHZvaWQgZGlkUGFyc2VJbml0
aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJik7CiAgICAgdm9pZCBkaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmcoaW50
MzJfdCk7CiAgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChSZWY8TWVkaWFT
YW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlKTsKIApA
QCAtMTU0LDYgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmbHVzaChjb25zdCBBdG9tU3Ry
aW5nJiB0cmFja0lEKSBmaW5hbDsKICAgICB2b2lkIGVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2Ft
cGxlPiYmLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKSBmaW5hbDsKICAgICBib29sIGlzUmVh
ZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKSBmaW5hbDsKKyAgICBN
ZWRpYVRpbWUgdGltZUZ1ZGdlRmFjdG9yKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRBY3Rp
dmUoYm9vbCkgZmluYWw7CiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IGZpbmFsOwogICAgIHZv
aWQgbm90aWZ5Q2xpZW50V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYg
dHJhY2tJRCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1
ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDRkNjE0N2U5MTY0OTI0ZjQyZDRkZGVmNGE2YjZm
ODBjNmU1MmMzOGUuLjQzZjNiYzE1MTQwMTk5NTYyOGI0MGZhY2U5YTRiZjQxMTU4MDBhYTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9v
YmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDLm1tCkBAIC0zMDgsMTAgKzMwOCwxNCBAQCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQwogCiAg
ICAgc291cmNlQnVmZmVyTWFwKCkuYWRkKG1fbWFwSUQsIG1ha2VXZWFrUHRyKCp0aGlzKSk7CiAK
LSAgICBtX3BhcnNlci0+c2V0RGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhbd2Vh
a1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKEluaXRpYWxpemF0aW9uU2VnbWVudCYmIHNlZ21l
bnQpIG11dGFibGUgeworICAgIG1fcGFyc2VyLT5zZXREaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0
YUNhbGxiYWNrKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoSW5pdGlhbGl6
YXRpb25TZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
LSAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vha1RoaXMtPmRpZFBhcnNlSW5p
dGlhbGl6YXRpb25EYXRhKFdURk1vdmUoc2VnbWVudCkpOworICAgICAgICBpZiAoIXdlYWtUaGlz
KSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoV1RGTW92
ZShzZWdtZW50KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0pOwogCiAgICAg
bV9wYXJzZXItPnNldERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxiYWNrKFt3ZWFr
VGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoaW50MzJfdCBlcnJvckNvZGUpIG11dGFibGUgewpA
QCAtMzQ0LDEyICszNDgsMTQgQEAgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6On5Tb3VyY2VC
dWZmZXJQcml2YXRlQVZGT2JqQygpCiAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFwaG9yZS0+c2ln
bmFsKCk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5p
dGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVudCYmIHNlZ21lbnQpCit2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0
aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIAot
ICAgIGlmICghbV9tZWRpYVNvdXJjZSkKKyAgICBpZiAoIW1fbWVkaWFTb3VyY2UpIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAogICAgIGlm
IChtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c2hvdWxkQ2hlY2tIYXJkd2FyZVN1cHBvcnQoKSkg
ewogICAgICAgICBmb3IgKGF1dG8mIGluZm8gOiBzZWdtZW50LnZpZGVvVHJhY2tzKSB7CkBAIC0z
NTgsNiArMzY0LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VJ
bml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW4KICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIGlmICghY29kZWNzTWVldEhhcmR3YXJlRGVjb2RlUmVxdWly
ZW1lbnRzKHt7ICpjb2RlYyB9fSwgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPm1lZGlhQ29udGVu
dFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KCkpKSB7CiAgICAgICAgICAgICAgICAgbV9w
YXJzaW5nU3VjY2VlZGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
QEAgLTM4NCw3ICszOTEsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQ
YXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbgogICAgIGlmIChtX21l
ZGlhU291cmNlKQogICAgICAgICBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+Y2hhcmFjdGVyaXN0
aWNzQ2hhbmdlZCgpOwogCi0gICAgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChzZWdt
ZW50KTsKKyAgICBkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KFdURk1vdmUoc2VnbWVu
dCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6ZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nKGludDMyX3QgY29k
ZSkKQEAgLTU3Nyw4ICs1ODQsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjph
cHBlbmRDb21wbGV0ZWQoKQogICAgIGlmIChtX3BhcnNpbmdTdWNjZWVkZWQgJiYgbV9tZWRpYVNv
dXJjZSkKICAgICAgICAgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPnNldExvYWRpbmdQcm9ncmVz
c3NlZCh0cnVlKTsKIAotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGllbnQtPnNvdXJj
ZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShtX3BhcnNpbmdTdWNjZWVkZWQgPyBTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2NlZWRlZCA6IFNvdXJj
ZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdDo6UGFyc2luZ0ZhaWxlZCk7CisgICAg
U291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kQ29tcGxldGVkKG1fcGFyc2luZ1N1Y2NlZWRlZCwg
bV9tZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPmlzRW5kZWQoKSA6IHRydWUpOwogfQogCiB2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphYm9ydCgpCkBAIC02ODEsMjEgKzY4Nywx
MSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRSZWFkeVN0YXRlKE1lZGlh
UGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdAogICAgICAgICBtX21lZGlhU291cmNlLT5wbGF5
ZXIoKS0+c2V0UmVhZHlTdGF0ZShyZWFkeVN0YXRlKTsKIH0KIAotYm9vbCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6aGFzVmlkZW8oKSBjb25zdAotewotICAgIHJldHVybiBtX2NsaWVudCAm
JiBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKCk7Ci19Ci0KIGJvb2wgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc1NlbGVjdGVkVmlkZW8oKSBjb25zdAogewogICAg
IHJldHVybiBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgIT0gbm90Rm91bmQ7CiB9CiAKLWJvb2wgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc0F1ZGlvKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9jbGllbnQgJiYgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRpbygpOwotfQot
CiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5nZVNlbGVjdGVk
KFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaywgYm9vbCBzZWxlY3RlZCkKIHsKICAgICBhdXRvIHRy
YWNrSUQgPSB0cmFjay5pZCgpLnN0cmluZygpLnRvVUludDY0KCk7CkBAIC0xMDYyLDcgKzEwNTgs
NyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjplbnF1ZXVlU2FtcGxlKFJlZjxN
ZWRpYVNhbXBsZT4mJiBzYW1wbGUsIGNvbnN0CiAKICAgICAgICAgYXV0byByZW5kZXJlciA9IG1f
YXVkaW9SZW5kZXJlcnMuZ2V0KHRyYWNrSUQpOwogICAgICAgICBbcmVuZGVyZXIgZW5xdWV1ZVNh
bXBsZUJ1ZmZlcjpwbGF0Zm9ybVNhbXBsZS5zYW1wbGUuY21TYW1wbGVCdWZmZXJdOwotICAgICAg
ICBpZiAobV9tZWRpYVNvdXJjZSAmJiAhc2FtcGxlLT5pc05vbkRpc3BsYXlpbmcoKSkKKyAgICAg
ICAgaWYgKG1fbWVkaWFTb3VyY2UgJiYgIXNhbXBsZS0+aXNOb25EaXNwbGF5aW5nKCkgJiYgbV9t
ZWRpYVNvdXJjZS0+cGxheWVyKCkpCiAgICAgICAgICAgICBtX21lZGlhU291cmNlLT5wbGF5ZXIo
KS0+c2V0SGFzQXZhaWxhYmxlQXVkaW9TYW1wbGUocmVuZGVyZXIuZ2V0KCksIHRydWUpOwogICAg
IH0KIH0KQEAgLTEwOTEsNiArMTA4NywxNCBAQCBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjppc1JlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRAogICAg
IHJldHVybiBmYWxzZTsKIH0KIAorTWVkaWFUaW1lIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpD
Ojp0aW1lRnVkZ2VGYWN0b3IoKSBjb25zdAoreworICAgIGlmIChtX21lZGlhU291cmNlKQorICAg
ICAgICByZXR1cm4gbV9tZWRpYVNvdXJjZS0+dGltZUZ1ZGdlRmFjdG9yKCk7CisKKyAgICByZXR1
cm4gU291cmNlQnVmZmVyUHJpdmF0ZTo6dGltZUZ1ZGdlRmFjdG9yKCk7Cit9CisKIHZvaWQgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNldEFjdGl2ZShib29sIGlzQWN0aXZlKQogewogICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgaXNBY3RpdmUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIu
aAppbmRleCAwZGM4MWYwNmQyN2RjZDA5NzM5ZDA3ZTQ1MDc1OGI2MzYyOWQ3MWM3Li5lMTBjZGFi
YzQ3YTQ0NWQzMWNhOTBmOWJmNDgxMmZmYzRhMDMxMTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIu
aApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk1lZGlhUGxheWVyRW51bXMuaCIKICNpbmNs
dWRlICJTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvVWludDhBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAtNjksNyArNzAs
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBXaWxsIGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQu
CiAgICAgdXNpbmcgSW5pdGlhbGl6YXRpb25TZWdtZW50ID0gU291cmNlQnVmZmVyUHJpdmF0ZUNs
aWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OwotICAgIHVzaW5nIERpZFBhcnNlSW5pdGlhbGl6
YXRpb25EYXRhQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoSW5pdGlhbGl6YXRpb25TZWdt
ZW50JiYpPjsKKyAgICB1c2luZyBEaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrID0g
V1RGOjpGdW5jdGlvbjx2b2lkKEluaXRpYWxpemF0aW9uU2VnbWVudCYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpPjsKICAgICB2b2lkIHNldERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRh
Q2FsbGJhY2soRGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayYmIGNhbGxiYWNrKQog
ICAgIHsKICAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrID0gV1RG
TW92ZShjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IDg0
YmM1NzRkYzBmMDNmOGZmYjQzNjg5MGZjNGExYTVkZWFhOWU2NDEuLjgwOTcwZTBhYjljMTk4OTM0
ZmZlOGE5MTVhNTM2MzFhYzEyMTMwYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwCkBAIC03MTYsOCArNzE2LDE3IEBAIFN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpP
bkNsdXN0ZXJCZWdpbihjb25zdCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjCiAgICAgICAg
IHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVtb3J5KTsKIAogICAgIGlmIChtX2lu
aXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkICYmIG1fZGlkUGFyc2VJbml0aWFsaXphdGlv
bkRhdGFDYWxsYmFjaykgewotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluaXRpYWxpemF0aW9uU2VnbWVudCA9IFdURk1vdmUo
Km1faW5pdGlhbGl6YXRpb25TZWdtZW50KV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBtX2Rp
ZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soV1RGTW92ZShpbml0aWFsaXphdGlvblNl
Z21lbnQpKTsKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byBsb2NrZXIgPSBob2xkTG9jayht
X3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5TXV0ZXgpOworICAgICAgICAgICAgbV9pbml0aWFsaXph
dGlvblNlZ21lbnRJc0hhbmRsZWQgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGNhbGxP
bk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5pdGlh
bGl6YXRpb25TZWdtZW50ID0gV1RGTW92ZSgqbV9pbml0aWFsaXphdGlvblNlZ21lbnQpXSgpIG11
dGFibGUgeworICAgICAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNr
KFdURk1vdmUoaW5pdGlhbGl6YXRpb25TZWdtZW50KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBhdXRvIGxvY2tlciA9
IGhvbGRMb2NrKG1fdHJhY2tCdWZmZXJNYW5hZ2VyUmVhZHlNdXRleCk7CisgICAgICAgICAgICAg
ICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWQgPSB0cnVlOworICAgICAgICAgICAg
ICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkQ29uZGl0aW9uLm5vdGlmeUFsbCgp
OworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0KICAgICBtX2luaXRpYWxpemF0
aW9uU2VnbWVudEVuY291bnRlcmVkID0gZmFsc2U7CkBAIC0xMjAzLDYgKzEyMTIsMTQgQEAgd2Vi
bTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRnJhbWUoY29uc3QgRnJhbWVNZXRh
ZGF0YSYgbWV0YWRhdGEsIFJlYWQKIAogICAgICAgICBhdXRvIHRyYWNrSUQgPSB0cmFjay50cmFj
a191aWQudmFsdWUoKTsKIAorICAgICAgICAvLyBXYWl0IHVudGlsIHRoZSBpbml0aWFsaXphdGlv
biBzZWdtZW50IGlzIGhhbmRsZWQKKyAgICAgICAgeworICAgICAgICAgICAgc3RkOjp1bmlxdWVf
bG9jazxMb2NrPiBsb2NrKG1fdHJhY2tCdWZmZXJNYW5hZ2VyUmVhZHlNdXRleCk7CisgICAgICAg
ICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZENvbmRpdGlvbi53YWl0KGxvY2ss
IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWQ7CisgICAgICAgICAgICB9
KTsKKyAgICAgICAgfQorCiAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2FtcGxlQnVmZmVyID0gV1RGTW92ZShzYW1wbGVCdWZm
ZXIpLCB0cmFja0lEXSAoKSBtdXRhYmxlIHsKICAgICAgICAgICAgIGlmICghbV9kaWRQcm92aWRl
TWVkaWFEYXRhQ2FsbGJhY2spCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
V2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyV2ViTS5oCmluZGV4IDQ1YmQ2OWZmYjQ3MTJiZTUyNDVlNjI2Y2ZiN2NkZTk4N2U4
YWJhY2YuLjM1MWE2MzhmNWJkNjExYTU5ZTM2YjhkMWRkYTdmMGRkMzAzNGYxMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9T
b3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKQEAgLTMxLDcgKzMxLDkgQEAKICNpbmNsdWRlIDxjb21t
b24vdnA5X2hlYWRlcl9wYXJzZXIuaD4KICNpbmNsdWRlIDx3ZWJtL2NhbGxiYWNrLmg+CiAjaW5j
bHVkZSA8d2VibS9zdGF0dXMuaD4KKyNpbmNsdWRlIDx3dGYvQ29uZGl0aW9uLmg+CiAjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYv
TWVkaWFUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1VuaXF1ZVJlZi5oPgogI2luY2x1ZGUgPHd0Zi9W
YXJpYW50Lmg+CkBAIC0xNDEsNiArMTQzLDEwIEBAIHByaXZhdGU6CiAgICAgT3B0aW9uYWw8Qmxv
Y2tWYXJpYW50PiBtX2N1cnJlbnRCbG9jazsKICAgICBPcHRpb25hbDx1aW50NjRfdD4gbV9yZXdp
bmRUb1Bvc2l0aW9uOwogCisgICAgTG9jayBtX3RyYWNrQnVmZmVyTWFuYWdlclJlYWR5TXV0ZXg7
CisgICAgQ29uZGl0aW9uIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkQ29uZGl0aW9u
OworICAgIGJvb2wgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWQgeyBmYWxzZSB9Owor
CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgUmVmUHRyPGNvbnN0IFdURjo6TG9nZ2Vy
PiBtX2xvZ2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXIgeyBudWxscHRyIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL01lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1lci5j
cHAKaW5kZXggNzcxZWEwOGNlZjQ0MWM1OWQ2ODRmYzVjZWRiMzNmMDZhMzZmY2Y4MS4uZWZlZjdi
YTNjMjgyZWU2NTMwOGUwNTRlMzM3NmI0ZTVhMmVkYjM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVByaXZhdGVH
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9tc2UvTWVkaWFTb3VyY2VQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtOTMsNyArOTMsNyBA
QCB2b2lkIE1lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1lcjo6cmVtb3ZlU291cmNlQnVmZmVyKFNv
dXJjZUJ1ZmZlclByaXZhdGUqIHNvdXJjZQogICAgIG1fYWN0aXZlU291cmNlQnVmZmVycy5yZW1v
dmUoc291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5nZXQoKSk7CiB9CiAKLXZvaWQgTWVkaWFT
b3VyY2VQcml2YXRlR1N0cmVhbWVyOjpkdXJhdGlvbkNoYW5nZWQoKQordm9pZCBNZWRpYVNvdXJj
ZVByaXZhdGVHU3RyZWFtZXI6OmR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmKQogewog
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTEwOSwxMSArMTA5LDEzIEBAIHZvaWQg
TWVkaWFTb3VyY2VQcml2YXRlR1N0cmVhbWVyOjptYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1T
dGF0dXMgc3RhdHVzKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9wbGF5
ZXJQcml2YXRlLm1hcmtFbmRPZlN0cmVhbShzdGF0dXMpOworICAgIG1faXNFbmRlZCA9IHRydWU7
CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2VQcml2YXRlR1N0cmVhbWVyOjp1bm1hcmtFbmRPZlN0cmVh
bSgpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2lzRW5kZWQgPSBmYWxzZTsKIH0K
IAogTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgTWVkaWFTb3VyY2VQcml2YXRlR1N0cmVhbWVyOjpy
ZWFkeVN0YXRlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlUHJp
dmF0ZUdTdHJlYW1lci5oCmluZGV4IDI1MjRhYTBmOWJmNzVjZWNkZjc4MzYyMzdkMTQyNDdhM2My
NDZlYWYuLjM0Y2Y3MGI3MjNkN2RhZTgxYzBkZDc0YzA1MmQyN2NlNmY0YmU1MjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFT
b3VyY2VQcml2YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVByaXZhdGVHU3RyZWFtZXIuaApAQCAtNjEs
OSArNjEsMTAgQEAgcHVibGljOgogICAgIEFkZFN0YXR1cyBhZGRTb3VyY2VCdWZmZXIoY29uc3Qg
Q29udGVudFR5cGUmLCBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZT4mKSBvdmVycmlkZTsKICAg
ICB2b2lkIHJlbW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXJQcml2YXRlKik7CiAKLSAgICB2
b2lkIGR1cmF0aW9uQ2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZHVyYXRpb25DaGFuZ2Vk
KGNvbnN0IE1lZGlhVGltZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgbWFya0VuZE9mU3RyZWFtKEVu
ZE9mU3RyZWFtU3RhdHVzKSBvdmVycmlkZTsKICAgICB2b2lkIHVubWFya0VuZE9mU3RyZWFtKCkg
b3ZlcnJpZGU7CisgICAgYm9vbCBpc0VuZGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9p
c0VuZGVkOyB9CiAKICAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0
YXRlKSBvdmVycmlkZTsKQEAgLTk0LDYgKzk1LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFNv
dXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIqPiBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnM7CiAgICAg
UmVmPE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudD4gbV9tZWRpYVNvdXJjZTsKICAgICBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXJNU0UmIG1fcGxheWVyUHJpdmF0ZTsKKyAgICBib29sIG1faXNF
bmRlZCB7IGZhbHNlIH07CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgUmVmPGNvbnN0
IExvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVk
aWFTb3VyY2VQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5jcHAKaW5kZXggOWI0ZDFmODIxMDAxY2M1OWJm
ODcwOGFjZjc4MjU2YTI5MWM1NmYxYy4uOTc5YTgxZDNiOTBjYjY2MGFlNzdiYWFiMjhkYTBlYzk2
Y2IzOTIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwCkBAIC05Myw3
ICs5Myw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1vY2tNZWRpYVNv
dXJjZVByaXZhdGU6OmJ1ZmZlcmVkKCkKICAgICByZXR1cm4gbV9jbGllbnQtPmJ1ZmZlcmVkKCk7
CiB9CiAKLXZvaWQgTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6ZHVyYXRpb25DaGFuZ2VkKCkKK3Zv
aWQgTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6ZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGlt
ZSYpCiB7CiAgICAgbV9wbGF5ZXIudXBkYXRlRHVyYXRpb24oZHVyYXRpb24oKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRp
YVNvdXJjZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3Vy
Y2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5oCmluZGV4IDdhNjkzYWVkMzVjYTZjOWM5MzY5MTAy
YWE1NTI0ZmUzMGZhZDQ0MDEuLmUzZDk4MDdjNmIxNTIxZmM5YjA0ZTY0YjE2OWY1ZWVkZDQ2NDUx
OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja01lZGlhU291cmNlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21v
Y2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5oCkBAIC04MCw4ICs4MCw5IEBA
IHByaXZhdGU6CiAKICAgICAvLyBNZWRpYVNvdXJjZVByaXZhdGUgT3ZlcnJpZGVzCiAgICAgQWRk
U3RhdHVzIGFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDb250ZW50VHlwZSYsIFJlZlB0cjxTb3VyY2VC
dWZmZXJQcml2YXRlPiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBtYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMpIG92ZXJyaWRl
OworICAgIGJvb2wgaXNFbmRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNFbmRlZDsg
fQogICAgIHZvaWQgdW5tYXJrRW5kT2ZTdHJlYW0oKSBvdmVycmlkZTsKICAgICBNZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRS
ZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKaW5kZXggMmZjOTBkMzU0ZjZiOTY3YzVjOTUwMjdi
MjIzZTRhMzU3ODAwZjMwYS4uYzYxMTA2NWMzOGY2YjkwZDJkYTQyMTc3Yjk1NDI3NGZlODdhMmEx
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTE0Miw3ICsx
NDIsNyBAQCB2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQoVmVjdG9yPHVuc2ln
bmVkIGNoYXI+JiYgZGF0YSkKIAogICAgIHdoaWxlIChtX2lucHV0QnVmZmVyLnNpemUoKSAmJiBy
ZXN1bHQgPT0gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0OjpBcHBlbmRT
dWNjZWVkZWQpIHsKICAgICAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1f
aW5wdXRCdWZmZXIuZGF0YSgpLCBtX2lucHV0QnVmZmVyLnNpemUoKSk7Ci0gICAgICAgIHNpemVf
dCBib3hMZW5ndGggPSBNb2NrQm94OjpwZWVrTGVuZ3RoKGJ1ZmZlci5wdHIoKSk7CisgICAgICAg
IHVpbnQ2NF90IGJveExlbmd0aCA9IE1vY2tCb3g6OnBlZWtMZW5ndGgoYnVmZmVyLnB0cigpKTsK
ICAgICAgICAgaWYgKGJveExlbmd0aCA+IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKQogICAgICAgICAg
ICAgYnJlYWs7CiAKQEAgLTE1OSw2ICsxNTksMTAgQEAgdm9pZCBNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6YXBwZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEpCiAgICAgICAgIG1faW5w
dXRCdWZmZXIucmVtb3ZlKDAsIGJveExlbmd0aCk7CiAgICAgfQogCisgICAgLy8gUmVzb2x2ZSB0
aGUgY2hhbmdlcyBpbiBUcmFja0J1ZmZlcnMnIGJ1ZmZlcmVkIHJhbmdlcworICAgIC8vIGludG8g
dGhlIFNvdXJjZUJ1ZmZlcidzIGJ1ZmZlcmVkIHJhbmdlcworICAgIHVwZGF0ZUJ1ZmZlcmVkRnJv
bVRyYWNrQnVmZmVycyhtX21lZGlhU291cmNlLT5pc0VuZGVkKCkpOworCiAgICAgaWYgKG1fY2xp
ZW50KQogICAgICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRl
KHJlc3VsdCk7CiB9CkBAIC0xOTEsNyArMTk1LDcgQEAgdm9pZCBNb2NrU291cmNlQnVmZmVyUHJp
dmF0ZTo6ZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBNb2NrSW5pdGlhbGkK
ICAgICAgICAgfQogICAgIH0KIAotICAgIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVJ
bml0aWFsaXphdGlvblNlZ21lbnQoc2VnbWVudCk7CisgICAgU291cmNlQnVmZmVyUHJpdmF0ZTo6
ZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpLCBbXSgpIHsg
fSk7CiB9CiAKIHZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVTYW1wbGUo
Y29uc3QgTW9ja1NhbXBsZUJveCYgc2FtcGxlQm94KQpAQCAtMjQ5LDcgKzI1Myw3IEBAIE1lZGlh
VGltZSBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6bWluaW11bVVwY29taW5nUHJlc2VudGF0aW9u
VGltZUZvclRyYWNrSUQoY29uCiAgICAgcmV0dXJuIG1fbWluaW11bVVwY29taW5nUHJlc2VudGF0
aW9uVGltZTsKIH0KIAotdm9pZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0TWF4aW11bVF1
ZXVlRGVwdGhGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmLCBzaXplX3QgbWF4UXVldWVEZXB0
aCkKK3ZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OnNldE1heGltdW1RdWV1ZURlcHRoRm9y
VHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJiwgdWludDY0X3QgbWF4UXVldWVEZXB0aCkKIHsKICAg
ICBtX21heFF1ZXVlRGVwdGggPSBtYXhRdWV1ZURlcHRoOwogfQpAQCAtMzIyLDE2ICszMjYsNiBA
QCB2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjplbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNh
bXBsZT4mJiBzYW1wbGUsIGNvbnN0IEF0bwogICAgIG1fZW5xdWV1ZWRTYW1wbGVzLmFwcGVuZCh0
b1N0cmluZyhzYW1wbGUuZ2V0KCkpKTsKIH0KIAotYm9vbCBNb2NrU291cmNlQnVmZmVyUHJpdmF0
ZTo6aGFzVmlkZW8oKSBjb25zdAotewotICAgIHJldHVybiBtX2NsaWVudCAmJiBtX2NsaWVudC0+
c291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKCk7Ci19Ci0KLWJvb2wgTW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGU6Omhhc0F1ZGlvKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jbGllbnQgJiYgbV9j
bGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRpbygpOwotfQotCiAjaWYgIVJFTEVBU0Vf
TE9HX0RJU0FCTEVECiBXVEZMb2dDaGFubmVsJiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6bG9n
Q2hhbm5lbCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
b2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKaW5k
ZXggYjZjNTQ3ZGQ5NWMxZjZiMGJkZGQyZTQxMWFmMTQyYjM5OGZkZmZlNS4uOGIyYTEzODk0NmMy
OGYyZjNlN2RlYmZlNzM2NWNjYzdiYWZiYTNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGUuaApAQCAtNDYsOSArNDYsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyTWVk
aWFTb3VyY2UoKSB7IG1fbWVkaWFTb3VyY2UgPSBudWxscHRyOyB9CiAKLSAgICBib29sIGhhc1Zp
ZGVvKCkgY29uc3Q7Ci0gICAgYm9vbCBoYXNBdWRpbygpIGNvbnN0OwotCiBwcml2YXRlOgogICAg
IGV4cGxpY2l0IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUq
KTsKIApAQCAtNzUsNyArNzIsNyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFN0cmluZz4gZW5x
dWV1ZWRTYW1wbGVzRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CiAgICAgTWVk
aWFUaW1lIG1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWVGb3JUcmFja0lEKGNvbnN0IEF0
b21TdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIHNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJ
RChjb25zdCBBdG9tU3RyaW5nJiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIHNldE1heGltdW1R
dWV1ZURlcHRoRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJiwgdWludDY0X3QpIGZpbmFsOwog
CiAgICAgdm9pZCBkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IE1vY2tJbml0
aWFsaXphdGlvbkJveCYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNhbXBsZShjb25zdCBNb2NrU2Ft
cGxlQm94Jik7CkBAIC05NCw3ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzQWN0aXZl
IHsgZmFsc2UgfTsKICAgICBNZWRpYVRpbWUgbV9taW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25U
aW1lOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fZW5xdWV1ZWRTYW1wbGVzOwotICAgIE9wdGlvbmFs
PHNpemVfdD4gbV9tYXhRdWV1ZURlcHRoOworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtX21heFF1
ZXVlRGVwdGg7CiAgICAgVmVjdG9yPGNoYXI+IG1faW5wdXRCdWZmZXI7CiAKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKaW5kZXggOTNlMmYyN2Q4MmU4ZjkyNGY3ODVj
NTBhNjUwNTA1YWRiNmEzNjcyNi4uZWFlOTNlNzNhYjBjNTc2MzgwZDQ1OGM3OTQ0OTFhMDY2MTBi
OTdiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1
ZGlvVHJhY2tQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgVHJhY2tQcml2YXRlUmVt
b3RlQ29uZmlndXJhdGlvbiYgUmVtb3RlQXVkaW9UcmFja1Byb3h5Ojpjb25maWd1cmF0aW9uKCkK
IHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJh
dGlvbj4gY29uZmlndXJhdGlvbjsKIAotICAgIGNvbmZpZ3VyYXRpb24tPmlkZW50aWZpZXIgPSBt
X3RyYWNrUHJpdmF0ZS0+aWQoKTsKKyAgICBjb25maWd1cmF0aW9uLT50cmFja0lkID0gbV90cmFj
a1ByaXZhdGUtPmlkKCk7CiAgICAgY29uZmlndXJhdGlvbi0+bGFiZWwgPSBtX3RyYWNrUHJpdmF0
ZS0+bGFiZWwoKTsKICAgICBjb25maWd1cmF0aW9uLT5sYW5ndWFnZSA9IG1fdHJhY2tQcml2YXRl
LT5sYW5ndWFnZSgpOwogICAgIGNvbmZpZ3VyYXRpb24tPnRyYWNrSW5kZXggPSBtX3RyYWNrUHJp
dmF0ZS0+dHJhY2tJbmRleCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4IGMzYjA3MzRhNGVmOThk
MmE3ZTczOTBlYTk4MDNlM2UwMzZiN2VjNTIuLjQyZWU3OWJiMDZlNDc1MjVkYWIzNTQyNmQzYWRi
YTE1OGE2M2ExYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKQEAgLTEzNCwxMCArMTM0LDE0IEBAIHZv
aWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bG9hZChVUkwmJiB1cmwsIE9wdGlvbmFsPFNhbmRi
b3hFeHRlbnNpb246OkhhbmRsZT4mCiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotdm9p
ZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpsb2FkTWVkaWFTb3VyY2UoVVJMJiYgdXJsLCBjb25z
dCBXZWJDb3JlOjpDb250ZW50VHlwZSYgY29udGVudFR5cGUsIFJlbW90ZU1lZGlhU291cmNlSWRl
bnRpZmllciBtZWRpYVNvdXJjZUlkZW50aWZpZXIpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJv
eHk6OmxvYWRNZWRpYVNvdXJjZShVUkwmJiB1cmwsIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBl
JiBjb250ZW50VHlwZSwgUmVtb3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyIG1lZGlhU291cmNlSWRl
bnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3Vy
YXRpb24mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9tZWRpYVNvdXJjZVByb3h5
ID0gYWRvcHRSZWYoKm5ldyBSZW1vdGVNZWRpYVNvdXJjZVByb3h5KG1fbWFuYWdlci5ncHVDb25u
ZWN0aW9uVG9XZWJQcm9jZXNzKCksIG1lZGlhU291cmNlSWRlbnRpZmllciwgKnRoaXMpKTsKICAg
ICBtX3BsYXllci0+bG9hZCh1cmwsIGNvbnRlbnRUeXBlLCBtX21lZGlhU291cmNlUHJveHkuZ2V0
KCkpOworCisgICAgUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247
CisgICAgZ2V0Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKTsKKyAgICBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKTsKIH0KICNlbmRpZgogCkBAIC03NTksNyArNzYz
LDggQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojp1cGRhdGVDYWNoZWRTdGF0ZSgpCiAK
ICAgICBpZiAobV9idWZmZXJlZENoYW5nZWQpIHsKICAgICAgICAgbV9idWZmZXJlZENoYW5nZWQg
PSBmYWxzZTsKLSAgICAgICAgbV9jYWNoZWRTdGF0ZS5idWZmZXJlZFJhbmdlcyA9ICptX3BsYXll
ci0+YnVmZmVyZWQoKTsKKyAgICAgICAgaWYgKG1fZW5naW5lSWRlbnRpZmllciAhPSBNZWRpYVBs
YXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkFWRm91bmRhdGlvbk1TRSkKKyAgICAg
ICAgICAgIG1fY2FjaGVkU3RhdGUuYnVmZmVyZWRSYW5nZXMgPSAqbV9wbGF5ZXItPmJ1ZmZlcmVk
KCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaAppbmRleCBiODI0NzcxM2FkYWYxYzQ1M2VhNGM2
NTgxZGFkNDNiYjFlMGMyMDY2Li5hZTZhZDhiNDYwYjlmNmJkYjNiMDA0MGY3ODBiZjE5NWY0NDli
Y2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5LmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGxvYWQoVVJMJiYsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mJiwgY29u
c3QgV2ViQ29yZTo6Q29udGVudFR5cGUmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4mJik7CiAjaWYgRU5BQkxF
KE1FRElBX1NPVVJDRSkKLSAgICB2b2lkIGxvYWRNZWRpYVNvdXJjZShVUkwmJiwgY29uc3QgV2Vi
Q29yZTo6Q29udGVudFR5cGUmLCBSZW1vdGVNZWRpYVNvdXJjZUlkZW50aWZpZXIpOworICAgIHZv
aWQgbG9hZE1lZGlhU291cmNlKFVSTCYmLCBjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYsIFJl
bW90ZU1lZGlhU291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVN
ZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mJik+JiYpOwogI2VuZGlmCiAgICAgdm9pZCBjYW5jZWxM
b2FkKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNz
L21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMDhlYTE1Y2M2
NmIyZWE5ZDA3MGRhNmJiNzFmODhiNzQ1MWNmMDE1OC4uMmNkZTA4MDQ5YWRlZGI0YzYxNjk1Njk0
YjBiODliNWVmMGZhMTAzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KQEAg
LTI4LDcgKzI4LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBOb3RSZWZD
b3VudGVkIHsKIAogICAgIExvYWQoVVJMIHVybCwgT3B0aW9uYWw8V2ViS2l0OjpTYW5kYm94RXh0
ZW5zaW9uOjpIYW5kbGU+IHNhbmRib3hFeHRlbnNpb24sIFdlYkNvcmU6OkNvbnRlbnRUeXBlIGNv
bnRlbnRUeXBlLCBTdHJpbmcga2V5U3lzdGVtKSAtPiAoc3RydWN0IFdlYktpdDo6UmVtb3RlTWVk
aWFQbGF5ZXJDb25maWd1cmF0aW9uIHBsYXllckNvbmZpZ3VyYXRpb24pIEFzeW5jCiAjaWYgRU5B
QkxFKE1FRElBX1NPVVJDRSkKLSAgICBMb2FkTWVkaWFTb3VyY2UoVVJMIHVybCwgV2ViQ29yZTo6
Q29udGVudFR5cGUgY29udGVudFR5cGUsIFdlYktpdDo6UmVtb3RlTWVkaWFTb3VyY2VJZGVudGlm
aWVyIG1lZGlhU291cmNlSWRlbnRpZmllcikgU3luY2hyb25vdXMKKyAgICBMb2FkTWVkaWFTb3Vy
Y2UoVVJMIHVybCwgV2ViQ29yZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUsIFdlYktpdDo6UmVt
b3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyIG1lZGlhU291cmNlSWRlbnRpZmllcikgLT4gKHN0cnVj
dCBXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiBwbGF5ZXJDb25maWd1cmF0
aW9uKSBBc3luYwogI2VuZGlmCiAgICAgQ2FuY2VsTG9hZCgpCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmNwcApp
bmRleCA0OTliZDYxYzJmNzgyMjIzZmEzOGZjOTdiMTgyZmE2ZDJiOTM4MWRlLi4yZTQ4MmRlYjY1
ZGYzNjRkYWZjOTQ3Y2VlMmI3NTQ1ZGUzM2U4YmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuY3BwCkBAIC02
MSwxMyArNjEsMTIgQEAgdm9pZCBSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpzZXRQcml2YXRlQW5k
T3BlbihSZWY8TWVkaWFTb3VyY2VQcml2YXRlPiYmIG1lZGlhU28KIAogTWVkaWFUaW1lIFJlbW90
ZU1lZGlhU291cmNlUHJveHk6OmR1cmF0aW9uKCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIG1fZHVyYXRpb247CiB9CiAKIHN0ZDo6
dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IFJlbW90ZU1lZGlhU291cmNlUHJveHk6OmJ1
ZmZlcmVkKCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsK
IH0KIApAQCAtMTEyLDYgKzExMSwyMiBAQCB2b2lkIFJlbW90ZU1lZGlhU291cmNlUHJveHk6OmFk
ZFNvdXJjZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYgY29udGVudAogICAgIGNh
bGxiYWNrKHN0YXR1cywgcmVtb3RlU291cmNlSWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgUmVtb3Rl
TWVkaWFTb3VyY2VQcm94eTo6ZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYgZHVyYXRp
b24pCit7CisgICAgaWYgKG1fZHVyYXRpb24gPT0gZHVyYXRpb24pCisgICAgICAgIHJldHVybjsK
KworICAgIG1fZHVyYXRpb24gPSBkdXJhdGlvbjsKKyAgICBpZiAobV9wcml2YXRlKQorICAgICAg
ICBtX3ByaXZhdGUtPmR1cmF0aW9uQ2hhbmdlZChkdXJhdGlvbik7Cit9CisKK3ZvaWQgUmVtb3Rl
TWVkaWFTb3VyY2VQcm94eTo6c2V0UmVhZHlTdGF0ZShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1z
OjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUpCit7CisgICAgaWYgKG1fcHJpdmF0ZSkKKyAgICAgICAg
bV9wcml2YXRlLT5zZXRSZWFkeVN0YXRlKHJlYWR5U3RhdGUpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElB
X1NPVVJDRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVNvdXJjZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFTb3VyY2VQcm94eS5oCmluZGV4IDU5NjhjN2JiZDE4OWNkNDc5ZWY0YWVhYjRkNDQ5
OTUzM2ZkM2Q2NWIuLjk1OTM0NDlkM2I1ZTVjZmVkOTZiNTE1ZTgxN2UwM2RhMGNjYTA4ZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJj
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlh
U291cmNlUHJveHkuaApAQCAtNzYsMTcgKzc2LDIxIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAg
ICAvLyBJUEM6Ok1lc3NhZ2VSZWNlaXZlcgotICAgIC8vIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2Uo
SVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNl
aXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
LCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCi0gICAgdXNpbmcgQWRk
U291cmNlQnVmZmVyQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1l
ZGlhU291cmNlUHJpdmF0ZTo6QWRkU3RhdHVzLCBPcHRpb25hbDxSZW1vdGVTb3VyY2VCdWZmZXJJ
ZGVudGlmaWVyPiByZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyKT47CisgICAgdXNpbmcgQWRk
U291cmNlQnVmZmVyQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1l
ZGlhU291cmNlUHJpdmF0ZTo6QWRkU3RhdHVzLCBPcHRpb25hbDxSZW1vdGVTb3VyY2VCdWZmZXJJ
ZGVudGlmaWVyPik+OwogICAgIHZvaWQgYWRkU291cmNlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkNv
bnRlbnRUeXBlJiwgQWRkU291cmNlQnVmZmVyQ2FsbGJhY2smJik7CisgICAgdm9pZCBkdXJhdGlv
bkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJik7CisgICAgdm9pZCBzZXRSZWFkeVN0YXRlKFdlYkNv
cmU6Ok1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGUpOwogCiAgICAgR1BVQ29ubmVjdGlvblRv
V2ViUHJvY2VzcyYgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogICAgIFJlbW90ZU1lZGlhU291
cmNlSWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU291
cmNlUHJpdmF0ZT4gbV9wcml2YXRlOwogICAgIFdlYWtQdHI8UmVtb3RlTWVkaWFQbGF5ZXJQcm94
eT4gbV9yZW1vdGVNZWRpYVBsYXllclByb3h5OwogCisgICAgTWVkaWFUaW1lIG1fZHVyYXRpb247
CisKICAgICBWZWN0b3I8UmVmUHRyPFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Pj4gbV9zb3VyY2VC
dWZmZXJzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhU291cmNlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBjYTZi
NzUyZDc3MDYwZGVjY2I5ZGMzYmM3OTY0ODlmNGVjOTIwZGFkLi5kOTk5MTI2ODhlYmIwZDU5YWRj
ZGI1MzdjZTgzNWVmZTc5NmU5ZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5tZXNzYWdlcy5p
bgpAQCAtMjcsNiArMjcsOCBAQAogCiBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVNvdXJjZVByb3h5
IE5vdFJlZkNvdW50ZWQgewogICAgIEFkZFNvdXJjZUJ1ZmZlcihXZWJDb3JlOjpDb250ZW50VHlw
ZSBjb250ZW50VHlwZSkgLT4gKGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZh
dGU6OkFkZFN0YXR1cyBzdGF0dXMsIE9wdGlvbmFsPFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVy
SWRlbnRpZmllcj4gcmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcikgU3luY2hyb25vdXMKKyAg
ICBEdXJhdGlvbkNoYW5nZWQoTWVkaWFUaW1lIGR1cmF0aW9uKQorICAgIFNldFJlYWR5U3RhdGUo
V2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKQogfQogCiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVT
b3VyY2VCdWZmZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlU291cmNlQnVmZmVyUHJveHkuY3BwCmluZGV4IDI2NWI3M2I2YTRkZjM1M2Y0NTNkYjcyM2Nj
MzI5OGJjNzg1YjJjNzQuLjg0NzMzZmMwYWI0OWI2MzU1NzcxOTBhOGJhZTkyZWRjZGI4NjFmZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VC
dWZmZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcApAQCAtMzQsNyArMzQsOSBAQAogI2luY2x1ZGUgIlJlbW90
ZU1lZGlhUGxheWVyUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVTb3VyY2VCdWZmZXJQcm94eU1l
c3NhZ2VzLmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYURlc2NyaXB0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Ob3RJbXBsZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1UaW1lUmFuZ2Vz
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC01NCwxNCArNTYsMTYgQEAgUmVtb3RlU291
cmNlQnVmZmVyUHJveHk6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5KEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmIGNvbm4KIHsKICAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZVJl
Y2VpdmVyTWFwKCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwg
KnRoaXMpOwogICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+c2V0Q2xpZW50KHRoaXMpOworICAg
IG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+c2V0SXNBdHRhY2hlZCh0cnVlKTsKIH0KIAogUmVtb3Rl
U291cmNlQnVmZmVyUHJveHk6On5SZW1vdGVTb3VyY2VCdWZmZXJQcm94eSgpCiB7CisgICAgbV9z
b3VyY2VCdWZmZXJQcml2YXRlLT5zZXRJc0F0dGFjaGVkKGZhbHNlKTsKICAgICBtX2Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MubWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVy
KE1lc3NhZ2VzOjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgp
LCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKLXZvaWQgUmVtb3RlU291cmNlQnVmZmVy
UHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50
KGNvbnN0IEluaXRpYWxpemF0aW9uU2VnbWVudCYgc2VnbWVudCkKK3ZvaWQgUmVtb3RlU291cmNl
QnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25T
ZWdtZW50KEluaXRpYWxpemF0aW9uU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fcmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzEsMTkgKzc1LDM0IEBAIHZvaWQgUmVt
b3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlh
bGl6YXRpb25TZWdtZW50CiAgICAgZm9yIChhdXRvJiBhdWRpb1RyYWNrSW5mbyA6IHNlZ21lbnQu
YXVkaW9UcmFja3MpIHsKICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gbV9yZW1vdGVNZWRpYVBs
YXllclByb3h5LT5hZGRSZW1vdGVBdWRpb1RyYWNrUHJveHkoKmF1ZGlvVHJhY2tJbmZvLnRyYWNr
KTsKICAgICAgICAgc2VnbWVudEluZm8uYXVkaW9UcmFja3MuYXBwZW5kKHsgTWVkaWFEZXNjcmlw
dGlvbkluZm8oKmF1ZGlvVHJhY2tJbmZvLmRlc2NyaXB0aW9uKSwgaWRlbnRpZmllciB9KTsKKwor
ICAgICAgICBBU1NFUlQoIW1fdHJhY2tJZHMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgICAg
ICBBU1NFUlQoIW1fbWVkaWFEZXNjcmlwdGlvbnMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAg
ICAgICBtX3RyYWNrSWRzLmFkZChpZGVudGlmaWVyLCBhdWRpb1RyYWNrSW5mby50cmFjay0+aWQo
KSk7CisgICAgICAgIG1fbWVkaWFEZXNjcmlwdGlvbnMuYWRkKGlkZW50aWZpZXIsICphdWRpb1Ry
YWNrSW5mby5kZXNjcmlwdGlvbik7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiB2aWRlb1RyYWNr
SW5mbyA6IHNlZ21lbnQudmlkZW9UcmFja3MpIHsKICAgICAgICAgYXV0byBpZGVudGlmaWVyID0g
bV9yZW1vdGVNZWRpYVBsYXllclByb3h5LT5hZGRSZW1vdGVWaWRlb1RyYWNrUHJveHkoKnZpZGVv
VHJhY2tJbmZvLnRyYWNrKTsKICAgICAgICAgc2VnbWVudEluZm8udmlkZW9UcmFja3MuYXBwZW5k
KHsgTWVkaWFEZXNjcmlwdGlvbkluZm8oKnZpZGVvVHJhY2tJbmZvLmRlc2NyaXB0aW9uKSwgaWRl
bnRpZmllciB9KTsKKworICAgICAgICBBU1NFUlQoIW1fdHJhY2tJZHMuY29udGFpbnMoaWRlbnRp
ZmllcikpOworICAgICAgICBBU1NFUlQoIW1fbWVkaWFEZXNjcmlwdGlvbnMuY29udGFpbnMoaWRl
bnRpZmllcikpOworICAgICAgICBtX3RyYWNrSWRzLmFkZChpZGVudGlmaWVyLCB2aWRlb1RyYWNr
SW5mby50cmFjay0+aWQoKSk7CisgICAgICAgIG1fbWVkaWFEZXNjcmlwdGlvbnMuYWRkKGlkZW50
aWZpZXIsICp2aWRlb1RyYWNrSW5mby5kZXNjcmlwdGlvbik7CiAgICAgfQogCiAgICAgZm9yIChh
dXRvJiB0ZXh0VHJhY2tJbmZvIDogc2VnbWVudC50ZXh0VHJhY2tzKSB7CiAgICAgICAgIGF1dG8g
aWRlbnRpZmllciA9IG1fcmVtb3RlTWVkaWFQbGF5ZXJQcm94eS0+YWRkUmVtb3RlVGV4dFRyYWNr
UHJveHkoKnRleHRUcmFja0luZm8udHJhY2spOwogICAgICAgICBzZWdtZW50SW5mby50ZXh0VHJh
Y2tzLmFwcGVuZCh7IE1lZGlhRGVzY3JpcHRpb25JbmZvKCp0ZXh0VHJhY2tJbmZvLmRlc2NyaXB0
aW9uKSwgaWRlbnRpZmllciB9KTsKKworICAgICAgICBBU1NFUlQoIW1fdHJhY2tJZHMuY29udGFp
bnMoaWRlbnRpZmllcikpOworICAgICAgICBBU1NFUlQoIW1fbWVkaWFEZXNjcmlwdGlvbnMuY29u
dGFpbnMoaWRlbnRpZmllcikpOworICAgICAgICBtX3RyYWNrSWRzLmFkZChpZGVudGlmaWVyLCB0
ZXh0VHJhY2tJbmZvLnRyYWNrLT5pZCgpKTsKKyAgICAgICAgbV9tZWRpYURlc2NyaXB0aW9ucy5h
ZGQoaWRlbnRpZmllciwgKnRleHRUcmFja0luZm8uZGVzY3JpcHRpb24pOwogICAgIH0KIAotICAg
IG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0
aWFsaXphdGlvblNlZ21lbnQoc2VnbWVudEluZm8pLCBtX2lkZW50aWZpZXIpOworICAgIG1fY29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVj
ZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChzZWdtZW50SW5mbyksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclBy
b3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9vbCkKQEAgLTkxLDE0ICsxMTAs
MTQgQEAgdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUFw
cGVuZEVycm9yKGJvb2wpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBSZW1vdGVT
b3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25z
dCBNZWRpYVRpbWUmKQordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVy
UHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKGR1cmF0aW9uKSwgbV9pZGVudGlmaWVyKTsKIH0KIAot
dm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNl
U2FtcGxlKGRvdWJsZSkKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRQYXJzZVNhbXBsZShkb3VibGUgc2FtcGxlRHVyYXRpb24pCiB7Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVEaWRQYXJzZVNhbXBsZShzYW1wbGVEdXJhdGlvbiksIG1faWRlbnRpZmllcik7CiB9CiAK
IHZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWREcm9w
U2FtcGxlKCkKQEAgLTExMSwyNiArMTMwLDI0IEBAIHZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJv
eHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVTdHJlYW1FbmRlZFdpdGhEZWNvZGVFcnJvcigpCiAgICAg
bm90SW1wbGVtZW50ZWQoKTsKIH0KIAotYm9vbCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291
cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlvKCkgY29uc3QKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVy
UHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShTb3VyY2VCdWZmZXJQcml2
YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQgYXBwZW5kUmVzdWx0KQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291
cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKGFwcGVuZFJlc3VsdCksIG1faWRlbnRpZmll
cik7CiB9CiAKLWJvb2wgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZh
dGVIYXNWaWRlbygpIGNvbnN0Cit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VC
dWZmZXJQcml2YXRlRGlkUmVjZWl2ZVJlbmRlcmluZ0Vycm9yKGludCBlcnJvckNvZGUpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVtb3Rl
U291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShTb3Vy
Y2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQgYXBwZW5kUmVzdWx0KQordm9pZCBS
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlD
aGFuZ2VkKGJvb2wgZmxhZykKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVj
dGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1
ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShhcHBlbmRSZXN1bHQpLCBtX2lkZW50aWZpZXIpOwor
ICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGly
dHlDaGFuZ2VkKGZsYWcpLCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVJlbmRlcmluZ0Vycm9yKGlu
dCBlcnJvckNvZGUpCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQ
cml2YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2VkKGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYgdGlt
ZVJhbmdlcykKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fY29ubmVjdGlvblRvV2Vi
UHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJl
bW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZCh0aW1lUmFuZ2Vz
KSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6YXBw
ZW5kKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKQEAgLTEzOCw2ICsxNTUsNDMgQEAg
dm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6YXBwZW5kKGNvbnN0IElQQzo6RGF0YVJlZmVy
ZW5jZSYgZGF0YSkKICAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPmFwcGVuZChkYXRhLnZlY3Rv
cigpKTsKIH0KIAordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c2V0QWN0aXZlKGJvb2wg
YWN0aXZlKQoreworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+c2V0QWN0aXZlKGFjdGl2ZSk7
Cit9CisKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNldFJlYWR5U3RhdGUoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3RhdGUpCit7CisgICAgbV9zb3VyY2VCdWZmZXJQ
cml2YXRlLT5zZXRSZWFkeVN0YXRlKHN0YXRlKTsKK30KKwordm9pZCBSZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eTo6dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRl
ZCkKK3sKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPnVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNr
QnVmZmVycyhzb3VyY2VJc0VuZGVkKTsKK30KKwordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94
eTo6ZXZpY3RDb2RlZEZyYW1lcyh1aW50NjRfdCBuZXdEYXRhU2l6ZSwgdWludDY0X3QgcGVuZGlu
Z0FwcGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUsIGNvbnN0IE1l
ZGlhVGltZSYgY3VycmVudFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24sIGJvb2wgaXNF
bmRlZCkKK3sKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPmV2aWN0Q29kZWRGcmFtZXMobmV3
RGF0YVNpemUsIHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIG1heGltdW1CdWZmZXJTaXplLCBj
dXJyZW50VGltZSwgZHVyYXRpb24sIGlzRW5kZWQpOworfQorCit2b2lkIFJlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5OjphZGRUcmFja0J1ZmZlcihUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHRy
YWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKG1fdHJhY2tJZHMuY29u
dGFpbnModHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllcikpOworICAgIEFTU0VSVChtX21lZGlh
RGVzY3JpcHRpb25zLmNvbnRhaW5zKHRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpKTsKKyAg
ICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPmFkZFRyYWNrQnVmZmVyKG1fdHJhY2tJZHMuZ2V0KHRy
YWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpLCBtX21lZGlhRGVzY3JpcHRpb25zLmdldCh0cmFj
a1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyKSk7Cit9CisKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVy
UHJveHk6OnJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQoY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50TWVk
aWFUaW1lLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhp
bXVtQnVmZmVyU2l6ZSkKK3sKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPnJlZW5xdWV1ZU1l
ZGlhSWZOZWVkZWQoY3VycmVudE1lZGlhVGltZSwgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwg
bWF4aW11bUJ1ZmZlclNpemUpOworfQorCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojp0
cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKCkKK3sKKyAgICBtX3NvdXJjZUJ1ZmZl
clByaXZhdGUtPnRyeVNpZ25hbEFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVO
QUJMRShNRURJQV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCmluZGV4IGJjOWY5OWRmYjdhMjMwYjU4
OWFlMzQyZTVjZDA0NzcwNzVmMDIxMzguLjZlY2Q4YmNmNjhlZWI3ZmNhYjExNWM2OWNhMWMxNGRm
ZGM1MmI1MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVTb3VyY2VCdWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSAi
R1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5o
IgogI2luY2x1ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJU
cmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYURl
c2NyaXB0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VyY2VCdWZmZXJQcml2YXRlLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8
d3RmL1JlZi5oPgpAQCAtNDMsMTAgKzQ1LDEyIEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIE1lZGlhU2FtcGxlOworY2xhc3MgUGxhdGZvcm1UaW1l
UmFuZ2VzOwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3RydWN0IE1lZGlhRGVzY3JpcHRp
b25JbmZvOwogY2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTsKIAogY2xhc3MgUmVtb3RlU291
cmNlQnVmZmVyUHJveHkgZmluYWwKQEAgLTU4LDE2ICs2MiwxNiBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIFJlZjxSZW1vdGVTb3VyY2VCdWZmZXJQcm94eT4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MmLCBSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6U291
cmNlQnVmZmVyUHJpdmF0ZT4mJiwgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYpOwogICAgIHZpcnR1
YWwgflJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5KCk7CiAKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlclBy
aXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXRpYWxpemF0aW9u
U2VnbWVudCYpIGZpbmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJ
bml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlU3Ry
ZWFtRW5kZWRXaXRoRGVjb2RlRXJyb3IoKSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclBy
aXZhdGVBcHBlbmRFcnJvcihib29sIGRlY29kZUVycm9yKSBmaW5hbDsKKyAgICB2b2lkIHNvdXJj
ZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
Q2xpZW50OjpBcHBlbmRSZXN1bHQpIGZpbmFsOwogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0
ZUR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKICAgICB2b2lkIHNvdXJj
ZUJ1ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBsZShkb3VibGUgc2FtcGxlRHVyYXRpb24pIGZpbmFs
OwogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZERyb3BTYW1wbGUoKSBmaW5hbDsKLSAg
ICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVTdHJlYW1FbmRlZFdpdGhEZWNvZGVFcnJvcigpIGZp
bmFsOwotICAgIGJvb2wgc291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlvKCkgY29uc3QgZmluYWw7
Ci0gICAgYm9vbCBzb3VyY2VCdWZmZXJQcml2YXRlSGFzVmlkZW8oKSBjb25zdCBmaW5hbDsKKyAg
ICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZChib29sKSBmaW5h
bDsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQoY29u
c3QgV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzJikgZmluYWw7CiAKLSAgICB2b2lkIHNvdXJj
ZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
Q2xpZW50OjpBcHBlbmRSZXN1bHQpIGZpbmFsOwogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0
ZURpZFJlY2VpdmVSZW5kZXJpbmdFcnJvcihpbnQgZXJyb3JDb2RlKSBmaW5hbDsKIAogcHJpdmF0
ZToKQEAgLTc3LDEyICs4MSwyMiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAgLy8gdm9pZCBk
aWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3Rk
Ojp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAorICAgIHZvaWQgc2V0QWN0aXZl
KGJvb2wpOwogICAgIHZvaWQgYXBwZW5kKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAg
IHZvaWQgc2V0UmVhZHlTdGF0ZShXZWJDb3JlOjpNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSk7Cisg
ICAgdm9pZCB1cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVk
KTsKKyAgICB2b2lkIGV2aWN0Q29kZWRGcmFtZXModWludDY0X3QgbmV3RGF0YVNpemUsIHVpbnQ2
NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXpl
LCBjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9u
LCBib29sIGlzRW5kZWQpOworICAgIHZvaWQgYWRkVHJhY2tCdWZmZXIoVHJhY2tQcml2YXRlUmVt
b3RlSWRlbnRpZmllcik7CisgICAgdm9pZCByZWVucXVldWVNZWRpYUlmTmVlZGVkKGNvbnN0IE1l
ZGlhVGltZSYgY3VycmVudE1lZGlhVGltZSwgdWludDY0X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBh
Y2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUpOworICAgIHZvaWQgdHJ5U2lnbmFsQWxs
U2FtcGxlc0luVHJhY2tFbnF1ZXVlZCgpOwogCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogICAgIFJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50
aWZpZXIgbV9pZGVudGlmaWVyOwogICAgIFJlZjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
PiBtX3NvdXJjZUJ1ZmZlclByaXZhdGU7CiAgICAgV2Vha1B0cjxSZW1vdGVNZWRpYVBsYXllclBy
b3h5PiBtX3JlbW90ZU1lZGlhUGxheWVyUHJveHk7CisKKyAgICBIYXNoTWFwPFRyYWNrUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIsIEF0b21TdHJpbmc+IG1fdHJhY2tJZHM7CisgICAgSGFzaE1hcDxU
cmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6TWVkaWFEZXNjcmlwdGlv
bj4+IG1fbWVkaWFEZXNjcmlwdGlvbnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVTb3VyY2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCBhMDhmZjAxZGEzMGQwNjdiOWU0
MWZiNWExMTNlN2JhNDNmZTBlMDE3Li5mNDFmZGU0ZTc5ZmE3MDljMjM4ZGMyNzc0NmQ5MDg0ZmY4
MDE0YTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
U291cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNiw3ICsy
NiwxNCBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkK
IAogbWVzc2FnZXMgLT4gUmVtb3RlU291cmNlQnVmZmVyUHJveHkgTm90UmVmQ291bnRlZCB7Cisg
ICAgU2V0QWN0aXZlKGJvb2wgYWN0aXZlKQogICAgIEFwcGVuZChJUEM6OkRhdGFSZWZlcmVuY2Ug
ZGF0YSkKKyAgICBTZXRSZWFkeVN0YXRlKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
IHN0YXRlKQorICAgIFVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVmZmVycyhib29sIHNvdXJjZUlz
RW5kZWQpCisgICAgRXZpY3RDb2RlZEZyYW1lcyh1aW50NjRfdCBuZXdEYXRhU2l6ZSwgdWludDY0
X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUs
IE1lZGlhVGltZSBjdXJyZW50VGltZSwgTWVkaWFUaW1lIGR1cmF0aW9uLCBib29sIGlzRW5kZWQp
CisgICAgQWRkVHJhY2tCdWZmZXIoV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVy
IHRyYWNrSWQpCisgICAgUmVlbnF1ZXVlTWVkaWFJZk5lZWRlZChNZWRpYVRpbWUgY3VycmVudE1l
ZGlhVGltZSwgdWludDY0X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4
aW11bUJ1ZmZlclNpemUpCisgICAgVHJ5U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCgp
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKaW5kZXggNjc0NDhlOWE3NDhmMThhZGE0NTI1OTA5
YmEyY2QzMTQwYjIyNTFlZC4uMTMyMTVhNjczOTdjMGNjZjg4NzRmYjRhYWYxMDA4M2QzMGIxMjFh
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRU
cmFja1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
VGV4dFRyYWNrUHJveHkuY3BwCkBAIC02NCw3ICs2NCw3IEBAIFRleHRUcmFja1ByaXZhdGVSZW1v
dGVDb25maWd1cmF0aW9uJiBSZW1vdGVUZXh0VHJhY2tQcm94eTo6Y29uZmlndXJhdGlvbigpCiB7
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1
cmF0aW9uPiBjb25maWd1cmF0aW9uOwogCi0gICAgY29uZmlndXJhdGlvbi0+aWRlbnRpZmllciA9
IG1fdHJhY2tQcml2YXRlLT5pZCgpOworICAgIGNvbmZpZ3VyYXRpb24tPnRyYWNrSWQgPSBtX3Ry
YWNrUHJpdmF0ZS0+aWQoKTsKICAgICBjb25maWd1cmF0aW9uLT5sYWJlbCA9IG1fdHJhY2tQcml2
YXRlLT5sYWJlbCgpOwogICAgIGNvbmZpZ3VyYXRpb24tPmxhbmd1YWdlID0gbV90cmFja1ByaXZh
dGUtPmxhbmd1YWdlKCk7CiAgICAgY29uZmlndXJhdGlvbi0+dHJhY2tJbmRleCA9IG1fdHJhY2tQ
cml2YXRlLT50cmFja0luZGV4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVmlkZW9UcmFja1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJv
Y2Vzcy9tZWRpYS9SZW1vdGVWaWRlb1RyYWNrUHJveHkuY3BwCmluZGV4IDM1MGY4ZWE3MzA3YmQy
MzdhYTgzZjZjYzk0NWI1NjEwZGY2ZjFjNzEuLmI5MmE4NGUzYTliNjhhYzZjNGYyYWYzNDI2YWVk
N2E3OTQxMmRhYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVWaWRlb1RyYWNrUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVWaWRlb1RyYWNrUHJveHkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFRyYWNrUHJp
dmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24mIFJlbW90ZVZpZGVvVHJhY2tQcm94eTo6Y29uZmlndXJh
dGlvbigpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRyYWNrUHJpdmF0ZVJlbW90ZUNv
bmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb247CiAKLSAgICBjb25maWd1cmF0aW9uLT5pZGVudGlm
aWVyID0gbV90cmFja1ByaXZhdGUtPmlkKCk7CisgICAgY29uZmlndXJhdGlvbi0+dHJhY2tJZCA9
IG1fdHJhY2tQcml2YXRlLT5pZCgpOwogICAgIGNvbmZpZ3VyYXRpb24tPmxhYmVsID0gbV90cmFj
a1ByaXZhdGUtPmxhYmVsKCk7CiAgICAgY29uZmlndXJhdGlvbi0+bGFuZ3VhZ2UgPSBtX3RyYWNr
UHJpdmF0ZS0+bGFuZ3VhZ2UoKTsKICAgICBjb25maWd1cmF0aW9uLT50cmFja0luZGV4ID0gbV90
cmFja1ByaXZhdGUtPnRyYWNrSW5kZXgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1
cmF0aW9uLmgKaW5kZXggYzEzOWNmYzE0YjQ3MWZiMjU4ZGJiZTgxODJiM2Q1YzYyMTYyYjU5Mi4u
NjU2MDViMDFhMTI4NmMzMTI5N2ViYzYwY2UwZmM4NTA1YjUyMmVhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1
cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RleHRUcmFja1By
aXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBzdHJ1Y3QgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24gewot
ICAgIEF0b21TdHJpbmcgaWRlbnRpZmllcjsKKyAgICBBdG9tU3RyaW5nIHRyYWNrSWQ7CiAgICAg
QXRvbVN0cmluZyBsYWJlbDsKICAgICBBdG9tU3RyaW5nIGxhbmd1YWdlOwogICAgIEF0b21TdHJp
bmcgaW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZTsKQEAgLTU1LDcgKzU1LDcgQEAgc3Ry
dWN0IFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIHsKICAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAg
ICAgewotICAgICAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7CisgICAgICAgIGVuY29kZXIgPDwg
dHJhY2tJZDsKICAgICAgICAgZW5jb2RlciA8PCBsYWJlbDsKICAgICAgICAgZW5jb2RlciA8PCBs
YW5ndWFnZTsKICAgICAgICAgZW5jb2RlciA8PCBpbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hU
eXBlOwpAQCAtNzUsOSArNzUsOSBAQCBzdHJ1Y3QgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZp
Z3VyYXRpb24gewogICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgogICAgIHN0YXRpYyBPcHRp
b25hbDxUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXIm
IGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxBdG9tU3RyaW5nPiBpZGVudGlmaWVy
OwotICAgICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghaWRlbnRpZmll
cikKKyAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gdHJhY2tJZDsKKyAgICAgICAgZGVjb2Rl
ciA+PiB0cmFja0lkOworICAgICAgICBpZiAoIXRyYWNrSWQpCiAgICAgICAgICAgICByZXR1cm4g
V1RGOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IGxhYmVsOwpAQCAt
MTUxLDcgKzE1MSw3IEBAIHN0cnVjdCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlv
biB7CiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7
ewotICAgICAgICAgICAgV1RGTW92ZSgqaWRlbnRpZmllciksCisgICAgICAgICAgICBXVEZNb3Zl
KCp0cmFja0lkKSwKICAgICAgICAgICAgIFdURk1vdmUoKmxhYmVsKSwKICAgICAgICAgICAgIFdU
Rk1vdmUoKmxhbmd1YWdlKSwKICAgICAgICAgICAgIFdURk1vdmUoKmluQmFuZE1ldGFkYXRhVHJh
Y2tEaXNwYXRjaFR5cGUpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1RyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9UcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgKaW5kZXggNDQ0
MjJiMzAxNGYyMDIyMTZiZWQ2YTU3YTNmOGVkZDc5NDhlOTI0Ni4uYThmMDVkMThmZDk5ODhlYmI5
OWM3NjczYjY4N2E2NzBkOTJlMDE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1RyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5o
CkBAIC0zNCw3ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFRyYWNrUHJp
dmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24gewotICAgIEF0b21TdHJpbmcgaWRlbnRpZmllcjsKKyAg
ICBBdG9tU3RyaW5nIHRyYWNrSWQ7CiAgICAgQXRvbVN0cmluZyBsYWJlbDsKICAgICBBdG9tU3Ry
aW5nIGxhbmd1YWdlOwogICAgIE1lZGlhVGltZSBzdGFydFRpbWVWYXJpYW5jZSB7IE1lZGlhVGlt
ZTo6emVyb1RpbWUoKSB9OwpAQCAtNDksNyArNDksNyBAQCBzdHJ1Y3QgVHJhY2tQcml2YXRlUmVt
b3RlQ29uZmlndXJhdGlvbiB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KICAgICB2b2lk
IGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgZW5jb2RlciA8
PCBpZGVudGlmaWVyOworICAgICAgICBlbmNvZGVyIDw8IHRyYWNrSWQ7CiAgICAgICAgIGVuY29k
ZXIgPDwgbGFiZWw7CiAgICAgICAgIGVuY29kZXIgPDwgbGFuZ3VhZ2U7CiAgICAgICAgIGVuY29k
ZXIgPDwgc3RhcnRUaW1lVmFyaWFuY2U7CkBAIC02Myw5ICs2Myw5IEBAIHN0cnVjdCBUcmFja1By
aXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIHsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4K
ICAgICBzdGF0aWMgT3B0aW9uYWw8VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbj4gZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxBdG9tU3RyaW5n
PiBpZGVudGlmaWVyOwotICAgICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7Ci0gICAgICAgIGlm
ICghaWRlbnRpZmllcikKKyAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gdHJhY2tJZDsKKyAg
ICAgICAgZGVjb2RlciA+PiB0cmFja0lkOworICAgICAgICBpZiAoIXRyYWNrSWQpCiAgICAgICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+
IGxhYmVsOwpAQCAtMTA5LDcgKzEwOSw3IEBAIHN0cnVjdCBUcmFja1ByaXZhdGVSZW1vdGVDb25m
aWd1cmF0aW9uIHsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAgICAg
cmV0dXJuIHt7Ci0gICAgICAgICAgICBXVEZNb3ZlKCppZGVudGlmaWVyKSwKKyAgICAgICAgICAg
IFdURk1vdmUoKnRyYWNrSWQpLAogICAgICAgICAgICAgV1RGTW92ZSgqbGFiZWwpLAogICAgICAg
ICAgICAgV1RGTW92ZSgqbGFuZ3VhZ2UpLAogICAgICAgICAgICAgV1RGTW92ZSgqc3RhcnRUaW1l
VmFyaWFuY2UpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAppbmRleCA3MjFjMGFhOTIwNzI0
ZTliMzNiNTg2NTMwMzEzN2I2Y2E1NDkwMGEwLi5lMmEzZTkwMWFmZjRlNjQxNDFiZmM5OWM2ZjBj
NDU3MjliMWQ4YmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcApAQCAtNTMsOSArNTMs
OSBAQCB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxl
ZCkKIAogdm9pZCBBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZTo6dXBkYXRlQ29uZmlndXJhdGlvbihU
cmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKIHsKLSAgICBp
ZiAoY29uZmlndXJhdGlvbi5pZGVudGlmaWVyICE9IG1faWQpIHsKKyAgICBpZiAoY29uZmlndXJh
dGlvbi50cmFja0lkICE9IG1faWQpIHsKICAgICAgICAgYXV0byBjaGFuZ2VkID0gIW1faWQuaXNF
bXB0eSgpOwotICAgICAgICBtX2lkID0gY29uZmlndXJhdGlvbi5pZGVudGlmaWVyOworICAgICAg
ICBtX2lkID0gY29uZmlndXJhdGlvbi50cmFja0lkOwogICAgICAgICBpZiAoY2hhbmdlZCAmJiBj
bGllbnQoKSkKICAgICAgICAgICAgIGNsaWVudCgpLT5pZENoYW5nZWQobV9pZCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNr
UHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRp
b1RyYWNrUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDUzZGM5YmUzM2M5YmZjMGRjNGE3YjAxZmMxZjEw
MWY5ZTg3NmE1YzUuLmNmN2MwZTkzZWY0NmY0OTAxY2VjYzVmOWY3YThlNjFlM2YxNmIzZmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1By
aXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL0F1
ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZShjb25uZWN0aW9u
LCBpZGVuZGlmaWVyLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7CiAgICAgfQogCisgICAgQXRv
bVN0cmluZyBpZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faWQ7IH0KICAgICB2b2lkIHVwZGF0
ZUNvbmZpZ3VyYXRpb24oVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYmKTsKIAogcHJp
dmF0ZToKQEAgLTU1LDcgKzU2LDYgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEF1ZGlvVHJhY2tL
aW5kID0gV2ViQ29yZTo6QXVkaW9UcmFja1ByaXZhdGU6OktpbmQ7CiAgICAgQXVkaW9UcmFja0tp
bmQga2luZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fa2luZDsgfQotICAgIEF0b21TdHJpbmcg
aWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lkOyB9CiAgICAgQXRvbVN0cmluZyBsYWJlbCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbGFiZWw7IH0KICAgICBBdG9tU3RyaW5nIGxhbmd1YWdl
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQogICAgIGludCB0cmFja0luZGV4
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV90cmFja0luZGV4OyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZS5jcHAKaW5kZXggNmRkZWU4N2FiZGNjNzZmODY5YWQ1NTRkYjUxMTJiMzZiODJmMmQ2
Yi4uNzEzMjFlNmJlNjAwNDgzOGMzYjYzNWQwZWZkYzRjMWVmNjg5MzIzZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5
ZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtNjMzLDcgKzYzMywxMCBAQCB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNv
bnRlbnRUeQogewogICAgIGlmIChtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIgPT0gTWVkaWFQbGF5
ZXJFbnVtczo6TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpBVkZvdW5kYXRpb25NU0UpIHsKICAgICAg
ICAgYXV0byBpZGVudGlmaWVyID0gUmVtb3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0
ZSgpOwotICAgICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5
ZXJQcm94eTo6TG9hZE1lZGlhU291cmNlKHVybCwgY29udGVudFR5cGUsIGlkZW50aWZpZXIpLCBt
X2lkKTsKKyAgICAgICAgY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6TG9hZE1lZGlhU291cmNlKHVybCwgY29udGVudFR5cGUs
IGlkZW50aWZpZXIpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKGF1dG8mJiBjb25m
aWd1cmF0aW9uKSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAg
d2Vha1RoaXMtPm1fY29uZmlndXJhdGlvbiA9IFdURk1vdmUoY29uZmlndXJhdGlvbik7CisgICAg
ICAgIH0sIG1faWQpOwogICAgICAgICBtX21lZGlhU291cmNlUHJpdmF0ZSA9IE1lZGlhU291cmNl
UHJpdmF0ZVJlbW90ZTo6Y3JlYXRlKG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLCBp
ZGVudGlmaWVyLCBtX21hbmFnZXIudHlwZUNhY2hlKG1fcmVtb3RlRW5naW5lSWRlbnRpZmllciks
ICp0aGlzLCBjbGllbnQpOwogCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVt
b3RlLmNwcAppbmRleCAwYWM3ODcyMGJhYzRkNDI4ZDEyNDcwNDg5ODY1OTM5MzhmZjc4NWRhLi41
MDMyMjUyYmY1MGYxNjI0NWIxNWZlNGUwZjJmYzE5MmRlNTE4NTQ5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVNvdXJjZVBy
aXZhdGVSZW1vdGUuY3BwCkBAIC0xMDMsOSArMTAzLDkgQEAgTWVkaWFTb3VyY2VQcml2YXRlOjpB
ZGRTdGF0dXMgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjphZGRTb3VyY2VCdWZmZXIoY29uc3Qg
Q28KICAgICByZXR1cm4gc3RhdHVzOwogfQogCi12b2lkIE1lZGlhU291cmNlUHJpdmF0ZVJlbW90
ZTo6ZHVyYXRpb25DaGFuZ2VkKCkKK3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjpkdXJh
dGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbikKIHsKLSAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlJlbW90ZU1lZGlhU291cmNlUHJveHk6OkR1cmF0aW9uQ2hhbmdlZChkdXJhdGlvbiks
IG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjptYXJr
RW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMpCkBAIC0xMTgsMTQgKzExOCwyMCBAQCB2b2lk
IE1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6dW5tYXJrRW5kT2ZTdHJlYW0oKQogICAgIG5vdElt
cGxlbWVudGVkKCk7CiB9CiAKK2Jvb2wgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjppc0VuZGVk
KCkgY29uc3QKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30K
KwogTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjpyZWFk
eVN0YXRlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9tZWRpYVBsYXllclByaXZhdGUgPyBtX21l
ZGlhUGxheWVyUHJpdmF0ZS0+cmVhZHlTdGF0ZSgpIDogTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6
OkhhdmVOb3RoaW5nOwogfQogCi12b2lkIE1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6c2V0UmVh
ZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSkKK3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRl
UmVtb3RlOjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUp
CiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpTZXRSZWFk
eVN0YXRlKHJlYWR5U3RhdGUpLCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIE1lZGlhU291cmNl
UHJpdmF0ZVJlbW90ZTo6d2FpdEZvclNlZWtDb21wbGV0ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVt
b3RlLmgKaW5kZXggNzc4MzRmN2ExOWRjYjBiOTRlZDUyZjY2ODAwZTYwNWMzMTUzNDc5OS4uNjRm
NzM4NWIyOTI5ZjlmMzA0YjQyYzhhMzZlMmIyNTc2MmY5ZThlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhU291cmNlUHJpdmF0
ZVJlbW90ZS5oCkBAIC01Niw5ICs1NiwxMCBAQCBwdWJsaWM6CiAKICAgICAvLyBNZWRpYVNvdXJj
ZVByaXZhdGUgb3ZlcnJpZGVzCiAgICAgQWRkU3RhdHVzIGFkZFNvdXJjZUJ1ZmZlcihjb25zdCBX
ZWJDb3JlOjpDb250ZW50VHlwZSYsIFJlZlB0cjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
PiYpIGZpbmFsOwotICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBk
dXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CiAgICAgdm9pZCBtYXJrRW5k
T2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMpIGZpbmFsOwogICAgIHZvaWQgdW5tYXJrRW5kT2ZT
dHJlYW0oKSBmaW5hbDsKKyAgICBib29sIGlzRW5kZWQoKSBjb25zdCBmaW5hbDsKICAgICBXZWJD
b3JlOjpNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgZmluYWw7CiAg
ICAgdm9pZCBzZXRSZWFkeVN0YXRlKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKSBm
aW5hbDsKICAgICB2b2lkIHdhaXRGb3JTZWVrQ29tcGxldGVkKCkgZmluYWw7CkBAIC03OSw2ICs4
MCw4IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZUNs
aWVudD4gbV9jbGllbnQ7CiAgICAgVmVjdG9yPFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlPj4gbV9zb3VyY2VCdWZmZXJzOwogCisgICAgTWVkaWFUaW1lIG1fZHVyYXRpb247CisKICNp
ZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiAiTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlIjsgfQogICAg
IGNvbnN0IHZvaWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lk
ZW50aWZpZXI7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDYzMmUwMGZi
MTUyZDBmZDc0NjU3NmUzNGNhZmJmOWUyYjQ2M2JmN2QuLjZlZGU0MjJhOWM5NDM3MmY0MmQ0MGE2
YmYzMWRjNjVhYTMxY2I1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcApAQCAt
MzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5TWVzc2FnZXMu
aCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9y
bVRpbWVSYW5nZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGll
bnQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKQEAgLTEwMCwxNyArMTAxLDE1IEBAIE1lZGlh
UGxheWVyOjpSZWFkeVN0YXRlIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnJlYWR5U3RhdGUo
KSBjb25zdAogICAgIHJldHVybiBtX21lZGlhUGxheWVyUHJpdmF0ZSA/IG1fbWVkaWFQbGF5ZXJQ
cml2YXRlLT5yZWFkeVN0YXRlKCkgOiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhp
bmc7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c2V0UmVhZHlTdGF0ZShN
ZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6
c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0ZSkKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotfQorICAgIGlmICghbV9tZWRpYVNvdXJjZVByaXZhdGUpCisgICAgICAg
IHJldHVybjsKIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpmbHVzaChjb25zdCBB
dG9tU3RyaW5nJiB0cmFja0lEKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9ncHVQ
cm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNl
QnVmZmVyUHJveHk6OlNldFJlYWR5U3RhdGUoc3RhdGUpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklk
ZW50aWZpZXIpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmVucXVldWVT
YW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKQordm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpmbHVzaChjb25zdCBBdG9tU3RyaW5nJiB0cmFj
a0lEKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkBAIC0xMjAsOSArMTE5LDEzIEBAIGJv
b2wgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6aXNSZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0
IEF0b21TdHJpbmcmIHRyYWNrSUQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNldEFjdGl2ZShib29sKQordm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlUmVtb3RlOjpzZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICBpZiAoIW1fbWVkaWFTb3VyY2VQcml2YXRlKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2lzQWN0aXZlID0gYWN0aXZlOworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29u
bmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpTZXRBY3Rp
dmUoYWN0aXZlKSwgbV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBT
b3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpub3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3JlU2Ft
cGxlcyhjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKQpAQCAtMTUxLDcgKzE1NCwzNiBAQCBib29s
IFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmNhblN3aXRjaFRvVHlwZShjb25zdCBDb250ZW50
VHlwZSYpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGU6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50
KEluaXRpYWxpemF0aW9uU2VnbWVudEluZm8mJiBzZWdtZW50SW5mbykKK3ZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZTo6dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wgc291
cmNlSXNFbmRlZCkKK3sKKyAgICBpZiAoIW1fbWVkaWFTb3VyY2VQcml2YXRlKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1l
c3NhZ2VzOjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6VXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tC
dWZmZXJzKHNvdXJjZUlzRW5kZWQpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpOwor
fQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmV2aWN0Q29kZWRGcmFtZXModWlu
dDY0X3QgbmV3RGF0YVNpemUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVp
bnQ2NF90IG1heGltdW1CdWZmZXJTaXplLCBjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBj
b25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uLCBib29sIGlzRW5kZWQpCit7CisgICAgbV9ncHVQcm9j
ZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNlQnVm
ZmVyUHJveHk6OkV2aWN0Q29kZWRGcmFtZXMobmV3RGF0YVNpemUsIHBlbmRpbmdBcHBlbmREYXRh
Q2FwYWNpdHksIG1heGltdW1CdWZmZXJTaXplLCBjdXJyZW50VGltZSwgZHVyYXRpb24sIGlzRW5k
ZWQpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpOworfQorCit2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGU6OmFkZFRyYWNrQnVmZmVyKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNr
SWQsIFJlZlB0cjxNZWRpYURlc2NyaXB0aW9uPiYmKQoreworICAgIEFTU0VSVChtX3RyYWNrSWRl
bnRpZmllck1hcC5jb250YWlucyh0cmFja0lkKSk7CisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlv
bi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OkFk
ZFRyYWNrQnVmZmVyKG1fdHJhY2tJZGVudGlmaWVyTWFwLmdldCh0cmFja0lkKSksIG1fcmVtb3Rl
U291cmNlQnVmZmVySWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJl
bW90ZTo6cmVlbnF1ZXVlTWVkaWFJZk5lZWRlZChjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRNZWRp
YVRpbWUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGlt
dW1CdWZmZXJTaXplKQoreworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpSZWVucXVldWVNZWRpYUlm
TmVlZGVkKGN1cnJlbnRNZWRpYVRpbWUsIHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIG1heGlt
dW1CdWZmZXJTaXplKSwgbV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyKTsKK30KKwordm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjp0cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0Vu
cXVldWVkKCkKK3sKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6VHJ5U2lnbmFsQWxsU2FtcGxlc0lu
VHJhY2tFbnF1ZXVlZCgpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpOworfQorCit2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNl
aXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemF0aW9uU2VnbWVudEluZm8mJiBzZWdt
ZW50SW5mbywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGlmICghbV9jbGllbnQgfHwgIW1fbWVkaWFQbGF5ZXJQcml2YXRlKQogICAgICAgICBy
ZXR1cm47CkBAIC0xNjQsNiArMTk2LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWUKICAgICAg
ICAgaW5mby50cmFjayA9IG1fbWVkaWFQbGF5ZXJQcml2YXRlLT5hdWRpb1RyYWNrUHJpdmF0ZVJl
bW90ZShhdWRpb1RyYWNrLmlkZW50aWZpZXIpOwogICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0g
UmVtb3RlTWVkaWFEZXNjcmlwdGlvbjo6Y3JlYXRlKGF1ZGlvVHJhY2suZGVzY3JpcHRpb24pOwog
ICAgICAgICBzZWdtZW50LmF1ZGlvVHJhY2tzLmFwcGVuZChpbmZvKTsKKyAgICAgICAgbV90cmFj
a0lkZW50aWZpZXJNYXAuYWRkKGluZm8udHJhY2stPmlkKCksIGF1ZGlvVHJhY2suaWRlbnRpZmll
cik7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiB2aWRlb1RyYWNrIDogc2VnbWVudEluZm8udmlk
ZW9UcmFja3MpIHsKQEAgLTE3MSw2ICsyMDQsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGU6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZQog
ICAgICAgICBpbmZvLnRyYWNrID0gbV9tZWRpYVBsYXllclByaXZhdGUtPnZpZGVvVHJhY2tQcml2
YXRlUmVtb3RlKHZpZGVvVHJhY2suaWRlbnRpZmllcik7CiAgICAgICAgIGluZm8uZGVzY3JpcHRp
b24gPSBSZW1vdGVNZWRpYURlc2NyaXB0aW9uOjpjcmVhdGUodmlkZW9UcmFjay5kZXNjcmlwdGlv
bik7CiAgICAgICAgIHNlZ21lbnQudmlkZW9UcmFja3MuYXBwZW5kKGluZm8pOworICAgICAgICBt
X3RyYWNrSWRlbnRpZmllck1hcC5hZGQoaW5mby50cmFjay0+aWQoKSwgdmlkZW9UcmFjay5pZGVu
dGlmaWVyKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIHRleHRUcmFjayA6IHNlZ21lbnRJbmZv
LnRleHRUcmFja3MpIHsKQEAgLTE3OCw5ICsyMTIsMTAgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2Vn
bWUKICAgICAgICAgaW5mby50cmFjayA9IG1fbWVkaWFQbGF5ZXJQcml2YXRlLT50ZXh0VHJhY2tQ
cml2YXRlUmVtb3RlKHRleHRUcmFjay5pZGVudGlmaWVyKTsKICAgICAgICAgaW5mby5kZXNjcmlw
dGlvbiA9IFJlbW90ZU1lZGlhRGVzY3JpcHRpb246OmNyZWF0ZSh0ZXh0VHJhY2suZGVzY3JpcHRp
b24pOwogICAgICAgICBzZWdtZW50LnRleHRUcmFja3MuYXBwZW5kKGluZm8pOworICAgICAgICBt
X3RyYWNrSWRlbnRpZmllck1hcC5hZGQoaW5mby50cmFjay0+aWQoKSwgdGV4dFRyYWNrLmlkZW50
aWZpZXIpOwogICAgIH0KIAotICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVj
ZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpKTsKKyAgICBtX2NsaWVu
dC0+c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoV1RG
TW92ZShzZWdtZW50KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0
ZShTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQgYXBwZW5kUmVzdWx0KQpA
QCAtMTg5LDYgKzIyNCwzMCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJj
ZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShTb3VyY2VCdWZmZXJQcgogICAgICAgICBtX2Ns
aWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKGFwcGVuZFJlc3VsdCk7CiB9
CiAKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZUR1
cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uKQoreworICAgIGlmIChtX2Ns
aWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5n
ZWQoZHVyYXRpb24pOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJj
ZUJ1ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBsZShkb3VibGUgc2FtcGxlRHVyYXRpb24pCit7Cisg
ICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZURp
ZFBhcnNlU2FtcGxlKHNhbXBsZUR1cmF0aW9uKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCBk
aXJ0eSkKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZm
ZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoZGlydHkpOworfQorCit2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5n
ZWQoY29uc3QgV2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQoreworICAg
IGlmIChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZm
ZXJlZFJhbmdlc0NoYW5nZWQodGltZVJhbmdlcyk7Cit9CisKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKIFdURkxvZ0NoYW5uZWwmIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmxvZ0NoYW5u
ZWwoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaAppbmRleCA0ZDBlMDMwOWFk
NTlkNjk0ZjEzYmMxNGM0N2NiYmE0YWYyZjdhODYyLi43NjJmNjNiZjdkMmI3OWJmZWViZmUyYWNl
YTgyMzMxNzQ1MTkwMDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaApAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVz
c2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllci5o
IgorI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL0NvbnRlbnRUeXBlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNhbXBsZS5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZS5oPgpAQCAtNDYsNiArNDcsMTAg
QEAgY2xhc3MgQ29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7CiB9CiAKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIFBsYXRmb3JtVGltZVJhbmdlczsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIHN0cnVjdCBJbml0aWFsaXphdGlvblNlZ21lbnRJbmZvOwpAQCAtNzQsMjUgKzc5LDQwIEBA
IHByaXZhdGU6CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0
ZSgpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShXZWJDb3JlOjpNZWRpYVBs
YXllcjo6UmVhZHlTdGF0ZSkgZmluYWw7CiAgICAgdm9pZCBmbHVzaChjb25zdCBBdG9tU3RyaW5n
JiB0cmFja0lEKSBmaW5hbDsKLSAgICB2b2lkIGVucXVldWVTYW1wbGUoUmVmPFdlYkNvcmU6Ok1l
ZGlhU2FtcGxlPiYmLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKSBmaW5hbDsKICAgICBib29s
IGlzUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKSBmaW5hbDsK
ICAgICB2b2lkIHNldEFjdGl2ZShib29sKSBmaW5hbDsKKyAgICBib29sIGlzQWN0aXZlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9pc0FjdGl2ZTsgfQogICAgIHZvaWQgbm90aWZ5Q2xpZW50V2hl
blJlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkgZmluYWw7CiAg
ICAgYm9vbCBjYW5TZXRNaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lKGNvbnN0IEF0b21T
dHJpbmcmKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldE1pbmltdW1VcGNvbWluZ1ByZXNlbnRh
dGlvblRpbWUoY29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOwogICAg
IHZvaWQgY2xlYXJNaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lKGNvbnN0IEF0b21TdHJp
bmcmKSBmaW5hbDsKICAgICBib29sIGNhblN3aXRjaFRvVHlwZShjb25zdCBXZWJDb3JlOjpDb250
ZW50VHlwZSYpIGZpbmFsOworICAgIHZvaWQgdXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJz
KGJvb2wgc291cmNlSXNFbmRlZCkgZmluYWw7CisgICAgdm9pZCBldmljdENvZGVkRnJhbWVzKHVp
bnQ2NF90IG5ld0RhdGFTaXplLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1
aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50VGltZSwg
Y29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbiwgYm9vbCBpc0VuZGVkKSBmaW5hbDsKKyAgICB2b2lk
IGFkZFRyYWNrQnVmZmVyKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSWQsIFJlZlB0cjxXZWJDb3Jl
OjpNZWRpYURlc2NyaXB0aW9uPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlZW5xdWV1ZU1lZGlhSWZO
ZWVkZWQoY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50TWVkaWFUaW1lLCB1aW50NjRfdCBwZW5kaW5n
QXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSkgZmluYWw7Cisg
ICAgdm9pZCB0cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKCkgZmluYWw7CiAKICAg
ICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYp
IGZpbmFsOwotCi0gICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxp
emF0aW9uU2VnbWVudChJbml0aWFsaXphdGlvblNlZ21lbnRJbmZvJiYpOworICAgIHZvaWQgc291
cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlhbGl6
YXRpb25TZWdtZW50SW5mbyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZv
aWQgc291cmNlQnVmZmVyUHJpdmF0ZVN0cmVhbUVuZGVkV2l0aERlY29kZUVycm9yKCk7CisgICAg
dm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9vbCBkZWNvZGVFcnJvcik7CiAg
ICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoV2ViQ29yZTo6U291cmNl
QnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0KTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZl
clByaXZhdGVEdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJik7CisgICAgdm9pZCBzb3Vy
Y2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoZG91YmxlIHNhbXBsZUR1cmF0aW9uKTsKKyAg
ICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWREcm9wU2FtcGxlKCk7CisgICAgdm9pZCBzb3Vy
Y2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVJlbmRlcmluZ0Vycm9yKGludCBlcnJvckNvZGUpOwor
ICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGJvb2wgZGly
dHkpOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChj
b25zdCBXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXMmKTsKIAogICAgIEdQVVByb2Nlc3NDb25u
ZWN0aW9uJiBtX2dwdVByb2Nlc3NDb25uZWN0aW9uOwogICAgIFJlbW90ZVNvdXJjZUJ1ZmZlcklk
ZW50aWZpZXIgbV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyOwogICAgIFdlYWtQdHI8TWVk
aWFTb3VyY2VQcml2YXRlUmVtb3RlPiBtX21lZGlhU291cmNlUHJpdmF0ZTsKICAgICBXZWFrUHRy
PE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZT4gbV9tZWRpYVBsYXllclByaXZhdGU7Ci0gICAgV2Vi
Q29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CisK
KyAgICBIYXNoTWFwPEF0b21TdHJpbmcsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI+IG1f
dHJhY2tJZGVudGlmaWVyTWFwOworCisgICAgYm9vbCBtX2lzQWN0aXZlIHsgZmFsc2UgfTsKIAog
I2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgppbmRleCA0MDY0MmY2MDM2ZWY3ZTExZTIzYjgwZjVh
NDUxZDc2ZjNlZDI4YzRlLi42YzhjY2EwZmU4OTdjNTk5ZWM0Y2ViOGEyYmVhNWE5YWFiZjQ2ODY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCkBAIC0y
Niw4ICsyNiwxMiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NP
VVJDRSkKIAogbWVzc2FnZXMgLT4gU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZSBOb3RSZWZDb3Vu
dGVkIHsKLSAgICBTb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2Vn
bWVudChzdHJ1Y3QgV2ViS2l0OjpJbml0aWFsaXphdGlvblNlZ21lbnRJbmZvIHNlZ21lbnRDb25m
aWd1cmF0aW9uKQorICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRp
b25TZWdtZW50KHN0cnVjdCBXZWJLaXQ6OkluaXRpYWxpemF0aW9uU2VnbWVudEluZm8gc2VnbWVu
dENvbmZpZ3VyYXRpb24pIC0+ICgpIEFzeW5jCiAgICAgU291cmNlQnVmZmVyUHJpdmF0ZUFwcGVu
ZENvbXBsZXRlKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3Vs
dCBhcHBlbmRSZXN1bHQpCisgICAgU291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChN
ZWRpYVRpbWUgZHVyYXRpb24pCisgICAgU291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxl
KGRvdWJsZSBzYW1wbGVEdXJhdGlvbikKKyAgICBTb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWRE
aXJ0eUNoYW5nZWQoYm9vbCBkaXJ0eSkKKyAgICBTb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWRS
YW5nZXNDaGFuZ2VkKFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdlcyB0aW1lUmFuZ2VzKQogfQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDczMjIzYjg2ODQyMTNhMGJk
OGY3MTI4MmE4ZThkZWE2MTU5OTVlYzAuLjJiNTZmZWQyM2RlYzM1ODU5YWI4NTdlNmY2ZGZmZDc5
OGUxYWFlMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcApAQCAtNTYsOSArNTYsOSBAQCB2
b2lkIFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnNldE1vZGUoVGV4dFRyYWNrTW9kZSBtb2RlKQog
CiB2b2lkIFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnVwZGF0ZUNvbmZpZ3VyYXRpb24oVGV4dFRy
YWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQogewotICAgIGlm
IChjb25maWd1cmF0aW9uLmlkZW50aWZpZXIgIT0gbV9pZCkgeworICAgIGlmIChjb25maWd1cmF0
aW9uLnRyYWNrSWQgIT0gbV9pZCkgewogICAgICAgICBhdXRvIGNoYW5nZWQgPSAhbV9pZC5pc0Vt
cHR5KCk7Ci0gICAgICAgIG1faWQgPSBjb25maWd1cmF0aW9uLmlkZW50aWZpZXI7CisgICAgICAg
IG1faWQgPSBjb25maWd1cmF0aW9uLnRyYWNrSWQ7CiAgICAgICAgIGlmIChjaGFuZ2VkICYmIGNs
aWVudCgpKQogICAgICAgICAgICAgY2xpZW50KCktPmlkQ2hhbmdlZChtX2lkKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1ZpZGVvVHJhY2tQ
cml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVmlk
ZW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwCmluZGV4IGFjNmVhMDE0MjcxYzMzMTI2Y2Q3NTJiM2Zm
ZDNiNzg1NDM5ZGU2NTcuLjM1ZThlN2Q4MzljNzI4MDFmNmE5NmZiZWQyNzIwNjRkNGZkNjZmMDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVmlkZW9UcmFj
a1ByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvVmlkZW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwCkBAIC01Miw5ICs1Miw5IEBAIHZvaWQgVmlk
ZW9UcmFja1ByaXZhdGVSZW1vdGU6OnNldFNlbGVjdGVkKGJvb2wgc2VsZWN0ZWQpCiAKIHZvaWQg
VmlkZW9UcmFja1ByaXZhdGVSZW1vdGU6OnVwZGF0ZUNvbmZpZ3VyYXRpb24oVHJhY2tQcml2YXRl
UmVtb3RlQ29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgaWYgKGNvbmZpZ3Vy
YXRpb24uaWRlbnRpZmllciAhPSBtX2lkKSB7CisgICAgaWYgKGNvbmZpZ3VyYXRpb24udHJhY2tJ
ZCAhPSBtX2lkKSB7CiAgICAgICAgIGF1dG8gY2hhbmdlZCA9ICFtX2lkLmlzRW1wdHkoKTsKLSAg
ICAgICAgbV9pZCA9IGNvbmZpZ3VyYXRpb24uaWRlbnRpZmllcjsKKyAgICAgICAgbV9pZCA9IGNv
bmZpZ3VyYXRpb24udHJhY2tJZDsKICAgICAgICAgaWYgKGNoYW5nZWQgJiYgY2xpZW50KCkpCiAg
ICAgICAgICAgICBjbGllbnQoKS0+aWRDaGFuZ2VkKG1faWQpOwogICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415705</attachid>
            <date>2020-12-08 20:33:04 -0800</date>
            <delta_ts>2020-12-09 12:12:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219402-20201208203303.patch</filename>
            <type>text/plain</type>
            <size>122450</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RlYmRkNjNmYjkxNzM2
MTE4MDVlOWY1NDI4Zjk0YmExMWJiMWNlNy4uODI2MWQ3OTk3NjFkYTRkYTdlNzcxNzE5NDhlZWU0
Y2Y3NGYyNDcyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAyMC0xMi0wOCAgUGVu
ZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUgUHJv
Y2Vzc11bTVNFXSBJbXBsZW1lbnQgYmFzaWMgdmlkZW8gcGxheWJhY2sKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCB0aGUgdmlkZW8gcGxh
eWJhY2sgc3VwcG9ydCB3aGVuIHRoZSBNU0UgbWVkaWEgcGxheWVyIHJ1bnMgaW4gdGhlIEdQVSBw
cm9jZXNzLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0UHJpdmF0ZUFuZE9wZW4pOiBQcm9w
YWdhdGUgdGhlIHRpbWUgZnVkZ2UgZmFjdG9yIHRvCisgICAgICAgIGBNZWRpYVNvdXJjZVByaXZh
dGVgIHNvIHRoYXQgYFNvdXJjZUJ1ZmZlclByaXZhdGVgIGNhbiB1c2UgaXQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0RHVyYXRpb25JbnRlcm5hbCk6IFByb3BhZ2F0ZSB0aGUg
ZHVyYXRpb24gaW5mb3JtYXRpb24KKyAgICAgICAgdG8gYE1lZGlhU291cmNlUHJpdmF0ZWAgc28g
dGhhdCBgU291cmNlQnVmZmVyUHJpdmF0ZWAgY2FuIHVzZSBpdC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU291cmNlOjpzdHJlYW1FbmRlZFdpdGhFcnJvcik6IE1hcmsgdGhlIHN0cmVhbSBpcyBl
bmQgaW4gYE1lZGlhU291cmNlUHJpdmF0ZWAuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OlNv
dXJjZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6On5Tb3VyY2VCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpidWZmZXJlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRD
b21wbGV0ZSk6IE1vdmUgdGhlIGNvZGUgdG8gdXBkYXRlCisgICAgICAgIGBidWZmZXJlZGAgdG8g
YFNvdXJjZUJ1ZmZlclByaXZhdGVgIHRvIG1ha2Ugc3VyZSB0aGUgYGJ1ZmZlcmVkYCBhdHRyaWJ1
dGUgaXMgdXBkYXRlZCB0aW1lbHkuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6Om1h
eGltdW1CdWZmZXJTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQpOiBBZGQg
YSBjb21wbGV0aW9uSGFuZGxlcgorICAgICAgICBwYXJhbWV0ZXIgdG8gbm90aWZ5IHRoZSBjYWxs
ZXIgKGBTb3VyY2VCdWZmZXJQYXJzZXJgKSB0aGF0IHRoZSB0cmFjayBidWZmZXIgbWFuYWdlciAo
YFNvdXJjZUJ1ZmZlclByaXZhdGVgKQorICAgICAgICBoYXMgaGFuZGxlZCB0aGUgaW5pdGlhbGl6
YXRpb24gc2VnbWVudCBhbmQgaXMgcmVhZHkgdG8gcmVjZWl2ZSBtZWRpYSBzYW1wbGVzLgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpleHRyYU1lbW9yeUNvc3QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpyZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNldE1heGltdW1RdWV1ZURlcHRoRm9y
VHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclBy
aXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyOjppc0J1ZmZlcmVkRGlydHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyOjpzZXRCdWZmZXJlZERpcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlvIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0
ZUhhc1ZpZGVvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNl
L1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICBTb21lIHBhcmFtZXRlcnMgYW5kIHJldHVybiB2YWx1
ZXMgYXJlIGNoYW5nZWQgZnJvbSBgc2l6ZV90YCB0byBgdWludDY0X3RgIGJlY2F1c2UgdGhleQor
ICAgICAgICBuZWVkIHRvIHBhc3Mgd2l0aCBJUEMgbWVzc2FnZXMgd2hlbiB3ZSBydW4gdGhlIE1T
RSBtZWRpYSBwbGF5ZXIgaW4gdGhlIEdQVSBwcm9jZXNzLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNv
dXJjZVByaXZhdGU6OnNldFRpbWVGdWRnZUZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNvdXJjZVByaXZhdGU6OnRpbWVGdWRnZUZhY3RvciBjb25zdCk6CisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGU6OnNldEJ1ZmZlcmVkRGlydHkpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0QnVmZmVyZWRSYW5nZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZENvbXBsZXRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjpidWZmZXJlZFNhbXBs
ZXNGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OnBy
b3ZpZGVNZWRpYURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6
cmVlbnF1ZXVlTWVkaWFGb3JUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGU6OnJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3Zl
U2FtcGxlc0Zyb21UcmFja0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlOjpldmljdENvZGVkRnJhbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGU6OnRvdGFsVHJhY2tCdWZmZXJTaXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjphZGRUcmFja0J1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVT
YW1wbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6Omhhc0F1ZGlvIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6Omhhc1ZpZGVvIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OnN0YXJ0Q2hhbmdpbmdU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OnNldE1heGltdW1R
dWV1ZURlcHRoRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2
YXRlOjp0aW1lRnVkZ2VGYWN0b3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZTo6c2V0QWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGU6OnNldEN1cnJlbnRUaW1lRnVkZ2VGYWN0b3IpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6YnVmZmVyZWQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6aXNCdWZmZXJlZERp
cnR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGU6OnNldEJ1ZmZlcmVkRGlydHkpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oOgorICAgICAgICBgU291cmNlQnVmZmVy
UHJpdmF0ZWAgY2FuIGZpZ3VyZSBvdXQgdGhlIHZhbHVlcyBvZiBgaGFzQXVkaW9gIGFuZCBgaGFz
VmlkZW9gIGJlY2F1c2UKKyAgICAgICAgaXQgbWFuYWdlcyB0aGUgdHJhY2sgYnVmZmVycywgc28g
dGhlIGZ1bmN0aW9ucyBgc291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlvKClgIGFuZAorICAgICAg
ICBgc291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKClgIGNhbiBiZSByZW1vdmVkLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaDoKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQzo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpkdXJhdGlvbkNoYW5nZWQpOgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRpZFByb3ZpZGVNZWRp
YURhdGFGb3JUcmFja0lEKToKKyAgICAgICAgVXNlIGEgY29uZGl0aW9uIHZhcmlhYmxlIHRvIGhv
bGQgdGhlIGNhbGxiYWNrIHJlZ2FyZGluZyBuZXcgc2FtcGxlcyBhdmFpbGFibGUKKyAgICAgICAg
dW50aWwgdGhlIHRyYWNrIGJ1ZmZlciBtYW5hZ2VyIGhhcyBoYW5kbGVkIHRoZSBpbml0aWFsaXph
dGlvbiBzZWdtZW50LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZENvbXBsZXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZW5xdWV1ZVNhbXBsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dGltZUZ1ZGdlRmFjdG9y
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpo
YXNWaWRlbyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6aGFzQXVkaW8gY29uc3QpOiBEZWxldGVkLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmg6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkNsdXN0ZXJCZWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPblRyYWNrRW50cnkpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25GcmFtZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oOgorICAg
ICAgICBUaGUgc2FtZSBhcyBgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakNgLgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVByaXZhdGVHU3Ry
ZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlR1N0cmVhbWVy
OjpkdXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRl
R1N0cmVhbWVyOjptYXJrRW5kT2ZTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3Vy
Y2VQcml2YXRlR1N0cmVhbWVyOjp1bm1hcmtFbmRPZlN0cmVhbSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVByaXZhdGVHU3RyZWFtZXIuaDoK
KworICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJp
dmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpkdXJh
dGlvbkNoYW5nZWQpOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01l
ZGlhU291cmNlUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJj
ZUJ1ZmZlclByaXZhdGU6OmFwcGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVm
ZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JU
cmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpoYXNW
aWRlbyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVy
UHJpdmF0ZTo6aGFzQXVkaW8gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21v
Y2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaDoKKwogMjAyMC0xMi0wNCAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFNpbXBsaWZ5IGF1ZGlv
IHJlc2FtcGxpbmcgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAzMzdhNTQ0MGUyMTc2YTlkZTU2MmQyYjU0Nzhk
NzljMTQwODQ5OGYxLi5hOThhMDM5OTdmNjc5N2QwMmM5ZDljNzBkNDA0ZTUzOWYzMDMyZmNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAyMC0xMi0wOCAgUGVuZyBMaXUgIDxwZW5nLmxp
dTZAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUgUHJvY2Vzc11bTVNFXSBJbXBs
ZW1lbnQgYmFzaWMgdmlkZW8gcGxheWJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxOTQwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCB0aGUgbmVjZXNzYXJ5IGZ1bmN0aW9ucyB3aXRo
IElQQyB0byBzdXBwb3J0IG1lZGlhIHBsYXliYWNrLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVBdWRpb1RyYWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVB
dWRpb1RyYWNrUHJveHk6OmNvbmZpZ3VyYXRpb24pOiBSZW5hbWUgYGlkZW50aWZpZXJgIHRvIGB0
cmFja0lkYAorICAgICAgICBiZWNhdXNlIGl0IGlzIGVhc3kgdG8gY29uZnVzZSB3aXRoIGBUcmFj
a1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyYC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlh
UGxheWVyUHJveHk6OmxvYWRNZWRpYVNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1l
ZGlhUGxheWVyUHJveHk6OnVwZGF0ZUNhY2hlZFN0YXRlKTogRm9yIE1TRSBtZWRpYSBwbGF5ZXIs
IGBTb3VyY2VCdWZmZXJgCisgICAgICAgIHByb3ZpZGVzIHRoZSBidWZmZXJlZCByYW5nZXMsIHNv
IGBSZW1vdGVNZWRpYVBsYXllclByb3h5YCBkb2VzIG5vdCBuZWVkIHRvIHJlcG9ydCB0aGlzCisg
ICAgICAgIGluZm9ybWF0aW9uIHRvIHRoZSBgTWVkaWFQbGF5ZXJgIG9iamVjdCBpbiB0aGUgV2Vi
IHByb2Nlc3MuCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclBy
b3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5
Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNv
dXJjZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6
ZHVyYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZVByb3h5
OjpidWZmZXJlZCBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNlUHJv
eHk6OmR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNl
UHJveHk6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFTb3VyY2VQcm94eS5oOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFTb3VyY2VQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eTo6UmVtb3RlU291cmNlQnVmZmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6flJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5KToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZh
dGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVy
UHJpdmF0ZURpZFBhcnNlU2FtcGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVm
ZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVj
ZWl2ZVJlbmRlcmluZ0Vycm9yKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVy
UHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZCk6CisgICAgICAg
IChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlQnVm
ZmVyZWRSYW5nZXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVy
UHJveHk6OnNldEFjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclBy
b3h5OjpzZXRSZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVy
UHJveHk6OnVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVmZmVycyk6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpldmljdENvZGVkRnJhbWVzKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OmFkZFRyYWNrQnVmZmVyKToKKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6dHJ5U2lnbmFsQWxs
U2FtcGxlc0luVHJhY2tFbnF1ZXVlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlSGFzQXVkaW8gY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJp
dmF0ZUhhc1ZpZGVvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIEdQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1v
dGVUZXh0VHJhY2tQcm94eTo6Y29uZmlndXJhdGlvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVWaWRlb1RyYWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVW
aWRlb1RyYWNrUHJveHk6OmNvbmZpZ3VyYXRpb24pOgorCisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoV2Vi
S2l0OjpUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYktpdDo6VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb246OmRl
Y29kZSk6CisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1RyYWNrUHJpdmF0ZVJlbW90ZUNv
bmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlQ29uZmln
dXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6VHJhY2tQcml2YXRlUmVt
b3RlQ29uZmlndXJhdGlvbjo6ZGVjb2RlKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21l
ZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXVkaW9U
cmFja1ByaXZhdGVSZW1vdGU6OnVwZGF0ZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmg6CisKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQpOgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjpkdXJhdGlvbkNoYW5nZWQpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OmlzRW5kZWQgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OnNldFJlYWR5U3Rh
dGUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJl
bW90ZS5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGU6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRl
UmVtb3RlOjpmbHVzaCk6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGU6OnNldEFjdGl2ZSk6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1v
dGU6OnVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVmZmVycyk6CisgICAgICAgIChXZWJLaXQ6OlNv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmV2aWN0Q29kZWRGcmFtZXMpOgorICAgICAgICAoV2Vi
S2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjphZGRUcmFja0J1ZmZlcik6CisgICAgICAg
IChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnJlZW5xdWV1ZU1lZGlhSWZOZWVk
ZWQpOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjp0cnlTaWdu
YWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXph
dGlvblNlZ21lbnQpOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
Ojpzb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2Ft
cGxlKToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNl
QnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6U291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2Vz
Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmVu
cXVldWVTYW1wbGUpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1Nv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluOgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OlRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnVwZGF0ZUNvbmZpZ3VyYXRpb24pOgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVmlkZW9UcmFja1ByaXZhdGVSZW1vdGUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpWaWRlb1RyYWNrUHJpdmF0ZVJlbW90ZTo6dXBkYXRlQ29uZmln
dXJhdGlvbik6CisKIDIwMjAtMTItMDQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPU10gQ2FuY2VsIGltYWdlIGV4dHJhY3Rpb24gd2hlbiBuYXZp
Z2F0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01l
ZGlhU291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFT
b3VyY2UuY3BwCmluZGV4IGZlZTU0NzM5ZDU1ZjBlMWQ1YTE2YjVhYzliMTRiMmMwYWI3MmY4OTEu
LmFkZjdiMTk1YWJiYjAzYzAxMGYyMDgyN2VlMGFjZGZmZmUwNGE1MzcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC0xMjQs
NiArMTI0LDcgQEAgdm9pZCBNZWRpYVNvdXJjZTo6c2V0UHJpdmF0ZUFuZE9wZW4oUmVmPE1lZGlh
U291cmNlUHJpdmF0ZT4mJiBtZWRpYVNvdXJjZVByaXZhdGUKICAgICBBU1NFUlQoIW1fcHJpdmF0
ZSk7CiAgICAgQVNTRVJUKG1fbWVkaWFFbGVtZW50KTsKICAgICBtX3ByaXZhdGUgPSBXVEZNb3Zl
KG1lZGlhU291cmNlUHJpdmF0ZSk7CisgICAgbV9wcml2YXRlLT5zZXRUaW1lRnVkZ2VGYWN0b3Io
Y3VycmVudFRpbWVGdWRnZUZhY3RvcigpKTsKIAogICAgIC8vIDIuNC4xIEF0dGFjaGluZyB0byBh
IG1lZGlhIGVsZW1lbnQKICAgICAvLyBodHRwczovL3Jhd2dpdC5jb20vdzNjL21lZGlhLXNvdXJj
ZS80NTYyNzY0NjM0NGVlYTAxNzBkZDFjYmM1YTNkNTA4Y2E3NTFhYmI4L21lZGlhLXNvdXJjZS1y
ZXNwZWMuaHRtbCNtZWRpYXNvdXJjZS1hdHRhY2gKQEAgLTU1Niw3ICs1NTcsNyBAQCBFeGNlcHRp
b25Pcjx2b2lkPiBNZWRpYVNvdXJjZTo6c2V0RHVyYXRpb25JbnRlcm5hbChjb25zdCBNZWRpYVRp
bWUmIGR1cmF0aW9uKQogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgZHVyYXRpb24pOwog
CiAgICAgLy8gNi4gVXBkYXRlIHRoZSBtZWRpYSBkdXJhdGlvbiB0byBuZXcgZHVyYXRpb24gYW5k
IHJ1biB0aGUgSFRNTE1lZGlhRWxlbWVudCBkdXJhdGlvbiBjaGFuZ2UgYWxnb3JpdGhtLgotICAg
IG1fcHJpdmF0ZS0+ZHVyYXRpb25DaGFuZ2VkKCk7CisgICAgbV9wcml2YXRlLT5kdXJhdGlvbkNo
YW5nZWQoZHVyYXRpb24pOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTYyOCw2ICs2MjksNyBA
QCB2b2lkIE1lZGlhU291cmNlOjpzdHJlYW1FbmRlZFdpdGhFcnJvcihPcHRpb25hbDxFbmRPZlN0
cmVhbUVycm9yPiBlcnJvcikKICAgICAgICAgICAgIHNvdXJjZUJ1ZmZlci0+dHJ5U2lnbmFsQWxs
U2FtcGxlc0VucXVldWVkKCk7CiAgICAgICAgIG1fcHJpdmF0ZS0+bWFya0VuZE9mU3RyZWFtKE1l
ZGlhU291cmNlUHJpdmF0ZTo6RW9zTm9FcnJvcik7CiAgICAgfSBlbHNlIGlmIChlcnJvciA9PSBF
bmRPZlN0cmVhbUVycm9yOjpOZXR3b3JrKSB7CisgICAgICAgIG1fcHJpdmF0ZS0+bWFya0VuZE9m
U3RyZWFtKE1lZGlhU291cmNlUHJpdmF0ZTo6RW9zTmV0d29ya0Vycm9yKTsKICAgICAgICAgLy8g
4oazIElmIGVycm9yIGlzIHNldCB0byAibmV0d29yayIKICAgICAgICAgQVNTRVJUKG1fbWVkaWFF
bGVtZW50KTsKICAgICAgICAgaWYgKG1fbWVkaWFFbGVtZW50LT5yZWFkeVN0YXRlKCkgPT0gSFRN
TE1lZGlhRWxlbWVudDo6SEFWRV9OT1RISU5HKSB7CkBAIC02NDYsNiArNjQ4LDggQEAgdm9pZCBN
ZWRpYVNvdXJjZTo6c3RyZWFtRW5kZWRXaXRoRXJyb3IoT3B0aW9uYWw8RW5kT2ZTdHJlYW1FcnJv
cj4gZXJyb3IpCiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8g4oazIElmIGVycm9yIGlzIHNldCB0
byAiZGVjb2RlIgogICAgICAgICBBU1NFUlQoZXJyb3IgPT0gRW5kT2ZTdHJlYW1FcnJvcjo6RGVj
b2RlKTsKKyAgICAgICAgbV9wcml2YXRlLT5tYXJrRW5kT2ZTdHJlYW0oTWVkaWFTb3VyY2VQcml2
YXRlOjpFb3NEZWNvZGVFcnJvcik7CisKICAgICAgICAgQVNTRVJUKG1fbWVkaWFFbGVtZW50KTsK
ICAgICAgICAgaWYgKG1fbWVkaWFFbGVtZW50LT5yZWFkeVN0YXRlKCkgPT0gSFRNTE1lZGlhRWxl
bWVudDo6SEFWRV9OT1RISU5HKSB7CiAgICAgICAgICAgICAvLyAg4oazIElmIHRoZSBIVE1MTWVk
aWFFbGVtZW50LnJlYWR5U3RhdGUgYXR0cmlidXRlIGVxdWFscyBIQVZFX05PVEhJTkcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcApp
bmRleCBjZGUxODNmODkyNzQ3ZDMyYWRhODJlN2Q1ZTJiOWI0M2VjNTNiZGZlLi4zZDNhNjE5MjE0
NzZhZDI2NmQyNWZiOTI3YjQ0YWM5ODI4NDBlZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuY3BwCkBAIC04MSw2ICs4MSw3IEBA
IFNvdXJjZUJ1ZmZlcjo6U291cmNlQnVmZmVyKFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlPiYmIHNv
dXJjZUJ1ZmZlclByaXZhdGUsIE1lZGlhCiAgICAgLCBtX2FwcGVuZFdpbmRvd0VuZChNZWRpYVRp
bWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCkpCiAgICAgLCBtX2FwcGVuZFN0YXRlKFdhaXRpbmdG
b3JTZWdtZW50KQogICAgICwgbV90aW1lT2ZCdWZmZXJpbmdNb25pdG9yKE1vbm90b25pY1RpbWU6
Om5vdygpKQorICAgICwgbV9idWZmZXJlZChUaW1lUmFuZ2VzOjpjcmVhdGUoKSkKICAgICAsIG1f
cGVuZGluZ1JlbW92ZVN0YXJ0KE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSkKICAgICAsIG1fcGVu
ZGluZ1JlbW92ZUVuZChNZWRpYVRpbWU6OmludmFsaWRUaW1lKCkpCiAgICAgLCBtX3JlbW92ZVRp
bWVyKCp0aGlzLCAmU291cmNlQnVmZmVyOjpyZW1vdmVUaW1lckZpcmVkKQpAQCAtOTQsNyArOTUs
NiBAQCBTb3VyY2VCdWZmZXI6OlNvdXJjZUJ1ZmZlcihSZWY8U291cmNlQnVmZmVyUHJpdmF0ZT4m
JiBzb3VyY2VCdWZmZXJQcml2YXRlLCBNZWRpYQogCiAgICAgbV9wcml2YXRlLT5zZXRDbGllbnQo
dGhpcyk7CiAgICAgbV9wcml2YXRlLT5zZXRJc0F0dGFjaGVkKHRydWUpOwotICAgIG1fcHJpdmF0
ZS0+c2V0Q3VycmVudFRpbWVGdWRnZUZhY3RvcihtX3NvdXJjZS0+Y3VycmVudFRpbWVGdWRnZUZh
Y3RvcigpKTsKIH0KIAogU291cmNlQnVmZmVyOjp+U291cmNlQnVmZmVyKCkKQEAgLTEwMiw4ICsx
MDIsOCBAQCBTb3VyY2VCdWZmZXI6On5Tb3VyY2VCdWZmZXIoKQogICAgIEFTU0VSVChpc1JlbW92
ZWQoKSk7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsKIAotICAgIG1fcHJpdmF0ZS0+
c2V0Q2xpZW50KG51bGxwdHIpOwogICAgIG1fcHJpdmF0ZS0+c2V0SXNBdHRhY2hlZChmYWxzZSk7
CisgICAgbV9wcml2YXRlLT5zZXRDbGllbnQobnVsbHB0cik7CiB9CiAKIEV4Y2VwdGlvbk9yPFJl
ZjxUaW1lUmFuZ2VzPj4gU291cmNlQnVmZmVyOjpidWZmZXJlZCgpIGNvbnN0CkBAIC0xMTYsNyAr
MTE2LDcgQEAgRXhjZXB0aW9uT3I8UmVmPFRpbWVSYW5nZXM+PiBTb3VyY2VCdWZmZXI6OmJ1ZmZl
cmVkKCkgY29uc3QKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
IH07CiAKICAgICAvLyAyLiBSZXR1cm4gYSBuZXcgc3RhdGljIG5vcm1hbGl6ZWQgVGltZVJhbmdl
cyBvYmplY3QgZm9yIHRoZSBtZWRpYSBzZWdtZW50cyBidWZmZXJlZC4KLSAgICByZXR1cm4gbV9w
cml2YXRlLT5idWZmZXJlZCgpLT5jb3B5KCk7CisgICAgcmV0dXJuIG1fYnVmZmVyZWQtPmNvcHko
KTsKIH0KIAogZG91YmxlIFNvdXJjZUJ1ZmZlcjo6dGltZXN0YW1wT2Zmc2V0KCkgY29uc3QKQEAg
LTU1MiwxMCArNTUyLDYgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVB
cHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQgcmVzdWx0KQogICAgIGlmIChpc1JlbW92ZWQoKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gUmVzb2x2ZSB0aGUgY2hhbmdlcyBpdCBUcmFja0J1
ZmZlcnMnIGJ1ZmZlcmVkIHJhbmdlcwotICAgIC8vIGludG8gdGhlIFNvdXJjZUJ1ZmZlcidzIGJ1
ZmZlcmVkIHJhbmdlcwotICAgIG1fcHJpdmF0ZS0+dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZm
ZXJzKG1fc291cmNlLT5pc0VuZGVkKCkpOwotCiAgICAgLy8gU2VjdGlvbiAzLjUuNSBCdWZmZXIg
QXBwZW5kIEFsZ29yaXRobSwgY3RkLgogICAgIC8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvaHRt
bC1tZWRpYS9yYXctZmlsZS9kZWZhdWx0L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCNz
b3VyY2VidWZmZXItYnVmZmVyLWFwcGVuZAogCkBAIC02MzQsNyArNjMwLDcgQEAgdm9pZCBTb3Vy
Y2VCdWZmZXI6OnJlbW92ZVRpbWVyRmlyZWQoKQogICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1l
cygpLnVwZGF0ZWVuZEV2ZW50KTsKIH0KIAotc2l6ZV90IFNvdXJjZUJ1ZmZlcjo6bWF4aW11bUJ1
ZmZlclNpemUoKSBjb25zdAordWludDY0X3QgU291cmNlQnVmZmVyOjptYXhpbXVtQnVmZmVyU2l6
ZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzUmVtb3ZlZCgpKQogICAgICAgICByZXR1cm4gMDsKQEAg
LTY3OCwxMCArNjc0LDEyIEBAIHZvaWQgU291cmNlQnVmZmVyOjpzZXRBY3RpdmUoYm9vbCBhY3Rp
dmUpCiAgICAgICAgIG1fc291cmNlLT5zb3VyY2VCdWZmZXJEaWRDaGFuZ2VBY3RpdmVTdGF0ZSgq
dGhpcywgYWN0aXZlKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZh
dGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXRpYWxpemF0aW9uU2Vn
bWVudCYgc2VnbWVudCkKK3ZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlk
UmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdt
ZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgaWYgKGlzUmVtb3ZlZCgpKQorICAgIGlmIChpc1JlbW92ZWQoKSkgeworICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgQUxXQVlTX0xP
RyhMT0dJREVOVElGSUVSKTsKIApAQCAtNzA0LDYgKzcwMiw3IEBAIHZvaWQgU291cmNlQnVmZmVy
Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25z
dCBJbml0CiAgICAgLy8gd2l0aCB0aGUgZGVjb2RlIGVycm9yIHBhcmFtZXRlciBzZXQgdG8gdHJ1
ZSBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCiAgICAgaWYgKHNlZ21lbnQuYXVkaW9UcmFja3MuaXNF
bXB0eSgpICYmIHNlZ21lbnQudmlkZW9UcmFja3MuaXNFbXB0eSgpICYmIHNlZ21lbnQudGV4dFRy
YWNrcy5pc0VtcHR5KCkpIHsKICAgICAgICAgYXBwZW5kRXJyb3IodHJ1ZSk7CisgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTcxMyw2ICs3
MTIsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJ
bml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgSW5pdAogICAgICAgICAvLyB3aXRoIHRoZSBkZWNv
ZGUgZXJyb3IgcGFyYW1ldGVyIHNldCB0byB0cnVlIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAg
ICAgICAgaWYgKCF2YWxpZGF0ZUluaXRpYWxpemF0aW9uU2VnbWVudChzZWdtZW50KSkgewogICAg
ICAgICAgICAgYXBwZW5kRXJyb3IodHJ1ZSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cigpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTgxNSwxMCArODE1LDEw
IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRp
YWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0CiAgICAgICAgICAgICAvLyByZWZlcmVuY2VkIGJ5
IHRoZSBhdWRpb1RyYWNrcyBhdHRyaWJ1dGUgb24gdGhlIEhUTUxNZWRpYUVsZW1lbnQuCiAgICAg
ICAgICAgICBtX3NvdXJjZS0+bWVkaWFFbGVtZW50KCktPmVuc3VyZUF1ZGlvVHJhY2tzKCkuYXBw
ZW5kKG5ld0F1ZGlvVHJhY2suY29weVJlZigpKTsKIAotICAgICAgICAgICAgLy8gNS4yLjggQ3Jl
YXRlIGEgbmV3IHRyYWNrIGJ1ZmZlciB0byBzdG9yZSBjb2RlZCBmcmFtZXMgZm9yIHRoaXMgdHJh
Y2suCi0gICAgICAgICAgICBtX3ByaXZhdGUtPmFkZFRyYWNrQnVmZmVyKG5ld0F1ZGlvVHJhY2st
PmlkKCksIGF1ZGlvVHJhY2tJbmZvLmRlc2NyaXB0aW9uKTsKLQogICAgICAgICAgICAgbV9hdWRp
b0NvZGVjcy5hcHBlbmQoYXVkaW9UcmFja0luZm8uZGVzY3JpcHRpb24tPmNvZGVjKCkpOworCisg
ICAgICAgICAgICAvLyA1LjIuOCBDcmVhdGUgYSBuZXcgdHJhY2sgYnVmZmVyIHRvIHN0b3JlIGNv
ZGVkIGZyYW1lcyBmb3IgdGhpcyB0cmFjay4KKyAgICAgICAgICAgIG1fcHJpdmF0ZS0+YWRkVHJh
Y2tCdWZmZXIobmV3QXVkaW9UcmFjay0+aWQoKSwgV1RGTW92ZShhdWRpb1RyYWNrSW5mby5kZXNj
cmlwdGlvbikpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gNS4zIEZvciBlYWNoIHZpZGVvIHRy
YWNrIGluIHRoZSBpbml0aWFsaXphdGlvbiBzZWdtZW50LCBydW4gZm9sbG93aW5nIHN0ZXBzOgpA
QCAtODUwLDEwICs4NTAsMTAgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZh
dGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXQKICAgICAgICAgICAg
IC8vIHJlZmVyZW5jZWQgYnkgdGhlIHZpZGVvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1l
ZGlhRWxlbWVudC4KICAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+ZW5zdXJl
VmlkZW9UcmFja3MoKS5hcHBlbmQobmV3VmlkZW9UcmFjay5jb3B5UmVmKCkpOwogCi0gICAgICAg
ICAgICAvLyA1LjMuOCBDcmVhdGUgYSBuZXcgdHJhY2sgYnVmZmVyIHRvIHN0b3JlIGNvZGVkIGZy
YW1lcyBmb3IgdGhpcyB0cmFjay4KLSAgICAgICAgICAgIG1fcHJpdmF0ZS0+YWRkVHJhY2tCdWZm
ZXIobmV3VmlkZW9UcmFjay0+aWQoKSwgdmlkZW9UcmFja0luZm8uZGVzY3JpcHRpb24pOwotCiAg
ICAgICAgICAgICBtX3ZpZGVvQ29kZWNzLmFwcGVuZCh2aWRlb1RyYWNrSW5mby5kZXNjcmlwdGlv
bi0+Y29kZWMoKSk7CisKKyAgICAgICAgICAgIC8vIDUuMy44IENyZWF0ZSBhIG5ldyB0cmFjayBi
dWZmZXIgdG8gc3RvcmUgY29kZWQgZnJhbWVzIGZvciB0aGlzIHRyYWNrLgorICAgICAgICAgICAg
bV9wcml2YXRlLT5hZGRUcmFja0J1ZmZlcihuZXdWaWRlb1RyYWNrLT5pZCgpLCBXVEZNb3ZlKHZp
ZGVvVHJhY2tJbmZvLmRlc2NyaXB0aW9uKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyA1LjQg
Rm9yIGVhY2ggdGV4dCB0cmFjayBpbiB0aGUgaW5pdGlhbGl6YXRpb24gc2VnbWVudCwgcnVuIGZv
bGxvd2luZyBzdGVwczoKQEAgLTg4MiwxMCArODgyLDEwIEBAIHZvaWQgU291cmNlQnVmZmVyOjpz
b3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJ
bml0CiAgICAgICAgICAgICAvLyByZWZlcmVuY2VkIGJ5IHRoZSB0ZXh0VHJhY2tzIGF0dHJpYnV0
ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KICAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVs
ZW1lbnQoKS0+ZW5zdXJlVGV4dFRyYWNrcygpLmFwcGVuZChuZXdUZXh0VHJhY2suY29weVJlZigp
KTsKIAotICAgICAgICAgICAgLy8gNS40LjcgQ3JlYXRlIGEgbmV3IHRyYWNrIGJ1ZmZlciB0byBz
dG9yZSBjb2RlZCBmcmFtZXMgZm9yIHRoaXMgdHJhY2suCi0gICAgICAgICAgICBtX3ByaXZhdGUt
PmFkZFRyYWNrQnVmZmVyKG5ld1RleHRUcmFjay0+aWQoKSwgdGV4dFRyYWNrSW5mby5kZXNjcmlw
dGlvbik7Ci0KICAgICAgICAgICAgIG1fdGV4dENvZGVjcy5hcHBlbmQodGV4dFRyYWNrSW5mby5k
ZXNjcmlwdGlvbi0+Y29kZWMoKSk7CisKKyAgICAgICAgICAgIC8vIDUuNC43IENyZWF0ZSBhIG5l
dyB0cmFjayBidWZmZXIgdG8gc3RvcmUgY29kZWQgZnJhbWVzIGZvciB0aGlzIHRyYWNrLgorICAg
ICAgICAgICAgbV9wcml2YXRlLT5hZGRUcmFja0J1ZmZlcihuZXdUZXh0VHJhY2stPmlkKCksIFdU
Rk1vdmUodGV4dFRyYWNrSW5mby5kZXNjcmlwdGlvbikpOwogICAgICAgICB9CiAKICAgICAgICAg
Ly8gNS41IElmIGFjdGl2ZSB0cmFjayBmbGFnIGVxdWFscyB0cnVlLCB0aGVuIHJ1biB0aGUgZm9s
bG93aW5nIHN0ZXBzOgpAQCAtOTAyLDYgKzkwMiw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3Vy
Y2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0
CiAgICAgLy8gKE5vdGU6IElzc3VlICMxNTUgYWRkcyB0aGlzIHN0ZXAgYWZ0ZXIgc3RlcCA1OikK
ICAgICAvLyA2LiBTZXQgIHBlbmRpbmcgaW5pdGlhbGl6YXRpb24gc2VnbWVudCBmb3IgY2hhbmdl
VHlwZSBmbGFnICB0byBmYWxzZS4KICAgICBtX3BlbmRpbmdJbml0aWFsaXphdGlvblNlZ21lbnRG
b3JDaGFuZ2VUeXBlID0gZmFsc2U7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIAogICAgIC8v
IDYuIElmIHRoZSBIVE1MTWVkaWFFbGVtZW50LnJlYWR5U3RhdGUgYXR0cmlidXRlIGlzIEhBVkVf
Tk9USElORywgdGhlbiBydW4gdGhlIGZvbGxvd2luZyBzdGVwczoKICAgICBpZiAobV9wcml2YXRl
LT5yZWFkeVN0YXRlKCkgPT0gTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nKSB7
CkBAIC0xMDExLDE2ICsxMDEyLDYgQEAgYm9vbCBTb3VyY2VCdWZmZXI6Omhhc1ZpZGVvKCkgY29u
c3QKICAgICByZXR1cm4gbV92aWRlb1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tzLT5sZW5ndGgoKTsK
IH0KIAotYm9vbCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRpbygpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIGhhc0F1ZGlvKCk7Ci19Ci0KLWJvb2wgU291cmNlQnVmZmVyOjpz
b3VyY2VCdWZmZXJQcml2YXRlSGFzVmlkZW8oKSBjb25zdAotewotICAgIHJldHVybiBoYXNWaWRl
bygpOwotfQotCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChW
aWRlb1RyYWNrJiB0cmFjaykKIHsKICAgICAvLyAyLjQuNSBDaGFuZ2VzIHRvIHNlbGVjdGVkL2Vu
YWJsZWQgdHJhY2sgc3RhdGUKQEAgLTEyMDQsOSArMTE5NSw5IEBAIGJvb2wgU291cmNlQnVmZmVy
OjpjYW5QbGF5VGhyb3VnaFJhbmdlKFBsYXRmb3JtVGltZVJhbmdlcyYgcmFuZ2VzKQogICAgIHJl
dHVybiB1bmJ1ZmZlcmVkVGltZS50b0RvdWJsZSgpIC8gbV9hdmVyYWdlQnVmZmVyUmF0ZSA8IHRp
bWVSZW1haW5pbmcudG9Eb3VibGUoKTsKIH0KIAotc2l6ZV90IFNvdXJjZUJ1ZmZlcjo6ZXh0cmFN
ZW1vcnlDb3N0KCkgY29uc3QKK3VpbnQ2NF90IFNvdXJjZUJ1ZmZlcjo6ZXh0cmFNZW1vcnlDb3N0
KCkgY29uc3QKIHsKLSAgICBzaXplX3QgZXh0cmFNZW1vcnlDb3N0ID0gbV9wZW5kaW5nQXBwZW5k
RGF0YS5jYXBhY2l0eSgpOworICAgIHVpbnQ2NF90IGV4dHJhTWVtb3J5Q29zdCA9IG1fcGVuZGlu
Z0FwcGVuZERhdGEuY2FwYWNpdHkoKTsKICAgICBleHRyYU1lbW9yeUNvc3QgKz0gbV9wcml2YXRl
LT50b3RhbFRyYWNrQnVmZmVyU2l6ZUluQnl0ZXMoKTsKIAogICAgIHJldHVybiBleHRyYU1lbW9y
eUNvc3Q7CkBAIC0xMjE0LDExICsxMjA1LDExIEBAIHNpemVfdCBTb3VyY2VCdWZmZXI6OmV4dHJh
TWVtb3J5Q29zdCgpIGNvbnN0CiAKIHZvaWQgU291cmNlQnVmZmVyOjpyZXBvcnRFeHRyYU1lbW9y
eUFsbG9jYXRlZCgpCiB7Ci0gICAgc2l6ZV90IGV4dHJhTWVtb3J5Q29zdCA9IHRoaXMtPmV4dHJh
TWVtb3J5Q29zdCgpOworICAgIHVpbnQ2NF90IGV4dHJhTWVtb3J5Q29zdCA9IHRoaXMtPmV4dHJh
TWVtb3J5Q29zdCgpOwogICAgIGlmIChleHRyYU1lbW9yeUNvc3QgPD0gbV9yZXBvcnRlZEV4dHJh
TWVtb3J5Q29zdCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2l6ZV90IGV4dHJhTWVtb3J5Q29z
dERlbHRhID0gZXh0cmFNZW1vcnlDb3N0IC0gbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdDsKKyAg
ICB1aW50NjRfdCBleHRyYU1lbW9yeUNvc3REZWx0YSA9IGV4dHJhTWVtb3J5Q29zdCAtIG1fcmVw
b3J0ZWRFeHRyYU1lbW9yeUNvc3Q7CiAgICAgbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdCA9IGV4
dHJhTWVtb3J5Q29zdDsKIAogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpLT52bSgpKTsKQEAgLTEyNDIsNyArMTIzMyw3IEBAIE1lZGlhVGltZSBTb3Vy
Y2VCdWZmZXI6Om1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWVGb3JUcmFja0lEKGNvbnN0
IEF0b21TdHJpCiAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bWluaW11bVVwY29taW5nUHJlc2VudGF0
aW9uVGltZUZvclRyYWNrSUQodHJhY2tJRCk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyOjpzZXRN
YXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCwgc2l6
ZV90IG1heFF1ZXVlRGVwdGgpCit2b2lkIFNvdXJjZUJ1ZmZlcjo6c2V0TWF4aW11bVF1ZXVlRGVw
dGhGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQsIHVpbnQ2NF90IG1heFF1ZXVl
RGVwdGgpCiB7CiAgICAgbV9wcml2YXRlLT5zZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQo
dHJhY2tJRCwgbWF4UXVldWVEZXB0aCk7CiB9CkBAIC0xMzAyLDE0ICsxMjkzLDI0IEBAIHZvaWQg
U291cmNlQnVmZmVyOjpzZXRTaG91bGRHZW5lcmF0ZVRpbWVzdGFtcHMoYm9vbCBmbGFnKQogICAg
IG1fcHJpdmF0ZS0+c2V0U2hvdWxkR2VuZXJhdGVUaW1lc3RhbXBzKGZsYWcpOwogfQogCit2b2lk
IFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGJv
b2wgZmxhZykKK3sKKyAgICBtX2J1ZmZlcmVkRGlydHkgPSBmbGFnOworfQorCit2b2lkIFNvdXJj
ZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChjb25zdCBQ
bGF0Zm9ybVRpbWVSYW5nZXMmIHRpbWVSYW5nZXMpCit7CisgICAgbV9idWZmZXJlZC0+cmFuZ2Vz
KCkgPSB0aW1lUmFuZ2VzOworfQorCiBib29sIFNvdXJjZUJ1ZmZlcjo6aXNCdWZmZXJlZERpcnR5
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5pc0J1ZmZlcmVkRGlydHkoKTsKKyAg
ICByZXR1cm4gbV9idWZmZXJlZERpcnR5OwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6c2V0QnVm
ZmVyZWREaXJ0eShib29sIGZsYWcpCiB7Ci0gICAgbV9wcml2YXRlLT5zZXRCdWZmZXJlZERpcnR5
KGZsYWcpOworICAgIG1fYnVmZmVyZWREaXJ0eSA9IGZsYWc7CiB9CiAKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1Nv
dXJjZUJ1ZmZlci5oCmluZGV4IGQxNWMyOWJjZDg4NjJlOTJiNDZkOTNiMDEyNTA1MDE5MzQ5ZTJj
ZjguLjIyOTNiYzUwNzdiYjE3Njk4NDIyZGUwZTY2ZWRmNGE3OWIxZmFlNDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAtOTYs
NyArOTYsNyBAQCBwdWJsaWM6CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlKGNvbnN0IE1l
ZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNoYW5n
ZVR5cGUoY29uc3QgU3RyaW5nJik7CiAKLSAgICBjb25zdCBUaW1lUmFuZ2VzJiBidWZmZXJlZElu
dGVybmFsKCkgY29uc3QgeyBBU1NFUlQobV9wcml2YXRlLT5idWZmZXJlZCgpKTsgcmV0dXJuICpt
X3ByaXZhdGUtPmJ1ZmZlcmVkKCk7IH0KKyAgICBjb25zdCBUaW1lUmFuZ2VzJiBidWZmZXJlZElu
dGVybmFsKCkgY29uc3QgeyBBU1NFUlQobV9idWZmZXJlZCk7IHJldHVybiAqbV9idWZmZXJlZDsg
fQogCiAgICAgdm9pZCBhYm9ydElmVXBkYXRpbmcoKTsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVk
aWFTb3VyY2UoKTsKQEAgLTE0OCwxNSArMTQ4LDE1IEBAIHByaXZhdGU6CiAgICAgYm9vbCB2aXJ0
dWFsSGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QgZmluYWw7CiAKICAgICAvLyBTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50Ci0gICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUlu
aXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0aWFsaXphdGlvblNlZ21lbnQmKSBmaW5hbDsK
KyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdt
ZW50KEluaXRpYWxpemF0aW9uU2VnbWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
IGZpbmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZVN0cmVhbUVuZGVkV2l0aERlY29k
ZUVycm9yKCkgZmluYWw7CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kRXJyb3Io
Ym9vbCBkZWNvZGVFcnJvcikgZmluYWw7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBw
ZW5kQ29tcGxldGUoQXBwZW5kUmVzdWx0KSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclBy
aXZhdGVEdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbikgZmluYWw7CiAg
ICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoZG91YmxlIHNhbXBsZUR1
cmF0aW9uKSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWREcm9wU2FtcGxl
KCkgZmluYWw7Ci0gICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlU3RyZWFtRW5kZWRXaXRoRGVj
b2RlRXJyb3IoKSBmaW5hbDsKLSAgICBib29sIHNvdXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRpbygp
IGNvbnN0IGZpbmFsOwotICAgIGJvb2wgc291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKCkgY29u
c3QgZmluYWw7Ci0gICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoQXBw
ZW5kUmVzdWx0KSBmaW5hbDsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERp
cnR5Q2hhbmdlZChib29sKSBmaW5hbDsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVCdWZm
ZXJlZFJhbmdlc0NoYW5nZWQoY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJikgZmluYWw7CiAgICAg
dm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVJlbmRlcmluZ0Vycm9yKGludCBlcnJv
ckNvZGUpIGZpbmFsOwogCiAgICAgLy8gQXVkaW9UcmFja0NsaWVudApAQCAtMTg1LDEzICsxODUs
MTMgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgdmFsaWRhdGVJbml0aWFsaXphdGlvblNlZ21lbnQo
Y29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50Jik7CiAKLSAgICBzaXplX3QgbWF4aW11bUJ1ZmZl
clNpemUoKSBjb25zdDsKKyAgICB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSgpIGNvbnN0Owog
CiAgICAgdm9pZCBtb25pdG9yQnVmZmVyaW5nUmF0ZSgpOwogCiAgICAgdm9pZCByZW1vdmVUaW1l
ckZpcmVkKCk7CiAKLSAgICBzaXplX3QgZXh0cmFNZW1vcnlDb3N0KCkgY29uc3Q7CisgICAgdWlu
dDY0X3QgZXh0cmFNZW1vcnlDb3N0KCkgY29uc3Q7CiAgICAgdm9pZCByZXBvcnRFeHRyYU1lbW9y
eUFsbG9jYXRlZCgpOwogCiAgICAgdm9pZCBhcHBlbmRFcnJvcihib29sKTsKQEAgLTIwNCw3ICsy
MDQsNyBAQCBwcml2YXRlOgogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGJ1ZmZl
cmVkU2FtcGxlc0ZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIFZlY3RvcjxTdHJpbmc+IGVucXVldWVkU2FtcGxlc0ZvclRyYWNrSUQoY29uc3QgQXRvbVN0
cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIE1lZGlhVGltZSBtaW5pbXVtVXBjb21pbmdQcmVz
ZW50YXRpb25UaW1lRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJik7Ci0gICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmlu
ZyYsIHNpemVfdCk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNYXhpbXVtUXVldWVEZXB0
aEZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYsIHVpbnQ2NF90KTsKIAogICAgIFJlZjxTb3Vy
Y2VCdWZmZXJQcml2YXRlPiBtX3ByaXZhdGU7CiAgICAgTWVkaWFTb3VyY2UqIG1fc291cmNlOwpA
QCAtMjMxLDggKzIzMSwxMCBAQCBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV90aW1lT2ZC
dWZmZXJpbmdNb25pdG9yOwogICAgIGRvdWJsZSBtX2J1ZmZlcmVkU2luY2VMYXN0TW9uaXRvciB7
IDAgfTsKICAgICBkb3VibGUgbV9hdmVyYWdlQnVmZmVyUmF0ZSB7IDAgfTsKKyAgICBib29sIG1f
YnVmZmVyZWREaXJ0eSB7IHRydWUgfTsKKyAgICBSZWZQdHI8VGltZVJhbmdlcz4gbV9idWZmZXJl
ZDsKIAotICAgIHNpemVfdCBtX3JlcG9ydGVkRXh0cmFNZW1vcnlDb3N0IHsgMCB9OworICAgIHVp
bnQ2NF90IG1fcmVwb3J0ZWRFeHRyYU1lbW9yeUNvc3QgeyAwIH07CiAKICAgICBNZWRpYVRpbWUg
bV9wZW5kaW5nUmVtb3ZlU3RhcnQ7CiAgICAgTWVkaWFUaW1lIG1fcGVuZGluZ1JlbW92ZUVuZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhU291cmNl
UHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQ
cml2YXRlLmgKaW5kZXggNjU3MGJmNmVlOTY4MjdlMDA5NDZmOWYxOTYwODhhZGMyYzRiZGI2My4u
MjkzMjg4NjNiMTRmMjZkY2I5Y2MxMWMwMjM2NjBkNTIwM2I4OTBmYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmgKQEAg
LTU1LDEwICs1NSwxMSBAQCBwdWJsaWM6CiAgICAgICAgIFJlYWNoZWRJZExpbWl0CiAgICAgfTsK
ICAgICB2aXJ0dWFsIEFkZFN0YXR1cyBhZGRTb3VyY2VCdWZmZXIoY29uc3QgQ29udGVudFR5cGUm
LCBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZT4mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGR1
cmF0aW9uQ2hhbmdlZCgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHVyYXRpb25DaGFuZ2VkKGNv
bnN0IE1lZGlhVGltZSYpID0gMDsKICAgICBlbnVtIEVuZE9mU3RyZWFtU3RhdHVzIHsgRW9zTm9F
cnJvciwgRW9zTmV0d29ya0Vycm9yLCBFb3NEZWNvZGVFcnJvciB9OwogICAgIHZpcnR1YWwgdm9p
ZCBtYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgdW5tYXJrRW5kT2ZTdHJlYW0oKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRW5kZWQoKSBj
b25zdCA9IDA7CiAKICAgICB2aXJ0dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3Rh
dGUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGUpID0gMDsKQEAgLTY2LDEwICs2NywxMyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHdhaXRGb3JTZWVrQ29tcGxldGVkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZWVrQ29tcGxldGVkKCkgPSAwOwogCisgICAgdm9pZCBzZXRUaW1lRnVkZ2VGYWN0b3IoY29uc3Qg
TWVkaWFUaW1lJiBmdWRnZUZhY3RvcikgeyBtX3RpbWVGdWRnZUZhY3RvciA9IGZ1ZGdlRmFjdG9y
OyB9CisgICAgTWVkaWFUaW1lIHRpbWVGdWRnZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdGlt
ZUZ1ZGdlRmFjdG9yOyB9CiAgICAgdm9pZCBzZXRJc1NlZWtpbmcoYm9vbCBmbGFnKSB7IG1faXNT
ZWVraW5nID0gZmxhZzsgfQogICAgIGJvb2wgaXNTZWVraW5nKCkgY29uc3QgeyByZXR1cm4gbV9p
c1NlZWtpbmc7IH0KIAogcHJpdmF0ZToKKyAgICBNZWRpYVRpbWUgbV90aW1lRnVkZ2VGYWN0b3I7
CiAgICAgYm9vbCBtX2lzU2Vla2luZyB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCmlu
ZGV4IDBmM2ZhNjZkOTkxZWIzOWEzMDYxYWUyZjhlYmZlZWIyZDUzMDQ1YzkuLjdiZTAwMjFkOWJi
NmRmMTA3ZDcxYTRmMTVhNzE1NTZkZTE5ZWU3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC02NSw2
ICs2NSw4IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGUoKQogewog
fQogCitTb3VyY2VCdWZmZXJQcml2YXRlOjp+U291cmNlQnVmZmVyUHJpdmF0ZSgpID0gZGVmYXVs
dDsKKwogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpyZXNldFRpbWVzdGFtcE9mZnNldEluVHJh
Y2tCdWZmZXJzKCkKIHsKICAgICBmb3IgKGF1dG8mIHRyYWNrQnVmZmVyIDogbV90cmFja0J1ZmZl
ck1hcC52YWx1ZXMoKSkgewpAQCAtNzMsNiArNzUsMTIgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlOjpyZXNldFRpbWVzdGFtcE9mZnNldEluVHJhY2tCdWZmZXJzKCkKICAgICB9CiB9CiAKK3Zv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0QnVmZmVyZWREaXJ0eShib29sIGZsYWcpCit7Cisg
ICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUJ1
ZmZlcmVkRGlydHlDaGFuZ2VkKGZsYWcpOworfQorCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6
OnJlc2V0VHJhY2tCdWZmZXJzKCkKIHsKICAgICBmb3IgKGF1dG8mIHRyYWNrQnVmZmVyUGFpciA6
IG1fdHJhY2tCdWZmZXJNYXAudmFsdWVzKCkpIHsKQEAgLTk2LDYgKzEwNCwxMyBAQCBNZWRpYVRp
bWUgU291cmNlQnVmZmVyUHJpdmF0ZTo6aGlnaGVzdFByZXNlbnRhdGlvblRpbWVzdGFtcCgpIGNv
bnN0CiAgICAgcmV0dXJuIGhpZ2hlc3RUaW1lOwogfQogCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGU6OnNldEJ1ZmZlcmVkUmFuZ2VzKGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYgdGltZVJhbmdl
cykKK3sKKyAgICBtX2J1ZmZlcmVkLT5yYW5nZXMoKSA9IHRpbWVSYW5nZXM7CisgICAgaWYgKG1f
Y2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFu
Z2VzQ2hhbmdlZChtX2J1ZmZlcmVkLT5yYW5nZXMoKSk7Cit9CisKIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZTo6dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRl
ZCkKIHsKICAgICAvLyAzLjEgQXR0cmlidXRlcywgYnVmZmVyZWQKQEAgLTExMiw3ICsxMjcsNyBA
QCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVmZmVy
cyhib29sIHNvdXJjZUlzRW5kZWQpCiAgICAgLy8gTk9URTogU2hvcnQgY2lyY3VpdCB0aGUgZm9s
bG93aW5nIGlmIG5vbmUgb2YgdGhlIFRyYWNrQnVmZmVycyBoYXZlIGJ1ZmZlcmVkIHJhbmdlcyB0
byBhdm9pZCBnZW5lcmF0aW5nCiAgICAgLy8gYSBzaW5nbGUgcmFuZ2Ugb2YgezAsIDB9LgogICAg
IGlmIChoaWdoZXN0RW5kVGltZS5pc05lZ2F0aXZlSW5maW5pdGUoKSkgewotICAgICAgICBtX2J1
ZmZlcmVkLT5yYW5nZXMoKSA9IFBsYXRmb3JtVGltZVJhbmdlcygpOworICAgICAgICBzZXRCdWZm
ZXJlZFJhbmdlcyhQbGF0Zm9ybVRpbWVSYW5nZXMoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTEzNywxMCArMTUyLDIwIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6dXBkYXRl
QnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCkKIAogICAgIC8vIDUu
IElmIGludGVyc2VjdGlvbiByYW5nZXMgZG9lcyBub3QgY29udGFpbiB0aGUgZXhhY3Qgc2FtZSBy
YW5nZSBpbmZvcm1hdGlvbiBhcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSwK
ICAgICAvLyAgICB0aGVuIHVwZGF0ZSB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0
ZSB0byBpbnRlcnNlY3Rpb24gcmFuZ2VzLgotICAgIG1fYnVmZmVyZWQtPnJhbmdlcygpID0gaW50
ZXJzZWN0aW9uUmFuZ2VzOworICAgIHNldEJ1ZmZlcmVkUmFuZ2VzKGludGVyc2VjdGlvblJhbmdl
cyk7CiAgICAgc2V0QnVmZmVyZWREaXJ0eSh0cnVlKTsKIH0KIAordm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlOjphcHBlbmRDb21wbGV0ZWQoYm9vbCBwYXJzaW5nU3VjY2VlZGVkLCBib29sIGlzRW5k
ZWQpCit7CisgICAgLy8gUmVzb2x2ZSB0aGUgY2hhbmdlcyBpbiBUcmFja0J1ZmZlcnMnIGJ1ZmZl
cmVkIHJhbmdlcworICAgIC8vIGludG8gdGhlIFNvdXJjZUJ1ZmZlcidzIGJ1ZmZlcmVkIHJhbmdl
cworICAgIHVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVmZmVycyhpc0VuZGVkKTsKKworICAgIGlm
IChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRD
b21wbGV0ZShwYXJzaW5nU3VjY2VlZGVkID8gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBw
ZW5kUmVzdWx0OjpBcHBlbmRTdWNjZWVkZWQgOiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpB
cHBlbmRSZXN1bHQ6OlBhcnNpbmdGYWlsZWQpOworfQorCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGU6OnJlZW5xdWVTYW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpCiB7CiAgICAgaWYg
KCFtX2lzQXR0YWNoZWQpCkBAIC0xNzgsOSArMjAzLDkgQEAgVmVjdG9yPFN0cmluZz4gU291cmNl
QnVmZmVyUHJpdmF0ZTo6YnVmZmVyZWRTYW1wbGVzRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5n
JgogewogICAgIGF1dG8gaXQgPSBtX3RyYWNrQnVmZmVyTWFwLmZpbmQodHJhY2tJRCk7CiAgICAg
aWYgKGl0ID09IG1fdHJhY2tCdWZmZXJNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBWZWN0b3I8
U3RyaW5nPigpOworICAgICAgICByZXR1cm4geyB9OwogCi0gICAgVHJhY2tCdWZmZXImIHRyYWNr
QnVmZmVyID0gaXQtPnZhbHVlOworICAgIGF1dG8mIHRyYWNrQnVmZmVyID0gaXQtPnZhbHVlOwog
ICAgIFZlY3RvcjxTdHJpbmc+IHNhbXBsZURlc2NyaXB0aW9uczsKICAgICBmb3IgKGF1dG8mIHBh
aXIgOiB0cmFja0J1ZmZlci5zYW1wbGVzLmRlY29kZU9yZGVyKCkpCiAgICAgICAgIHNhbXBsZURl
c2NyaXB0aW9ucy5hcHBlbmQodG9TdHJpbmcoKnBhaXIuc2Vjb25kKSk7CkBAIC0zMTcsNyArMzQy
LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpwcm92aWRlTWVkaWFEYXRhKFRyYWNrQnVm
ZmVyJiB0cmFja0J1ZmZlciwgY29uc3QgQXRvbVMKICAgICB1cGRhdGVNaW5pbXVtVXBjb21pbmdQ
cmVzZW50YXRpb25UaW1lKHRyYWNrQnVmZmVyLCB0cmFja0lEKTsKIAogI2lmICFSRUxFQVNFX0xP
R19ESVNBQkxFRAotICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiZW5xdWV1ZWQgIiwgZW5x
dWV1ZWRTYW1wbGVzLCAiIHNhbXBsZXMsICIsIHN0YXRpY19jYXN0PHNpemVfdD4odHJhY2tCdWZm
ZXIuZGVjb2RlUXVldWUuc2l6ZSgpKSwgIiByZW1haW5pbmciKTsKKyAgICBERUJVR19MT0coTE9H
SURFTlRJRklFUiwgImVucXVldWVkICIsIGVucXVldWVkU2FtcGxlcywgIiBzYW1wbGVzLCAiLCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4odHJhY2tCdWZmZXIuZGVjb2RlUXVldWUuc2l6ZSgpKSwgIiBy
ZW1haW5pbmciKTsKICNlbmRpZgogCiAgICAgYWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCh0cmFj
a0lEKTsKQEAgLTMzOSw3ICszNjQsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnJlZW5x
dWV1ZU1lZGlhRm9yVGltZShUcmFja0J1ZmZlciYgdHJhY2tCdWZmZXIsIGNvbnN0CiAgICAgICAg
IGN1cnJlbnRTYW1wbGVQVFNJdGVyYXRvciA9IHRyYWNrQnVmZmVyLnNhbXBsZXMucHJlc2VudGF0
aW9uT3JkZXIoKS5maW5kU2FtcGxlU3RhcnRpbmdPbk9yQWZ0ZXJQcmVzZW50YXRpb25UaW1lKHRp
bWUpOwogCiAgICAgaWYgKGN1cnJlbnRTYW1wbGVQVFNJdGVyYXRvciA9PSB0cmFja0J1ZmZlci5z
YW1wbGVzLnByZXNlbnRhdGlvbk9yZGVyKCkuZW5kKCkKLSAgICAgICAgfHwgKGN1cnJlbnRTYW1w
bGVQVFNJdGVyYXRvci0+Zmlyc3QgLSB0aW1lKSA+IG1fY3VycmVudFRpbWVGdWRnZUZhY3RvcikK
KyAgICAgICAgfHwgKGN1cnJlbnRTYW1wbGVQVFNJdGVyYXRvci0+Zmlyc3QgLSB0aW1lKSA+IHRp
bWVGdWRnZUZhY3RvcigpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBTZWFjaCBiYWNrd2Fy
ZCBmb3IgdGhlIHByZXZpb3VzIHN5bmMgc2FtcGxlLgpAQCAtMzY3LDcgKzM5Miw3IEBAIHZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZTo6cmVlbnF1ZXVlTWVkaWFGb3JUaW1lKFRyYWNrQnVmZmVyJiB0
cmFja0J1ZmZlciwgY29uc3QKICAgICB0cmFja0J1ZmZlci5uZWVkc1JlZW5xdWV1ZWluZyA9IGZh
bHNlOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnJlZW5xdWV1ZU1lZGlhSWZOZWVk
ZWQoY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50VGltZSwgc2l6ZV90IHBlbmRpbmdBcHBlbmREYXRh
Q2FwYWNpdHksIHNpemVfdCBtYXhpbXVtQnVmZmVyU2l6ZSkKK3ZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZTo6cmVlbnF1ZXVlTWVkaWFJZk5lZWRlZChjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1l
LCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVm
ZmVyU2l6ZSkKIHsKICAgICBmb3IgKGF1dG8mIHRyYWNrQnVmZmVyUGFpciA6IG1fdHJhY2tCdWZm
ZXJNYXApIHsKICAgICAgICAgVHJhY2tCdWZmZXImIHRyYWNrQnVmZmVyID0gdHJhY2tCdWZmZXJQ
YWlyLnZhbHVlOwpAQCAtMzk4LDcgKzQyMyw3IEBAIHN0YXRpYyBQbGF0Zm9ybVRpbWVSYW5nZXMg
cmVtb3ZlU2FtcGxlc0Zyb21UcmFja0J1ZmZlcihjb25zdCBEZWNvZGVPcmRlclNhbXBsZU1hCiAj
aWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgTWVkaWFUaW1lIGVhcmxpZXN0U2FtcGxlID0g
TWVkaWFUaW1lOjpwb3NpdGl2ZUluZmluaXRlVGltZSgpOwogICAgIE1lZGlhVGltZSBsYXRlc3RT
YW1wbGUgPSBNZWRpYVRpbWU6Onplcm9UaW1lKCk7Ci0gICAgc2l6ZV90IGJ5dGVzUmVtb3ZlZCA9
IDA7CisgICAgdWludDY0X3QgYnl0ZXNSZW1vdmVkID0gMDsKICAgICBhdXRvIGxvZ0lkZW50aWZp
ZXIgPSBXVEY6OkxvZ2dlcjo6TG9nU2l0ZUlkZW50aWZpZXIoc291cmNlQnVmZmVyUHJpdmF0ZS0+
bG9nQ2xhc3NOYW1lKCksIGxvZ1ByZWZpeCwgc291cmNlQnVmZmVyUHJpdmF0ZS0+bG9nSWRlbnRp
ZmllcigpKTsKICAgICBhdXRvJiBsb2dnZXIgPSBzb3VyY2VCdWZmZXJQcml2YXRlLT5sb2dnZXIo
KTsKICAgICBhdXRvIHdpbGxMb2cgPSBsb2dnZXIud2lsbExvZyhzb3VyY2VCdWZmZXJQcml2YXRl
LT5sb2dDaGFubmVsKCksIFdURkxvZ0xldmVsOjpEZWJ1Zyk7CkBAIC00MDgsNyArNDMzLDcgQEAg
c3RhdGljIFBsYXRmb3JtVGltZVJhbmdlcyByZW1vdmVTYW1wbGVzRnJvbVRyYWNrQnVmZmVyKGNv
bnN0IERlY29kZU9yZGVyU2FtcGxlTWEKICAgICBmb3IgKGNvbnN0IGF1dG8mIHNhbXBsZUl0IDog
c2FtcGxlcykgewogICAgICAgICBjb25zdCBEZWNvZGVPcmRlclNhbXBsZU1hcDo6S2V5VHlwZSYg
ZGVjb2RlS2V5ID0gc2FtcGxlSXQuZmlyc3Q7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0g
ICAgICAgIHNpemVfdCBzdGFydEJ1ZmZlclNpemUgPSB0cmFja0J1ZmZlci5zYW1wbGVzLnNpemVJ
bkJ5dGVzKCk7CisgICAgICAgIHVpbnQ2NF90IHN0YXJ0QnVmZmVyU2l6ZSA9IHRyYWNrQnVmZmVy
LnNhbXBsZXMuc2l6ZUluQnl0ZXMoKTsKICNlbmRpZgogCiAgICAgICAgIGNvbnN0IFJlZlB0cjxN
ZWRpYVNhbXBsZT4mIHNhbXBsZSA9IHNhbXBsZUl0LnNlY29uZDsKQEAgLTU3MCw3ICs1OTUsNyBA
QCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnJlbW92ZUNvZGVkRnJhbWVzKGNvbnN0IE1lZGlh
VGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVAogICAgIExPRyhNZWRpYSwgIlNvdXJjZUJ1ZmZlcjo6
cmVtb3ZlQ29kZWRGcmFtZXMoJXApIC0gYnVmZmVyZWQgPSAlcyIsIHRoaXMsIHRvU3RyaW5nKG1f
YnVmZmVyZWQtPnJhbmdlcygpKS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlOjpldmljdENvZGVkRnJhbWVzKHNpemVfdCBuZXdEYXRhU2l6ZSwgc2l6ZV90IHBl
bmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHNpemVfdCBtYXhpbXVtQnVmZmVyU2l6ZSwgY29uc3Qg
TWVkaWFUaW1lJiBjdXJyZW50VGltZSwgY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbiwgYm9vbCBp
c0VuZGVkKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpldmljdENvZGVkRnJhbWVzKHVpbnQ2
NF90IG5ld0RhdGFTaXplLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50
NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50VGltZSwgY29u
c3QgTWVkaWFUaW1lJiBkdXJhdGlvbiwgYm9vbCBpc0VuZGVkKQogewogICAgIC8vIDMuNS4xMyBD
b2RlZCBGcmFtZSBFdmljdGlvbiBBbGdvcml0aG0KICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9U
Ui9tZWRpYS1zb3VyY2UvI3NvdXJjZWJ1ZmZlci1jb2RlZC1mcmFtZS1ldmljdGlvbgpAQCAtNTk0
LDcgKzYxOSw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZXZpY3RDb2RlZEZyYW1lcyhz
aXplX3QgbmV3RGF0YVNpemUsIHNpemVfdCBwZW5kaW5nQXBwCiAKICNpZiAhUkVMRUFTRV9MT0df
RElTQUJMRUQgJiYgZmFsc2UKICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgImN1cnJlbnRU
aW1lID0gIiwgY3VycmVudFRpbWUsICIsIHJlcXVpcmUgIiwgZXh0cmFNZW1vcnlDb3N0KCkgKyBu
ZXdEYXRhU2l6ZSwgIiBieXRlcywgbWF4aW11bSBidWZmZXIgc2l6ZSBpcyAiLCBtYXhpbXVtQnVm
ZmVyU2l6ZSk7Ci0gICAgc2l6ZV90IGluaXRpYWxCdWZmZXJlZFNpemUgPSBleHRyYU1lbW9yeUNv
c3QoKTsKKyAgICB1aW50NjRfdCBpbml0aWFsQnVmZmVyZWRTaXplID0gZXh0cmFNZW1vcnlDb3N0
KCk7CiAjZW5kaWYKIAogICAgIE1lZGlhVGltZSByYW5nZVN0YXJ0ID0gTWVkaWFUaW1lOjp6ZXJv
VGltZSgpOwpAQCAtNjIzLDEwICs2NDgsMTAgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpl
dmljdENvZGVkRnJhbWVzKHNpemVfdCBuZXdEYXRhU2l6ZSwgc2l6ZV90IHBlbmRpbmdBcHAKICAg
ICAvLyB0aGUgY3VycmVudCBidWZmZXJlZCByYW5nZSksIGRlbGV0ZSAzMCBzZWNvbmRzIGF0IGEg
dGltZSBmcm9tIGR1cmF0aW9uIGJhY2sgdG8gdGhlIGN1cnJlbnQgdGltZSByYW5nZSBvciAzMCBz
ZWNvbmRzIGFmdGVyCiAgICAgLy8gY3VycmVuVGltZSB3aGljaGV2ZXIgd2UgaGl0IGZpcnN0Lgog
ICAgIGF1dG8gYnVmZmVyZWQgPSBtX2J1ZmZlcmVkLT5yYW5nZXMoKTsKLSAgICBzaXplX3QgY3Vy
cmVudFRpbWVSYW5nZSA9IGJ1ZmZlcmVkLmZpbmQoY3VycmVudFRpbWUpOworICAgIHVpbnQ2NF90
IGN1cnJlbnRUaW1lUmFuZ2UgPSBidWZmZXJlZC5maW5kKGN1cnJlbnRUaW1lKTsKICAgICBpZiAo
Y3VycmVudFRpbWVSYW5nZSA9PSBidWZmZXJlZC5sZW5ndGgoKSAtIDEpIHsKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQgJiYgZmFsc2UKLSAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIkZB
SUxFRCB0byBmcmVlIGVub3VnaCBhZnRlciBldmljdGluZyAiLCBpbml0aWFsQnVmZmVyZWRTaXpl
IC0gZXh0cmFNZW1vcnlDb3N0KCkpOworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwg
IkZBSUxFRCB0byBmcmVlIGVub3VnaCBhZnRlciBldmljdGluZyAiLCBpbml0aWFsQnVmZmVyZWRT
aXplIC0gZXh0cmFNZW1vcnlDb3N0KCkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9
CkBAIC02MzYsNyArNjYxLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpldmljdENvZGVk
RnJhbWVzKHNpemVfdCBuZXdEYXRhU2l6ZSwgc2l6ZV90IHBlbmRpbmdBcHAKICAgICByYW5nZUVu
ZCA9IGR1cmF0aW9uOwogICAgIGlmICghcmFuZ2VFbmQuaXNGaW5pdGUoKSkgewogICAgICAgICBy
YW5nZUVuZCA9IGJ1ZmZlcmVkLm1heGltdW1CdWZmZXJlZFRpbWUoKTsKLSNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQgJiYgZmFsc2UKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAg
REVCVUdfTE9HKExPR0lERU5USUZJRVIsICJNZWRpYVNvdXJjZSBkdXJhdGlvbiBpcyBub3QgYSBm
aW5pdGUgdmFsdWUsIHVzaW5nIG1heGltdW0gYnVmZmVyZWQgdGltZTogIiwgcmFuZ2VFbmQpOwog
I2VuZGlmCiAgICAgfQpAQCAtNjQ0LDkgKzY2OSw5IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZTo6ZXZpY3RDb2RlZEZyYW1lcyhzaXplX3QgbmV3RGF0YVNpemUsIHNpemVfdCBwZW5kaW5nQXBw
CiAgICAgcmFuZ2VTdGFydCA9IHJhbmdlRW5kIC0gdGhpcnR5U2Vjb25kczsKICAgICB3aGlsZSAo
cmFuZ2VTdGFydCA+IG1pbmltdW1SYW5nZVN0YXJ0KSB7CiAgICAgICAgIC8vIERvIG5vdCBldmlj
dCBkYXRhIGZyb20gdGhlIHRpbWUgcmFuZ2UgdGhhdCBjb250YWlucyBjdXJyZW50VGltZS4KLSAg
ICAgICAgc2l6ZV90IHN0YXJ0VGltZVJhbmdlID0gYnVmZmVyZWQuZmluZChyYW5nZVN0YXJ0KTsK
KyAgICAgICAgdWludDY0X3Qgc3RhcnRUaW1lUmFuZ2UgPSBidWZmZXJlZC5maW5kKHJhbmdlU3Rh
cnQpOwogICAgICAgICBpZiAoY3VycmVudFRpbWVSYW5nZSAhPSBub3RGb3VuZCAmJiBzdGFydFRp
bWVSYW5nZSA9PSBjdXJyZW50VGltZVJhbmdlKSB7Ci0gICAgICAgICAgICBzaXplX3QgZW5kVGlt
ZVJhbmdlID0gYnVmZmVyZWQuZmluZChyYW5nZUVuZCk7CisgICAgICAgICAgICB1aW50NjRfdCBl
bmRUaW1lUmFuZ2UgPSBidWZmZXJlZC5maW5kKHJhbmdlRW5kKTsKICAgICAgICAgICAgIGlmIChj
dXJyZW50VGltZVJhbmdlICE9IG5vdEZvdW5kICYmIGVuZFRpbWVSYW5nZSA9PSBjdXJyZW50VGlt
ZVJhbmdlKQogICAgICAgICAgICAgICAgIGJyZWFrOwogCkBAIC02NzQsMjIgKzY5OSwyNSBAQCB2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmV2aWN0Q29kZWRGcmFtZXMoc2l6ZV90IG5ld0RhdGFT
aXplLCBzaXplX3QgcGVuZGluZ0FwcAogI2VuZGlmCiB9CiAKLXNpemVfdCBTb3VyY2VCdWZmZXJQ
cml2YXRlOjp0b3RhbFRyYWNrQnVmZmVyU2l6ZUluQnl0ZXMoKSBjb25zdAordWludDY0X3QgU291
cmNlQnVmZmVyUHJpdmF0ZTo6dG90YWxUcmFja0J1ZmZlclNpemVJbkJ5dGVzKCkgY29uc3QKIHsK
LSAgICBzaXplX3QgdG90YWxTaXplSW5CeXRlcyA9IDA7CisgICAgdWludDY0X3QgdG90YWxTaXpl
SW5CeXRlcyA9IDA7CiAgICAgZm9yIChhdXRvJiB0cmFja0J1ZmZlciA6IG1fdHJhY2tCdWZmZXJN
YXAudmFsdWVzKCkpCiAgICAgICAgIHRvdGFsU2l6ZUluQnl0ZXMgKz0gdHJhY2tCdWZmZXIuc2Ft
cGxlcy5zaXplSW5CeXRlcygpOwogCiAgICAgcmV0dXJuIHRvdGFsU2l6ZUluQnl0ZXM7CiB9CiAK
LXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6YWRkVHJhY2tCdWZmZXIoY29uc3QgQXRvbVN0cmlu
ZyYgdHJhY2tJZCwgUmVmUHRyPE1lZGlhRGVzY3JpcHRpb24+IGRlc2NyaXB0aW9uKQordm9pZCBT
b3VyY2VCdWZmZXJQcml2YXRlOjphZGRUcmFja0J1ZmZlcihjb25zdCBBdG9tU3RyaW5nJiB0cmFj
a0lkLCBSZWZQdHI8TWVkaWFEZXNjcmlwdGlvbj4mJiBkZXNjcmlwdGlvbikKIHsKICAgICBBU1NF
UlQoIW1fdHJhY2tCdWZmZXJNYXAuY29udGFpbnModHJhY2tJZCkpOwogICAgIGF1dG8mIHRyYWNr
QnVmZmVyID0gbV90cmFja0J1ZmZlck1hcC5hZGQodHJhY2tJZCwgVHJhY2tCdWZmZXIoKSkuaXRl
cmF0b3ItPnZhbHVlOwogCiAgICAgLy8gNS4yLjkgQWRkIHRoZSB0cmFjayBkZXNjcmlwdGlvbiBm
b3IgdGhpcyB0cmFjayB0byB0aGUgdHJhY2sgYnVmZmVyLgogICAgIHRyYWNrQnVmZmVyLmRlc2Ny
aXB0aW9uID0gZGVzY3JpcHRpb247CisKKyAgICBtX2hhc0F1ZGlvID0gbV9oYXNBdWRpbyB8fCB0
cmFja0J1ZmZlci5kZXNjcmlwdGlvbi0+aXNBdWRpbygpOworICAgIG1faGFzVmlkZW8gPSBtX2hh
c1ZpZGVvIHx8IHRyYWNrQnVmZmVyLmRlc2NyaXB0aW9uLT5pc1ZpZGVvKCk7CiB9CiAKIHZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZTo6dXBkYXRlVHJhY2tJZHMoVmVjdG9yPHN0ZDo6cGFpcjxBdG9t
U3RyaW5nLCBBdG9tU3RyaW5nPj4mJiB0cmFja0lkUGFpcnMpCkBAIC03MDksMTcgKzczNywxOSBA
QCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnNldEFsbFRyYWNrQnVmZmVyc05lZWRSYW5kb21B
Y2Nlc3MoKQogICAgICAgICB0cmFja0J1ZmZlci5uZWVkUmFuZG9tQWNjZXNzRmxhZyA9IHRydWU7
CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9u
U2VnbWVudChjb25zdCBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNl
Z21lbnQmIHNlZ21lbnQpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVJbml0
aWFsaXphdGlvblNlZ21lbnQoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRp
b25TZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIGlmICghbV9jbGllbnQpCisgICAgaWYgKCFtX2NsaWVudCkgewor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAg
ICAgaWYgKG1fcmVjZWl2ZWRGaXJzdEluaXRpYWxpemF0aW9uU2VnbWVudCAmJiAhdmFsaWRhdGVJ
bml0aWFsaXphdGlvblNlZ21lbnQoc2VnbWVudCkpIHsKICAgICAgICAgbV9jbGllbnQtPnNvdXJj
ZUJ1ZmZlclByaXZhdGVBcHBlbmRFcnJvcih0cnVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0
aW9uU2VnbWVudChzZWdtZW50KTsKKyAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZURp
ZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoV1RGTW92ZShzZWdtZW50KSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogCiAgICAgbV9yZWNlaXZlZEZpcnN0SW5pdGlhbGl6YXRpb25T
ZWdtZW50ID0gdHJ1ZTsKICAgICBtX3BlbmRpbmdJbml0aWFsaXphdGlvblNlZ21lbnRGb3JDaGFu
Z2VUeXBlID0gZmFsc2U7CkBAIC0xMTgwLDExICsxMjEwLDExIEBAIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZTo6ZGlkUmVjZWl2ZVNhbXBsZShNZWRpYVNhbXBsZSYgc2FtcGxlKQogICAgICAgICAv
LyBkaXNqb2ludCByYW5nZXMgc2VwYXJhdGVkIGJ5IGxlc3MgdGhhbiBhICJmdWRnZSBmYWN0b3Ii
LgogICAgICAgICBhdXRvIHByZXNlbnRhdGlvbkVuZFRpbWUgPSBwcmVzZW50YXRpb25UaW1lc3Rh
bXAgKyBmcmFtZUR1cmF0aW9uOwogICAgICAgICBhdXRvIG5lYXJlc3RUb1ByZXNlbnRhdGlvblN0
YXJ0VGltZSA9IHRyYWNrQnVmZmVyLmJ1ZmZlcmVkLm5lYXJlc3QocHJlc2VudGF0aW9uVGltZXN0
YW1wKTsKLSAgICAgICAgaWYgKG5lYXJlc3RUb1ByZXNlbnRhdGlvblN0YXJ0VGltZS5pc1ZhbGlk
KCkgJiYgKHByZXNlbnRhdGlvblRpbWVzdGFtcCAtIG5lYXJlc3RUb1ByZXNlbnRhdGlvblN0YXJ0
VGltZSkuaXNCZXR3ZWVuKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgbV9jdXJyZW50VGltZUZ1ZGdl
RmFjdG9yKSkKKyAgICAgICAgaWYgKG5lYXJlc3RUb1ByZXNlbnRhdGlvblN0YXJ0VGltZS5pc1Zh
bGlkKCkgJiYgKHByZXNlbnRhdGlvblRpbWVzdGFtcCAtIG5lYXJlc3RUb1ByZXNlbnRhdGlvblN0
YXJ0VGltZSkuaXNCZXR3ZWVuKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgdGltZUZ1ZGdlRmFjdG9y
KCkpKQogICAgICAgICAgICAgcHJlc2VudGF0aW9uVGltZXN0YW1wID0gbmVhcmVzdFRvUHJlc2Vu
dGF0aW9uU3RhcnRUaW1lOwogCiAgICAgICAgIGF1dG8gbmVhcmVzdFRvUHJlc2VudGF0aW9uRW5k
VGltZSA9IHRyYWNrQnVmZmVyLmJ1ZmZlcmVkLm5lYXJlc3QocHJlc2VudGF0aW9uRW5kVGltZSk7
Ci0gICAgICAgIGlmIChuZWFyZXN0VG9QcmVzZW50YXRpb25FbmRUaW1lLmlzVmFsaWQoKSAmJiAo
bmVhcmVzdFRvUHJlc2VudGF0aW9uRW5kVGltZSAtIHByZXNlbnRhdGlvbkVuZFRpbWUpLmlzQmV0
d2VlbihNZWRpYVRpbWU6Onplcm9UaW1lKCksIG1fY3VycmVudFRpbWVGdWRnZUZhY3RvcikpCisg
ICAgICAgIGlmIChuZWFyZXN0VG9QcmVzZW50YXRpb25FbmRUaW1lLmlzVmFsaWQoKSAmJiAobmVh
cmVzdFRvUHJlc2VudGF0aW9uRW5kVGltZSAtIHByZXNlbnRhdGlvbkVuZFRpbWUpLmlzQmV0d2Vl
bihNZWRpYVRpbWU6Onplcm9UaW1lKCksIHRpbWVGdWRnZUZhY3RvcigpKSkKICAgICAgICAgICAg
IHByZXNlbnRhdGlvbkVuZFRpbWUgPSBuZWFyZXN0VG9QcmVzZW50YXRpb25FbmRUaW1lOwogCiAg
ICAgICAgIHRyYWNrQnVmZmVyLmJ1ZmZlcmVkLmFkZChwcmVzZW50YXRpb25UaW1lc3RhbXAsIHBy
ZXNlbnRhdGlvbkVuZFRpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5oCmluZGV4IDExZGZmMzQ5YmVjN2Q3ZTljMjIz
MTczNmE0NmQ0OGU3N2U0NzZiN2EuLjQwMWRiZDc3YmQyMDRiOThjMjgzZmNhMWZkNTQyMDljOTdm
ZWViMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJj
ZUJ1ZmZlclByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
b3VyY2VCdWZmZXJQcml2YXRlLmgKQEAgLTYzLDggKzYzLDkgQEAgY2xhc3MgU291cmNlQnVmZmVy
UHJpdmF0ZQogewogcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIFNvdXJjZUJ1ZmZlclByaXZh
dGUoKTsKLSAgICB2aXJ0dWFsIH5Tb3VyY2VCdWZmZXJQcml2YXRlKCkgPSBkZWZhdWx0OworICAg
IFdFQkNPUkVfRVhQT1JUIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclByaXZhdGUoKTsKIAorICAgIHZp
cnR1YWwgdm9pZCBzZXRBY3RpdmUoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQo
VmVjdG9yPHVuc2lnbmVkIGNoYXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSA9IDA7CkBAIC03Miw0MCAr
NzMsMzkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVh
ZHlTdGF0ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShi
b29sKSB7IH0KICAgICB2aXJ0dWFsIGJvb2wgY2FuU3dpdGNoVG9UeXBlKGNvbnN0IENvbnRlbnRU
eXBlJikgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIHZpcnR1YWwgdm9pZCByZWVucXVldWVNZWRp
YUlmTmVlZGVkKGNvbnN0IE1lZGlhVGltZSYgY3VycmVudE1lZGlhVGltZSwgdWludDY0X3QgcGVu
ZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUpOworICAg
IHZpcnR1YWwgdm9pZCBhZGRUcmFja0J1ZmZlcihjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lkLCBS
ZWZQdHI8TWVkaWFEZXNjcmlwdGlvbj4mJik7CisgICAgdmlydHVhbCB2b2lkIHRyeVNpZ25hbEFs
bFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZv
aWQgdXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCk7Cisg
ICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB2b2lkIGV2aWN0Q29kZWRGcmFtZXModWludDY0X3Qg
bmV3RGF0YVNpemUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90
IG1heGltdW1CdWZmZXJTaXplLCBjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBjb25zdCBN
ZWRpYVRpbWUmIGR1cmF0aW9uLCBib29sIGlzRW5kZWQpOworCiAgICAgdm9pZCBzZXRDbGllbnQo
U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9
CiAgICAgdm9pZCBzZXRJc0F0dGFjaGVkKGJvb2wgZmxhZykgeyBtX2lzQXR0YWNoZWQgPSBmbGFn
OyB9Ci0gICAgdm9pZCBzZXRDdXJyZW50VGltZUZ1ZGdlRmFjdG9yKGNvbnN0IE1lZGlhVGltZSYg
dGltZSkgeyBtX2N1cnJlbnRUaW1lRnVkZ2VGYWN0b3IgPSB0aW1lOyB9CisgICAgYm9vbCBoYXNB
dWRpbygpIGNvbnN0IHsgcmV0dXJuIG1faGFzQXVkaW87IH0KKyAgICBib29sIGhhc1ZpZGVvKCkg
Y29uc3QgeyByZXR1cm4gbV9oYXNWaWRlbzsgfQogICAgIHZvaWQgc2V0QXBwZW5kV2luZG93U3Rh
cnQoY29uc3QgTWVkaWFUaW1lJiBhcHBlbmRXaW5kb3dTdGFydCkgeyBtX2FwcGVuZFdpbmRvd1N0
YXJ0ID0gYXBwZW5kV2luZG93U3RhcnQ7fQogICAgIHZvaWQgc2V0QXBwZW5kV2luZG93RW5kKGNv
bnN0IE1lZGlhVGltZSYgYXBwZW5kV2luZG93RW5kKSB7IG1fYXBwZW5kV2luZG93RW5kID0gYXBw
ZW5kV2luZG93RW5kOyB9CiAgICAgYm9vbCBidWZmZXJGdWxsKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXJGdWxsOyB9Ci0gICAgVGltZVJhbmdlcyogYnVmZmVyZWQoKSBjb25zdCB7IHJldHVybiBt
X2J1ZmZlcmVkLmdldCgpOyB9Ci0gICAgYm9vbCBpc0J1ZmZlcmVkRGlydHkoKSBjb25zdCB7IHJl
dHVybiBtX2J1ZmZlcmVkRGlydHk7IH0KLSAgICB2b2lkIHNldEJ1ZmZlcmVkRGlydHkoYm9vbCBm
bGFnKSB7IG1fYnVmZmVyZWREaXJ0eSA9IGZsYWc7IH0KKworICAgIHZvaWQgc2V0QnVmZmVyZWRE
aXJ0eShib29sKTsKICAgICB2b2lkIHJlc2V0VHJhY2tCdWZmZXJzKCk7CiAgICAgdm9pZCBjbGVh
clRyYWNrQnVmZmVycygpOwogICAgIHZvaWQgcmVzZXRUaW1lc3RhbXBPZmZzZXRJblRyYWNrQnVm
ZmVycygpOwogICAgIE1lZGlhVGltZSB0aW1lc3RhbXBPZmZzZXQoKSBjb25zdCB7IHJldHVybiBt
X3RpbWVzdGFtcE9mZnNldDsgfQogICAgIHZvaWQgc2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IE1l
ZGlhVGltZSYgdGltZXN0YW1wT2Zmc2V0KSB7IG1fdGltZXN0YW1wT2Zmc2V0ID0gdGltZXN0YW1w
T2Zmc2V0OyB9CiAgICAgTWVkaWFUaW1lIGhpZ2hlc3RQcmVzZW50YXRpb25UaW1lc3RhbXAoKSBj
b25zdDsKLSAgICB2b2lkIHVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVmZmVycyhib29sIHNvdXJj
ZUlzRW5kZWQpOwogICAgIHZvaWQgc2Vla1RvVGltZShjb25zdCBNZWRpYVRpbWUmKTsKLSAgICB2
b2lkIHRyeVNpZ25hbEFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoKTsKICAgICB2b2lkIHN0YXJ0
Q2hhbmdpbmdUeXBlKCkgeyBtX3BlbmRpbmdJbml0aWFsaXphdGlvblNlZ21lbnRGb3JDaGFuZ2VU
eXBlID0gdHJ1ZTsgfQotCi0gICAgdm9pZCByZWVucXVldWVNZWRpYUlmTmVlZGVkKGNvbnN0IE1l
ZGlhVGltZSYgY3VycmVudE1lZGlhVGltZSwgc2l6ZV90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNp
dHksIHNpemVfdCBtYXhpbXVtQnVmZmVyU2l6ZSk7CiAgICAgdm9pZCByZW1vdmVDb2RlZEZyYW1l
cyhjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgY29uc3QgTWVk
aWFUaW1lJiBjdXJyZW50TWVkaWFUaW1lLCBib29sIGlzRW5kZWQpOwotICAgIHZvaWQgZXZpY3RD
b2RlZEZyYW1lcyhzaXplX3QgbmV3RGF0YVNpemUsIHNpemVfdCBwZW5kaW5nQXBwZW5kRGF0YUNh
cGFjaXR5LCBzaXplX3QgbWF4aW11bUJ1ZmZlclNpemUsIGNvbnN0IE1lZGlhVGltZSYgY3VycmVu
dFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24sIGJvb2wgaXNFbmRlZCk7Ci0gICAgdm9p
ZCBhZGRUcmFja0J1ZmZlcihjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lkLCBSZWZQdHI8TWVkaWFE
ZXNjcmlwdGlvbj4pOwogICAgIHZvaWQgdXBkYXRlVHJhY2tJZHMoVmVjdG9yPHN0ZDo6cGFpcjxB
dG9tU3RyaW5nLCBBdG9tU3RyaW5nPj4mJiB0cmFja0lkUGFpcnMpOwogICAgIHZvaWQgc2V0QWxs
VHJhY2tCdWZmZXJzTmVlZFJhbmRvbUFjY2VzcygpOwogICAgIHZvaWQgc2V0U2hvdWxkR2VuZXJh
dGVUaW1lc3RhbXBzKGJvb2wgZmxhZykgeyBtX3Nob3VsZEdlbmVyYXRlVGltZXN0YW1wcyA9IGZs
YWc7IH0KICAgICB2b2lkIHNldE1vZGUoU291cmNlQnVmZmVyQXBwZW5kTW9kZSBtb2RlKSB7IG1f
YXBwZW5kTW9kZSA9IG1vZGU7IH0KICAgICB2b2lkIHNldEdyb3VwU3RhcnRUaW1lc3RhbXAoY29u
c3QgTWVkaWFUaW1lJiBtZWRpYVRpbWUpIHsgbV9ncm91cFN0YXJ0VGltZXN0YW1wID0gbWVkaWFU
aW1lOyB9CiAgICAgdm9pZCBzZXRHcm91cFN0YXJ0VGltZXN0YW1wVG9FbmRUaW1lc3RhbXAoKSB7
IG1fZ3JvdXBTdGFydFRpbWVzdGFtcCA9IG1fZ3JvdXBFbmRUaW1lc3RhbXA7IH0KLSAgICBzaXpl
X3QgdG90YWxUcmFja0J1ZmZlclNpemVJbkJ5dGVzKCkgY29uc3Q7CisgICAgdWludDY0X3QgdG90
YWxUcmFja0J1ZmZlclNpemVJbkJ5dGVzKCkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgVHJhY2tCdWZm
ZXIgewogICAgICAgICBNZWRpYVRpbWUgbGFzdERlY29kZVRpbWVzdGFtcDsKQEAgLTEzNCw3ICsx
MzQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBlbnF1ZXVlZFNhbXBs
ZXNGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmKSB7IHJldHVybiB7IH07IH0KICAgICBWZWN0
b3I8U3RyaW5nPiBidWZmZXJlZFNhbXBsZXNGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmKTsK
ICAgICB2aXJ0dWFsIE1lZGlhVGltZSBtaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lRm9y
VHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJikgeyByZXR1cm4gTWVkaWFUaW1lOjppbnZhbGlkVGlt
ZSgpOyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRChj
b25zdCBBdG9tU3RyaW5nJiwgc2l6ZV90KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWF4aW11
bVF1ZXVlRGVwdGhGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmLCB1aW50NjRfdCkgeyB9CiAg
ICAgTWVkaWFUaW1lIGZhc3RTZWVrVGltZUZvck1lZGlhVGltZShjb25zdCBNZWRpYVRpbWUmIHRh
cmdldFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgbmVnYXRpdmVUaHJlc2hvbGQsIGNvbnN0IE1lZGlh
VGltZSYgcG9zaXRpdmVUaHJlc2hvbGQpOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBA
IC0xNDMsNiArMTQzLDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByb3RlY3RlZDoKKyAgICB2aXJ0
dWFsIE1lZGlhVGltZSB0aW1lRnVkZ2VGYWN0b3IoKSBjb25zdCB7IHJldHVybiB7MjAwMiwgMjQw
MDB9OyB9CiAgICAgdmlydHVhbCBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTZWVraW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICB2aXJ0dWFsIE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3QgeyByZXR1cm4g
eyB9OyB9CkBAIC0xNTcsOCArMTU4LDkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRNaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lKGNvbnN0IEF0b21TdHJpbmcmLCBjb25z
dCBNZWRpYVRpbWUmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJNaW5pbXVtVXBjb21pbmdQ
cmVzZW50YXRpb25UaW1lKGNvbnN0IEF0b21TdHJpbmcmKSB7IH0KIAorICAgIHZvaWQgYXBwZW5k
Q29tcGxldGVkKGJvb2wgcGFyc2luZ1N1Y2NlZWRlZCwgYm9vbCBpc0VuZGVkKTsKICAgICB2b2lk
IHJlZW5xdWVTYW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpOwotICAgIHZvaWQgZGlk
UmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBTb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbml0aWFs
aXphdGlvblNlZ21lbnQoU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25T
ZWdtZW50JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkaWRSZWNl
aXZlU2FtcGxlKE1lZGlhU2FtcGxlJik7CiAgICAgdm9pZCBwcm92aWRlTWVkaWFEYXRhKGNvbnN0
IEF0b21TdHJpbmcmIHRyYWNrSUQpOwogCkBAIC0xNjksMTEgKzE3MSwxMyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgcmVlbnF1ZXVlTWVkaWFGb3JUaW1lKFRyYWNrQnVmZmVyJiwgY29uc3QgQXRvbVN0
cmluZyYgdHJhY2tJRCwgY29uc3QgTWVkaWFUaW1lJik7CiAgICAgYm9vbCB2YWxpZGF0ZUluaXRp
YWxpemF0aW9uU2VnbWVudChjb25zdCBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFs
aXphdGlvblNlZ21lbnQmKTsKICAgICB2b2lkIHByb3ZpZGVNZWRpYURhdGEoVHJhY2tCdWZmZXIm
LCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKTsKKyAgICB2b2lkIHNldEJ1ZmZlcmVkUmFuZ2Vz
KGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYpOwogCiAgICAgYm9vbCBtX2lzQXR0YWNoZWQgeyBm
YWxzZSB9OworICAgIGJvb2wgbV9oYXNBdWRpbyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1Zp
ZGVvIHsgZmFsc2UgfTsKIAogICAgIEhhc2hNYXA8QXRvbVN0cmluZywgVHJhY2tCdWZmZXI+IG1f
dHJhY2tCdWZmZXJNYXA7Ci0gICAgTWVkaWFUaW1lIG1fY3VycmVudFRpbWVGdWRnZUZhY3RvcjsK
IAogICAgIFNvdXJjZUJ1ZmZlckFwcGVuZE1vZGUgbV9hcHBlbmRNb2RlIHsgU291cmNlQnVmZmVy
QXBwZW5kTW9kZTo6U2VnbWVudHMgfTsKIApAQCAtMTkwLDcgKzE5NCw2IEBAIHByaXZhdGU6CiAK
ICAgICBib29sIG1fYnVmZmVyRnVsbCB7IGZhbHNlIH07CiAgICAgUmVmUHRyPFRpbWVSYW5nZXM+
IG1fYnVmZmVyZWQ7Ci0gICAgYm9vbCBtX2J1ZmZlcmVkRGlydHkgeyB0cnVlIH07CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmgKaW5kZXggZWNkM2M3
NjNmMTI0YjdjMGQ0Yzc1OTViZDNhNmFmMTY1YzNkOTQzYi4uYTdmMDQxMmYxNDA5MjA1NTEyYTQz
OWNmOGIxYTRlMzBjY2NkZmQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaApAQCAtMzYsNiAr
MzYsNyBAQCBjbGFzcyBBdWRpb1RyYWNrUHJpdmF0ZTsKIGNsYXNzIEluYmFuZFRleHRUcmFja1By
aXZhdGU7CiBjbGFzcyBNZWRpYVNhbXBsZTsKIGNsYXNzIE1lZGlhRGVzY3JpcHRpb247CitjbGFz
cyBQbGF0Zm9ybVRpbWVSYW5nZXM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZTsKIAogY2xhc3Mg
U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCB7CkBAIC02MywyMSArNjQsMjIgQEAgcHVibGljOgog
ICAgICAgICB9OwogICAgICAgICBWZWN0b3I8VGV4dFRyYWNrSW5mb3JtYXRpb24+IHRleHRUcmFj
a3M7CiAgICAgfTsKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2Vp
dmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50JikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9vbCBk
ZWNvZGVFcnJvcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRHVy
YXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc291
cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxlKGRvdWJsZSBmcmFtZUR1cmF0aW9uKSA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWREcm9wU2FtcGxlKCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxp
emF0aW9uU2VnbWVudChJbml0aWFsaXphdGlvblNlZ21lbnQmJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVTdHJl
YW1FbmRlZFdpdGhEZWNvZGVFcnJvcigpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlQnVm
ZmVyUHJpdmF0ZUhhc0F1ZGlvKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VC
dWZmZXJQcml2YXRlSGFzVmlkZW8oKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc291
cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZEVycm9yKGJvb2wgZGVjb2RlRXJyb3IpID0gMDsKICAgICBl
bnVtIGNsYXNzIEFwcGVuZFJlc3VsdCA6IHVpbnQ4X3QgewogICAgICAgICBBcHBlbmRTdWNjZWVk
ZWQsCiAgICAgICAgIFJlYWRTdHJlYW1GYWlsZWQsCiAgICAgICAgIFBhcnNpbmdGYWlsZWQKICAg
ICB9OwogICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUo
QXBwZW5kUmVzdWx0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVE
dXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBz
b3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoZG91YmxlIGZyYW1lRHVyYXRpb24pID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZERyb3BTYW1wbGUoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hh
bmdlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVCdWZm
ZXJlZFJhbmdlc0NoYW5nZWQoY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJikgPSAwOworCiAgICAg
dmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJyb3Io
aW50IGVycm9yQ29kZSkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgKaW5kZXggMGM0MTNjMmRkZjVkOWRhMmEx
NWIxMTM1YzA4ZTUxMDg1MmI4MDJjNi4uZWE1YTI5Y2ViNWNmZTlmMDI0MjdjNWVhZGRjMTY0Mjc0
Y2I2ZDYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlk
ZW9UcmFja1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9W
aWRlb1RyYWNrUHJpdmF0ZS5oCkBAIC02NCw3ICs2NCw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBT
ZWxlY3RlZENoYW5nZWRDYWxsYmFjayA9IEZ1bmN0aW9uPHZvaWQoVmlkZW9UcmFja1ByaXZhdGUm
LCBib29sIHNlbGVjdGVkKT47CiAgICAgdm9pZCBzZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFjayhT
ZWxlY3RlZENoYW5nZWRDYWxsYmFjayYmIGNhbGxiYWNrKSB7IG1fc2VsZWN0ZWRDaGFuZ2VkQ2Fs
bGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsgfQogCi0KIHByb3RlY3RlZDoKICAgICBWaWRlb1Ry
YWNrUHJpdmF0ZSgpID0gZGVmYXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2Jq
Qy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCmluZGV4IDExMzZmZDI1MmI4MmZlY2M3NmI3ZTk4
ZmI0ZDhlYmFiNWNlZWI5NDUuLjY4Y2ZkNTIzNDZiOWMzNThjZDNkMTc1MDkzYzU3ZGM4ZDc5Nzhi
YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDLmgKQEAgLTYyLDE0ICs2MiwxNSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNZWRp
YVNvdXJjZVByaXZhdGVBVkZPYmpDPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3Vy
Y2VBVkZPYmpDKiwgTWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+TWVk
aWFTb3VyY2VQcml2YXRlQVZGT2JqQygpOwogCi0gICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDKiBwbGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXllcjsgfQorICAgIE1l
ZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyogcGxheWVyKCkgY29uc3QgeyByZXR1
cm4gbV9wbGF5ZXIuZ2V0KCk7IH0KICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDPj4mIHNvdXJjZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZUJ1ZmZlcnM7IH0KICAgICBjb25zdCBWZWN0b3I8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMq
PiYgYWN0aXZlU291cmNlQnVmZmVycygpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlU291cmNlQnVm
ZmVyczsgfQogCiAgICAgQWRkU3RhdHVzIGFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDb250ZW50VHlw
ZSYsIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlPiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHVy
YXRpb25DaGFuZ2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoY29uc3Qg
TWVkaWFUaW1lJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJl
YW1TdGF0dXMpIG92ZXJyaWRlOwogICAgIHZvaWQgdW5tYXJrRW5kT2ZTdHJlYW0oKSBvdmVycmlk
ZTsKKyAgICBib29sIGlzRW5kZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzRW5kZWQ7
IH0KICAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKSBvdmVy
cmlkZTsKICAgICB2b2lkIHdhaXRGb3JTZWVrQ29tcGxldGVkKCkgb3ZlcnJpZGU7CkBAIC0xMjks
NyArMTMwLDcgQEAgcHJpdmF0ZToKIAogICAgIGZyaWVuZCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzsKIAotICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyog
bV9wbGF5ZXI7CisgICAgV2Vha1B0cjxNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9i
akM+IG1fcGxheWVyOwogICAgIFJlZlB0cjxNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQ+IG1fY2xp
ZW50OwogICAgIFZlY3RvcjxSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+PiBtX3Nv
dXJjZUJ1ZmZlcnM7CiAgICAgVmVjdG9yPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKj4gbV9h
Y3RpdmVTb3VyY2VCdWZmZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlh
U291cmNlUHJpdmF0ZUFWRk9iakMubW0KaW5kZXggYjAwMzkzMWM3ZDc1OWYyOWQ5ZTA2NmZiMTIw
MjMwN2NmNTI0OTU2Ni4uNTZmZDg5NTE5YzRhMmJiZmU5OTgxZGY4ZGQyZmQyNTA5MzlhYTVjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZP
YmpDLm1tCkBAIC01NCw3ICs1NCw3IEBAIFJlZjxNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBN
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpjcmVhdGUoTWVkaWFQbGF5ZXJQcml2CiB9CiAKIE1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6Ok1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMoTWVkaWFQ
bGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBwYXJlbnQsIE1lZGlhU291cmNlUHJpdmF0
ZUNsaWVudCogY2xpZW50KQotICAgIDogbV9wbGF5ZXIocGFyZW50KQorICAgIDogbV9wbGF5ZXIo
bWFrZVdlYWtQdHIocGFyZW50KSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1faXNF
bmRlZChmYWxzZSkKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTEyOCw3ICsxMjgsNyBA
QCBzdGQ6OnVuaXF1ZV9wdHI8UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDOjpidWZmZXJlZCgpCiAgICAgcmV0dXJuIG1fY2xpZW50LT5idWZmZXJlZCgpOwogfQog
Ci12b2lkIE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmR1cmF0aW9uQ2hhbmdlZCgpCit2b2lk
IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRp
bWUmKQogewogICAgIG1fcGxheWVyLT5kdXJhdGlvbkNoYW5nZWQoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJj
ZUJ1ZmZlclBhcnNlckFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMuaAppbmRleCA1NDY1
MzJiYTE5ZWE0NGY4ZmFmNDlhZDE5NzUyMWY5N2U4ZTFlZTY4Li43MjY1YmU5MmJiNTM4ZDcyMzQy
NDFjZmI0MzBiZWNmOWI0NWJjOTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oCkBAIC0yOCw3ICsyOCwxMCBAQAogI2lmIEVOQUJM
RShNRURJQV9TT1VSQ0UpCiAKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQYXJzZXIuaCIKKyNpbmNs
dWRlIDx3dGYvQ29uZGl0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3
dGYvVHlwZUNhc3RzLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9X
ZWFrUHRyLmg+CiAKIE9CSkNfQ0xBU1MgQVZBc3NldDsKQEAgLTc4LDYgKzgxLDEwIEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdt
ZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1fcGFyc2VyU3RhdGVXYXNSZXNldCB7IGZhbHNlIH07
CiAKKyAgICBMb2NrIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkTXV0ZXg7CisgICAg
Q29uZGl0aW9uIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkQ29uZGl0aW9uOworICAg
IGJvb2wgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWQgeyBmYWxzZSB9OworCiAjaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgUmVmUHRyPGNvbnN0IFdURjo6TG9nZ2VyPiBtX2xv
Z2dlcjsKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXIgeyBudWxscHRyIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpp
bmRleCAzNWQ5ZjU1MGMzYjIxMDQxYWVmN2QyYTY0M2I4YWFjN2I0YTM5NTViLi5iMTBkYTkzZWQ4
MzMzYmMwMjdmMmVjNGFlNzFkOTU5NGZlYTRlODA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJB
VkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KQEAgLTI1OCw3ICsyNTgsMTIg
QEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpzZXRMb2dnZXIoY29uc3QgTG9nZ2Vy
JiBsb2dnZXIsIGNvbnN0IHZvaWQqIGxvZ0kKIAogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZP
YmpDOjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQogewotICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYXNzZXQg
PSByZXRhaW5QdHIoYXNzZXQpXSB7CisgICAgeworICAgICAgICBhdXRvIGxvY2tlciA9IGhvbGRM
b2NrKG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkTXV0ZXgpOworICAgICAgICBtX2lu
aXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZCA9IGZhbHNlOworICAgIH0KKworICAgIGNhbGxP
bk1haW5UaHJlYWQoW3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYXNzZXQgPSBy
ZXRhaW5QdHIoYXNzZXQpXSgpIG11dGFibGUgewogICAgICAgICBtX2Rpc2NhcmRTYW1wbGVzVW50
aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50ID0gZmFsc2U7CiAKICAgICAgICAgaWYgKCFtX2Rp
ZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2spCkBAIC0yOTUsNyArMzAwLDExIEBAIHZv
aWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkUGFyc2VTdHJlYW1EYXRhQXNBc3NldChB
VkFzc2V0KiBhc3NldCkKICAgICAgICAgICAgIC8vIEZJWE1FKDEyNTE2MSkgICAgOiBBZGQgVGV4
dFRyYWNrIHN1cHBvcnQKICAgICAgICAgfQogCi0gICAgICAgIG1fZGlkUGFyc2VJbml0aWFsaXph
dGlvbkRhdGFDYWxsYmFjayhXVEZNb3ZlKHNlZ21lbnQpKTsKKyAgICAgICAgbV9kaWRQYXJzZUlu
aXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFdURk1vdmUoc2VnbWVudCksIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRvIGxv
Y2tlciA9IGhvbGRMb2NrKG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkTXV0ZXgpOwor
ICAgICAgICAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWQgPSB0cnVlOworICAg
ICAgICAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWRDb25kaXRpb24ubm90aWZ5
QWxsKCk7CisgICAgICAgIH0pOwogICAgIH0pOwogfQogCkBAIC0zMTAsNiArMzE5LDE1IEBAIHZv
aWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRhV2l0
aEVycm9yKE5TRXJyb3IqIGVycm9yCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmRp
ZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKHVpbnQ2NF90IHRyYWNrSUQsIENNU2FtcGxlQnVm
ZmVyUmVmIHNhbXBsZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIHVuc2lnbmVkIGZs
YWdzKQogewogICAgIFVOVVNFRF9QQVJBTShmbGFncyk7CisKKyAgICAvLyBXYWl0IHVudGlsIHRo
ZSBpbml0aWFsaXphdGlvbiBzZWdtZW50IGlzIGhhbmRsZWQKKyAgICB7CisgICAgICAgIHN0ZDo6
dW5pcXVlX2xvY2s8TG9jaz4gbG9jayhtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZE11
dGV4KTsKKyAgICAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWRDb25kaXRpb24u
d2FpdChsb2NrLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAg
ICAgICAgICByZXR1cm4gbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWQ7CisgICAgICAg
IH0pOworICAgIH0KKwogICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHN0cm9uZ1RoaXMgPSBt
YWtlUmVmKCp0aGlzKSwgc2FtcGxlQnVmZmVyID0gcmV0YWluUHRyKHNhbXBsZUJ1ZmZlciksIHRy
YWNrSUQsIG1lZGlhVHlwZSA9IG1lZGlhVHlwZV0gewogICAgICAgICBpZiAoIW1fZGlkUHJvdmlk
ZU1lZGlhRGF0YUNhbGxiYWNrKQogICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKaW5kZXggOGIxZWVh
NjMwMDdlZDVjNGQwODc0NDZlNzQzYjEzYTRjMWNjMDBiZC4uMWY2MjViM2M3OGU4M2U1MTE0NDgw
MDliYmM0NDk1OGUzNjNhZDRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9T
b3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oCkBAIC05MSw5ICs5MSw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHdpbGxQcm92aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JU
cmFja0lEKHVpbnQ2NF90IHRyYWNrSUQpOwogICAgIHZvaWQgZGlkUHJvdmlkZUNvbnRlbnRLZXlS
ZXF1ZXN0SW5pdGlhbGl6YXRpb25EYXRhRm9yVHJhY2tJRChSZWY8VWludDhBcnJheT4mJiwgdWlu
dDY0X3QgdHJhY2tJRCwgQm94PEJpbmFyeVNlbWFwaG9yZT4pOwogCi0gICAgYm9vbCBoYXNWaWRl
bygpIGNvbnN0OwogICAgIGJvb2wgaGFzU2VsZWN0ZWRWaWRlbygpIGNvbnN0OwotICAgIGJvb2wg
aGFzQXVkaW8oKSBjb25zdDsKIAogICAgIHZvaWQgdHJhY2tEaWRDaGFuZ2VTZWxlY3RlZChWaWRl
b1RyYWNrUHJpdmF0ZSYsIGJvb2wgc2VsZWN0ZWQpOwogICAgIHZvaWQgdHJhY2tEaWRDaGFuZ2VF
bmFibGVkKEF1ZGlvVHJhY2tQcml2YXRlJiwgYm9vbCBlbmFibGVkKTsKQEAgLTE0MCw3ICsxMzgs
NyBAQCBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1l
ZGlhU291cmNlUHJpdmF0ZUFWRk9iakMqLCBSZWY8U291cmNlQnVmZmVyUGFyc2VyPiYmKTsKIAog
ICAgIHVzaW5nIEluaXRpYWxpemF0aW9uU2VnbWVudCA9IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGll
bnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDsKLSAgICB2b2lkIGRpZFBhcnNlSW5pdGlhbGl6YXRp
b25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVudCYmKTsKKyAgICB2b2lkIGRpZFBhcnNlSW5pdGlh
bGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYpOwogICAgIHZvaWQgZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nKGludDMy
X3QpOwogICAgIHZvaWQgZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoUmVmPE1lZGlhU2Ft
cGxlPiYmLCB1aW50NjRfdCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CiAKQEAg
LTE1NCw2ICsxNTIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZmx1c2goY29uc3QgQXRvbVN0cmlu
ZyYgdHJhY2tJRCkgZmluYWw7CiAgICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBs
ZT4mJiwgY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkgZmluYWw7CiAgICAgYm9vbCBpc1JlYWR5
Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkgZmluYWw7CisgICAgTWVk
aWFUaW1lIHRpbWVGdWRnZUZhY3RvcigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0QWN0aXZl
KGJvb2wpIGZpbmFsOwogICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lk
IG5vdGlmeUNsaWVudFdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmIHRy
YWNrSUQpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQy5tbQppbmRleCA0ZDYxNDdlOTE2NDkyNGY0MmQ0ZGRlZjRhNmI2Zjgw
YzZlNTJjMzhlLi40M2YzYmMxNTE0MDE5OTU2MjhiNDBmYWNlOWE0YmY0MTE1ODAwYWEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5tbQpAQCAtMzA4LDEwICszMDgsMTQgQEAgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNv
dXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMKIAogICAg
IHNvdXJjZUJ1ZmZlck1hcCgpLmFkZChtX21hcElELCBtYWtlV2Vha1B0cigqdGhpcykpOwogCi0g
ICAgbV9wYXJzZXItPnNldERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soW3dlYWtU
aGlzID0gbWFrZVdlYWtQdHIodGhpcyldIChJbml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50
KSBtdXRhYmxlIHsKKyAgICBtX3BhcnNlci0+c2V0RGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFD
YWxsYmFjayhbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKEluaXRpYWxpemF0
aW9uU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5kaWRQYXJzZUluaXRp
YWxpemF0aW9uRGF0YShXVEZNb3ZlKHNlZ21lbnQpKTsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykg
eworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIGRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKFdURk1vdmUo
c2VnbWVudCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKIAogICAgIG1f
cGFyc2VyLT5zZXREaWRFbmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayhbd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKGludDMyX3QgZXJyb3JDb2RlKSBtdXRhYmxlIHsKQEAg
LTM0NCwxMiArMzQ4LDE0IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp+U291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakMoKQogICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25h
bCgpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRp
YWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50KQordm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlh
bGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAKLSAg
ICBpZiAoIW1fbWVkaWFTb3VyY2UpCisgICAgaWYgKCFtX21lZGlhU291cmNlKSB7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAo
bV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPnNob3VsZENoZWNrSGFyZHdhcmVTdXBwb3J0KCkpIHsK
ICAgICAgICAgZm9yIChhdXRvJiBpbmZvIDogc2VnbWVudC52aWRlb1RyYWNrcykgewpAQCAtMzU4
LDYgKzM2NCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5p
dGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVuCiAgICAgICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICAgICBpZiAoIWNvZGVjc01lZXRIYXJkd2FyZURlY29kZVJlcXVpcmVt
ZW50cyh7eyAqY29kZWMgfX0sIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5tZWRpYUNvbnRlbnRU
eXBlc1JlcXVpcmluZ0hhcmR3YXJlU3VwcG9ydCgpKSkgewogICAgICAgICAgICAgICAgIG1fcGFy
c2luZ1N1Y2NlZWRlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC0zODQsNyArMzkxLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFy
c2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW4KICAgICBpZiAobV9tZWRp
YVNvdXJjZSkKICAgICAgICAgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPmNoYXJhY3RlcmlzdGlj
c0NoYW5nZWQoKTsKIAotICAgIGRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoc2VnbWVu
dCk7CisgICAgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChXVEZNb3ZlKHNlZ21lbnQp
LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6OmRpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhpbnQzMl90IGNvZGUp
CkBAIC01NzcsOCArNTg0LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBw
ZW5kQ29tcGxldGVkKCkKICAgICBpZiAobV9wYXJzaW5nU3VjY2VlZGVkICYmIG1fbWVkaWFTb3Vy
Y2UpCiAgICAgICAgIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5zZXRMb2FkaW5nUHJvZ3Jlc3Nz
ZWQodHJ1ZSk7CiAKLSAgICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5zb3VyY2VC
dWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUobV9wYXJzaW5nU3VjY2VlZGVkID8gU291cmNlQnVm
ZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0OjpBcHBlbmRTdWNjZWVkZWQgOiBTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQ6OlBhcnNpbmdGYWlsZWQpOworICAgIFNv
dXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZENvbXBsZXRlZChtX3BhcnNpbmdTdWNjZWVkZWQsIG1f
bWVkaWFTb3VyY2UgPyBtX21lZGlhU291cmNlLT5pc0VuZGVkKCkgOiB0cnVlKTsKIH0KIAogdm9p
ZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YWJvcnQoKQpAQCAtNjgxLDIxICs2ODcsMTEg
QEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6c2V0UmVhZHlTdGF0ZShNZWRpYVBs
YXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXQKICAgICAgICAgbV9tZWRpYVNvdXJjZS0+cGxheWVy
KCktPnNldFJlYWR5U3RhdGUocmVhZHlTdGF0ZSk7CiB9CiAKLWJvb2wgU291cmNlQnVmZmVyUHJp
dmF0ZUFWRk9iakM6Omhhc1ZpZGVvKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jbGllbnQgJiYg
bV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbygpOwotfQotCiBib29sIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpoYXNTZWxlY3RlZFZpZGVvKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9lbmFibGVkVmlkZW9UcmFja0lEICE9IG5vdEZvdW5kOwogfQogCi1ib29sIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpoYXNBdWRpbygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
Y2xpZW50ICYmIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlSGFzQXVkaW8oKTsKLX0KLQog
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFuZ2VTZWxlY3RlZChW
aWRlb1RyYWNrUHJpdmF0ZSYgdHJhY2ssIGJvb2wgc2VsZWN0ZWQpCiB7CiAgICAgYXV0byB0cmFj
a0lEID0gdHJhY2suaWQoKS5zdHJpbmcoKS50b1VJbnQ2NCgpOwpAQCAtMTA2Miw3ICsxMDU4LDcg
QEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZW5xdWV1ZVNhbXBsZShSZWY8TWVk
aWFTYW1wbGU+JiYgc2FtcGxlLCBjb25zdAogCiAgICAgICAgIGF1dG8gcmVuZGVyZXIgPSBtX2F1
ZGlvUmVuZGVyZXJzLmdldCh0cmFja0lEKTsKICAgICAgICAgW3JlbmRlcmVyIGVucXVldWVTYW1w
bGVCdWZmZXI6cGxhdGZvcm1TYW1wbGUuc2FtcGxlLmNtU2FtcGxlQnVmZmVyXTsKLSAgICAgICAg
aWYgKG1fbWVkaWFTb3VyY2UgJiYgIXNhbXBsZS0+aXNOb25EaXNwbGF5aW5nKCkpCisgICAgICAg
IGlmIChtX21lZGlhU291cmNlICYmICFzYW1wbGUtPmlzTm9uRGlzcGxheWluZygpICYmIG1fbWVk
aWFTb3VyY2UtPnBsYXllcigpKQogICAgICAgICAgICAgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCkt
PnNldEhhc0F2YWlsYWJsZUF1ZGlvU2FtcGxlKHJlbmRlcmVyLmdldCgpLCB0cnVlKTsKICAgICB9
CiB9CkBAIC0xMDkxLDYgKzEwODcsMTQgQEAgYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qzo6aXNSZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQKICAgICBy
ZXR1cm4gZmFsc2U7CiB9CiAKK01lZGlhVGltZSBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
dGltZUZ1ZGdlRmFjdG9yKCkgY29uc3QKK3sKKyAgICBpZiAobV9tZWRpYVNvdXJjZSkKKyAgICAg
ICAgcmV0dXJuIG1fbWVkaWFTb3VyY2UtPnRpbWVGdWRnZUZhY3RvcigpOworCisgICAgcmV0dXJu
IFNvdXJjZUJ1ZmZlclByaXZhdGU6OnRpbWVGdWRnZUZhY3RvcigpOworfQorCiB2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRBY3RpdmUoYm9vbCBpc0FjdGl2ZSkKIHsKICAgICBB
TFdBWVNfTE9HKExPR0lERU5USUZJRVIsIGlzQWN0aXZlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgK
aW5kZXggMGRjODFmMDZkMjdkY2QwOTczOWQwN2U0NTA3NThiNjM2MjlkNzFjNy4uZTEwY2RhYmM0
N2E0NDVkMzFjYTkwZjliZjQ4MTJmZmM0YTAzMTE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmgK
QEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJNZWRpYVBsYXllckVudW1zLmgiCiAjaW5jbHVk
ZSAiU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAgLTY5LDcgKzcwLDcg
QEAgcHVibGljOgogCiAgICAgLy8gV2lsbCBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgog
ICAgIHVzaW5nIEluaXRpYWxpemF0aW9uU2VnbWVudCA9IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGll
bnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDsKLSAgICB1c2luZyBEaWRQYXJzZUluaXRpYWxpemF0
aW9uRGF0YUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEluaXRpYWxpemF0aW9uU2VnbWVu
dCYmKT47CisgICAgdXNpbmcgRGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayA9IFdU
Rjo6RnVuY3Rpb248dm9pZChJbml0aWFsaXphdGlvblNlZ21lbnQmJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmKT47CiAgICAgdm9pZCBzZXREaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNh
bGxiYWNrKERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2smJiBjYWxsYmFjaykKICAg
ICB7CiAgICAgICAgIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayA9IFdURk1v
dmUoY2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAppbmRleCA4NGJj
NTc0ZGMwZjAzZjhmZmI0MzY4OTBmYzRhMWE1ZGVhYTllNjQxLi44ZDU4ZjU5NTdkYWQ2NjlhYWNj
YTIxYmQxMzE2YzYxMzhkNjZhODMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNw
cApAQCAtNzE2LDggKzcxNiwxNyBAQCBTdGF0dXMgU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6T25D
bHVzdGVyQmVnaW4oY29uc3QgRWxlbWVudE1ldGFkYXRhJiBtZXRhZGF0YSwgYwogICAgICAgICBy
ZXR1cm4gU3RhdHVzKFN0YXR1czo6a05vdEVub3VnaE1lbW9yeSk7CiAKICAgICBpZiAobV9pbml0
aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCAmJiBtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25E
YXRhQ2FsbGJhY2spIHsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpbml0aWFsaXphdGlvblNlZ21lbnQgPSBXVEZNb3ZlKCpt
X2luaXRpYWxpemF0aW9uU2VnbWVudCldICgpIG11dGFibGUgewotICAgICAgICAgICAgbV9kaWRQ
YXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrKFdURk1vdmUoaW5pdGlhbGl6YXRpb25TZWdt
ZW50KSk7CisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8gbG9ja2VyID0gaG9sZExvY2sobV9p
bml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWRNdXRleCk7CisgICAgICAgICAgICBtX2luaXRp
YWxpemF0aW9uU2VnbWVudElzSGFuZGxlZCA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBp
bml0aWFsaXphdGlvblNlZ21lbnQgPSBXVEZNb3ZlKCptX2luaXRpYWxpemF0aW9uU2VnbWVudCld
KCkgbXV0YWJsZSB7CisgICAgICAgICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2Fs
bGJhY2soV1RGTW92ZShpbml0aWFsaXphdGlvblNlZ21lbnQpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSgpIG11dGFibGUgeworICAgICAgICAgICAgICAgIGF1dG8gbG9j
a2VyID0gaG9sZExvY2sobV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWRNdXRleCk7Cisg
ICAgICAgICAgICAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkQ29uZGl0aW9u
Lm5vdGlmeUFsbCgpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0KICAgICBt
X2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkID0gZmFsc2U7CkBAIC0xMjAzLDYgKzEy
MTIsMTQgQEAgd2VibTo6U3RhdHVzIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uRnJhbWUoY29u
c3QgRnJhbWVNZXRhZGF0YSYgbWV0YWRhdGEsIFJlYWQKIAogICAgICAgICBhdXRvIHRyYWNrSUQg
PSB0cmFjay50cmFja191aWQudmFsdWUoKTsKIAorICAgICAgICAvLyBXYWl0IHVudGlsIHRoZSBp
bml0aWFsaXphdGlvbiBzZWdtZW50IGlzIGhhbmRsZWQKKyAgICAgICAgeworICAgICAgICAgICAg
c3RkOjp1bmlxdWVfbG9jazxMb2NrPiBsb2NrKG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5k
bGVkTXV0ZXgpOworICAgICAgICAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWRD
b25kaXRpb24ud2FpdChsb2NrLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
XSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5k
bGVkOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKwogICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHNhbXBsZUJ1ZmZlciA9
IFdURk1vdmUoc2FtcGxlQnVmZmVyKSwgdHJhY2tJRF0gKCkgbXV0YWJsZSB7CiAgICAgICAgICAg
ICBpZiAoIW1fZGlkUHJvdmlkZU1lZGlhRGF0YUNhbGxiYWNrKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29h
L1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uaAppbmRleCA0NWJkNjlmZmI0NzEyYmU1
MjQ1ZTYyNmNmYjdjZGU5ODdlOGFiYWNmLi4wOTVkMzZiM2JhOTY4MDI2MTE1MzYwNmUwZWFiYzk0
MGU1MjdlYjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
b2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCkBAIC0zMSw3ICszMSw5
IEBACiAjaW5jbHVkZSA8Y29tbW9uL3ZwOV9oZWFkZXJfcGFyc2VyLmg+CiAjaW5jbHVkZSA8d2Vi
bS9jYWxsYmFjay5oPgogI2luY2x1ZGUgPHdlYm0vc3RhdHVzLmg+CisjaW5jbHVkZSA8d3RmL0Nv
bmRpdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9Mb2Nr
Lmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYu
aD4KICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgpAQCAtMTQxLDYgKzE0MywxMCBAQCBwcml2YXRl
OgogICAgIE9wdGlvbmFsPEJsb2NrVmFyaWFudD4gbV9jdXJyZW50QmxvY2s7CiAgICAgT3B0aW9u
YWw8dWludDY0X3Q+IG1fcmV3aW5kVG9Qb3NpdGlvbjsKIAorICAgIExvY2sgbV9pbml0aWFsaXph
dGlvblNlZ21lbnRJc0hhbmRsZWRNdXRleDsKKyAgICBDb25kaXRpb24gbV9pbml0aWFsaXphdGlv
blNlZ21lbnRJc0hhbmRsZWRDb25kaXRpb247CisgICAgYm9vbCBtX2luaXRpYWxpemF0aW9uU2Vn
bWVudElzSGFuZGxlZCB7IGZhbHNlIH07CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAg
ICBSZWZQdHI8Y29uc3QgV1RGOjpMb2dnZXI+IG1fbG9nZ2VyOwogICAgIGNvbnN0IHZvaWQqIG1f
bG9nSWRlbnRpZmllciB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVk
aWFTb3VyY2VQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA3NzFlYTA4Y2VmNDQxYzU5ZDY4NGZj
NWNlZGIzM2YwNmEzNmZjZjgxLi5lZmVmN2JhM2MyODJlZTY1MzA4ZTA1NGUzMzc2YjRlNWEyZWRi
MzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL01lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVByaXZhdGVHU3Ry
ZWFtZXIuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgTWVkaWFTb3VyY2VQcml2YXRlR1N0cmVh
bWVyOjpyZW1vdmVTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVyUHJpdmF0ZSogc291cmNlCiAgICAg
bV9hY3RpdmVTb3VyY2VCdWZmZXJzLnJlbW92ZShzb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVy
LmdldCgpKTsKIH0KIAotdm9pZCBNZWRpYVNvdXJjZVByaXZhdGVHU3RyZWFtZXI6OmR1cmF0aW9u
Q2hhbmdlZCgpCit2b2lkIE1lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1lcjo6ZHVyYXRpb25DaGFu
Z2VkKGNvbnN0IE1lZGlhVGltZSYpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIApA
QCAtMTA5LDExICsxMDksMTMgQEAgdm9pZCBNZWRpYVNvdXJjZVByaXZhdGVHU3RyZWFtZXI6Om1h
cmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cyBzdGF0dXMpCiB7CiAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKICAgICBtX3BsYXllclByaXZhdGUubWFya0VuZE9mU3RyZWFtKHN0YXR1
cyk7CisgICAgbV9pc0VuZGVkID0gdHJ1ZTsKIH0KIAogdm9pZCBNZWRpYVNvdXJjZVByaXZhdGVH
U3RyZWFtZXI6OnVubWFya0VuZE9mU3RyZWFtKCkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIG1faXNFbmRlZCA9IGZhbHNlOwogfQogCiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBNZWRp
YVNvdXJjZVByaXZhdGVHU3RyZWFtZXI6OnJlYWR5U3RhdGUoKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJj
ZVByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvTWVkaWFTb3VyY2VQcml2YXRlR1N0cmVhbWVyLmgKaW5kZXggMjUyNGFhMGY5
YmY3NWNlY2RmNzgzNjIzN2QxNDI0N2EzYzI0NmVhZi4uMzRjZjcwYjcyM2Q3ZGFlODFjMGRkNzRj
MDUyZDI3Y2U2ZjRiZTUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNl
UHJpdmF0ZUdTdHJlYW1lci5oCkBAIC02MSw5ICs2MSwxMCBAQCBwdWJsaWM6CiAgICAgQWRkU3Rh
dHVzIGFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDb250ZW50VHlwZSYsIFJlZlB0cjxTb3VyY2VCdWZm
ZXJQcml2YXRlPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlU291cmNlQnVmZmVyKFNvdXJj
ZUJ1ZmZlclByaXZhdGUqKTsKIAotICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCkgb3ZlcnJpZGU7
CisgICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7CiAg
ICAgdm9pZCBtYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMpIG92ZXJyaWRlOwogICAg
IHZvaWQgdW5tYXJrRW5kT2ZTdHJlYW0oKSBvdmVycmlkZTsKKyAgICBib29sIGlzRW5kZWQoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzRW5kZWQ7IH0KIAogICAgIE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFJlYWR5
U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpIG92ZXJyaWRlOwpAQCAtOTQsNiArOTUsNyBA
QCBwcml2YXRlOgogICAgIEhhc2hTZXQ8U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lcio+IG1f
YWN0aXZlU291cmNlQnVmZmVyczsKICAgICBSZWY8TWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50PiBt
X21lZGlhU291cmNlOwogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lck1TRSYgbV9wbGF5
ZXJQcml2YXRlOworICAgIGJvb2wgbV9pc0VuZGVkIHsgZmFsc2UgfTsKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dlcjsKICAgICBjb25zdCB2
b2lkKiBtX2xvZ0lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmNw
cAppbmRleCA5YjRkMWY4MjEwMDFjYzU5YmY4NzA4YWNmNzgyNTZhMjkxYzU2ZjFjLi45NzlhODFk
M2I5MGNiNjYwYWU3N2JhYWIyOGRhMGVjOTZjYjM5MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlh
U291cmNlUHJpdmF0ZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtVGltZVJhbmdlcz4gTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6YnVmZmVyZWQoKQogICAgIHJl
dHVybiBtX2NsaWVudC0+YnVmZmVyZWQoKTsKIH0KIAotdm9pZCBNb2NrTWVkaWFTb3VyY2VQcml2
YXRlOjpkdXJhdGlvbkNoYW5nZWQoKQordm9pZCBNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpkdXJh
dGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikKIHsKICAgICBtX3BsYXllci51cGRhdGVEdXJh
dGlvbihkdXJhdGlvbigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmgKaW5k
ZXggN2E2OTNhZWQzNWNhNmM5YzkzNjkxMDJhYTU1MjRmZTMwZmFkNDQwMS4uZTNkOTgwN2M2YjE1
MjFmYzliMDRlNjRiMTY5ZjVlZWRkNDY0NTE5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQcml2YXRlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQ
cml2YXRlLmgKQEAgLTgwLDggKzgwLDkgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1lZGlhU291cmNl
UHJpdmF0ZSBPdmVycmlkZXMKICAgICBBZGRTdGF0dXMgYWRkU291cmNlQnVmZmVyKGNvbnN0IENv
bnRlbnRUeXBlJiwgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGU+Jikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCBkdXJhdGlvbkNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGR1cmF0aW9uQ2hhbmdl
ZChjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIG1hcmtFbmRPZlN0cmVhbShF
bmRPZlN0cmVhbVN0YXR1cykgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0VuZGVkKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gbV9pc0VuZGVkOyB9CiAgICAgdm9pZCB1bm1hcmtFbmRPZlN0cmVhbSgp
IG92ZXJyaWRlOwogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25z
dCBvdmVycmlkZTsKICAgICB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3Rh
dGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9t
ZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAppbmRl
eCAyZmM5MGQzNTRmNmI5NjdjNWM5NTAyN2IyMjNlNGEzNTc4MDBmMzBhLi5jNjExMDY1YzM4ZjZi
OTBkMmRhNDIxNzdiOTU0Mjc0ZmU4N2EyYTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZm
ZXJQcml2YXRlLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgTW9ja1NvdXJjZUJ1ZmZlclBy
aXZhdGU6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhKQogCiAgICAgd2hpbGUg
KG1faW5wdXRCdWZmZXIuc2l6ZSgpICYmIHJlc3VsdCA9PSBTb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50OjpBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2NlZWRlZCkgewogICAgICAgICBhdXRvIGJ1ZmZl
ciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobV9pbnB1dEJ1ZmZlci5kYXRhKCksIG1faW5wdXRCdWZm
ZXIuc2l6ZSgpKTsKLSAgICAgICAgc2l6ZV90IGJveExlbmd0aCA9IE1vY2tCb3g6OnBlZWtMZW5n
dGgoYnVmZmVyLnB0cigpKTsKKyAgICAgICAgdWludDY0X3QgYm94TGVuZ3RoID0gTW9ja0JveDo6
cGVla0xlbmd0aChidWZmZXIucHRyKCkpOwogICAgICAgICBpZiAoYm94TGVuZ3RoID4gYnVmZmVy
LT5ieXRlTGVuZ3RoKCkpCiAgICAgICAgICAgICBicmVhazsKIApAQCAtMTU5LDYgKzE1OSwxMCBA
QCB2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNo
YXI+JiYgZGF0YSkKICAgICAgICAgbV9pbnB1dEJ1ZmZlci5yZW1vdmUoMCwgYm94TGVuZ3RoKTsK
ICAgICB9CiAKKyAgICAvLyBSZXNvbHZlIHRoZSBjaGFuZ2VzIGluIFRyYWNrQnVmZmVycycgYnVm
ZmVyZWQgcmFuZ2VzCisgICAgLy8gaW50byB0aGUgU291cmNlQnVmZmVyJ3MgYnVmZmVyZWQgcmFu
Z2VzCisgICAgdXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKG1fbWVkaWFTb3VyY2UtPmlz
RW5kZWQoKSk7CisKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5zb3VyY2VC
dWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUocmVzdWx0KTsKIH0KQEAgLTE5MSw3ICsxOTUsNyBA
QCB2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25T
ZWdtZW50KGNvbnN0IE1vY2tJbml0aWFsaQogICAgICAgICB9CiAgICAgfQogCi0gICAgU291cmNl
QnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChzZWdtZW50KTsK
KyAgICBTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50
KFdURk1vdmUoc2VnbWVudCksIFtdKCkgeyB9KTsKIH0KIAogdm9pZCBNb2NrU291cmNlQnVmZmVy
UHJpdmF0ZTo6ZGlkUmVjZWl2ZVNhbXBsZShjb25zdCBNb2NrU2FtcGxlQm94JiBzYW1wbGVCb3gp
CkBAIC0yNDksNyArMjUzLDcgQEAgTWVkaWFUaW1lIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpt
aW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lRm9yVHJhY2tJRChjb24KICAgICByZXR1cm4g
bV9taW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lOwogfQogCi12b2lkIE1vY2tTb3VyY2VC
dWZmZXJQcml2YXRlOjpzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQoY29uc3QgQXRvbVN0
cmluZyYsIHNpemVfdCBtYXhRdWV1ZURlcHRoKQordm9pZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0
ZTo6c2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmLCB1aW50
NjRfdCBtYXhRdWV1ZURlcHRoKQogewogICAgIG1fbWF4UXVldWVEZXB0aCA9IG1heFF1ZXVlRGVw
dGg7CiB9CkBAIC0zMjIsMTYgKzMyNiw2IEBAIHZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6
OmVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmIHNhbXBsZSwgY29uc3QgQXRvCiAgICAg
bV9lbnF1ZXVlZFNhbXBsZXMuYXBwZW5kKHRvU3RyaW5nKHNhbXBsZS5nZXQoKSkpOwogfQogCi1i
b29sIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpoYXNWaWRlbygpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fY2xpZW50ICYmIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlSGFzVmlkZW8oKTsK
LX0KLQotYm9vbCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6aGFzQXVkaW8oKSBjb25zdAotewot
ICAgIHJldHVybiBtX2NsaWVudCAmJiBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1
ZGlvKCk7Ci19Ci0KICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIFdURkxvZ0NoYW5uZWwmIE1v
Y2tTb3VyY2VCdWZmZXJQcml2YXRlOjpsb2dDaGFubmVsKCkgY29uc3QKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZl
clByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGUuaAppbmRleCBiNmM1NDdkZDk1YzFmNmIwYmRkZDJlNDExYWYx
NDJiMzk4ZmRmZmU1Li44YjJhMTM4OTQ2YzI4ZjJmM2U3ZGViZmU3MzY1Y2NjN2JhZmJhM2YwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tT
b3VyY2VCdWZmZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9t
ZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oCkBAIC00Niw5ICs0Niw2IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgY2xlYXJNZWRpYVNvdXJjZSgpIHsgbV9tZWRpYVNvdXJjZSA9IG51
bGxwdHI7IH0KIAotICAgIGJvb2wgaGFzVmlkZW8oKSBjb25zdDsKLSAgICBib29sIGhhc0F1ZGlv
KCkgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTW9ja1NvdXJjZUJ1ZmZlclByaXZh
dGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSopOwogCkBAIC03NSw3ICs3Miw3IEBAIHByaXZhdGU6
CiAKICAgICBWZWN0b3I8U3RyaW5nPiBlbnF1ZXVlZFNhbXBsZXNGb3JUcmFja0lEKGNvbnN0IEF0
b21TdHJpbmcmKSBmaW5hbDsKICAgICBNZWRpYVRpbWUgbWluaW11bVVwY29taW5nUHJlc2VudGF0
aW9uVGltZUZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwotICAgIHZvaWQgc2V0
TWF4aW11bVF1ZXVlRGVwdGhGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmLCBzaXplX3QpIGZp
bmFsOworICAgIHZvaWQgc2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JUcmFja0lEKGNvbnN0IEF0b21T
dHJpbmcmLCB1aW50NjRfdCkgZmluYWw7CiAKICAgICB2b2lkIGRpZFJlY2VpdmVJbml0aWFsaXph
dGlvblNlZ21lbnQoY29uc3QgTW9ja0luaXRpYWxpemF0aW9uQm94Jik7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlU2FtcGxlKGNvbnN0IE1vY2tTYW1wbGVCb3gmKTsKQEAgLTk0LDcgKzkxLDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1faXNBY3RpdmUgeyBmYWxzZSB9OwogICAgIE1lZGlhVGltZSBtX21p
bmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWU7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9lbnF1
ZXVlZFNhbXBsZXM7Ci0gICAgT3B0aW9uYWw8c2l6ZV90PiBtX21heFF1ZXVlRGVwdGg7CisgICAg
T3B0aW9uYWw8dWludDY0X3Q+IG1fbWF4UXVldWVEZXB0aDsKICAgICBWZWN0b3I8Y2hhcj4gbV9p
bnB1dEJ1ZmZlcjsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcApp
bmRleCA5M2UyZjI3ZDgyZThmOTI0Zjc4NWM1MGE2NTA1MDVhZGI2YTM2NzI2Li5lYWU5M2U3M2Fi
MGM1NzYzODBkNDU4Yzc5NDQ5MWEwNjYxMGI5N2I2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNwcApAQCAtNjAs
NyArNjAsNyBAQCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uJiBSZW1vdGVBdWRpb1Ry
YWNrUHJveHk6OmNvbmZpZ3VyYXRpb24oKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxU
cmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uOwogCi0gICAgY29u
ZmlndXJhdGlvbi0+aWRlbnRpZmllciA9IG1fdHJhY2tQcml2YXRlLT5pZCgpOworICAgIGNvbmZp
Z3VyYXRpb24tPnRyYWNrSWQgPSBtX3RyYWNrUHJpdmF0ZS0+aWQoKTsKICAgICBjb25maWd1cmF0
aW9uLT5sYWJlbCA9IG1fdHJhY2tQcml2YXRlLT5sYWJlbCgpOwogICAgIGNvbmZpZ3VyYXRpb24t
Pmxhbmd1YWdlID0gbV90cmFja1ByaXZhdGUtPmxhbmd1YWdlKCk7CiAgICAgY29uZmlndXJhdGlv
bi0+dHJhY2tJbmRleCA9IG1fdHJhY2tQcml2YXRlLT50cmFja0luZGV4KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5jcHAKaW5kZXggYzNiMDczNGE0ZWY5OGQyYTdlNzM5MGVhOTgwM2UzZTAzNmI3ZWM1Mi4uNDJl
ZTc5YmIwNmU0NzUyNWRhYjM1NDI2ZDNhZGJhMTU4YTYzYTFjMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNw
cApAQCAtMTM0LDEwICsxMzQsMTQgQEAgdm9pZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojpsb2Fk
KFVSTCYmIHVybCwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYKIH0KIAogI2lm
IEVOQUJMRShNRURJQV9TT1VSQ0UpCi12b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmxvYWRN
ZWRpYVNvdXJjZShVUkwmJiB1cmwsIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiBjb250ZW50
VHlwZSwgUmVtb3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyIG1lZGlhU291cmNlSWRlbnRpZmllcikK
K3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bG9hZE1lZGlhU291cmNlKFVSTCYmIHVybCwg
Y29uc3QgV2ViQ29yZTo6Q29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBSZW1vdGVNZWRpYVNvdXJj
ZUlkZW50aWZpZXIgbWVkaWFTb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBtX21lZGlhU291cmNlUHJveHkgPSBhZG9wdFJlZigqbmV3IFJlbW90ZU1lZGlhU291
cmNlUHJveHkobV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MoKSwgbWVkaWFTb3Vy
Y2VJZGVudGlmaWVyLCAqdGhpcykpOwogICAgIG1fcGxheWVyLT5sb2FkKHVybCwgY29udGVudFR5
cGUsIG1fbWVkaWFTb3VyY2VQcm94eS5nZXQoKSk7CisKKyAgICBSZW1vdGVNZWRpYVBsYXllckNv
bmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAgICBnZXRDb25maWd1cmF0aW9uKGNvbmZpZ3Vy
YXRpb24pOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29uZmlndXJhdGlvbikpOwog
fQogI2VuZGlmCiAKQEAgLTc1OSw3ICs3NjMsOCBAQCB2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJv
eHk6OnVwZGF0ZUNhY2hlZFN0YXRlKCkKIAogICAgIGlmIChtX2J1ZmZlcmVkQ2hhbmdlZCkgewog
ICAgICAgICBtX2J1ZmZlcmVkQ2hhbmdlZCA9IGZhbHNlOwotICAgICAgICBtX2NhY2hlZFN0YXRl
LmJ1ZmZlcmVkUmFuZ2VzID0gKm1fcGxheWVyLT5idWZmZXJlZCgpOworICAgICAgICBpZiAobV9l
bmdpbmVJZGVudGlmaWVyICE9IE1lZGlhUGxheWVyRW51bXM6Ok1lZGlhRW5naW5lSWRlbnRpZmll
cjo6QVZGb3VuZGF0aW9uTVNFKQorICAgICAgICAgICAgbV9jYWNoZWRTdGF0ZS5idWZmZXJlZFJh
bmdlcyA9ICptX3BsYXllci0+YnVmZmVyZWQoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oCmlu
ZGV4IGI4MjQ3NzEzYWRhZjFjNDUzZWE0YzY1ODFkYWQ0M2JiMWUwYzIwNjYuLmFlNmFkOGI0NjBi
OWY2YmRiM2IwMDQwZjc4MGJmMTk1ZjQ0OWJjZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkuaApAQCAtMTE1LDcg
KzExNSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbG9hZChVUkwmJiwgT3B0aW9uYWw8U2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlPiYmLCBjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYsIGNvbnN0
IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1
cmF0aW9uJiYpPiYmKTsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIHZvaWQgbG9hZE1l
ZGlhU291cmNlKFVSTCYmLCBjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYsIFJlbW90ZU1lZGlh
U291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBsb2FkTWVkaWFTb3VyY2UoVVJMJiYsIGNvbnN0
IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiwgUmVtb3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4mJik7
CiAjZW5kaWYKICAgICB2b2lkIGNhbmNlbExvYWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5t
ZXNzYWdlcy5pbgppbmRleCAwOGVhMTVjYzY2YjJlYTlkMDcwZGE2YmI3MWY4OGI3NDUxY2YwMTU4
Li4yY2RlMDgwNDlhZGVkYjRjNjE2OTU2OTRiMGI4OWI1ZWYwZmExMDM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjgsNyArMjgsNyBAQCBtZXNzYWdlcyAtPiBSZW1v
dGVNZWRpYVBsYXllclByb3h5IE5vdFJlZkNvdW50ZWQgewogCiAgICAgTG9hZChVUkwgdXJsLCBP
cHRpb25hbDxXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4gc2FuZGJveEV4dGVuc2lv
biwgV2ViQ29yZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUsIFN0cmluZyBrZXlTeXN0ZW0pIC0+
IChzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24gcGxheWVyQ29u
ZmlndXJhdGlvbikgQXN5bmMKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIExvYWRNZWRp
YVNvdXJjZShVUkwgdXJsLCBXZWJDb3JlOjpDb250ZW50VHlwZSBjb250ZW50VHlwZSwgV2ViS2l0
OjpSZW1vdGVNZWRpYVNvdXJjZUlkZW50aWZpZXIgbWVkaWFTb3VyY2VJZGVudGlmaWVyKSBTeW5j
aHJvbm91cworICAgIExvYWRNZWRpYVNvdXJjZShVUkwgdXJsLCBXZWJDb3JlOjpDb250ZW50VHlw
ZSBjb250ZW50VHlwZSwgV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZUlkZW50aWZpZXIgbWVkaWFT
b3VyY2VJZGVudGlmaWVyKSAtPiAoc3RydWN0IFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJDb25m
aWd1cmF0aW9uIHBsYXllckNvbmZpZ3VyYXRpb24pIEFzeW5jCiAjZW5kaWYKICAgICBDYW5jZWxM
b2FkKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhU291cmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhU291cmNlUHJveHkuY3BwCmluZGV4IDQ5OWJkNjFjMmY3ODIyMjNmYTM4ZmM5N2Ix
ODJmYTZkMmI5MzgxZGUuLjJlNDgyZGViNjVkZjM2NGRhZmM5NDdjZWUyYjc1NDVkZTMzZThiZmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNv
dXJjZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFTb3VyY2VQcm94eS5jcHAKQEAgLTYxLDEzICs2MSwxMiBAQCB2b2lkIFJlbW90ZU1lZGlh
U291cmNlUHJveHk6OnNldFByaXZhdGVBbmRPcGVuKFJlZjxNZWRpYVNvdXJjZVByaXZhdGU+JiYg
bWVkaWFTbwogCiBNZWRpYVRpbWUgUmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6ZHVyYXRpb24oKSBj
b25zdAogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIHsgfTsKKyAgICByZXR1
cm4gbV9kdXJhdGlvbjsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4g
UmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6YnVmZmVyZWQoKSBjb25zdAogewotICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIG1ha2VVbmlx
dWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCkBAIC0xMTIsNiArMTExLDIyIEBAIHZvaWQg
UmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6YWRkU291cmNlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkNv
bnRlbnRUeXBlJiBjb250ZW50CiAgICAgY2FsbGJhY2soc3RhdHVzLCByZW1vdGVTb3VyY2VJZGVu
dGlmaWVyKTsKIH0KIAordm9pZCBSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpkdXJhdGlvbkNoYW5n
ZWQoY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbikKK3sKKyAgICBpZiAobV9kdXJhdGlvbiA9PSBk
dXJhdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kdXJhdGlvbiA9IGR1cmF0aW9uOwor
ICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0ZS0+ZHVyYXRpb25DaGFuZ2VkKGR1
cmF0aW9uKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpzZXRSZWFkeVN0YXRl
KFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKK3sKKyAg
ICBpZiAobV9wcml2YXRlKQorICAgICAgICBtX3ByaXZhdGUtPnNldFJlYWR5U3RhdGUocmVhZHlT
dGF0ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKEdQ
VV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgKaW5kZXggNTk2
OGM3YmJkMTg5Y2Q0NzllZjRhZWFiNGQ0NDk5NTMzZmQzZDY1Yi4uOTU5MzQ0OWQzYjVlNWNmZWQ5
NmI1MTVlODE3ZTAzZGEwY2NhMDhmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oCkBAIC03NiwxNyArNzYsMjEg
QEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAg
Ly8gdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXIm
KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQ
Qzo6RGVjb2RlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
JikgZmluYWw7CiAKLSAgICB1c2luZyBBZGRTb3VyY2VCdWZmZXJDYWxsYmFjayA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpBZGRTdGF0dXMsIE9w
dGlvbmFsPFJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXI+IHJlbW90ZVNvdXJjZUJ1ZmZlcklk
ZW50aWZpZXIpPjsKKyAgICB1c2luZyBBZGRTb3VyY2VCdWZmZXJDYWxsYmFjayA9IENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlOjpBZGRTdGF0dXMsIE9w
dGlvbmFsPFJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXI+KT47CiAgICAgdm9pZCBhZGRTb3Vy
Y2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6Q29udGVudFR5cGUmLCBBZGRTb3VyY2VCdWZmZXJDYWxs
YmFjayYmKTsKKyAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmKTsKKyAg
ICB2b2lkIHNldFJlYWR5U3RhdGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0
ZSk7CiAKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3M7CiAgICAgUmVtb3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyIG1faWRlbnRpZmllcjsKICAg
ICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlPiBtX3ByaXZhdGU7CiAgICAgV2Vh
a1B0cjxSZW1vdGVNZWRpYVBsYXllclByb3h5PiBtX3JlbW90ZU1lZGlhUGxheWVyUHJveHk7CiAK
KyAgICBNZWRpYVRpbWUgbV9kdXJhdGlvbjsKKwogICAgIFZlY3RvcjxSZWZQdHI8UmVtb3RlU291
cmNlQnVmZmVyUHJveHk+PiBtX3NvdXJjZUJ1ZmZlcnM7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5tZXNzYWdl
cy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IGNhNmI3NTJkNzcwNjBkZWNjYjlkYzNiYzc5NjQ4OWY0ZWM5
MjBkYWQuLmQ5OTkxMjY4OGViYjBkNTlhZGNkYjUzN2NlODM1ZWZlNzk2ZTlmNjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVNvdXJjZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNyw2ICsyNyw4IEBACiAKIG1lc3NhZ2Vz
IC0+IFJlbW90ZU1lZGlhU291cmNlUHJveHkgTm90UmVmQ291bnRlZCB7CiAgICAgQWRkU291cmNl
QnVmZmVyKFdlYkNvcmU6OkNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlKSAtPiAoZW51bTp1aW50OF90
IFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZTo6QWRkU3RhdHVzIHN0YXR1cywgT3B0aW9uYWw8
V2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyPiByZW1vdGVTb3VyY2VCdWZmZXJJ
ZGVudGlmaWVyKSBTeW5jaHJvbm91cworICAgIER1cmF0aW9uQ2hhbmdlZChNZWRpYVRpbWUgZHVy
YXRpb24pCisgICAgU2V0UmVhZHlTdGF0ZShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpSZWFk
eVN0YXRlIHJlYWR5U3RhdGUpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHAKaW5kZXgg
MjY1YjczYjZhNGRmMzUzZjQ1M2RiNzIzY2MzMjk4YmM3ODViMmM3NC4uODQ3MzNmYzBhYjQ5YjYz
NTU3NzE5MGE4YmFlOTJlZGNkYjg2MWZkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuY3BwCkBAIC0zNCw3
ICszNCw5IEBACiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5oIgogI2luY2x1ZGUg
IlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJTb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhRGVzY3Jp
cHRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8
V2ViQ29yZS9QbGF0Zm9ybVRpbWVSYW5nZXMuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAg
LTU0LDE0ICs1NiwxNiBAQCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6UmVtb3RlU291cmNlQnVm
ZmVyUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubgogewogICAgIG1fY29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRNZXNzYWdlUmVjZWl2ZXIo
TWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCks
IG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CiAgICAgbV9zb3VyY2VCdWZmZXJQcml2
YXRlLT5zZXRDbGllbnQodGhpcyk7CisgICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlLT5zZXRJc0F0
dGFjaGVkKHRydWUpOwogfQogCiBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6flJlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5KCkKIHsKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPnNldElzQXR0YWNo
ZWQoZmFsc2UpOwogICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlUmVjZWl2ZXJN
YXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclBy
b3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpKTsKIH0K
IAotdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJl
Y2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50JiBz
ZWdtZW50KQordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0
ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYg
c2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQog
ewogICAgIGlmICghbV9yZW1vdGVNZWRpYVBsYXllclByb3h5KQogICAgICAgICByZXR1cm47CkBA
IC03MSwxOSArNzUsMzQgQEAgdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVm
ZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQKICAgICBmb3IgKGF1dG8m
IGF1ZGlvVHJhY2tJbmZvIDogc2VnbWVudC5hdWRpb1RyYWNrcykgewogICAgICAgICBhdXRvIGlk
ZW50aWZpZXIgPSBtX3JlbW90ZU1lZGlhUGxheWVyUHJveHktPmFkZFJlbW90ZUF1ZGlvVHJhY2tQ
cm94eSgqYXVkaW9UcmFja0luZm8udHJhY2spOwogICAgICAgICBzZWdtZW50SW5mby5hdWRpb1Ry
YWNrcy5hcHBlbmQoeyBNZWRpYURlc2NyaXB0aW9uSW5mbygqYXVkaW9UcmFja0luZm8uZGVzY3Jp
cHRpb24pLCBpZGVudGlmaWVyIH0pOworCisgICAgICAgIEFTU0VSVCghbV90cmFja0lkcy5jb250
YWlucyhpZGVudGlmaWVyKSk7CisgICAgICAgIEFTU0VSVCghbV9tZWRpYURlc2NyaXB0aW9ucy5j
b250YWlucyhpZGVudGlmaWVyKSk7CisgICAgICAgIG1fdHJhY2tJZHMuYWRkKGlkZW50aWZpZXIs
IGF1ZGlvVHJhY2tJbmZvLnRyYWNrLT5pZCgpKTsKKyAgICAgICAgbV9tZWRpYURlc2NyaXB0aW9u
cy5hZGQoaWRlbnRpZmllciwgKmF1ZGlvVHJhY2tJbmZvLmRlc2NyaXB0aW9uKTsKICAgICB9CiAK
ICAgICBmb3IgKGF1dG8mIHZpZGVvVHJhY2tJbmZvIDogc2VnbWVudC52aWRlb1RyYWNrcykgewog
ICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX3JlbW90ZU1lZGlhUGxheWVyUHJveHktPmFkZFJl
bW90ZVZpZGVvVHJhY2tQcm94eSgqdmlkZW9UcmFja0luZm8udHJhY2spOwogICAgICAgICBzZWdt
ZW50SW5mby52aWRlb1RyYWNrcy5hcHBlbmQoeyBNZWRpYURlc2NyaXB0aW9uSW5mbygqdmlkZW9U
cmFja0luZm8uZGVzY3JpcHRpb24pLCBpZGVudGlmaWVyIH0pOworCisgICAgICAgIEFTU0VSVCgh
bV90cmFja0lkcy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgICAgIEFTU0VSVCghbV9tZWRp
YURlc2NyaXB0aW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgICAgIG1fdHJhY2tJZHMu
YWRkKGlkZW50aWZpZXIsIHZpZGVvVHJhY2tJbmZvLnRyYWNrLT5pZCgpKTsKKyAgICAgICAgbV9t
ZWRpYURlc2NyaXB0aW9ucy5hZGQoaWRlbnRpZmllciwgKnZpZGVvVHJhY2tJbmZvLmRlc2NyaXB0
aW9uKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIHRleHRUcmFja0luZm8gOiBzZWdtZW50LnRl
eHRUcmFja3MpIHsKICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gbV9yZW1vdGVNZWRpYVBsYXll
clByb3h5LT5hZGRSZW1vdGVUZXh0VHJhY2tQcm94eSgqdGV4dFRyYWNrSW5mby50cmFjayk7CiAg
ICAgICAgIHNlZ21lbnRJbmZvLnRleHRUcmFja3MuYXBwZW5kKHsgTWVkaWFEZXNjcmlwdGlvbklu
Zm8oKnRleHRUcmFja0luZm8uZGVzY3JpcHRpb24pLCBpZGVudGlmaWVyIH0pOworCisgICAgICAg
IEFTU0VSVCghbV90cmFja0lkcy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgICAgIEFTU0VS
VCghbV9tZWRpYURlc2NyaXB0aW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgICAgIG1f
dHJhY2tJZHMuYWRkKGlkZW50aWZpZXIsIHRleHRUcmFja0luZm8udHJhY2stPmlkKCkpOworICAg
ICAgICBtX21lZGlhRGVzY3JpcHRpb25zLmFkZChpZGVudGlmaWVyLCAqdGV4dFRyYWNrSW5mby5k
ZXNjcmlwdGlvbik7CiAgICAgfQogCi0gICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5l
Y3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VC
dWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChzZWdtZW50SW5mbyks
IG1faWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24o
KS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6
OlNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KHNlZ21l
bnRJbmZvKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1faWRlbnRpZmllcik7CiB9CiAK
IHZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRF
cnJvcihib29sKQpAQCAtOTEsMTQgKzExMCwxNCBAQCB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclBy
b3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9vbCkKICAgICBub3RJbXBsZW1l
bnRlZCgpOwogfQogCi12b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQ
cml2YXRlRHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpCit2b2lkIFJlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1l
ZGlhVGltZSYgZHVyYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZl
clByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQoZHVyYXRp
b24pLCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpz
b3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoZG91YmxlKQordm9pZCBSZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxlKGRvdWJsZSBz
YW1wbGVEdXJhdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fY29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxlKHNhbXBsZUR1cmF0
aW9uKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZERyb3BTYW1wbGUoKQpAQCAtMTExLDI2ICsxMzAsMjQgQEAg
dm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZVN0cmVhbUVu
ZGVkV2l0aERlY29kZUVycm9yKCkKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi1ib29sIFJl
bW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlSGFzQXVkaW8oKSBjb25z
dAordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVu
ZENvbXBsZXRlKFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCBhcHBlbmRS
ZXN1bHQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CisgICAg
bV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUo
YXBwZW5kUmVzdWx0KSwgbV9pZGVudGlmaWVyKTsKIH0KIAotYm9vbCBSZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKCkgY29uc3QKK3ZvaWQgUmVtb3Rl
U291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5n
RXJyb3IoaW50IGVycm9yQ29kZSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVy
biBmYWxzZTsKIH0KIAotdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVy
UHJpdmF0ZUFwcGVuZENvbXBsZXRlKFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJl
c3VsdCBhcHBlbmRSZXN1bHQpCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VC
dWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCBmbGFnKQogewotICAgIG1fY29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKGFwcGVu
ZFJlc3VsdCksIG1faWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3Vy
Y2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoZmxhZyksIG1faWRlbnRpZmllcik7
CiB9CiAKLXZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVE
aWRSZWNlaXZlUmVuZGVyaW5nRXJyb3IoaW50IGVycm9yQ29kZSkKK3ZvaWQgUmVtb3RlU291cmNl
QnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQoY29u
c3QgUGxhdGZvcm1UaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3Nh
Z2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVy
ZWRSYW5nZXNDaGFuZ2VkKHRpbWVSYW5nZXMpLCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJl
bW90ZVNvdXJjZUJ1ZmZlclByb3h5OjphcHBlbmQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBk
YXRhKQpAQCAtMTM4LDYgKzE1NSw0MyBAQCB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojph
cHBlbmQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogICAgIG1fc291cmNlQnVmZmVy
UHJpdmF0ZS0+YXBwZW5kKGRhdGEudmVjdG9yKCkpOwogfQogCit2b2lkIFJlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5OjpzZXRBY3RpdmUoYm9vbCBhY3RpdmUpCit7CisgICAgbV9zb3VyY2VCdWZmZXJQ
cml2YXRlLT5zZXRBY3RpdmUoYWN0aXZlKTsKK30KKwordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eTo6c2V0UmVhZHlTdGF0ZShXZWJDb3JlOjpNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0
ZSkKK3sKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPnNldFJlYWR5U3RhdGUoc3RhdGUpOwor
fQorCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojp1cGRhdGVCdWZmZXJlZEZyb21UcmFj
a0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVkKQoreworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0
ZS0+dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKHNvdXJjZUlzRW5kZWQpOworfQorCit2
b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpldmljdENvZGVkRnJhbWVzKHVpbnQ2NF90IG5l
d0RhdGFTaXplLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBt
YXhpbXVtQnVmZmVyU2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50VGltZSwgY29uc3QgTWVk
aWFUaW1lJiBkdXJhdGlvbiwgYm9vbCBpc0VuZGVkKQoreworICAgIG1fc291cmNlQnVmZmVyUHJp
dmF0ZS0+ZXZpY3RDb2RlZEZyYW1lcyhuZXdEYXRhU2l6ZSwgcGVuZGluZ0FwcGVuZERhdGFDYXBh
Y2l0eSwgbWF4aW11bUJ1ZmZlclNpemUsIGN1cnJlbnRUaW1lLCBkdXJhdGlvbiwgaXNFbmRlZCk7
Cit9CisKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OmFkZFRyYWNrQnVmZmVyKFRyYWNr
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgdHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllcikKK3sK
KyAgICBBU1NFUlQobV90cmFja0lkcy5jb250YWlucyh0cmFja1ByaXZhdGVSZW1vdGVJZGVudGlm
aWVyKSk7CisgICAgQVNTRVJUKG1fbWVkaWFEZXNjcmlwdGlvbnMuY29udGFpbnModHJhY2tQcml2
YXRlUmVtb3RlSWRlbnRpZmllcikpOworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+YWRkVHJh
Y2tCdWZmZXIobV90cmFja0lkcy5nZXQodHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciksIG1f
bWVkaWFEZXNjcmlwdGlvbnMuZ2V0KHRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpKTsKK30K
Kwordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6cmVlbnF1ZXVlTWVkaWFJZk5lZWRlZChj
b25zdCBNZWRpYVRpbWUmIGN1cnJlbnRNZWRpYVRpbWUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmRE
YXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplKQoreworICAgIG1fc291cmNl
QnVmZmVyUHJpdmF0ZS0+cmVlbnF1ZXVlTWVkaWFJZk5lZWRlZChjdXJyZW50TWVkaWFUaW1lLCBw
ZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCBtYXhpbXVtQnVmZmVyU2l6ZSk7Cit9CisKK3ZvaWQg
UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnRyeVNpZ25hbEFsbFNhbXBsZXNJblRyYWNrRW5xdWV1
ZWQoKQoreworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+dHJ5U2lnbmFsQWxsU2FtcGxlc0lu
VHJhY2tFbnF1ZXVlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8v
IEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5o
IGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
LmgKaW5kZXggYmM5Zjk5ZGZiN2EyMzBiNTg5YWUzNDJlNWNkMDQ3NzA3NWYwMjEzOC4uNmVjZDhi
Y2Y2OGVlYjdmY2FiMTE1YzY5Y2ExYzE0ZGZkYzUyYjUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmgKQEAg
LTMwLDYgKzMwLDggQEAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlU291cmNlQnVmZmVy
SWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIK
KyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhRGVzY3JpcHRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NvdXJjZUJ1ZmZlclByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC00MywxMCArNDUsMTIgQEAg
Y2xhc3MgRGF0YVJlZmVyZW5jZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgTWVkaWFT
YW1wbGU7CitjbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXM7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCitzdHJ1Y3QgTWVkaWFEZXNjcmlwdGlvbkluZm87CiBjbGFzcyBSZW1vdGVNZWRpYVBsYXll
clByb3h5OwogCiBjbGFzcyBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eSBmaW5hbApAQCAtNTgsMTYg
KzYyLDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
PiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90ZVNvdXJjZUJ1ZmZlcklk
ZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlPiYmLCBSZW1vdGVNZWRp
YVBsYXllclByb3h5Jik7CiAgICAgdmlydHVhbCB+UmVtb3RlU291cmNlQnVmZmVyUHJveHkoKTsK
IAotICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNl
Z21lbnQoY29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50JikgZmluYWw7CisgICAgdm9pZCBzb3Vy
Y2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0aWFsaXph
dGlvblNlZ21lbnQmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKKyAgICB2
b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVTdHJlYW1FbmRlZFdpdGhEZWNvZGVFcnJvcigpIGZpbmFs
OwogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZEVycm9yKGJvb2wgZGVjb2RlRXJy
b3IpIGZpbmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCkgZmluYWw7CiAg
ICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGlt
ZSYpIGZpbmFsOwogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxlKGRv
dWJsZSBzYW1wbGVEdXJhdGlvbikgZmluYWw7CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRl
RGlkRHJvcFNhbXBsZSgpIGZpbmFsOwotICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZVN0cmVh
bUVuZGVkV2l0aERlY29kZUVycm9yKCkgZmluYWw7Ci0gICAgYm9vbCBzb3VyY2VCdWZmZXJQcml2
YXRlSGFzQXVkaW8oKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHNvdXJjZUJ1ZmZlclByaXZhdGVI
YXNWaWRlbygpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZl
cmVkRGlydHlDaGFuZ2VkKGJvb2wpIGZpbmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0
ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXMm
KSBmaW5hbDsKIAotICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCkgZmluYWw7CiAg
ICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVJlbmRlcmluZ0Vycm9yKGludCBl
cnJvckNvZGUpIGZpbmFsOwogCiBwcml2YXRlOgpAQCAtNzcsMTIgKzgxLDIyIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29k
ZXImKSBmaW5hbDsKICAgICAvLyB2b2lkIGRpZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5l
Y3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZp
bmFsOwogCisgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCk7CiAgICAgdm9pZCBhcHBlbmQoY29uc3Qg
SVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBzZXRSZWFkeVN0YXRlKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyOjpSZWFkeVN0YXRlKTsKKyAgICB2b2lkIHVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNr
QnVmZmVycyhib29sIHNvdXJjZUlzRW5kZWQpOworICAgIHZvaWQgZXZpY3RDb2RlZEZyYW1lcyh1
aW50NjRfdCBuZXdEYXRhU2l6ZSwgdWludDY0X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwg
dWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUsIGNvbnN0IE1lZGlhVGltZSYgY3VycmVudFRpbWUs
IGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24sIGJvb2wgaXNFbmRlZCk7CisgICAgdm9pZCBhZGRU
cmFja0J1ZmZlcihUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsKKyAgICB2b2lkIHJlZW5x
dWV1ZU1lZGlhSWZOZWVkZWQoY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50TWVkaWFUaW1lLCB1aW50
NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6
ZSk7CisgICAgdm9pZCB0cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKCk7CiAKICAg
ICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAg
ICAgUmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllciBtX2lkZW50aWZpZXI7CiAgICAgUmVmPFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU+IG1fc291cmNlQnVmZmVyUHJpdmF0ZTsKICAgICBX
ZWFrUHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+IG1fcmVtb3RlTWVkaWFQbGF5ZXJQcm94eTsK
KworICAgIEhhc2hNYXA8VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciwgQXRvbVN0cmluZz4g
bV90cmFja0lkczsKKyAgICBIYXNoTWFwPFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIsIFJl
ZjxXZWJDb3JlOjpNZWRpYURlc2NyaXB0aW9uPj4gbV9tZWRpYURlc2NyaXB0aW9uczsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dl
YktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmlu
CmluZGV4IGEwOGZmMDFkYTMwZDA2N2I5ZTQxZmI1YTExM2U3YmE0M2ZlMGUwMTcuLmY0MWZkZTRl
NzlmYTcwOWMyMzhkYzI3NzQ2ZDkwODRmZjgwMTRhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTI2LDcgKzI2LDE0IEBACiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNT
KSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCiBtZXNzYWdlcyAtPiBSZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBTZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAg
QXBwZW5kKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQorICAgIFNldFJlYWR5U3RhdGUoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3RhdGUpCisgICAgVXBkYXRlQnVmZmVyZWRGcm9t
VHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCkKKyAgICBFdmljdENvZGVkRnJhbWVzKHVp
bnQ2NF90IG5ld0RhdGFTaXplLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1
aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSwgTWVkaWFUaW1lIGN1cnJlbnRUaW1lLCBNZWRpYVRp
bWUgZHVyYXRpb24sIGJvb2wgaXNFbmRlZCkKKyAgICBBZGRUcmFja0J1ZmZlcihXZWJLaXQ6OlRy
YWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgdHJhY2tJZCkKKyAgICBSZWVucXVldWVNZWRpYUlm
TmVlZGVkKE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5k
RGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSkKKyAgICBUcnlTaWduYWxB
bGxTYW1wbGVzSW5UcmFja0VucXVldWVkKCkKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcAppbmRl
eCA2NzQ0OGU5YTc0OGYxOGFkYTQ1MjU5MDliYTJjZDMxNDBiMjI1MWVkLi4xMzIxNWE2NzM5N2Mw
Y2NmODg3NGZiNGFhZjEwMDgzZDMwYjEyMWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKQEAgLTY0LDcgKzY0
LDcgQEAgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24mIFJlbW90ZVRleHRUcmFj
a1Byb3h5Ojpjb25maWd1cmF0aW9uKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb247CiAKLSAgICBj
b25maWd1cmF0aW9uLT5pZGVudGlmaWVyID0gbV90cmFja1ByaXZhdGUtPmlkKCk7CisgICAgY29u
ZmlndXJhdGlvbi0+dHJhY2tJZCA9IG1fdHJhY2tQcml2YXRlLT5pZCgpOwogICAgIGNvbmZpZ3Vy
YXRpb24tPmxhYmVsID0gbV90cmFja1ByaXZhdGUtPmxhYmVsKCk7CiAgICAgY29uZmlndXJhdGlv
bi0+bGFuZ3VhZ2UgPSBtX3RyYWNrUHJpdmF0ZS0+bGFuZ3VhZ2UoKTsKICAgICBjb25maWd1cmF0
aW9uLT50cmFja0luZGV4ID0gbV90cmFja1ByaXZhdGUtPnRyYWNrSW5kZXgoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb1RyYWNrUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94
eS5jcHAKaW5kZXggMzUwZjhlYTczMDdiZDIzN2FhODNmNmNjOTQ1YjU2MTBkZjZmMWM3MS4uYjky
YTg0ZTNhOWI2OGFjNmM0ZjJhZjM0MjZhZWQ3YTc5NDEyZGFjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5jcHAK
QEAgLTYwLDcgKzYwLDcgQEAgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYgUmVtb3Rl
VmlkZW9UcmFja1Byb3h5Ojpjb25maWd1cmF0aW9uKCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbjsKIAot
ICAgIGNvbmZpZ3VyYXRpb24tPmlkZW50aWZpZXIgPSBtX3RyYWNrUHJpdmF0ZS0+aWQoKTsKKyAg
ICBjb25maWd1cmF0aW9uLT50cmFja0lkID0gbV90cmFja1ByaXZhdGUtPmlkKCk7CiAgICAgY29u
ZmlndXJhdGlvbi0+bGFiZWwgPSBtX3RyYWNrUHJpdmF0ZS0+bGFiZWwoKTsKICAgICBjb25maWd1
cmF0aW9uLT5sYW5ndWFnZSA9IG1fdHJhY2tQcml2YXRlLT5sYW5ndWFnZSgpOwogICAgIGNvbmZp
Z3VyYXRpb24tPnRyYWNrSW5kZXggPSBtX3RyYWNrUHJpdmF0ZS0+dHJhY2tJbmRleCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RleHRUcmFja1ByaXZhdGVS
ZW1vdGVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaAppbmRleCBjMTM5Y2ZjMTRiNDcxZmIy
NThkYmJlODE4MmIzZDVjNjIxNjJiNTkyLi42NTYwNWIwMWExMjg2YzMxMjk3ZWJjNjBjZTBmYzg1
MDViNTIyZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaApAQCAt
MzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVjdCBUZXh0VHJhY2tQcml2
YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7Ci0gICAgQXRvbVN0cmluZyBpZGVudGlmaWVyOworICAg
IEF0b21TdHJpbmcgdHJhY2tJZDsKICAgICBBdG9tU3RyaW5nIGxhYmVsOwogICAgIEF0b21TdHJp
bmcgbGFuZ3VhZ2U7CiAgICAgQXRvbVN0cmluZyBpbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hU
eXBlOwpAQCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3QgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZp
Z3VyYXRpb24gewogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiAgICAgdm9pZCBlbmNvZGUo
RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICB7Ci0gICAgICAgIGVuY29kZXIgPDwgaWRlbnRp
ZmllcjsKKyAgICAgICAgZW5jb2RlciA8PCB0cmFja0lkOwogICAgICAgICBlbmNvZGVyIDw8IGxh
YmVsOwogICAgICAgICBlbmNvZGVyIDw8IGxhbmd1YWdlOwogICAgICAgICBlbmNvZGVyIDw8IGlu
QmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGU7CkBAIC03NSw5ICs3NSw5IEBAIHN0cnVjdCBU
ZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7CiAgICAgdGVtcGxhdGUgPGNsYXNz
IERlY29kZXI+CiAgICAgc3RhdGljIE9wdGlvbmFsPFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25m
aWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlv
bmFsPEF0b21TdHJpbmc+IGlkZW50aWZpZXI7Ci0gICAgICAgIGRlY29kZXIgPj4gaWRlbnRpZmll
cjsKLSAgICAgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICBPcHRpb25hbDxBdG9tU3RyaW5n
PiB0cmFja0lkOworICAgICAgICBkZWNvZGVyID4+IHRyYWNrSWQ7CisgICAgICAgIGlmICghdHJh
Y2tJZCkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9u
YWw8QXRvbVN0cmluZz4gbGFiZWw7CkBAIC0xNTEsNyArMTUxLDcgQEAgc3RydWN0IFRleHRUcmFj
a1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIHsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHt7Ci0gICAgICAgICAgICBXVEZNb3ZlKCppZGVudGlm
aWVyKSwKKyAgICAgICAgICAgIFdURk1vdmUoKnRyYWNrSWQpLAogICAgICAgICAgICAgV1RGTW92
ZSgqbGFiZWwpLAogICAgICAgICAgICAgV1RGTW92ZSgqbGFuZ3VhZ2UpLAogICAgICAgICAgICAg
V1RGTW92ZSgqaW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZSksCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJh
dGlvbi5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RyYWNrUHJpdmF0ZVJlbW90
ZUNvbmZpZ3VyYXRpb24uaAppbmRleCA0NDQyMmIzMDE0ZjIwMjIxNmJlZDZhNTdhM2Y4ZWRkNzk0
OGU5MjQ2Li5hOGYwNWQxOGZkOTk4OGViYjk5Yzc2NzNiNjg3YTY3MGQ5MmUwMTQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVtb3RlQ29u
ZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9UcmFja1By
aXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBzdHJ1Y3QgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7Ci0gICAg
QXRvbVN0cmluZyBpZGVudGlmaWVyOworICAgIEF0b21TdHJpbmcgdHJhY2tJZDsKICAgICBBdG9t
U3RyaW5nIGxhYmVsOwogICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2U7CiAgICAgTWVkaWFUaW1lIHN0
YXJ0VGltZVZhcmlhbmNlIHsgTWVkaWFUaW1lOjp6ZXJvVGltZSgpIH07CkBAIC00OSw3ICs0OSw3
IEBAIHN0cnVjdCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIHsKICAgICB0ZW1wbGF0
ZTxjbGFzcyBFbmNvZGVyPgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiAgICAgewotICAgICAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7CisgICAgICAgIGVuY29kZXIg
PDwgdHJhY2tJZDsKICAgICAgICAgZW5jb2RlciA8PCBsYWJlbDsKICAgICAgICAgZW5jb2RlciA8
PCBsYW5ndWFnZTsKICAgICAgICAgZW5jb2RlciA8PCBzdGFydFRpbWVWYXJpYW5jZTsKQEAgLTYz
LDkgKzYzLDkgQEAgc3RydWN0IFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24gewogICAg
IHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgogICAgIHN0YXRpYyBPcHRpb25hbDxUcmFja1ByaXZh
dGVSZW1vdGVDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7Ci0g
ICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IGlkZW50aWZpZXI7Ci0gICAgICAgIGRlY29kZXIg
Pj4gaWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICBPcHRpb25h
bDxBdG9tU3RyaW5nPiB0cmFja0lkOworICAgICAgICBkZWNvZGVyID4+IHRyYWNrSWQ7CisgICAg
ICAgIGlmICghdHJhY2tJZCkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAg
ICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gbGFiZWw7CkBAIC0xMDksNyArMTA5LDcgQEAgc3Ry
dWN0IFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24gewogICAgICAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4ge3sKLSAgICAgICAgICAgIFdURk1vdmUo
KmlkZW50aWZpZXIpLAorICAgICAgICAgICAgV1RGTW92ZSgqdHJhY2tJZCksCiAgICAgICAgICAg
ICBXVEZNb3ZlKCpsYWJlbCksCiAgICAgICAgICAgICBXVEZNb3ZlKCpsYW5ndWFnZSksCiAgICAg
ICAgICAgICBXVEZNb3ZlKCpzdGFydFRpbWVWYXJpYW5jZSksCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1v
dGUuY3BwCmluZGV4IDcyMWMwYWE5MjA3MjRlOWIzM2I1ODY1MzAzMTM3YjZjYTU0OTAwYTAuLmUy
YTNlOTAxYWZmNGU2NDE0MWJmYzk5YzZmMGM0NTcyOWIxZDhiY2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZh
dGVSZW1vdGUuY3BwCkBAIC01Myw5ICs1Myw5IEBAIHZvaWQgQXVkaW9UcmFja1ByaXZhdGVSZW1v
dGU6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQogCiB2b2lkIEF1ZGlvVHJhY2tQcml2YXRlUmVt
b3RlOjp1cGRhdGVDb25maWd1cmF0aW9uKFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24m
JiBjb25maWd1cmF0aW9uKQogewotICAgIGlmIChjb25maWd1cmF0aW9uLmlkZW50aWZpZXIgIT0g
bV9pZCkgeworICAgIGlmIChjb25maWd1cmF0aW9uLnRyYWNrSWQgIT0gbV9pZCkgewogICAgICAg
ICBhdXRvIGNoYW5nZWQgPSAhbV9pZC5pc0VtcHR5KCk7Ci0gICAgICAgIG1faWQgPSBjb25maWd1
cmF0aW9uLmlkZW50aWZpZXI7CisgICAgICAgIG1faWQgPSBjb25maWd1cmF0aW9uLnRyYWNrSWQ7
CiAgICAgICAgIGlmIChjaGFuZ2VkICYmIGNsaWVudCgpKQogICAgICAgICAgICAgY2xpZW50KCkt
PmlkQ2hhbmdlZChtX2lkKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmgKaW5kZXggNTNk
YzliZTMzYzliZmMwZGM0YTdiMDFmYzFmMTAxZjllODc2YTVjNS4uY2Y3YzBlOTNlZjQ2ZjQ5MDFj
ZWNjNWY5ZjdhOGU2MWUzZjE2YjNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuaApAQCAtNDgs
NiArNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEF1ZGlvVHJh
Y2tQcml2YXRlUmVtb3RlKGNvbm5lY3Rpb24sIGlkZW5kaWZpZXIsIFdURk1vdmUoY29uZmlndXJh
dGlvbikpKTsKICAgICB9CiAKKyAgICBBdG9tU3RyaW5nIGlkKCkgY29uc3QgZmluYWwgeyByZXR1
cm4gbV9pZDsgfQogICAgIHZvaWQgdXBkYXRlQ29uZmlndXJhdGlvbihUcmFja1ByaXZhdGVSZW1v
dGVDb25maWd1cmF0aW9uJiYpOwogCiBwcml2YXRlOgpAQCAtNTUsNyArNTYsNiBAQCBwcml2YXRl
OgogCiAgICAgdXNpbmcgQXVkaW9UcmFja0tpbmQgPSBXZWJDb3JlOjpBdWRpb1RyYWNrUHJpdmF0
ZTo6S2luZDsKICAgICBBdWRpb1RyYWNrS2luZCBraW5kKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
bV9raW5kOyB9Ci0gICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faWQ7
IH0KICAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9sYWJlbDsg
fQogICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xhbmd1
YWdlOyB9CiAgICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3RyYWNr
SW5kZXg7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRleCA2ZGRlZTg3YWJkY2M3
NmY4NjlhZDU1NGRiNTExMmIzNmI4MmYyZDZiLi43MTMyMWU2YmU2MDA0ODM4YzNiNjM1ZDBlZmRj
NGMxZWY2ODkzMjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCkBAIC02MzMsNyAr
NjMzLDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKGNvbnN0IFVSTCYg
dXJsLCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5CiB7CiAgICAgaWYgKG1fcmVtb3RlRW5n
aW5lSWRlbnRpZmllciA9PSBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6
OkFWRm91bmRhdGlvbk1TRSkgewogICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBSZW1vdGVNZWRp
YVNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7Ci0gICAgICAgIGNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpMb2FkTWVkaWFTb3VyY2UodXJsLCBj
b250ZW50VHlwZSwgaWRlbnRpZmllciksIG1faWQpOworICAgICAgICBjb25uZWN0aW9uKCkuc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpMb2FkTWVk
aWFTb3VyY2UodXJsLCBjb250ZW50VHlwZSwgaWRlbnRpZmllciksIFt3ZWFrVGhpcyA9IG1ha2VX
ZWFrUHRyKCp0aGlzKV0oYXV0byYmIGNvbmZpZ3VyYXRpb24pIHsKKyAgICAgICAgICAgIGlmICh3
ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9jb25maWd1cmF0aW9uID0gV1RG
TW92ZShjb25maWd1cmF0aW9uKTsKKyAgICAgICAgfSwgbV9pZCk7CiAgICAgICAgIG1fbWVkaWFT
b3VyY2VQcml2YXRlID0gTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjpjcmVhdGUobV9tYW5hZ2Vy
LmdwdVByb2Nlc3NDb25uZWN0aW9uKCksIGlkZW50aWZpZXIsIG1fbWFuYWdlci50eXBlQ2FjaGUo
bV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyKSwgKnRoaXMsIGNsaWVudCk7CiAKICAgICAgICAgcmV0
dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRp
YVNvdXJjZVByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDBhYzc4NzIwYmFjNGQ0Mjhk
MTI0NzA0ODk4NjU5MzkzOGZmNzg1ZGEuLjUwMzIyNTJiZjUwZjE2MjQ1YjE1ZmU0ZTBmMmZjMTky
ZGU1MTg1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTEwMyw5ICsxMDMs
OSBAQCBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBNZWRpYVNvdXJjZVByaXZhdGVSZW1v
dGU6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDbwogICAgIHJldHVybiBzdGF0dXM7CiB9CiAKLXZv
aWQgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjpkdXJhdGlvbkNoYW5nZWQoKQordm9pZCBNZWRp
YVNvdXJjZVByaXZhdGVSZW1vdGU6OmR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIGR1
cmF0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9ncHVQcm9jZXNzQ29ubmVj
dGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6
RHVyYXRpb25DaGFuZ2VkKGR1cmF0aW9uKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBNZWRp
YVNvdXJjZVByaXZhdGVSZW1vdGU6Om1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cykK
QEAgLTExOCwxNCArMTE4LDIwIEBAIHZvaWQgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjp1bm1h
cmtFbmRPZlN0cmVhbSgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAorYm9vbCBNZWRpYVNv
dXJjZVByaXZhdGVSZW1vdGU6OmlzRW5kZWQoKSBjb25zdAoreworICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBNZWRp
YVNvdXJjZVByaXZhdGVSZW1vdGU6OnJlYWR5U3RhdGUoKSBjb25zdAogewogICAgIHJldHVybiBt
X21lZGlhUGxheWVyUHJpdmF0ZSA/IG1fbWVkaWFQbGF5ZXJQcml2YXRlLT5yZWFkeVN0YXRlKCkg
OiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmc7CiB9CiAKLXZvaWQgTWVkaWFT
b3VyY2VQcml2YXRlUmVtb3RlOjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
KQordm9pZCBNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5
ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90
ZU1lZGlhU291cmNlUHJveHk6OlNldFJlYWR5U3RhdGUocmVhZHlTdGF0ZSksIG1faWRlbnRpZmll
cik7CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjp3YWl0Rm9yU2Vla0NvbXBs
ZXRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuaAppbmRleCA3NzgzNGY3YTE5ZGNiMGI5NGVk
NTJmNjY4MDBlNjA1YzMxNTM0Nzk5Li42NGY3Mzg1YjI5MjlmOWYzMDRiNDJjOGEzNmUyYjI1NzYy
ZjllOGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01l
ZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmgKQEAgLTU2LDkgKzU2LDEwIEBAIHB1
YmxpYzoKIAogICAgIC8vIE1lZGlhU291cmNlUHJpdmF0ZSBvdmVycmlkZXMKICAgICBBZGRTdGF0
dXMgYWRkU291cmNlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiwgUmVmUHRyPFdl
YkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU+JikgZmluYWw7Ci0gICAgdm9pZCBkdXJhdGlvbkNo
YW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUm
KSBmaW5hbDsKICAgICB2b2lkIG1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cykgZmlu
YWw7CiAgICAgdm9pZCB1bm1hcmtFbmRPZlN0cmVhbSgpIGZpbmFsOworICAgIGJvb2wgaXNFbmRl
ZCgpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJl
YWR5U3RhdGUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldFJlYWR5U3RhdGUoV2ViQ29yZTo6
TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpIGZpbmFsOwogICAgIHZvaWQgd2FpdEZvclNlZWtDb21w
bGV0ZWQoKSBmaW5hbDsKQEAgLTc5LDYgKzgwLDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2Vi
Q29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50PiBtX2NsaWVudDsKICAgICBWZWN0b3I8UmVm
UHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU+PiBtX3NvdXJjZUJ1ZmZlcnM7CiAKKyAgICBN
ZWRpYVRpbWUgbV9kdXJhdGlvbjsKKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIGNv
bnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuICJNZWRpYVNv
dXJjZVByaXZhdGVSZW1vdGUiOyB9CiAgICAgY29uc3Qgdm9pZCogbG9nSWRlbnRpZmllcigpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZS5jcHAKaW5kZXggNjMyZTAwZmIxNTJkMGZkNzQ2NTc2ZTM0Y2FmYmY5ZTJiNDYzYmY3
ZC4uNmVkZTQyMmE5Yzk0MzcyZjQyZDQwYTZiZjMxZGM2NWFhMzFjYjU0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiUmVtb3Rl
U291cmNlQnVmZmVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtVGltZVJhbmdlcy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIApA
QCAtMTAwLDE3ICsxMDEsMTUgQEAgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgU291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZTo6cmVhZHlTdGF0ZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fbWVkaWFQbGF5
ZXJQcml2YXRlID8gbV9tZWRpYVBsYXllclByaXZhdGUtPnJlYWR5U3RhdGUoKSA6IE1lZGlhUGxh
eWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZzsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlOjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKQordm9pZCBT
b3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFk
eVN0YXRlIHN0YXRlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19CisgICAgaWYgKCFtX21l
ZGlhU291cmNlUHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOwogCi12b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGU6OmZsdXNoKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpCi17Ci0gICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6U2V0UmVhZHlTdGF0ZShzdGF0
ZSksIG1fcmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcik7CiB9CiAKLXZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZTo6ZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFTYW1wbGU+JiYsIGNvbnN0
IEF0b21TdHJpbmcmIHRyYWNrSUQpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmZs
dXNoKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsK
IH0KQEAgLTEyMCw5ICsxMTksMTMgQEAgYm9vbCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpp
c1JlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c2V0QWN0aXZl
KGJvb2wpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNldEFjdGl2ZShib29sIGFj
dGl2ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV9tZWRpYVNvdXJjZVBy
aXZhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNBY3RpdmUgPSBhY3RpdmU7CisgICAg
bV9ncHVQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3Rl
U291cmNlQnVmZmVyUHJveHk6OlNldEFjdGl2ZShhY3RpdmUpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZl
cklkZW50aWZpZXIpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6Om5vdGlm
eUNsaWVudFdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQp
CkBAIC0xNTEsNyArMTU0LDM2IEBAIGJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6Y2Fu
U3dpdGNoVG9UeXBlKGNvbnN0IENvbnRlbnRUeXBlJikKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
LXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJl
Y2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YXRpb25TZWdtZW50SW5mbyYmIHNl
Z21lbnRJbmZvKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjp1cGRhdGVCdWZmZXJl
ZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVkKQoreworICAgIGlmICghbV9tZWRp
YVNvdXJjZVByaXZhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5l
Y3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
OjpVcGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoc291cmNlSXNFbmRlZCksIG1fcmVtb3Rl
U291cmNlQnVmZmVySWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJl
bW90ZTo6ZXZpY3RDb2RlZEZyYW1lcyh1aW50NjRfdCBuZXdEYXRhU2l6ZSwgdWludDY0X3QgcGVu
ZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUsIGNvbnN0
IE1lZGlhVGltZSYgY3VycmVudFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24sIGJvb2wg
aXNFbmRlZCkKK3sKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6RXZpY3RDb2RlZEZyYW1lcyhuZXdE
YXRhU2l6ZSwgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgbWF4aW11bUJ1ZmZlclNpemUsIGN1
cnJlbnRUaW1lLCBkdXJhdGlvbiwgaXNFbmRlZCksIG1fcmVtb3RlU291cmNlQnVmZmVySWRlbnRp
Zmllcik7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6YWRkVHJhY2tCdWZm
ZXIoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJZCwgUmVmUHRyPE1lZGlhRGVzY3JpcHRpb24+JiYp
Cit7CisgICAgQVNTRVJUKG1fdHJhY2tJZGVudGlmaWVyTWFwLmNvbnRhaW5zKHRyYWNrSWQpKTsK
KyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6QWRkVHJhY2tCdWZmZXIobV90cmFja0lkZW50aWZpZXJN
YXAuZ2V0KHRyYWNrSWQpKSwgbV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyKTsKK30KKwor
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpyZWVucXVldWVNZWRpYUlmTmVlZGVkKGNv
bnN0IE1lZGlhVGltZSYgY3VycmVudE1lZGlhVGltZSwgdWludDY0X3QgcGVuZGluZ0FwcGVuZERh
dGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUpCit7CisgICAgbV9ncHVQcm9j
ZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNlQnVm
ZmVyUHJveHk6OlJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQoY3VycmVudE1lZGlhVGltZSwgcGVuZGlu
Z0FwcGVuZERhdGFDYXBhY2l0eSwgbWF4aW11bUJ1ZmZlclNpemUpLCBtX3JlbW90ZVNvdXJjZUJ1
ZmZlcklkZW50aWZpZXIpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnRy
eVNpZ25hbEFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoKQoreworICAgIG1fZ3B1UHJvY2Vzc0Nv
bm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclBy
b3h5OjpUcnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKCksIG1fcmVtb3RlU291cmNl
QnVmZmVySWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlh
bGl6YXRpb25TZWdtZW50SW5mbyYmIHNlZ21lbnRJbmZvLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2NsaWVudCB8fCAhbV9tZWRp
YVBsYXllclByaXZhdGUpCiAgICAgICAgIHJldHVybjsKQEAgLTE2NCw2ICsxOTYsNyBAQCB2b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZl
SW5pdGlhbGl6YXRpb25TZWdtZQogICAgICAgICBpbmZvLnRyYWNrID0gbV9tZWRpYVBsYXllclBy
aXZhdGUtPmF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlKGF1ZGlvVHJhY2suaWRlbnRpZmllcik7CiAg
ICAgICAgIGluZm8uZGVzY3JpcHRpb24gPSBSZW1vdGVNZWRpYURlc2NyaXB0aW9uOjpjcmVhdGUo
YXVkaW9UcmFjay5kZXNjcmlwdGlvbik7CiAgICAgICAgIHNlZ21lbnQuYXVkaW9UcmFja3MuYXBw
ZW5kKGluZm8pOworICAgICAgICBtX3RyYWNrSWRlbnRpZmllck1hcC5hZGQoaW5mby50cmFjay0+
aWQoKSwgYXVkaW9UcmFjay5pZGVudGlmaWVyKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIHZp
ZGVvVHJhY2sgOiBzZWdtZW50SW5mby52aWRlb1RyYWNrcykgewpAQCAtMTcxLDYgKzIwNCw3IEBA
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJl
Y2VpdmVJbml0aWFsaXphdGlvblNlZ21lCiAgICAgICAgIGluZm8udHJhY2sgPSBtX21lZGlhUGxh
eWVyUHJpdmF0ZS0+dmlkZW9UcmFja1ByaXZhdGVSZW1vdGUodmlkZW9UcmFjay5pZGVudGlmaWVy
KTsKICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IFJlbW90ZU1lZGlhRGVzY3JpcHRpb246OmNy
ZWF0ZSh2aWRlb1RyYWNrLmRlc2NyaXB0aW9uKTsKICAgICAgICAgc2VnbWVudC52aWRlb1RyYWNr
cy5hcHBlbmQoaW5mbyk7CisgICAgICAgIG1fdHJhY2tJZGVudGlmaWVyTWFwLmFkZChpbmZvLnRy
YWNrLT5pZCgpLCB2aWRlb1RyYWNrLmlkZW50aWZpZXIpOwogICAgIH0KIAogICAgIGZvciAoYXV0
byYgdGV4dFRyYWNrIDogc2VnbWVudEluZm8udGV4dFRyYWNrcykgewpAQCAtMTc4LDkgKzIxMiwx
MCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJjZUJ1ZmZlclByaXZhdGVE
aWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZQogICAgICAgICBpbmZvLnRyYWNrID0gbV9tZWRp
YVBsYXllclByaXZhdGUtPnRleHRUcmFja1ByaXZhdGVSZW1vdGUodGV4dFRyYWNrLmlkZW50aWZp
ZXIpOwogICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gUmVtb3RlTWVkaWFEZXNjcmlwdGlvbjo6
Y3JlYXRlKHRleHRUcmFjay5kZXNjcmlwdGlvbik7CiAgICAgICAgIHNlZ21lbnQudGV4dFRyYWNr
cy5hcHBlbmQoaW5mbyk7CisgICAgICAgIG1fdHJhY2tJZGVudGlmaWVyTWFwLmFkZChpbmZvLnRy
YWNrLT5pZCgpLCB0ZXh0VHJhY2suaWRlbnRpZmllcik7CiAgICAgfQogCi0gICAgbV9jbGllbnQt
PnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KFdURk1v
dmUoc2VnbWVudCkpOworICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2
ZUluaXRpYWxpemF0aW9uU2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNl
QnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFw
cGVuZFJlc3VsdCBhcHBlbmRSZXN1bHQpCkBAIC0xODksNiArMjI0LDMwIEBAIHZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKFNv
dXJjZUJ1ZmZlclByCiAgICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5k
Q29tcGxldGUoYXBwZW5kUmVzdWx0KTsKIH0KIAordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYg
ZHVyYXRpb24pCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c291cmNl
QnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChkdXJhdGlvbik7Cit9CisKK3ZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxlKGRv
dWJsZSBzYW1wbGVEdXJhdGlvbikKK3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xp
ZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoc2FtcGxlRHVyYXRpb24pOwor
fQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJjZUJ1ZmZlclByaXZhdGVC
dWZmZXJlZERpcnR5Q2hhbmdlZChib29sIGRpcnR5KQoreworICAgIGlmIChtX2NsaWVudCkKKyAg
ICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZChk
aXJ0eSk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVy
UHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpQbGF0Zm9ybVRpbWVS
YW5nZXMmIHRpbWVSYW5nZXMpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVu
dC0+c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZCh0aW1lUmFuZ2VzKTsK
K30KKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogV1RGTG9nQ2hhbm5lbCYgU291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZTo6bG9nQ2hhbm5lbCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZS5oCmluZGV4IDRkMGUwMzA5YWQ1OWQ2OTRmMTNiYzE0YzQ3Y2JiYTRhZjJmN2E4NjIu
Ljc2MmY2M2JmN2QyYjc5YmZlZWJmZTJhY2VhODIzMzE3NDUxOTAwNDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiR1BVUHJvY2Vzc0Nv
bm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlICJSZW1v
dGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiVHJhY2tQcml2YXRlUmVtb3Rl
SWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFR5cGUuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL01lZGlhU2FtcGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VyY2VCdWZmZXJQ
cml2YXRlLmg+CkBAIC00Niw2ICs0NywxMCBAQCBjbGFzcyBDb25uZWN0aW9uOwogY2xhc3MgRGVj
b2RlcjsKIH0KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUGxhdGZvcm1UaW1lUmFuZ2Vz
OworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IEluaXRpYWxpemF0aW9uU2VnbWVu
dEluZm87CkBAIC03NCwyNSArNzksNDAgQEAgcHJpdmF0ZToKICAgICBXZWJDb3JlOjpNZWRpYVBs
YXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBzZXRS
ZWFkeVN0YXRlKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKSBmaW5hbDsKICAgICB2
b2lkIGZsdXNoKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpIGZpbmFsOwotICAgIHZvaWQgZW5x
dWV1ZVNhbXBsZShSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYsIGNvbnN0IEF0b21TdHJpbmcm
IHRyYWNrSUQpIGZpbmFsOwogICAgIGJvb2wgaXNSZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0
b21TdHJpbmcmIHRyYWNrSUQpIGZpbmFsOwogICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wpIGZpbmFs
OworICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2lzQWN0aXZlOyB9
CiAgICAgdm9pZCBub3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG9t
U3RyaW5nJiB0cmFja0lEKSBmaW5hbDsKICAgICBib29sIGNhblNldE1pbmltdW1VcGNvbWluZ1By
ZXNlbnRhdGlvblRpbWUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQg
c2V0TWluaW11bVVwY29taW5nUHJlc2VudGF0aW9uVGltZShjb25zdCBBdG9tU3RyaW5nJiwgY29u
c3QgTWVkaWFUaW1lJikgZmluYWw7CiAgICAgdm9pZCBjbGVhck1pbmltdW1VcGNvbWluZ1ByZXNl
bnRhdGlvblRpbWUoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogICAgIGJvb2wgY2FuU3dpdGNo
VG9UeXBlKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJikgZmluYWw7CisgICAgdm9pZCB1cGRh
dGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVkKSBmaW5hbDsKKyAg
ICB2b2lkIGV2aWN0Q29kZWRGcmFtZXModWludDY0X3QgbmV3RGF0YVNpemUsIHVpbnQ2NF90IHBl
bmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplLCBjb25z
dCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uLCBib29s
IGlzRW5kZWQpIGZpbmFsOworICAgIHZvaWQgYWRkVHJhY2tCdWZmZXIoY29uc3QgQXRvbVN0cmlu
ZyYgdHJhY2tJZCwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhRGVzY3JpcHRpb24+JiYpIGZpbmFsOwor
ICAgIHZvaWQgcmVlbnF1ZXVlTWVkaWFJZk5lZWRlZChjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRN
ZWRpYVRpbWUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1h
eGltdW1CdWZmZXJTaXplKSBmaW5hbDsKKyAgICB2b2lkIHRyeVNpZ25hbEFsbFNhbXBsZXNJblRy
YWNrRW5xdWV1ZWQoKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0KLSAgICB2b2lkIHNvdXJjZUJ1ZmZl
clByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemF0aW9uU2Vn
bWVudEluZm8mJik7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRp
YWxpemF0aW9uU2VnbWVudChJbml0aWFsaXphdGlvblNlZ21lbnRJbmZvJiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlU3RyZWFtRW5k
ZWRXaXRoRGVjb2RlRXJyb3IoKTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRF
cnJvcihib29sIGRlY29kZUVycm9yKTsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBl
bmRDb21wbGV0ZShXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1
bHQpOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25zdCBN
ZWRpYVRpbWUmKTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBsZShk
b3VibGUgc2FtcGxlRHVyYXRpb24pOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZERy
b3BTYW1wbGUoKTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVy
aW5nRXJyb3IoaW50IGVycm9yQ29kZSk7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQnVm
ZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCBkaXJ0eSk7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2
YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdl
cyYpOwogCiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb247
CiAgICAgUmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllciBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklk
ZW50aWZpZXI7CiAgICAgV2Vha1B0cjxNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU+IG1fbWVkaWFT
b3VyY2VQcml2YXRlOwogICAgIFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlPiBtX21l
ZGlhUGxheWVyUHJpdmF0ZTsKLSAgICBXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50
KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKKworICAgIEhhc2hNYXA8QXRvbVN0cmluZywgVHJhY2tQ
cml2YXRlUmVtb3RlSWRlbnRpZmllcj4gbV90cmFja0lkZW50aWZpZXJNYXA7CisKKyAgICBib29s
IG1faXNBY3RpdmUgeyBmYWxzZSB9OwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAg
Y29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ2dlci5nZXQo
KTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCmluZGV4
IDQwNjQyZjYwMzZlZjdlMTFlMjNiODBmNWE0NTFkNzZmM2VkMjhjNGUuLjZjOGNjYTBmZTg5N2M1
OTllYzRjZWI4YTJiZWE1YTlhYWJmNDY4NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGUubWVzc2FnZXMuaW4KQEAgLTI2LDggKzI2LDEyIEBACiAjaWYgRU5BQkxFKEdQVV9Q
Uk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCiBtZXNzYWdlcyAtPiBTb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlIE5vdFJlZkNvdW50ZWQgewotICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVE
aWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KHN0cnVjdCBXZWJLaXQ6OkluaXRpYWxpemF0
aW9uU2VnbWVudEluZm8gc2VnbWVudENvbmZpZ3VyYXRpb24pCisgICAgU291cmNlQnVmZmVyUHJp
dmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoc3RydWN0IFdlYktpdDo6SW5pdGlh
bGl6YXRpb25TZWdtZW50SW5mbyBzZWdtZW50Q29uZmlndXJhdGlvbikgLT4gKCkgQXN5bmMKICAg
ICBTb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoV2ViQ29yZTo6U291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0IGFwcGVuZFJlc3VsdCkKKyAgICBTb3VyY2VCdWZm
ZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKE1lZGlhVGltZSBkdXJhdGlvbikKKyAgICBTb3VyY2VC
dWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoZG91YmxlIHNhbXBsZUR1cmF0aW9uKQorICAgIFNv
dXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZChib29sIGRpcnR5KQorICAgIFNv
dXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQoV2ViQ29yZTo6UGxhdGZvcm1U
aW1lUmFuZ2VzIHRpbWVSYW5nZXMpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5j
cHAKaW5kZXggNzMyMjNiODY4NDIxM2EwYmQ4ZjcxMjgyYThlOGRlYTYxNTk5NWVjMC4uMmI1NmZl
ZDIzZGVjMzU4NTlhYjg1N2U2ZjZkZmZkNzk4ZTFhYWUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1v
dGUuY3BwCkBAIC01Niw5ICs1Niw5IEBAIHZvaWQgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6c2V0
TW9kZShUZXh0VHJhY2tNb2RlIG1vZGUpCiAKIHZvaWQgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6
dXBkYXRlQ29uZmlndXJhdGlvbihUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYm
IGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgaWYgKGNvbmZpZ3VyYXRpb24uaWRlbnRpZmllciAhPSBt
X2lkKSB7CisgICAgaWYgKGNvbmZpZ3VyYXRpb24udHJhY2tJZCAhPSBtX2lkKSB7CiAgICAgICAg
IGF1dG8gY2hhbmdlZCA9ICFtX2lkLmlzRW1wdHkoKTsKLSAgICAgICAgbV9pZCA9IGNvbmZpZ3Vy
YXRpb24uaWRlbnRpZmllcjsKKyAgICAgICAgbV9pZCA9IGNvbmZpZ3VyYXRpb24udHJhY2tJZDsK
ICAgICAgICAgaWYgKGNoYW5nZWQgJiYgY2xpZW50KCkpCiAgICAgICAgICAgICBjbGllbnQoKS0+
aWRDaGFuZ2VkKG1faWQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvVmlkZW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9WaWRlb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXgg
YWM2ZWEwMTQyNzFjMzMxMjZjZDc1MmIzZmZkM2I3ODU0MzlkZTY1Ny4uMzVlOGU3ZDgzOWM3Mjgw
MWY2YTk2ZmJlZDI3MjA2NGQ0ZmQ2NmYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9WaWRlb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9WaWRlb1RyYWNrUHJpdmF0ZVJlbW90ZS5jcHAK
QEAgLTUyLDkgKzUyLDkgQEAgdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZVJlbW90ZTo6c2V0U2VsZWN0
ZWQoYm9vbCBzZWxlY3RlZCkKIAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZVJlbW90ZTo6dXBkYXRl
Q29uZmlndXJhdGlvbihUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uJiYgY29uZmlndXJh
dGlvbikKIHsKLSAgICBpZiAoY29uZmlndXJhdGlvbi5pZGVudGlmaWVyICE9IG1faWQpIHsKKyAg
ICBpZiAoY29uZmlndXJhdGlvbi50cmFja0lkICE9IG1faWQpIHsKICAgICAgICAgYXV0byBjaGFu
Z2VkID0gIW1faWQuaXNFbXB0eSgpOwotICAgICAgICBtX2lkID0gY29uZmlndXJhdGlvbi5pZGVu
dGlmaWVyOworICAgICAgICBtX2lkID0gY29uZmlndXJhdGlvbi50cmFja0lkOwogICAgICAgICBp
ZiAoY2hhbmdlZCAmJiBjbGllbnQoKSkKICAgICAgICAgICAgIGNsaWVudCgpLT5pZENoYW5nZWQo
bV9pZCk7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415785</attachid>
            <date>2020-12-09 12:12:06 -0800</date>
            <delta_ts>2020-12-09 16:21:56 -0800</delta_ts>
            <desc>Update the patch based on a discussion with Jer</desc>
            <filename>bug-219402-20201209121205.patch</filename>
            <type>text/plain</type>
            <size>119394</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RlYmRkNjNmYjkxNzM2
MTE4MDVlOWY1NDI4Zjk0YmExMWJiMWNlNy4uZmJlNjJmZmFhZWJjMTc4ZGQ5YWI1ZjJlOWQyZGQ5
NGEyYjNlNTI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMyBAQAorMjAyMC0xMi0wOCAgUGVu
ZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUgUHJv
Y2Vzc11bTVNFXSBJbXBsZW1lbnQgYmFzaWMgdmlkZW8gcGxheWJhY2sKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCB0aGUgdmlkZW8gcGxh
eWJhY2sgc3VwcG9ydCB3aGVuIHRoZSBNU0UgbWVkaWEgcGxheWVyIHJ1bnMgaW4gdGhlIEdQVSBw
cm9jZXNzLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0UHJpdmF0ZUFuZE9wZW4pOiBQcm9w
YWdhdGUgdGhlIHRpbWUgZnVkZ2UgZmFjdG9yIHRvCisgICAgICAgIGBNZWRpYVNvdXJjZVByaXZh
dGVgIHNvIHRoYXQgYFNvdXJjZUJ1ZmZlclByaXZhdGVgIGNhbiB1c2UgaXQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0RHVyYXRpb25JbnRlcm5hbCk6IFByb3BhZ2F0ZSB0aGUg
ZHVyYXRpb24gaW5mb3JtYXRpb24KKyAgICAgICAgdG8gYE1lZGlhU291cmNlUHJpdmF0ZWAgc28g
dGhhdCBgU291cmNlQnVmZmVyUHJpdmF0ZWAgY2FuIHVzZSBpdC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU291cmNlOjpzdHJlYW1FbmRlZFdpdGhFcnJvcik6IE1hcmsgdGhlIHN0cmVhbSBpcyBl
bmQgaW4gYE1lZGlhU291cmNlUHJpdmF0ZWAuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OlNv
dXJjZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6On5Tb3VyY2VCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpidWZmZXJlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRD
b21wbGV0ZSk6IE1vdmUgdGhlIGNvZGUgdG8gdXBkYXRlCisgICAgICAgIGBidWZmZXJlZGAgdG8g
YFNvdXJjZUJ1ZmZlclByaXZhdGVgIHRvIG1ha2Ugc3VyZSB0aGUgYGJ1ZmZlcmVkYCBhdHRyaWJ1
dGUgaXMgdXBkYXRlZCB0aW1lbHkuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6Om1h
eGltdW1CdWZmZXJTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQpOiBBZGQg
YSBjb21wbGV0aW9uSGFuZGxlcgorICAgICAgICBwYXJhbWV0ZXIgdG8gbm90aWZ5IHRoZSBjYWxs
ZXIgKGBTb3VyY2VCdWZmZXJQYXJzZXJgKSB0aGF0IHRoZSB0cmFjayBidWZmZXIgbWFuYWdlciAo
YFNvdXJjZUJ1ZmZlclByaXZhdGVgKQorICAgICAgICBoYXMgaGFuZGxlZCB0aGUgaW5pdGlhbGl6
YXRpb24gc2VnbWVudCBhbmQgaXMgcmVhZHkgdG8gcmVjZWl2ZSBtZWRpYSBzYW1wbGVzLgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpleHRyYU1lbW9yeUNvc3QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpyZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNldE1heGltdW1RdWV1ZURlcHRoRm9y
VHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclBy
aXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyOjppc0J1ZmZlcmVkRGlydHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyOjpzZXRCdWZmZXJlZERpcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlvIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0
ZUhhc1ZpZGVvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNl
L1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICBTb21lIHBhcmFtZXRlcnMgYW5kIHJldHVybiB2YWx1
ZXMgYXJlIGNoYW5nZWQgZnJvbSBgc2l6ZV90YCB0byBgdWludDY0X3RgIGJlY2F1c2UgdGhleQor
ICAgICAgICBuZWVkIHRvIHBhc3Mgd2l0aCBJUEMgbWVzc2FnZXMgd2hlbiB3ZSBydW4gdGhlIE1T
RSBtZWRpYSBwbGF5ZXIgaW4gdGhlIEdQVSBwcm9jZXNzLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNv
dXJjZVByaXZhdGU6OnNldFRpbWVGdWRnZUZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNvdXJjZVByaXZhdGU6OnRpbWVGdWRnZUZhY3RvciBjb25zdCk6CisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGU6OnNldEJ1ZmZlcmVkRGlydHkpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0QnVmZmVyZWRSYW5nZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZENvbXBsZXRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjpidWZmZXJlZFNhbXBs
ZXNGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OnBy
b3ZpZGVNZWRpYURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6
cmVlbnF1ZXVlTWVkaWFGb3JUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGU6OnJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3Zl
U2FtcGxlc0Zyb21UcmFja0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlOjpldmljdENvZGVkRnJhbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGU6OnRvdGFsVHJhY2tCdWZmZXJTaXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjphZGRUcmFja0J1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVT
YW1wbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6Omhhc0F1ZGlvIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6Omhhc1ZpZGVvIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OnN0YXJ0Q2hhbmdpbmdU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OnNldE1heGltdW1R
dWV1ZURlcHRoRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2
YXRlOjp0aW1lRnVkZ2VGYWN0b3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZTo6c2V0QWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGU6OnNldEN1cnJlbnRUaW1lRnVkZ2VGYWN0b3IpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6YnVmZmVyZWQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6aXNCdWZmZXJlZERp
cnR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGU6OnNldEJ1ZmZlcmVkRGlydHkpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oOgorICAgICAgICBgU291cmNlQnVmZmVy
UHJpdmF0ZWAgY2FuIGZpZ3VyZSBvdXQgdGhlIHZhbHVlcyBvZiBgaGFzQXVkaW9gIGFuZCBgaGFz
VmlkZW9gIGJlY2F1c2UKKyAgICAgICAgaXQgbWFuYWdlcyB0aGUgdHJhY2sgYnVmZmVycywgc28g
dGhlIGZ1bmN0aW9ucyBgc291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlvKClgIGFuZAorICAgICAg
ICBgc291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKClgIGNhbiBiZSByZW1vdmVkLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaDoKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQzo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpkdXJhdGlvbkNoYW5nZWQpOgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlckFW
Rk9iakM6OmRpZFBhcnNlU3RyZWFtRGF0YUFzQXNzZXQpOgorICAgICAgICBVc2UgYSBzZW1hcGhv
cmUgdG8gaG9sZCB0aGUgcGFyc2VyIHRocmVhZCB1bnRpbCB0aGUgdHJhY2sgYnVmZmVyIG1hbmFn
ZXIgaGFzIGhhbmRsZWQKKyAgICAgICAgdGhlIGluaXRpYWxpemF0aW9uIHNlZ21lbnQuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUlu
aXRpYWxpemF0aW9uRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6YXBwZW5kQ29tcGxldGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOjplbnF1ZXVlU2FtcGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0aW1lRnVkZ2VGYWN0b3IgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc1ZpZGVvIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpoYXNB
dWRpbyBjb25zdCk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2Nv
YS9Tb3VyY2VCdWZmZXJQYXJzZXIuaDoKKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6T25DbHVzdGVyQmVnaW4pOgorICAgICAgICBUaGUgc2FtZSBhcyBg
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakNgLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlR1N0cmVhbWVyOjpkdXJhdGlvbkNoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlR1N0cmVhbWVyOjptYXJrRW5k
T2ZTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlR1N0cmVhbWVy
Ojp1bm1hcmtFbmRPZlN0cmVhbSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL21zZS9NZWRpYVNvdXJjZVByaXZhdGVHU3RyZWFtZXIuaDoKKworICAgICAgICAqIHBsYXRm
b3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpNb2NrTWVkaWFTb3VyY2VQcml2YXRlOjpkdXJhdGlvbkNoYW5nZWQpOgorICAg
ICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclBy
aXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmFw
cGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVj
ZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNl
QnVmZmVyUHJpdmF0ZTo6c2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JUcmFja0lEKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpoYXNWaWRlbyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6aGFzQXVkaW8g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGUuaDoKKwogMjAyMC0xMi0wNCAgQ2hyaXMgRHVtZXogIDxjZHVt
ZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFNpbXBsaWZ5IGF1ZGlvIHJlc2FtcGxpbmcgY29kZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCAzMzdhNTQ0MGUyMTc2YTlkZTU2MmQyYjU0NzhkNzljMTQwODQ5OGYxLi5hOThh
MDM5OTdmNjc5N2QwMmM5ZDljNzBkNDA0ZTUzOWYzMDMyZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEwNCBAQAorMjAyMC0xMi0wOCAgUGVuZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisg
ICAgICAgIFtNZWRpYSBpbiBHUFUgUHJvY2Vzc11bTVNFXSBJbXBsZW1lbnQgYmFzaWMgdmlkZW8g
cGxheWJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIxOTQwMgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudCB0aGUgbmVjZXNzYXJ5IGZ1bmN0aW9ucyB3aXRoIElQQyB0byBzdXBwb3J0IG1l
ZGlhIHBsYXliYWNrLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVBdWRpb1Ry
YWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVBdWRpb1RyYWNrUHJveHk6OmNv
bmZpZ3VyYXRpb24pOiBSZW5hbWUgYGlkZW50aWZpZXJgIHRvIGB0cmFja0lkYAorICAgICAgICBi
ZWNhdXNlIGl0IGlzIGVhc3kgdG8gY29uZnVzZSB3aXRoIGBUcmFja1ByaXZhdGVSZW1vdGVJZGVu
dGlmaWVyYC4KKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmxvYWRN
ZWRpYVNvdXJjZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhUGxheWVyUHJveHk6OnVw
ZGF0ZUNhY2hlZFN0YXRlKTogRm9yIE1TRSBtZWRpYSBwbGF5ZXIsIGBTb3VyY2VCdWZmZXJgCisg
ICAgICAgIHByb3ZpZGVzIHRoZSBidWZmZXJlZCByYW5nZXMsIHNvIGBSZW1vdGVNZWRpYVBsYXll
clByb3h5YCBkb2VzIG5vdCBuZWVkIHRvIHJlcG9ydCB0aGlzCisgICAgICAgIGluZm9ybWF0aW9u
IHRvIHRoZSBgTWVkaWFQbGF5ZXJgIG9iamVjdCBpbiB0aGUgV2ViIHByb2Nlc3MuCisgICAgICAg
ICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lmg6CisgICAgICAgICog
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5Lm1lc3NhZ2VzLmluOgorCisg
ICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6ZHVyYXRpb24gY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpidWZmZXJlZCBjb25zdCk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNlUHJveHk6OmR1cmF0aW9uQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNlUHJveHk6OnNldFJlYWR5U3Rh
dGUpOgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5o
OgorICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5tZXNz
YWdlcy5pbjoKKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6UmVt
b3RlU291cmNlQnVmZmVyUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eTo6flJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5KToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlh
bGl6YXRpb25TZWdtZW50KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJv
eHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2Ft
cGxlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1
ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZSk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVJlbmRlcmluZ0Vycm9y
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZl
clByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNldEFjdGl2ZSk6
CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpzZXRSZWFkeVN0YXRl
KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnVwZGF0ZUJ1ZmZl
cmVkRnJvbVRyYWNrQnVmZmVycyk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5OjpldmljdENvZGVkRnJhbWVzKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNl
QnVmZmVyUHJveHk6OmFkZFRyYWNrQnVmZmVyKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291
cmNlQnVmZmVyUHJveHk6OnJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6dHJ5U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tFbnF1
ZXVlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VC
dWZmZXJQcml2YXRlSGFzQXVkaW8gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpS
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4
dFRyYWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVUZXh0VHJhY2tQcm94eTo6
Y29uZmlndXJhdGlvbik6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRlb1Ry
YWNrUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVWaWRlb1RyYWNrUHJveHk6OmNv
bmZpZ3VyYXRpb24pOgorCisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9UZXh0VHJhY2tQcml2
YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpUZXh0VHJhY2tQcml2
YXRlUmVtb3RlQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb246OmRlY29kZSk6CisKKyAgICAgICAg
KiBHUFVQcm9jZXNzL21lZGlhL1RyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaDoKKyAg
ICAgICAgKFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbjo6ZW5jb2RlIGNv
bnN0KToKKyAgICAgICAgKFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbjo6
ZGVjb2RlKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2
YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6QXVkaW9UcmFja1ByaXZhdGVSZW1vdGU6
OnVwZGF0ZUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL0F1
ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmxvYWQpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TWVkaWFT
b3VyY2VQcml2YXRlUmVtb3RlOjpkdXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OmlzRW5kZWQgY29uc3QpOgorICAgICAgICAoV2ViS2l0
OjpNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5oOgorCisgICAgICAg
ICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNldFJlYWR5U3RhdGUp
OgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpmbHVzaCk6Cisg
ICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNldEFjdGl2ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnVwZGF0ZUJ1ZmZlcmVk
RnJvbVRyYWNrQnVmZmVycyk6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGU6OmV2aWN0Q29kZWRGcmFtZXMpOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQ
cml2YXRlUmVtb3RlOjphZGRUcmFja0J1ZmZlcik6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGU6OnJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQpOgorICAgICAgICAoV2Vi
S2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjp0cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFj
a0VucXVldWVkKToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQpOgorICAg
ICAgICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2
YXRlRHVyYXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxlKToKKyAgICAgICAgKFdl
YktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZl
cmVkRGlydHlDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJl
bW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZCk6CisgICAgICAg
IChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmVucXVldWVTYW1wbGUpOiBEZWxl
dGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlLm1lc3NhZ2VzLmluOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRleHRUcmFja1By
aXZhdGVSZW1vdGU6OnVwZGF0ZUNvbmZpZ3VyYXRpb24pOgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9HUFUvbWVkaWEvVmlkZW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpWaWRlb1RyYWNrUHJpdmF0ZVJlbW90ZTo6dXBkYXRlQ29uZmlndXJhdGlvbik6CisKIDIwMjAt
MTItMDQgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAg
W2lPU10gQ2FuY2VsIGltYWdlIGV4dHJhY3Rpb24gd2hlbiBuYXZpZ2F0aW5nCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCmluZGV4IGZl
ZTU0NzM5ZDU1ZjBlMWQ1YTE2YjVhYzliMTRiMmMwYWI3MmY4OTEuLmFkZjdiMTk1YWJiYjAzYzAx
MGYyMDgyN2VlMGFjZGZmZmUwNGE1MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCkBAIC0xMjQsNiArMTI0LDcgQEAgdm9pZCBN
ZWRpYVNvdXJjZTo6c2V0UHJpdmF0ZUFuZE9wZW4oUmVmPE1lZGlhU291cmNlUHJpdmF0ZT4mJiBt
ZWRpYVNvdXJjZVByaXZhdGUKICAgICBBU1NFUlQoIW1fcHJpdmF0ZSk7CiAgICAgQVNTRVJUKG1f
bWVkaWFFbGVtZW50KTsKICAgICBtX3ByaXZhdGUgPSBXVEZNb3ZlKG1lZGlhU291cmNlUHJpdmF0
ZSk7CisgICAgbV9wcml2YXRlLT5zZXRUaW1lRnVkZ2VGYWN0b3IoY3VycmVudFRpbWVGdWRnZUZh
Y3RvcigpKTsKIAogICAgIC8vIDIuNC4xIEF0dGFjaGluZyB0byBhIG1lZGlhIGVsZW1lbnQKICAg
ICAvLyBodHRwczovL3Jhd2dpdC5jb20vdzNjL21lZGlhLXNvdXJjZS80NTYyNzY0NjM0NGVlYTAx
NzBkZDFjYmM1YTNkNTA4Y2E3NTFhYmI4L21lZGlhLXNvdXJjZS1yZXNwZWMuaHRtbCNtZWRpYXNv
dXJjZS1hdHRhY2gKQEAgLTU1Niw3ICs1NTcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZWRpYVNv
dXJjZTo6c2V0RHVyYXRpb25JbnRlcm5hbChjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uKQogICAg
IEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgZHVyYXRpb24pOwogCiAgICAgLy8gNi4gVXBkYXRl
IHRoZSBtZWRpYSBkdXJhdGlvbiB0byBuZXcgZHVyYXRpb24gYW5kIHJ1biB0aGUgSFRNTE1lZGlh
RWxlbWVudCBkdXJhdGlvbiBjaGFuZ2UgYWxnb3JpdGhtLgotICAgIG1fcHJpdmF0ZS0+ZHVyYXRp
b25DaGFuZ2VkKCk7CisgICAgbV9wcml2YXRlLT5kdXJhdGlvbkNoYW5nZWQoZHVyYXRpb24pOwog
CiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTYyOCw2ICs2MjksNyBAQCB2b2lkIE1lZGlhU291cmNl
OjpzdHJlYW1FbmRlZFdpdGhFcnJvcihPcHRpb25hbDxFbmRPZlN0cmVhbUVycm9yPiBlcnJvcikK
ICAgICAgICAgICAgIHNvdXJjZUJ1ZmZlci0+dHJ5U2lnbmFsQWxsU2FtcGxlc0VucXVldWVkKCk7
CiAgICAgICAgIG1fcHJpdmF0ZS0+bWFya0VuZE9mU3RyZWFtKE1lZGlhU291cmNlUHJpdmF0ZTo6
RW9zTm9FcnJvcik7CiAgICAgfSBlbHNlIGlmIChlcnJvciA9PSBFbmRPZlN0cmVhbUVycm9yOjpO
ZXR3b3JrKSB7CisgICAgICAgIG1fcHJpdmF0ZS0+bWFya0VuZE9mU3RyZWFtKE1lZGlhU291cmNl
UHJpdmF0ZTo6RW9zTmV0d29ya0Vycm9yKTsKICAgICAgICAgLy8g4oazIElmIGVycm9yIGlzIHNl
dCB0byAibmV0d29yayIKICAgICAgICAgQVNTRVJUKG1fbWVkaWFFbGVtZW50KTsKICAgICAgICAg
aWYgKG1fbWVkaWFFbGVtZW50LT5yZWFkeVN0YXRlKCkgPT0gSFRNTE1lZGlhRWxlbWVudDo6SEFW
RV9OT1RISU5HKSB7CkBAIC02NDYsNiArNjQ4LDggQEAgdm9pZCBNZWRpYVNvdXJjZTo6c3RyZWFt
RW5kZWRXaXRoRXJyb3IoT3B0aW9uYWw8RW5kT2ZTdHJlYW1FcnJvcj4gZXJyb3IpCiAgICAgfSBl
bHNlIHsKICAgICAgICAgLy8g4oazIElmIGVycm9yIGlzIHNldCB0byAiZGVjb2RlIgogICAgICAg
ICBBU1NFUlQoZXJyb3IgPT0gRW5kT2ZTdHJlYW1FcnJvcjo6RGVjb2RlKTsKKyAgICAgICAgbV9w
cml2YXRlLT5tYXJrRW5kT2ZTdHJlYW0oTWVkaWFTb3VyY2VQcml2YXRlOjpFb3NEZWNvZGVFcnJv
cik7CisKICAgICAgICAgQVNTRVJUKG1fbWVkaWFFbGVtZW50KTsKICAgICAgICAgaWYgKG1fbWVk
aWFFbGVtZW50LT5yZWFkeVN0YXRlKCkgPT0gSFRNTE1lZGlhRWxlbWVudDo6SEFWRV9OT1RISU5H
KSB7CiAgICAgICAgICAgICAvLyAg4oazIElmIHRoZSBIVE1MTWVkaWFFbGVtZW50LnJlYWR5U3Rh
dGUgYXR0cmlidXRlIGVxdWFscyBIQVZFX05PVEhJTkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAppbmRleCBjZGUxODNmODkyNzQ3
ZDMyYWRhODJlN2Q1ZTJiOWI0M2VjNTNiZGZlLi4zZDNhNjE5MjE0NzZhZDI2NmQyNWZiOTI3YjQ0
YWM5ODI4NDBlZWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNv
dXJjZS9Tb3VyY2VCdWZmZXIuY3BwCkBAIC04MSw2ICs4MSw3IEBAIFNvdXJjZUJ1ZmZlcjo6U291
cmNlQnVmZmVyKFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlPiYmIHNvdXJjZUJ1ZmZlclByaXZhdGUs
IE1lZGlhCiAgICAgLCBtX2FwcGVuZFdpbmRvd0VuZChNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5p
dGVUaW1lKCkpCiAgICAgLCBtX2FwcGVuZFN0YXRlKFdhaXRpbmdGb3JTZWdtZW50KQogICAgICwg
bV90aW1lT2ZCdWZmZXJpbmdNb25pdG9yKE1vbm90b25pY1RpbWU6Om5vdygpKQorICAgICwgbV9i
dWZmZXJlZChUaW1lUmFuZ2VzOjpjcmVhdGUoKSkKICAgICAsIG1fcGVuZGluZ1JlbW92ZVN0YXJ0
KE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSkKICAgICAsIG1fcGVuZGluZ1JlbW92ZUVuZChNZWRp
YVRpbWU6OmludmFsaWRUaW1lKCkpCiAgICAgLCBtX3JlbW92ZVRpbWVyKCp0aGlzLCAmU291cmNl
QnVmZmVyOjpyZW1vdmVUaW1lckZpcmVkKQpAQCAtOTQsNyArOTUsNiBAQCBTb3VyY2VCdWZmZXI6
OlNvdXJjZUJ1ZmZlcihSZWY8U291cmNlQnVmZmVyUHJpdmF0ZT4mJiBzb3VyY2VCdWZmZXJQcml2
YXRlLCBNZWRpYQogCiAgICAgbV9wcml2YXRlLT5zZXRDbGllbnQodGhpcyk7CiAgICAgbV9wcml2
YXRlLT5zZXRJc0F0dGFjaGVkKHRydWUpOwotICAgIG1fcHJpdmF0ZS0+c2V0Q3VycmVudFRpbWVG
dWRnZUZhY3RvcihtX3NvdXJjZS0+Y3VycmVudFRpbWVGdWRnZUZhY3RvcigpKTsKIH0KIAogU291
cmNlQnVmZmVyOjp+U291cmNlQnVmZmVyKCkKQEAgLTEwMiw4ICsxMDIsOCBAQCBTb3VyY2VCdWZm
ZXI6On5Tb3VyY2VCdWZmZXIoKQogICAgIEFTU0VSVChpc1JlbW92ZWQoKSk7CiAgICAgQUxXQVlT
X0xPRyhMT0dJREVOVElGSUVSKTsKIAotICAgIG1fcHJpdmF0ZS0+c2V0Q2xpZW50KG51bGxwdHIp
OwogICAgIG1fcHJpdmF0ZS0+c2V0SXNBdHRhY2hlZChmYWxzZSk7CisgICAgbV9wcml2YXRlLT5z
ZXRDbGllbnQobnVsbHB0cik7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxUaW1lUmFuZ2VzPj4gU291
cmNlQnVmZmVyOjpidWZmZXJlZCgpIGNvbnN0CkBAIC0xMTYsNyArMTE2LDcgQEAgRXhjZXB0aW9u
T3I8UmVmPFRpbWVSYW5nZXM+PiBTb3VyY2VCdWZmZXI6OmJ1ZmZlcmVkKCkgY29uc3QKICAgICAg
ICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CiAKICAgICAvLyAyLiBS
ZXR1cm4gYSBuZXcgc3RhdGljIG5vcm1hbGl6ZWQgVGltZVJhbmdlcyBvYmplY3QgZm9yIHRoZSBt
ZWRpYSBzZWdtZW50cyBidWZmZXJlZC4KLSAgICByZXR1cm4gbV9wcml2YXRlLT5idWZmZXJlZCgp
LT5jb3B5KCk7CisgICAgcmV0dXJuIG1fYnVmZmVyZWQtPmNvcHkoKTsKIH0KIAogZG91YmxlIFNv
dXJjZUJ1ZmZlcjo6dGltZXN0YW1wT2Zmc2V0KCkgY29uc3QKQEAgLTU1MiwxMCArNTUyLDYgQEAg
dm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShBcHBl
bmRSZXN1bHQgcmVzdWx0KQogICAgIGlmIChpc1JlbW92ZWQoKSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgLy8gUmVzb2x2ZSB0aGUgY2hhbmdlcyBpdCBUcmFja0J1ZmZlcnMnIGJ1ZmZlcmVkIHJh
bmdlcwotICAgIC8vIGludG8gdGhlIFNvdXJjZUJ1ZmZlcidzIGJ1ZmZlcmVkIHJhbmdlcwotICAg
IG1fcHJpdmF0ZS0+dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKG1fc291cmNlLT5pc0Vu
ZGVkKCkpOwotCiAgICAgLy8gU2VjdGlvbiAzLjUuNSBCdWZmZXIgQXBwZW5kIEFsZ29yaXRobSwg
Y3RkLgogICAgIC8vIGh0dHBzOi8vZHZjcy53My5vcmcvaGcvaHRtbC1tZWRpYS9yYXctZmlsZS9k
ZWZhdWx0L21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2UuaHRtbCNzb3VyY2VidWZmZXItYnVmZmVy
LWFwcGVuZAogCkBAIC02MzQsNyArNjMwLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnJlbW92ZVRp
bWVyRmlyZWQoKQogICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLnVwZGF0ZWVuZEV2ZW50
KTsKIH0KIAotc2l6ZV90IFNvdXJjZUJ1ZmZlcjo6bWF4aW11bUJ1ZmZlclNpemUoKSBjb25zdAor
dWludDY0X3QgU291cmNlQnVmZmVyOjptYXhpbXVtQnVmZmVyU2l6ZSgpIGNvbnN0CiB7CiAgICAg
aWYgKGlzUmVtb3ZlZCgpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTY3OCwxMCArNjc0LDEyIEBA
IHZvaWQgU291cmNlQnVmZmVyOjpzZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiAgICAgICAgIG1fc291
cmNlLT5zb3VyY2VCdWZmZXJEaWRDaGFuZ2VBY3RpdmVTdGF0ZSgqdGhpcywgYWN0aXZlKTsKIH0K
IAotdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlh
bGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXRpYWxpemF0aW9uU2VnbWVudCYgc2VnbWVudCkKK3Zv
aWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0
aW9uU2VnbWVudChJbml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKGlzUmVtb3ZlZCgp
KQorICAgIGlmIChpc1JlbW92ZWQoKSkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
ICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSKTsK
IApAQCAtNzA0LDYgKzcwMiw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2
YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0CiAgICAgLy8gd2l0
aCB0aGUgZGVjb2RlIGVycm9yIHBhcmFtZXRlciBzZXQgdG8gdHJ1ZSBhbmQgYWJvcnQgdGhlc2Ug
c3RlcHMuCiAgICAgaWYgKHNlZ21lbnQuYXVkaW9UcmFja3MuaXNFbXB0eSgpICYmIHNlZ21lbnQu
dmlkZW9UcmFja3MuaXNFbXB0eSgpICYmIHNlZ21lbnQudGV4dFRyYWNrcy5pc0VtcHR5KCkpIHsK
ICAgICAgICAgYXBwZW5kRXJyb3IodHJ1ZSk7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTcxMyw2ICs3MTIsNyBAQCB2b2lkIFNvdXJj
ZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21l
bnQoY29uc3QgSW5pdAogICAgICAgICAvLyB3aXRoIHRoZSBkZWNvZGUgZXJyb3IgcGFyYW1ldGVy
IHNldCB0byB0cnVlIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICAgICAgaWYgKCF2YWxpZGF0
ZUluaXRpYWxpemF0aW9uU2VnbWVudChzZWdtZW50KSkgewogICAgICAgICAgICAgYXBwZW5kRXJy
b3IodHJ1ZSk7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTgxNSwxMCArODE1LDEwIEBAIHZvaWQgU291cmNlQnVm
ZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChj
b25zdCBJbml0CiAgICAgICAgICAgICAvLyByZWZlcmVuY2VkIGJ5IHRoZSBhdWRpb1RyYWNrcyBh
dHRyaWJ1dGUgb24gdGhlIEhUTUxNZWRpYUVsZW1lbnQuCiAgICAgICAgICAgICBtX3NvdXJjZS0+
bWVkaWFFbGVtZW50KCktPmVuc3VyZUF1ZGlvVHJhY2tzKCkuYXBwZW5kKG5ld0F1ZGlvVHJhY2su
Y29weVJlZigpKTsKIAotICAgICAgICAgICAgLy8gNS4yLjggQ3JlYXRlIGEgbmV3IHRyYWNrIGJ1
ZmZlciB0byBzdG9yZSBjb2RlZCBmcmFtZXMgZm9yIHRoaXMgdHJhY2suCi0gICAgICAgICAgICBt
X3ByaXZhdGUtPmFkZFRyYWNrQnVmZmVyKG5ld0F1ZGlvVHJhY2stPmlkKCksIGF1ZGlvVHJhY2tJ
bmZvLmRlc2NyaXB0aW9uKTsKLQogICAgICAgICAgICAgbV9hdWRpb0NvZGVjcy5hcHBlbmQoYXVk
aW9UcmFja0luZm8uZGVzY3JpcHRpb24tPmNvZGVjKCkpOworCisgICAgICAgICAgICAvLyA1LjIu
OCBDcmVhdGUgYSBuZXcgdHJhY2sgYnVmZmVyIHRvIHN0b3JlIGNvZGVkIGZyYW1lcyBmb3IgdGhp
cyB0cmFjay4KKyAgICAgICAgICAgIG1fcHJpdmF0ZS0+YWRkVHJhY2tCdWZmZXIobmV3QXVkaW9U
cmFjay0+aWQoKSwgV1RGTW92ZShhdWRpb1RyYWNrSW5mby5kZXNjcmlwdGlvbikpOwogICAgICAg
ICB9CiAKICAgICAgICAgLy8gNS4zIEZvciBlYWNoIHZpZGVvIHRyYWNrIGluIHRoZSBpbml0aWFs
aXphdGlvbiBzZWdtZW50LCBydW4gZm9sbG93aW5nIHN0ZXBzOgpAQCAtODUwLDEwICs4NTAsMTAg
QEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlh
bGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXQKICAgICAgICAgICAgIC8vIHJlZmVyZW5jZWQgYnkg
dGhlIHZpZGVvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4KICAgICAg
ICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+ZW5zdXJlVmlkZW9UcmFja3MoKS5hcHBl
bmQobmV3VmlkZW9UcmFjay5jb3B5UmVmKCkpOwogCi0gICAgICAgICAgICAvLyA1LjMuOCBDcmVh
dGUgYSBuZXcgdHJhY2sgYnVmZmVyIHRvIHN0b3JlIGNvZGVkIGZyYW1lcyBmb3IgdGhpcyB0cmFj
ay4KLSAgICAgICAgICAgIG1fcHJpdmF0ZS0+YWRkVHJhY2tCdWZmZXIobmV3VmlkZW9UcmFjay0+
aWQoKSwgdmlkZW9UcmFja0luZm8uZGVzY3JpcHRpb24pOwotCiAgICAgICAgICAgICBtX3ZpZGVv
Q29kZWNzLmFwcGVuZCh2aWRlb1RyYWNrSW5mby5kZXNjcmlwdGlvbi0+Y29kZWMoKSk7CisKKyAg
ICAgICAgICAgIC8vIDUuMy44IENyZWF0ZSBhIG5ldyB0cmFjayBidWZmZXIgdG8gc3RvcmUgY29k
ZWQgZnJhbWVzIGZvciB0aGlzIHRyYWNrLgorICAgICAgICAgICAgbV9wcml2YXRlLT5hZGRUcmFj
a0J1ZmZlcihuZXdWaWRlb1RyYWNrLT5pZCgpLCBXVEZNb3ZlKHZpZGVvVHJhY2tJbmZvLmRlc2Ny
aXB0aW9uKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyA1LjQgRm9yIGVhY2ggdGV4dCB0cmFj
ayBpbiB0aGUgaW5pdGlhbGl6YXRpb24gc2VnbWVudCwgcnVuIGZvbGxvd2luZyBzdGVwczoKQEAg
LTg4MiwxMCArODgyLDEwIEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRl
RGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0CiAgICAgICAgICAgICAv
LyByZWZlcmVuY2VkIGJ5IHRoZSB0ZXh0VHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlh
RWxlbWVudC4KICAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+ZW5zdXJlVGV4
dFRyYWNrcygpLmFwcGVuZChuZXdUZXh0VHJhY2suY29weVJlZigpKTsKIAotICAgICAgICAgICAg
Ly8gNS40LjcgQ3JlYXRlIGEgbmV3IHRyYWNrIGJ1ZmZlciB0byBzdG9yZSBjb2RlZCBmcmFtZXMg
Zm9yIHRoaXMgdHJhY2suCi0gICAgICAgICAgICBtX3ByaXZhdGUtPmFkZFRyYWNrQnVmZmVyKG5l
d1RleHRUcmFjay0+aWQoKSwgdGV4dFRyYWNrSW5mby5kZXNjcmlwdGlvbik7Ci0KICAgICAgICAg
ICAgIG1fdGV4dENvZGVjcy5hcHBlbmQodGV4dFRyYWNrSW5mby5kZXNjcmlwdGlvbi0+Y29kZWMo
KSk7CisKKyAgICAgICAgICAgIC8vIDUuNC43IENyZWF0ZSBhIG5ldyB0cmFjayBidWZmZXIgdG8g
c3RvcmUgY29kZWQgZnJhbWVzIGZvciB0aGlzIHRyYWNrLgorICAgICAgICAgICAgbV9wcml2YXRl
LT5hZGRUcmFja0J1ZmZlcihuZXdUZXh0VHJhY2stPmlkKCksIFdURk1vdmUodGV4dFRyYWNrSW5m
by5kZXNjcmlwdGlvbikpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gNS41IElmIGFjdGl2ZSB0
cmFjayBmbGFnIGVxdWFscyB0cnVlLCB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgpAQCAt
OTAyLDYgKzkwMiw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlk
UmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0CiAgICAgLy8gKE5vdGU6IElz
c3VlICMxNTUgYWRkcyB0aGlzIHN0ZXAgYWZ0ZXIgc3RlcCA1OikKICAgICAvLyA2LiBTZXQgIHBl
bmRpbmcgaW5pdGlhbGl6YXRpb24gc2VnbWVudCBmb3IgY2hhbmdlVHlwZSBmbGFnICB0byBmYWxz
ZS4KICAgICBtX3BlbmRpbmdJbml0aWFsaXphdGlvblNlZ21lbnRGb3JDaGFuZ2VUeXBlID0gZmFs
c2U7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIAogICAgIC8vIDYuIElmIHRoZSBIVE1MTWVk
aWFFbGVtZW50LnJlYWR5U3RhdGUgYXR0cmlidXRlIGlzIEhBVkVfTk9USElORywgdGhlbiBydW4g
dGhlIGZvbGxvd2luZyBzdGVwczoKICAgICBpZiAobV9wcml2YXRlLT5yZWFkeVN0YXRlKCkgPT0g
TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3RoaW5nKSB7CkBAIC0xMDExLDE2ICsxMDEy
LDYgQEAgYm9vbCBTb3VyY2VCdWZmZXI6Omhhc1ZpZGVvKCkgY29uc3QKICAgICByZXR1cm4gbV92
aWRlb1RyYWNrcyAmJiBtX3ZpZGVvVHJhY2tzLT5sZW5ndGgoKTsKIH0KIAotYm9vbCBTb3VyY2VC
dWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRpbygpIGNvbnN0Ci17Ci0gICAgcmV0dXJu
IGhhc0F1ZGlvKCk7Ci19Ci0KLWJvb2wgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRl
SGFzVmlkZW8oKSBjb25zdAotewotICAgIHJldHVybiBoYXNWaWRlbygpOwotfQotCiB2b2lkIFNv
dXJjZUJ1ZmZlcjo6dmlkZW9UcmFja1NlbGVjdGVkQ2hhbmdlZChWaWRlb1RyYWNrJiB0cmFjaykK
IHsKICAgICAvLyAyLjQuNSBDaGFuZ2VzIHRvIHNlbGVjdGVkL2VuYWJsZWQgdHJhY2sgc3RhdGUK
QEAgLTEyMDQsOSArMTE5NSw5IEBAIGJvb2wgU291cmNlQnVmZmVyOjpjYW5QbGF5VGhyb3VnaFJh
bmdlKFBsYXRmb3JtVGltZVJhbmdlcyYgcmFuZ2VzKQogICAgIHJldHVybiB1bmJ1ZmZlcmVkVGlt
ZS50b0RvdWJsZSgpIC8gbV9hdmVyYWdlQnVmZmVyUmF0ZSA8IHRpbWVSZW1haW5pbmcudG9Eb3Vi
bGUoKTsKIH0KIAotc2l6ZV90IFNvdXJjZUJ1ZmZlcjo6ZXh0cmFNZW1vcnlDb3N0KCkgY29uc3QK
K3VpbnQ2NF90IFNvdXJjZUJ1ZmZlcjo6ZXh0cmFNZW1vcnlDb3N0KCkgY29uc3QKIHsKLSAgICBz
aXplX3QgZXh0cmFNZW1vcnlDb3N0ID0gbV9wZW5kaW5nQXBwZW5kRGF0YS5jYXBhY2l0eSgpOwor
ICAgIHVpbnQ2NF90IGV4dHJhTWVtb3J5Q29zdCA9IG1fcGVuZGluZ0FwcGVuZERhdGEuY2FwYWNp
dHkoKTsKICAgICBleHRyYU1lbW9yeUNvc3QgKz0gbV9wcml2YXRlLT50b3RhbFRyYWNrQnVmZmVy
U2l6ZUluQnl0ZXMoKTsKIAogICAgIHJldHVybiBleHRyYU1lbW9yeUNvc3Q7CkBAIC0xMjE0LDEx
ICsxMjA1LDExIEBAIHNpemVfdCBTb3VyY2VCdWZmZXI6OmV4dHJhTWVtb3J5Q29zdCgpIGNvbnN0
CiAKIHZvaWQgU291cmNlQnVmZmVyOjpyZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZCgpCiB7Ci0g
ICAgc2l6ZV90IGV4dHJhTWVtb3J5Q29zdCA9IHRoaXMtPmV4dHJhTWVtb3J5Q29zdCgpOworICAg
IHVpbnQ2NF90IGV4dHJhTWVtb3J5Q29zdCA9IHRoaXMtPmV4dHJhTWVtb3J5Q29zdCgpOwogICAg
IGlmIChleHRyYU1lbW9yeUNvc3QgPD0gbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgc2l6ZV90IGV4dHJhTWVtb3J5Q29zdERlbHRhID0gZXh0cmFNZW1v
cnlDb3N0IC0gbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdDsKKyAgICB1aW50NjRfdCBleHRyYU1l
bW9yeUNvc3REZWx0YSA9IGV4dHJhTWVtb3J5Q29zdCAtIG1fcmVwb3J0ZWRFeHRyYU1lbW9yeUNv
c3Q7CiAgICAgbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdCA9IGV4dHJhTWVtb3J5Q29zdDsKIAog
ICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT52bSgp
KTsKQEAgLTEyNDIsNyArMTIzMyw3IEBAIE1lZGlhVGltZSBTb3VyY2VCdWZmZXI6Om1pbmltdW1V
cGNvbWluZ1ByZXNlbnRhdGlvblRpbWVGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpCiAgICAgcmV0
dXJuIG1fcHJpdmF0ZS0+bWluaW11bVVwY29taW5nUHJlc2VudGF0aW9uVGltZUZvclRyYWNrSUQo
dHJhY2tJRCk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyOjpzZXRNYXhpbXVtUXVldWVEZXB0aEZv
clRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCwgc2l6ZV90IG1heFF1ZXVlRGVwdGgp
Cit2b2lkIFNvdXJjZUJ1ZmZlcjo6c2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JUcmFja0lEKGNvbnN0
IEF0b21TdHJpbmcmIHRyYWNrSUQsIHVpbnQ2NF90IG1heFF1ZXVlRGVwdGgpCiB7CiAgICAgbV9w
cml2YXRlLT5zZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQodHJhY2tJRCwgbWF4UXVldWVE
ZXB0aCk7CiB9CkBAIC0xMzAyLDE0ICsxMjkzLDI0IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzZXRT
aG91bGRHZW5lcmF0ZVRpbWVzdGFtcHMoYm9vbCBmbGFnKQogICAgIG1fcHJpdmF0ZS0+c2V0U2hv
dWxkR2VuZXJhdGVUaW1lc3RhbXBzKGZsYWcpOwogfQogCit2b2lkIFNvdXJjZUJ1ZmZlcjo6c291
cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGJvb2wgZmxhZykKK3sKKyAgICBt
X2J1ZmZlcmVkRGlydHkgPSBmbGFnOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVm
ZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChjb25zdCBQbGF0Zm9ybVRpbWVSYW5nZXMm
IHRpbWVSYW5nZXMpCit7CisgICAgbV9idWZmZXJlZC0+cmFuZ2VzKCkgPSB0aW1lUmFuZ2VzOwor
fQorCiBib29sIFNvdXJjZUJ1ZmZlcjo6aXNCdWZmZXJlZERpcnR5KCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gbV9wcml2YXRlLT5pc0J1ZmZlcmVkRGlydHkoKTsKKyAgICByZXR1cm4gbV9idWZmZXJl
ZERpcnR5OwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlcjo6c2V0QnVmZmVyZWREaXJ0eShib29sIGZs
YWcpCiB7Ci0gICAgbV9wcml2YXRlLT5zZXRCdWZmZXJlZERpcnR5KGZsYWcpOworICAgIG1fYnVm
ZmVyZWREaXJ0eSA9IGZsYWc7CiB9CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCmluZGV4
IGQxNWMyOWJjZDg4NjJlOTJiNDZkOTNiMDEyNTA1MDE5MzQ5ZTJjZjguLjIyOTNiYzUwNzdiYjE3
Njk4NDIyZGUwZTY2ZWRmNGE3OWIxZmFlNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaApAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6
CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1l
ZGlhVGltZSYpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IGNoYW5nZVR5cGUoY29uc3QgU3RyaW5n
Jik7CiAKLSAgICBjb25zdCBUaW1lUmFuZ2VzJiBidWZmZXJlZEludGVybmFsKCkgY29uc3QgeyBB
U1NFUlQobV9wcml2YXRlLT5idWZmZXJlZCgpKTsgcmV0dXJuICptX3ByaXZhdGUtPmJ1ZmZlcmVk
KCk7IH0KKyAgICBjb25zdCBUaW1lUmFuZ2VzJiBidWZmZXJlZEludGVybmFsKCkgY29uc3QgeyBB
U1NFUlQobV9idWZmZXJlZCk7IHJldHVybiAqbV9idWZmZXJlZDsgfQogCiAgICAgdm9pZCBhYm9y
dElmVXBkYXRpbmcoKTsKICAgICB2b2lkIHJlbW92ZWRGcm9tTWVkaWFTb3VyY2UoKTsKQEAgLTE0
OCwxNSArMTQ4LDE1IEBAIHByaXZhdGU6CiAgICAgYm9vbCB2aXJ0dWFsSGFzUGVuZGluZ0FjdGl2
aXR5KCkgY29uc3QgZmluYWw7CiAKICAgICAvLyBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50Ci0g
ICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVu
dChjb25zdCBJbml0aWFsaXphdGlvblNlZ21lbnQmKSBmaW5hbDsKKyAgICB2b2lkIHNvdXJjZUJ1
ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemF0aW9u
U2VnbWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOworICAgIHZvaWQg
c291cmNlQnVmZmVyUHJpdmF0ZVN0cmVhbUVuZGVkV2l0aERlY29kZUVycm9yKCkgZmluYWw7CiAg
ICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9vbCBkZWNvZGVFcnJvcikg
ZmluYWw7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoQXBwZW5k
UmVzdWx0KSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5n
ZWQoY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbikgZmluYWw7CiAgICAgdm9pZCBzb3VyY2VCdWZm
ZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoZG91YmxlIHNhbXBsZUR1cmF0aW9uKSBmaW5hbDsKICAg
ICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWREcm9wU2FtcGxlKCkgZmluYWw7Ci0gICAgdm9p
ZCBzb3VyY2VCdWZmZXJQcml2YXRlU3RyZWFtRW5kZWRXaXRoRGVjb2RlRXJyb3IoKSBmaW5hbDsK
LSAgICBib29sIHNvdXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRpbygpIGNvbnN0IGZpbmFsOwotICAg
IGJvb2wgc291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKCkgY29uc3QgZmluYWw7Ci0gICAgdm9p
ZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoQXBwZW5kUmVzdWx0KSBmaW5hbDsK
KyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZChib29sKSBm
aW5hbDsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQo
Y29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJikgZmluYWw7CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQ
cml2YXRlRGlkUmVjZWl2ZVJlbmRlcmluZ0Vycm9yKGludCBlcnJvckNvZGUpIGZpbmFsOwogCiAg
ICAgLy8gQXVkaW9UcmFja0NsaWVudApAQCAtMTg1LDEzICsxODUsMTMgQEAgcHJpdmF0ZToKIAog
ICAgIGJvb2wgdmFsaWRhdGVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgSW5pdGlhbGl6YXRp
b25TZWdtZW50Jik7CiAKLSAgICBzaXplX3QgbWF4aW11bUJ1ZmZlclNpemUoKSBjb25zdDsKKyAg
ICB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSgpIGNvbnN0OwogCiAgICAgdm9pZCBtb25pdG9y
QnVmZmVyaW5nUmF0ZSgpOwogCiAgICAgdm9pZCByZW1vdmVUaW1lckZpcmVkKCk7CiAKLSAgICBz
aXplX3QgZXh0cmFNZW1vcnlDb3N0KCkgY29uc3Q7CisgICAgdWludDY0X3QgZXh0cmFNZW1vcnlD
b3N0KCkgY29uc3Q7CiAgICAgdm9pZCByZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZCgpOwogCiAg
ICAgdm9pZCBhcHBlbmRFcnJvcihib29sKTsKQEAgLTIwNCw3ICsyMDQsNyBAQCBwcml2YXRlOgog
ICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+IGJ1ZmZlcmVkU2FtcGxlc0ZvclRyYWNr
SUQoY29uc3QgQXRvbVN0cmluZyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFZlY3RvcjxTdHJpbmc+
IGVucXVldWVkU2FtcGxlc0ZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYpOwogICAgIFdFQkNP
UkVfRVhQT1JUIE1lZGlhVGltZSBtaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lRm9yVHJh
Y2tJRChjb25zdCBBdG9tU3RyaW5nJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNYXhp
bXVtUXVldWVEZXB0aEZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYsIHNpemVfdCk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQoY29uc3Qg
QXRvbVN0cmluZyYsIHVpbnQ2NF90KTsKIAogICAgIFJlZjxTb3VyY2VCdWZmZXJQcml2YXRlPiBt
X3ByaXZhdGU7CiAgICAgTWVkaWFTb3VyY2UqIG1fc291cmNlOwpAQCAtMjMxLDggKzIzMSwxMCBA
QCBwcml2YXRlOgogICAgIE1vbm90b25pY1RpbWUgbV90aW1lT2ZCdWZmZXJpbmdNb25pdG9yOwog
ICAgIGRvdWJsZSBtX2J1ZmZlcmVkU2luY2VMYXN0TW9uaXRvciB7IDAgfTsKICAgICBkb3VibGUg
bV9hdmVyYWdlQnVmZmVyUmF0ZSB7IDAgfTsKKyAgICBib29sIG1fYnVmZmVyZWREaXJ0eSB7IHRy
dWUgfTsKKyAgICBSZWZQdHI8VGltZVJhbmdlcz4gbV9idWZmZXJlZDsKIAotICAgIHNpemVfdCBt
X3JlcG9ydGVkRXh0cmFNZW1vcnlDb3N0IHsgMCB9OworICAgIHVpbnQ2NF90IG1fcmVwb3J0ZWRF
eHRyYU1lbW9yeUNvc3QgeyAwIH07CiAKICAgICBNZWRpYVRpbWUgbV9wZW5kaW5nUmVtb3ZlU3Rh
cnQ7CiAgICAgTWVkaWFUaW1lIG1fcGVuZGluZ1JlbW92ZUVuZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhU291cmNlUHJpdmF0ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmgKaW5kZXggNjU3
MGJmNmVlOTY4MjdlMDA5NDZmOWYxOTYwODhhZGMyYzRiZGI2My4uMjkzMjg4NjNiMTRmMjZkY2I5
Y2MxMWMwMjM2NjBkNTIwM2I4OTBmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmgKQEAgLTU1LDEwICs1NSwxMSBAQCBw
dWJsaWM6CiAgICAgICAgIFJlYWNoZWRJZExpbWl0CiAgICAgfTsKICAgICB2aXJ0dWFsIEFkZFN0
YXR1cyBhZGRTb3VyY2VCdWZmZXIoY29uc3QgQ29udGVudFR5cGUmLCBSZWZQdHI8U291cmNlQnVm
ZmVyUHJpdmF0ZT4mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGR1cmF0aW9uQ2hhbmdlZCgpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpID0g
MDsKICAgICBlbnVtIEVuZE9mU3RyZWFtU3RhdHVzIHsgRW9zTm9FcnJvciwgRW9zTmV0d29ya0Vy
cm9yLCBFb3NEZWNvZGVFcnJvciB9OwogICAgIHZpcnR1YWwgdm9pZCBtYXJrRW5kT2ZTdHJlYW0o
RW5kT2ZTdHJlYW1TdGF0dXMpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5tYXJrRW5kT2ZTdHJl
YW0oKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzRW5kZWQoKSBjb25zdCA9IDA7CiAKICAgICB2
aXJ0dWFsIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpID0g
MDsKQEAgLTY2LDEwICs2NywxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdhaXRGb3JT
ZWVrQ29tcGxldGVkKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZWVrQ29tcGxldGVkKCkgPSAw
OwogCisgICAgdm9pZCBzZXRUaW1lRnVkZ2VGYWN0b3IoY29uc3QgTWVkaWFUaW1lJiBmdWRnZUZh
Y3RvcikgeyBtX3RpbWVGdWRnZUZhY3RvciA9IGZ1ZGdlRmFjdG9yOyB9CisgICAgTWVkaWFUaW1l
IHRpbWVGdWRnZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUZ1ZGdlRmFjdG9yOyB9CiAg
ICAgdm9pZCBzZXRJc1NlZWtpbmcoYm9vbCBmbGFnKSB7IG1faXNTZWVraW5nID0gZmxhZzsgfQog
ICAgIGJvb2wgaXNTZWVraW5nKCkgY29uc3QgeyByZXR1cm4gbV9pc1NlZWtpbmc7IH0KIAogcHJp
dmF0ZToKKyAgICBNZWRpYVRpbWUgbV90aW1lRnVkZ2VGYWN0b3I7CiAgICAgYm9vbCBtX2lzU2Vl
a2luZyB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCmluZGV4IDBmM2ZhNjZkOTkxZWIz
OWEzMDYxYWUyZjhlYmZlZWIyZDUzMDQ1YzkuLjdiZTAwMjFkOWJiNmRmMTA3ZDcxYTRmMTVhNzE1
NTZkZTE5ZWU3MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3BwCkBAIC02NSw2ICs2NSw4IEBAIFNvdXJjZUJ1
ZmZlclByaXZhdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGUoKQogewogfQogCitTb3VyY2VCdWZmZXJQ
cml2YXRlOjp+U291cmNlQnVmZmVyUHJpdmF0ZSgpID0gZGVmYXVsdDsKKwogdm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlOjpyZXNldFRpbWVzdGFtcE9mZnNldEluVHJhY2tCdWZmZXJzKCkKIHsKICAg
ICBmb3IgKGF1dG8mIHRyYWNrQnVmZmVyIDogbV90cmFja0J1ZmZlck1hcC52YWx1ZXMoKSkgewpA
QCAtNzMsNiArNzUsMTIgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpyZXNldFRpbWVzdGFt
cE9mZnNldEluVHJhY2tCdWZmZXJzKCkKICAgICB9CiB9CiAKK3ZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZTo6c2V0QnVmZmVyZWREaXJ0eShib29sIGZsYWcpCit7CisgICAgaWYgKG1fY2xpZW50KQor
ICAgICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2Vk
KGZsYWcpOworfQorCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnJlc2V0VHJhY2tCdWZmZXJz
KCkKIHsKICAgICBmb3IgKGF1dG8mIHRyYWNrQnVmZmVyUGFpciA6IG1fdHJhY2tCdWZmZXJNYXAu
dmFsdWVzKCkpIHsKQEAgLTk2LDYgKzEwNCwxMyBAQCBNZWRpYVRpbWUgU291cmNlQnVmZmVyUHJp
dmF0ZTo6aGlnaGVzdFByZXNlbnRhdGlvblRpbWVzdGFtcCgpIGNvbnN0CiAgICAgcmV0dXJuIGhp
Z2hlc3RUaW1lOwogfQogCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnNldEJ1ZmZlcmVkUmFu
Z2VzKGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYgdGltZVJhbmdlcykKK3sKKyAgICBtX2J1ZmZl
cmVkLT5yYW5nZXMoKSA9IHRpbWVSYW5nZXM7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBt
X2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChtX2J1ZmZl
cmVkLT5yYW5nZXMoKSk7Cit9CisKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6dXBkYXRlQnVm
ZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCkKIHsKICAgICAvLyAzLjEg
QXR0cmlidXRlcywgYnVmZmVyZWQKQEAgLTExMiw3ICsxMjcsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGU6OnVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVmZmVycyhib29sIHNvdXJjZUlzRW5k
ZWQpCiAgICAgLy8gTk9URTogU2hvcnQgY2lyY3VpdCB0aGUgZm9sbG93aW5nIGlmIG5vbmUgb2Yg
dGhlIFRyYWNrQnVmZmVycyBoYXZlIGJ1ZmZlcmVkIHJhbmdlcyB0byBhdm9pZCBnZW5lcmF0aW5n
CiAgICAgLy8gYSBzaW5nbGUgcmFuZ2Ugb2YgezAsIDB9LgogICAgIGlmIChoaWdoZXN0RW5kVGlt
ZS5pc05lZ2F0aXZlSW5maW5pdGUoKSkgewotICAgICAgICBtX2J1ZmZlcmVkLT5yYW5nZXMoKSA9
IFBsYXRmb3JtVGltZVJhbmdlcygpOworICAgICAgICBzZXRCdWZmZXJlZFJhbmdlcyhQbGF0Zm9y
bVRpbWVSYW5nZXMoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzNywxMCArMTUy
LDIwIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tC
dWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCkKIAogICAgIC8vIDUuIElmIGludGVyc2VjdGlvbiBy
YW5nZXMgZG9lcyBub3QgY29udGFpbiB0aGUgZXhhY3Qgc2FtZSByYW5nZSBpbmZvcm1hdGlvbiBh
cyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSwKICAgICAvLyAgICB0aGVuIHVw
ZGF0ZSB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSB0byBpbnRlcnNlY3Rpb24g
cmFuZ2VzLgotICAgIG1fYnVmZmVyZWQtPnJhbmdlcygpID0gaW50ZXJzZWN0aW9uUmFuZ2VzOwor
ICAgIHNldEJ1ZmZlcmVkUmFuZ2VzKGludGVyc2VjdGlvblJhbmdlcyk7CiAgICAgc2V0QnVmZmVy
ZWREaXJ0eSh0cnVlKTsKIH0KIAordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmRDb21w
bGV0ZWQoYm9vbCBwYXJzaW5nU3VjY2VlZGVkLCBib29sIGlzRW5kZWQpCit7CisgICAgLy8gUmVz
b2x2ZSB0aGUgY2hhbmdlcyBpbiBUcmFja0J1ZmZlcnMnIGJ1ZmZlcmVkIHJhbmdlcworICAgIC8v
IGludG8gdGhlIFNvdXJjZUJ1ZmZlcidzIGJ1ZmZlcmVkIHJhbmdlcworICAgIHVwZGF0ZUJ1ZmZl
cmVkRnJvbVRyYWNrQnVmZmVycyhpc0VuZGVkKTsKKworICAgIGlmIChtX2NsaWVudCkKKyAgICAg
ICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShwYXJzaW5nU3Vj
Y2VlZGVkID8gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0OjpBcHBlbmRT
dWNjZWVkZWQgOiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQ6OlBhcnNp
bmdGYWlsZWQpOworfQorCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnJlZW5xdWVTYW1wbGVz
KGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpCiB7CiAgICAgaWYgKCFtX2lzQXR0YWNoZWQpCkBA
IC0xNzgsOSArMjAzLDkgQEAgVmVjdG9yPFN0cmluZz4gU291cmNlQnVmZmVyUHJpdmF0ZTo6YnVm
ZmVyZWRTYW1wbGVzRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJgogewogICAgIGF1dG8gaXQg
PSBtX3RyYWNrQnVmZmVyTWFwLmZpbmQodHJhY2tJRCk7CiAgICAgaWYgKGl0ID09IG1fdHJhY2tC
dWZmZXJNYXAuZW5kKCkpCi0gICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworICAgICAg
ICByZXR1cm4geyB9OwogCi0gICAgVHJhY2tCdWZmZXImIHRyYWNrQnVmZmVyID0gaXQtPnZhbHVl
OworICAgIGF1dG8mIHRyYWNrQnVmZmVyID0gaXQtPnZhbHVlOwogICAgIFZlY3RvcjxTdHJpbmc+
IHNhbXBsZURlc2NyaXB0aW9uczsKICAgICBmb3IgKGF1dG8mIHBhaXIgOiB0cmFja0J1ZmZlci5z
YW1wbGVzLmRlY29kZU9yZGVyKCkpCiAgICAgICAgIHNhbXBsZURlc2NyaXB0aW9ucy5hcHBlbmQo
dG9TdHJpbmcoKnBhaXIuc2Vjb25kKSk7CkBAIC0zMTcsNyArMzQyLDcgQEAgdm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlOjpwcm92aWRlTWVkaWFEYXRhKFRyYWNrQnVmZmVyJiB0cmFja0J1ZmZlciwg
Y29uc3QgQXRvbVMKICAgICB1cGRhdGVNaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lKHRy
YWNrQnVmZmVyLCB0cmFja0lEKTsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAotICAgIERF
QlVHX0xPRyhMT0dJREVOVElGSUVSLCAiZW5xdWV1ZWQgIiwgZW5xdWV1ZWRTYW1wbGVzLCAiIHNh
bXBsZXMsICIsIHN0YXRpY19jYXN0PHNpemVfdD4odHJhY2tCdWZmZXIuZGVjb2RlUXVldWUuc2l6
ZSgpKSwgIiByZW1haW5pbmciKTsKKyAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgImVucXVl
dWVkICIsIGVucXVldWVkU2FtcGxlcywgIiBzYW1wbGVzLCAiLCBzdGF0aWNfY2FzdDx1aW50NjRf
dD4odHJhY2tCdWZmZXIuZGVjb2RlUXVldWUuc2l6ZSgpKSwgIiByZW1haW5pbmciKTsKICNlbmRp
ZgogCiAgICAgYWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCh0cmFja0lEKTsKQEAgLTMzOSw3ICsz
NjQsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnJlZW5xdWV1ZU1lZGlhRm9yVGltZShU
cmFja0J1ZmZlciYgdHJhY2tCdWZmZXIsIGNvbnN0CiAgICAgICAgIGN1cnJlbnRTYW1wbGVQVFNJ
dGVyYXRvciA9IHRyYWNrQnVmZmVyLnNhbXBsZXMucHJlc2VudGF0aW9uT3JkZXIoKS5maW5kU2Ft
cGxlU3RhcnRpbmdPbk9yQWZ0ZXJQcmVzZW50YXRpb25UaW1lKHRpbWUpOwogCiAgICAgaWYgKGN1
cnJlbnRTYW1wbGVQVFNJdGVyYXRvciA9PSB0cmFja0J1ZmZlci5zYW1wbGVzLnByZXNlbnRhdGlv
bk9yZGVyKCkuZW5kKCkKLSAgICAgICAgfHwgKGN1cnJlbnRTYW1wbGVQVFNJdGVyYXRvci0+Zmly
c3QgLSB0aW1lKSA+IG1fY3VycmVudFRpbWVGdWRnZUZhY3RvcikKKyAgICAgICAgfHwgKGN1cnJl
bnRTYW1wbGVQVFNJdGVyYXRvci0+Zmlyc3QgLSB0aW1lKSA+IHRpbWVGdWRnZUZhY3RvcigpKQog
ICAgICAgICByZXR1cm47CiAKICAgICAvLyBTZWFjaCBiYWNrd2FyZCBmb3IgdGhlIHByZXZpb3Vz
IHN5bmMgc2FtcGxlLgpAQCAtMzY3LDcgKzM5Miw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZTo6cmVlbnF1ZXVlTWVkaWFGb3JUaW1lKFRyYWNrQnVmZmVyJiB0cmFja0J1ZmZlciwgY29uc3QK
ICAgICB0cmFja0J1ZmZlci5uZWVkc1JlZW5xdWV1ZWluZyA9IGZhbHNlOwogfQogCi12b2lkIFNv
dXJjZUJ1ZmZlclByaXZhdGU6OnJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQoY29uc3QgTWVkaWFUaW1l
JiBjdXJyZW50VGltZSwgc2l6ZV90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHNpemVfdCBt
YXhpbXVtQnVmZmVyU2l6ZSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6cmVlbnF1ZXVlTWVk
aWFJZk5lZWRlZChjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCB1aW50NjRfdCBwZW5kaW5n
QXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSkKIHsKICAgICBm
b3IgKGF1dG8mIHRyYWNrQnVmZmVyUGFpciA6IG1fdHJhY2tCdWZmZXJNYXApIHsKICAgICAgICAg
VHJhY2tCdWZmZXImIHRyYWNrQnVmZmVyID0gdHJhY2tCdWZmZXJQYWlyLnZhbHVlOwpAQCAtMzk4
LDcgKzQyMyw3IEBAIHN0YXRpYyBQbGF0Zm9ybVRpbWVSYW5nZXMgcmVtb3ZlU2FtcGxlc0Zyb21U
cmFja0J1ZmZlcihjb25zdCBEZWNvZGVPcmRlclNhbXBsZU1hCiAjaWYgIVJFTEVBU0VfTE9HX0RJ
U0FCTEVECiAgICAgTWVkaWFUaW1lIGVhcmxpZXN0U2FtcGxlID0gTWVkaWFUaW1lOjpwb3NpdGl2
ZUluZmluaXRlVGltZSgpOwogICAgIE1lZGlhVGltZSBsYXRlc3RTYW1wbGUgPSBNZWRpYVRpbWU6
Onplcm9UaW1lKCk7Ci0gICAgc2l6ZV90IGJ5dGVzUmVtb3ZlZCA9IDA7CisgICAgdWludDY0X3Qg
Ynl0ZXNSZW1vdmVkID0gMDsKICAgICBhdXRvIGxvZ0lkZW50aWZpZXIgPSBXVEY6OkxvZ2dlcjo6
TG9nU2l0ZUlkZW50aWZpZXIoc291cmNlQnVmZmVyUHJpdmF0ZS0+bG9nQ2xhc3NOYW1lKCksIGxv
Z1ByZWZpeCwgc291cmNlQnVmZmVyUHJpdmF0ZS0+bG9nSWRlbnRpZmllcigpKTsKICAgICBhdXRv
JiBsb2dnZXIgPSBzb3VyY2VCdWZmZXJQcml2YXRlLT5sb2dnZXIoKTsKICAgICBhdXRvIHdpbGxM
b2cgPSBsb2dnZXIud2lsbExvZyhzb3VyY2VCdWZmZXJQcml2YXRlLT5sb2dDaGFubmVsKCksIFdU
RkxvZ0xldmVsOjpEZWJ1Zyk7CkBAIC00MDgsNyArNDMzLDcgQEAgc3RhdGljIFBsYXRmb3JtVGlt
ZVJhbmdlcyByZW1vdmVTYW1wbGVzRnJvbVRyYWNrQnVmZmVyKGNvbnN0IERlY29kZU9yZGVyU2Ft
cGxlTWEKICAgICBmb3IgKGNvbnN0IGF1dG8mIHNhbXBsZUl0IDogc2FtcGxlcykgewogICAgICAg
ICBjb25zdCBEZWNvZGVPcmRlclNhbXBsZU1hcDo6S2V5VHlwZSYgZGVjb2RlS2V5ID0gc2FtcGxl
SXQuZmlyc3Q7CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgICAgIHNpemVfdCBzdGFy
dEJ1ZmZlclNpemUgPSB0cmFja0J1ZmZlci5zYW1wbGVzLnNpemVJbkJ5dGVzKCk7CisgICAgICAg
IHVpbnQ2NF90IHN0YXJ0QnVmZmVyU2l6ZSA9IHRyYWNrQnVmZmVyLnNhbXBsZXMuc2l6ZUluQnl0
ZXMoKTsKICNlbmRpZgogCiAgICAgICAgIGNvbnN0IFJlZlB0cjxNZWRpYVNhbXBsZT4mIHNhbXBs
ZSA9IHNhbXBsZUl0LnNlY29uZDsKQEAgLTU3MCw3ICs1OTUsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGU6OnJlbW92ZUNvZGVkRnJhbWVzKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0
IE1lZGlhVAogICAgIExPRyhNZWRpYSwgIlNvdXJjZUJ1ZmZlcjo6cmVtb3ZlQ29kZWRGcmFtZXMo
JXApIC0gYnVmZmVyZWQgPSAlcyIsIHRoaXMsIHRvU3RyaW5nKG1fYnVmZmVyZWQtPnJhbmdlcygp
KS51dGY4KCkuZGF0YSgpKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpldmljdENv
ZGVkRnJhbWVzKHNpemVfdCBuZXdEYXRhU2l6ZSwgc2l6ZV90IHBlbmRpbmdBcHBlbmREYXRhQ2Fw
YWNpdHksIHNpemVfdCBtYXhpbXVtQnVmZmVyU2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50
VGltZSwgY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbiwgYm9vbCBpc0VuZGVkKQordm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlOjpldmljdENvZGVkRnJhbWVzKHVpbnQ2NF90IG5ld0RhdGFTaXplLCB1
aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVy
U2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50VGltZSwgY29uc3QgTWVkaWFUaW1lJiBkdXJh
dGlvbiwgYm9vbCBpc0VuZGVkKQogewogICAgIC8vIDMuNS4xMyBDb2RlZCBGcmFtZSBFdmljdGlv
biBBbGdvcml0aG0KICAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9tZWRpYS1zb3VyY2UvI3Nv
dXJjZWJ1ZmZlci1jb2RlZC1mcmFtZS1ldmljdGlvbgpAQCAtNTk0LDcgKzYxOSw3IEBAIHZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZTo6ZXZpY3RDb2RlZEZyYW1lcyhzaXplX3QgbmV3RGF0YVNpemUs
IHNpemVfdCBwZW5kaW5nQXBwCiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQgJiYgZmFsc2UK
ICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgImN1cnJlbnRUaW1lID0gIiwgY3VycmVudFRp
bWUsICIsIHJlcXVpcmUgIiwgZXh0cmFNZW1vcnlDb3N0KCkgKyBuZXdEYXRhU2l6ZSwgIiBieXRl
cywgbWF4aW11bSBidWZmZXIgc2l6ZSBpcyAiLCBtYXhpbXVtQnVmZmVyU2l6ZSk7Ci0gICAgc2l6
ZV90IGluaXRpYWxCdWZmZXJlZFNpemUgPSBleHRyYU1lbW9yeUNvc3QoKTsKKyAgICB1aW50NjRf
dCBpbml0aWFsQnVmZmVyZWRTaXplID0gZXh0cmFNZW1vcnlDb3N0KCk7CiAjZW5kaWYKIAogICAg
IE1lZGlhVGltZSByYW5nZVN0YXJ0ID0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpOwpAQCAtNjIzLDEw
ICs2NDgsMTAgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpldmljdENvZGVkRnJhbWVzKHNp
emVfdCBuZXdEYXRhU2l6ZSwgc2l6ZV90IHBlbmRpbmdBcHAKICAgICAvLyB0aGUgY3VycmVudCBi
dWZmZXJlZCByYW5nZSksIGRlbGV0ZSAzMCBzZWNvbmRzIGF0IGEgdGltZSBmcm9tIGR1cmF0aW9u
IGJhY2sgdG8gdGhlIGN1cnJlbnQgdGltZSByYW5nZSBvciAzMCBzZWNvbmRzIGFmdGVyCiAgICAg
Ly8gY3VycmVuVGltZSB3aGljaGV2ZXIgd2UgaGl0IGZpcnN0LgogICAgIGF1dG8gYnVmZmVyZWQg
PSBtX2J1ZmZlcmVkLT5yYW5nZXMoKTsKLSAgICBzaXplX3QgY3VycmVudFRpbWVSYW5nZSA9IGJ1
ZmZlcmVkLmZpbmQoY3VycmVudFRpbWUpOworICAgIHVpbnQ2NF90IGN1cnJlbnRUaW1lUmFuZ2Ug
PSBidWZmZXJlZC5maW5kKGN1cnJlbnRUaW1lKTsKICAgICBpZiAoY3VycmVudFRpbWVSYW5nZSA9
PSBidWZmZXJlZC5sZW5ndGgoKSAtIDEpIHsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQgJiYg
ZmFsc2UKLSAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIkZBSUxFRCB0byBmcmVlIGVub3Vn
aCBhZnRlciBldmljdGluZyAiLCBpbml0aWFsQnVmZmVyZWRTaXplIC0gZXh0cmFNZW1vcnlDb3N0
KCkpOworICAgICAgICBFUlJPUl9MT0coTE9HSURFTlRJRklFUiwgIkZBSUxFRCB0byBmcmVlIGVu
b3VnaCBhZnRlciBldmljdGluZyAiLCBpbml0aWFsQnVmZmVyZWRTaXplIC0gZXh0cmFNZW1vcnlD
b3N0KCkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02MzYsNyArNjYxLDcg
QEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpldmljdENvZGVkRnJhbWVzKHNpemVfdCBuZXdE
YXRhU2l6ZSwgc2l6ZV90IHBlbmRpbmdBcHAKICAgICByYW5nZUVuZCA9IGR1cmF0aW9uOwogICAg
IGlmICghcmFuZ2VFbmQuaXNGaW5pdGUoKSkgewogICAgICAgICByYW5nZUVuZCA9IGJ1ZmZlcmVk
Lm1heGltdW1CdWZmZXJlZFRpbWUoKTsKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQgJiYgZmFs
c2UKKyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgREVCVUdfTE9HKExPR0lERU5U
SUZJRVIsICJNZWRpYVNvdXJjZSBkdXJhdGlvbiBpcyBub3QgYSBmaW5pdGUgdmFsdWUsIHVzaW5n
IG1heGltdW0gYnVmZmVyZWQgdGltZTogIiwgcmFuZ2VFbmQpOwogI2VuZGlmCiAgICAgfQpAQCAt
NjQ0LDkgKzY2OSw5IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZXZpY3RDb2RlZEZyYW1l
cyhzaXplX3QgbmV3RGF0YVNpemUsIHNpemVfdCBwZW5kaW5nQXBwCiAgICAgcmFuZ2VTdGFydCA9
IHJhbmdlRW5kIC0gdGhpcnR5U2Vjb25kczsKICAgICB3aGlsZSAocmFuZ2VTdGFydCA+IG1pbmlt
dW1SYW5nZVN0YXJ0KSB7CiAgICAgICAgIC8vIERvIG5vdCBldmljdCBkYXRhIGZyb20gdGhlIHRp
bWUgcmFuZ2UgdGhhdCBjb250YWlucyBjdXJyZW50VGltZS4KLSAgICAgICAgc2l6ZV90IHN0YXJ0
VGltZVJhbmdlID0gYnVmZmVyZWQuZmluZChyYW5nZVN0YXJ0KTsKKyAgICAgICAgdWludDY0X3Qg
c3RhcnRUaW1lUmFuZ2UgPSBidWZmZXJlZC5maW5kKHJhbmdlU3RhcnQpOwogICAgICAgICBpZiAo
Y3VycmVudFRpbWVSYW5nZSAhPSBub3RGb3VuZCAmJiBzdGFydFRpbWVSYW5nZSA9PSBjdXJyZW50
VGltZVJhbmdlKSB7Ci0gICAgICAgICAgICBzaXplX3QgZW5kVGltZVJhbmdlID0gYnVmZmVyZWQu
ZmluZChyYW5nZUVuZCk7CisgICAgICAgICAgICB1aW50NjRfdCBlbmRUaW1lUmFuZ2UgPSBidWZm
ZXJlZC5maW5kKHJhbmdlRW5kKTsKICAgICAgICAgICAgIGlmIChjdXJyZW50VGltZVJhbmdlICE9
IG5vdEZvdW5kICYmIGVuZFRpbWVSYW5nZSA9PSBjdXJyZW50VGltZVJhbmdlKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogCkBAIC02NzQsMjIgKzY5OSwyNSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGU6OmV2aWN0Q29kZWRGcmFtZXMoc2l6ZV90IG5ld0RhdGFTaXplLCBzaXplX3QgcGVuZGlu
Z0FwcAogI2VuZGlmCiB9CiAKLXNpemVfdCBTb3VyY2VCdWZmZXJQcml2YXRlOjp0b3RhbFRyYWNr
QnVmZmVyU2l6ZUluQnl0ZXMoKSBjb25zdAordWludDY0X3QgU291cmNlQnVmZmVyUHJpdmF0ZTo6
dG90YWxUcmFja0J1ZmZlclNpemVJbkJ5dGVzKCkgY29uc3QKIHsKLSAgICBzaXplX3QgdG90YWxT
aXplSW5CeXRlcyA9IDA7CisgICAgdWludDY0X3QgdG90YWxTaXplSW5CeXRlcyA9IDA7CiAgICAg
Zm9yIChhdXRvJiB0cmFja0J1ZmZlciA6IG1fdHJhY2tCdWZmZXJNYXAudmFsdWVzKCkpCiAgICAg
ICAgIHRvdGFsU2l6ZUluQnl0ZXMgKz0gdHJhY2tCdWZmZXIuc2FtcGxlcy5zaXplSW5CeXRlcygp
OwogCiAgICAgcmV0dXJuIHRvdGFsU2l6ZUluQnl0ZXM7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZTo6YWRkVHJhY2tCdWZmZXIoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJZCwgUmVmUHRy
PE1lZGlhRGVzY3JpcHRpb24+IGRlc2NyaXB0aW9uKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
OjphZGRUcmFja0J1ZmZlcihjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lkLCBSZWZQdHI8TWVkaWFE
ZXNjcmlwdGlvbj4mJiBkZXNjcmlwdGlvbikKIHsKICAgICBBU1NFUlQoIW1fdHJhY2tCdWZmZXJN
YXAuY29udGFpbnModHJhY2tJZCkpOwogICAgIGF1dG8mIHRyYWNrQnVmZmVyID0gbV90cmFja0J1
ZmZlck1hcC5hZGQodHJhY2tJZCwgVHJhY2tCdWZmZXIoKSkuaXRlcmF0b3ItPnZhbHVlOwogCiAg
ICAgLy8gNS4yLjkgQWRkIHRoZSB0cmFjayBkZXNjcmlwdGlvbiBmb3IgdGhpcyB0cmFjayB0byB0
aGUgdHJhY2sgYnVmZmVyLgogICAgIHRyYWNrQnVmZmVyLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRp
b247CisKKyAgICBtX2hhc0F1ZGlvID0gbV9oYXNBdWRpbyB8fCB0cmFja0J1ZmZlci5kZXNjcmlw
dGlvbi0+aXNBdWRpbygpOworICAgIG1faGFzVmlkZW8gPSBtX2hhc1ZpZGVvIHx8IHRyYWNrQnVm
ZmVyLmRlc2NyaXB0aW9uLT5pc1ZpZGVvKCk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZTo6dXBkYXRlVHJhY2tJZHMoVmVjdG9yPHN0ZDo6cGFpcjxBdG9tU3RyaW5nLCBBdG9tU3RyaW5n
Pj4mJiB0cmFja0lkUGFpcnMpCkBAIC03MDksMTcgKzczNywxOSBAQCB2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGU6OnNldEFsbFRyYWNrQnVmZmVyc05lZWRSYW5kb21BY2Nlc3MoKQogICAgICAgICB0
cmFja0J1ZmZlci5uZWVkUmFuZG9tQWNjZXNzRmxhZyA9IHRydWU7CiB9CiAKLXZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQmIHNlZ21lbnQpCit2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQo
U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2VnbWVu
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IGlmICghbV9jbGllbnQpCisgICAgaWYgKCFtX2NsaWVudCkgeworICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogICAgICAgICByZXR1cm47CisgICAgfQogCiAgICAgaWYgKG1fcmVjZWl2ZWRG
aXJzdEluaXRpYWxpemF0aW9uU2VnbWVudCAmJiAhdmFsaWRhdGVJbml0aWFsaXphdGlvblNlZ21l
bnQoc2VnbWVudCkpIHsKICAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBl
bmRFcnJvcih0cnVlKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY2xpZW50LT5z
b3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChzZWdtZW50
KTsKKyAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXph
dGlvblNlZ21lbnQoV1RGTW92ZShzZWdtZW50KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogCiAgICAgbV9yZWNlaXZlZEZpcnN0SW5pdGlhbGl6YXRpb25TZWdtZW50ID0gdHJ1ZTsKICAg
ICBtX3BlbmRpbmdJbml0aWFsaXphdGlvblNlZ21lbnRGb3JDaGFuZ2VUeXBlID0gZmFsc2U7CkBA
IC0xMTgwLDExICsxMjEwLDExIEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2
ZVNhbXBsZShNZWRpYVNhbXBsZSYgc2FtcGxlKQogICAgICAgICAvLyBkaXNqb2ludCByYW5nZXMg
c2VwYXJhdGVkIGJ5IGxlc3MgdGhhbiBhICJmdWRnZSBmYWN0b3IiLgogICAgICAgICBhdXRvIHBy
ZXNlbnRhdGlvbkVuZFRpbWUgPSBwcmVzZW50YXRpb25UaW1lc3RhbXAgKyBmcmFtZUR1cmF0aW9u
OwogICAgICAgICBhdXRvIG5lYXJlc3RUb1ByZXNlbnRhdGlvblN0YXJ0VGltZSA9IHRyYWNrQnVm
ZmVyLmJ1ZmZlcmVkLm5lYXJlc3QocHJlc2VudGF0aW9uVGltZXN0YW1wKTsKLSAgICAgICAgaWYg
KG5lYXJlc3RUb1ByZXNlbnRhdGlvblN0YXJ0VGltZS5pc1ZhbGlkKCkgJiYgKHByZXNlbnRhdGlv
blRpbWVzdGFtcCAtIG5lYXJlc3RUb1ByZXNlbnRhdGlvblN0YXJ0VGltZSkuaXNCZXR3ZWVuKE1l
ZGlhVGltZTo6emVyb1RpbWUoKSwgbV9jdXJyZW50VGltZUZ1ZGdlRmFjdG9yKSkKKyAgICAgICAg
aWYgKG5lYXJlc3RUb1ByZXNlbnRhdGlvblN0YXJ0VGltZS5pc1ZhbGlkKCkgJiYgKHByZXNlbnRh
dGlvblRpbWVzdGFtcCAtIG5lYXJlc3RUb1ByZXNlbnRhdGlvblN0YXJ0VGltZSkuaXNCZXR3ZWVu
KE1lZGlhVGltZTo6emVyb1RpbWUoKSwgdGltZUZ1ZGdlRmFjdG9yKCkpKQogICAgICAgICAgICAg
cHJlc2VudGF0aW9uVGltZXN0YW1wID0gbmVhcmVzdFRvUHJlc2VudGF0aW9uU3RhcnRUaW1lOwog
CiAgICAgICAgIGF1dG8gbmVhcmVzdFRvUHJlc2VudGF0aW9uRW5kVGltZSA9IHRyYWNrQnVmZmVy
LmJ1ZmZlcmVkLm5lYXJlc3QocHJlc2VudGF0aW9uRW5kVGltZSk7Ci0gICAgICAgIGlmIChuZWFy
ZXN0VG9QcmVzZW50YXRpb25FbmRUaW1lLmlzVmFsaWQoKSAmJiAobmVhcmVzdFRvUHJlc2VudGF0
aW9uRW5kVGltZSAtIHByZXNlbnRhdGlvbkVuZFRpbWUpLmlzQmV0d2VlbihNZWRpYVRpbWU6Onpl
cm9UaW1lKCksIG1fY3VycmVudFRpbWVGdWRnZUZhY3RvcikpCisgICAgICAgIGlmIChuZWFyZXN0
VG9QcmVzZW50YXRpb25FbmRUaW1lLmlzVmFsaWQoKSAmJiAobmVhcmVzdFRvUHJlc2VudGF0aW9u
RW5kVGltZSAtIHByZXNlbnRhdGlvbkVuZFRpbWUpLmlzQmV0d2VlbihNZWRpYVRpbWU6Onplcm9U
aW1lKCksIHRpbWVGdWRnZUZhY3RvcigpKSkKICAgICAgICAgICAgIHByZXNlbnRhdGlvbkVuZFRp
bWUgPSBuZWFyZXN0VG9QcmVzZW50YXRpb25FbmRUaW1lOwogCiAgICAgICAgIHRyYWNrQnVmZmVy
LmJ1ZmZlcmVkLmFkZChwcmVzZW50YXRpb25UaW1lc3RhbXAsIHByZXNlbnRhdGlvbkVuZFRpbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVm
ZmVyUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVm
ZmVyUHJpdmF0ZS5oCmluZGV4IDExZGZmMzQ5YmVjN2Q3ZTljMjIzMTczNmE0NmQ0OGU3N2U0NzZi
N2EuLjQwMWRiZDc3YmQyMDRiOThjMjgzZmNhMWZkNTQyMDljOTdmZWViMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRl
LmgKQEAgLTYzLDggKzYzLDkgQEAgY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0ZQogewogcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIFNvdXJjZUJ1ZmZlclByaXZhdGUoKTsKLSAgICB2aXJ0dWFs
IH5Tb3VyY2VCdWZmZXJQcml2YXRlKCkgPSBkZWZhdWx0OworICAgIFdFQkNPUkVfRVhQT1JUIHZp
cnR1YWwgflNvdXJjZUJ1ZmZlclByaXZhdGUoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBzZXRBY3Rp
dmUoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNo
YXI+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgYWJvcnQoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHJlc2V0UGFyc2VyU3RhdGUoKSA9IDA7CkBAIC03Miw0MCArNzMsMzkgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0
ZSkgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sKSB7IH0KICAgICB2aXJ0
dWFsIGJvb2wgY2FuU3dpdGNoVG9UeXBlKGNvbnN0IENvbnRlbnRUeXBlJikgeyByZXR1cm4gZmFs
c2U7IH0KIAorICAgIHZpcnR1YWwgdm9pZCByZWVucXVldWVNZWRpYUlmTmVlZGVkKGNvbnN0IE1l
ZGlhVGltZSYgY3VycmVudE1lZGlhVGltZSwgdWludDY0X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBh
Y2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUpOworICAgIHZpcnR1YWwgdm9pZCBhZGRU
cmFja0J1ZmZlcihjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lkLCBSZWZQdHI8TWVkaWFEZXNjcmlw
dGlvbj4mJik7CisgICAgdmlydHVhbCB2b2lkIHRyeVNpZ25hbEFsbFNhbXBsZXNJblRyYWNrRW5x
dWV1ZWQoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgdXBkYXRlQnVmZmVyZWRG
cm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dmlydHVhbCB2b2lkIGV2aWN0Q29kZWRGcmFtZXModWludDY0X3QgbmV3RGF0YVNpemUsIHVpbnQ2
NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXpl
LCBjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9u
LCBib29sIGlzRW5kZWQpOworCiAgICAgdm9pZCBzZXRDbGllbnQoU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudCogY2xpZW50KSB7IG1fY2xpZW50ID0gY2xpZW50OyB9CiAgICAgdm9pZCBzZXRJc0F0
dGFjaGVkKGJvb2wgZmxhZykgeyBtX2lzQXR0YWNoZWQgPSBmbGFnOyB9Ci0gICAgdm9pZCBzZXRD
dXJyZW50VGltZUZ1ZGdlRmFjdG9yKGNvbnN0IE1lZGlhVGltZSYgdGltZSkgeyBtX2N1cnJlbnRU
aW1lRnVkZ2VGYWN0b3IgPSB0aW1lOyB9CisgICAgYm9vbCBoYXNBdWRpbygpIGNvbnN0IHsgcmV0
dXJuIG1faGFzQXVkaW87IH0KKyAgICBib29sIGhhc1ZpZGVvKCkgY29uc3QgeyByZXR1cm4gbV9o
YXNWaWRlbzsgfQogICAgIHZvaWQgc2V0QXBwZW5kV2luZG93U3RhcnQoY29uc3QgTWVkaWFUaW1l
JiBhcHBlbmRXaW5kb3dTdGFydCkgeyBtX2FwcGVuZFdpbmRvd1N0YXJ0ID0gYXBwZW5kV2luZG93
U3RhcnQ7fQogICAgIHZvaWQgc2V0QXBwZW5kV2luZG93RW5kKGNvbnN0IE1lZGlhVGltZSYgYXBw
ZW5kV2luZG93RW5kKSB7IG1fYXBwZW5kV2luZG93RW5kID0gYXBwZW5kV2luZG93RW5kOyB9CiAg
ICAgYm9vbCBidWZmZXJGdWxsKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJGdWxsOyB9Ci0gICAg
VGltZVJhbmdlcyogYnVmZmVyZWQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcmVkLmdldCgpOyB9
Ci0gICAgYm9vbCBpc0J1ZmZlcmVkRGlydHkoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcmVkRGly
dHk7IH0KLSAgICB2b2lkIHNldEJ1ZmZlcmVkRGlydHkoYm9vbCBmbGFnKSB7IG1fYnVmZmVyZWRE
aXJ0eSA9IGZsYWc7IH0KKworICAgIHZvaWQgc2V0QnVmZmVyZWREaXJ0eShib29sKTsKICAgICB2
b2lkIHJlc2V0VHJhY2tCdWZmZXJzKCk7CiAgICAgdm9pZCBjbGVhclRyYWNrQnVmZmVycygpOwog
ICAgIHZvaWQgcmVzZXRUaW1lc3RhbXBPZmZzZXRJblRyYWNrQnVmZmVycygpOwogICAgIE1lZGlh
VGltZSB0aW1lc3RhbXBPZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX3RpbWVzdGFtcE9mZnNldDsg
fQogICAgIHZvaWQgc2V0VGltZXN0YW1wT2Zmc2V0KGNvbnN0IE1lZGlhVGltZSYgdGltZXN0YW1w
T2Zmc2V0KSB7IG1fdGltZXN0YW1wT2Zmc2V0ID0gdGltZXN0YW1wT2Zmc2V0OyB9CiAgICAgTWVk
aWFUaW1lIGhpZ2hlc3RQcmVzZW50YXRpb25UaW1lc3RhbXAoKSBjb25zdDsKLSAgICB2b2lkIHVw
ZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVmZmVycyhib29sIHNvdXJjZUlzRW5kZWQpOwogICAgIHZv
aWQgc2Vla1RvVGltZShjb25zdCBNZWRpYVRpbWUmKTsKLSAgICB2b2lkIHRyeVNpZ25hbEFsbFNh
bXBsZXNJblRyYWNrRW5xdWV1ZWQoKTsKICAgICB2b2lkIHN0YXJ0Q2hhbmdpbmdUeXBlKCkgeyBt
X3BlbmRpbmdJbml0aWFsaXphdGlvblNlZ21lbnRGb3JDaGFuZ2VUeXBlID0gdHJ1ZTsgfQotCi0g
ICAgdm9pZCByZWVucXVldWVNZWRpYUlmTmVlZGVkKGNvbnN0IE1lZGlhVGltZSYgY3VycmVudE1l
ZGlhVGltZSwgc2l6ZV90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHNpemVfdCBtYXhpbXVt
QnVmZmVyU2l6ZSk7CiAgICAgdm9pZCByZW1vdmVDb2RlZEZyYW1lcyhjb25zdCBNZWRpYVRpbWUm
IHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50TWVk
aWFUaW1lLCBib29sIGlzRW5kZWQpOwotICAgIHZvaWQgZXZpY3RDb2RlZEZyYW1lcyhzaXplX3Qg
bmV3RGF0YVNpemUsIHNpemVfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCBzaXplX3QgbWF4
aW11bUJ1ZmZlclNpemUsIGNvbnN0IE1lZGlhVGltZSYgY3VycmVudFRpbWUsIGNvbnN0IE1lZGlh
VGltZSYgZHVyYXRpb24sIGJvb2wgaXNFbmRlZCk7Ci0gICAgdm9pZCBhZGRUcmFja0J1ZmZlcihj
b25zdCBBdG9tU3RyaW5nJiB0cmFja0lkLCBSZWZQdHI8TWVkaWFEZXNjcmlwdGlvbj4pOwogICAg
IHZvaWQgdXBkYXRlVHJhY2tJZHMoVmVjdG9yPHN0ZDo6cGFpcjxBdG9tU3RyaW5nLCBBdG9tU3Ry
aW5nPj4mJiB0cmFja0lkUGFpcnMpOwogICAgIHZvaWQgc2V0QWxsVHJhY2tCdWZmZXJzTmVlZFJh
bmRvbUFjY2VzcygpOwogICAgIHZvaWQgc2V0U2hvdWxkR2VuZXJhdGVUaW1lc3RhbXBzKGJvb2wg
ZmxhZykgeyBtX3Nob3VsZEdlbmVyYXRlVGltZXN0YW1wcyA9IGZsYWc7IH0KICAgICB2b2lkIHNl
dE1vZGUoU291cmNlQnVmZmVyQXBwZW5kTW9kZSBtb2RlKSB7IG1fYXBwZW5kTW9kZSA9IG1vZGU7
IH0KICAgICB2b2lkIHNldEdyb3VwU3RhcnRUaW1lc3RhbXAoY29uc3QgTWVkaWFUaW1lJiBtZWRp
YVRpbWUpIHsgbV9ncm91cFN0YXJ0VGltZXN0YW1wID0gbWVkaWFUaW1lOyB9CiAgICAgdm9pZCBz
ZXRHcm91cFN0YXJ0VGltZXN0YW1wVG9FbmRUaW1lc3RhbXAoKSB7IG1fZ3JvdXBTdGFydFRpbWVz
dGFtcCA9IG1fZ3JvdXBFbmRUaW1lc3RhbXA7IH0KLSAgICBzaXplX3QgdG90YWxUcmFja0J1ZmZl
clNpemVJbkJ5dGVzKCkgY29uc3Q7CisgICAgdWludDY0X3QgdG90YWxUcmFja0J1ZmZlclNpemVJ
bkJ5dGVzKCkgY29uc3Q7CiAKICAgICBzdHJ1Y3QgVHJhY2tCdWZmZXIgewogICAgICAgICBNZWRp
YVRpbWUgbGFzdERlY29kZVRpbWVzdGFtcDsKQEAgLTEzNCw3ICsxMzQsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBWZWN0b3I8U3RyaW5nPiBlbnF1ZXVlZFNhbXBsZXNGb3JUcmFja0lEKGNvbnN0
IEF0b21TdHJpbmcmKSB7IHJldHVybiB7IH07IH0KICAgICBWZWN0b3I8U3RyaW5nPiBidWZmZXJl
ZFNhbXBsZXNGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmKTsKICAgICB2aXJ0dWFsIE1lZGlh
VGltZSBtaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lRm9yVHJhY2tJRChjb25zdCBBdG9t
U3RyaW5nJikgeyByZXR1cm4gTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpOyB9Ci0gICAgdmlydHVh
bCB2b2lkIHNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJiwg
c2l6ZV90KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JUcmFj
a0lEKGNvbnN0IEF0b21TdHJpbmcmLCB1aW50NjRfdCkgeyB9CiAgICAgTWVkaWFUaW1lIGZhc3RT
ZWVrVGltZUZvck1lZGlhVGltZShjb25zdCBNZWRpYVRpbWUmIHRhcmdldFRpbWUsIGNvbnN0IE1l
ZGlhVGltZSYgbmVnYXRpdmVUaHJlc2hvbGQsIGNvbnN0IE1lZGlhVGltZSYgcG9zaXRpdmVUaHJl
c2hvbGQpOwogCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECkBAIC0xNDMsNiArMTQzLDcgQEAg
cHVibGljOgogI2VuZGlmCiAKIHByb3RlY3RlZDoKKyAgICB2aXJ0dWFsIE1lZGlhVGltZSB0aW1l
RnVkZ2VGYWN0b3IoKSBjb25zdCB7IHJldHVybiB7MjAwMiwgMjQwMDB9OyB9CiAgICAgdmlydHVh
bCBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJv
b2wgaXNTZWVraW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIE1lZGlh
VGltZSBjdXJyZW50TWVkaWFUaW1lKCkgY29uc3QgeyByZXR1cm4geyB9OyB9CkBAIC0xNTcsOCAr
MTU4LDkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBzZXRNaW5pbXVtVXBjb21pbmdQ
cmVzZW50YXRpb25UaW1lKGNvbnN0IEF0b21TdHJpbmcmLCBjb25zdCBNZWRpYVRpbWUmKSB7IH0K
ICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJNaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lKGNv
bnN0IEF0b21TdHJpbmcmKSB7IH0KIAorICAgIHZvaWQgYXBwZW5kQ29tcGxldGVkKGJvb2wgcGFy
c2luZ1N1Y2NlZWRlZCwgYm9vbCBpc0VuZGVkKTsKICAgICB2b2lkIHJlZW5xdWVTYW1wbGVzKGNv
bnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUluaXRpYWxpemF0
aW9uU2VnbWVudChjb25zdCBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlv
blNlZ21lbnQmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoU291
cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50JiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU2FtcGxlKE1lZGlhU2Ft
cGxlJik7CiAgICAgdm9pZCBwcm92aWRlTWVkaWFEYXRhKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNr
SUQpOwogCkBAIC0xNjksMTEgKzE3MSwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVlbnF1ZXVl
TWVkaWFGb3JUaW1lKFRyYWNrQnVmZmVyJiwgY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCwgY29u
c3QgTWVkaWFUaW1lJik7CiAgICAgYm9vbCB2YWxpZGF0ZUluaXRpYWxpemF0aW9uU2VnbWVudChj
b25zdCBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXphdGlvblNlZ21lbnQmKTsK
ICAgICB2b2lkIHByb3ZpZGVNZWRpYURhdGEoVHJhY2tCdWZmZXImLCBjb25zdCBBdG9tU3RyaW5n
JiB0cmFja0lEKTsKKyAgICB2b2lkIHNldEJ1ZmZlcmVkUmFuZ2VzKGNvbnN0IFBsYXRmb3JtVGlt
ZVJhbmdlcyYpOwogCiAgICAgYm9vbCBtX2lzQXR0YWNoZWQgeyBmYWxzZSB9OworICAgIGJvb2wg
bV9oYXNBdWRpbyB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc1ZpZGVvIHsgZmFsc2UgfTsKIAog
ICAgIEhhc2hNYXA8QXRvbVN0cmluZywgVHJhY2tCdWZmZXI+IG1fdHJhY2tCdWZmZXJNYXA7Ci0g
ICAgTWVkaWFUaW1lIG1fY3VycmVudFRpbWVGdWRnZUZhY3RvcjsKIAogICAgIFNvdXJjZUJ1ZmZl
ckFwcGVuZE1vZGUgbV9hcHBlbmRNb2RlIHsgU291cmNlQnVmZmVyQXBwZW5kTW9kZTo6U2VnbWVu
dHMgfTsKIApAQCAtMTkwLDcgKzE5NCw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fYnVmZmVy
RnVsbCB7IGZhbHNlIH07CiAgICAgUmVmUHRyPFRpbWVSYW5nZXM+IG1fYnVmZmVyZWQ7Ci0gICAg
Ym9vbCBtX2J1ZmZlcmVkRGlydHkgeyB0cnVlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Tb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9T
b3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmgKaW5kZXggZWNkM2M3NjNmMTI0YjdjMGQ0Yzc1OTVi
ZDNhNmFmMTY1YzNkOTQzYi4uYTdmMDQxMmYxNDA5MjA1NTEyYTQzOWNmOGIxYTRlMzBjY2NkZmQ1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVm
ZmVyUHJpdmF0ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaApAQCAtMzYsNiArMzYsNyBAQCBjbGFzcyBBdWRp
b1RyYWNrUHJpdmF0ZTsKIGNsYXNzIEluYmFuZFRleHRUcmFja1ByaXZhdGU7CiBjbGFzcyBNZWRp
YVNhbXBsZTsKIGNsYXNzIE1lZGlhRGVzY3JpcHRpb247CitjbGFzcyBQbGF0Zm9ybVRpbWVSYW5n
ZXM7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZTsKIAogY2xhc3MgU291cmNlQnVmZmVyUHJpdmF0
ZUNsaWVudCB7CkBAIC02MywyMSArNjQsMjIgQEAgcHVibGljOgogICAgICAgICB9OwogICAgICAg
ICBWZWN0b3I8VGV4dFRyYWNrSW5mb3JtYXRpb24+IHRleHRUcmFja3M7CiAgICAgfTsKLSAgICB2
aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNl
Z21lbnQoY29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50JikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9vbCBkZWNvZGVFcnJvcikgPSAwOwot
ICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKGNvbnN0
IE1lZGlhVGltZSYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURp
ZFBhcnNlU2FtcGxlKGRvdWJsZSBmcmFtZUR1cmF0aW9uKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IHNvdXJjZUJ1ZmZlclByaXZhdGVEaWREcm9wU2FtcGxlKCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0
aWFsaXphdGlvblNlZ21lbnQmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVTdHJlYW1FbmRlZFdpdGhEZWNvZGVF
cnJvcigpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgc291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlv
KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzb3VyY2VCdWZmZXJQcml2YXRlSGFzVmlk
ZW8oKSBjb25zdCA9IDA7CiAKKyAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUFw
cGVuZEVycm9yKGJvb2wgZGVjb2RlRXJyb3IpID0gMDsKICAgICBlbnVtIGNsYXNzIEFwcGVuZFJl
c3VsdCA6IHVpbnQ4X3QgewogICAgICAgICBBcHBlbmRTdWNjZWVkZWQsCiAgICAgICAgIFJlYWRT
dHJlYW1GYWlsZWQsCiAgICAgICAgIFBhcnNpbmdGYWlsZWQKICAgICB9OwogICAgIHZpcnR1YWwg
dm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoQXBwZW5kUmVzdWx0KSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQoY29u
c3QgTWVkaWFUaW1lJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRl
RGlkUGFyc2VTYW1wbGUoZG91YmxlIGZyYW1lRHVyYXRpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZERyb3BTYW1wbGUoKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZChib29sKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQo
Y29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJikgPSAwOworCiAgICAgdmlydHVhbCB2b2lkIHNvdXJj
ZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJyb3IoaW50IGVycm9yQ29kZSkgPSAw
OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlk
ZW9UcmFja1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1ZpZGVv
VHJhY2tQcml2YXRlLmgKaW5kZXggMGM0MTNjMmRkZjVkOWRhMmExNWIxMTM1YzA4ZTUxMDg1MmI4
MDJjNi4uZWE1YTI5Y2ViNWNmZTlmMDI0MjdjNWVhZGRjMTY0Mjc0Y2I2ZDYwOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5o
CkBAIC02NCw3ICs2NCw2IEBAIHB1YmxpYzoKICAgICB1c2luZyBTZWxlY3RlZENoYW5nZWRDYWxs
YmFjayA9IEZ1bmN0aW9uPHZvaWQoVmlkZW9UcmFja1ByaXZhdGUmLCBib29sIHNlbGVjdGVkKT47
CiAgICAgdm9pZCBzZXRTZWxlY3RlZENoYW5nZWRDYWxsYmFjayhTZWxlY3RlZENoYW5nZWRDYWxs
YmFjayYmIGNhbGxiYWNrKSB7IG1fc2VsZWN0ZWRDaGFuZ2VkQ2FsbGJhY2sgPSBXVEZNb3ZlKGNh
bGxiYWNrKTsgfQogCi0KIHByb3RlY3RlZDoKICAgICBWaWRlb1RyYWNrUHJpdmF0ZSgpID0gZGVm
YXVsdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRl
QVZGT2JqQy5oCmluZGV4IDExMzZmZDI1MmI4MmZlY2M3NmI3ZTk4ZmI0ZDhlYmFiNWNlZWI5NDUu
LjY4Y2ZkNTIzNDZiOWMzNThjZDNkMTc1MDkzYzU3ZGM4ZDc5NzhiYTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291
cmNlUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgKQEAgLTYyLDE0
ICs2MiwxNSBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxNZWRpYVNvdXJjZVByaXZhdGVBVkZP
YmpDPiBjcmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiwgTWVkaWFT
b3VyY2VQcml2YXRlQ2xpZW50Kik7CiAgICAgdmlydHVhbCB+TWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQygpOwogCi0gICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBwbGF5
ZXIoKSBjb25zdCB7IHJldHVybiBtX3BsYXllcjsgfQorICAgIE1lZGlhUGxheWVyUHJpdmF0ZU1l
ZGlhU291cmNlQVZGT2JqQyogcGxheWVyKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXIuZ2V0KCk7
IH0KICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDPj4m
IHNvdXJjZUJ1ZmZlcnMoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZUJ1ZmZlcnM7IH0KICAgICBj
b25zdCBWZWN0b3I8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMqPiYgYWN0aXZlU291cmNlQnVm
ZmVycygpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZlU291cmNlQnVmZmVyczsgfQogCiAgICAgQWRk
U3RhdHVzIGFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDb250ZW50VHlwZSYsIFJlZlB0cjxTb3VyY2VC
dWZmZXJQcml2YXRlPiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCkgb3Zl
cnJpZGU7CisgICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBtYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMpIG92ZXJyaWRl
OwogICAgIHZvaWQgdW5tYXJrRW5kT2ZTdHJlYW0oKSBvdmVycmlkZTsKKyAgICBib29sIGlzRW5k
ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzRW5kZWQ7IH0KICAgICBNZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRS
ZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKSBvdmVycmlkZTsKICAgICB2b2lkIHdh
aXRGb3JTZWVrQ29tcGxldGVkKCkgb3ZlcnJpZGU7CkBAIC0xMjksNyArMTMwLDcgQEAgcHJpdmF0
ZToKIAogICAgIGZyaWVuZCBjbGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzsKIAotICAg
IE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNlQVZGT2JqQyogbV9wbGF5ZXI7CisgICAgV2Vh
a1B0cjxNZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakM+IG1fcGxheWVyOwogICAg
IFJlZlB0cjxNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQ+IG1fY2xpZW50OwogICAgIFZlY3RvcjxS
ZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM+PiBtX3NvdXJjZUJ1ZmZlcnM7CiAgICAg
VmVjdG9yPFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKj4gbV9hY3RpdmVTb3VyY2VCdWZmZXJz
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akMubW0KaW5kZXggYjAwMzkzMWM3ZDc1OWYyOWQ5ZTA2NmZiMTIwMjMwN2NmNTI0OTU2Ni4uNTZm
ZDg5NTE5YzRhMmJiZmU5OTgxZGY4ZGQyZmQyNTA5MzlhYTVjZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQ
cml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCkBAIC01NCw3ICs1
NCw3IEBAIFJlZjxNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDPiBNZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDOjpjcmVhdGUoTWVkaWFQbGF5ZXJQcml2CiB9CiAKIE1lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakM6Ok1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMoTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFT
b3VyY2VBVkZPYmpDKiBwYXJlbnQsIE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudCogY2xpZW50KQot
ICAgIDogbV9wbGF5ZXIocGFyZW50KQorICAgIDogbV9wbGF5ZXIobWFrZVdlYWtQdHIocGFyZW50
KSkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKICAgICAsIG1faXNFbmRlZChmYWxzZSkKICNpZiAh
UkVMRUFTRV9MT0dfRElTQUJMRUQKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8
UGxhdGZvcm1UaW1lUmFuZ2VzPiBNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpidWZmZXJlZCgp
CiAgICAgcmV0dXJuIG1fY2xpZW50LT5idWZmZXJlZCgpOwogfQogCi12b2lkIE1lZGlhU291cmNl
UHJpdmF0ZUFWRk9iakM6OmR1cmF0aW9uQ2hhbmdlZCgpCit2b2lkIE1lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakM6OmR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmKQogewogICAgIG1fcGxh
eWVyLT5kdXJhdGlvbkNoYW5nZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IDM1ZDlmNTUwYzNiMjEwNDFhZWY3
ZDJhNjQzYjhhYWM3YjRhMzk1NWIuLjYxNzU1OWI3YzMxZDVhOTBmMjMyNjRjNjZiMTc1YWRlY2Zm
Yzc5ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFy
c2VyQVZGT2JqQy5tbQpAQCAtNDgsNiArNDgsOCBAQAogI2ltcG9ydCA8cGFsL2F2Zm91bmRhdGlv
bi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZGb3Vu
ZGF0aW9uU1BJLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tPYmpDRXhjZXB0aW9ucy5oPgorI2ltcG9y
dCA8d3RmL0JveC5oPgorI2ltcG9ydCA8d3RmL3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAK
ICNpbXBvcnQgPHBhbC9jZi9Db3JlTWVkaWFTb2Z0TGluay5oPgogI2ltcG9ydCA8cGFsL2NvY29h
L0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CkBAIC0yNTgsNyArMjYwLDggQEAgdm9pZCBTb3VyY2VC
dWZmZXJQYXJzZXJBVkZPYmpDOjpzZXRMb2dnZXIoY29uc3QgTG9nZ2VyJiBsb2dnZXIsIGNvbnN0
IHZvaWQqIGxvZ0kKIAogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQYXJzZVN0
cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0KQogewotICAgIGNhbGxPbk1haW5UaHJlYWQo
W3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYXNzZXQgPSByZXRhaW5QdHIoYXNz
ZXQpXSB7CisgICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gaW5pdGlhbGl6YXRpb25TZWdtZW50SXNI
YW5kbGVkU2VtYXBob3JlID0gQm94PEJpbmFyeVNlbWFwaG9yZT46OmNyZWF0ZSgpOworICAgIGNh
bGxPbk1haW5UaHJlYWQoW3RoaXMsIHN0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYXNzZXQg
PSByZXRhaW5QdHIoYXNzZXQpLCBpbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWRTZW1hcGhv
cmVdKCkgbXV0YWJsZSB7CiAgICAgICAgIG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFs
aXphdGlvblNlZ21lbnQgPSBmYWxzZTsKIAogICAgICAgICBpZiAoIW1fZGlkUGFyc2VJbml0aWFs
aXphdGlvbkRhdGFDYWxsYmFjaykKQEAgLTI5NSw4ICsyOTgsMTMgQEAgdm9pZCBTb3VyY2VCdWZm
ZXJQYXJzZXJBVkZPYmpDOjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNzZXQqIGFzc2V0
KQogICAgICAgICAgICAgLy8gRklYTUUoMTI1MTYxKSAgICA6IEFkZCBUZXh0VHJhY2sgc3VwcG9y
dAogICAgICAgICB9CiAKLSAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxi
YWNrKFdURk1vdmUoc2VnbWVudCkpOworICAgICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25E
YXRhQ2FsbGJhY2soV1RGTW92ZShzZWdtZW50KSwgW3N0cm9uZ1RoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgaW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3JlID0gV1RGTW92ZShpbml0
aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWRTZW1hcGhvcmUpXSgpIG11dGFibGUgeworICAgICAg
ICAgICAgaW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3JlLT5zaWduYWwoKTsK
KyAgICAgICAgfSk7CiAgICAgfSk7CisKKyAgICAvLyBXYWl0IHVudGlsIHRoZSBpbml0aWFsaXph
dGlvbiBzZWdtZW50IGlzIGhhbmRsZWQKKyAgICBpbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRs
ZWRTZW1hcGhvcmUtPndhaXQoKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpD
OjpkaWRGYWlsVG9QYXJzZVN0cmVhbURhdGFXaXRoRXJyb3IoTlNFcnJvciogZXJyb3IpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaApp
bmRleCA4YjFlZWE2MzAwN2VkNWM0ZDA4NzQ0NmU3NDNiMTNhNGMxY2MwMGJkLi4xZjYyNWIzYzc4
ZTgzZTUxMTQ0ODAwOWJiYzQ0OTU4ZTM2M2FkNGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKQEAgLTkxLDkgKzkxLDcgQEAg
cHVibGljOgogICAgIHZvaWQgd2lsbFByb3ZpZGVDb250ZW50S2V5UmVxdWVzdEluaXRpYWxpemF0
aW9uRGF0YUZvclRyYWNrSUQodWludDY0X3QgdHJhY2tJRCk7CiAgICAgdm9pZCBkaWRQcm92aWRl
Q29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKFJlZjxVaW50OEFy
cmF5PiYmLCB1aW50NjRfdCB0cmFja0lELCBCb3g8QmluYXJ5U2VtYXBob3JlPik7CiAKLSAgICBi
b29sIGhhc1ZpZGVvKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNTZWxlY3RlZFZpZGVvKCkgY29uc3Q7
Ci0gICAgYm9vbCBoYXNBdWRpbygpIGNvbnN0OwogCiAgICAgdm9pZCB0cmFja0RpZENoYW5nZVNl
bGVjdGVkKFZpZGVvVHJhY2tQcml2YXRlJiwgYm9vbCBzZWxlY3RlZCk7CiAgICAgdm9pZCB0cmFj
a0RpZENoYW5nZUVuYWJsZWQoQXVkaW9UcmFja1ByaXZhdGUmLCBib29sIGVuYWJsZWQpOwpAQCAt
MTQwLDcgKzEzOCw3IEBAIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU291cmNlQnVmZmVyUHJpdmF0
ZUFWRk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyosIFJlZjxTb3VyY2VCdWZmZXJQYXJz
ZXI+JiYpOwogCiAgICAgdXNpbmcgSW5pdGlhbGl6YXRpb25TZWdtZW50ID0gU291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OwotICAgIHZvaWQgZGlkUGFyc2VJ
bml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYpOworICAgIHZvaWQgZGlk
UGFyc2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJik7CiAgICAgdm9pZCBkaWRFbmNvdW50ZXJFcnJvckR1cmluZ1Bh
cnNpbmcoaW50MzJfdCk7CiAgICAgdm9pZCBkaWRQcm92aWRlTWVkaWFEYXRhRm9yVHJhY2tJRChS
ZWY8TWVkaWFTYW1wbGU+JiYsIHVpbnQ2NF90IHRyYWNrSUQsIGNvbnN0IFN0cmluZyYgbWVkaWFU
eXBlKTsKIApAQCAtMTU0LDYgKzE1Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBmbHVzaChjb25z
dCBBdG9tU3RyaW5nJiB0cmFja0lEKSBmaW5hbDsKICAgICB2b2lkIGVucXVldWVTYW1wbGUoUmVm
PE1lZGlhU2FtcGxlPiYmLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKSBmaW5hbDsKICAgICBi
b29sIGlzUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKSBmaW5h
bDsKKyAgICBNZWRpYVRpbWUgdGltZUZ1ZGdlRmFjdG9yKCkgY29uc3QgZmluYWw7CiAgICAgdm9p
ZCBzZXRBY3RpdmUoYm9vbCkgZmluYWw7CiAgICAgYm9vbCBpc0FjdGl2ZSgpIGNvbnN0IGZpbmFs
OwogICAgIHZvaWQgbm90aWZ5Q2xpZW50V2hlblJlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRv
bVN0cmluZyYgdHJhY2tJRCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCmluZGV4IDRkNjE0N2U5MTY0OTI0ZjQyZDRk
ZGVmNGE2YjZmODBjNmU1MmMzOGUuLjQzZjNiYzE1MTQwMTk5NTYyOGI0MGZhY2U5YTRiZjQxMTU4
MDBhYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDLm1tCkBAIC0zMDgsMTAgKzMwOCwxNCBAQCBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMoTWVkaWFTb3VyY2VQcml2YXRlQVZG
T2JqQwogCiAgICAgc291cmNlQnVmZmVyTWFwKCkuYWRkKG1fbWFwSUQsIG1ha2VXZWFrUHRyKCp0
aGlzKSk7CiAKLSAgICBtX3BhcnNlci0+c2V0RGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxs
YmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKEluaXRpYWxpemF0aW9uU2VnbWVu
dCYmIHNlZ21lbnQpIG11dGFibGUgeworICAgIG1fcGFyc2VyLT5zZXREaWRQYXJzZUluaXRpYWxp
emF0aW9uRGF0YUNhbGxiYWNrKFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAo
SW5pdGlhbGl6YXRpb25TZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKLSAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgd2Vha1RoaXMtPmRp
ZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKFdURk1vdmUoc2VnbWVudCkpOworICAgICAgICBpZiAo
IXdlYWtUaGlzKSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZGlkUGFyc2VJbml0aWFsaXphdGlvbkRh
dGEoV1RGTW92ZShzZWdtZW50KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIH0p
OwogCiAgICAgbV9wYXJzZXItPnNldERpZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZ0NhbGxi
YWNrKFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXSAoaW50MzJfdCBlcnJvckNvZGUpIG11
dGFibGUgewpAQCAtMzQ0LDEyICszNDgsMTQgQEAgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6
On5Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQygpCiAgICAgICAgIG1faGFzU2Vzc2lvblNlbWFw
aG9yZS0+c2lnbmFsKCk7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRp
ZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxpemF0aW9uU2VnbWVudCYmIHNlZ21lbnQp
Cit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9u
RGF0YShJbml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElG
SUVSKTsKIAotICAgIGlmICghbV9tZWRpYVNvdXJjZSkKKyAgICBpZiAoIW1fbWVkaWFTb3VyY2Up
IHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOworICAgIH0K
IAogICAgIGlmIChtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+c2hvdWxkQ2hlY2tIYXJkd2FyZVN1
cHBvcnQoKSkgewogICAgICAgICBmb3IgKGF1dG8mIGluZm8gOiBzZWdtZW50LnZpZGVvVHJhY2tz
KSB7CkBAIC0zNTgsNiArMzY0LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6
ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW4KICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmICghY29kZWNzTWVldEhhcmR3YXJlRGVj
b2RlUmVxdWlyZW1lbnRzKHt7ICpjb2RlYyB9fSwgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPm1l
ZGlhQ29udGVudFR5cGVzUmVxdWlyaW5nSGFyZHdhcmVTdXBwb3J0KCkpKSB7CiAgICAgICAgICAg
ICAgICAgbV9wYXJzaW5nU3VjY2VlZGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KQEAgLTM4NCw3ICszOTEsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZP
YmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJbml0aWFsaXphdGlvblNlZ21lbgogICAg
IGlmIChtX21lZGlhU291cmNlKQogICAgICAgICBtX21lZGlhU291cmNlLT5wbGF5ZXIoKS0+Y2hh
cmFjdGVyaXN0aWNzQ2hhbmdlZCgpOwogCi0gICAgZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2Vn
bWVudChzZWdtZW50KTsKKyAgICBkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KFdURk1v
dmUoc2VnbWVudCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nKGlu
dDMyX3QgY29kZSkKQEAgLTU3Nyw4ICs1ODQsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVB
VkZPYmpDOjphcHBlbmRDb21wbGV0ZWQoKQogICAgIGlmIChtX3BhcnNpbmdTdWNjZWVkZWQgJiYg
bV9tZWRpYVNvdXJjZSkKICAgICAgICAgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPnNldExvYWRp
bmdQcm9ncmVzc3NlZCh0cnVlKTsKIAotICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAgbV9jbGll
bnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShtX3BhcnNpbmdTdWNjZWVkZWQg
PyBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2NlZWRl
ZCA6IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdDo6UGFyc2luZ0ZhaWxl
ZCk7CisgICAgU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kQ29tcGxldGVkKG1fcGFyc2luZ1N1
Y2NlZWRlZCwgbV9tZWRpYVNvdXJjZSA/IG1fbWVkaWFTb3VyY2UtPmlzRW5kZWQoKSA6IHRydWUp
OwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjphYm9ydCgpCkBAIC02ODEs
MjEgKzY4NywxMSBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRSZWFkeVN0
YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdAogICAgICAgICBtX21lZGlhU291
cmNlLT5wbGF5ZXIoKS0+c2V0UmVhZHlTdGF0ZShyZWFkeVN0YXRlKTsKIH0KIAotYm9vbCBTb3Vy
Y2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6aGFzVmlkZW8oKSBjb25zdAotewotICAgIHJldHVybiBt
X2NsaWVudCAmJiBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKCk7Ci19Ci0K
IGJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc1NlbGVjdGVkVmlkZW8oKSBjb25z
dAogewogICAgIHJldHVybiBtX2VuYWJsZWRWaWRlb1RyYWNrSUQgIT0gbm90Rm91bmQ7CiB9CiAK
LWJvb2wgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc0F1ZGlvKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9jbGllbnQgJiYgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRp
bygpOwotfQotCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp0cmFja0RpZENoYW5n
ZVNlbGVjdGVkKFZpZGVvVHJhY2tQcml2YXRlJiB0cmFjaywgYm9vbCBzZWxlY3RlZCkKIHsKICAg
ICBhdXRvIHRyYWNrSUQgPSB0cmFjay5pZCgpLnN0cmluZygpLnRvVUludDY0KCk7CkBAIC0xMDYy
LDcgKzEwNTgsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjplbnF1ZXVlU2Ft
cGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBzYW1wbGUsIGNvbnN0CiAKICAgICAgICAgYXV0byByZW5k
ZXJlciA9IG1fYXVkaW9SZW5kZXJlcnMuZ2V0KHRyYWNrSUQpOwogICAgICAgICBbcmVuZGVyZXIg
ZW5xdWV1ZVNhbXBsZUJ1ZmZlcjpwbGF0Zm9ybVNhbXBsZS5zYW1wbGUuY21TYW1wbGVCdWZmZXJd
OwotICAgICAgICBpZiAobV9tZWRpYVNvdXJjZSAmJiAhc2FtcGxlLT5pc05vbkRpc3BsYXlpbmco
KSkKKyAgICAgICAgaWYgKG1fbWVkaWFTb3VyY2UgJiYgIXNhbXBsZS0+aXNOb25EaXNwbGF5aW5n
KCkgJiYgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCkpCiAgICAgICAgICAgICBtX21lZGlhU291cmNl
LT5wbGF5ZXIoKS0+c2V0SGFzQXZhaWxhYmxlQXVkaW9TYW1wbGUocmVuZGVyZXIuZ2V0KCksIHRy
dWUpOwogICAgIH0KIH0KQEAgLTEwOTEsNiArMTA4NywxNCBAQCBib29sIFNvdXJjZUJ1ZmZlclBy
aXZhdGVBVkZPYmpDOjppc1JlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJh
Y2tJRAogICAgIHJldHVybiBmYWxzZTsKIH0KIAorTWVkaWFUaW1lIFNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDOjp0aW1lRnVkZ2VGYWN0b3IoKSBjb25zdAoreworICAgIGlmIChtX21lZGlhU291
cmNlKQorICAgICAgICByZXR1cm4gbV9tZWRpYVNvdXJjZS0+dGltZUZ1ZGdlRmFjdG9yKCk7CisK
KyAgICByZXR1cm4gU291cmNlQnVmZmVyUHJpdmF0ZTo6dGltZUZ1ZGdlRmFjdG9yKCk7Cit9CisK
IHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OnNldEFjdGl2ZShib29sIGlzQWN0aXZl
KQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUiwgaXNBY3RpdmUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFy
c2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXIuaAppbmRleCAwZGM4MWYwNmQyN2RjZDA5NzM5ZDA3ZTQ1MDc1OGI2MzYyOWQ3MWM3
Li5lMTBjZGFiYzQ3YTQ0NWQzMWNhOTBmOWJmNDgxMmZmYzRhMDMxMTY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZm
ZXJQYXJzZXIuaApAQCAtMzAsNiArMzAsNyBAQAogI2luY2x1ZGUgIk1lZGlhUGxheWVyRW51bXMu
aCIKICNpbmNsdWRlICJTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvVWludDhBcnJheS5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxl
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKIG5hbWVzcGFjZSBXVEYgewpAQCAt
NjksNyArNzAsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBXaWxsIGJlIGNhbGxlZCBvbiB0aGUgbWFp
biB0aHJlYWQuCiAgICAgdXNpbmcgSW5pdGlhbGl6YXRpb25TZWdtZW50ID0gU291cmNlQnVmZmVy
UHJpdmF0ZUNsaWVudDo6SW5pdGlhbGl6YXRpb25TZWdtZW50OwotICAgIHVzaW5nIERpZFBhcnNl
SW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2sgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoSW5pdGlhbGl6
YXRpb25TZWdtZW50JiYpPjsKKyAgICB1c2luZyBEaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNh
bGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEluaXRpYWxpemF0aW9uU2VnbWVudCYmLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpPjsKICAgICB2b2lkIHNldERpZFBhcnNlSW5pdGlhbGl6
YXRpb25EYXRhQ2FsbGJhY2soRGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayYmIGNh
bGxiYWNrKQogICAgIHsKICAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YUNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3Bw
CmluZGV4IDg0YmM1NzRkYzBmMDNmOGZmYjQzNjg5MGZjNGExYTVkZWFhOWU2NDEuLmVmZDg0MWFj
MzVjMTVhNDQyYjk3NTVlNjYyZTIyZmI2NDE3YTM3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlcldlYk0uY3BwCkBAIC00MiwxMSArNDIsMTMgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9EYXRhVmlldy5oPgogI2luY2x1ZGUgPHdlYm0vd2VibV9wYXJzZXIuaD4KICNpbmNsdWRlIDx3
dGYvQWxnb3JpdGhtcy5oPgorI2luY2x1ZGUgPHd0Zi9Cb3guaD4KICNpbmNsdWRlIDx3dGYvTG9n
Z2VySGVscGVyLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CiAjaW5jbHVkZSA8
d3RmL1N0ZExpc3QuaD4KICNpbmNsdWRlIDx3dGYvY2YvVHlwZUNhc3RzQ0YuaD4KICNpbmNsdWRl
IDx3dGYvZGFyd2luL1dlYWtMaW5raW5nLmg+CisjaW5jbHVkZSA8d3RmL3RocmVhZHMvQmluYXJ5
U2VtYXBob3JlLmg+CiAKICNpbmNsdWRlICJDb3JlVmlkZW9Tb2Z0TGluay5oIgogI2luY2x1ZGUg
IlZpZGVvVG9vbGJveFNvZnRMaW5rLmgiCkBAIC03MTYsOSArNzE4LDE2IEBAIFN0YXR1cyBTb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNOjpPbkNsdXN0ZXJCZWdpbihjb25zdCBFbGVtZW50TWV0YWRhdGEm
IG1ldGFkYXRhLCBjCiAgICAgICAgIHJldHVybiBTdGF0dXMoU3RhdHVzOjprTm90RW5vdWdoTWVt
b3J5KTsKIAogICAgIGlmIChtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291bnRlcmVkICYmIG1f
ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjaykgewotICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGluaXRpYWxpemF0
aW9uU2VnbWVudCA9IFdURk1vdmUoKm1faW5pdGlhbGl6YXRpb25TZWdtZW50KV0gKCkgbXV0YWJs
ZSB7Ci0gICAgICAgICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soV1RG
TW92ZShpbml0aWFsaXphdGlvblNlZ21lbnQpKTsKKyAgICAgICAgQm94PEJpbmFyeVNlbWFwaG9y
ZT4gaW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3JlID0gQm94PEJpbmFyeVNl
bWFwaG9yZT46OmNyZWF0ZSgpOworCisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgaW5pdGlhbGl6YXRpb25TZWdtZW50ID0gV1RG
TW92ZSgqbV9pbml0aWFsaXphdGlvblNlZ21lbnQpLCBpbml0aWFsaXphdGlvblNlZ21lbnRJc0hh
bmRsZWRTZW1hcGhvcmVdKCkgbXV0YWJsZSB7CisgICAgICAgICAgICBtX2RpZFBhcnNlSW5pdGlh
bGl6YXRpb25EYXRhQ2FsbGJhY2soV1RGTW92ZShpbml0aWFsaXphdGlvblNlZ21lbnQpLCBbcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBpbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRs
ZWRTZW1hcGhvcmUgPSBXVEZNb3ZlKGluaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNlbWFw
aG9yZSldKCkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb25TZWdtZW50
SXNIYW5kbGVkU2VtYXBob3JlLT5zaWduYWwoKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9
KTsKKworICAgICAgICAvLyBXYWl0IHVudGlsIHRoZSBpbml0aWFsaXphdGlvbiBzZWdtZW50IGlz
IGhhbmRsZWQKKyAgICAgICAgaW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3Jl
LT53YWl0KCk7CiAgICAgfQogICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50RW5jb3VudGVyZWQg
PSBmYWxzZTsKICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudCA9IG51bGxwdHI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlh
U291cmNlUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXgg
NzcxZWEwOGNlZjQ0MWM1OWQ2ODRmYzVjZWRiMzNmMDZhMzZmY2Y4MS4uZWZlZjdiYTNjMjgyZWU2
NTMwOGUwNTRlMzM3NmI0ZTVhMmVkYjM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVByaXZhdGVHU3RyZWFtZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
TWVkaWFTb3VyY2VQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIE1l
ZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1lcjo6cmVtb3ZlU291cmNlQnVmZmVyKFNvdXJjZUJ1ZmZl
clByaXZhdGUqIHNvdXJjZQogICAgIG1fYWN0aXZlU291cmNlQnVmZmVycy5yZW1vdmUoc291cmNl
QnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5nZXQoKSk7CiB9CiAKLXZvaWQgTWVkaWFTb3VyY2VQcml2
YXRlR1N0cmVhbWVyOjpkdXJhdGlvbkNoYW5nZWQoKQordm9pZCBNZWRpYVNvdXJjZVByaXZhdGVH
U3RyZWFtZXI6OmR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmKQogewogICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTEwOSwxMSArMTA5LDEzIEBAIHZvaWQgTWVkaWFTb3Vy
Y2VQcml2YXRlR1N0cmVhbWVyOjptYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMgc3Rh
dHVzKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbV9wbGF5ZXJQcml2YXRl
Lm1hcmtFbmRPZlN0cmVhbShzdGF0dXMpOworICAgIG1faXNFbmRlZCA9IHRydWU7CiB9CiAKIHZv
aWQgTWVkaWFTb3VyY2VQcml2YXRlR1N0cmVhbWVyOjp1bm1hcmtFbmRPZlN0cmVhbSgpCiB7CiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2lzRW5kZWQgPSBmYWxzZTsKIH0KIAogTWVkaWFQ
bGF5ZXI6OlJlYWR5U3RhdGUgTWVkaWFTb3VyY2VQcml2YXRlR1N0cmVhbWVyOjpyZWFkeVN0YXRl
KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvTWVkaWFTb3VyY2VQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlUHJpdmF0ZUdTdHJl
YW1lci5oCmluZGV4IDI1MjRhYTBmOWJmNzVjZWNkZjc4MzYyMzdkMTQyNDdhM2MyNDZlYWYuLjM0
Y2Y3MGI3MjNkN2RhZTgxYzBkZDc0YzA1MmQyN2NlNmY0YmU1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VQcml2
YXRlR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL21zZS9NZWRpYVNvdXJjZVByaXZhdGVHU3RyZWFtZXIuaApAQCAtNjEsOSArNjEsMTAg
QEAgcHVibGljOgogICAgIEFkZFN0YXR1cyBhZGRTb3VyY2VCdWZmZXIoY29uc3QgQ29udGVudFR5
cGUmLCBSZWZQdHI8U291cmNlQnVmZmVyUHJpdmF0ZT4mKSBvdmVycmlkZTsKICAgICB2b2lkIHJl
bW92ZVNvdXJjZUJ1ZmZlcihTb3VyY2VCdWZmZXJQcml2YXRlKik7CiAKLSAgICB2b2lkIGR1cmF0
aW9uQ2hhbmdlZCgpIG92ZXJyaWRlOworICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1l
ZGlhVGltZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgbWFya0VuZE9mU3RyZWFtKEVuZE9mU3RyZWFt
U3RhdHVzKSBvdmVycmlkZTsKICAgICB2b2lkIHVubWFya0VuZE9mU3RyZWFtKCkgb3ZlcnJpZGU7
CisgICAgYm9vbCBpc0VuZGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0VuZGVkOyB9
CiAKICAgICBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKSBvdmVy
cmlkZTsKQEAgLTk0LDYgKzk1LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFNvdXJjZUJ1ZmZl
clByaXZhdGVHU3RyZWFtZXIqPiBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnM7CiAgICAgUmVmPE1lZGlh
U291cmNlUHJpdmF0ZUNsaWVudD4gbV9tZWRpYVNvdXJjZTsKICAgICBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJNU0UmIG1fcGxheWVyUHJpdmF0ZTsKKyAgICBib29sIG1faXNFbmRlZCB7IGZh
bHNlIH07CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgUmVmPGNvbnN0IExvZ2dlcj4g
bV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQ
cml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9j
a01lZGlhU291cmNlUHJpdmF0ZS5jcHAKaW5kZXggOWI0ZDFmODIxMDAxY2M1OWJmODcwOGFjZjc4
MjU2YTI5MWM1NmYxYy4uOTc5YTgxZDNiOTBjYjY2MGFlNzdiYWFiMjhkYTBlYzk2Y2IzOTIwMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2Nr
TWVkaWFTb3VyY2VQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUuY3BwCkBAIC05Myw3ICs5Myw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1vY2tNZWRpYVNvdXJjZVByaXZh
dGU6OmJ1ZmZlcmVkKCkKICAgICByZXR1cm4gbV9jbGllbnQtPmJ1ZmZlcmVkKCk7CiB9CiAKLXZv
aWQgTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6ZHVyYXRpb25DaGFuZ2VkKCkKK3ZvaWQgTW9ja01l
ZGlhU291cmNlUHJpdmF0ZTo6ZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpCiB7CiAg
ICAgbV9wbGF5ZXIudXBkYXRlRHVyYXRpb24oZHVyYXRpb24oKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVBy
aXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01l
ZGlhU291cmNlUHJpdmF0ZS5oCmluZGV4IDdhNjkzYWVkMzVjYTZjOWM5MzY5MTAyYWE1NTI0ZmUz
MGZhZDQ0MDEuLmUzZDk4MDdjNmIxNTIxZmM5YjA0ZTY0YjE2OWY1ZWVkZDQ2NDUxOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlh
U291cmNlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5oCkBAIC04MCw4ICs4MCw5IEBAIHByaXZhdGU6
CiAKICAgICAvLyBNZWRpYVNvdXJjZVByaXZhdGUgT3ZlcnJpZGVzCiAgICAgQWRkU3RhdHVzIGFk
ZFNvdXJjZUJ1ZmZlcihjb25zdCBDb250ZW50VHlwZSYsIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2
YXRlPiYpIG92ZXJyaWRlOwotICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBtYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMpIG92ZXJyaWRlOworICAgIGJv
b2wgaXNFbmRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNFbmRlZDsgfQogICAgIHZv
aWQgdW5tYXJrRW5kT2ZTdHJlYW0oKSBvdmVycmlkZTsKICAgICBNZWRpYVBsYXllcjo6UmVhZHlT
dGF0ZSByZWFkeVN0YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSZWFkeVN0YXRl
KE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNl
QnVmZmVyUHJpdmF0ZS5jcHAKaW5kZXggMmZjOTBkMzU0ZjZiOTY3YzVjOTUwMjdiMjIzZTRhMzU3
ODAwZjMwYS4uYzYxMTA2NWMzOGY2YjkwZDJkYTQyMTc3Yjk1NDI3NGZlODdhMmExZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNl
QnVmZmVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRp
YXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCB2
b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQoVmVjdG9yPHVuc2lnbmVkIGNoYXI+
JiYgZGF0YSkKIAogICAgIHdoaWxlIChtX2lucHV0QnVmZmVyLnNpemUoKSAmJiByZXN1bHQgPT0g
U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0OjpBcHBlbmRTdWNjZWVkZWQp
IHsKICAgICAgICAgYXV0byBidWZmZXIgPSBBcnJheUJ1ZmZlcjo6Y3JlYXRlKG1faW5wdXRCdWZm
ZXIuZGF0YSgpLCBtX2lucHV0QnVmZmVyLnNpemUoKSk7Ci0gICAgICAgIHNpemVfdCBib3hMZW5n
dGggPSBNb2NrQm94OjpwZWVrTGVuZ3RoKGJ1ZmZlci5wdHIoKSk7CisgICAgICAgIHVpbnQ2NF90
IGJveExlbmd0aCA9IE1vY2tCb3g6OnBlZWtMZW5ndGgoYnVmZmVyLnB0cigpKTsKICAgICAgICAg
aWYgKGJveExlbmd0aCA+IGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpKQogICAgICAgICAgICAgYnJlYWs7
CiAKQEAgLTE1OSw2ICsxNTksMTAgQEAgdm9pZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6YXBw
ZW5kKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGRhdGEpCiAgICAgICAgIG1faW5wdXRCdWZmZXIu
cmVtb3ZlKDAsIGJveExlbmd0aCk7CiAgICAgfQogCisgICAgLy8gUmVzb2x2ZSB0aGUgY2hhbmdl
cyBpbiBUcmFja0J1ZmZlcnMnIGJ1ZmZlcmVkIHJhbmdlcworICAgIC8vIGludG8gdGhlIFNvdXJj
ZUJ1ZmZlcidzIGJ1ZmZlcmVkIHJhbmdlcworICAgIHVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVm
ZmVycyhtX21lZGlhU291cmNlLT5pc0VuZGVkKCkpOworCiAgICAgaWYgKG1fY2xpZW50KQogICAg
ICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKHJlc3VsdCk7
CiB9CkBAIC0xOTEsNyArMTk1LDcgQEAgdm9pZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlk
UmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBNb2NrSW5pdGlhbGkKICAgICAgICAg
fQogICAgIH0KIAotICAgIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVJbml0aWFsaXph
dGlvblNlZ21lbnQoc2VnbWVudCk7CisgICAgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2
ZUluaXRpYWxpemF0aW9uU2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpLCBbXSgpIHsgfSk7CiB9CiAK
IHZvaWQgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVTYW1wbGUoY29uc3QgTW9j
a1NhbXBsZUJveCYgc2FtcGxlQm94KQpAQCAtMjQ5LDcgKzI1Myw3IEBAIE1lZGlhVGltZSBNb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZTo6bWluaW11bVVwY29taW5nUHJlc2VudGF0aW9uVGltZUZvclRy
YWNrSUQoY29uCiAgICAgcmV0dXJuIG1fbWluaW11bVVwY29taW5nUHJlc2VudGF0aW9uVGltZTsK
IH0KIAotdm9pZCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0TWF4aW11bVF1ZXVlRGVwdGhG
b3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmLCBzaXplX3QgbWF4UXVldWVEZXB0aCkKK3ZvaWQg
TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6OnNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRChj
b25zdCBBdG9tU3RyaW5nJiwgdWludDY0X3QgbWF4UXVldWVEZXB0aCkKIHsKICAgICBtX21heFF1
ZXVlRGVwdGggPSBtYXhRdWV1ZURlcHRoOwogfQpAQCAtMzIyLDE2ICszMjYsNiBAQCB2b2lkIE1v
Y2tTb3VyY2VCdWZmZXJQcml2YXRlOjplbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiBz
YW1wbGUsIGNvbnN0IEF0bwogICAgIG1fZW5xdWV1ZWRTYW1wbGVzLmFwcGVuZCh0b1N0cmluZyhz
YW1wbGUuZ2V0KCkpKTsKIH0KIAotYm9vbCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6aGFzVmlk
ZW8oKSBjb25zdAotewotICAgIHJldHVybiBtX2NsaWVudCAmJiBtX2NsaWVudC0+c291cmNlQnVm
ZmVyUHJpdmF0ZUhhc1ZpZGVvKCk7Ci19Ci0KLWJvb2wgTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6
Omhhc0F1ZGlvKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9jbGllbnQgJiYgbV9jbGllbnQtPnNv
dXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRpbygpOwotfQotCiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECiBXVEZMb2dDaGFubmVsJiBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6bG9nQ2hhbm5lbCgp
IGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlh
c291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKaW5kZXggYjZjNTQ3
ZGQ5NWMxZjZiMGJkZGQyZTQxMWFmMTQyYjM5OGZkZmZlNS4uOGIyYTEzODk0NmMyOGYyZjNlN2Rl
YmZlNzM2NWNjYzdiYWZiYTNmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUu
aApAQCAtNDYsOSArNDYsNiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNsZWFyTWVkaWFTb3VyY2Uo
KSB7IG1fbWVkaWFTb3VyY2UgPSBudWxscHRyOyB9CiAKLSAgICBib29sIGhhc1ZpZGVvKCkgY29u
c3Q7Ci0gICAgYm9vbCBoYXNBdWRpbygpIGNvbnN0OwotCiBwcml2YXRlOgogICAgIGV4cGxpY2l0
IE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlKE1vY2tNZWRpYVNvdXJjZVByaXZhdGUqKTsKIApAQCAt
NzUsNyArNzIsNyBAQCBwcml2YXRlOgogCiAgICAgVmVjdG9yPFN0cmluZz4gZW5xdWV1ZWRTYW1w
bGVzRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJikgZmluYWw7CiAgICAgTWVkaWFUaW1lIG1p
bmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWVGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcm
KSBmaW5hbDsKLSAgICB2b2lkIHNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRChjb25zdCBB
dG9tU3RyaW5nJiwgc2l6ZV90KSBmaW5hbDsKKyAgICB2b2lkIHNldE1heGltdW1RdWV1ZURlcHRo
Rm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJiwgdWludDY0X3QpIGZpbmFsOwogCiAgICAgdm9p
ZCBkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IE1vY2tJbml0aWFsaXphdGlv
bkJveCYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVNhbXBsZShjb25zdCBNb2NrU2FtcGxlQm94Jik7
CkBAIC05NCw3ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2lzQWN0aXZlIHsgZmFsc2Ug
fTsKICAgICBNZWRpYVRpbWUgbV9taW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lOwogICAg
IFZlY3RvcjxTdHJpbmc+IG1fZW5xdWV1ZWRTYW1wbGVzOwotICAgIE9wdGlvbmFsPHNpemVfdD4g
bV9tYXhRdWV1ZURlcHRoOworICAgIE9wdGlvbmFsPHVpbnQ2NF90PiBtX21heFF1ZXVlRGVwdGg7
CiAgICAgVmVjdG9yPGNoYXI+IG1faW5wdXRCdWZmZXI7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElT
QUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVB
dWRpb1RyYWNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZUF1ZGlvVHJhY2tQcm94eS5jcHAKaW5kZXggOTNlMmYyN2Q4MmU4ZjkyNGY3ODVjNTBhNjUwNTA1
YWRiNmEzNjcyNi4uZWFlOTNlNzNhYjBjNTc2MzgwZDQ1OGM3OTQ0OTFhMDY2MTBiOTdiNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlv
VHJhY2tQcm94eS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmln
dXJhdGlvbiYgUmVtb3RlQXVkaW9UcmFja1Byb3h5Ojpjb25maWd1cmF0aW9uKCkKIHsKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbj4gY29u
ZmlndXJhdGlvbjsKIAotICAgIGNvbmZpZ3VyYXRpb24tPmlkZW50aWZpZXIgPSBtX3RyYWNrUHJp
dmF0ZS0+aWQoKTsKKyAgICBjb25maWd1cmF0aW9uLT50cmFja0lkID0gbV90cmFja1ByaXZhdGUt
PmlkKCk7CiAgICAgY29uZmlndXJhdGlvbi0+bGFiZWwgPSBtX3RyYWNrUHJpdmF0ZS0+bGFiZWwo
KTsKICAgICBjb25maWd1cmF0aW9uLT5sYW5ndWFnZSA9IG1fdHJhY2tQcml2YXRlLT5sYW5ndWFn
ZSgpOwogICAgIGNvbmZpZ3VyYXRpb24tPnRyYWNrSW5kZXggPSBtX3RyYWNrUHJpdmF0ZS0+dHJh
Y2tJbmRleCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZU1lZGlhUGxheWVyUHJveHkuY3BwCmluZGV4IGMzYjA3MzRhNGVmOThkMmE3ZTczOTBl
YTk4MDNlM2UwMzZiN2VjNTIuLjQyZWU3OWJiMDZlNDc1MjVkYWIzNTQyNmQzYWRiYTE1OGE2M2Ex
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlTWVkaWFQbGF5ZXJQcm94eS5jcHAKQEAgLTEzNCwxMCArMTM0LDE0IEBAIHZvaWQgUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eTo6bG9hZChVUkwmJiB1cmwsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNp
b246OkhhbmRsZT4mCiB9CiAKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQotdm9pZCBSZW1vdGVN
ZWRpYVBsYXllclByb3h5Ojpsb2FkTWVkaWFTb3VyY2UoVVJMJiYgdXJsLCBjb25zdCBXZWJDb3Jl
OjpDb250ZW50VHlwZSYgY29udGVudFR5cGUsIFJlbW90ZU1lZGlhU291cmNlSWRlbnRpZmllciBt
ZWRpYVNvdXJjZUlkZW50aWZpZXIpCit2b2lkIFJlbW90ZU1lZGlhUGxheWVyUHJveHk6OmxvYWRN
ZWRpYVNvdXJjZShVUkwmJiB1cmwsIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiBjb250ZW50
VHlwZSwgUmVtb3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyIG1lZGlhU291cmNlSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24mJik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgbV9tZWRpYVNvdXJjZVByb3h5ID0gYWRvcHRS
ZWYoKm5ldyBSZW1vdGVNZWRpYVNvdXJjZVByb3h5KG1fbWFuYWdlci5ncHVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzKCksIG1lZGlhU291cmNlSWRlbnRpZmllciwgKnRoaXMpKTsKICAgICBtX3BsYXll
ci0+bG9hZCh1cmwsIGNvbnRlbnRUeXBlLCBtX21lZGlhU291cmNlUHJveHkuZ2V0KCkpOworCisg
ICAgUmVtb3RlTWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb247CisgICAgZ2V0
Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uKTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKGNvbmZpZ3VyYXRpb24pKTsKIH0KICNlbmRpZgogCkBAIC03NTksNyArNzYzLDggQEAgdm9p
ZCBSZW1vdGVNZWRpYVBsYXllclByb3h5Ojp1cGRhdGVDYWNoZWRTdGF0ZSgpCiAKICAgICBpZiAo
bV9idWZmZXJlZENoYW5nZWQpIHsKICAgICAgICAgbV9idWZmZXJlZENoYW5nZWQgPSBmYWxzZTsK
LSAgICAgICAgbV9jYWNoZWRTdGF0ZS5idWZmZXJlZFJhbmdlcyA9ICptX3BsYXllci0+YnVmZmVy
ZWQoKTsKKyAgICAgICAgaWYgKG1fZW5naW5lSWRlbnRpZmllciAhPSBNZWRpYVBsYXllckVudW1z
OjpNZWRpYUVuZ2luZUlkZW50aWZpZXI6OkFWRm91bmRhdGlvbk1TRSkKKyAgICAgICAgICAgIG1f
Y2FjaGVkU3RhdGUuYnVmZmVyZWRSYW5nZXMgPSAqbV9wbGF5ZXItPmJ1ZmZlcmVkKCk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkuaAppbmRleCBiODI0NzcxM2FkYWYxYzQ1M2VhNGM2NTgxZGFkNDNi
YjFlMGMyMDY2Li5hZTZhZDhiNDYwYjlmNmJkYjNiMDA0MGY3ODBiZjE5NWY0NDliY2YxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQbGF5ZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5LmgKQEAgLTExNSw3ICsxMTUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxvYWQo
VVJMJiYsIE9wdGlvbmFsPFNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4mJiwgY29uc3QgV2ViQ29y
ZTo6Q29udGVudFR5cGUmLCBjb25zdCBTdHJpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
bW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4mJik7CiAjaWYgRU5BQkxFKE1FRElBX1NP
VVJDRSkKLSAgICB2b2lkIGxvYWRNZWRpYVNvdXJjZShVUkwmJiwgY29uc3QgV2ViQ29yZTo6Q29u
dGVudFR5cGUmLCBSZW1vdGVNZWRpYVNvdXJjZUlkZW50aWZpZXIpOworICAgIHZvaWQgbG9hZE1l
ZGlhU291cmNlKFVSTCYmLCBjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYsIFJlbW90ZU1lZGlh
U291cmNlSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZW1vdGVNZWRpYVBsYXll
ckNvbmZpZ3VyYXRpb24mJik+JiYpOwogI2VuZGlmCiAgICAgdm9pZCBjYW5jZWxMb2FkKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KaW5kZXggMDhlYTE1Y2M2NmIyZWE5ZDA3
MGRhNmJiNzFmODhiNzQ1MWNmMDE1OC4uMmNkZTA4MDQ5YWRlZGI0YzYxNjk1Njk0YjBiODliNWVm
MGZhMTAzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTI4LDcgKzI4
LDcgQEAgbWVzc2FnZXMgLT4gUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSBOb3RSZWZDb3VudGVkIHsK
IAogICAgIExvYWQoVVJMIHVybCwgT3B0aW9uYWw8V2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpI
YW5kbGU+IHNhbmRib3hFeHRlbnNpb24sIFdlYkNvcmU6OkNvbnRlbnRUeXBlIGNvbnRlbnRUeXBl
LCBTdHJpbmcga2V5U3lzdGVtKSAtPiAoc3RydWN0IFdlYktpdDo6UmVtb3RlTWVkaWFQbGF5ZXJD
b25maWd1cmF0aW9uIHBsYXllckNvbmZpZ3VyYXRpb24pIEFzeW5jCiAjaWYgRU5BQkxFKE1FRElB
X1NPVVJDRSkKLSAgICBMb2FkTWVkaWFTb3VyY2UoVVJMIHVybCwgV2ViQ29yZTo6Q29udGVudFR5
cGUgY29udGVudFR5cGUsIFdlYktpdDo6UmVtb3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyIG1lZGlh
U291cmNlSWRlbnRpZmllcikgU3luY2hyb25vdXMKKyAgICBMb2FkTWVkaWFTb3VyY2UoVVJMIHVy
bCwgV2ViQ29yZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUsIFdlYktpdDo6UmVtb3RlTWVkaWFT
b3VyY2VJZGVudGlmaWVyIG1lZGlhU291cmNlSWRlbnRpZmllcikgLT4gKHN0cnVjdCBXZWJLaXQ6
OlJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiBwbGF5ZXJDb25maWd1cmF0aW9uKSBBc3lu
YwogI2VuZGlmCiAgICAgQ2FuY2VsTG9hZCgpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmNwcAppbmRleCA0OTli
ZDYxYzJmNzgyMjIzZmEzOGZjOTdiMTgyZmE2ZDJiOTM4MWRlLi4yZTQ4MmRlYjY1ZGYzNjRkYWZj
OTQ3Y2VlMmI3NTQ1ZGUzM2U4YmZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9H
UFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuY3BwCkBAIC02MSwxMyArNjEs
MTIgQEAgdm9pZCBSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpzZXRQcml2YXRlQW5kT3BlbihSZWY8
TWVkaWFTb3VyY2VQcml2YXRlPiYmIG1lZGlhU28KIAogTWVkaWFUaW1lIFJlbW90ZU1lZGlhU291
cmNlUHJveHk6OmR1cmF0aW9uKCkgY29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAg
IHJldHVybiB7IH07CisgICAgcmV0dXJuIG1fZHVyYXRpb247CiB9CiAKIHN0ZDo6dW5pcXVlX3B0
cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IFJlbW90ZU1lZGlhU291cmNlUHJveHk6OmJ1ZmZlcmVkKCkg
Y29uc3QKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIHJldHVybiBtYWtlVW5pcXVlPFBsYXRmb3JtVGltZVJhbmdlcz4oKTsKIH0KIApAQCAt
MTEyLDYgKzExMSwyMiBAQCB2b2lkIFJlbW90ZU1lZGlhU291cmNlUHJveHk6OmFkZFNvdXJjZUJ1
ZmZlcihjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYgY29udGVudAogICAgIGNhbGxiYWNrKHN0
YXR1cywgcmVtb3RlU291cmNlSWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgUmVtb3RlTWVkaWFTb3Vy
Y2VQcm94eTo6ZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24pCit7Cisg
ICAgaWYgKG1fZHVyYXRpb24gPT0gZHVyYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIG1f
ZHVyYXRpb24gPSBkdXJhdGlvbjsKKyAgICBpZiAobV9wcml2YXRlKQorICAgICAgICBtX3ByaXZh
dGUtPmR1cmF0aW9uQ2hhbmdlZChkdXJhdGlvbik7Cit9CisKK3ZvaWQgUmVtb3RlTWVkaWFTb3Vy
Y2VQcm94eTo6c2V0UmVhZHlTdGF0ZShXZWJDb3JlOjpNZWRpYVBsYXllckVudW1zOjpSZWFkeVN0
YXRlIHJlYWR5U3RhdGUpCit7CisgICAgaWYgKG1fcHJpdmF0ZSkKKyAgICAgICAgbV9wcml2YXRl
LT5zZXRSZWFkeVN0YXRlKHJlYWR5U3RhdGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
IAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNv
dXJjZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFT
b3VyY2VQcm94eS5oCmluZGV4IDU5NjhjN2JiZDE4OWNkNDc5ZWY0YWVhYjRkNDQ5OTUzM2ZkM2Q2
NWIuLjk1OTM0NDlkM2I1ZTVjZmVkOTZiNTE1ZTgxN2UwM2RhMGNjYTA4ZjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJv
eHkuaApAQCAtNzYsMTcgKzc2LDIxIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICAvLyBJUEM6
Ok1lc3NhZ2VSZWNlaXZlcgotICAgIC8vIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICB2b2lkIGRpZFJl
Y2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVu
aXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIGZpbmFsOwogCi0gICAgdXNpbmcgQWRkU291cmNlQnVm
ZmVyQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1lZGlhU291cmNl
UHJpdmF0ZTo6QWRkU3RhdHVzLCBPcHRpb25hbDxSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVy
PiByZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyKT47CisgICAgdXNpbmcgQWRkU291cmNlQnVm
ZmVyQ2FsbGJhY2sgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkNvcmU6Ok1lZGlhU291cmNl
UHJpdmF0ZTo6QWRkU3RhdHVzLCBPcHRpb25hbDxSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVy
Pik+OwogICAgIHZvaWQgYWRkU291cmNlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBl
JiwgQWRkU291cmNlQnVmZmVyQ2FsbGJhY2smJik7CisgICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQo
Y29uc3QgTWVkaWFUaW1lJik7CisgICAgdm9pZCBzZXRSZWFkeVN0YXRlKFdlYkNvcmU6Ok1lZGlh
UGxheWVyRW51bXM6OlJlYWR5U3RhdGUpOwogCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyYgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzOwogICAgIFJlbW90ZU1lZGlhU291cmNlSWRlbnRp
ZmllciBtX2lkZW50aWZpZXI7CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0
ZT4gbV9wcml2YXRlOwogICAgIFdlYWtQdHI8UmVtb3RlTWVkaWFQbGF5ZXJQcm94eT4gbV9yZW1v
dGVNZWRpYVBsYXllclByb3h5OwogCisgICAgTWVkaWFUaW1lIG1fZHVyYXRpb247CisKICAgICBW
ZWN0b3I8UmVmUHRyPFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Pj4gbV9zb3VyY2VCdWZmZXJzOwog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhU291cmNlUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCBjYTZiNzUyZDc3MDYw
ZGVjY2I5ZGMzYmM3OTY0ODlmNGVjOTIwZGFkLi5kOTk5MTI2ODhlYmIwZDU5YWRjZGI1MzdjZTgz
NWVmZTc5NmU5ZjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlTWVkaWFTb3VyY2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjcs
NiArMjcsOCBAQAogCiBtZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVNvdXJjZVByb3h5IE5vdFJlZkNv
dW50ZWQgewogICAgIEFkZFNvdXJjZUJ1ZmZlcihXZWJDb3JlOjpDb250ZW50VHlwZSBjb250ZW50
VHlwZSkgLT4gKGVudW06dWludDhfdCBXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0
YXR1cyBzdGF0dXMsIE9wdGlvbmFsPFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmll
cj4gcmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcikgU3luY2hyb25vdXMKKyAgICBEdXJhdGlv
bkNoYW5nZWQoTWVkaWFUaW1lIGR1cmF0aW9uKQorICAgIFNldFJlYWR5U3RhdGUoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJFbnVtczo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKQogfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNl
QnVmZmVyUHJveHkuY3BwCmluZGV4IDI2NWI3M2I2YTRkZjM1M2Y0NTNkYjcyM2NjMzI5OGJjNzg1
YjJjNzQuLjg0NzMzZmMwYWI0OWI2MzU1NzcxOTBhOGJhZTkyZWRjZGI4NjFmZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5LmNwcApAQCAtMzQsNyArMzQsOSBAQAogI2luY2x1ZGUgIlJlbW90ZU1lZGlhUGxh
eWVyUHJveHkuaCIKICNpbmNsdWRlICJSZW1vdGVTb3VyY2VCdWZmZXJQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZU1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSA8V2ViQ29yZS9NZWRpYURlc2NyaXB0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBs
ZW1lbnRlZC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1UaW1lUmFuZ2VzLmg+CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCkBAIC01NCwxNCArNTYsMTYgQEAgUmVtb3RlU291cmNlQnVmZmVy
UHJveHk6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5KEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
IGNvbm4KIHsKICAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MubWVzc2FnZVJlY2VpdmVyTWFw
KCkuYWRkTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2VzOjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6
bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50aWZpZXIudG9VSW50NjQoKSwgKnRoaXMpOwog
ICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+c2V0Q2xpZW50KHRoaXMpOworICAgIG1fc291cmNl
QnVmZmVyUHJpdmF0ZS0+c2V0SXNBdHRhY2hlZCh0cnVlKTsKIH0KIAogUmVtb3RlU291cmNlQnVm
ZmVyUHJveHk6On5SZW1vdGVTb3VyY2VCdWZmZXJQcm94eSgpCiB7CisgICAgbV9zb3VyY2VCdWZm
ZXJQcml2YXRlLT5zZXRJc0F0dGFjaGVkKGZhbHNlKTsKICAgICBtX2Nvbm5lY3Rpb25Ub1dlYlBy
b2Nlc3MubWVzc2FnZVJlY2VpdmVyTWFwKCkucmVtb3ZlTWVzc2FnZVJlY2VpdmVyKE1lc3NhZ2Vz
OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6bWVzc2FnZVJlY2VpdmVyTmFtZSgpLCBtX2lkZW50
aWZpZXIudG9VSW50NjQoKSk7CiB9CiAKLXZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNv
dXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IElu
aXRpYWxpemF0aW9uU2VnbWVudCYgc2VnbWVudCkKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJv
eHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KElu
aXRpYWxpemF0aW9uU2VnbWVudCYmIHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fcmVtb3RlTWVkaWFQbGF5ZXJQcm94
eSkKICAgICAgICAgcmV0dXJuOwpAQCAtNzEsMTkgKzc1LDM0IEBAIHZvaWQgUmVtb3RlU291cmNl
QnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25T
ZWdtZW50CiAgICAgZm9yIChhdXRvJiBhdWRpb1RyYWNrSW5mbyA6IHNlZ21lbnQuYXVkaW9UcmFj
a3MpIHsKICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gbV9yZW1vdGVNZWRpYVBsYXllclByb3h5
LT5hZGRSZW1vdGVBdWRpb1RyYWNrUHJveHkoKmF1ZGlvVHJhY2tJbmZvLnRyYWNrKTsKICAgICAg
ICAgc2VnbWVudEluZm8uYXVkaW9UcmFja3MuYXBwZW5kKHsgTWVkaWFEZXNjcmlwdGlvbkluZm8o
KmF1ZGlvVHJhY2tJbmZvLmRlc2NyaXB0aW9uKSwgaWRlbnRpZmllciB9KTsKKworICAgICAgICBB
U1NFUlQoIW1fdHJhY2tJZHMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgICAgICBBU1NFUlQo
IW1fbWVkaWFEZXNjcmlwdGlvbnMuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgICAgICBtX3Ry
YWNrSWRzLmFkZChpZGVudGlmaWVyLCBhdWRpb1RyYWNrSW5mby50cmFjay0+aWQoKSk7CisgICAg
ICAgIG1fbWVkaWFEZXNjcmlwdGlvbnMuYWRkKGlkZW50aWZpZXIsICphdWRpb1RyYWNrSW5mby5k
ZXNjcmlwdGlvbik7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiB2aWRlb1RyYWNrSW5mbyA6IHNl
Z21lbnQudmlkZW9UcmFja3MpIHsKICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gbV9yZW1vdGVN
ZWRpYVBsYXllclByb3h5LT5hZGRSZW1vdGVWaWRlb1RyYWNrUHJveHkoKnZpZGVvVHJhY2tJbmZv
LnRyYWNrKTsKICAgICAgICAgc2VnbWVudEluZm8udmlkZW9UcmFja3MuYXBwZW5kKHsgTWVkaWFE
ZXNjcmlwdGlvbkluZm8oKnZpZGVvVHJhY2tJbmZvLmRlc2NyaXB0aW9uKSwgaWRlbnRpZmllciB9
KTsKKworICAgICAgICBBU1NFUlQoIW1fdHJhY2tJZHMuY29udGFpbnMoaWRlbnRpZmllcikpOwor
ICAgICAgICBBU1NFUlQoIW1fbWVkaWFEZXNjcmlwdGlvbnMuY29udGFpbnMoaWRlbnRpZmllcikp
OworICAgICAgICBtX3RyYWNrSWRzLmFkZChpZGVudGlmaWVyLCB2aWRlb1RyYWNrSW5mby50cmFj
ay0+aWQoKSk7CisgICAgICAgIG1fbWVkaWFEZXNjcmlwdGlvbnMuYWRkKGlkZW50aWZpZXIsICp2
aWRlb1RyYWNrSW5mby5kZXNjcmlwdGlvbik7CiAgICAgfQogCiAgICAgZm9yIChhdXRvJiB0ZXh0
VHJhY2tJbmZvIDogc2VnbWVudC50ZXh0VHJhY2tzKSB7CiAgICAgICAgIGF1dG8gaWRlbnRpZmll
ciA9IG1fcmVtb3RlTWVkaWFQbGF5ZXJQcm94eS0+YWRkUmVtb3RlVGV4dFRyYWNrUHJveHkoKnRl
eHRUcmFja0luZm8udHJhY2spOwogICAgICAgICBzZWdtZW50SW5mby50ZXh0VHJhY2tzLmFwcGVu
ZCh7IE1lZGlhRGVzY3JpcHRpb25JbmZvKCp0ZXh0VHJhY2tJbmZvLmRlc2NyaXB0aW9uKSwgaWRl
bnRpZmllciB9KTsKKworICAgICAgICBBU1NFUlQoIW1fdHJhY2tJZHMuY29udGFpbnMoaWRlbnRp
ZmllcikpOworICAgICAgICBBU1NFUlQoIW1fbWVkaWFEZXNjcmlwdGlvbnMuY29udGFpbnMoaWRl
bnRpZmllcikpOworICAgICAgICBtX3RyYWNrSWRzLmFkZChpZGVudGlmaWVyLCB0ZXh0VHJhY2tJ
bmZvLnRyYWNrLT5pZCgpKTsKKyAgICAgICAgbV9tZWRpYURlc2NyaXB0aW9ucy5hZGQoaWRlbnRp
ZmllciwgKnRleHRUcmFja0luZm8uZGVzY3JpcHRpb24pOwogICAgIH0KIAotICAgIG1fY29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlv
blNlZ21lbnQoc2VnbWVudEluZm8pLCBtX2lkZW50aWZpZXIpOworICAgIG1fY29ubmVjdGlvblRv
V2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpTb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRp
YWxpemF0aW9uU2VnbWVudChzZWdtZW50SW5mbyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3Vy
Y2VCdWZmZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9vbCkKQEAgLTkxLDE0ICsxMTAsMTQgQEAgdm9p
ZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZEVycm9y
KGJvb2wpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBSZW1vdGVTb3VyY2VCdWZm
ZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRp
bWUmKQordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUR1
cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uKQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRl
RHVyYXRpb25DaGFuZ2VkKGR1cmF0aW9uKSwgbV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBSZW1v
dGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxlKGRv
dWJsZSkKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVE
aWRQYXJzZVNhbXBsZShkb3VibGUgc2FtcGxlRHVyYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQ
YXJzZVNhbXBsZShzYW1wbGVEdXJhdGlvbiksIG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgUmVt
b3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWREcm9wU2FtcGxlKCkK
QEAgLTExMSwyNiArMTMwLDI0IEBAIHZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJj
ZUJ1ZmZlclByaXZhdGVTdHJlYW1FbmRlZFdpdGhEZWNvZGVFcnJvcigpCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAotYm9vbCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVy
UHJpdmF0ZUhhc0F1ZGlvKCkgY29uc3QKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNv
dXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50
OjpBcHBlbmRSZXN1bHQgYXBwZW5kUmVzdWx0KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgcmV0dXJuIGZhbHNlOworICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9u
KCkuc2VuZChNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVy
UHJpdmF0ZUFwcGVuZENvbXBsZXRlKGFwcGVuZFJlc3VsdCksIG1faWRlbnRpZmllcik7CiB9CiAK
LWJvb2wgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRl
bygpIGNvbnN0Cit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2
YXRlRGlkUmVjZWl2ZVJlbmRlcmluZ0Vycm9yKGludCBlcnJvckNvZGUpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgUmVtb3RlU291cmNlQnVm
ZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShTb3VyY2VCdWZmZXJQ
cml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQgYXBwZW5kUmVzdWx0KQordm9pZCBSZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGJv
b2wgZmxhZykKIHsKLSAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNl
bmQoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBcHBlbmRDb21wbGV0ZShhcHBlbmRSZXN1bHQpLCBtX2lkZW50aWZpZXIpOworICAgIG1fY29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2Vk
KGZsYWcpLCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVJlbmRlcmluZ0Vycm9yKGludCBlcnJvckNv
ZGUpCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlQnVm
ZmVyZWRSYW5nZXNDaGFuZ2VkKGNvbnN0IFBsYXRmb3JtVGltZVJhbmdlcyYgdGltZVJhbmdlcykK
IHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5j
b25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291
cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZCh0aW1lUmFuZ2VzKSwgbV9pZGVu
dGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6YXBwZW5kKGNvbnN0
IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0YSkKQEAgLTEzOCw2ICsxNTUsNDMgQEAgdm9pZCBSZW1v
dGVTb3VyY2VCdWZmZXJQcm94eTo6YXBwZW5kKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYgZGF0
YSkKICAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPmFwcGVuZChkYXRhLnZlY3RvcigpKTsKIH0K
IAordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c2V0QWN0aXZlKGJvb2wgYWN0aXZlKQor
eworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+c2V0QWN0aXZlKGFjdGl2ZSk7Cit9CisKK3Zv
aWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNldFJlYWR5U3RhdGUoV2ViQ29yZTo6TWVkaWFQ
bGF5ZXI6OlJlYWR5U3RhdGUgc3RhdGUpCit7CisgICAgbV9zb3VyY2VCdWZmZXJQcml2YXRlLT5z
ZXRSZWFkeVN0YXRlKHN0YXRlKTsKK30KKwordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6
dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCkKK3sKKyAg
ICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPnVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVmZmVycyhz
b3VyY2VJc0VuZGVkKTsKK30KKwordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6ZXZpY3RD
b2RlZEZyYW1lcyh1aW50NjRfdCBuZXdEYXRhU2l6ZSwgdWludDY0X3QgcGVuZGluZ0FwcGVuZERh
dGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUsIGNvbnN0IE1lZGlhVGltZSYg
Y3VycmVudFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24sIGJvb2wgaXNFbmRlZCkKK3sK
KyAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPmV2aWN0Q29kZWRGcmFtZXMobmV3RGF0YVNpemUs
IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIG1heGltdW1CdWZmZXJTaXplLCBjdXJyZW50VGlt
ZSwgZHVyYXRpb24sIGlzRW5kZWQpOworfQorCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
OjphZGRUcmFja0J1ZmZlcihUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHRyYWNrUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIpCit7CisgICAgQVNTRVJUKG1fdHJhY2tJZHMuY29udGFpbnModHJh
Y2tQcml2YXRlUmVtb3RlSWRlbnRpZmllcikpOworICAgIEFTU0VSVChtX21lZGlhRGVzY3JpcHRp
b25zLmNvbnRhaW5zKHRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIpKTsKKyAgICBtX3NvdXJj
ZUJ1ZmZlclByaXZhdGUtPmFkZFRyYWNrQnVmZmVyKG1fdHJhY2tJZHMuZ2V0KHRyYWNrUHJpdmF0
ZVJlbW90ZUlkZW50aWZpZXIpLCBtX21lZGlhRGVzY3JpcHRpb25zLmdldCh0cmFja1ByaXZhdGVS
ZW1vdGVJZGVudGlmaWVyKSk7Cit9CisKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnJl
ZW5xdWV1ZU1lZGlhSWZOZWVkZWQoY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50TWVkaWFUaW1lLCB1
aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVy
U2l6ZSkKK3sKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPnJlZW5xdWV1ZU1lZGlhSWZOZWVk
ZWQoY3VycmVudE1lZGlhVGltZSwgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgbWF4aW11bUJ1
ZmZlclNpemUpOworfQorCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojp0cnlTaWduYWxB
bGxTYW1wbGVzSW5UcmFja0VucXVldWVkKCkKK3sKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUt
PnRyeVNpZ25hbEFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoKTsKK30KKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CiAKICNlbmRpZiAvLyBFTkFCTEUoR1BVX1BST0NFU1MpICYmIEVOQUJMRShNRURJ
QV9TT1VSQ0UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlU291cmNlQnVmZmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5oCmluZGV4IGJjOWY5OWRmYjdhMjMwYjU4OWFlMzQyZTVj
ZDA0NzcwNzVmMDIxMzguLjZlY2Q4YmNmNjhlZWI3ZmNhYjExNWM2OWNhMWMxNGRmZGM1MmI1MWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VC
dWZmZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVT
b3VyY2VCdWZmZXJQcm94eS5oCkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSAiR1BVQ29ubmVj
dGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1
ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJUcmFja1ByaXZh
dGVSZW1vdGVJZGVudGlmaWVyLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYURlc2NyaXB0aW9u
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Tb3VyY2VCdWZmZXJQcml2YXRlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5o
PgpAQCAtNDMsMTAgKzQ1LDEyIEBAIGNsYXNzIERhdGFSZWZlcmVuY2U7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIGNsYXNzIE1lZGlhU2FtcGxlOworY2xhc3MgUGxhdGZvcm1UaW1lUmFuZ2VzOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorc3RydWN0IE1lZGlhRGVzY3JpcHRpb25JbmZvOwog
Y2xhc3MgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTsKIAogY2xhc3MgUmVtb3RlU291cmNlQnVmZmVy
UHJveHkgZmluYWwKQEAgLTU4LDE2ICs2MiwxNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxS
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eT4gY3JlYXRlKEdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3Mm
LCBSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6U291cmNlQnVmZmVy
UHJpdmF0ZT4mJiwgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eSYpOwogICAgIHZpcnR1YWwgflJlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5KCk7CiAKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRS
ZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXRpYWxpemF0aW9uU2VnbWVudCYp
IGZpbmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXph
dGlvblNlZ21lbnQoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJikgZmluYWw7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlU3RyZWFtRW5kZWRX
aXRoRGVjb2RlRXJyb3IoKSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBl
bmRFcnJvcihib29sIGRlY29kZUVycm9yKSBmaW5hbDsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclBy
aXZhdGVBcHBlbmRDb21wbGV0ZShXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpB
cHBlbmRSZXN1bHQpIGZpbmFsOwogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9u
Q2hhbmdlZChjb25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclBy
aXZhdGVEaWRQYXJzZVNhbXBsZShkb3VibGUgc2FtcGxlRHVyYXRpb24pIGZpbmFsOwogICAgIHZv
aWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZERyb3BTYW1wbGUoKSBmaW5hbDsKLSAgICB2b2lkIHNv
dXJjZUJ1ZmZlclByaXZhdGVTdHJlYW1FbmRlZFdpdGhEZWNvZGVFcnJvcigpIGZpbmFsOwotICAg
IGJvb2wgc291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlvKCkgY29uc3QgZmluYWw7Ci0gICAgYm9v
bCBzb3VyY2VCdWZmZXJQcml2YXRlSGFzVmlkZW8oKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHNv
dXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZChib29sKSBmaW5hbDsKKyAgICB2
b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQoY29uc3QgV2ViQ29y
ZTo6UGxhdGZvcm1UaW1lUmFuZ2VzJikgZmluYWw7CiAKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlclBy
aXZhdGVBcHBlbmRDb21wbGV0ZShXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpB
cHBlbmRSZXN1bHQpIGZpbmFsOwogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2Vp
dmVSZW5kZXJpbmdFcnJvcihpbnQgZXJyb3JDb2RlKSBmaW5hbDsKIAogcHJpdmF0ZToKQEAgLTc3
LDEyICs4MSwyMiBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7CiAgICAgLy8gdm9pZCBkaWRSZWNlaXZl
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mKSBmaW5hbDsKIAorICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wpOwog
ICAgIHZvaWQgYXBwZW5kKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpOworICAgIHZvaWQgc2V0
UmVhZHlTdGF0ZShXZWJDb3JlOjpNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSk7CisgICAgdm9pZCB1
cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVkKTsKKyAgICB2
b2lkIGV2aWN0Q29kZWRGcmFtZXModWludDY0X3QgbmV3RGF0YVNpemUsIHVpbnQ2NF90IHBlbmRp
bmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplLCBjb25zdCBN
ZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uLCBib29sIGlz
RW5kZWQpOworICAgIHZvaWQgYWRkVHJhY2tCdWZmZXIoVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRp
Zmllcik7CisgICAgdm9pZCByZWVucXVldWVNZWRpYUlmTmVlZGVkKGNvbnN0IE1lZGlhVGltZSYg
Y3VycmVudE1lZGlhVGltZSwgdWludDY0X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgdWlu
dDY0X3QgbWF4aW11bUJ1ZmZlclNpemUpOworICAgIHZvaWQgdHJ5U2lnbmFsQWxsU2FtcGxlc0lu
VHJhY2tFbnF1ZXVlZCgpOwogCiAgICAgR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgbV9jb25u
ZWN0aW9uVG9XZWJQcm9jZXNzOwogICAgIFJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIgbV9p
ZGVudGlmaWVyOwogICAgIFJlZjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlPiBtX3NvdXJj
ZUJ1ZmZlclByaXZhdGU7CiAgICAgV2Vha1B0cjxSZW1vdGVNZWRpYVBsYXllclByb3h5PiBtX3Jl
bW90ZU1lZGlhUGxheWVyUHJveHk7CisKKyAgICBIYXNoTWFwPFRyYWNrUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIsIEF0b21TdHJpbmc+IG1fdHJhY2tJZHM7CisgICAgSGFzaE1hcDxUcmFja1ByaXZh
dGVSZW1vdGVJZGVudGlmaWVyLCBSZWY8V2ViQ29yZTo6TWVkaWFEZXNjcmlwdGlvbj4+IG1fbWVk
aWFEZXNjcmlwdGlvbnM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5t
ZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VC
dWZmZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCBhMDhmZjAxZGEzMGQwNjdiOWU0MWZiNWExMTNl
N2JhNDNmZTBlMDE3Li5mNDFmZGU0ZTc5ZmE3MDljMjM4ZGMyNzc0NmQ5MDg0ZmY4MDE0YTdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVm
ZmVyUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNiw3ICsyNiwxNCBAQAog
I2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAogbWVzc2Fn
ZXMgLT4gUmVtb3RlU291cmNlQnVmZmVyUHJveHkgTm90UmVmQ291bnRlZCB7CisgICAgU2V0QWN0
aXZlKGJvb2wgYWN0aXZlKQogICAgIEFwcGVuZChJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKKyAg
ICBTZXRSZWFkeVN0YXRlKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQor
ICAgIFVwZGF0ZUJ1ZmZlcmVkRnJvbVRyYWNrQnVmZmVycyhib29sIHNvdXJjZUlzRW5kZWQpCisg
ICAgRXZpY3RDb2RlZEZyYW1lcyh1aW50NjRfdCBuZXdEYXRhU2l6ZSwgdWludDY0X3QgcGVuZGlu
Z0FwcGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUsIE1lZGlhVGlt
ZSBjdXJyZW50VGltZSwgTWVkaWFUaW1lIGR1cmF0aW9uLCBib29sIGlzRW5kZWQpCisgICAgQWRk
VHJhY2tCdWZmZXIoV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyIHRyYWNrSWQp
CisgICAgUmVlbnF1ZXVlTWVkaWFJZk5lZWRlZChNZWRpYVRpbWUgY3VycmVudE1lZGlhVGltZSwg
dWludDY0X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZl
clNpemUpCisgICAgVHJ5U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCgpCiB9CiAKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRl
eHRUcmFja1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVU
ZXh0VHJhY2tQcm94eS5jcHAKaW5kZXggNjc0NDhlOWE3NDhmMThhZGE0NTI1OTA5YmEyY2QzMTQw
YjIyNTFlZC4uMTMyMTVhNjczOTdjMGNjZjg4NzRmYjRhYWYxMDA4M2QzMGIxMjFhNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNr
UHJveHkuY3BwCkBAIC02NCw3ICs2NCw3IEBAIFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1
cmF0aW9uJiBSZW1vdGVUZXh0VHJhY2tQcm94eTo6Y29uZmlndXJhdGlvbigpCiB7CiAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uPiBj
b25maWd1cmF0aW9uOwogCi0gICAgY29uZmlndXJhdGlvbi0+aWRlbnRpZmllciA9IG1fdHJhY2tQ
cml2YXRlLT5pZCgpOworICAgIGNvbmZpZ3VyYXRpb24tPnRyYWNrSWQgPSBtX3RyYWNrUHJpdmF0
ZS0+aWQoKTsKICAgICBjb25maWd1cmF0aW9uLT5sYWJlbCA9IG1fdHJhY2tQcml2YXRlLT5sYWJl
bCgpOwogICAgIGNvbmZpZ3VyYXRpb24tPmxhbmd1YWdlID0gbV90cmFja1ByaXZhdGUtPmxhbmd1
YWdlKCk7CiAgICAgY29uZmlndXJhdGlvbi0+dHJhY2tJbmRleCA9IG1fdHJhY2tQcml2YXRlLT50
cmFja0luZGV4KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEv
UmVtb3RlVmlkZW9UcmFja1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVWaWRlb1RyYWNrUHJveHkuY3BwCmluZGV4IDM1MGY4ZWE3MzA3YmQyMzdhYTgzZjZj
Yzk0NWI1NjEwZGY2ZjFjNzEuLmI5MmE4NGUzYTliNjhhYzZjNGYyYWYzNDI2YWVkN2E3OTQxMmRh
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVWaWRl
b1RyYWNrUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVWaWRlb1RyYWNrUHJveHkuY3BwCkBAIC02MCw3ICs2MCw3IEBAIFRyYWNrUHJpdmF0ZVJlbW90
ZUNvbmZpZ3VyYXRpb24mIFJlbW90ZVZpZGVvVHJhY2tQcm94eTo6Y29uZmlndXJhdGlvbigpCiB7
CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRp
b24+IGNvbmZpZ3VyYXRpb247CiAKLSAgICBjb25maWd1cmF0aW9uLT5pZGVudGlmaWVyID0gbV90
cmFja1ByaXZhdGUtPmlkKCk7CisgICAgY29uZmlndXJhdGlvbi0+dHJhY2tJZCA9IG1fdHJhY2tQ
cml2YXRlLT5pZCgpOwogICAgIGNvbmZpZ3VyYXRpb24tPmxhYmVsID0gbV90cmFja1ByaXZhdGUt
PmxhYmVsKCk7CiAgICAgY29uZmlndXJhdGlvbi0+bGFuZ3VhZ2UgPSBtX3RyYWNrUHJpdmF0ZS0+
bGFuZ3VhZ2UoKTsKICAgICBjb25maWd1cmF0aW9uLT50cmFja0luZGV4ID0gbV90cmFja1ByaXZh
dGUtPnRyYWNrSW5kZXgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgK
aW5kZXggYzEzOWNmYzE0YjQ3MWZiMjU4ZGJiZTgxODJiM2Q1YzYyMTYyYjU5Mi4uNjU2MDViMDFh
MTI4NmMzMTI5N2ViYzYwY2UwZmM4NTA1YjUyMmVhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1v
dGVDb25maWd1cmF0aW9uLmgKQEAgLTM0LDcgKzM0LDcgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBzdHJ1Y3QgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24gewotICAgIEF0b21T
dHJpbmcgaWRlbnRpZmllcjsKKyAgICBBdG9tU3RyaW5nIHRyYWNrSWQ7CiAgICAgQXRvbVN0cmlu
ZyBsYWJlbDsKICAgICBBdG9tU3RyaW5nIGxhbmd1YWdlOwogICAgIEF0b21TdHJpbmcgaW5CYW5k
TWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZTsKQEAgLTU1LDcgKzU1LDcgQEAgc3RydWN0IFRleHRU
cmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIHsKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNv
ZGVyPgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgewotICAg
ICAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7CisgICAgICAgIGVuY29kZXIgPDwgdHJhY2tJZDsK
ICAgICAgICAgZW5jb2RlciA8PCBsYWJlbDsKICAgICAgICAgZW5jb2RlciA8PCBsYW5ndWFnZTsK
ICAgICAgICAgZW5jb2RlciA8PCBpbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlOwpAQCAt
NzUsOSArNzUsOSBAQCBzdHJ1Y3QgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24g
ewogICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgogICAgIHN0YXRpYyBPcHRpb25hbDxUZXh0
VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29kZXImIGRlY29kZXIp
CiAgICAgewotICAgICAgICBPcHRpb25hbDxBdG9tU3RyaW5nPiBpZGVudGlmaWVyOwotICAgICAg
ICBkZWNvZGVyID4+IGlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghaWRlbnRpZmllcikKKyAgICAg
ICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gdHJhY2tJZDsKKyAgICAgICAgZGVjb2RlciA+PiB0cmFj
a0lkOworICAgICAgICBpZiAoIXRyYWNrSWQpCiAgICAgICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OwogCiAgICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IGxhYmVsOwpAQCAtMTUxLDcgKzE1
MSw3IEBAIHN0cnVjdCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7CiAgICAg
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogCiAgICAgICAgIHJldHVybiB7ewotICAgICAg
ICAgICAgV1RGTW92ZSgqaWRlbnRpZmllciksCisgICAgICAgICAgICBXVEZNb3ZlKCp0cmFja0lk
KSwKICAgICAgICAgICAgIFdURk1vdmUoKmxhYmVsKSwKICAgICAgICAgICAgIFdURk1vdmUoKmxh
bmd1YWdlKSwKICAgICAgICAgICAgIFdURk1vdmUoKmluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRj
aFR5cGUpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1RyYWNr
UHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9UcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgKaW5kZXggNDQ0MjJiMzAxNGYy
MDIyMTZiZWQ2YTU3YTNmOGVkZDc5NDhlOTI0Ni4uYThmMDVkMThmZDk5ODhlYmI5OWM3NjczYjY4
N2E2NzBkOTJlMDE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlh
L1RyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oCkBAIC0zNCw3
ICszNCw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IFRyYWNrUHJpdmF0ZVJlbW90
ZUNvbmZpZ3VyYXRpb24gewotICAgIEF0b21TdHJpbmcgaWRlbnRpZmllcjsKKyAgICBBdG9tU3Ry
aW5nIHRyYWNrSWQ7CiAgICAgQXRvbVN0cmluZyBsYWJlbDsKICAgICBBdG9tU3RyaW5nIGxhbmd1
YWdlOwogICAgIE1lZGlhVGltZSBzdGFydFRpbWVWYXJpYW5jZSB7IE1lZGlhVGltZTo6emVyb1Rp
bWUoKSB9OwpAQCAtNDksNyArNDksNyBAQCBzdHJ1Y3QgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmln
dXJhdGlvbiB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KICAgICB2b2lkIGVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKLSAgICAgICAgZW5jb2RlciA8PCBpZGVudGlm
aWVyOworICAgICAgICBlbmNvZGVyIDw8IHRyYWNrSWQ7CiAgICAgICAgIGVuY29kZXIgPDwgbGFi
ZWw7CiAgICAgICAgIGVuY29kZXIgPDwgbGFuZ3VhZ2U7CiAgICAgICAgIGVuY29kZXIgPDwgc3Rh
cnRUaW1lVmFyaWFuY2U7CkBAIC02Myw5ICs2Myw5IEBAIHN0cnVjdCBUcmFja1ByaXZhdGVSZW1v
dGVDb25maWd1cmF0aW9uIHsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgRGVjb2Rlcj4KICAgICBzdGF0
aWMgT3B0aW9uYWw8VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbj4gZGVjb2RlKERlY29k
ZXImIGRlY29kZXIpCiAgICAgewotICAgICAgICBPcHRpb25hbDxBdG9tU3RyaW5nPiBpZGVudGlm
aWVyOwotICAgICAgICBkZWNvZGVyID4+IGlkZW50aWZpZXI7Ci0gICAgICAgIGlmICghaWRlbnRp
ZmllcikKKyAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gdHJhY2tJZDsKKyAgICAgICAgZGVj
b2RlciA+PiB0cmFja0lkOworICAgICAgICBpZiAoIXRyYWNrSWQpCiAgICAgICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OwogCiAgICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IGxhYmVsOwpA
QCAtMTA5LDcgKzEwOSw3IEBAIHN0cnVjdCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9u
IHsKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHt7
Ci0gICAgICAgICAgICBXVEZNb3ZlKCppZGVudGlmaWVyKSwKKyAgICAgICAgICAgIFdURk1vdmUo
KnRyYWNrSWQpLAogICAgICAgICAgICAgV1RGTW92ZSgqbGFiZWwpLAogICAgICAgICAgICAgV1RG
TW92ZSgqbGFuZ3VhZ2UpLAogICAgICAgICAgICAgV1RGTW92ZSgqc3RhcnRUaW1lVmFyaWFuY2Up
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1Ry
YWNrUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcAppbmRleCA3MjFjMGFhOTIwNzI0ZTliMzNiNTg2
NTMwMzEzN2I2Y2E1NDkwMGEwLi5lMmEzZTkwMWFmZjRlNjQxNDFiZmM5OWM2ZjBjNDU3MjliMWQ4
YmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlv
VHJhY2tQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmNwcApAQCAtNTMsOSArNTMsOSBAQCB2b2lk
IEF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlOjpzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCkKIAogdm9p
ZCBBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZTo6dXBkYXRlQ29uZmlndXJhdGlvbihUcmFja1ByaXZh
dGVSZW1vdGVDb25maWd1cmF0aW9uJiYgY29uZmlndXJhdGlvbikKIHsKLSAgICBpZiAoY29uZmln
dXJhdGlvbi5pZGVudGlmaWVyICE9IG1faWQpIHsKKyAgICBpZiAoY29uZmlndXJhdGlvbi50cmFj
a0lkICE9IG1faWQpIHsKICAgICAgICAgYXV0byBjaGFuZ2VkID0gIW1faWQuaXNFbXB0eSgpOwot
ICAgICAgICBtX2lkID0gY29uZmlndXJhdGlvbi5pZGVudGlmaWVyOworICAgICAgICBtX2lkID0g
Y29uZmlndXJhdGlvbi50cmFja0lkOwogICAgICAgICBpZiAoY2hhbmdlZCAmJiBjbGllbnQoKSkK
ICAgICAgICAgICAgIGNsaWVudCgpLT5pZENoYW5nZWQobV9pZCk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJl
bW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJp
dmF0ZVJlbW90ZS5oCmluZGV4IDUzZGM5YmUzM2M5YmZjMGRjNGE3YjAxZmMxZjEwMWY5ZTg3NmE1
YzUuLmNmN2MwZTkzZWY0NmY0OTAxY2VjYzVmOWY3YThlNjFlM2YxNmIzZmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1v
dGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQ
cml2YXRlUmVtb3RlLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBBdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZShjb25uZWN0aW9uLCBpZGVuZGlm
aWVyLCBXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKSk7CiAgICAgfQogCisgICAgQXRvbVN0cmluZyBp
ZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1faWQ7IH0KICAgICB2b2lkIHVwZGF0ZUNvbmZpZ3Vy
YXRpb24oVHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiYmKTsKIAogcHJpdmF0ZToKQEAg
LTU1LDcgKzU2LDYgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIEF1ZGlvVHJhY2tLaW5kID0gV2Vi
Q29yZTo6QXVkaW9UcmFja1ByaXZhdGU6OktpbmQ7CiAgICAgQXVkaW9UcmFja0tpbmQga2luZCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fa2luZDsgfQotICAgIEF0b21TdHJpbmcgaWQoKSBjb25z
dCBmaW5hbCB7IHJldHVybiBtX2lkOyB9CiAgICAgQXRvbVN0cmluZyBsYWJlbCgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fbGFiZWw7IH0KICAgICBBdG9tU3RyaW5nIGxhbmd1YWdlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9sYW5ndWFnZTsgfQogICAgIGludCB0cmFja0luZGV4KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV90cmFja0luZGV4OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5j
cHAKaW5kZXggNmRkZWU4N2FiZGNjNzZmODY5YWQ1NTRkYjUxMTJiMzZiODJmMmQ2Yi4uNzEzMjFl
NmJlNjAwNDgzOGMzYjYzNWQwZWZkYzRjMWVmNjg5MzIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRl
UmVtb3RlLmNwcApAQCAtNjMzLDcgKzYzMywxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeQog
ewogICAgIGlmIChtX3JlbW90ZUVuZ2luZUlkZW50aWZpZXIgPT0gTWVkaWFQbGF5ZXJFbnVtczo6
TWVkaWFFbmdpbmVJZGVudGlmaWVyOjpBVkZvdW5kYXRpb25NU0UpIHsKICAgICAgICAgYXV0byBp
ZGVudGlmaWVyID0gUmVtb3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyOjpnZW5lcmF0ZSgpOwotICAg
ICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6
TG9hZE1lZGlhU291cmNlKHVybCwgY29udGVudFR5cGUsIGlkZW50aWZpZXIpLCBtX2lkKTsKKyAg
ICAgICAgY29ubmVjdGlvbigpLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6UmVtb3RlTWVk
aWFQbGF5ZXJQcm94eTo6TG9hZE1lZGlhU291cmNlKHVybCwgY29udGVudFR5cGUsIGlkZW50aWZp
ZXIpLCBbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldKGF1dG8mJiBjb25maWd1cmF0aW9u
KSB7CisgICAgICAgICAgICBpZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgd2Vha1RoaXMt
Pm1fY29uZmlndXJhdGlvbiA9IFdURk1vdmUoY29uZmlndXJhdGlvbik7CisgICAgICAgIH0sIG1f
aWQpOwogICAgICAgICBtX21lZGlhU291cmNlUHJpdmF0ZSA9IE1lZGlhU291cmNlUHJpdmF0ZVJl
bW90ZTo6Y3JlYXRlKG1fbWFuYWdlci5ncHVQcm9jZXNzQ29ubmVjdGlvbigpLCBpZGVudGlmaWVy
LCBtX21hbmFnZXIudHlwZUNhY2hlKG1fcmVtb3RlRW5naW5lSWRlbnRpZmllciksICp0aGlzLCBj
bGllbnQpOwogCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmNwcApp
bmRleCAwYWM3ODcyMGJhYzRkNDI4ZDEyNDcwNDg5ODY1OTM5MzhmZjc4NWRhLi41MDMyMjUyYmY1
MGYxNjI0NWIxNWZlNGUwZjJmYzE5MmRlNTE4NTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1v
dGUuY3BwCkBAIC0xMDMsOSArMTAzLDkgQEAgTWVkaWFTb3VyY2VQcml2YXRlOjpBZGRTdGF0dXMg
TWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjphZGRTb3VyY2VCdWZmZXIoY29uc3QgQ28KICAgICBy
ZXR1cm4gc3RhdHVzOwogfQogCi12b2lkIE1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6ZHVyYXRp
b25DaGFuZ2VkKCkKK3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjpkdXJhdGlvbkNoYW5n
ZWQoY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJl
bW90ZU1lZGlhU291cmNlUHJveHk6OkR1cmF0aW9uQ2hhbmdlZChkdXJhdGlvbiksIG1faWRlbnRp
Zmllcik7CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjptYXJrRW5kT2ZTdHJl
YW0oRW5kT2ZTdHJlYW1TdGF0dXMpCkBAIC0xMTgsMTQgKzExOCwyMCBAQCB2b2lkIE1lZGlhU291
cmNlUHJpdmF0ZVJlbW90ZTo6dW5tYXJrRW5kT2ZTdHJlYW0oKQogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKK2Jvb2wgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjppc0VuZGVkKCkgY29uc3QK
K3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogTWVkaWFQ
bGF5ZXI6OlJlYWR5U3RhdGUgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjpyZWFkeVN0YXRlKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gbV9tZWRpYVBsYXllclByaXZhdGUgPyBtX21lZGlhUGxheWVy
UHJpdmF0ZS0+cmVhZHlTdGF0ZSgpIDogTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGU6OkhhdmVOb3Ro
aW5nOwogfQogCi12b2lkIE1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6c2V0UmVhZHlTdGF0ZShN
ZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSkKK3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjpz
ZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24o
KS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVNvdXJjZVByb3h5OjpTZXRSZWFkeVN0YXRlKHJl
YWR5U3RhdGUpLCBtX2lkZW50aWZpZXIpOwogfQogCiB2b2lkIE1lZGlhU291cmNlUHJpdmF0ZVJl
bW90ZTo6d2FpdEZvclNlZWtDb21wbGV0ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmgKaW5k
ZXggNzc4MzRmN2ExOWRjYjBiOTRlZDUyZjY2ODAwZTYwNWMzMTUzNDc5OS4uNjRmNzM4NWIyOTI5
ZjlmMzA0YjQyYzhhMzZlMmIyNTc2MmY5ZThlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5o
CkBAIC01Niw5ICs1NiwxMCBAQCBwdWJsaWM6CiAKICAgICAvLyBNZWRpYVNvdXJjZVByaXZhdGUg
b3ZlcnJpZGVzCiAgICAgQWRkU3RhdHVzIGFkZFNvdXJjZUJ1ZmZlcihjb25zdCBXZWJDb3JlOjpD
b250ZW50VHlwZSYsIFJlZlB0cjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlPiYpIGZpbmFs
OwotICAgIHZvaWQgZHVyYXRpb25DaGFuZ2VkKCkgZmluYWw7CisgICAgdm9pZCBkdXJhdGlvbkNo
YW5nZWQoY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CiAgICAgdm9pZCBtYXJrRW5kT2ZTdHJlYW0o
RW5kT2ZTdHJlYW1TdGF0dXMpIGZpbmFsOwogICAgIHZvaWQgdW5tYXJrRW5kT2ZTdHJlYW0oKSBm
aW5hbDsKKyAgICBib29sIGlzRW5kZWQoKSBjb25zdCBmaW5hbDsKICAgICBXZWJDb3JlOjpNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgZmluYWw7CiAgICAgdm9pZCBz
ZXRSZWFkeVN0YXRlKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKSBmaW5hbDsKICAg
ICB2b2lkIHdhaXRGb3JTZWVrQ29tcGxldGVkKCkgZmluYWw7CkBAIC03OSw2ICs4MCw4IEBAIHBy
aXZhdGU6CiAgICAgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZUNsaWVudD4gbV9j
bGllbnQ7CiAgICAgVmVjdG9yPFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlPj4gbV9z
b3VyY2VCdWZmZXJzOwogCisgICAgTWVkaWFUaW1lIG1fZHVyYXRpb247CisKICNpZiAhUkVMRUFT
RV9MT0dfRElTQUJMRUQKICAgICBjb25zdCBjaGFyKiBsb2dDbGFzc05hbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAiTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlIjsgfQogICAgIGNvbnN0IHZv
aWQqIGxvZ0lkZW50aWZpZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2xvZ0lkZW50aWZpZXI7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDYzMmUwMGZiMTUyZDBmZDc0
NjU3NmUzNGNhZmJmOWUyYjQ2M2JmN2QuLjZlZGU0MjJhOWM5NDM3MmY0MmQ0MGE2YmYzMWRjNjVh
YTMxY2I1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLmNwcApAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL05vdEltcGxlbWVudGVkLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVRpbWVSYW5n
ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmLmg+CiAKQEAgLTEwMCwxNyArMTAxLDE1IEBAIE1lZGlhUGxheWVyOjpS
ZWFkeVN0YXRlIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnJlYWR5U3RhdGUoKSBjb25zdAog
ICAgIHJldHVybiBtX21lZGlhUGxheWVyUHJpdmF0ZSA/IG1fbWVkaWFQbGF5ZXJQcml2YXRlLT5y
ZWFkeVN0YXRlKCkgOiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmc7CiB9CiAK
LXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c2V0UmVhZHlTdGF0ZShNZWRpYVBsYXll
cjo6UmVhZHlTdGF0ZSkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c2V0UmVhZHlT
dGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSBzdGF0ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotfQorICAgIGlmICghbV9tZWRpYVNvdXJjZVByaXZhdGUpCisgICAgICAgIHJldHVybjsK
IAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpmbHVzaChjb25zdCBBdG9tU3RyaW5n
JiB0cmFja0lEKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9ncHVQcm9jZXNzQ29u
bmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJv
eHk6OlNldFJlYWR5U3RhdGUoc3RhdGUpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIp
OwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmVucXVldWVTYW1wbGUoUmVm
PE1lZGlhU2FtcGxlPiYmLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKQordm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlOjpmbHVzaChjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CkBAIC0xMjAsOSArMTE5LDEzIEBAIGJvb2wgU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZTo6aXNSZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21TdHJp
bmcmIHRyYWNrSUQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGU6OnNldEFjdGl2ZShib29sKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVt
b3RlOjpzZXRBY3RpdmUoYm9vbCBhY3RpdmUpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBpZiAoIW1fbWVkaWFTb3VyY2VQcml2YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2lz
QWN0aXZlID0gYWN0aXZlOworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigp
LnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpTZXRBY3RpdmUoYWN0aXZl
KSwgbV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlOjpub3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3JlU2FtcGxlcyhjb25z
dCBBdG9tU3RyaW5nJiB0cmFja0lEKQpAQCAtMTUxLDcgKzE1NCwzNiBAQCBib29sIFNvdXJjZUJ1
ZmZlclByaXZhdGVSZW1vdGU6OmNhblN3aXRjaFRvVHlwZShjb25zdCBDb250ZW50VHlwZSYpCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNv
dXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxp
emF0aW9uU2VnbWVudEluZm8mJiBzZWdtZW50SW5mbykKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZTo6dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRl
ZCkKK3sKKyAgICBpZiAoIW1fbWVkaWFTb3VyY2VQcml2YXRlKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpS
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6VXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKHNv
dXJjZUlzRW5kZWQpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpOworfQorCit2b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmV2aWN0Q29kZWRGcmFtZXModWludDY0X3QgbmV3
RGF0YVNpemUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1h
eGltdW1CdWZmZXJTaXplLCBjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBjb25zdCBNZWRp
YVRpbWUmIGR1cmF0aW9uLCBib29sIGlzRW5kZWQpCit7CisgICAgbV9ncHVQcm9jZXNzQ29ubmVj
dGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6
OkV2aWN0Q29kZWRGcmFtZXMobmV3RGF0YVNpemUsIHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHks
IG1heGltdW1CdWZmZXJTaXplLCBjdXJyZW50VGltZSwgZHVyYXRpb24sIGlzRW5kZWQpLCBtX3Jl
bW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGU6OmFkZFRyYWNrQnVmZmVyKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSWQsIFJlZlB0
cjxNZWRpYURlc2NyaXB0aW9uPiYmKQoreworICAgIEFTU0VSVChtX3RyYWNrSWRlbnRpZmllck1h
cC5jb250YWlucyh0cmFja0lkKSk7CisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0
aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OkFkZFRyYWNrQnVm
ZmVyKG1fdHJhY2tJZGVudGlmaWVyTWFwLmdldCh0cmFja0lkKSksIG1fcmVtb3RlU291cmNlQnVm
ZmVySWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6cmVl
bnF1ZXVlTWVkaWFJZk5lZWRlZChjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRNZWRpYVRpbWUsIHVp
bnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJT
aXplKQoreworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVz
c2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpSZWVucXVldWVNZWRpYUlmTmVlZGVkKGN1
cnJlbnRNZWRpYVRpbWUsIHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIG1heGltdW1CdWZmZXJT
aXplKSwgbV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyKTsKK30KKwordm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlOjp0cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKCkK
K3sKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2Vz
OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6VHJ5U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tFbnF1
ZXVlZCgpLCBtX3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpOworfQorCit2b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlh
bGl6YXRpb25TZWdtZW50KEluaXRpYWxpemF0aW9uU2VnbWVudEluZm8mJiBzZWdtZW50SW5mbywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlm
ICghbV9jbGllbnQgfHwgIW1fbWVkaWFQbGF5ZXJQcml2YXRlKQogICAgICAgICByZXR1cm47CkBA
IC0xNjQsNiArMTk2LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VC
dWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWUKICAgICAgICAgaW5mby50
cmFjayA9IG1fbWVkaWFQbGF5ZXJQcml2YXRlLT5hdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZShhdWRp
b1RyYWNrLmlkZW50aWZpZXIpOwogICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gUmVtb3RlTWVk
aWFEZXNjcmlwdGlvbjo6Y3JlYXRlKGF1ZGlvVHJhY2suZGVzY3JpcHRpb24pOwogICAgICAgICBz
ZWdtZW50LmF1ZGlvVHJhY2tzLmFwcGVuZChpbmZvKTsKKyAgICAgICAgbV90cmFja0lkZW50aWZp
ZXJNYXAuYWRkKGluZm8udHJhY2stPmlkKCksIGF1ZGlvVHJhY2suaWRlbnRpZmllcik7CiAgICAg
fQogCiAgICAgZm9yIChhdXRvJiB2aWRlb1RyYWNrIDogc2VnbWVudEluZm8udmlkZW9UcmFja3Mp
IHsKQEAgLTE3MSw2ICsyMDQsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNv
dXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZQogICAgICAgICBp
bmZvLnRyYWNrID0gbV9tZWRpYVBsYXllclByaXZhdGUtPnZpZGVvVHJhY2tQcml2YXRlUmVtb3Rl
KHZpZGVvVHJhY2suaWRlbnRpZmllcik7CiAgICAgICAgIGluZm8uZGVzY3JpcHRpb24gPSBSZW1v
dGVNZWRpYURlc2NyaXB0aW9uOjpjcmVhdGUodmlkZW9UcmFjay5kZXNjcmlwdGlvbik7CiAgICAg
ICAgIHNlZ21lbnQudmlkZW9UcmFja3MuYXBwZW5kKGluZm8pOworICAgICAgICBtX3RyYWNrSWRl
bnRpZmllck1hcC5hZGQoaW5mby50cmFjay0+aWQoKSwgdmlkZW9UcmFjay5pZGVudGlmaWVyKTsK
ICAgICB9CiAKICAgICBmb3IgKGF1dG8mIHRleHRUcmFjayA6IHNlZ21lbnRJbmZvLnRleHRUcmFj
a3MpIHsKQEAgLTE3OCw5ICsyMTIsMTAgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWUKICAgICAg
ICAgaW5mby50cmFjayA9IG1fbWVkaWFQbGF5ZXJQcml2YXRlLT50ZXh0VHJhY2tQcml2YXRlUmVt
b3RlKHRleHRUcmFjay5pZGVudGlmaWVyKTsKICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IFJl
bW90ZU1lZGlhRGVzY3JpcHRpb246OmNyZWF0ZSh0ZXh0VHJhY2suZGVzY3JpcHRpb24pOwogICAg
ICAgICBzZWdtZW50LnRleHRUcmFja3MuYXBwZW5kKGluZm8pOworICAgICAgICBtX3RyYWNrSWRl
bnRpZmllck1hcC5hZGQoaW5mby50cmFjay0+aWQoKSwgdGV4dFRyYWNrLmlkZW50aWZpZXIpOwog
ICAgIH0KIAotICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRp
YWxpemF0aW9uU2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpKTsKKyAgICBtX2NsaWVudC0+c291cmNl
QnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoV1RGTW92ZShzZWdt
ZW50KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGVSZW1vdGU6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQgYXBwZW5kUmVzdWx0KQpAQCAtMTg5LDYg
KzIyNCwzMCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJjZUJ1ZmZlclBy
aXZhdGVBcHBlbmRDb21wbGV0ZShTb3VyY2VCdWZmZXJQcgogICAgICAgICBtX2NsaWVudC0+c291
cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKGFwcGVuZFJlc3VsdCk7CiB9CiAKK3ZvaWQg
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hh
bmdlZChjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uKQoreworICAgIGlmIChtX2NsaWVudCkKKyAg
ICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQoZHVyYXRp
b24pOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJjZUJ1ZmZlclBy
aXZhdGVEaWRQYXJzZVNhbXBsZShkb3VibGUgc2FtcGxlRHVyYXRpb24pCit7CisgICAgaWYgKG1f
Y2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2Ft
cGxlKHNhbXBsZUR1cmF0aW9uKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
Ojpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCBkaXJ0eSkKK3sK
KyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRl
QnVmZmVyZWREaXJ0eUNoYW5nZWQoZGlydHkpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGU6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQoY29uc3Qg
V2ViQ29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQoreworICAgIGlmIChtX2Ns
aWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdl
c0NoYW5nZWQodGltZVJhbmdlcyk7Cit9CisKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIFdU
RkxvZ0NoYW5uZWwmIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmxvZ0NoYW5uZWwoKSBjb25z
dAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21l
ZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaAppbmRleCA0ZDBlMDMwOWFkNTlkNjk0ZjEz
YmMxNGM0N2NiYmE0YWYyZjdhODYyLi43NjJmNjNiZjdkMmI3OWJmZWViZmUyYWNlYTgyMzMxNzQ1
MTkwMDQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Nv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
R1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuaApAQCAtMzAsNiArMzAsNyBAQAog
I2luY2x1ZGUgIkdQVVByb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2Vp
dmVyLmgiCiAjaW5jbHVkZSAiUmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllci5oIgorI2luY2x1
ZGUgIlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0Nv
bnRlbnRUeXBlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NZWRpYVNhbXBsZS5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZS5oPgpAQCAtNDYsNiArNDcsMTAgQEAgY2xhc3Mg
Q29ubmVjdGlvbjsKIGNsYXNzIERlY29kZXI7CiB9CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIFBsYXRmb3JtVGltZVJhbmdlczsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVj
dCBJbml0aWFsaXphdGlvblNlZ21lbnRJbmZvOwpAQCAtNzQsMjUgKzc5LDQwIEBAIHByaXZhdGU6
CiAgICAgV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0
IGZpbmFsOwogICAgIHZvaWQgc2V0UmVhZHlTdGF0ZShXZWJDb3JlOjpNZWRpYVBsYXllcjo6UmVh
ZHlTdGF0ZSkgZmluYWw7CiAgICAgdm9pZCBmbHVzaChjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lE
KSBmaW5hbDsKLSAgICB2b2lkIGVucXVldWVTYW1wbGUoUmVmPFdlYkNvcmU6Ok1lZGlhU2FtcGxl
PiYmLCBjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKSBmaW5hbDsKICAgICBib29sIGlzUmVhZHlG
b3JNb3JlU2FtcGxlcyhjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKSBmaW5hbDsKICAgICB2b2lk
IHNldEFjdGl2ZShib29sKSBmaW5hbDsKKyAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9pc0FjdGl2ZTsgfQogICAgIHZvaWQgbm90aWZ5Q2xpZW50V2hlblJlYWR5Rm9y
TW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkgZmluYWw7CiAgICAgYm9vbCBj
YW5TZXRNaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lKGNvbnN0IEF0b21TdHJpbmcmKSBj
b25zdCBmaW5hbDsKICAgICB2b2lkIHNldE1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWUo
Y29uc3QgQXRvbVN0cmluZyYsIGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOwogICAgIHZvaWQgY2xl
YXJNaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lKGNvbnN0IEF0b21TdHJpbmcmKSBmaW5h
bDsKICAgICBib29sIGNhblN3aXRjaFRvVHlwZShjb25zdCBXZWJDb3JlOjpDb250ZW50VHlwZSYp
IGZpbmFsOworICAgIHZvaWQgdXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wgc291
cmNlSXNFbmRlZCkgZmluYWw7CisgICAgdm9pZCBldmljdENvZGVkRnJhbWVzKHVpbnQ2NF90IG5l
d0RhdGFTaXplLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBt
YXhpbXVtQnVmZmVyU2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50VGltZSwgY29uc3QgTWVk
aWFUaW1lJiBkdXJhdGlvbiwgYm9vbCBpc0VuZGVkKSBmaW5hbDsKKyAgICB2b2lkIGFkZFRyYWNr
QnVmZmVyKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSWQsIFJlZlB0cjxXZWJDb3JlOjpNZWRpYURl
c2NyaXB0aW9uPiYmKSBmaW5hbDsKKyAgICB2b2lkIHJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQoY29u
c3QgTWVkaWFUaW1lJiBjdXJyZW50TWVkaWFUaW1lLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0
YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSkgZmluYWw7CisgICAgdm9pZCB0
cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKCkgZmluYWw7CiAKICAgICB2b2lkIGRp
ZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwot
Ci0gICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2Vn
bWVudChJbml0aWFsaXphdGlvblNlZ21lbnRJbmZvJiYpOworICAgIHZvaWQgc291cmNlQnVmZmVy
UHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YXRpb25TZWdt
ZW50SW5mbyYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgc291cmNl
QnVmZmVyUHJpdmF0ZVN0cmVhbUVuZGVkV2l0aERlY29kZUVycm9yKCk7CisgICAgdm9pZCBzb3Vy
Y2VCdWZmZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9vbCBkZWNvZGVFcnJvcik7CiAgICAgdm9pZCBz
b3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJp
dmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0KTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVE
dXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJik7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQ
cml2YXRlRGlkUGFyc2VTYW1wbGUoZG91YmxlIHNhbXBsZUR1cmF0aW9uKTsKKyAgICB2b2lkIHNv
dXJjZUJ1ZmZlclByaXZhdGVEaWREcm9wU2FtcGxlKCk7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQ
cml2YXRlRGlkUmVjZWl2ZVJlbmRlcmluZ0Vycm9yKGludCBlcnJvckNvZGUpOworICAgIHZvaWQg
c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGJvb2wgZGlydHkpOworICAg
IHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChjb25zdCBXZWJD
b3JlOjpQbGF0Zm9ybVRpbWVSYW5nZXMmKTsKIAogICAgIEdQVVByb2Nlc3NDb25uZWN0aW9uJiBt
X2dwdVByb2Nlc3NDb25uZWN0aW9uOwogICAgIFJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIg
bV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyOwogICAgIFdlYWtQdHI8TWVkaWFTb3VyY2VQ
cml2YXRlUmVtb3RlPiBtX21lZGlhU291cmNlUHJpdmF0ZTsKICAgICBXZWFrUHRyPE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZT4gbV9tZWRpYVBsYXllclByaXZhdGU7Ci0gICAgV2ViQ29yZTo6U291
cmNlQnVmZmVyUHJpdmF0ZUNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07CisKKyAgICBIYXNo
TWFwPEF0b21TdHJpbmcsIFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXI+IG1fdHJhY2tJZGVu
dGlmaWVyTWFwOworCisgICAgYm9vbCBtX2lzQWN0aXZlIHsgZmFsc2UgfTsKIAogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAogICAgIGNvbnN0IExvZ2dlciYgbG9nZ2VyKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9sb2dnZXIuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJl
bW90ZS5tZXNzYWdlcy5pbgppbmRleCA0MDY0MmY2MDM2ZWY3ZTExZTIzYjgwZjVhNDUxZDc2ZjNl
ZDI4YzRlLi42YzhjY2EwZmU4OTdjNTk5ZWM0Y2ViOGEyYmVhNWE5YWFiZjQ2ODY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGUubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluCkBAIC0yNiw4ICsyNiwx
MiBAQAogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJDRSkKIAog
bWVzc2FnZXMgLT4gU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZSBOb3RSZWZDb3VudGVkIHsKLSAg
ICBTb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChzdHJ1
Y3QgV2ViS2l0OjpJbml0aWFsaXphdGlvblNlZ21lbnRJbmZvIHNlZ21lbnRDb25maWd1cmF0aW9u
KQorICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50
KHN0cnVjdCBXZWJLaXQ6OkluaXRpYWxpemF0aW9uU2VnbWVudEluZm8gc2VnbWVudENvbmZpZ3Vy
YXRpb24pIC0+ICgpIEFzeW5jCiAgICAgU291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRl
KFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCBhcHBlbmRS
ZXN1bHQpCisgICAgU291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChNZWRpYVRpbWUg
ZHVyYXRpb24pCisgICAgU291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2FtcGxlKGRvdWJsZSBz
YW1wbGVEdXJhdGlvbikKKyAgICBTb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5n
ZWQoYm9vbCBkaXJ0eSkKKyAgICBTb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWRSYW5nZXNDaGFu
Z2VkKFdlYkNvcmU6OlBsYXRmb3JtVGltZVJhbmdlcyB0aW1lUmFuZ2VzKQogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNr
UHJpdmF0ZVJlbW90ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Rl
eHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDczMjIzYjg2ODQyMTNhMGJkOGY3MTI4MmE4
ZThkZWE2MTU5OTVlYzAuLjJiNTZmZWQyM2RlYzM1ODU5YWI4NTdlNmY2ZGZmZDc5OGUxYWFlMTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNr
UHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcApAQCAtNTYsOSArNTYsOSBAQCB2b2lkIFRleHRU
cmFja1ByaXZhdGVSZW1vdGU6OnNldE1vZGUoVGV4dFRyYWNrTW9kZSBtb2RlKQogCiB2b2lkIFRl
eHRUcmFja1ByaXZhdGVSZW1vdGU6OnVwZGF0ZUNvbmZpZ3VyYXRpb24oVGV4dFRyYWNrUHJpdmF0
ZVJlbW90ZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQogewotICAgIGlmIChjb25maWd1
cmF0aW9uLmlkZW50aWZpZXIgIT0gbV9pZCkgeworICAgIGlmIChjb25maWd1cmF0aW9uLnRyYWNr
SWQgIT0gbV9pZCkgewogICAgICAgICBhdXRvIGNoYW5nZWQgPSAhbV9pZC5pc0VtcHR5KCk7Ci0g
ICAgICAgIG1faWQgPSBjb25maWd1cmF0aW9uLmlkZW50aWZpZXI7CisgICAgICAgIG1faWQgPSBj
b25maWd1cmF0aW9uLnRyYWNrSWQ7CiAgICAgICAgIGlmIChjaGFuZ2VkICYmIGNsaWVudCgpKQog
ICAgICAgICAgICAgY2xpZW50KCktPmlkQ2hhbmdlZChtX2lkKTsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1ZpZGVvVHJhY2tQcml2YXRlUmVt
b3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVmlkZW9UcmFja1By
aXZhdGVSZW1vdGUuY3BwCmluZGV4IGFjNmVhMDE0MjcxYzMzMTI2Y2Q3NTJiM2ZmZDNiNzg1NDM5
ZGU2NTcuLjM1ZThlN2Q4MzljNzI4MDFmNmE5NmZiZWQyNzIwNjRkNGZkNjZmMDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVmlkZW9UcmFja1ByaXZhdGVS
ZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVmlkZW9U
cmFja1ByaXZhdGVSZW1vdGUuY3BwCkBAIC01Miw5ICs1Miw5IEBAIHZvaWQgVmlkZW9UcmFja1By
aXZhdGVSZW1vdGU6OnNldFNlbGVjdGVkKGJvb2wgc2VsZWN0ZWQpCiAKIHZvaWQgVmlkZW9UcmFj
a1ByaXZhdGVSZW1vdGU6OnVwZGF0ZUNvbmZpZ3VyYXRpb24oVHJhY2tQcml2YXRlUmVtb3RlQ29u
ZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgaWYgKGNvbmZpZ3VyYXRpb24uaWRl
bnRpZmllciAhPSBtX2lkKSB7CisgICAgaWYgKGNvbmZpZ3VyYXRpb24udHJhY2tJZCAhPSBtX2lk
KSB7CiAgICAgICAgIGF1dG8gY2hhbmdlZCA9ICFtX2lkLmlzRW1wdHkoKTsKLSAgICAgICAgbV9p
ZCA9IGNvbmZpZ3VyYXRpb24uaWRlbnRpZmllcjsKKyAgICAgICAgbV9pZCA9IGNvbmZpZ3VyYXRp
b24udHJhY2tJZDsKICAgICAgICAgaWYgKGNoYW5nZWQgJiYgY2xpZW50KCkpCiAgICAgICAgICAg
ICBjbGllbnQoKS0+aWRDaGFuZ2VkKG1faWQpOwogICAgIH0K
</data>
<flag name="commit-queue"
          id="433114"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>415810</attachid>
            <date>2020-12-09 16:20:22 -0800</date>
            <delta_ts>2020-12-09 21:04:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-219402-20201209162021.patch</filename>
            <type>text/plain</type>
            <size>123263</size>
            <attacher name="Peng Liu">peng.liu6</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RlYmRkNjNmYjkxNzM2
MTE4MDVlOWY1NDI4Zjk0YmExMWJiMWNlNy4uNTU4OTZlNWMxMWRiNTlkYTYzNTRlZDk0ZTFlZjdm
ZGFiMzljYmRmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNSBAQAorMjAyMC0xMi0wOCAgUGVu
ZyBMaXUgIDxwZW5nLmxpdTZAYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYSBpbiBHUFUgUHJv
Y2Vzc11bTVNFXSBJbXBsZW1lbnQgYmFzaWMgdmlkZW8gcGxheWJhY2sKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxOTQwMgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCB0aGUgdmlkZW8gcGxh
eWJhY2sgc3VwcG9ydCB3aGVuIHRoZSBNU0UgbWVkaWEgcGxheWVyIHJ1bnMgaW4gdGhlIEdQVSBw
cm9jZXNzLgorCisgICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0UHJpdmF0ZUFuZE9wZW4pOiBQcm9w
YWdhdGUgdGhlIHRpbWUgZnVkZ2UgZmFjdG9yIHRvCisgICAgICAgIGBNZWRpYVNvdXJjZVByaXZh
dGVgIHNvIHRoYXQgYFNvdXJjZUJ1ZmZlclByaXZhdGVgIGNhbiB1c2UgaXQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVNvdXJjZTo6c2V0RHVyYXRpb25JbnRlcm5hbCk6IFByb3BhZ2F0ZSB0aGUg
ZHVyYXRpb24gaW5mb3JtYXRpb24KKyAgICAgICAgdG8gYE1lZGlhU291cmNlUHJpdmF0ZWAgc28g
dGhhdCBgU291cmNlQnVmZmVyUHJpdmF0ZWAgY2FuIHVzZSBpdC4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhU291cmNlOjpzdHJlYW1FbmRlZFdpdGhFcnJvcik6IE1hcmsgdGhlIHN0cmVhbSBpcyBl
bmQgaW4gYE1lZGlhU291cmNlUHJpdmF0ZWAuCisKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291
cmNlL1NvdXJjZUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OlNv
dXJjZUJ1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6On5Tb3VyY2VCdWZm
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpidWZmZXJlZCBjb25zdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRD
b21wbGV0ZSk6IE1vdmUgdGhlIGNvZGUgdG8gdXBkYXRlCisgICAgICAgIGBidWZmZXJlZGAgdG8g
YFNvdXJjZUJ1ZmZlclByaXZhdGVgIHRvIG1ha2Ugc3VyZSB0aGUgYGJ1ZmZlcmVkYCBhdHRyaWJ1
dGUgaXMgdXBkYXRlZCB0aW1lbHkuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6Om1h
eGltdW1CdWZmZXJTaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6
c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQpOiBBZGQg
YSBjb21wbGV0aW9uSGFuZGxlcgorICAgICAgICBwYXJhbWV0ZXIgdG8gbm90aWZ5IHRoZSBjYWxs
ZXIgKGBTb3VyY2VCdWZmZXJQYXJzZXJgKSB0aGF0IHRoZSB0cmFjayBidWZmZXIgbWFuYWdlciAo
YFNvdXJjZUJ1ZmZlclByaXZhdGVgKQorICAgICAgICBoYXMgaGFuZGxlZCB0aGUgaW5pdGlhbGl6
YXRpb24gc2VnbWVudCBhbmQgaXMgcmVhZHkgdG8gcmVjZWl2ZSBtZWRpYSBzYW1wbGVzLgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpleHRyYU1lbW9yeUNvc3QgY29uc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyOjpyZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNldE1heGltdW1RdWV1ZURlcHRoRm9y
VHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclBy
aXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZm
ZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyOjppc0J1ZmZlcmVkRGlydHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6U291cmNlQnVmZmVyOjpzZXRCdWZmZXJlZERpcnR5KToKKyAgICAgICAgKFdlYkNv
cmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlvIGNvbnN0KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0
ZUhhc1ZpZGVvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc291cmNl
L1NvdXJjZUJ1ZmZlci5oOgorICAgICAgICBTb21lIHBhcmFtZXRlcnMgYW5kIHJldHVybiB2YWx1
ZXMgYXJlIGNoYW5nZWQgZnJvbSBgc2l6ZV90YCB0byBgdWludDY0X3RgIGJlY2F1c2UgdGhleQor
ICAgICAgICBuZWVkIHRvIHBhc3Mgd2l0aCBJUEMgbWVzc2FnZXMgd2hlbiB3ZSBydW4gdGhlIE1T
RSBtZWRpYSBwbGF5ZXIgaW4gdGhlIEdQVSBwcm9jZXNzLgorCisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvTWVkaWFTb3VyY2VQcml2YXRlLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNv
dXJjZVByaXZhdGU6OnNldFRpbWVGdWRnZUZhY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNvdXJjZVByaXZhdGU6OnRpbWVGdWRnZUZhY3RvciBjb25zdCk6CisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNvdXJjZUJ1ZmZlclByaXZhdGU6OnNldEJ1ZmZlcmVkRGlydHkpOgorICAgICAgICAoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0QnVmZmVyZWRSYW5nZXMpOgorICAgICAgICAoV2Vi
Q29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZENvbXBsZXRl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjpidWZmZXJlZFNhbXBs
ZXNGb3JUcmFja0lEKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OnBy
b3ZpZGVNZWRpYURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6
cmVlbnF1ZXVlTWVkaWFGb3JUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBy
aXZhdGU6OnJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6cmVtb3Zl
U2FtcGxlc0Zyb21UcmFja0J1ZmZlcik6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlOjpldmljdENvZGVkRnJhbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZl
clByaXZhdGU6OnRvdGFsVHJhY2tCdWZmZXJTaXplSW5CeXRlcyBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjphZGRUcmFja0J1ZmZlcik6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OmRpZFJlY2VpdmVT
YW1wbGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6Omhhc0F1ZGlvIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6Omhhc1ZpZGVvIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OnN0YXJ0Q2hhbmdpbmdU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU6OnNldE1heGltdW1R
dWV1ZURlcHRoRm9yVHJhY2tJRCk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2
YXRlOjp0aW1lRnVkZ2VGYWN0b3IgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVm
ZmVyUHJpdmF0ZTo6c2V0QWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUJ1ZmZlclByaXZhdGU6OnNldEN1cnJlbnRUaW1lRnVkZ2VGYWN0b3IpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6YnVmZmVyZWQgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6U291cmNlQnVmZmVyUHJpdmF0ZTo6aXNCdWZmZXJlZERp
cnR5IGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZh
dGU6OnNldEJ1ZmZlcmVkRGlydHkpOiBEZWxldGVkLgorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oOgorICAgICAgICBgU291cmNlQnVmZmVy
UHJpdmF0ZWAgY2FuIGZpZ3VyZSBvdXQgdGhlIHZhbHVlcyBvZiBgaGFzQXVkaW9gIGFuZCBgaGFz
VmlkZW9gIGJlY2F1c2UKKyAgICAgICAgaXQgbWFuYWdlcyB0aGUgdHJhY2sgYnVmZmVycywgc28g
dGhlIGZ1bmN0aW9ucyBgc291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlvKClgIGFuZAorICAgICAg
ICBgc291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKClgIGNhbiBiZSByZW1vdmVkLgorCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaDoKKworICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0ZUFW
Rk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9N
ZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTb3Vy
Y2VQcml2YXRlQVZGT2JqQzo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDOjpkdXJhdGlvbkNoYW5nZWQpOgorCisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW06CisgICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KToKKyAg
ICAgICAgVXNlIGEgc2VtYXBob3JlIHRvIGhvbGQgdGhlIHBhcnNlciB0aHJlYWQgdW50aWwgdGhl
IHRyYWNrIGJ1ZmZlciBtYW5hZ2VyIGhhcyBoYW5kbGVkCisgICAgICAgIHRoZSBpbml0aWFsaXph
dGlvbiBzZWdtZW50LgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpTb3VyY2VCdWZm
ZXJQcml2YXRlQVZGT2JqQyk6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmFwcGVuZENvbXBsZXRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZW5xdWV1ZVNhbXBsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dGltZUZ1ZGdlRmFjdG9y
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpo
YXNWaWRlbyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6aGFzQXVkaW8gY29uc3QpOiBEZWxldGVkLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyLmg6CisKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclBhcnNlcldlYk06Ok9uQ2x1c3RlckJlZ2luKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmg6
CisgICAgICAgIFRoZSBzYW1lIGFzIGBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQ2AuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlUHJpdmF0
ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVByaXZhdGVHU3Ry
ZWFtZXI6OmR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVNvdXJjZVBy
aXZhdGVHU3RyZWFtZXI6Om1hcmtFbmRPZlN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRp
YVNvdXJjZVByaXZhdGVHU3RyZWFtZXI6OnVubWFya0VuZE9mU3RyZWFtKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1l
ci5oOgorCisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3Vy
Y2VQcml2YXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tNZWRpYVNvdXJjZVByaXZhdGU6
OmR1cmF0aW9uQ2hhbmdlZCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrTWVkaWFTb3VyY2VQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9tZWRpYXNv
dXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb2Nr
U291cmNlQnVmZmVyUHJpdmF0ZTo6YXBwZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3Vy
Y2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpzZXRNYXhpbXVtUXVldWVEZXB0
aEZvclRyYWNrSUQpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGU6
Omhhc1ZpZGVvIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tTb3VyY2VC
dWZmZXJQcml2YXRlOjpoYXNBdWRpbyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZv
cm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oOgorCiAyMDIwLTEy
LTA0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkg
YXVkaW8gcmVzYW1wbGluZyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDMzN2E1NDQwZTIxNzZhOWRlNTYyZDJi
NTQ3OGQ3OWMxNDA4NDk4ZjEuLmE5OGEwMzk5N2Y2Nzk3ZDAyYzlkOWM3MGQ0MDRlNTM5ZjMwMzJm
Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA0IEBACisyMDIwLTEyLTA4ICBQZW5nIExpdSAgPHBl
bmcubGl1NkBhcHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhIGluIEdQVSBQcm9jZXNzXVtNU0Vd
IEltcGxlbWVudCBiYXNpYyB2aWRlbyBwbGF5YmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE5NDAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHRoZSBuZWNlc3NhcnkgZnVuY3Rpb25z
IHdpdGggSVBDIHRvIHN1cHBvcnQgbWVkaWEgcGxheWJhY2suCisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJhY2tQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZUF1ZGlvVHJhY2tQcm94eTo6Y29uZmlndXJhdGlvbik6IFJlbmFtZSBgaWRlbnRpZmllcmAg
dG8gYHRyYWNrSWRgCisgICAgICAgIGJlY2F1c2UgaXQgaXMgZWFzeSB0byBjb25mdXNlIHdpdGgg
YFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXJgLgorCisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eTo6bG9hZE1lZGlhU291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlTWVkaWFQbGF5ZXJQcm94eTo6dXBkYXRlQ2FjaGVkU3RhdGUpOiBGb3IgTVNFIG1lZGlhIHBs
YXllciwgYFNvdXJjZUJ1ZmZlcmAKKyAgICAgICAgcHJvdmlkZXMgdGhlIGJ1ZmZlcmVkIHJhbmdl
cywgc28gYFJlbW90ZU1lZGlhUGxheWVyUHJveHlgIGRvZXMgbm90IG5lZWQgdG8gcmVwb3J0IHRo
aXMKKyAgICAgICAgaW5mb3JtYXRpb24gdG8gdGhlIGBNZWRpYVBsYXllcmAgb2JqZWN0IGluIHRo
ZSBXZWIgcHJvY2Vzcy4KKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxh
eWVyUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBHUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1l
ZGlhU291cmNlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZVBy
b3h5OjpkdXJhdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZU1lZGlhU291cmNl
UHJveHk6OmJ1ZmZlcmVkIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFTb3Vy
Y2VQcm94eTo6ZHVyYXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlTWVkaWFT
b3VyY2VQcm94eTo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVNZWRpYVNvdXJjZVByb3h5Lmg6CisgICAgICAgICogR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVNvdXJjZVByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eSk6CisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojp+UmVtb3RlU291cmNlQnVmZmVyUHJveHkp
OgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVy
UHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQpOgorICAgICAgICAoV2ViS2l0
OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hh
bmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VC
dWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKToKKyAgICAg
ICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVE
aWRSZWNlaXZlUmVuZGVyaW5nRXJyb3IpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VC
dWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKToKKyAg
ICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZh
dGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VC
dWZmZXJQcm94eTo6c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291cmNlQnVm
ZmVyUHJveHk6OnNldFJlYWR5U3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VC
dWZmZXJQcm94eTo6dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKToKKyAgICAgICAgKFdl
YktpdDo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OmV2aWN0Q29kZWRGcmFtZXMpOgorICAgICAg
ICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6YWRkVHJhY2tCdWZmZXIpOgorICAg
ICAgICAoV2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6cmVlbnF1ZXVlTWVkaWFJZk5l
ZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojp0cnlTaWdu
YWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKToKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlU291
cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNBdWRpbyBjb25zdCk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZm
ZXJQcml2YXRlSGFzVmlkZW8gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIEdQVVByb2Nlc3Mv
bWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJveHkuaDoKKyAgICAgICAgKiBHUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICogR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlJlbW90ZVRleHRUcmFja1Byb3h5Ojpjb25maWd1cmF0aW9uKToKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJl
bW90ZVZpZGVvVHJhY2tQcm94eTo6Y29uZmlndXJhdGlvbik6CisKKyAgICAgICAgKiBHUFVQcm9j
ZXNzL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmg6CisgICAgICAg
IChXZWJLaXQ6OlRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uOjplbmNvZGUgY29u
c3QpOgorICAgICAgICAoV2ViS2l0OjpUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlv
bjo6ZGVjb2RlKToKKworICAgICAgICAqIEdQVVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRlUmVt
b3RlQ29uZmlndXJhdGlvbi5oOgorICAgICAgICAoV2ViS2l0OjpUcmFja1ByaXZhdGVSZW1vdGVD
b25maWd1cmF0aW9uOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpUcmFja1ByaXZh
dGVSZW1vdGVDb25maWd1cmF0aW9uOjpkZWNvZGUpOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpB
dWRpb1RyYWNrUHJpdmF0ZVJlbW90ZTo6dXBkYXRlQ29uZmlndXJhdGlvbik6CisgICAgICAgICog
V2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuaDoKKworICAgICAg
ICAqIFdlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZCk6CisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OmR1cmF0aW9uQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6aXNFbmRlZCBj
b25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhU291cmNlUHJpdmF0ZVJlbW90ZTo6c2V0UmVh
ZHlTdGF0ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2
YXRlUmVtb3RlLmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZm
ZXJQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZTo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGU6OmZsdXNoKToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZTo6c2V0QWN0aXZlKToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZTo6dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKToKKyAgICAgICAgKFdlYktp
dDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6ZXZpY3RDb2RlZEZyYW1lcyk6CisgICAgICAg
IChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmFkZFRyYWNrQnVmZmVyKToKKyAg
ICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6cmVlbnF1ZXVlTWVkaWFJ
Zk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnRy
eVNpZ25hbEFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQpOgorICAgICAgICAoV2ViS2l0OjpTb3Vy
Y2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRp
YWxpemF0aW9uU2VnbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlNvdXJjZUJ1ZmZlclByaXZhdGVS
ZW1vdGU6OnNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV2Vi
S2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFy
c2VTYW1wbGUpOgorICAgICAgICAoV2ViS2l0OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpz
b3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0
OjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWRS
YW5nZXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZTo6ZW5xdWV1ZVNhbXBsZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvR1BV
L21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW46CisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6dXBkYXRlQ29uZmlndXJhdGlvbik6
CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9WaWRlb1RyYWNrUHJpdmF0ZVJlbW90
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZGVvVHJhY2tQcml2YXRlUmVtb3RlOjp1cGRhdGVD
b25maWd1cmF0aW9uKToKKwogMjAyMC0xMi0wNCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVo
QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBDYW5jZWwgaW1hZ2UgZXh0cmFjdGlvbiB3aGVu
IG5hdmlnYXRpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvTWVkaWFTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9N
ZWRpYVNvdXJjZS5jcHAKaW5kZXggZmVlNTQ3MzlkNTVmMGUxZDVhMTZiNWFjOWIxNGIyYzBhYjcy
Zjg5MS4uYWRmN2IxOTVhYmJiMDNjMDEwZjIwODI3ZWUwYWNkZmZmZTA0YTUzNyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJjZS5jcHAKQEAg
LTEyNCw2ICsxMjQsNyBAQCB2b2lkIE1lZGlhU291cmNlOjpzZXRQcml2YXRlQW5kT3BlbihSZWY8
TWVkaWFTb3VyY2VQcml2YXRlPiYmIG1lZGlhU291cmNlUHJpdmF0ZQogICAgIEFTU0VSVCghbV9w
cml2YXRlKTsKICAgICBBU1NFUlQobV9tZWRpYUVsZW1lbnQpOwogICAgIG1fcHJpdmF0ZSA9IFdU
Rk1vdmUobWVkaWFTb3VyY2VQcml2YXRlKTsKKyAgICBtX3ByaXZhdGUtPnNldFRpbWVGdWRnZUZh
Y3RvcihjdXJyZW50VGltZUZ1ZGdlRmFjdG9yKCkpOwogCiAgICAgLy8gMi40LjEgQXR0YWNoaW5n
IHRvIGEgbWVkaWEgZWxlbWVudAogICAgIC8vIGh0dHBzOi8vcmF3Z2l0LmNvbS93M2MvbWVkaWEt
c291cmNlLzQ1NjI3NjQ2MzQ0ZWVhMDE3MGRkMWNiYzVhM2Q1MDhjYTc1MWFiYjgvbWVkaWEtc291
cmNlLXJlc3BlYy5odG1sI21lZGlhc291cmNlLWF0dGFjaApAQCAtNTU2LDcgKzU1Nyw3IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IE1lZGlhU291cmNlOjpzZXREdXJhdGlvbkludGVybmFsKGNvbnN0IE1l
ZGlhVGltZSYgZHVyYXRpb24pCiAgICAgQUxXQVlTX0xPRyhMT0dJREVOVElGSUVSLCBkdXJhdGlv
bik7CiAKICAgICAvLyA2LiBVcGRhdGUgdGhlIG1lZGlhIGR1cmF0aW9uIHRvIG5ldyBkdXJhdGlv
biBhbmQgcnVuIHRoZSBIVE1MTWVkaWFFbGVtZW50IGR1cmF0aW9uIGNoYW5nZSBhbGdvcml0aG0u
Ci0gICAgbV9wcml2YXRlLT5kdXJhdGlvbkNoYW5nZWQoKTsKKyAgICBtX3ByaXZhdGUtPmR1cmF0
aW9uQ2hhbmdlZChkdXJhdGlvbik7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtNjI4LDYgKzYy
OSw3IEBAIHZvaWQgTWVkaWFTb3VyY2U6OnN0cmVhbUVuZGVkV2l0aEVycm9yKE9wdGlvbmFsPEVu
ZE9mU3RyZWFtRXJyb3I+IGVycm9yKQogICAgICAgICAgICAgc291cmNlQnVmZmVyLT50cnlTaWdu
YWxBbGxTYW1wbGVzRW5xdWV1ZWQoKTsKICAgICAgICAgbV9wcml2YXRlLT5tYXJrRW5kT2ZTdHJl
YW0oTWVkaWFTb3VyY2VQcml2YXRlOjpFb3NOb0Vycm9yKTsKICAgICB9IGVsc2UgaWYgKGVycm9y
ID09IEVuZE9mU3RyZWFtRXJyb3I6Ok5ldHdvcmspIHsKKyAgICAgICAgbV9wcml2YXRlLT5tYXJr
RW5kT2ZTdHJlYW0oTWVkaWFTb3VyY2VQcml2YXRlOjpFb3NOZXR3b3JrRXJyb3IpOwogICAgICAg
ICAvLyDihrMgSWYgZXJyb3IgaXMgc2V0IHRvICJuZXR3b3JrIgogICAgICAgICBBU1NFUlQobV9t
ZWRpYUVsZW1lbnQpOwogICAgICAgICBpZiAobV9tZWRpYUVsZW1lbnQtPnJlYWR5U3RhdGUoKSA9
PSBIVE1MTWVkaWFFbGVtZW50OjpIQVZFX05PVEhJTkcpIHsKQEAgLTY0Niw2ICs2NDgsOCBAQCB2
b2lkIE1lZGlhU291cmNlOjpzdHJlYW1FbmRlZFdpdGhFcnJvcihPcHRpb25hbDxFbmRPZlN0cmVh
bUVycm9yPiBlcnJvcikKICAgICB9IGVsc2UgewogICAgICAgICAvLyDihrMgSWYgZXJyb3IgaXMg
c2V0IHRvICJkZWNvZGUiCiAgICAgICAgIEFTU0VSVChlcnJvciA9PSBFbmRPZlN0cmVhbUVycm9y
OjpEZWNvZGUpOworICAgICAgICBtX3ByaXZhdGUtPm1hcmtFbmRPZlN0cmVhbShNZWRpYVNvdXJj
ZVByaXZhdGU6OkVvc0RlY29kZUVycm9yKTsKKwogICAgICAgICBBU1NFUlQobV9tZWRpYUVsZW1l
bnQpOwogICAgICAgICBpZiAobV9tZWRpYUVsZW1lbnQtPnJlYWR5U3RhdGUoKSA9PSBIVE1MTWVk
aWFFbGVtZW50OjpIQVZFX05PVEhJTkcpIHsKICAgICAgICAgICAgIC8vICDihrMgSWYgdGhlIEhU
TUxNZWRpYUVsZW1lbnQucmVhZHlTdGF0ZSBhdHRyaWJ1dGUgZXF1YWxzIEhBVkVfTk9USElORwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZm
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIu
Y3BwCmluZGV4IGNkZTE4M2Y4OTI3NDdkMzJhZGE4MmU3ZDVlMmI5YjQzZWM1M2JkZmUuLjNkM2E2
MTkyMTQ3NmFkMjY2ZDI1ZmI5MjdiNDRhYzk4Mjg0MGVlYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvU291cmNlQnVmZmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHAKQEAgLTgxLDYgKzgx
LDcgQEAgU291cmNlQnVmZmVyOjpTb3VyY2VCdWZmZXIoUmVmPFNvdXJjZUJ1ZmZlclByaXZhdGU+
JiYgc291cmNlQnVmZmVyUHJpdmF0ZSwgTWVkaWEKICAgICAsIG1fYXBwZW5kV2luZG93RW5kKE1l
ZGlhVGltZTo6cG9zaXRpdmVJbmZpbml0ZVRpbWUoKSkKICAgICAsIG1fYXBwZW5kU3RhdGUoV2Fp
dGluZ0ZvclNlZ21lbnQpCiAgICAgLCBtX3RpbWVPZkJ1ZmZlcmluZ01vbml0b3IoTW9ub3Rvbmlj
VGltZTo6bm93KCkpCisgICAgLCBtX2J1ZmZlcmVkKFRpbWVSYW5nZXM6OmNyZWF0ZSgpKQogICAg
ICwgbV9wZW5kaW5nUmVtb3ZlU3RhcnQoTWVkaWFUaW1lOjppbnZhbGlkVGltZSgpKQogICAgICwg
bV9wZW5kaW5nUmVtb3ZlRW5kKE1lZGlhVGltZTo6aW52YWxpZFRpbWUoKSkKICAgICAsIG1fcmVt
b3ZlVGltZXIoKnRoaXMsICZTb3VyY2VCdWZmZXI6OnJlbW92ZVRpbWVyRmlyZWQpCkBAIC05NCw3
ICs5NSw2IEBAIFNvdXJjZUJ1ZmZlcjo6U291cmNlQnVmZmVyKFJlZjxTb3VyY2VCdWZmZXJQcml2
YXRlPiYmIHNvdXJjZUJ1ZmZlclByaXZhdGUsIE1lZGlhCiAKICAgICBtX3ByaXZhdGUtPnNldENs
aWVudCh0aGlzKTsKICAgICBtX3ByaXZhdGUtPnNldElzQXR0YWNoZWQodHJ1ZSk7Ci0gICAgbV9w
cml2YXRlLT5zZXRDdXJyZW50VGltZUZ1ZGdlRmFjdG9yKG1fc291cmNlLT5jdXJyZW50VGltZUZ1
ZGdlRmFjdG9yKCkpOwogfQogCiBTb3VyY2VCdWZmZXI6On5Tb3VyY2VCdWZmZXIoKQpAQCAtMTAy
LDggKzEwMiw4IEBAIFNvdXJjZUJ1ZmZlcjo6flNvdXJjZUJ1ZmZlcigpCiAgICAgQVNTRVJUKGlz
UmVtb3ZlZCgpKTsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIpOwogCi0gICAgbV9wcml2
YXRlLT5zZXRDbGllbnQobnVsbHB0cik7CiAgICAgbV9wcml2YXRlLT5zZXRJc0F0dGFjaGVkKGZh
bHNlKTsKKyAgICBtX3ByaXZhdGUtPnNldENsaWVudChudWxscHRyKTsKIH0KIAogRXhjZXB0aW9u
T3I8UmVmPFRpbWVSYW5nZXM+PiBTb3VyY2VCdWZmZXI6OmJ1ZmZlcmVkKCkgY29uc3QKQEAgLTEx
Niw3ICsxMTYsNyBAQCBFeGNlcHRpb25PcjxSZWY8VGltZVJhbmdlcz4+IFNvdXJjZUJ1ZmZlcjo6
YnVmZmVyZWQoKSBjb25zdAogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IgfTsKIAogICAgIC8vIDIuIFJldHVybiBhIG5ldyBzdGF0aWMgbm9ybWFsaXplZCBUaW1l
UmFuZ2VzIG9iamVjdCBmb3IgdGhlIG1lZGlhIHNlZ21lbnRzIGJ1ZmZlcmVkLgotICAgIHJldHVy
biBtX3ByaXZhdGUtPmJ1ZmZlcmVkKCktPmNvcHkoKTsKKyAgICByZXR1cm4gbV9idWZmZXJlZC0+
Y29weSgpOwogfQogCiBkb3VibGUgU291cmNlQnVmZmVyOjp0aW1lc3RhbXBPZmZzZXQoKSBjb25z
dApAQCAtNTUyLDEwICs1NTIsNiBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJp
dmF0ZUFwcGVuZENvbXBsZXRlKEFwcGVuZFJlc3VsdCByZXN1bHQpCiAgICAgaWYgKGlzUmVtb3Zl
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBSZXNvbHZlIHRoZSBjaGFuZ2VzIGl0IFRy
YWNrQnVmZmVycycgYnVmZmVyZWQgcmFuZ2VzCi0gICAgLy8gaW50byB0aGUgU291cmNlQnVmZmVy
J3MgYnVmZmVyZWQgcmFuZ2VzCi0gICAgbV9wcml2YXRlLT51cGRhdGVCdWZmZXJlZEZyb21UcmFj
a0J1ZmZlcnMobV9zb3VyY2UtPmlzRW5kZWQoKSk7Ci0KICAgICAvLyBTZWN0aW9uIDMuNS41IEJ1
ZmZlciBBcHBlbmQgQWxnb3JpdGhtLCBjdGQuCiAgICAgLy8gaHR0cHM6Ly9kdmNzLnczLm9yZy9o
Zy9odG1sLW1lZGlhL3Jhdy1maWxlL2RlZmF1bHQvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS5o
dG1sI3NvdXJjZWJ1ZmZlci1idWZmZXItYXBwZW5kCiAKQEAgLTYzNCw3ICs2MzAsNyBAQCB2b2lk
IFNvdXJjZUJ1ZmZlcjo6cmVtb3ZlVGltZXJGaXJlZCgpCiAgICAgc2NoZWR1bGVFdmVudChldmVu
dE5hbWVzKCkudXBkYXRlZW5kRXZlbnQpOwogfQogCi1zaXplX3QgU291cmNlQnVmZmVyOjptYXhp
bXVtQnVmZmVyU2l6ZSgpIGNvbnN0Cit1aW50NjRfdCBTb3VyY2VCdWZmZXI6Om1heGltdW1CdWZm
ZXJTaXplKCkgY29uc3QKIHsKICAgICBpZiAoaXNSZW1vdmVkKCkpCiAgICAgICAgIHJldHVybiAw
OwpAQCAtNjc4LDEwICs2NzQsMTIgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNldEFjdGl2ZShib29s
IGFjdGl2ZSkKICAgICAgICAgbV9zb3VyY2UtPnNvdXJjZUJ1ZmZlckRpZENoYW5nZUFjdGl2ZVN0
YXRlKCp0aGlzLCBhY3RpdmUpOwogfQogCi12b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVy
UHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgSW5pdGlhbGl6YXRp
b25TZWdtZW50JiBzZWdtZW50KQordm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZh
dGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemF0aW9uU2VnbWVudCYm
IHNlZ21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBpZiAoaXNSZW1vdmVkKCkpCisgICAgaWYgKGlzUmVtb3ZlZCgpKSB7CisgICAgICAg
IGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBBTFdB
WVNfTE9HKExPR0lERU5USUZJRVIpOwogCkBAIC03MDQsNiArNzAyLDcgQEAgdm9pZCBTb3VyY2VC
dWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50
KGNvbnN0IEluaXQKICAgICAvLyB3aXRoIHRoZSBkZWNvZGUgZXJyb3IgcGFyYW1ldGVyIHNldCB0
byB0cnVlIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KICAgICBpZiAoc2VnbWVudC5hdWRpb1RyYWNr
cy5pc0VtcHR5KCkgJiYgc2VnbWVudC52aWRlb1RyYWNrcy5pc0VtcHR5KCkgJiYgc2VnbWVudC50
ZXh0VHJhY2tzLmlzRW1wdHkoKSkgewogICAgICAgICBhcHBlbmRFcnJvcih0cnVlKTsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzEz
LDYgKzcxMiw3IEBAIHZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVj
ZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0CiAgICAgICAgIC8vIHdpdGggdGhl
IGRlY29kZSBlcnJvciBwYXJhbWV0ZXIgc2V0IHRvIHRydWUgYW5kIGFib3J0IHRoZXNlIHN0ZXBz
LgogICAgICAgICBpZiAoIXZhbGlkYXRlSW5pdGlhbGl6YXRpb25TZWdtZW50KHNlZ21lbnQpKSB7
CiAgICAgICAgICAgICBhcHBlbmRFcnJvcih0cnVlKTsKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtODE1LDEwICs4
MTUsMTAgQEAgdm9pZCBTb3VyY2VCdWZmZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZl
SW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXQKICAgICAgICAgICAgIC8vIHJlZmVyZW5j
ZWQgYnkgdGhlIGF1ZGlvVHJhY2tzIGF0dHJpYnV0ZSBvbiB0aGUgSFRNTE1lZGlhRWxlbWVudC4K
ICAgICAgICAgICAgIG1fc291cmNlLT5tZWRpYUVsZW1lbnQoKS0+ZW5zdXJlQXVkaW9UcmFja3Mo
KS5hcHBlbmQobmV3QXVkaW9UcmFjay5jb3B5UmVmKCkpOwogCi0gICAgICAgICAgICAvLyA1LjIu
OCBDcmVhdGUgYSBuZXcgdHJhY2sgYnVmZmVyIHRvIHN0b3JlIGNvZGVkIGZyYW1lcyBmb3IgdGhp
cyB0cmFjay4KLSAgICAgICAgICAgIG1fcHJpdmF0ZS0+YWRkVHJhY2tCdWZmZXIobmV3QXVkaW9U
cmFjay0+aWQoKSwgYXVkaW9UcmFja0luZm8uZGVzY3JpcHRpb24pOwotCiAgICAgICAgICAgICBt
X2F1ZGlvQ29kZWNzLmFwcGVuZChhdWRpb1RyYWNrSW5mby5kZXNjcmlwdGlvbi0+Y29kZWMoKSk7
CisKKyAgICAgICAgICAgIC8vIDUuMi44IENyZWF0ZSBhIG5ldyB0cmFjayBidWZmZXIgdG8gc3Rv
cmUgY29kZWQgZnJhbWVzIGZvciB0aGlzIHRyYWNrLgorICAgICAgICAgICAgbV9wcml2YXRlLT5h
ZGRUcmFja0J1ZmZlcihuZXdBdWRpb1RyYWNrLT5pZCgpLCBXVEZNb3ZlKGF1ZGlvVHJhY2tJbmZv
LmRlc2NyaXB0aW9uKSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyA1LjMgRm9yIGVhY2ggdmlk
ZW8gdHJhY2sgaW4gdGhlIGluaXRpYWxpemF0aW9uIHNlZ21lbnQsIHJ1biBmb2xsb3dpbmcgc3Rl
cHM6CkBAIC04NTAsMTAgKzg1MCwxMCBAQCB2b2lkIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVy
UHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgSW5pdAogICAgICAg
ICAgICAgLy8gcmVmZXJlbmNlZCBieSB0aGUgdmlkZW9UcmFja3MgYXR0cmlidXRlIG9uIHRoZSBI
VE1MTWVkaWFFbGVtZW50LgogICAgICAgICAgICAgbV9zb3VyY2UtPm1lZGlhRWxlbWVudCgpLT5l
bnN1cmVWaWRlb1RyYWNrcygpLmFwcGVuZChuZXdWaWRlb1RyYWNrLmNvcHlSZWYoKSk7CiAKLSAg
ICAgICAgICAgIC8vIDUuMy44IENyZWF0ZSBhIG5ldyB0cmFjayBidWZmZXIgdG8gc3RvcmUgY29k
ZWQgZnJhbWVzIGZvciB0aGlzIHRyYWNrLgotICAgICAgICAgICAgbV9wcml2YXRlLT5hZGRUcmFj
a0J1ZmZlcihuZXdWaWRlb1RyYWNrLT5pZCgpLCB2aWRlb1RyYWNrSW5mby5kZXNjcmlwdGlvbik7
Ci0KICAgICAgICAgICAgIG1fdmlkZW9Db2RlY3MuYXBwZW5kKHZpZGVvVHJhY2tJbmZvLmRlc2Ny
aXB0aW9uLT5jb2RlYygpKTsKKworICAgICAgICAgICAgLy8gNS4zLjggQ3JlYXRlIGEgbmV3IHRy
YWNrIGJ1ZmZlciB0byBzdG9yZSBjb2RlZCBmcmFtZXMgZm9yIHRoaXMgdHJhY2suCisgICAgICAg
ICAgICBtX3ByaXZhdGUtPmFkZFRyYWNrQnVmZmVyKG5ld1ZpZGVvVHJhY2stPmlkKCksIFdURk1v
dmUodmlkZW9UcmFja0luZm8uZGVzY3JpcHRpb24pKTsKICAgICAgICAgfQogCiAgICAgICAgIC8v
IDUuNCBGb3IgZWFjaCB0ZXh0IHRyYWNrIGluIHRoZSBpbml0aWFsaXphdGlvbiBzZWdtZW50LCBy
dW4gZm9sbG93aW5nIHN0ZXBzOgpAQCAtODgyLDEwICs4ODIsMTAgQEAgdm9pZCBTb3VyY2VCdWZm
ZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNv
bnN0IEluaXQKICAgICAgICAgICAgIC8vIHJlZmVyZW5jZWQgYnkgdGhlIHRleHRUcmFja3MgYXR0
cmlidXRlIG9uIHRoZSBIVE1MTWVkaWFFbGVtZW50LgogICAgICAgICAgICAgbV9zb3VyY2UtPm1l
ZGlhRWxlbWVudCgpLT5lbnN1cmVUZXh0VHJhY2tzKCkuYXBwZW5kKG5ld1RleHRUcmFjay5jb3B5
UmVmKCkpOwogCi0gICAgICAgICAgICAvLyA1LjQuNyBDcmVhdGUgYSBuZXcgdHJhY2sgYnVmZmVy
IHRvIHN0b3JlIGNvZGVkIGZyYW1lcyBmb3IgdGhpcyB0cmFjay4KLSAgICAgICAgICAgIG1fcHJp
dmF0ZS0+YWRkVHJhY2tCdWZmZXIobmV3VGV4dFRyYWNrLT5pZCgpLCB0ZXh0VHJhY2tJbmZvLmRl
c2NyaXB0aW9uKTsKLQogICAgICAgICAgICAgbV90ZXh0Q29kZWNzLmFwcGVuZCh0ZXh0VHJhY2tJ
bmZvLmRlc2NyaXB0aW9uLT5jb2RlYygpKTsKKworICAgICAgICAgICAgLy8gNS40LjcgQ3JlYXRl
IGEgbmV3IHRyYWNrIGJ1ZmZlciB0byBzdG9yZSBjb2RlZCBmcmFtZXMgZm9yIHRoaXMgdHJhY2su
CisgICAgICAgICAgICBtX3ByaXZhdGUtPmFkZFRyYWNrQnVmZmVyKG5ld1RleHRUcmFjay0+aWQo
KSwgV1RGTW92ZSh0ZXh0VHJhY2tJbmZvLmRlc2NyaXB0aW9uKSk7CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyA1LjUgSWYgYWN0aXZlIHRyYWNrIGZsYWcgZXF1YWxzIHRydWUsIHRoZW4gcnVuIHRo
ZSBmb2xsb3dpbmcgc3RlcHM6CkBAIC05MDIsNiArOTAyLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXI6
OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0
IEluaXQKICAgICAvLyAoTm90ZTogSXNzdWUgIzE1NSBhZGRzIHRoaXMgc3RlcCBhZnRlciBzdGVw
IDU6KQogICAgIC8vIDYuIFNldCAgcGVuZGluZyBpbml0aWFsaXphdGlvbiBzZWdtZW50IGZvciBj
aGFuZ2VUeXBlIGZsYWcgIHRvIGZhbHNlLgogICAgIG1fcGVuZGluZ0luaXRpYWxpemF0aW9uU2Vn
bWVudEZvckNoYW5nZVR5cGUgPSBmYWxzZTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogCiAg
ICAgLy8gNi4gSWYgdGhlIEhUTUxNZWRpYUVsZW1lbnQucmVhZHlTdGF0ZSBhdHRyaWJ1dGUgaXMg
SEFWRV9OT1RISU5HLCB0aGVuIHJ1biB0aGUgZm9sbG93aW5nIHN0ZXBzOgogICAgIGlmIChtX3By
aXZhdGUtPnJlYWR5U3RhdGUoKSA9PSBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhp
bmcpIHsKQEAgLTEwMTEsMTYgKzEwMTIsNiBAQCBib29sIFNvdXJjZUJ1ZmZlcjo6aGFzVmlkZW8o
KSBjb25zdAogICAgIHJldHVybiBtX3ZpZGVvVHJhY2tzICYmIG1fdmlkZW9UcmFja3MtPmxlbmd0
aCgpOwogfQogCi1ib29sIFNvdXJjZUJ1ZmZlcjo6c291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1ZGlv
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gaGFzQXVkaW8oKTsKLX0KLQotYm9vbCBTb3VyY2VCdWZm
ZXI6OnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGhh
c1ZpZGVvKCk7Ci19Ci0KIHZvaWQgU291cmNlQnVmZmVyOjp2aWRlb1RyYWNrU2VsZWN0ZWRDaGFu
Z2VkKFZpZGVvVHJhY2smIHRyYWNrKQogewogICAgIC8vIDIuNC41IENoYW5nZXMgdG8gc2VsZWN0
ZWQvZW5hYmxlZCB0cmFjayBzdGF0ZQpAQCAtMTIwNCw5ICsxMTk1LDkgQEAgYm9vbCBTb3VyY2VC
dWZmZXI6OmNhblBsYXlUaHJvdWdoUmFuZ2UoUGxhdGZvcm1UaW1lUmFuZ2VzJiByYW5nZXMpCiAg
ICAgcmV0dXJuIHVuYnVmZmVyZWRUaW1lLnRvRG91YmxlKCkgLyBtX2F2ZXJhZ2VCdWZmZXJSYXRl
IDwgdGltZVJlbWFpbmluZy50b0RvdWJsZSgpOwogfQogCi1zaXplX3QgU291cmNlQnVmZmVyOjpl
eHRyYU1lbW9yeUNvc3QoKSBjb25zdAordWludDY0X3QgU291cmNlQnVmZmVyOjpleHRyYU1lbW9y
eUNvc3QoKSBjb25zdAogewotICAgIHNpemVfdCBleHRyYU1lbW9yeUNvc3QgPSBtX3BlbmRpbmdB
cHBlbmREYXRhLmNhcGFjaXR5KCk7CisgICAgdWludDY0X3QgZXh0cmFNZW1vcnlDb3N0ID0gbV9w
ZW5kaW5nQXBwZW5kRGF0YS5jYXBhY2l0eSgpOwogICAgIGV4dHJhTWVtb3J5Q29zdCArPSBtX3By
aXZhdGUtPnRvdGFsVHJhY2tCdWZmZXJTaXplSW5CeXRlcygpOwogCiAgICAgcmV0dXJuIGV4dHJh
TWVtb3J5Q29zdDsKQEAgLTEyMTQsMTEgKzEyMDUsMTEgQEAgc2l6ZV90IFNvdXJjZUJ1ZmZlcjo6
ZXh0cmFNZW1vcnlDb3N0KCkgY29uc3QKIAogdm9pZCBTb3VyY2VCdWZmZXI6OnJlcG9ydEV4dHJh
TWVtb3J5QWxsb2NhdGVkKCkKIHsKLSAgICBzaXplX3QgZXh0cmFNZW1vcnlDb3N0ID0gdGhpcy0+
ZXh0cmFNZW1vcnlDb3N0KCk7CisgICAgdWludDY0X3QgZXh0cmFNZW1vcnlDb3N0ID0gdGhpcy0+
ZXh0cmFNZW1vcnlDb3N0KCk7CiAgICAgaWYgKGV4dHJhTWVtb3J5Q29zdCA8PSBtX3JlcG9ydGVk
RXh0cmFNZW1vcnlDb3N0KQogICAgICAgICByZXR1cm47CiAKLSAgICBzaXplX3QgZXh0cmFNZW1v
cnlDb3N0RGVsdGEgPSBleHRyYU1lbW9yeUNvc3QgLSBtX3JlcG9ydGVkRXh0cmFNZW1vcnlDb3N0
OworICAgIHVpbnQ2NF90IGV4dHJhTWVtb3J5Q29zdERlbHRhID0gZXh0cmFNZW1vcnlDb3N0IC0g
bV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdDsKICAgICBtX3JlcG9ydGVkRXh0cmFNZW1vcnlDb3N0
ID0gZXh0cmFNZW1vcnlDb3N0OwogCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPnZtKCkpOwpAQCAtMTI0Miw3ICsxMjMzLDcgQEAgTWVkaWFUaW1l
IFNvdXJjZUJ1ZmZlcjo6bWluaW11bVVwY29taW5nUHJlc2VudGF0aW9uVGltZUZvclRyYWNrSUQo
Y29uc3QgQXRvbVN0cmkKICAgICByZXR1cm4gbV9wcml2YXRlLT5taW5pbXVtVXBjb21pbmdQcmVz
ZW50YXRpb25UaW1lRm9yVHJhY2tJRCh0cmFja0lEKTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXI6
OnNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lE
LCBzaXplX3QgbWF4UXVldWVEZXB0aCkKK3ZvaWQgU291cmNlQnVmZmVyOjpzZXRNYXhpbXVtUXVl
dWVEZXB0aEZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCwgdWludDY0X3QgbWF4
UXVldWVEZXB0aCkKIHsKICAgICBtX3ByaXZhdGUtPnNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJh
Y2tJRCh0cmFja0lELCBtYXhRdWV1ZURlcHRoKTsKIH0KQEAgLTEzMDIsMTQgKzEyOTMsMjQgQEAg
dm9pZCBTb3VyY2VCdWZmZXI6OnNldFNob3VsZEdlbmVyYXRlVGltZXN0YW1wcyhib29sIGZsYWcp
CiAgICAgbV9wcml2YXRlLT5zZXRTaG91bGRHZW5lcmF0ZVRpbWVzdGFtcHMoZmxhZyk7CiB9CiAK
K3ZvaWQgU291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5n
ZWQoYm9vbCBmbGFnKQoreworICAgIG1fYnVmZmVyZWREaXJ0eSA9IGZsYWc7Cit9CisKK3ZvaWQg
U291cmNlQnVmZmVyOjpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2VkKGNv
bnN0IFBsYXRmb3JtVGltZVJhbmdlcyYgdGltZVJhbmdlcykKK3sKKyAgICBtX2J1ZmZlcmVkLT5y
YW5nZXMoKSA9IHRpbWVSYW5nZXM7Cit9CisKIGJvb2wgU291cmNlQnVmZmVyOjppc0J1ZmZlcmVk
RGlydHkoKSBjb25zdAogewotICAgIHJldHVybiBtX3ByaXZhdGUtPmlzQnVmZmVyZWREaXJ0eSgp
OworICAgIHJldHVybiBtX2J1ZmZlcmVkRGlydHk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyOjpz
ZXRCdWZmZXJlZERpcnR5KGJvb2wgZmxhZykKIHsKLSAgICBtX3ByaXZhdGUtPnNldEJ1ZmZlcmVk
RGlydHkoZmxhZyk7CisgICAgbV9idWZmZXJlZERpcnR5ID0gZmxhZzsKIH0KIAogI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXNvdXJjZS9Tb3VyY2VCdWZmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3Vy
Y2UvU291cmNlQnVmZmVyLmgKaW5kZXggZDE1YzI5YmNkODg2MmU5MmI0NmQ5M2IwMTI1MDUwMTkz
NDllMmNmOC4uMjI5M2JjNTA3N2JiMTc2OTg0MjJkZTBlNjZlZGY0YTc5YjFmYWU0NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5oCkBA
IC05Niw3ICs5Niw3IEBAIHB1YmxpYzoKICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmUoY29u
c3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4g
Y2hhbmdlVHlwZShjb25zdCBTdHJpbmcmKTsKIAotICAgIGNvbnN0IFRpbWVSYW5nZXMmIGJ1ZmZl
cmVkSW50ZXJuYWwoKSBjb25zdCB7IEFTU0VSVChtX3ByaXZhdGUtPmJ1ZmZlcmVkKCkpOyByZXR1
cm4gKm1fcHJpdmF0ZS0+YnVmZmVyZWQoKTsgfQorICAgIGNvbnN0IFRpbWVSYW5nZXMmIGJ1ZmZl
cmVkSW50ZXJuYWwoKSBjb25zdCB7IEFTU0VSVChtX2J1ZmZlcmVkKTsgcmV0dXJuICptX2J1ZmZl
cmVkOyB9CiAKICAgICB2b2lkIGFib3J0SWZVcGRhdGluZygpOwogICAgIHZvaWQgcmVtb3ZlZEZy
b21NZWRpYVNvdXJjZSgpOwpAQCAtMTQ4LDE1ICsxNDgsMTUgQEAgcHJpdmF0ZToKICAgICBib29s
IHZpcnR1YWxIYXNQZW5kaW5nQWN0aXZpdHkoKSBjb25zdCBmaW5hbDsKIAogICAgIC8vIFNvdXJj
ZUJ1ZmZlclByaXZhdGVDbGllbnQKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNl
aXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IEluaXRpYWxpemF0aW9uU2VnbWVudCYpIGZp
bmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlv
blNlZ21lbnQoSW5pdGlhbGl6YXRpb25TZWdtZW50JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJikgZmluYWw7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlU3RyZWFtRW5kZWRXaXRo
RGVjb2RlRXJyb3IoKSBmaW5hbDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRF
cnJvcihib29sIGRlY29kZUVycm9yKSBmaW5hbDsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZh
dGVBcHBlbmRDb21wbGV0ZShBcHBlbmRSZXN1bHQpIGZpbmFsOwogICAgIHZvaWQgc291cmNlQnVm
ZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uKSBmaW5h
bDsKICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBsZShkb3VibGUgc2Ft
cGxlRHVyYXRpb24pIGZpbmFsOwogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZERyb3BT
YW1wbGUoKSBmaW5hbDsKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVTdHJlYW1FbmRlZFdp
dGhEZWNvZGVFcnJvcigpIGZpbmFsOwotICAgIGJvb2wgc291cmNlQnVmZmVyUHJpdmF0ZUhhc0F1
ZGlvKCkgY29uc3QgZmluYWw7Ci0gICAgYm9vbCBzb3VyY2VCdWZmZXJQcml2YXRlSGFzVmlkZW8o
KSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0
ZShBcHBlbmRSZXN1bHQpIGZpbmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZl
cmVkRGlydHlDaGFuZ2VkKGJvb2wpIGZpbmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0
ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChjb25zdCBQbGF0Zm9ybVRpbWVSYW5nZXMmKSBmaW5hbDsK
ICAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJyb3IoaW50
IGVycm9yQ29kZSkgZmluYWw7CiAKICAgICAvLyBBdWRpb1RyYWNrQ2xpZW50CkBAIC0xODUsMTMg
KzE4NSwxMyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCB2YWxpZGF0ZUluaXRpYWxpemF0aW9uU2Vn
bWVudChjb25zdCBJbml0aWFsaXphdGlvblNlZ21lbnQmKTsKIAotICAgIHNpemVfdCBtYXhpbXVt
QnVmZmVyU2l6ZSgpIGNvbnN0OworICAgIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplKCkgY29u
c3Q7CiAKICAgICB2b2lkIG1vbml0b3JCdWZmZXJpbmdSYXRlKCk7CiAKICAgICB2b2lkIHJlbW92
ZVRpbWVyRmlyZWQoKTsKIAotICAgIHNpemVfdCBleHRyYU1lbW9yeUNvc3QoKSBjb25zdDsKKyAg
ICB1aW50NjRfdCBleHRyYU1lbW9yeUNvc3QoKSBjb25zdDsKICAgICB2b2lkIHJlcG9ydEV4dHJh
TWVtb3J5QWxsb2NhdGVkKCk7CiAKICAgICB2b2lkIGFwcGVuZEVycm9yKGJvb2wpOwpAQCAtMjA0
LDcgKzIwNCw3IEBAIHByaXZhdGU6CiAgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPFN0cmluZz4g
YnVmZmVyZWRTYW1wbGVzRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJik7CiAgICAgV0VCQ09S
RV9FWFBPUlQgVmVjdG9yPFN0cmluZz4gZW5xdWV1ZWRTYW1wbGVzRm9yVHJhY2tJRChjb25zdCBB
dG9tU3RyaW5nJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgTWVkaWFUaW1lIG1pbmltdW1VcGNvbWlu
Z1ByZXNlbnRhdGlvblRpbWVGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmKTsKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHNldE1heGltdW1RdWV1ZURlcHRoRm9yVHJhY2tJRChjb25zdCBBdG9t
U3RyaW5nJiwgc2l6ZV90KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE1heGltdW1RdWV1
ZURlcHRoRm9yVHJhY2tJRChjb25zdCBBdG9tU3RyaW5nJiwgdWludDY0X3QpOwogCiAgICAgUmVm
PFNvdXJjZUJ1ZmZlclByaXZhdGU+IG1fcHJpdmF0ZTsKICAgICBNZWRpYVNvdXJjZSogbV9zb3Vy
Y2U7CkBAIC0yMzEsOCArMjMxLDEwIEBAIHByaXZhdGU6CiAgICAgTW9ub3RvbmljVGltZSBtX3Rp
bWVPZkJ1ZmZlcmluZ01vbml0b3I7CiAgICAgZG91YmxlIG1fYnVmZmVyZWRTaW5jZUxhc3RNb25p
dG9yIHsgMCB9OwogICAgIGRvdWJsZSBtX2F2ZXJhZ2VCdWZmZXJSYXRlIHsgMCB9OworICAgIGJv
b2wgbV9idWZmZXJlZERpcnR5IHsgdHJ1ZSB9OworICAgIFJlZlB0cjxUaW1lUmFuZ2VzPiBtX2J1
ZmZlcmVkOwogCi0gICAgc2l6ZV90IG1fcmVwb3J0ZWRFeHRyYU1lbW9yeUNvc3QgeyAwIH07Cisg
ICAgdWludDY0X3QgbV9yZXBvcnRlZEV4dHJhTWVtb3J5Q29zdCB7IDAgfTsKIAogICAgIE1lZGlh
VGltZSBtX3BlbmRpbmdSZW1vdmVTdGFydDsKICAgICBNZWRpYVRpbWUgbV9wZW5kaW5nUmVtb3Zl
RW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFT
b3VyY2VQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVNv
dXJjZVByaXZhdGUuaAppbmRleCA2NTcwYmY2ZWU5NjgyN2UwMDk0NmY5ZjE5NjA4OGFkYzJjNGJk
YjYzLi4yOTMyODg2M2IxNGYyNmRjYjljYzExYzAyMzY2MGQ1MjAzYjg5MGZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVNvdXJjZVByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVNvdXJjZVByaXZhdGUu
aApAQCAtNTUsMTAgKzU1LDExIEBAIHB1YmxpYzoKICAgICAgICAgUmVhY2hlZElkTGltaXQKICAg
ICB9OwogICAgIHZpcnR1YWwgQWRkU3RhdHVzIGFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDb250ZW50
VHlwZSYsIFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlPiYpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZHVyYXRpb25DaGFuZ2VkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkdXJhdGlvbkNoYW5n
ZWQoY29uc3QgTWVkaWFUaW1lJikgPSAwOwogICAgIGVudW0gRW5kT2ZTdHJlYW1TdGF0dXMgeyBF
b3NOb0Vycm9yLCBFb3NOZXR3b3JrRXJyb3IsIEVvc0RlY29kZUVycm9yIH07CiAgICAgdmlydHVh
bCB2b2lkIG1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cykgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCB1bm1hcmtFbmRPZlN0cmVhbSgpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNFbmRl
ZCgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVh
ZHlTdGF0ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0UmVhZHlTdGF0ZShNZWRp
YVBsYXllcjo6UmVhZHlTdGF0ZSkgPSAwOwpAQCAtNjYsMTAgKzY3LDEzIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgd2FpdEZvclNlZWtDb21wbGV0ZWQoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNlZWtDb21wbGV0ZWQoKSA9IDA7CiAKKyAgICB2b2lkIHNldFRpbWVGdWRnZUZhY3Rvcihj
b25zdCBNZWRpYVRpbWUmIGZ1ZGdlRmFjdG9yKSB7IG1fdGltZUZ1ZGdlRmFjdG9yID0gZnVkZ2VG
YWN0b3I7IH0KKyAgICBNZWRpYVRpbWUgdGltZUZ1ZGdlRmFjdG9yKCkgY29uc3QgeyByZXR1cm4g
bV90aW1lRnVkZ2VGYWN0b3I7IH0KICAgICB2b2lkIHNldElzU2Vla2luZyhib29sIGZsYWcpIHsg
bV9pc1NlZWtpbmcgPSBmbGFnOyB9CiAgICAgYm9vbCBpc1NlZWtpbmcoKSBjb25zdCB7IHJldHVy
biBtX2lzU2Vla2luZzsgfQogCiBwcml2YXRlOgorICAgIE1lZGlhVGltZSBtX3RpbWVGdWRnZUZh
Y3RvcjsKICAgICBib29sIG1faXNTZWVraW5nIHsgZmFsc2UgfTsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5j
cHAKaW5kZXggMGYzZmE2NmQ5OTFlYjM5YTMwNjFhZTJmOGViZmVlYjJkNTMwNDVjOS4uN2JlMDAy
MWQ5YmI2ZGYxMDdkNzFhNGYxNWE3MTU1NmRlMTllZTcwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAKQEAg
LTY1LDYgKzY1LDggQEAgU291cmNlQnVmZmVyUHJpdmF0ZTo6U291cmNlQnVmZmVyUHJpdmF0ZSgp
CiB7CiB9CiAKK1NvdXJjZUJ1ZmZlclByaXZhdGU6On5Tb3VyY2VCdWZmZXJQcml2YXRlKCkgPSBk
ZWZhdWx0OworCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnJlc2V0VGltZXN0YW1wT2Zmc2V0
SW5UcmFja0J1ZmZlcnMoKQogewogICAgIGZvciAoYXV0byYgdHJhY2tCdWZmZXIgOiBtX3RyYWNr
QnVmZmVyTWFwLnZhbHVlcygpKSB7CkBAIC03Myw2ICs3NSwxMiBAQCB2b2lkIFNvdXJjZUJ1ZmZl
clByaXZhdGU6OnJlc2V0VGltZXN0YW1wT2Zmc2V0SW5UcmFja0J1ZmZlcnMoKQogICAgIH0KIH0K
IAordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpzZXRCdWZmZXJlZERpcnR5KGJvb2wgZmxhZykK
K3sKKyAgICBpZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2
YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoZmxhZyk7Cit9CisKIHZvaWQgU291cmNlQnVmZmVyUHJp
dmF0ZTo6cmVzZXRUcmFja0J1ZmZlcnMoKQogewogICAgIGZvciAoYXV0byYgdHJhY2tCdWZmZXJQ
YWlyIDogbV90cmFja0J1ZmZlck1hcC52YWx1ZXMoKSkgewpAQCAtOTYsNiArMTA0LDEzIEBAIE1l
ZGlhVGltZSBTb3VyY2VCdWZmZXJQcml2YXRlOjpoaWdoZXN0UHJlc2VudGF0aW9uVGltZXN0YW1w
KCkgY29uc3QKICAgICByZXR1cm4gaGlnaGVzdFRpbWU7CiB9CiAKK3ZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZTo6c2V0QnVmZmVyZWRSYW5nZXMoY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJiB0aW1l
UmFuZ2VzKQoreworICAgIG1fYnVmZmVyZWQtPnJhbmdlcygpID0gdGltZVJhbmdlczsKKyAgICBp
ZiAobV9jbGllbnQpCisgICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVy
ZWRSYW5nZXNDaGFuZ2VkKG1fYnVmZmVyZWQtPnJhbmdlcygpKTsKK30KKwogdm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlOjp1cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJ
c0VuZGVkKQogewogICAgIC8vIDMuMSBBdHRyaWJ1dGVzLCBidWZmZXJlZApAQCAtMTEyLDcgKzEy
Nyw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tC
dWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCkKICAgICAvLyBOT1RFOiBTaG9ydCBjaXJjdWl0IHRo
ZSBmb2xsb3dpbmcgaWYgbm9uZSBvZiB0aGUgVHJhY2tCdWZmZXJzIGhhdmUgYnVmZmVyZWQgcmFu
Z2VzIHRvIGF2b2lkIGdlbmVyYXRpbmcKICAgICAvLyBhIHNpbmdsZSByYW5nZSBvZiB7MCwgMH0u
CiAgICAgaWYgKGhpZ2hlc3RFbmRUaW1lLmlzTmVnYXRpdmVJbmZpbml0ZSgpKSB7Ci0gICAgICAg
IG1fYnVmZmVyZWQtPnJhbmdlcygpID0gUGxhdGZvcm1UaW1lUmFuZ2VzKCk7CisgICAgICAgIHNl
dEJ1ZmZlcmVkUmFuZ2VzKFBsYXRmb3JtVGltZVJhbmdlcygpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTM3LDEwICsxNTIsMjAgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjp1
cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVkKQogCiAgICAg
Ly8gNS4gSWYgaW50ZXJzZWN0aW9uIHJhbmdlcyBkb2VzIG5vdCBjb250YWluIHRoZSBleGFjdCBz
YW1lIHJhbmdlIGluZm9ybWF0aW9uIGFzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoaXMgYXR0cmli
dXRlLAogICAgIC8vICAgIHRoZW4gdXBkYXRlIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoaXMgYXR0
cmlidXRlIHRvIGludGVyc2VjdGlvbiByYW5nZXMuCi0gICAgbV9idWZmZXJlZC0+cmFuZ2VzKCkg
PSBpbnRlcnNlY3Rpb25SYW5nZXM7CisgICAgc2V0QnVmZmVyZWRSYW5nZXMoaW50ZXJzZWN0aW9u
UmFuZ2VzKTsKICAgICBzZXRCdWZmZXJlZERpcnR5KHRydWUpOwogfQogCit2b2lkIFNvdXJjZUJ1
ZmZlclByaXZhdGU6OmFwcGVuZENvbXBsZXRlZChib29sIHBhcnNpbmdTdWNjZWVkZWQsIGJvb2wg
aXNFbmRlZCkKK3sKKyAgICAvLyBSZXNvbHZlIHRoZSBjaGFuZ2VzIGluIFRyYWNrQnVmZmVycycg
YnVmZmVyZWQgcmFuZ2VzCisgICAgLy8gaW50byB0aGUgU291cmNlQnVmZmVyJ3MgYnVmZmVyZWQg
cmFuZ2VzCisgICAgdXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGlzRW5kZWQpOworCisg
ICAgaWYgKG1fY2xpZW50KQorICAgICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUFw
cGVuZENvbXBsZXRlKHBhcnNpbmdTdWNjZWVkZWQgPyBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50
OjpBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2NlZWRlZCA6IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGll
bnQ6OkFwcGVuZFJlc3VsdDo6UGFyc2luZ0ZhaWxlZCk7Cit9CisKIHZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZTo6cmVlbnF1ZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkKIHsKICAg
ICBpZiAoIW1faXNBdHRhY2hlZCkKQEAgLTE3OCw5ICsyMDMsOSBAQCBWZWN0b3I8U3RyaW5nPiBT
b3VyY2VCdWZmZXJQcml2YXRlOjpidWZmZXJlZFNhbXBsZXNGb3JUcmFja0lEKGNvbnN0IEF0b21T
dHJpbmcmCiB7CiAgICAgYXV0byBpdCA9IG1fdHJhY2tCdWZmZXJNYXAuZmluZCh0cmFja0lEKTsK
ICAgICBpZiAoaXQgPT0gbV90cmFja0J1ZmZlck1hcC5lbmQoKSkKLSAgICAgICAgcmV0dXJuIFZl
Y3RvcjxTdHJpbmc+KCk7CisgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBUcmFja0J1ZmZlciYg
dHJhY2tCdWZmZXIgPSBpdC0+dmFsdWU7CisgICAgYXV0byYgdHJhY2tCdWZmZXIgPSBpdC0+dmFs
dWU7CiAgICAgVmVjdG9yPFN0cmluZz4gc2FtcGxlRGVzY3JpcHRpb25zOwogICAgIGZvciAoYXV0
byYgcGFpciA6IHRyYWNrQnVmZmVyLnNhbXBsZXMuZGVjb2RlT3JkZXIoKSkKICAgICAgICAgc2Ft
cGxlRGVzY3JpcHRpb25zLmFwcGVuZCh0b1N0cmluZygqcGFpci5zZWNvbmQpKTsKQEAgLTMxNyw3
ICszNDIsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnByb3ZpZGVNZWRpYURhdGEoVHJh
Y2tCdWZmZXImIHRyYWNrQnVmZmVyLCBjb25zdCBBdG9tUwogICAgIHVwZGF0ZU1pbmltdW1VcGNv
bWluZ1ByZXNlbnRhdGlvblRpbWUodHJhY2tCdWZmZXIsIHRyYWNrSUQpOwogCiAjaWYgIVJFTEVB
U0VfTE9HX0RJU0FCTEVECi0gICAgREVCVUdfTE9HKExPR0lERU5USUZJRVIsICJlbnF1ZXVlZCAi
LCBlbnF1ZXVlZFNhbXBsZXMsICIgc2FtcGxlcywgIiwgc3RhdGljX2Nhc3Q8c2l6ZV90Pih0cmFj
a0J1ZmZlci5kZWNvZGVRdWV1ZS5zaXplKCkpLCAiIHJlbWFpbmluZyIpOworICAgIERFQlVHX0xP
RyhMT0dJREVOVElGSUVSLCAiZW5xdWV1ZWQgIiwgZW5xdWV1ZWRTYW1wbGVzLCAiIHNhbXBsZXMs
ICIsIHN0YXRpY19jYXN0PHVpbnQ2NF90Pih0cmFja0J1ZmZlci5kZWNvZGVRdWV1ZS5zaXplKCkp
LCAiIHJlbWFpbmluZyIpOwogI2VuZGlmCiAKICAgICBhbGxTYW1wbGVzSW5UcmFja0VucXVldWVk
KHRyYWNrSUQpOwpAQCAtMzM5LDcgKzM2NCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6
cmVlbnF1ZXVlTWVkaWFGb3JUaW1lKFRyYWNrQnVmZmVyJiB0cmFja0J1ZmZlciwgY29uc3QKICAg
ICAgICAgY3VycmVudFNhbXBsZVBUU0l0ZXJhdG9yID0gdHJhY2tCdWZmZXIuc2FtcGxlcy5wcmVz
ZW50YXRpb25PcmRlcigpLmZpbmRTYW1wbGVTdGFydGluZ09uT3JBZnRlclByZXNlbnRhdGlvblRp
bWUodGltZSk7CiAKICAgICBpZiAoY3VycmVudFNhbXBsZVBUU0l0ZXJhdG9yID09IHRyYWNrQnVm
ZmVyLnNhbXBsZXMucHJlc2VudGF0aW9uT3JkZXIoKS5lbmQoKQotICAgICAgICB8fCAoY3VycmVu
dFNhbXBsZVBUU0l0ZXJhdG9yLT5maXJzdCAtIHRpbWUpID4gbV9jdXJyZW50VGltZUZ1ZGdlRmFj
dG9yKQorICAgICAgICB8fCAoY3VycmVudFNhbXBsZVBUU0l0ZXJhdG9yLT5maXJzdCAtIHRpbWUp
ID4gdGltZUZ1ZGdlRmFjdG9yKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFNlYWNoIGJh
Y2t3YXJkIGZvciB0aGUgcHJldmlvdXMgc3luYyBzYW1wbGUuCkBAIC0zNjcsNyArMzkyLDcgQEAg
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpyZWVucXVldWVNZWRpYUZvclRpbWUoVHJhY2tCdWZm
ZXImIHRyYWNrQnVmZmVyLCBjb25zdAogICAgIHRyYWNrQnVmZmVyLm5lZWRzUmVlbnF1ZXVlaW5n
ID0gZmFsc2U7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6cmVlbnF1ZXVlTWVkaWFJ
Zk5lZWRlZChjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBzaXplX3QgcGVuZGluZ0FwcGVu
ZERhdGFDYXBhY2l0eSwgc2l6ZV90IG1heGltdW1CdWZmZXJTaXplKQordm9pZCBTb3VyY2VCdWZm
ZXJQcml2YXRlOjpyZWVucXVldWVNZWRpYUlmTmVlZGVkKGNvbnN0IE1lZGlhVGltZSYgY3VycmVu
dFRpbWUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGlt
dW1CdWZmZXJTaXplKQogewogICAgIGZvciAoYXV0byYgdHJhY2tCdWZmZXJQYWlyIDogbV90cmFj
a0J1ZmZlck1hcCkgewogICAgICAgICBUcmFja0J1ZmZlciYgdHJhY2tCdWZmZXIgPSB0cmFja0J1
ZmZlclBhaXIudmFsdWU7CkBAIC0zOTgsNyArNDIzLDcgQEAgc3RhdGljIFBsYXRmb3JtVGltZVJh
bmdlcyByZW1vdmVTYW1wbGVzRnJvbVRyYWNrQnVmZmVyKGNvbnN0IERlY29kZU9yZGVyU2FtcGxl
TWEKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBNZWRpYVRpbWUgZWFybGllc3RTYW1w
bGUgPSBNZWRpYVRpbWU6OnBvc2l0aXZlSW5maW5pdGVUaW1lKCk7CiAgICAgTWVkaWFUaW1lIGxh
dGVzdFNhbXBsZSA9IE1lZGlhVGltZTo6emVyb1RpbWUoKTsKLSAgICBzaXplX3QgYnl0ZXNSZW1v
dmVkID0gMDsKKyAgICB1aW50NjRfdCBieXRlc1JlbW92ZWQgPSAwOwogICAgIGF1dG8gbG9nSWRl
bnRpZmllciA9IFdURjo6TG9nZ2VyOjpMb2dTaXRlSWRlbnRpZmllcihzb3VyY2VCdWZmZXJQcml2
YXRlLT5sb2dDbGFzc05hbWUoKSwgbG9nUHJlZml4LCBzb3VyY2VCdWZmZXJQcml2YXRlLT5sb2dJ
ZGVudGlmaWVyKCkpOwogICAgIGF1dG8mIGxvZ2dlciA9IHNvdXJjZUJ1ZmZlclByaXZhdGUtPmxv
Z2dlcigpOwogICAgIGF1dG8gd2lsbExvZyA9IGxvZ2dlci53aWxsTG9nKHNvdXJjZUJ1ZmZlclBy
aXZhdGUtPmxvZ0NoYW5uZWwoKSwgV1RGTG9nTGV2ZWw6OkRlYnVnKTsKQEAgLTQwOCw3ICs0MzMs
NyBAQCBzdGF0aWMgUGxhdGZvcm1UaW1lUmFuZ2VzIHJlbW92ZVNhbXBsZXNGcm9tVHJhY2tCdWZm
ZXIoY29uc3QgRGVjb2RlT3JkZXJTYW1wbGVNYQogICAgIGZvciAoY29uc3QgYXV0byYgc2FtcGxl
SXQgOiBzYW1wbGVzKSB7CiAgICAgICAgIGNvbnN0IERlY29kZU9yZGVyU2FtcGxlTWFwOjpLZXlU
eXBlJiBkZWNvZGVLZXkgPSBzYW1wbGVJdC5maXJzdDsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKLSAgICAgICAgc2l6ZV90IHN0YXJ0QnVmZmVyU2l6ZSA9IHRyYWNrQnVmZmVyLnNhbXBsZXMu
c2l6ZUluQnl0ZXMoKTsKKyAgICAgICAgdWludDY0X3Qgc3RhcnRCdWZmZXJTaXplID0gdHJhY2tC
dWZmZXIuc2FtcGxlcy5zaXplSW5CeXRlcygpOwogI2VuZGlmCiAKICAgICAgICAgY29uc3QgUmVm
UHRyPE1lZGlhU2FtcGxlPiYgc2FtcGxlID0gc2FtcGxlSXQuc2Vjb25kOwpAQCAtNTcwLDcgKzU5
NSw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6cmVtb3ZlQ29kZWRGcmFtZXMoY29uc3Qg
TWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUCiAgICAgTE9HKE1lZGlhLCAiU291cmNlQnVm
ZmVyOjpyZW1vdmVDb2RlZEZyYW1lcyglcCkgLSBidWZmZXJlZCA9ICVzIiwgdGhpcywgdG9TdHJp
bmcobV9idWZmZXJlZC0+cmFuZ2VzKCkpLnV0ZjgoKS5kYXRhKCkpOwogfQogCi12b2lkIFNvdXJj
ZUJ1ZmZlclByaXZhdGU6OmV2aWN0Q29kZWRGcmFtZXMoc2l6ZV90IG5ld0RhdGFTaXplLCBzaXpl
X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgc2l6ZV90IG1heGltdW1CdWZmZXJTaXplLCBj
b25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uLCBi
b29sIGlzRW5kZWQpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmV2aWN0Q29kZWRGcmFtZXMo
dWludDY0X3QgbmV3RGF0YVNpemUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHks
IHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplLCBjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1l
LCBjb25zdCBNZWRpYVRpbWUmIGR1cmF0aW9uLCBib29sIGlzRW5kZWQpCiB7CiAgICAgLy8gMy41
LjEzIENvZGVkIEZyYW1lIEV2aWN0aW9uIEFsZ29yaXRobQogICAgIC8vIGh0dHA6Ly93d3cudzMu
b3JnL1RSL21lZGlhLXNvdXJjZS8jc291cmNlYnVmZmVyLWNvZGVkLWZyYW1lLWV2aWN0aW9uCkBA
IC01OTQsNyArNjE5LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpldmljdENvZGVkRnJh
bWVzKHNpemVfdCBuZXdEYXRhU2l6ZSwgc2l6ZV90IHBlbmRpbmdBcHAKIAogI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRCAmJiBmYWxzZQogICAgIERFQlVHX0xPRyhMT0dJREVOVElGSUVSLCAiY3Vy
cmVudFRpbWUgPSAiLCBjdXJyZW50VGltZSwgIiwgcmVxdWlyZSAiLCBleHRyYU1lbW9yeUNvc3Qo
KSArIG5ld0RhdGFTaXplLCAiIGJ5dGVzLCBtYXhpbXVtIGJ1ZmZlciBzaXplIGlzICIsIG1heGlt
dW1CdWZmZXJTaXplKTsKLSAgICBzaXplX3QgaW5pdGlhbEJ1ZmZlcmVkU2l6ZSA9IGV4dHJhTWVt
b3J5Q29zdCgpOworICAgIHVpbnQ2NF90IGluaXRpYWxCdWZmZXJlZFNpemUgPSBleHRyYU1lbW9y
eUNvc3QoKTsKICNlbmRpZgogCiAgICAgTWVkaWFUaW1lIHJhbmdlU3RhcnQgPSBNZWRpYVRpbWU6
Onplcm9UaW1lKCk7CkBAIC02MjMsMTAgKzY0OCwxMCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGU6OmV2aWN0Q29kZWRGcmFtZXMoc2l6ZV90IG5ld0RhdGFTaXplLCBzaXplX3QgcGVuZGluZ0Fw
cAogICAgIC8vIHRoZSBjdXJyZW50IGJ1ZmZlcmVkIHJhbmdlKSwgZGVsZXRlIDMwIHNlY29uZHMg
YXQgYSB0aW1lIGZyb20gZHVyYXRpb24gYmFjayB0byB0aGUgY3VycmVudCB0aW1lIHJhbmdlIG9y
IDMwIHNlY29uZHMgYWZ0ZXIKICAgICAvLyBjdXJyZW5UaW1lIHdoaWNoZXZlciB3ZSBoaXQgZmly
c3QuCiAgICAgYXV0byBidWZmZXJlZCA9IG1fYnVmZmVyZWQtPnJhbmdlcygpOwotICAgIHNpemVf
dCBjdXJyZW50VGltZVJhbmdlID0gYnVmZmVyZWQuZmluZChjdXJyZW50VGltZSk7CisgICAgdWlu
dDY0X3QgY3VycmVudFRpbWVSYW5nZSA9IGJ1ZmZlcmVkLmZpbmQoY3VycmVudFRpbWUpOwogICAg
IGlmIChjdXJyZW50VGltZVJhbmdlID09IGJ1ZmZlcmVkLmxlbmd0aCgpIC0gMSkgewogI2lmICFS
RUxFQVNFX0xPR19ESVNBQkxFRCAmJiBmYWxzZQotICAgIEVSUk9SX0xPRyhMT0dJREVOVElGSUVS
LCAiRkFJTEVEIHRvIGZyZWUgZW5vdWdoIGFmdGVyIGV2aWN0aW5nICIsIGluaXRpYWxCdWZmZXJl
ZFNpemUgLSBleHRyYU1lbW9yeUNvc3QoKSk7CisgICAgICAgIEVSUk9SX0xPRyhMT0dJREVOVElG
SUVSLCAiRkFJTEVEIHRvIGZyZWUgZW5vdWdoIGFmdGVyIGV2aWN0aW5nICIsIGluaXRpYWxCdWZm
ZXJlZFNpemUgLSBleHRyYU1lbW9yeUNvc3QoKSk7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTYzNiw3ICs2NjEsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmV2aWN0
Q29kZWRGcmFtZXMoc2l6ZV90IG5ld0RhdGFTaXplLCBzaXplX3QgcGVuZGluZ0FwcAogICAgIHJh
bmdlRW5kID0gZHVyYXRpb247CiAgICAgaWYgKCFyYW5nZUVuZC5pc0Zpbml0ZSgpKSB7CiAgICAg
ICAgIHJhbmdlRW5kID0gYnVmZmVyZWQubWF4aW11bUJ1ZmZlcmVkVGltZSgpOwotI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRCAmJiBmYWxzZQorI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAg
ICAgICBERUJVR19MT0coTE9HSURFTlRJRklFUiwgIk1lZGlhU291cmNlIGR1cmF0aW9uIGlzIG5v
dCBhIGZpbml0ZSB2YWx1ZSwgdXNpbmcgbWF4aW11bSBidWZmZXJlZCB0aW1lOiAiLCByYW5nZUVu
ZCk7CiAjZW5kaWYKICAgICB9CkBAIC02NDQsOSArNjY5LDkgQEAgdm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlOjpldmljdENvZGVkRnJhbWVzKHNpemVfdCBuZXdEYXRhU2l6ZSwgc2l6ZV90IHBlbmRp
bmdBcHAKICAgICByYW5nZVN0YXJ0ID0gcmFuZ2VFbmQgLSB0aGlydHlTZWNvbmRzOwogICAgIHdo
aWxlIChyYW5nZVN0YXJ0ID4gbWluaW11bVJhbmdlU3RhcnQpIHsKICAgICAgICAgLy8gRG8gbm90
IGV2aWN0IGRhdGEgZnJvbSB0aGUgdGltZSByYW5nZSB0aGF0IGNvbnRhaW5zIGN1cnJlbnRUaW1l
LgotICAgICAgICBzaXplX3Qgc3RhcnRUaW1lUmFuZ2UgPSBidWZmZXJlZC5maW5kKHJhbmdlU3Rh
cnQpOworICAgICAgICB1aW50NjRfdCBzdGFydFRpbWVSYW5nZSA9IGJ1ZmZlcmVkLmZpbmQocmFu
Z2VTdGFydCk7CiAgICAgICAgIGlmIChjdXJyZW50VGltZVJhbmdlICE9IG5vdEZvdW5kICYmIHN0
YXJ0VGltZVJhbmdlID09IGN1cnJlbnRUaW1lUmFuZ2UpIHsKLSAgICAgICAgICAgIHNpemVfdCBl
bmRUaW1lUmFuZ2UgPSBidWZmZXJlZC5maW5kKHJhbmdlRW5kKTsKKyAgICAgICAgICAgIHVpbnQ2
NF90IGVuZFRpbWVSYW5nZSA9IGJ1ZmZlcmVkLmZpbmQocmFuZ2VFbmQpOwogICAgICAgICAgICAg
aWYgKGN1cnJlbnRUaW1lUmFuZ2UgIT0gbm90Rm91bmQgJiYgZW5kVGltZVJhbmdlID09IGN1cnJl
bnRUaW1lUmFuZ2UpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTY3NCwyMiArNjk5LDI1
IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZXZpY3RDb2RlZEZyYW1lcyhzaXplX3QgbmV3
RGF0YVNpemUsIHNpemVfdCBwZW5kaW5nQXBwCiAjZW5kaWYKIH0KIAotc2l6ZV90IFNvdXJjZUJ1
ZmZlclByaXZhdGU6OnRvdGFsVHJhY2tCdWZmZXJTaXplSW5CeXRlcygpIGNvbnN0Cit1aW50NjRf
dCBTb3VyY2VCdWZmZXJQcml2YXRlOjp0b3RhbFRyYWNrQnVmZmVyU2l6ZUluQnl0ZXMoKSBjb25z
dAogewotICAgIHNpemVfdCB0b3RhbFNpemVJbkJ5dGVzID0gMDsKKyAgICB1aW50NjRfdCB0b3Rh
bFNpemVJbkJ5dGVzID0gMDsKICAgICBmb3IgKGF1dG8mIHRyYWNrQnVmZmVyIDogbV90cmFja0J1
ZmZlck1hcC52YWx1ZXMoKSkKICAgICAgICAgdG90YWxTaXplSW5CeXRlcyArPSB0cmFja0J1ZmZl
ci5zYW1wbGVzLnNpemVJbkJ5dGVzKCk7CiAKICAgICByZXR1cm4gdG90YWxTaXplSW5CeXRlczsK
IH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjphZGRUcmFja0J1ZmZlcihjb25zdCBBdG9t
U3RyaW5nJiB0cmFja0lkLCBSZWZQdHI8TWVkaWFEZXNjcmlwdGlvbj4gZGVzY3JpcHRpb24pCit2
b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGU6OmFkZFRyYWNrQnVmZmVyKGNvbnN0IEF0b21TdHJpbmcm
IHRyYWNrSWQsIFJlZlB0cjxNZWRpYURlc2NyaXB0aW9uPiYmIGRlc2NyaXB0aW9uKQogewogICAg
IEFTU0VSVCghbV90cmFja0J1ZmZlck1hcC5jb250YWlucyh0cmFja0lkKSk7CiAgICAgYXV0byYg
dHJhY2tCdWZmZXIgPSBtX3RyYWNrQnVmZmVyTWFwLmFkZCh0cmFja0lkLCBUcmFja0J1ZmZlcigp
KS5pdGVyYXRvci0+dmFsdWU7CiAKICAgICAvLyA1LjIuOSBBZGQgdGhlIHRyYWNrIGRlc2NyaXB0
aW9uIGZvciB0aGlzIHRyYWNrIHRvIHRoZSB0cmFjayBidWZmZXIuCiAgICAgdHJhY2tCdWZmZXIu
ZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsKKworICAgIG1faGFzQXVkaW8gPSBtX2hhc0F1ZGlv
IHx8IHRyYWNrQnVmZmVyLmRlc2NyaXB0aW9uLT5pc0F1ZGlvKCk7CisgICAgbV9oYXNWaWRlbyA9
IG1faGFzVmlkZW8gfHwgdHJhY2tCdWZmZXIuZGVzY3JpcHRpb24tPmlzVmlkZW8oKTsKIH0KIAog
dm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjp1cGRhdGVUcmFja0lkcyhWZWN0b3I8c3RkOjpwYWly
PEF0b21TdHJpbmcsIEF0b21TdHJpbmc+PiYmIHRyYWNrSWRQYWlycykKQEAgLTcwOSwxNyArNzM3
LDE5IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6c2V0QWxsVHJhY2tCdWZmZXJzTmVlZFJh
bmRvbUFjY2VzcygpCiAgICAgICAgIHRyYWNrQnVmZmVyLm5lZWRSYW5kb21BY2Nlc3NGbGFnID0g
dHJ1ZTsKIH0KIAotdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlSW5pdGlhbGl6
YXRpb25TZWdtZW50KGNvbnN0IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0
aW9uU2VnbWVudCYgc2VnbWVudCkKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2
ZUluaXRpYWxpemF0aW9uU2VnbWVudChTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFs
aXphdGlvblNlZ21lbnQmJiBzZWdtZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgaWYgKCFtX2NsaWVudCkKKyAgICBpZiAoIW1fY2xpZW50
KSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9
CiAKICAgICBpZiAobV9yZWNlaXZlZEZpcnN0SW5pdGlhbGl6YXRpb25TZWdtZW50ICYmICF2YWxp
ZGF0ZUluaXRpYWxpemF0aW9uU2VnbWVudChzZWdtZW50KSkgewogICAgICAgICBtX2NsaWVudC0+
c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZEVycm9yKHRydWUpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlh
bGl6YXRpb25TZWdtZW50KHNlZ21lbnQpOworICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2
YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICBtX3JlY2VpdmVkRmlyc3RJbml0aWFsaXph
dGlvblNlZ21lbnQgPSB0cnVlOwogICAgIG1fcGVuZGluZ0luaXRpYWxpemF0aW9uU2VnbWVudEZv
ckNoYW5nZVR5cGUgPSBmYWxzZTsKQEAgLTExODAsMTEgKzEyMTAsMTEgQEAgdm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlU2FtcGxlKE1lZGlhU2FtcGxlJiBzYW1wbGUpCiAgICAg
ICAgIC8vIGRpc2pvaW50IHJhbmdlcyBzZXBhcmF0ZWQgYnkgbGVzcyB0aGFuIGEgImZ1ZGdlIGZh
Y3RvciIuCiAgICAgICAgIGF1dG8gcHJlc2VudGF0aW9uRW5kVGltZSA9IHByZXNlbnRhdGlvblRp
bWVzdGFtcCArIGZyYW1lRHVyYXRpb247CiAgICAgICAgIGF1dG8gbmVhcmVzdFRvUHJlc2VudGF0
aW9uU3RhcnRUaW1lID0gdHJhY2tCdWZmZXIuYnVmZmVyZWQubmVhcmVzdChwcmVzZW50YXRpb25U
aW1lc3RhbXApOwotICAgICAgICBpZiAobmVhcmVzdFRvUHJlc2VudGF0aW9uU3RhcnRUaW1lLmlz
VmFsaWQoKSAmJiAocHJlc2VudGF0aW9uVGltZXN0YW1wIC0gbmVhcmVzdFRvUHJlc2VudGF0aW9u
U3RhcnRUaW1lKS5pc0JldHdlZW4oTWVkaWFUaW1lOjp6ZXJvVGltZSgpLCBtX2N1cnJlbnRUaW1l
RnVkZ2VGYWN0b3IpKQorICAgICAgICBpZiAobmVhcmVzdFRvUHJlc2VudGF0aW9uU3RhcnRUaW1l
LmlzVmFsaWQoKSAmJiAocHJlc2VudGF0aW9uVGltZXN0YW1wIC0gbmVhcmVzdFRvUHJlc2VudGF0
aW9uU3RhcnRUaW1lKS5pc0JldHdlZW4oTWVkaWFUaW1lOjp6ZXJvVGltZSgpLCB0aW1lRnVkZ2VG
YWN0b3IoKSkpCiAgICAgICAgICAgICBwcmVzZW50YXRpb25UaW1lc3RhbXAgPSBuZWFyZXN0VG9Q
cmVzZW50YXRpb25TdGFydFRpbWU7CiAKICAgICAgICAgYXV0byBuZWFyZXN0VG9QcmVzZW50YXRp
b25FbmRUaW1lID0gdHJhY2tCdWZmZXIuYnVmZmVyZWQubmVhcmVzdChwcmVzZW50YXRpb25FbmRU
aW1lKTsKLSAgICAgICAgaWYgKG5lYXJlc3RUb1ByZXNlbnRhdGlvbkVuZFRpbWUuaXNWYWxpZCgp
ICYmIChuZWFyZXN0VG9QcmVzZW50YXRpb25FbmRUaW1lIC0gcHJlc2VudGF0aW9uRW5kVGltZSku
aXNCZXR3ZWVuKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgbV9jdXJyZW50VGltZUZ1ZGdlRmFjdG9y
KSkKKyAgICAgICAgaWYgKG5lYXJlc3RUb1ByZXNlbnRhdGlvbkVuZFRpbWUuaXNWYWxpZCgpICYm
IChuZWFyZXN0VG9QcmVzZW50YXRpb25FbmRUaW1lIC0gcHJlc2VudGF0aW9uRW5kVGltZSkuaXNC
ZXR3ZWVuKE1lZGlhVGltZTo6emVyb1RpbWUoKSwgdGltZUZ1ZGdlRmFjdG9yKCkpKQogICAgICAg
ICAgICAgcHJlc2VudGF0aW9uRW5kVGltZSA9IG5lYXJlc3RUb1ByZXNlbnRhdGlvbkVuZFRpbWU7
CiAKICAgICAgICAgdHJhY2tCdWZmZXIuYnVmZmVyZWQuYWRkKHByZXNlbnRhdGlvblRpbWVzdGFt
cCwgcHJlc2VudGF0aW9uRW5kVGltZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlLmgKaW5kZXggMTFkZmYzNDliZWM3ZDdl
OWMyMjMxNzM2YTQ2ZDQ4ZTc3ZTQ3NmI3YS4uNDAxZGJkNzdiZDIwNGI5OGMyODNmY2ExZmQ1NDIw
OWM5N2ZlZWIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U291cmNlQnVmZmVyUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1NvdXJjZUJ1ZmZlclByaXZhdGUuaApAQCAtNjMsOCArNjMsOSBAQCBjbGFzcyBTb3VyY2VC
dWZmZXJQcml2YXRlCiB7CiBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgU291cmNlQnVmZmVy
UHJpdmF0ZSgpOwotICAgIHZpcnR1YWwgflNvdXJjZUJ1ZmZlclByaXZhdGUoKSA9IGRlZmF1bHQ7
CisgICAgV0VCQ09SRV9FWFBPUlQgdmlydHVhbCB+U291cmNlQnVmZmVyUHJpdmF0ZSgpOwogCisg
ICAgdmlydHVhbCB2b2lkIHNldEFjdGl2ZShib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGFw
cGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBhYm9y
dCgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzZXRQYXJzZXJTdGF0ZSgpID0gMDsKQEAgLTcy
LDQwICs3MywzOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBNZWRpYVBsYXllcjo6UmVhZHlTdGF0
ZSByZWFkeVN0YXRlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRSZWFkeVN0YXRl
KE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QWN0
aXZlKGJvb2wpIHsgfQogICAgIHZpcnR1YWwgYm9vbCBjYW5Td2l0Y2hUb1R5cGUoY29uc3QgQ29u
dGVudFR5cGUmKSB7IHJldHVybiBmYWxzZTsgfQogCisgICAgdmlydHVhbCB2b2lkIHJlZW5xdWV1
ZU1lZGlhSWZOZWVkZWQoY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50TWVkaWFUaW1lLCB1aW50NjRf
dCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSk7
CisgICAgdmlydHVhbCB2b2lkIGFkZFRyYWNrQnVmZmVyKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNr
SWQsIFJlZlB0cjxNZWRpYURlc2NyaXB0aW9uPiYmKTsKKyAgICB2aXJ0dWFsIHZvaWQgdHJ5U2ln
bmFsQWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZpcnR1
YWwgdm9pZCB1cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVk
KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFsIHZvaWQgZXZpY3RDb2RlZEZyYW1lcyh1aW50
NjRfdCBuZXdEYXRhU2l6ZSwgdWludDY0X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgdWlu
dDY0X3QgbWF4aW11bUJ1ZmZlclNpemUsIGNvbnN0IE1lZGlhVGltZSYgY3VycmVudFRpbWUsIGNv
bnN0IE1lZGlhVGltZSYgZHVyYXRpb24sIGJvb2wgaXNFbmRlZCk7CisKICAgICB2b2lkIHNldENs
aWVudChTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50KiBjbGllbnQpIHsgbV9jbGllbnQgPSBjbGll
bnQ7IH0KICAgICB2b2lkIHNldElzQXR0YWNoZWQoYm9vbCBmbGFnKSB7IG1faXNBdHRhY2hlZCA9
IGZsYWc7IH0KLSAgICB2b2lkIHNldEN1cnJlbnRUaW1lRnVkZ2VGYWN0b3IoY29uc3QgTWVkaWFU
aW1lJiB0aW1lKSB7IG1fY3VycmVudFRpbWVGdWRnZUZhY3RvciA9IHRpbWU7IH0KKyAgICBib29s
IGhhc0F1ZGlvKCkgY29uc3QgeyByZXR1cm4gbV9oYXNBdWRpbzsgfQorICAgIGJvb2wgaGFzVmlk
ZW8oKSBjb25zdCB7IHJldHVybiBtX2hhc1ZpZGVvOyB9CiAgICAgdm9pZCBzZXRBcHBlbmRXaW5k
b3dTdGFydChjb25zdCBNZWRpYVRpbWUmIGFwcGVuZFdpbmRvd1N0YXJ0KSB7IG1fYXBwZW5kV2lu
ZG93U3RhcnQgPSBhcHBlbmRXaW5kb3dTdGFydDt9CiAgICAgdm9pZCBzZXRBcHBlbmRXaW5kb3dF
bmQoY29uc3QgTWVkaWFUaW1lJiBhcHBlbmRXaW5kb3dFbmQpIHsgbV9hcHBlbmRXaW5kb3dFbmQg
PSBhcHBlbmRXaW5kb3dFbmQ7IH0KICAgICBib29sIGJ1ZmZlckZ1bGwoKSBjb25zdCB7IHJldHVy
biBtX2J1ZmZlckZ1bGw7IH0KLSAgICBUaW1lUmFuZ2VzKiBidWZmZXJlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fYnVmZmVyZWQuZ2V0KCk7IH0KLSAgICBib29sIGlzQnVmZmVyZWREaXJ0eSgpIGNvbnN0
IHsgcmV0dXJuIG1fYnVmZmVyZWREaXJ0eTsgfQotICAgIHZvaWQgc2V0QnVmZmVyZWREaXJ0eShi
b29sIGZsYWcpIHsgbV9idWZmZXJlZERpcnR5ID0gZmxhZzsgfQorCisgICAgdm9pZCBzZXRCdWZm
ZXJlZERpcnR5KGJvb2wpOwogICAgIHZvaWQgcmVzZXRUcmFja0J1ZmZlcnMoKTsKICAgICB2b2lk
IGNsZWFyVHJhY2tCdWZmZXJzKCk7CiAgICAgdm9pZCByZXNldFRpbWVzdGFtcE9mZnNldEluVHJh
Y2tCdWZmZXJzKCk7CiAgICAgTWVkaWFUaW1lIHRpbWVzdGFtcE9mZnNldCgpIGNvbnN0IHsgcmV0
dXJuIG1fdGltZXN0YW1wT2Zmc2V0OyB9CiAgICAgdm9pZCBzZXRUaW1lc3RhbXBPZmZzZXQoY29u
c3QgTWVkaWFUaW1lJiB0aW1lc3RhbXBPZmZzZXQpIHsgbV90aW1lc3RhbXBPZmZzZXQgPSB0aW1l
c3RhbXBPZmZzZXQ7IH0KICAgICBNZWRpYVRpbWUgaGlnaGVzdFByZXNlbnRhdGlvblRpbWVzdGFt
cCgpIGNvbnN0OwotICAgIHZvaWQgdXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wg
c291cmNlSXNFbmRlZCk7CiAgICAgdm9pZCBzZWVrVG9UaW1lKGNvbnN0IE1lZGlhVGltZSYpOwot
ICAgIHZvaWQgdHJ5U2lnbmFsQWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCgpOwogICAgIHZvaWQg
c3RhcnRDaGFuZ2luZ1R5cGUoKSB7IG1fcGVuZGluZ0luaXRpYWxpemF0aW9uU2VnbWVudEZvckNo
YW5nZVR5cGUgPSB0cnVlOyB9Ci0KLSAgICB2b2lkIHJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQoY29u
c3QgTWVkaWFUaW1lJiBjdXJyZW50TWVkaWFUaW1lLCBzaXplX3QgcGVuZGluZ0FwcGVuZERhdGFD
YXBhY2l0eSwgc2l6ZV90IG1heGltdW1CdWZmZXJTaXplKTsKICAgICB2b2lkIHJlbW92ZUNvZGVk
RnJhbWVzKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25z
dCBNZWRpYVRpbWUmIGN1cnJlbnRNZWRpYVRpbWUsIGJvb2wgaXNFbmRlZCk7Ci0gICAgdm9pZCBl
dmljdENvZGVkRnJhbWVzKHNpemVfdCBuZXdEYXRhU2l6ZSwgc2l6ZV90IHBlbmRpbmdBcHBlbmRE
YXRhQ2FwYWNpdHksIHNpemVfdCBtYXhpbXVtQnVmZmVyU2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBj
dXJyZW50VGltZSwgY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbiwgYm9vbCBpc0VuZGVkKTsKLSAg
ICB2b2lkIGFkZFRyYWNrQnVmZmVyKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSWQsIFJlZlB0cjxN
ZWRpYURlc2NyaXB0aW9uPik7CiAgICAgdm9pZCB1cGRhdGVUcmFja0lkcyhWZWN0b3I8c3RkOjpw
YWlyPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+PiYmIHRyYWNrSWRQYWlycyk7CiAgICAgdm9pZCBz
ZXRBbGxUcmFja0J1ZmZlcnNOZWVkUmFuZG9tQWNjZXNzKCk7CiAgICAgdm9pZCBzZXRTaG91bGRH
ZW5lcmF0ZVRpbWVzdGFtcHMoYm9vbCBmbGFnKSB7IG1fc2hvdWxkR2VuZXJhdGVUaW1lc3RhbXBz
ID0gZmxhZzsgfQogICAgIHZvaWQgc2V0TW9kZShTb3VyY2VCdWZmZXJBcHBlbmRNb2RlIG1vZGUp
IHsgbV9hcHBlbmRNb2RlID0gbW9kZTsgfQogICAgIHZvaWQgc2V0R3JvdXBTdGFydFRpbWVzdGFt
cChjb25zdCBNZWRpYVRpbWUmIG1lZGlhVGltZSkgeyBtX2dyb3VwU3RhcnRUaW1lc3RhbXAgPSBt
ZWRpYVRpbWU7IH0KICAgICB2b2lkIHNldEdyb3VwU3RhcnRUaW1lc3RhbXBUb0VuZFRpbWVzdGFt
cCgpIHsgbV9ncm91cFN0YXJ0VGltZXN0YW1wID0gbV9ncm91cEVuZFRpbWVzdGFtcDsgfQotICAg
IHNpemVfdCB0b3RhbFRyYWNrQnVmZmVyU2l6ZUluQnl0ZXMoKSBjb25zdDsKKyAgICB1aW50NjRf
dCB0b3RhbFRyYWNrQnVmZmVyU2l6ZUluQnl0ZXMoKSBjb25zdDsKIAogICAgIHN0cnVjdCBUcmFj
a0J1ZmZlciB7CiAgICAgICAgIE1lZGlhVGltZSBsYXN0RGVjb2RlVGltZXN0YW1wOwpAQCAtMTM0
LDcgKzEzNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3RvcjxTdHJpbmc+IGVucXVldWVk
U2FtcGxlc0ZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYpIHsgcmV0dXJuIHsgfTsgfQogICAg
IFZlY3RvcjxTdHJpbmc+IGJ1ZmZlcmVkU2FtcGxlc0ZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmlu
ZyYpOwogICAgIHZpcnR1YWwgTWVkaWFUaW1lIG1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRp
bWVGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJpbmcmKSB7IHJldHVybiBNZWRpYVRpbWU6OmludmFs
aWRUaW1lKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgc2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JUcmFj
a0lEKGNvbnN0IEF0b21TdHJpbmcmLCBzaXplX3QpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRN
YXhpbXVtUXVldWVEZXB0aEZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYsIHVpbnQ2NF90KSB7
IH0KICAgICBNZWRpYVRpbWUgZmFzdFNlZWtUaW1lRm9yTWVkaWFUaW1lKGNvbnN0IE1lZGlhVGlt
ZSYgdGFyZ2V0VGltZSwgY29uc3QgTWVkaWFUaW1lJiBuZWdhdGl2ZVRocmVzaG9sZCwgY29uc3Qg
TWVkaWFUaW1lJiBwb3NpdGl2ZVRocmVzaG9sZCk7CiAKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKQEAgLTE0Myw2ICsxNDMsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgorICAg
IHZpcnR1YWwgTWVkaWFUaW1lIHRpbWVGdWRnZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIHsyMDAy
LCAyNDAwMH07IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBm
YWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NlZWtpbmcoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogICAgIHZpcnR1YWwgTWVkaWFUaW1lIGN1cnJlbnRNZWRpYVRpbWUoKSBjb25zdCB7IHJl
dHVybiB7IH07IH0KQEAgLTE1Nyw4ICsxNTgsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2
b2lkIHNldE1pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWUoY29uc3QgQXRvbVN0cmluZyYs
IGNvbnN0IE1lZGlhVGltZSYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBjbGVhck1pbmltdW1VcGNv
bWluZ1ByZXNlbnRhdGlvblRpbWUoY29uc3QgQXRvbVN0cmluZyYpIHsgfQogCisgICAgdm9pZCBh
cHBlbmRDb21wbGV0ZWQoYm9vbCBwYXJzaW5nU3VjY2VlZGVkLCBib29sIGlzRW5kZWQpOwogICAg
IHZvaWQgcmVlbnF1ZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCk7Ci0gICAgdm9p
ZCBkaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IFNvdXJjZUJ1ZmZlclByaXZh
dGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudCYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUlu
aXRpYWxpemF0aW9uU2VnbWVudChTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50OjpJbml0aWFsaXph
dGlvblNlZ21lbnQmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVTYW1wbGUoTWVkaWFTYW1wbGUmKTsKICAgICB2b2lkIHByb3ZpZGVNZWRpYURhdGEo
Y29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCk7CiAKQEAgLTE2OSwxMSArMTcxLDEzIEBAIHByaXZh
dGU6CiAgICAgdm9pZCByZWVucXVldWVNZWRpYUZvclRpbWUoVHJhY2tCdWZmZXImLCBjb25zdCBB
dG9tU3RyaW5nJiB0cmFja0lELCBjb25zdCBNZWRpYVRpbWUmKTsKICAgICBib29sIHZhbGlkYXRl
SW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6Oklu
aXRpYWxpemF0aW9uU2VnbWVudCYpOwogICAgIHZvaWQgcHJvdmlkZU1lZGlhRGF0YShUcmFja0J1
ZmZlciYsIGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpOworICAgIHZvaWQgc2V0QnVmZmVyZWRS
YW5nZXMoY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJik7CiAKICAgICBib29sIG1faXNBdHRhY2hl
ZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2hhc0F1ZGlvIHsgZmFsc2UgfTsKKyAgICBib29sIG1f
aGFzVmlkZW8geyBmYWxzZSB9OwogCiAgICAgSGFzaE1hcDxBdG9tU3RyaW5nLCBUcmFja0J1ZmZl
cj4gbV90cmFja0J1ZmZlck1hcDsKLSAgICBNZWRpYVRpbWUgbV9jdXJyZW50VGltZUZ1ZGdlRmFj
dG9yOwogCiAgICAgU291cmNlQnVmZmVyQXBwZW5kTW9kZSBtX2FwcGVuZE1vZGUgeyBTb3VyY2VC
dWZmZXJBcHBlbmRNb2RlOjpTZWdtZW50cyB9OwogCkBAIC0xOTAsNyArMTk0LDYgQEAgcHJpdmF0
ZToKIAogICAgIGJvb2wgbV9idWZmZXJGdWxsIHsgZmFsc2UgfTsKICAgICBSZWZQdHI8VGltZVJh
bmdlcz4gbV9idWZmZXJlZDsKLSAgICBib29sIG1fYnVmZmVyZWREaXJ0eSB7IHRydWUgfTsKIH07
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaAppbmRleCBl
Y2QzYzc2M2YxMjRiN2MwZDRjNzU5NWJkM2E2YWYxNjVjM2Q5NDNiLi5hN2YwNDEyZjE0MDkyMDU1
MTJhNDM5Y2Y4YjFhNGUzMGNjY2RmZDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9Tb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oCkBAIC0z
Niw2ICszNiw3IEBAIGNsYXNzIEF1ZGlvVHJhY2tQcml2YXRlOwogY2xhc3MgSW5iYW5kVGV4dFRy
YWNrUHJpdmF0ZTsKIGNsYXNzIE1lZGlhU2FtcGxlOwogY2xhc3MgTWVkaWFEZXNjcmlwdGlvbjsK
K2NsYXNzIFBsYXRmb3JtVGltZVJhbmdlczsKIGNsYXNzIFZpZGVvVHJhY2tQcml2YXRlOwogCiBj
bGFzcyBTb3VyY2VCdWZmZXJQcml2YXRlQ2xpZW50IHsKQEAgLTYzLDIxICs2NCwyMiBAQCBwdWJs
aWM6CiAgICAgICAgIH07CiAgICAgICAgIFZlY3RvcjxUZXh0VHJhY2tJbmZvcm1hdGlvbj4gdGV4
dFRyYWNrczsKICAgICB9OwotICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlk
UmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChjb25zdCBJbml0aWFsaXphdGlvblNlZ21lbnQm
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRFcnJvcihi
b29sIGRlY29kZUVycm9yKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZh
dGVEdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoZG91YmxlIGZyYW1lRHVyYXRpb24p
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZERyb3BTYW1wbGUo
KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5p
dGlhbGl6YXRpb25TZWdtZW50KEluaXRpYWxpemF0aW9uU2VnbWVudCYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKCk+JiYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0
ZVN0cmVhbUVuZGVkV2l0aERlY29kZUVycm9yKCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBzb3Vy
Y2VCdWZmZXJQcml2YXRlSGFzQXVkaW8oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIHNv
dXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbygpIGNvbnN0ID0gMDsKIAorICAgIHZpcnR1YWwgdm9p
ZCBzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9vbCBkZWNvZGVFcnJvcikgPSAwOwog
ICAgIGVudW0gY2xhc3MgQXBwZW5kUmVzdWx0IDogdWludDhfdCB7CiAgICAgICAgIEFwcGVuZFN1
Y2NlZWRlZCwKICAgICAgICAgUmVhZFN0cmVhbUZhaWxlZCwKICAgICAgICAgUGFyc2luZ0ZhaWxl
ZAogICAgIH07CiAgICAgdmlydHVhbCB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVBcHBlbmRDb21w
bGV0ZShBcHBlbmRSZXN1bHQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJp
dmF0ZUR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRQYXJzZVNhbXBsZShkb3VibGUgZnJhbWVEdXJhdGlv
bikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkRHJvcFNhbXBs
ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkRGly
dHlDaGFuZ2VkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0
ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChjb25zdCBQbGF0Zm9ybVRpbWVSYW5nZXMmKSA9IDA7CisK
ICAgICB2aXJ0dWFsIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVSZW5kZXJpbmdF
cnJvcihpbnQgZXJyb3JDb2RlKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9WaWRlb1RyYWNrUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvVmlkZW9UcmFja1ByaXZhdGUuaAppbmRleCAwYzQxM2MyZGRmNWQ5
ZGEyYTE1YjExMzVjMDhlNTEwODUyYjgwMmM2Li5lYTVhMjljZWI1Y2ZlOWYwMjQyN2M1ZWFkZGMx
NjQyNzRjYjZkNjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9WaWRlb1RyYWNrUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL1ZpZGVvVHJhY2tQcml2YXRlLmgKQEAgLTY0LDcgKzY0LDYgQEAgcHVibGljOgogICAgIHVz
aW5nIFNlbGVjdGVkQ2hhbmdlZENhbGxiYWNrID0gRnVuY3Rpb248dm9pZChWaWRlb1RyYWNrUHJp
dmF0ZSYsIGJvb2wgc2VsZWN0ZWQpPjsKICAgICB2b2lkIHNldFNlbGVjdGVkQ2hhbmdlZENhbGxi
YWNrKFNlbGVjdGVkQ2hhbmdlZENhbGxiYWNrJiYgY2FsbGJhY2spIHsgbV9zZWxlY3RlZENoYW5n
ZWRDYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spOyB9CiAKLQogcHJvdGVjdGVkOgogICAgIFZp
ZGVvVHJhY2tQcml2YXRlKCkgPSBkZWZhdWx0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVB
VkZPYmpDLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLmgKaW5kZXggMTEzNmZkMjUyYjgyZmVjYzc2
YjdlOThmYjRkOGViYWI1Y2VlYjk0NS4uNjhjZmQ1MjM0NmI5YzM1OGNkM2QxNzUwOTNjNTdkYzhk
Nzk3OGJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJp
dmF0ZUFWRk9iakMuaApAQCAtNjIsMTQgKzYyLDE1IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVm
PE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVNZWRp
YVNvdXJjZUFWRk9iakMqLCBNZWRpYVNvdXJjZVByaXZhdGVDbGllbnQqKTsKICAgICB2aXJ0dWFs
IH5NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDKCk7CiAKLSAgICBNZWRpYVBsYXllclByaXZhdGVN
ZWRpYVNvdXJjZUFWRk9iakMqIHBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWVyOyB9Cisg
ICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZPYmpDKiBwbGF5ZXIoKSBjb25zdCB7
IHJldHVybiBtX3BsYXllci5nZXQoKTsgfQogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8U291cmNl
QnVmZmVyUHJpdmF0ZUFWRk9iakM+PiYgc291cmNlQnVmZmVycygpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlQnVmZmVyczsgfQogICAgIGNvbnN0IFZlY3RvcjxTb3VyY2VCdWZmZXJQcml2YXRlQVZG
T2JqQyo+JiBhY3RpdmVTb3VyY2VCdWZmZXJzKCkgY29uc3QgeyByZXR1cm4gbV9hY3RpdmVTb3Vy
Y2VCdWZmZXJzOyB9CiAKICAgICBBZGRTdGF0dXMgYWRkU291cmNlQnVmZmVyKGNvbnN0IENvbnRl
bnRUeXBlJiwgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGU+Jikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCBkdXJhdGlvbkNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZChj
b25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIG1hcmtFbmRPZlN0cmVhbShFbmRP
ZlN0cmVhbVN0YXR1cykgb3ZlcnJpZGU7CiAgICAgdm9pZCB1bm1hcmtFbmRPZlN0cmVhbSgpIG92
ZXJyaWRlOworICAgIGJvb2wgaXNFbmRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1faXNF
bmRlZDsgfQogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUp
IG92ZXJyaWRlOwogICAgIHZvaWQgd2FpdEZvclNlZWtDb21wbGV0ZWQoKSBvdmVycmlkZTsKQEAg
LTEyOSw3ICsxMzAsNyBAQCBwcml2YXRlOgogCiAgICAgZnJpZW5kIGNsYXNzIFNvdXJjZUJ1ZmZl
clByaXZhdGVBVkZPYmpDOwogCi0gICAgTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTb3VyY2VBVkZP
YmpDKiBtX3BsYXllcjsKKyAgICBXZWFrUHRyPE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU291cmNl
QVZGT2JqQz4gbV9wbGF5ZXI7CiAgICAgUmVmUHRyPE1lZGlhU291cmNlUHJpdmF0ZUNsaWVudD4g
bV9jbGllbnQ7CiAgICAgVmVjdG9yPFJlZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQz4+
IG1fc291cmNlQnVmZmVyczsKICAgICBWZWN0b3I8U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMq
PiBtX2FjdGl2ZVNvdXJjZUJ1ZmZlcnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpD
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQy5tbQppbmRleCBiMDAzOTMxYzdkNzU5ZjI5ZDllMDY2
ZmIxMjAyMzA3Y2Y1MjQ5NTY2Li41NmZkODk1MTljNGEyYmJmZTk5ODFkZjhkZDJmZDI1MDkzOWFh
NWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vb2JqYy9NZWRpYVNvdXJjZVByaXZhdGVBVkZPYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakMubW0KQEAgLTU0LDcgKzU0LDcgQEAgUmVmPE1lZGlhU291cmNlUHJpdmF0ZUFWRk9i
akM+IE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakM6OmNyZWF0ZShNZWRpYVBsYXllclByaXYKIH0K
IAogTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6TWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQyhN
ZWRpYVBsYXllclByaXZhdGVNZWRpYVNvdXJjZUFWRk9iakMqIHBhcmVudCwgTWVkaWFTb3VyY2VQ
cml2YXRlQ2xpZW50KiBjbGllbnQpCi0gICAgOiBtX3BsYXllcihwYXJlbnQpCisgICAgOiBtX3Bs
YXllcihtYWtlV2Vha1B0cihwYXJlbnQpKQogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwg
bV9pc0VuZGVkKGZhbHNlKQogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApAQCAtMTI4LDcgKzEy
OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQbGF0Zm9ybVRpbWVSYW5nZXM+IE1lZGlhU291cmNlUHJp
dmF0ZUFWRk9iakM6OmJ1ZmZlcmVkKCkKICAgICByZXR1cm4gbV9jbGllbnQtPmJ1ZmZlcmVkKCk7
CiB9CiAKLXZvaWQgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6ZHVyYXRpb25DaGFuZ2VkKCkK
K3ZvaWQgTWVkaWFTb3VyY2VQcml2YXRlQVZGT2JqQzo6ZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1l
ZGlhVGltZSYpCiB7CiAgICAgbV9wbGF5ZXItPmR1cmF0aW9uQ2hhbmdlZCgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5oCmluZGV4
IDU0NjUzMmJhMTllYTQ0ZjhmYWY0OWFkMTk3NTIxZjk3ZThlMWVlNjguLjBhYjJjZmU2OTA1OTdm
ZGE4OGQ3ZDNiNDE4Y2ZmNzVjYTk5NWU0MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9i
akMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLmgKQEAgLTI4LDggKzI4LDExIEBACiAjaWYg
RU5BQkxFKE1FRElBX1NPVVJDRSkKIAogI2luY2x1ZGUgIlNvdXJjZUJ1ZmZlclBhcnNlci5oIgor
I2luY2x1ZGUgPHd0Zi9Cb3guaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisjaW5jbHVkZSA8d3Rm
L3RocmVhZHMvQmluYXJ5U2VtYXBob3JlLmg+CiAKIE9CSkNfQ0xBU1MgQVZBc3NldDsKIE9CSkNf
Q0xBU1MgQVZTdHJlYW1EYXRhUGFyc2VyOwpAQCAtNzgsMTIgKzgxLDEzIEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2Rpc2NhcmRTYW1wbGVzVW50aWxOZXh0SW5pdGlhbGl6YXRpb25TZWdtZW50IHsg
ZmFsc2UgfTsKICAgICBib29sIG1fcGFyc2VyU3RhdGVXYXNSZXNldCB7IGZhbHNlIH07CiAKKyAg
ICBCb3g8QmluYXJ5U2VtYXBob3JlPiBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNl
bWFwaG9yZTsKKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgIFJlZlB0cjxjb25zdCBX
VEY6OkxvZ2dlcj4gbV9sb2dnZXI7CiAgICAgY29uc3Qgdm9pZCogbV9sb2dJZGVudGlmaWVyIHsg
bnVsbHB0ciB9OwogI2VuZGlmCiB9OwotCiB9CiAKIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVH
SU4oV2ViQ29yZTo6U291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZl
clBhcnNlckFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDLm1tCmluZGV4IDM1ZDlmNTUw
YzNiMjEwNDFhZWY3ZDJhNjQzYjhhYWM3YjRhMzk1NWIuLjg4OTVkZGU0YTU0N2QyYmUxZTFiOTU2
N2IzZDdmOGY5MjBlNDVjOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1NvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291
cmNlQnVmZmVyUGFyc2VyQVZGT2JqQy5tbQpAQCAtMjAwLDExICsyMDAsMTMgQEAgTWVkaWFQbGF5
ZXJFbnVtczo6U3VwcG9ydHNUeXBlIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmlzQ29udGVu
dFR5cGVTdXBwb3J0ZWQKIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OlNvdXJjZUJ1ZmZlclBh
cnNlckFWRk9iakMoKQogICAgIDogbV9wYXJzZXIoYWRvcHROUyhbUEFMOjphbGxvY0FWU3RyZWFt
RGF0YVBhcnNlckluc3RhbmNlKCkgaW5pdF0pKQogICAgICwgbV9kZWxlZ2F0ZShhZG9wdE5TKFtb
V2ViQVZTdHJlYW1EYXRhUGFyc2VyTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoUGFyc2VyOm1fcGFy
c2VyLmdldCgpIHBhcmVudDp0aGlzXSkpCisgICAgLCBtX2luaXRpYWxpemF0aW9uU2VnbWVudElz
SGFuZGxlZFNlbWFwaG9yZShCb3g8QmluYXJ5U2VtYXBob3JlPjo6Y3JlYXRlKCkpCiB7CiB9CiAK
IFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6On5Tb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDKCkK
IHsKKyAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZS0+c2lnbmFs
KCk7CiAgICAgbV9kZWxlZ2F0ZS5nZXQoKS5wYXJlbnQgPSBudWxscHRyOwogICAgIFttX2RlbGVn
YXRlIGludmFsaWRhdGVdOwogfQpAQCAtMjIyLDYgKzIyNCw3IEBAIHZvaWQgU291cmNlQnVmZmVy
UGFyc2VyQVZGT2JqQzo6YXBwZW5kRGF0YShWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRhLCBB
cHBlbmRGCiAKIHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6Zmx1c2hQZW5kaW5nTWVk
aWFEYXRhKCkKIHsKKyAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9y
ZS0+c2lnbmFsKCk7CiAgICAgW21fcGFyc2VyIHByb3ZpZGVQZW5kaW5nTWVkaWFEYXRhXTsKIH0K
IApAQCAtMjM5LDEwICsyNDIsMTQgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpy
ZXNldFBhcnNlclN0YXRlKCkKIHsKICAgICBtX3BhcnNlclN0YXRlV2FzUmVzZXQgPSB0cnVlOwog
ICAgIG1fZGlzY2FyZFNhbXBsZXNVbnRpbE5leHRJbml0aWFsaXphdGlvblNlZ21lbnQgPSB0cnVl
OworCisgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWRTZW1hcGhvcmUtPnNpZ25h
bCgpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclBhcnNlckFWRk9iakM6OmludmFsaWRhdGUoKQog
eworICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3JlLT5zaWduYWwo
KTsKKwogICAgIFttX2RlbGVnYXRlIGludmFsaWRhdGVdOwogICAgIG1fZGVsZWdhdGUgPSBudWxs
cHRyOwogICAgIG1fcGFyc2VyID0gbnVsbHB0cjsKQEAgLTI5NSw4ICszMDIsMTMgQEAgdm9pZCBT
b3VyY2VCdWZmZXJQYXJzZXJBVkZPYmpDOjpkaWRQYXJzZVN0cmVhbURhdGFBc0Fzc2V0KEFWQXNz
ZXQqIGFzc2V0KQogICAgICAgICAgICAgLy8gRklYTUUoMTI1MTYxKSAgICA6IEFkZCBUZXh0VHJh
Y2sgc3VwcG9ydAogICAgICAgICB9CiAKLSAgICAgICAgbV9kaWRQYXJzZUluaXRpYWxpemF0aW9u
RGF0YUNhbGxiYWNrKFdURk1vdmUoc2VnbWVudCkpOworICAgICAgICBtX2RpZFBhcnNlSW5pdGlh
bGl6YXRpb25EYXRhQ2FsbGJhY2soV1RGTW92ZShzZWdtZW50KSwgW3RoaXMsIHN0cm9uZ1RoaXMg
PSBtYWtlUmVmKCp0aGlzKV0geworICAgICAgICAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJ
c0hhbmRsZWRTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICB9KTsKICAgICB9KTsKKworICAg
IC8vIFdhaXQgdW50aWwgdGhlIGluaXRpYWxpemF0aW9uIHNlZ21lbnQgaXMgaGFuZGxlZAorICAg
IG1faW5pdGlhbGl6YXRpb25TZWdtZW50SXNIYW5kbGVkU2VtYXBob3JlLT53YWl0KCk7CiB9CiAK
IHZvaWQgU291cmNlQnVmZmVyUGFyc2VyQVZGT2JqQzo6ZGlkRmFpbFRvUGFyc2VTdHJlYW1EYXRh
V2l0aEVycm9yKE5TRXJyb3IqIGVycm9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L1NvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDLmgKaW5kZXggOGIxZWVhNjMwMDdlZDVjNGQwODc0
NDZlNzQzYjEzYTRjMWNjMDBiZC4uMWY2MjViM2M3OGU4M2U1MTE0NDgwMDliYmM0NDk1OGUzNjNh
ZDRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3Vu
ZGF0aW9uL29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQy5oCkBAIC05MSw5ICs5MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxQcm92
aWRlQ29udGVudEtleVJlcXVlc3RJbml0aWFsaXphdGlvbkRhdGFGb3JUcmFja0lEKHVpbnQ2NF90
IHRyYWNrSUQpOwogICAgIHZvaWQgZGlkUHJvdmlkZUNvbnRlbnRLZXlSZXF1ZXN0SW5pdGlhbGl6
YXRpb25EYXRhRm9yVHJhY2tJRChSZWY8VWludDhBcnJheT4mJiwgdWludDY0X3QgdHJhY2tJRCwg
Qm94PEJpbmFyeVNlbWFwaG9yZT4pOwogCi0gICAgYm9vbCBoYXNWaWRlbygpIGNvbnN0OwogICAg
IGJvb2wgaGFzU2VsZWN0ZWRWaWRlbygpIGNvbnN0OwotICAgIGJvb2wgaGFzQXVkaW8oKSBjb25z
dDsKIAogICAgIHZvaWQgdHJhY2tEaWRDaGFuZ2VTZWxlY3RlZChWaWRlb1RyYWNrUHJpdmF0ZSYs
IGJvb2wgc2VsZWN0ZWQpOwogICAgIHZvaWQgdHJhY2tEaWRDaGFuZ2VFbmFibGVkKEF1ZGlvVHJh
Y2tQcml2YXRlJiwgYm9vbCBlbmFibGVkKTsKQEAgLTE0MCw3ICsxMzgsNyBAQCBwcml2YXRlOgog
ICAgIGV4cGxpY2l0IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0
ZUFWRk9iakMqLCBSZWY8U291cmNlQnVmZmVyUGFyc2VyPiYmKTsKIAogICAgIHVzaW5nIEluaXRp
YWxpemF0aW9uU2VnbWVudCA9IFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0
aW9uU2VnbWVudDsKLSAgICB2b2lkIGRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKEluaXRpYWxp
emF0aW9uU2VnbWVudCYmKTsKKyAgICB2b2lkIGRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKElu
aXRpYWxpemF0aW9uU2VnbWVudCYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOwogICAg
IHZvaWQgZGlkRW5jb3VudGVyRXJyb3JEdXJpbmdQYXJzaW5nKGludDMyX3QpOwogICAgIHZvaWQg
ZGlkUHJvdmlkZU1lZGlhRGF0YUZvclRyYWNrSUQoUmVmPE1lZGlhU2FtcGxlPiYmLCB1aW50NjRf
dCB0cmFja0lELCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSk7CiAKQEAgLTE1NCw2ICsxNTIsNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgZmx1c2goY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkgZmlu
YWw7CiAgICAgdm9pZCBlbnF1ZXVlU2FtcGxlKFJlZjxNZWRpYVNhbXBsZT4mJiwgY29uc3QgQXRv
bVN0cmluZyYgdHJhY2tJRCkgZmluYWw7CiAgICAgYm9vbCBpc1JlYWR5Rm9yTW9yZVNhbXBsZXMo
Y29uc3QgQXRvbVN0cmluZyYgdHJhY2tJRCkgZmluYWw7CisgICAgTWVkaWFUaW1lIHRpbWVGdWRn
ZUZhY3RvcigpIGNvbnN0IGZpbmFsOwogICAgIHZvaWQgc2V0QWN0aXZlKGJvb2wpIGZpbmFsOwog
ICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIG5vdGlmeUNsaWVudFdo
ZW5SZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpIGZpbmFsOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2Jq
Qy5tbQppbmRleCA0ZDYxNDdlOTE2NDkyNGY0MmQ0ZGRlZjRhNmI2ZjgwYzZlNTJjMzhlLi5jNmVl
MTVmOGNhNzBhMzQ0MTFhYWFiNTMyZWM4MzlkZDJlOWQ3YjlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9Tb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQy5tbQpAQCAtMzA4LDEw
ICszMDgsMTQgQEAgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OlNvdXJjZUJ1ZmZlclByaXZh
dGVBVkZPYmpDKE1lZGlhU291cmNlUHJpdmF0ZUFWRk9iakMKIAogICAgIHNvdXJjZUJ1ZmZlck1h
cCgpLmFkZChtX21hcElELCBtYWtlV2Vha1B0cigqdGhpcykpOwogCi0gICAgbV9wYXJzZXItPnNl
dERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2soW3dlYWtUaGlzID0gbWFrZVdlYWtQ
dHIodGhpcyldIChJbml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50KSBtdXRhYmxlIHsKKyAg
ICBtX3BhcnNlci0+c2V0RGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjayhbdGhpcywg
d2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKV0gKEluaXRpYWxpemF0aW9uU2VnbWVudCYmIHNl
Z21lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgbXV0
YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgICAgIGlmICh3ZWFr
VGhpcykKLSAgICAgICAgICAgIHdlYWtUaGlzLT5kaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShX
VEZNb3ZlKHNlZ21lbnQpKTsKKyAgICAgICAgaWYgKCF3ZWFrVGhpcykgeworICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhKFdURk1vdmUoc2VnbWVudCksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICB9KTsKIAogICAgIG1fcGFyc2VyLT5zZXREaWRF
bmNvdW50ZXJFcnJvckR1cmluZ1BhcnNpbmdDYWxsYmFjayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0
cih0aGlzKV0gKGludDMyX3QgZXJyb3JDb2RlKSBtdXRhYmxlIHsKQEAgLTM0NCwxMiArMzQ4LDE0
IEBAIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjp+U291cmNlQnVmZmVyUHJpdmF0ZUFWRk9i
akMoKQogICAgICAgICBtX2hhc1Nlc3Npb25TZW1hcGhvcmUtPnNpZ25hbCgpOwogfQogCi12b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpkaWRQYXJzZUluaXRpYWxpemF0aW9uRGF0YShJ
bml0aWFsaXphdGlvblNlZ21lbnQmJiBzZWdtZW50KQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRl
QVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW50
JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewogICAgIEFMV0FZU19MT0coTE9HSURFTlRJRklFUik7CiAKLSAgICBpZiAoIW1fbWVkaWFT
b3VyY2UpCisgICAgaWYgKCFtX21lZGlhU291cmNlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBpZiAobV9tZWRpYVNvdXJjZS0+
cGxheWVyKCktPnNob3VsZENoZWNrSGFyZHdhcmVTdXBwb3J0KCkpIHsKICAgICAgICAgZm9yIChh
dXRvJiBpbmZvIDogc2VnbWVudC52aWRlb1RyYWNrcykgewpAQCAtMzU4LDYgKzM2NCw3IEBAIHZv
aWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRh
KEluaXRpYWxpemF0aW9uU2VnbWVuCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICBpZiAoIWNvZGVjc01lZXRIYXJkd2FyZURlY29kZVJlcXVpcmVtZW50cyh7eyAqY29kZWMg
fX0sIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpLT5tZWRpYUNvbnRlbnRUeXBlc1JlcXVpcmluZ0hh
cmR3YXJlU3VwcG9ydCgpKSkgewogICAgICAgICAgICAgICAgIG1fcGFyc2luZ1N1Y2NlZWRlZCA9
IGZhbHNlOworICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0zODQsNyArMzkxLDcg
QEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZGlkUGFyc2VJbml0aWFsaXphdGlv
bkRhdGEoSW5pdGlhbGl6YXRpb25TZWdtZW4KICAgICBpZiAobV9tZWRpYVNvdXJjZSkKICAgICAg
ICAgbV9tZWRpYVNvdXJjZS0+cGxheWVyKCktPmNoYXJhY3RlcmlzdGljc0NoYW5nZWQoKTsKIAot
ICAgIGRpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoc2VnbWVudCk7CisgICAgZGlkUmVj
ZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6OmRp
ZEVuY291bnRlckVycm9yRHVyaW5nUGFyc2luZyhpbnQzMl90IGNvZGUpCkBAIC01NzcsOCArNTg0
LDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6YXBwZW5kQ29tcGxldGVkKCkK
ICAgICBpZiAobV9wYXJzaW5nU3VjY2VlZGVkICYmIG1fbWVkaWFTb3VyY2UpCiAgICAgICAgIG1f
bWVkaWFTb3VyY2UtPnBsYXllcigpLT5zZXRMb2FkaW5nUHJvZ3Jlc3NzZWQodHJ1ZSk7CiAKLSAg
ICBpZiAobV9jbGllbnQpCi0gICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlQXBw
ZW5kQ29tcGxldGUobV9wYXJzaW5nU3VjY2VlZGVkID8gU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVu
dDo6QXBwZW5kUmVzdWx0OjpBcHBlbmRTdWNjZWVkZWQgOiBTb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50OjpBcHBlbmRSZXN1bHQ6OlBhcnNpbmdGYWlsZWQpOworICAgIFNvdXJjZUJ1ZmZlclByaXZh
dGU6OmFwcGVuZENvbXBsZXRlZChtX3BhcnNpbmdTdWNjZWVkZWQsIG1fbWVkaWFTb3VyY2UgPyBt
X21lZGlhU291cmNlLT5pc0VuZGVkKCkgOiB0cnVlKTsKIH0KIAogdm9pZCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6YWJvcnQoKQpAQCAtNTk2LDYgKzYwMiw5IEBAIHZvaWQgU291cmNlQnVm
ZmVyUHJpdmF0ZUFWRk9iakM6OmFib3J0KCkKICAgICAgICAgbV9hYm9ydFNlbWFwaG9yZS0+c2ln
bmFsKCk7CiAgICAgICAgIG1fYWJvcnRTZW1hcGhvcmUgPSBudWxscHRyOwogICAgIH0KKworICAg
IG1fcGFyc2VyLT5pbnZhbGlkYXRlKCk7CisKICAgICBkaXNwYXRjaF9ncm91cF93YWl0KG1faXNB
cHBlbmRpbmdHcm91cC5nZXQoKSwgRElTUEFUQ0hfVElNRV9GT1JFVkVSKTsKIH0KIApAQCAtNjgx
LDIxICs2OTAsMTEgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6c2V0UmVhZHlT
dGF0ZShNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXQKICAgICAgICAgbV9tZWRpYVNv
dXJjZS0+cGxheWVyKCktPnNldFJlYWR5U3RhdGUocmVhZHlTdGF0ZSk7CiB9CiAKLWJvb2wgU291
cmNlQnVmZmVyUHJpdmF0ZUFWRk9iakM6Omhhc1ZpZGVvKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9jbGllbnQgJiYgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVIYXNWaWRlbygpOwotfQot
CiBib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpoYXNTZWxlY3RlZFZpZGVvKCkgY29u
c3QKIHsKICAgICByZXR1cm4gbV9lbmFibGVkVmlkZW9UcmFja0lEICE9IG5vdEZvdW5kOwogfQog
Ci1ib29sIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpoYXNBdWRpbygpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fY2xpZW50ICYmIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlSGFzQXVk
aW8oKTsKLX0KLQogdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6dHJhY2tEaWRDaGFu
Z2VTZWxlY3RlZChWaWRlb1RyYWNrUHJpdmF0ZSYgdHJhY2ssIGJvb2wgc2VsZWN0ZWQpCiB7CiAg
ICAgYXV0byB0cmFja0lEID0gdHJhY2suaWQoKS5zdHJpbmcoKS50b1VJbnQ2NCgpOwpAQCAtMTA2
Miw3ICsxMDYxLDcgQEAgdm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlQVZGT2JqQzo6ZW5xdWV1ZVNh
bXBsZShSZWY8TWVkaWFTYW1wbGU+JiYgc2FtcGxlLCBjb25zdAogCiAgICAgICAgIGF1dG8gcmVu
ZGVyZXIgPSBtX2F1ZGlvUmVuZGVyZXJzLmdldCh0cmFja0lEKTsKICAgICAgICAgW3JlbmRlcmVy
IGVucXVldWVTYW1wbGVCdWZmZXI6cGxhdGZvcm1TYW1wbGUuc2FtcGxlLmNtU2FtcGxlQnVmZmVy
XTsKLSAgICAgICAgaWYgKG1fbWVkaWFTb3VyY2UgJiYgIXNhbXBsZS0+aXNOb25EaXNwbGF5aW5n
KCkpCisgICAgICAgIGlmIChtX21lZGlhU291cmNlICYmICFzYW1wbGUtPmlzTm9uRGlzcGxheWlu
ZygpICYmIG1fbWVkaWFTb3VyY2UtPnBsYXllcigpKQogICAgICAgICAgICAgbV9tZWRpYVNvdXJj
ZS0+cGxheWVyKCktPnNldEhhc0F2YWlsYWJsZUF1ZGlvU2FtcGxlKHJlbmRlcmVyLmdldCgpLCB0
cnVlKTsKICAgICB9CiB9CkBAIC0xMDkxLDYgKzEwOTAsMTQgQEAgYm9vbCBTb3VyY2VCdWZmZXJQ
cml2YXRlQVZGT2JqQzo6aXNSZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmIHRy
YWNrSUQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK01lZGlhVGltZSBTb3VyY2VCdWZmZXJQcml2
YXRlQVZGT2JqQzo6dGltZUZ1ZGdlRmFjdG9yKCkgY29uc3QKK3sKKyAgICBpZiAobV9tZWRpYVNv
dXJjZSkKKyAgICAgICAgcmV0dXJuIG1fbWVkaWFTb3VyY2UtPnRpbWVGdWRnZUZhY3RvcigpOwor
CisgICAgcmV0dXJuIFNvdXJjZUJ1ZmZlclByaXZhdGU6OnRpbWVGdWRnZUZhY3RvcigpOworfQor
CiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVBVkZPYmpDOjpzZXRBY3RpdmUoYm9vbCBpc0FjdGl2
ZSkKIHsKICAgICBBTFdBWVNfTE9HKExPR0lERU5USUZJRVIsIGlzQWN0aXZlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBh
cnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyLmgKaW5kZXggMGRjODFmMDZkMjdkY2QwOTczOWQwN2U0NTA3NThiNjM2MjlkNzFj
Ny4uZTEwY2RhYmM0N2E0NDVkMzFjYTkwZjliZjQ4MTJmZmM0YTAzMTE2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVm
ZmVyUGFyc2VyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJNZWRpYVBsYXllckVudW1z
LmgiCiAjaW5jbHVkZSAiU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1VpbnQ4QXJyYXkuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRs
ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKQEAg
LTY5LDcgKzcwLDcgQEAgcHVibGljOgogCiAgICAgLy8gV2lsbCBiZSBjYWxsZWQgb24gdGhlIG1h
aW4gdGhyZWFkLgogICAgIHVzaW5nIEluaXRpYWxpemF0aW9uU2VnbWVudCA9IFNvdXJjZUJ1ZmZl
clByaXZhdGVDbGllbnQ6OkluaXRpYWxpemF0aW9uU2VnbWVudDsKLSAgICB1c2luZyBEaWRQYXJz
ZUluaXRpYWxpemF0aW9uRGF0YUNhbGxiYWNrID0gV1RGOjpGdW5jdGlvbjx2b2lkKEluaXRpYWxp
emF0aW9uU2VnbWVudCYmKT47CisgICAgdXNpbmcgRGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFD
YWxsYmFjayA9IFdURjo6RnVuY3Rpb248dm9pZChJbml0aWFsaXphdGlvblNlZ21lbnQmJiwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKT47CiAgICAgdm9pZCBzZXREaWRQYXJzZUluaXRpYWxp
emF0aW9uRGF0YUNhbGxiYWNrKERpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2FsbGJhY2smJiBj
YWxsYmFjaykKICAgICB7CiAgICAgICAgIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxs
YmFjayA9IFdURk1vdmUoY2FsbGJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNw
cAppbmRleCA4NGJjNTc0ZGMwZjAzZjhmZmI0MzY4OTBmYzRhMWE1ZGVhYTllNjQxLi5iZTFlMDg2
ZTBhYzUyMzU0NjM2YTAwNmFiMzJkMWI5MmY0MGI0ZDgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQ
YXJzZXJXZWJNLmNwcApAQCAtNDkyLDEyICs0OTIsMTYgQEAgTWVkaWFQbGF5ZXJFbnVtczo6U3Vw
cG9ydHNUeXBlIFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OmlzQ29udGVudFR5cGVTdXBwb3J0ZWQo
Y28KIAogU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6U291cmNlQnVmZmVyUGFyc2VyV2ViTSgpCiAg
ICAgOiBtX3JlYWRlcihXVEY6Om1ha2VVbmlxdWVSZWY8U3RyZWFtaW5nVmVjdG9yUmVhZGVyPigp
KQorICAgICwgbV9pbml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWRTZW1hcGhvcmUoQm94PEJp
bmFyeVNlbWFwaG9yZT46OmNyZWF0ZSgpKQogewogICAgIGlmIChpc1dlYm1QYXJzZXJBdmFpbGFi
bGUoKSkKICAgICAgICAgbV9wYXJzZXIgPSBXVEY6Om1ha2VVbmlxdWVXaXRob3V0RmFzdE1hbGxv
Y0NoZWNrPFdlYm1QYXJzZXI+KCk7CiB9CiAKLVNvdXJjZUJ1ZmZlclBhcnNlcldlYk06On5Tb3Vy
Y2VCdWZmZXJQYXJzZXJXZWJNKCkgPSBkZWZhdWx0OworU291cmNlQnVmZmVyUGFyc2VyV2ViTTo6
flNvdXJjZUJ1ZmZlclBhcnNlcldlYk0oKQoreworICAgIG1faW5pdGlhbGl6YXRpb25TZWdtZW50
SXNIYW5kbGVkU2VtYXBob3JlLT5zaWduYWwoKTsKK30KIAogdm9pZCBTb3VyY2VCdWZmZXJQYXJz
ZXJXZWJNOjphcHBlbmREYXRhKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGJ1ZmZlciwgQXBwZW5k
RmxhZ3MgYXBwZW5kRmxhZ3MpCiB7CkBAIC01NTAsNyArNTU0LDcgQEAgdm9pZCBTb3VyY2VCdWZm
ZXJQYXJzZXJXZWJNOjphcHBlbmREYXRhKFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiYmIGJ1ZmZlciwg
QXBwZW5kRmwKIAogdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpmbHVzaFBlbmRpbmdNZWRp
YURhdGEoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9pbml0aWFsaXphdGlvblNl
Z21lbnRJc0hhbmRsZWRTZW1hcGhvcmUtPnNpZ25hbCgpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZl
clBhcnNlcldlYk06OnNldFNob3VsZFByb3ZpZGVNZWRpYURhdGFGb3JUcmFja0lEKGJvb2wsIHVp
bnQ2NF90KQpAQCAtNTczLDExICs1NzcsMTYgQEAgdm9pZCBTb3VyY2VCdWZmZXJQYXJzZXJXZWJN
OjpyZXNldFBhcnNlclN0YXRlKCkKICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudCA9IG51bGxw
dHI7CiAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnRFbmNvdW50ZXJlZCA9IGZhbHNlOwogICAg
IG1fY3VycmVudEJsb2NrLnJlc2V0KCk7CisKKyAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElz
SGFuZGxlZFNlbWFwaG9yZS0+c2lnbmFsKCk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUGFyc2Vy
V2ViTTo6aW52YWxpZGF0ZSgpCiB7CiAgICAgSU5GT19MT0dfSUZfUE9TU0lCTEUoTE9HSURFTlRJ
RklFUik7CisKKyAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNlbWFwaG9yZS0+
c2lnbmFsKCk7CisKICAgICBtX3BhcnNlciA9IG51bGxwdHI7CiAgICAgbV90cmFja3MuY2xlYXIo
KTsKICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudCA9IG51bGxwdHI7CkBAIC03MTYsOSArNzI1
LDE0IEBAIFN0YXR1cyBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpPbkNsdXN0ZXJCZWdpbihjb25z
dCBFbGVtZW50TWV0YWRhdGEmIG1ldGFkYXRhLCBjCiAgICAgICAgIHJldHVybiBTdGF0dXMoU3Rh
dHVzOjprTm90RW5vdWdoTWVtb3J5KTsKIAogICAgIGlmIChtX2luaXRpYWxpemF0aW9uU2VnbWVu
dEVuY291bnRlcmVkICYmIG1fZGlkUGFyc2VJbml0aWFsaXphdGlvbkRhdGFDYWxsYmFjaykgewot
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGluaXRpYWxpemF0aW9uU2VnbWVudCA9IFdURk1vdmUoKm1faW5pdGlhbGl6YXRpb25T
ZWdtZW50KV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6YXRp
b25EYXRhQ2FsbGJhY2soV1RGTW92ZShpbml0aWFsaXphdGlvblNlZ21lbnQpKTsKKyAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBp
bml0aWFsaXphdGlvblNlZ21lbnQgPSBXVEZNb3ZlKCptX2luaXRpYWxpemF0aW9uU2VnbWVudCld
KCkgbXV0YWJsZSB7CisgICAgICAgICAgICBtX2RpZFBhcnNlSW5pdGlhbGl6YXRpb25EYXRhQ2Fs
bGJhY2soV1RGTW92ZShpbml0aWFsaXphdGlvblNlZ21lbnQpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSB7CisgICAgICAgICAgICAgICAgbV9pbml0aWFsaXphdGlvblNl
Z21lbnRJc0hhbmRsZWRTZW1hcGhvcmUtPnNpZ25hbCgpOworICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0pOworCisgICAgICAgIC8vIFdhaXQgdW50aWwgdGhlIGluaXRpYWxpemF0aW9uIHNlZ21l
bnQgaXMgaGFuZGxlZAorICAgICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudElzSGFuZGxlZFNl
bWFwaG9yZS0+d2FpdCgpOwogICAgIH0KICAgICBtX2luaXRpYWxpemF0aW9uU2VnbWVudEVuY291
bnRlcmVkID0gZmFsc2U7CiAgICAgbV9pbml0aWFsaXphdGlvblNlZ21lbnQgPSBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNl
QnVmZmVyUGFyc2VyV2ViTS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29j
b2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5oCmluZGV4IDQ1YmQ2OWZmYjQ3MTJiZTUyNDVlNjI2
Y2ZiN2NkZTk4N2U4YWJhY2YuLjNhODQ2NDU5YTNlYjM1NTM2MTIxMjk3NmM4ZWFkZTQ2M2Q2M2Ix
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1Nv
dXJjZUJ1ZmZlclBhcnNlcldlYk0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlIDxjb21tb24vdnA5X2hlYWRlcl9wYXJzZXIuaD4KICNpbmNsdWRlIDx3ZWJtL2NhbGxi
YWNrLmg+CiAjaW5jbHVkZSA8d2VibS9zdGF0dXMuaD4KKyNpbmNsdWRlIDx3dGYvQm94Lmg+CiAj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KQEAgLTM4LDYgKzM5LDcgQEAKICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90aHJlYWRzL0JpbmFyeVNlbWFwaG9y
ZS5oPgogCiB0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TYW1wbGVCdWZm
ZXJSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uKiBD
TUZvcm1hdERlc2NyaXB0aW9uUmVmOwpAQCAtMTQxLDYgKzE0Myw4IEBAIHByaXZhdGU6CiAgICAg
T3B0aW9uYWw8QmxvY2tWYXJpYW50PiBtX2N1cnJlbnRCbG9jazsKICAgICBPcHRpb25hbDx1aW50
NjRfdD4gbV9yZXdpbmRUb1Bvc2l0aW9uOwogCisgICAgQm94PEJpbmFyeVNlbWFwaG9yZT4gbV9p
bml0aWFsaXphdGlvblNlZ21lbnRJc0hhbmRsZWRTZW1hcGhvcmU7CisKICNpZiAhUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICBSZWZQdHI8Y29uc3QgV1RGOjpMb2dnZXI+IG1fbG9nZ2VyOwogICAg
IGNvbnN0IHZvaWQqIG1fbG9nSWRlbnRpZmllciB7IG51bGxwdHIgfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VQ
cml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9tc2UvTWVkaWFTb3VyY2VQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA3NzFlYTA4
Y2VmNDQxYzU5ZDY4NGZjNWNlZGIzM2YwNmEzNmZjZjgxLi5lZmVmN2JhM2MyODJlZTY1MzA4ZTA1
NGUzMzc2YjRlNWEyZWRiMzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvbXNlL01lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNv
dXJjZVByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgTWVkaWFTb3Vy
Y2VQcml2YXRlR1N0cmVhbWVyOjpyZW1vdmVTb3VyY2VCdWZmZXIoU291cmNlQnVmZmVyUHJpdmF0
ZSogc291cmNlCiAgICAgbV9hY3RpdmVTb3VyY2VCdWZmZXJzLnJlbW92ZShzb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyLmdldCgpKTsKIH0KIAotdm9pZCBNZWRpYVNvdXJjZVByaXZhdGVHU3Ry
ZWFtZXI6OmR1cmF0aW9uQ2hhbmdlZCgpCit2b2lkIE1lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1l
cjo6ZHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpCiB7CiAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKIApAQCAtMTA5LDExICsxMDksMTMgQEAgdm9pZCBNZWRpYVNvdXJjZVByaXZh
dGVHU3RyZWFtZXI6Om1hcmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cyBzdGF0dXMpCiB7
CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBtX3BsYXllclByaXZhdGUubWFya0Vu
ZE9mU3RyZWFtKHN0YXR1cyk7CisgICAgbV9pc0VuZGVkID0gdHJ1ZTsKIH0KIAogdm9pZCBNZWRp
YVNvdXJjZVByaXZhdGVHU3RyZWFtZXI6OnVubWFya0VuZE9mU3RyZWFtKCkKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIG1faXNFbmRlZCA9IGZhbHNlOwogfQogCiBNZWRpYVBsYXllcjo6
UmVhZHlTdGF0ZSBNZWRpYVNvdXJjZVByaXZhdGVHU3RyZWFtZXI6OnJlYWR5U3RhdGUoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L21zZS9NZWRpYVNvdXJjZVByaXZhdGVHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvTWVkaWFTb3VyY2VQcml2YXRlR1N0cmVhbWVyLmgK
aW5kZXggMjUyNGFhMGY5YmY3NWNlY2RmNzgzNjIzN2QxNDI0N2EzYzI0NmVhZi4uMzRjZjcwYjcy
M2Q3ZGFlODFjMGRkNzRjMDUyZDI3Y2U2ZjRiZTUyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9NZWRpYVNvdXJjZVByaXZhdGVHU3Ry
ZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL01lZGlhU291cmNlUHJpdmF0ZUdTdHJlYW1lci5oCkBAIC02MSw5ICs2MSwxMCBAQCBwdWJs
aWM6CiAgICAgQWRkU3RhdHVzIGFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDb250ZW50VHlwZSYsIFJl
ZlB0cjxTb3VyY2VCdWZmZXJQcml2YXRlPiYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlU291
cmNlQnVmZmVyKFNvdXJjZUJ1ZmZlclByaXZhdGUqKTsKIAotICAgIHZvaWQgZHVyYXRpb25DaGFu
Z2VkKCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1l
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBtYXJrRW5kT2ZTdHJlYW0oRW5kT2ZTdHJlYW1TdGF0dXMp
IG92ZXJyaWRlOwogICAgIHZvaWQgdW5tYXJrRW5kT2ZTdHJlYW0oKSBvdmVycmlkZTsKKyAgICBi
b29sIGlzRW5kZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzRW5kZWQ7IH0KIAogICAg
IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpIG92ZXJyaWRlOwpA
QCAtOTQsNiArOTUsNyBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8U291cmNlQnVmZmVyUHJpdmF0
ZUdTdHJlYW1lcio+IG1fYWN0aXZlU291cmNlQnVmZmVyczsKICAgICBSZWY8TWVkaWFTb3VyY2VQ
cml2YXRlQ2xpZW50PiBtX21lZGlhU291cmNlOwogICAgIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lck1TRSYgbV9wbGF5ZXJQcml2YXRlOworICAgIGJvb2wgbV9pc0VuZGVkIHsgZmFsc2UgfTsK
ICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICBSZWY8Y29uc3QgTG9nZ2VyPiBtX2xvZ2dl
cjsKICAgICBjb25zdCB2b2lkKiBtX2xvZ0lkZW50aWZpZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNvdXJjZVByaXZhdGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFT
b3VyY2VQcml2YXRlLmNwcAppbmRleCA5YjRkMWY4MjEwMDFjYzU5YmY4NzA4YWNmNzgyNTZhMjkx
YzU2ZjFjLi45NzlhODFkM2I5MGNiNjYwYWU3N2JhYWIyOGRhMGVjOTZjYjM5MjAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tNZWRpYVNv
dXJjZVByaXZhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFz
b3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFBsYXRmb3JtVGltZVJhbmdlcz4gTW9ja01lZGlhU291cmNlUHJpdmF0ZTo6YnVm
ZmVyZWQoKQogICAgIHJldHVybiBtX2NsaWVudC0+YnVmZmVyZWQoKTsKIH0KIAotdm9pZCBNb2Nr
TWVkaWFTb3VyY2VQcml2YXRlOjpkdXJhdGlvbkNoYW5nZWQoKQordm9pZCBNb2NrTWVkaWFTb3Vy
Y2VQcml2YXRlOjpkdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJikKIHsKICAgICBtX3Bs
YXllci51cGRhdGVEdXJhdGlvbihkdXJhdGlvbigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2UvTW9ja01lZGlhU291cmNlUHJpdmF0ZS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3Vy
Y2VQcml2YXRlLmgKaW5kZXggN2E2OTNhZWQzNWNhNmM5YzkzNjkxMDJhYTU1MjRmZTMwZmFkNDQw
MS4uZTNkOTgwN2M2YjE1MjFmYzliMDRlNjRiMTY5ZjVlZWRkNDY0NTE5OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrTWVkaWFTb3VyY2VQ
cml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9N
b2NrTWVkaWFTb3VyY2VQcml2YXRlLmgKQEAgLTgwLDggKzgwLDkgQEAgcHJpdmF0ZToKIAogICAg
IC8vIE1lZGlhU291cmNlUHJpdmF0ZSBPdmVycmlkZXMKICAgICBBZGRTdGF0dXMgYWRkU291cmNl
QnVmZmVyKGNvbnN0IENvbnRlbnRUeXBlJiwgUmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGU+Jikg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQoKSBvdmVycmlkZTsKKyAgICB2b2lk
IGR1cmF0aW9uQ2hhbmdlZChjb25zdCBNZWRpYVRpbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIG1h
cmtFbmRPZlN0cmVhbShFbmRPZlN0cmVhbVN0YXR1cykgb3ZlcnJpZGU7CisgICAgYm9vbCBpc0Vu
ZGVkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9pc0VuZGVkOyB9CiAgICAgdm9pZCB1bm1h
cmtFbmRPZlN0cmVhbSgpIG92ZXJyaWRlOwogICAgIE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlIHJl
YWR5U3RhdGUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFJlYWR5U3RhdGUoTWVkaWFQ
bGF5ZXI6OlJlYWR5U3RhdGUpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlLmNwcAppbmRleCAyZmM5MGQzNTRmNmI5NjdjNWM5NTAyN2IyMjNlNGEzNTc4MDBmMzBh
Li5jNjExMDY1YzM4ZjZiOTBkMmRhNDIxNzdiOTU0Mjc0ZmU4N2EyYTFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQ
cml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21lZGlhc291cmNl
L01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgTW9j
a1NvdXJjZUJ1ZmZlclByaXZhdGU6OmFwcGVuZChWZWN0b3I8dW5zaWduZWQgY2hhcj4mJiBkYXRh
KQogCiAgICAgd2hpbGUgKG1faW5wdXRCdWZmZXIuc2l6ZSgpICYmIHJlc3VsdCA9PSBTb3VyY2VC
dWZmZXJQcml2YXRlQ2xpZW50OjpBcHBlbmRSZXN1bHQ6OkFwcGVuZFN1Y2NlZWRlZCkgewogICAg
ICAgICBhdXRvIGJ1ZmZlciA9IEFycmF5QnVmZmVyOjpjcmVhdGUobV9pbnB1dEJ1ZmZlci5kYXRh
KCksIG1faW5wdXRCdWZmZXIuc2l6ZSgpKTsKLSAgICAgICAgc2l6ZV90IGJveExlbmd0aCA9IE1v
Y2tCb3g6OnBlZWtMZW5ndGgoYnVmZmVyLnB0cigpKTsKKyAgICAgICAgdWludDY0X3QgYm94TGVu
Z3RoID0gTW9ja0JveDo6cGVla0xlbmd0aChidWZmZXIucHRyKCkpOwogICAgICAgICBpZiAoYm94
TGVuZ3RoID4gYnVmZmVyLT5ieXRlTGVuZ3RoKCkpCiAgICAgICAgICAgICBicmVhazsKIApAQCAt
MTU5LDYgKzE1OSwxMCBAQCB2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjphcHBlbmQoVmVj
dG9yPHVuc2lnbmVkIGNoYXI+JiYgZGF0YSkKICAgICAgICAgbV9pbnB1dEJ1ZmZlci5yZW1vdmUo
MCwgYm94TGVuZ3RoKTsKICAgICB9CiAKKyAgICAvLyBSZXNvbHZlIHRoZSBjaGFuZ2VzIGluIFRy
YWNrQnVmZmVycycgYnVmZmVyZWQgcmFuZ2VzCisgICAgLy8gaW50byB0aGUgU291cmNlQnVmZmVy
J3MgYnVmZmVyZWQgcmFuZ2VzCisgICAgdXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKG1f
bWVkaWFTb3VyY2UtPmlzRW5kZWQoKSk7CisKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1f
Y2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUocmVzdWx0KTsKIH0KQEAg
LTE5MSw3ICsxOTUsNyBAQCB2b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZl
SW5pdGlhbGl6YXRpb25TZWdtZW50KGNvbnN0IE1vY2tJbml0aWFsaQogICAgICAgICB9CiAgICAg
fQogCi0gICAgU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2Vn
bWVudChzZWdtZW50KTsKKyAgICBTb3VyY2VCdWZmZXJQcml2YXRlOjpkaWRSZWNlaXZlSW5pdGlh
bGl6YXRpb25TZWdtZW50KFdURk1vdmUoc2VnbWVudCksIFtdKCkgeyB9KTsKIH0KIAogdm9pZCBN
b2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6ZGlkUmVjZWl2ZVNhbXBsZShjb25zdCBNb2NrU2FtcGxl
Qm94JiBzYW1wbGVCb3gpCkBAIC0yNDksNyArMjUzLDcgQEAgTWVkaWFUaW1lIE1vY2tTb3VyY2VC
dWZmZXJQcml2YXRlOjptaW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lRm9yVHJhY2tJRChj
b24KICAgICByZXR1cm4gbV9taW5pbXVtVXBjb21pbmdQcmVzZW50YXRpb25UaW1lOwogfQogCi12
b2lkIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpzZXRNYXhpbXVtUXVldWVEZXB0aEZvclRyYWNr
SUQoY29uc3QgQXRvbVN0cmluZyYsIHNpemVfdCBtYXhRdWV1ZURlcHRoKQordm9pZCBNb2NrU291
cmNlQnVmZmVyUHJpdmF0ZTo6c2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JUcmFja0lEKGNvbnN0IEF0
b21TdHJpbmcmLCB1aW50NjRfdCBtYXhRdWV1ZURlcHRoKQogewogICAgIG1fbWF4UXVldWVEZXB0
aCA9IG1heFF1ZXVlRGVwdGg7CiB9CkBAIC0zMjIsMTYgKzMyNiw2IEBAIHZvaWQgTW9ja1NvdXJj
ZUJ1ZmZlclByaXZhdGU6OmVucXVldWVTYW1wbGUoUmVmPE1lZGlhU2FtcGxlPiYmIHNhbXBsZSwg
Y29uc3QgQXRvCiAgICAgbV9lbnF1ZXVlZFNhbXBsZXMuYXBwZW5kKHRvU3RyaW5nKHNhbXBsZS5n
ZXQoKSkpOwogfQogCi1ib29sIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpoYXNWaWRlbygpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fY2xpZW50ICYmIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2
YXRlSGFzVmlkZW8oKTsKLX0KLQotYm9vbCBNb2NrU291cmNlQnVmZmVyUHJpdmF0ZTo6aGFzQXVk
aW8oKSBjb25zdAotewotICAgIHJldHVybiBtX2NsaWVudCAmJiBtX2NsaWVudC0+c291cmNlQnVm
ZmVyUHJpdmF0ZUhhc0F1ZGlvKCk7Ci19Ci0KICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKIFdU
RkxvZ0NoYW5uZWwmIE1vY2tTb3VyY2VCdWZmZXJQcml2YXRlOjpsb2dDaGFubmVsKCkgY29uc3QK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svbWVkaWFzb3VyY2Uv
TW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2sv
bWVkaWFzb3VyY2UvTW9ja1NvdXJjZUJ1ZmZlclByaXZhdGUuaAppbmRleCBiNmM1NDdkZDk1YzFm
NmIwYmRkZDJlNDExYWYxNDJiMzk4ZmRmZmU1Li44YjJhMTM4OTQ2YzI4ZjJmM2U3ZGViZmU3MzY1
Y2NjN2JhZmJhM2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL21l
ZGlhc291cmNlL01vY2tTb3VyY2VCdWZmZXJQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbW9jay9tZWRpYXNvdXJjZS9Nb2NrU291cmNlQnVmZmVyUHJpdmF0ZS5oCkBAIC00
Niw5ICs0Niw2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2xlYXJNZWRpYVNvdXJjZSgpIHsgbV9t
ZWRpYVNvdXJjZSA9IG51bGxwdHI7IH0KIAotICAgIGJvb2wgaGFzVmlkZW8oKSBjb25zdDsKLSAg
ICBib29sIGhhc0F1ZGlvKCkgY29uc3Q7Ci0KIHByaXZhdGU6CiAgICAgZXhwbGljaXQgTW9ja1Nv
dXJjZUJ1ZmZlclByaXZhdGUoTW9ja01lZGlhU291cmNlUHJpdmF0ZSopOwogCkBAIC03NSw3ICs3
Miw3IEBAIHByaXZhdGU6CiAKICAgICBWZWN0b3I8U3RyaW5nPiBlbnF1ZXVlZFNhbXBsZXNGb3JU
cmFja0lEKGNvbnN0IEF0b21TdHJpbmcmKSBmaW5hbDsKICAgICBNZWRpYVRpbWUgbWluaW11bVVw
Y29taW5nUHJlc2VudGF0aW9uVGltZUZvclRyYWNrSUQoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFs
OwotICAgIHZvaWQgc2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JUcmFja0lEKGNvbnN0IEF0b21TdHJp
bmcmLCBzaXplX3QpIGZpbmFsOworICAgIHZvaWQgc2V0TWF4aW11bVF1ZXVlRGVwdGhGb3JUcmFj
a0lEKGNvbnN0IEF0b21TdHJpbmcmLCB1aW50NjRfdCkgZmluYWw7CiAKICAgICB2b2lkIGRpZFJl
Y2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgTW9ja0luaXRpYWxpemF0aW9uQm94Jik7
CiAgICAgdm9pZCBkaWRSZWNlaXZlU2FtcGxlKGNvbnN0IE1vY2tTYW1wbGVCb3gmKTsKQEAgLTk0
LDcgKzkxLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNBY3RpdmUgeyBmYWxzZSB9OwogICAg
IE1lZGlhVGltZSBtX21pbmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWU7CiAgICAgVmVjdG9y
PFN0cmluZz4gbV9lbnF1ZXVlZFNhbXBsZXM7Ci0gICAgT3B0aW9uYWw8c2l6ZV90PiBtX21heFF1
ZXVlRGVwdGg7CisgICAgT3B0aW9uYWw8dWludDY0X3Q+IG1fbWF4UXVldWVEZXB0aDsKICAgICBW
ZWN0b3I8Y2hhcj4gbV9pbnB1dEJ1ZmZlcjsKIAogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZUF1ZGlvVHJh
Y2tQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9U
cmFja1Byb3h5LmNwcAppbmRleCA5M2UyZjI3ZDgyZThmOTI0Zjc4NWM1MGE2NTA1MDVhZGI2YTM2
NzI2Li5lYWU5M2U3M2FiMGM1NzYzODBkNDU4Yzc5NDQ5MWEwNjYxMGI5N2I2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlQXVkaW9UcmFja1By
b3h5LmNwcApAQCAtNjAsNyArNjAsNyBAQCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9u
JiBSZW1vdGVBdWRpb1RyYWNrUHJveHk6OmNvbmZpZ3VyYXRpb24oKQogewogICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uPiBjb25maWd1cmF0
aW9uOwogCi0gICAgY29uZmlndXJhdGlvbi0+aWRlbnRpZmllciA9IG1fdHJhY2tQcml2YXRlLT5p
ZCgpOworICAgIGNvbmZpZ3VyYXRpb24tPnRyYWNrSWQgPSBtX3RyYWNrUHJpdmF0ZS0+aWQoKTsK
ICAgICBjb25maWd1cmF0aW9uLT5sYWJlbCA9IG1fdHJhY2tQcml2YXRlLT5sYWJlbCgpOwogICAg
IGNvbmZpZ3VyYXRpb24tPmxhbmd1YWdlID0gbV90cmFja1ByaXZhdGUtPmxhbmd1YWdlKCk7CiAg
ICAgY29uZmlndXJhdGlvbi0+dHJhY2tJbmRleCA9IG1fdHJhY2tQcml2YXRlLT50cmFja0luZGV4
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eS5jcHAKaW5kZXggYzNiMDczNGE0ZWY5OGQyYTdlNzM5MGVhOTgwM2Uz
ZTAzNmI3ZWM1Mi4uNDJlZTc5YmIwNmU0NzUyNWRhYjM1NDI2ZDNhZGJhMTU4YTYzYTFjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVy
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRp
YVBsYXllclByb3h5LmNwcApAQCAtMTM0LDEwICsxMzQsMTQgQEAgdm9pZCBSZW1vdGVNZWRpYVBs
YXllclByb3h5Ojpsb2FkKFVSTCYmIHVybCwgT3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlPiYKIH0KIAogI2lmIEVOQUJMRShNRURJQV9TT1VSQ0UpCi12b2lkIFJlbW90ZU1lZGlhUGxh
eWVyUHJveHk6OmxvYWRNZWRpYVNvdXJjZShVUkwmJiB1cmwsIGNvbnN0IFdlYkNvcmU6OkNvbnRl
bnRUeXBlJiBjb250ZW50VHlwZSwgUmVtb3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyIG1lZGlhU291
cmNlSWRlbnRpZmllcikKK3ZvaWQgUmVtb3RlTWVkaWFQbGF5ZXJQcm94eTo6bG9hZE1lZGlhU291
cmNlKFVSTCYmIHVybCwgY29uc3QgV2ViQ29yZTo6Q29udGVudFR5cGUmIGNvbnRlbnRUeXBlLCBS
ZW1vdGVNZWRpYVNvdXJjZUlkZW50aWZpZXIgbWVkaWFTb3VyY2VJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmlndXJhdGlvbiYmKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKICAgICBtX21lZGlhU291cmNlUHJveHkgPSBhZG9wdFJlZigqbmV3
IFJlbW90ZU1lZGlhU291cmNlUHJveHkobV9tYW5hZ2VyLmdwdUNvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MoKSwgbWVkaWFTb3VyY2VJZGVudGlmaWVyLCAqdGhpcykpOwogICAgIG1fcGxheWVyLT5sb2Fk
KHVybCwgY29udGVudFR5cGUsIG1fbWVkaWFTb3VyY2VQcm94eS5nZXQoKSk7CisKKyAgICBSZW1v
dGVNZWRpYVBsYXllckNvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsKKyAgICBnZXRDb25maWd1
cmF0aW9uKGNvbmZpZ3VyYXRpb24pOworICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUoY29u
ZmlndXJhdGlvbikpOwogfQogI2VuZGlmCiAKQEAgLTc1OSw3ICs3NjMsOCBAQCB2b2lkIFJlbW90
ZU1lZGlhUGxheWVyUHJveHk6OnVwZGF0ZUNhY2hlZFN0YXRlKCkKIAogICAgIGlmIChtX2J1ZmZl
cmVkQ2hhbmdlZCkgewogICAgICAgICBtX2J1ZmZlcmVkQ2hhbmdlZCA9IGZhbHNlOwotICAgICAg
ICBtX2NhY2hlZFN0YXRlLmJ1ZmZlcmVkUmFuZ2VzID0gKm1fcGxheWVyLT5idWZmZXJlZCgpOwor
ICAgICAgICBpZiAobV9lbmdpbmVJZGVudGlmaWVyICE9IE1lZGlhUGxheWVyRW51bXM6Ok1lZGlh
RW5naW5lSWRlbnRpZmllcjo6QVZGb3VuZGF0aW9uTVNFKQorICAgICAgICAgICAgbV9jYWNoZWRT
dGF0ZS5idWZmZXJlZFJhbmdlcyA9ICptX3BsYXllci0+YnVmZmVyZWQoKTsKICAgICB9CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBs
YXllclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5oCmluZGV4IGI4MjQ3NzEzYWRhZjFjNDUzZWE0YzY1ODFkYWQ0M2JiMWUwYzIw
NjYuLmFlNmFkOGI0NjBiOWY2YmRiM2IwMDQwZjc4MGJmMTk1ZjQ0OWJjZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVBsYXllclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkuaApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbG9hZChVUkwmJiwg
T3B0aW9uYWw8U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlPiYmLCBjb25zdCBXZWJDb3JlOjpDb250
ZW50VHlwZSYsIGNvbnN0IFN0cmluZyYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVtb3RlTWVk
aWFQbGF5ZXJDb25maWd1cmF0aW9uJiYpPiYmKTsKICNpZiBFTkFCTEUoTUVESUFfU09VUkNFKQot
ICAgIHZvaWQgbG9hZE1lZGlhU291cmNlKFVSTCYmLCBjb25zdCBXZWJDb3JlOjpDb250ZW50VHlw
ZSYsIFJlbW90ZU1lZGlhU291cmNlSWRlbnRpZmllcik7CisgICAgdm9pZCBsb2FkTWVkaWFTb3Vy
Y2UoVVJMJiYsIGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiwgUmVtb3RlTWVkaWFTb3VyY2VJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlbW90ZU1lZGlhUGxheWVyQ29uZmln
dXJhdGlvbiYmKT4mJik7CiAjZW5kaWYKICAgICB2b2lkIGNhbmNlbExvYWQoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhUGxheWVyUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVk
aWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCAwOGVhMTVjYzY2YjJlYTlkMDcwZGE2YmI3
MWY4OGI3NDUxY2YwMTU4Li4yY2RlMDgwNDlhZGVkYjRjNjE2OTU2OTRiMGI4OWI1ZWYwZmExMDM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFQ
bGF5ZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVk
aWEvUmVtb3RlTWVkaWFQbGF5ZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjgsNyArMjgsNyBAQCBt
ZXNzYWdlcyAtPiBSZW1vdGVNZWRpYVBsYXllclByb3h5IE5vdFJlZkNvdW50ZWQgewogCiAgICAg
TG9hZChVUkwgdXJsLCBPcHRpb25hbDxXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZT4g
c2FuZGJveEV4dGVuc2lvbiwgV2ViQ29yZTo6Q29udGVudFR5cGUgY29udGVudFR5cGUsIFN0cmlu
ZyBrZXlTeXN0ZW0pIC0+IChzdHJ1Y3QgV2ViS2l0OjpSZW1vdGVNZWRpYVBsYXllckNvbmZpZ3Vy
YXRpb24gcGxheWVyQ29uZmlndXJhdGlvbikgQXN5bmMKICNpZiBFTkFCTEUoTUVESUFfU09VUkNF
KQotICAgIExvYWRNZWRpYVNvdXJjZShVUkwgdXJsLCBXZWJDb3JlOjpDb250ZW50VHlwZSBjb250
ZW50VHlwZSwgV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZUlkZW50aWZpZXIgbWVkaWFTb3VyY2VJ
ZGVudGlmaWVyKSBTeW5jaHJvbm91cworICAgIExvYWRNZWRpYVNvdXJjZShVUkwgdXJsLCBXZWJD
b3JlOjpDb250ZW50VHlwZSBjb250ZW50VHlwZSwgV2ViS2l0OjpSZW1vdGVNZWRpYVNvdXJjZUlk
ZW50aWZpZXIgbWVkaWFTb3VyY2VJZGVudGlmaWVyKSAtPiAoc3RydWN0IFdlYktpdDo6UmVtb3Rl
TWVkaWFQbGF5ZXJDb25maWd1cmF0aW9uIHBsYXllckNvbmZpZ3VyYXRpb24pIEFzeW5jCiAjZW5k
aWYKICAgICBDYW5jZWxMb2FkKCkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9j
ZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQ
cm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuY3BwCmluZGV4IDQ5OWJkNjFjMmY3
ODIyMjNmYTM4ZmM5N2IxODJmYTZkMmI5MzgxZGUuLjJlNDgyZGViNjVkZjM2NGRhZmM5NDdjZWUy
Yjc1NDVkZTMzZThiZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nl
c3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5jcHAKQEAgLTYxLDEzICs2MSwxMiBAQCB2
b2lkIFJlbW90ZU1lZGlhU291cmNlUHJveHk6OnNldFByaXZhdGVBbmRPcGVuKFJlZjxNZWRpYVNv
dXJjZVByaXZhdGU+JiYgbWVkaWFTbwogCiBNZWRpYVRpbWUgUmVtb3RlTWVkaWFTb3VyY2VQcm94
eTo6ZHVyYXRpb24oKSBjb25zdAogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
IHsgfTsKKyAgICByZXR1cm4gbV9kdXJhdGlvbjsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPFBsYXRm
b3JtVGltZVJhbmdlcz4gUmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6YnVmZmVyZWQoKSBjb25zdAog
ewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIG1ha2VVbmlxdWU8UGxhdGZvcm1UaW1lUmFuZ2VzPigpOwogfQogCkBAIC0xMTIsNiAr
MTExLDIyIEBAIHZvaWQgUmVtb3RlTWVkaWFTb3VyY2VQcm94eTo6YWRkU291cmNlQnVmZmVyKGNv
bnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJiBjb250ZW50CiAgICAgY2FsbGJhY2soc3RhdHVzLCBy
ZW1vdGVTb3VyY2VJZGVudGlmaWVyKTsKIH0KIAordm9pZCBSZW1vdGVNZWRpYVNvdXJjZVByb3h5
OjpkdXJhdGlvbkNoYW5nZWQoY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbikKK3sKKyAgICBpZiAo
bV9kdXJhdGlvbiA9PSBkdXJhdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kdXJhdGlv
biA9IGR1cmF0aW9uOworICAgIGlmIChtX3ByaXZhdGUpCisgICAgICAgIG1fcHJpdmF0ZS0+ZHVy
YXRpb25DaGFuZ2VkKGR1cmF0aW9uKTsKK30KKwordm9pZCBSZW1vdGVNZWRpYVNvdXJjZVByb3h5
OjpzZXRSZWFkeVN0YXRlKFdlYkNvcmU6Ok1lZGlhUGxheWVyRW51bXM6OlJlYWR5U3RhdGUgcmVh
ZHlTdGF0ZSkKK3sKKyAgICBpZiAobV9wcml2YXRlKQorICAgICAgICBtX3ByaXZhdGUtPnNldFJl
YWR5U3RhdGUocmVhZHlTdGF0ZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5k
aWYgLy8gRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVBy
b3h5LmgKaW5kZXggNTk2OGM3YmJkMTg5Y2Q0NzllZjRhZWFiNGQ0NDk5NTMzZmQzZDY1Yi4uOTU5
MzQ0OWQzYjVlNWNmZWQ5NmI1MTVlODE3ZTAzZGEwY2NhMDhmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZU1lZGlhU291cmNlUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3VyY2VQcm94eS5oCkBA
IC03NiwxNyArNzYsMjEgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIElQQzo6TWVzc2Fn
ZVJlY2VpdmVyCi0gICAgLy8gdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24m
LCBJUEM6OkRlY29kZXImKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5
bmNNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0
cjxJUEM6OkVuY29kZXI+JikgZmluYWw7CiAKLSAgICB1c2luZyBBZGRTb3VyY2VCdWZmZXJDYWxs
YmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRl
OjpBZGRTdGF0dXMsIE9wdGlvbmFsPFJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXI+IHJlbW90
ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpPjsKKyAgICB1c2luZyBBZGRTb3VyY2VCdWZmZXJDYWxs
YmFjayA9IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRl
OjpBZGRTdGF0dXMsIE9wdGlvbmFsPFJlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXI+KT47CiAg
ICAgdm9pZCBhZGRTb3VyY2VCdWZmZXIoY29uc3QgV2ViQ29yZTo6Q29udGVudFR5cGUmLCBBZGRT
b3VyY2VCdWZmZXJDYWxsYmFjayYmKTsKKyAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZChjb25zdCBN
ZWRpYVRpbWUmKTsKKyAgICB2b2lkIHNldFJlYWR5U3RhdGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXJF
bnVtczo6UmVhZHlTdGF0ZSk7CiAKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3M7CiAgICAgUmVtb3RlTWVkaWFTb3VyY2VJZGVudGlmaWVyIG1f
aWRlbnRpZmllcjsKICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlPiBtX3By
aXZhdGU7CiAgICAgV2Vha1B0cjxSZW1vdGVNZWRpYVBsYXllclByb3h5PiBtX3JlbW90ZU1lZGlh
UGxheWVyUHJveHk7CiAKKyAgICBNZWRpYVRpbWUgbV9kdXJhdGlvbjsKKwogICAgIFZlY3RvcjxS
ZWZQdHI8UmVtb3RlU291cmNlQnVmZmVyUHJveHk+PiBtX3NvdXJjZUJ1ZmZlcnM7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlTWVkaWFTb3Vy
Y2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVNZWRpYVNvdXJjZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGNhNmI3NTJkNzcwNjBkZWNjYjlk
YzNiYzc5NjQ4OWY0ZWM5MjBkYWQuLmQ5OTkxMjY4OGViYjBkNTlhZGNkYjUzN2NlODM1ZWZlNzk2
ZTlmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVN
ZWRpYVNvdXJjZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9SZW1vdGVNZWRpYVNvdXJjZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC0yNyw2ICsyNyw4
IEBACiAKIG1lc3NhZ2VzIC0+IFJlbW90ZU1lZGlhU291cmNlUHJveHkgTm90UmVmQ291bnRlZCB7
CiAgICAgQWRkU291cmNlQnVmZmVyKFdlYkNvcmU6OkNvbnRlbnRUeXBlIGNvbnRlbnRUeXBlKSAt
PiAoZW51bTp1aW50OF90IFdlYkNvcmU6Ok1lZGlhU291cmNlUHJpdmF0ZTo6QWRkU3RhdHVzIHN0
YXR1cywgT3B0aW9uYWw8V2ViS2l0OjpSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyPiByZW1v
dGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyKSBTeW5jaHJvbm91cworICAgIER1cmF0aW9uQ2hhbmdl
ZChNZWRpYVRpbWUgZHVyYXRpb24pCisgICAgU2V0UmVhZHlTdGF0ZShXZWJDb3JlOjpNZWRpYVBs
YXllckVudW1zOjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eS5jcHAKaW5kZXggMjY1YjczYjZhNGRmMzUzZjQ1M2RiNzIzY2MzMjk4YmM3ODViMmM3NC4u
ODQ3MzNmYzBhYjQ5YjYzNTU3NzE5MGE4YmFlOTJlZGNkYjg2MWZkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlU291cmNlQnVmZmVyUHJv
eHkuY3BwCkBAIC0zNCw3ICszNCw5IEBACiAjaW5jbHVkZSAiUmVtb3RlTWVkaWFQbGF5ZXJQcm94
eS5oIgogI2luY2x1ZGUgIlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5TWVzc2FnZXMuaCIKICNpbmNs
dWRlICJTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlTWVzc2FnZXMuaCIKKyNpbmNsdWRlIDxXZWJD
b3JlL01lZGlhRGVzY3JpcHRpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9QbGF0Zm9ybVRpbWVSYW5nZXMuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKQEAgLTU0LDE0ICs1NiwxNiBAQCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6
UmVtb3RlU291cmNlQnVmZmVyUHJveHkoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYgY29ubgog
ewogICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlUmVjZWl2ZXJNYXAoKS5hZGRN
ZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjptZXNzYWdl
UmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50b1VJbnQ2NCgpLCAqdGhpcyk7CiAgICAgbV9z
b3VyY2VCdWZmZXJQcml2YXRlLT5zZXRDbGllbnQodGhpcyk7CisgICAgbV9zb3VyY2VCdWZmZXJQ
cml2YXRlLT5zZXRJc0F0dGFjaGVkKHRydWUpOwogfQogCiBSZW1vdGVTb3VyY2VCdWZmZXJQcm94
eTo6flJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5KCkKIHsKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZh
dGUtPnNldElzQXR0YWNoZWQoZmFsc2UpOwogICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5t
ZXNzYWdlUmVjZWl2ZXJNYXAoKS5yZW1vdmVNZXNzYWdlUmVjZWl2ZXIoTWVzc2FnZXM6OlJlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1faWRlbnRpZmllci50
b1VJbnQ2NCgpKTsKIH0KIAotdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVm
ZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgSW5pdGlhbGl6
YXRpb25TZWdtZW50JiBzZWdtZW50KQordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291
cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlhbGl6
YXRpb25TZWdtZW50JiYgc2VnbWVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbV9yZW1vdGVNZWRpYVBsYXllclByb3h5KQogICAg
ICAgICByZXR1cm47CkBAIC03MSwxOSArNzUsMzQgQEAgdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQ
cm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQK
ICAgICBmb3IgKGF1dG8mIGF1ZGlvVHJhY2tJbmZvIDogc2VnbWVudC5hdWRpb1RyYWNrcykgewog
ICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX3JlbW90ZU1lZGlhUGxheWVyUHJveHktPmFkZFJl
bW90ZUF1ZGlvVHJhY2tQcm94eSgqYXVkaW9UcmFja0luZm8udHJhY2spOwogICAgICAgICBzZWdt
ZW50SW5mby5hdWRpb1RyYWNrcy5hcHBlbmQoeyBNZWRpYURlc2NyaXB0aW9uSW5mbygqYXVkaW9U
cmFja0luZm8uZGVzY3JpcHRpb24pLCBpZGVudGlmaWVyIH0pOworCisgICAgICAgIEFTU0VSVCgh
bV90cmFja0lkcy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgICAgIEFTU0VSVCghbV9tZWRp
YURlc2NyaXB0aW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgICAgIG1fdHJhY2tJZHMu
YWRkKGlkZW50aWZpZXIsIGF1ZGlvVHJhY2tJbmZvLnRyYWNrLT5pZCgpKTsKKyAgICAgICAgbV9t
ZWRpYURlc2NyaXB0aW9ucy5hZGQoaWRlbnRpZmllciwgKmF1ZGlvVHJhY2tJbmZvLmRlc2NyaXB0
aW9uKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIHZpZGVvVHJhY2tJbmZvIDogc2VnbWVudC52
aWRlb1RyYWNrcykgewogICAgICAgICBhdXRvIGlkZW50aWZpZXIgPSBtX3JlbW90ZU1lZGlhUGxh
eWVyUHJveHktPmFkZFJlbW90ZVZpZGVvVHJhY2tQcm94eSgqdmlkZW9UcmFja0luZm8udHJhY2sp
OwogICAgICAgICBzZWdtZW50SW5mby52aWRlb1RyYWNrcy5hcHBlbmQoeyBNZWRpYURlc2NyaXB0
aW9uSW5mbygqdmlkZW9UcmFja0luZm8uZGVzY3JpcHRpb24pLCBpZGVudGlmaWVyIH0pOworCisg
ICAgICAgIEFTU0VSVCghbV90cmFja0lkcy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgICAg
IEFTU0VSVCghbV9tZWRpYURlc2NyaXB0aW9ucy5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAg
ICAgIG1fdHJhY2tJZHMuYWRkKGlkZW50aWZpZXIsIHZpZGVvVHJhY2tJbmZvLnRyYWNrLT5pZCgp
KTsKKyAgICAgICAgbV9tZWRpYURlc2NyaXB0aW9ucy5hZGQoaWRlbnRpZmllciwgKnZpZGVvVHJh
Y2tJbmZvLmRlc2NyaXB0aW9uKTsKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIHRleHRUcmFja0lu
Zm8gOiBzZWdtZW50LnRleHRUcmFja3MpIHsKICAgICAgICAgYXV0byBpZGVudGlmaWVyID0gbV9y
ZW1vdGVNZWRpYVBsYXllclByb3h5LT5hZGRSZW1vdGVUZXh0VHJhY2tQcm94eSgqdGV4dFRyYWNr
SW5mby50cmFjayk7CiAgICAgICAgIHNlZ21lbnRJbmZvLnRleHRUcmFja3MuYXBwZW5kKHsgTWVk
aWFEZXNjcmlwdGlvbkluZm8oKnRleHRUcmFja0luZm8uZGVzY3JpcHRpb24pLCBpZGVudGlmaWVy
IH0pOworCisgICAgICAgIEFTU0VSVCghbV90cmFja0lkcy5jb250YWlucyhpZGVudGlmaWVyKSk7
CisgICAgICAgIEFTU0VSVCghbV9tZWRpYURlc2NyaXB0aW9ucy5jb250YWlucyhpZGVudGlmaWVy
KSk7CisgICAgICAgIG1fdHJhY2tJZHMuYWRkKGlkZW50aWZpZXIsIHRleHRUcmFja0luZm8udHJh
Y2stPmlkKCkpOworICAgICAgICBtX21lZGlhRGVzY3JpcHRpb25zLmFkZChpZGVudGlmaWVyLCAq
dGV4dFRyYWNrSW5mby5kZXNjcmlwdGlvbik7CiAgICAgfQogCi0gICAgbV9jb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRl
UmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVu
dChzZWdtZW50SW5mbyksIG1faWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9j
ZXNzLmNvbm5lY3Rpb24oKS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlNvdXJjZUJ1ZmZl
clByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRp
b25TZWdtZW50KHNlZ21lbnRJbmZvKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1faWRl
bnRpZmllcik7CiB9CiAKIHZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZl
clByaXZhdGVBcHBlbmRFcnJvcihib29sKQpAQCAtOTEsMTQgKzExMCwxNCBAQCB2b2lkIFJlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kRXJyb3IoYm9vbCkK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5
Ojpzb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYpCit2
b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25D
aGFuZ2VkKGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24pCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICBtX2Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY29ubmVjdGlvbigpLnNlbmQoTWVzc2Fn
ZXM6OlNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OlNvdXJjZUJ1ZmZlclByaXZhdGVEdXJhdGlv
bkNoYW5nZWQoZHVyYXRpb24pLCBtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFJlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoZG91YmxlKQor
dm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNl
U2FtcGxlKGRvdWJsZSBzYW1wbGVEdXJhdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZURpZFBhcnNlU2Ft
cGxlKHNhbXBsZUR1cmF0aW9uKSwgbV9pZGVudGlmaWVyKTsKIH0KIAogdm9pZCBSZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZERyb3BTYW1wbGUoKQpAQCAtMTEx
LDI2ICsxMzAsMjQgQEAgdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVy
UHJpdmF0ZVN0cmVhbUVuZGVkV2l0aERlY29kZUVycm9yKCkKICAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQogCi1ib29sIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRl
SGFzQXVkaW8oKSBjb25zdAordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVm
ZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKFNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVu
ZFJlc3VsdCBhcHBlbmRSZXN1bHQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1
cm4gZmFsc2U7CisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5k
KE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRl
QXBwZW5kQ29tcGxldGUoYXBwZW5kUmVzdWx0KSwgbV9pZGVudGlmaWVyKTsKIH0KIAotYm9vbCBS
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6c291cmNlQnVmZmVyUHJpdmF0ZUhhc1ZpZGVvKCkgY29u
c3QKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRS
ZWNlaXZlUmVuZGVyaW5nRXJyb3IoaW50IGVycm9yQ29kZSkKIHsKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94
eTo6c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKFNvdXJjZUJ1ZmZlclByaXZhdGVD
bGllbnQ6OkFwcGVuZFJlc3VsdCBhcHBlbmRSZXN1bHQpCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZl
clByb3h5Ojpzb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCBmbGFn
KQogewotICAgIG1fY29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jb25uZWN0aW9uKCkuc2VuZChNZXNz
YWdlczo6U291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUFwcGVu
ZENvbXBsZXRlKGFwcGVuZFJlc3VsdCksIG1faWRlbnRpZmllcik7CisgICAgbV9jb25uZWN0aW9u
VG9XZWJQcm9jZXNzLmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2
YXRlUmVtb3RlOjpTb3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoZmxhZyks
IG1faWRlbnRpZmllcik7CiB9CiAKLXZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJj
ZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlUmVuZGVyaW5nRXJyb3IoaW50IGVycm9yQ29kZSkKK3Zv
aWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJh
bmdlc0NoYW5nZWQoY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9jb25uZWN0aW9uVG9XZWJQcm9jZXNzLmNvbm5lY3Rp
b24oKS5zZW5kKE1lc3NhZ2VzOjpTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2VkKHRpbWVSYW5nZXMpLCBtX2lkZW50aWZpZXIp
OwogfQogCiB2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjphcHBlbmQoY29uc3QgSVBDOjpE
YXRhUmVmZXJlbmNlJiBkYXRhKQpAQCAtMTM4LDYgKzE1NSw0MyBAQCB2b2lkIFJlbW90ZVNvdXJj
ZUJ1ZmZlclByb3h5OjphcHBlbmQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBkYXRhKQogICAg
IG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+YXBwZW5kKGRhdGEudmVjdG9yKCkpOwogfQogCit2b2lk
IFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpzZXRBY3RpdmUoYm9vbCBhY3RpdmUpCit7CisgICAg
bV9zb3VyY2VCdWZmZXJQcml2YXRlLT5zZXRBY3RpdmUoYWN0aXZlKTsKK30KKwordm9pZCBSZW1v
dGVTb3VyY2VCdWZmZXJQcm94eTo6c2V0UmVhZHlTdGF0ZShXZWJDb3JlOjpNZWRpYVBsYXllcjo6
UmVhZHlTdGF0ZSBzdGF0ZSkKK3sKKyAgICBtX3NvdXJjZUJ1ZmZlclByaXZhdGUtPnNldFJlYWR5
U3RhdGUoc3RhdGUpOworfQorCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Ojp1cGRhdGVC
dWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVkKQoreworICAgIG1fc291
cmNlQnVmZmVyUHJpdmF0ZS0+dXBkYXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKHNvdXJjZUlz
RW5kZWQpOworfQorCit2b2lkIFJlbW90ZVNvdXJjZUJ1ZmZlclByb3h5OjpldmljdENvZGVkRnJh
bWVzKHVpbnQ2NF90IG5ld0RhdGFTaXplLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFj
aXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSwgY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50
VGltZSwgY29uc3QgTWVkaWFUaW1lJiBkdXJhdGlvbiwgYm9vbCBpc0VuZGVkKQoreworICAgIG1f
c291cmNlQnVmZmVyUHJpdmF0ZS0+ZXZpY3RDb2RlZEZyYW1lcyhuZXdEYXRhU2l6ZSwgcGVuZGlu
Z0FwcGVuZERhdGFDYXBhY2l0eSwgbWF4aW11bUJ1ZmZlclNpemUsIGN1cnJlbnRUaW1lLCBkdXJh
dGlvbiwgaXNFbmRlZCk7Cit9CisKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OmFkZFRy
YWNrQnVmZmVyKFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgdHJhY2tQcml2YXRlUmVtb3Rl
SWRlbnRpZmllcikKK3sKKyAgICBBU1NFUlQobV90cmFja0lkcy5jb250YWlucyh0cmFja1ByaXZh
dGVSZW1vdGVJZGVudGlmaWVyKSk7CisgICAgQVNTRVJUKG1fbWVkaWFEZXNjcmlwdGlvbnMuY29u
dGFpbnModHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllcikpOworICAgIG1fc291cmNlQnVmZmVy
UHJpdmF0ZS0+YWRkVHJhY2tCdWZmZXIobV90cmFja0lkcy5nZXQodHJhY2tQcml2YXRlUmVtb3Rl
SWRlbnRpZmllciksIG1fbWVkaWFEZXNjcmlwdGlvbnMuZ2V0KHRyYWNrUHJpdmF0ZVJlbW90ZUlk
ZW50aWZpZXIpKTsKK30KKwordm9pZCBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6cmVlbnF1ZXVl
TWVkaWFJZk5lZWRlZChjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRNZWRpYVRpbWUsIHVpbnQ2NF90
IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplKQor
eworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+cmVlbnF1ZXVlTWVkaWFJZk5lZWRlZChjdXJy
ZW50TWVkaWFUaW1lLCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCBtYXhpbXVtQnVmZmVyU2l6
ZSk7Cit9CisKK3ZvaWQgUmVtb3RlU291cmNlQnVmZmVyUHJveHk6OnRyeVNpZ25hbEFsbFNhbXBs
ZXNJblRyYWNrRW5xdWV1ZWQoKQoreworICAgIG1fc291cmNlQnVmZmVyUHJpdmF0ZS0+dHJ5U2ln
bmFsQWxsU2FtcGxlc0luVHJhY2tFbnF1ZXVlZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI2VuZGlmIC8vIEVOQUJMRShHUFVfUFJPQ0VTUykgJiYgRU5BQkxFKE1FRElBX1NPVVJD
RSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3Vy
Y2VCdWZmZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5LmgKaW5kZXggYmM5Zjk5ZGZiN2EyMzBiNTg5YWUzNDJlNWNkMDQ3NzA3
NWYwMjEzOC4uNmVjZDhiY2Y2OGVlYjdmY2FiMTE1YzY5Y2ExYzE0ZGZkYzUyYjUxZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclBy
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1
ZmZlclByb3h5LmgKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlICJHUFVDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyLmgiCiAjaW5jbHVkZSAiUmVt
b3RlU291cmNlQnVmZmVySWRlbnRpZmllci5oIgorI2luY2x1ZGUgIlRyYWNrUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL01lZGlhRGVzY3JpcHRpb24uaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1NvdXJjZUJ1ZmZlclByaXZhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CkBAIC00
MywxMCArNDUsMTIgQEAgY2xhc3MgRGF0YVJlZmVyZW5jZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgTWVkaWFTYW1wbGU7CitjbGFzcyBQbGF0Zm9ybVRpbWVSYW5nZXM7CiB9CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCitzdHJ1Y3QgTWVkaWFEZXNjcmlwdGlvbkluZm87CiBjbGFzcyBS
ZW1vdGVNZWRpYVBsYXllclByb3h5OwogCiBjbGFzcyBSZW1vdGVTb3VyY2VCdWZmZXJQcm94eSBm
aW5hbApAQCAtNTgsMTYgKzYyLDE2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFJlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5PiBjcmVhdGUoR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyYsIFJlbW90
ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRl
PiYmLCBSZW1vdGVNZWRpYVBsYXllclByb3h5Jik7CiAgICAgdmlydHVhbCB+UmVtb3RlU291cmNl
QnVmZmVyUHJveHkoKTsKIAotICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJ
bml0aWFsaXphdGlvblNlZ21lbnQoY29uc3QgSW5pdGlhbGl6YXRpb25TZWdtZW50JikgZmluYWw7
CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2Vn
bWVudChJbml0aWFsaXphdGlvblNlZ21lbnQmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
KSBmaW5hbDsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVTdHJlYW1FbmRlZFdpdGhEZWNv
ZGVFcnJvcigpIGZpbmFsOwogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZEVycm9y
KGJvb2wgZGVjb2RlRXJyb3IpIGZpbmFsOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUFw
cGVuZENvbXBsZXRlKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJl
c3VsdCkgZmluYWw7CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25DaGFuZ2Vk
KGNvbnN0IE1lZGlhVGltZSYpIGZpbmFsOwogICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZURp
ZFBhcnNlU2FtcGxlKGRvdWJsZSBzYW1wbGVEdXJhdGlvbikgZmluYWw7CiAgICAgdm9pZCBzb3Vy
Y2VCdWZmZXJQcml2YXRlRGlkRHJvcFNhbXBsZSgpIGZpbmFsOwotICAgIHZvaWQgc291cmNlQnVm
ZmVyUHJpdmF0ZVN0cmVhbUVuZGVkV2l0aERlY29kZUVycm9yKCkgZmluYWw7Ci0gICAgYm9vbCBz
b3VyY2VCdWZmZXJQcml2YXRlSGFzQXVkaW8oKSBjb25zdCBmaW5hbDsKLSAgICBib29sIHNvdXJj
ZUJ1ZmZlclByaXZhdGVIYXNWaWRlbygpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgc291cmNlQnVm
ZmVyUHJpdmF0ZUJ1ZmZlcmVkRGlydHlDaGFuZ2VkKGJvb2wpIGZpbmFsOworICAgIHZvaWQgc291
cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChjb25zdCBXZWJDb3JlOjpQbGF0
Zm9ybVRpbWVSYW5nZXMmKSBmaW5hbDsKIAotICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUFw
cGVuZENvbXBsZXRlKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVDbGllbnQ6OkFwcGVuZFJl
c3VsdCkgZmluYWw7CiAgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRlRGlkUmVjZWl2ZVJlbmRl
cmluZ0Vycm9yKGludCBlcnJvckNvZGUpIGZpbmFsOwogCiBwcml2YXRlOgpAQCAtNzcsMTIgKzgx
LDIyIEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShJUEM6OkNvbm5lY3Rp
b24mLCBJUEM6OkRlY29kZXImKSBmaW5hbDsKICAgICAvLyB2b2lkIGRpZFJlY2VpdmVTeW5jTWVz
c2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6OnVuaXF1ZV9wdHI8SVBD
OjpFbmNvZGVyPiYpIGZpbmFsOwogCisgICAgdm9pZCBzZXRBY3RpdmUoYm9vbCk7CiAgICAgdm9p
ZCBhcHBlbmQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJik7CisgICAgdm9pZCBzZXRSZWFkeVN0
YXRlKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpSZWFkeVN0YXRlKTsKKyAgICB2b2lkIHVwZGF0ZUJ1
ZmZlcmVkRnJvbVRyYWNrQnVmZmVycyhib29sIHNvdXJjZUlzRW5kZWQpOworICAgIHZvaWQgZXZp
Y3RDb2RlZEZyYW1lcyh1aW50NjRfdCBuZXdEYXRhU2l6ZSwgdWludDY0X3QgcGVuZGluZ0FwcGVu
ZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUsIGNvbnN0IE1lZGlhVGlt
ZSYgY3VycmVudFRpbWUsIGNvbnN0IE1lZGlhVGltZSYgZHVyYXRpb24sIGJvb2wgaXNFbmRlZCk7
CisgICAgdm9pZCBhZGRUcmFja0J1ZmZlcihUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaWVyKTsK
KyAgICB2b2lkIHJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQoY29uc3QgTWVkaWFUaW1lJiBjdXJyZW50
TWVkaWFUaW1lLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBt
YXhpbXVtQnVmZmVyU2l6ZSk7CisgICAgdm9pZCB0cnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0Vu
cXVldWVkKCk7CiAKICAgICBHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzJiBtX2Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3M7CiAgICAgUmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllciBtX2lkZW50aWZp
ZXI7CiAgICAgUmVmPFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU+IG1fc291cmNlQnVmZmVy
UHJpdmF0ZTsKICAgICBXZWFrUHRyPFJlbW90ZU1lZGlhUGxheWVyUHJveHk+IG1fcmVtb3RlTWVk
aWFQbGF5ZXJQcm94eTsKKworICAgIEhhc2hNYXA8VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmll
ciwgQXRvbVN0cmluZz4gbV90cmFja0lkczsKKyAgICBIYXNoTWFwPFRyYWNrUHJpdmF0ZVJlbW90
ZUlkZW50aWZpZXIsIFJlZjxXZWJDb3JlOjpNZWRpYURlc2NyaXB0aW9uPj4gbV9tZWRpYURlc2Ny
aXB0aW9uczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclByb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVNvdXJjZUJ1ZmZlclBy
b3h5Lm1lc3NhZ2VzLmluCmluZGV4IGEwOGZmMDFkYTMwZDA2N2I5ZTQxZmI1YTExM2U3YmE0M2Zl
MGUwMTcuLmY0MWZkZTRlNzlmYTcwOWMyMzhkYzI3NzQ2ZDkwODRmZjgwMTRhN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVTb3VyY2VCdWZmZXJQcm94
eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3Rl
U291cmNlQnVmZmVyUHJveHkubWVzc2FnZXMuaW4KQEAgLTI2LDcgKzI2LDE0IEBACiAjaWYgRU5B
QkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCiBtZXNzYWdlcyAtPiBS
ZW1vdGVTb3VyY2VCdWZmZXJQcm94eSBOb3RSZWZDb3VudGVkIHsKKyAgICBTZXRBY3RpdmUoYm9v
bCBhY3RpdmUpCiAgICAgQXBwZW5kKElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhKQorICAgIFNldFJl
YWR5U3RhdGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgc3RhdGUpCisgICAgVXBk
YXRlQnVmZmVyZWRGcm9tVHJhY2tCdWZmZXJzKGJvb2wgc291cmNlSXNFbmRlZCkKKyAgICBFdmlj
dENvZGVkRnJhbWVzKHVpbnQ2NF90IG5ld0RhdGFTaXplLCB1aW50NjRfdCBwZW5kaW5nQXBwZW5k
RGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSwgTWVkaWFUaW1lIGN1cnJl
bnRUaW1lLCBNZWRpYVRpbWUgZHVyYXRpb24sIGJvb2wgaXNFbmRlZCkKKyAgICBBZGRUcmFja0J1
ZmZlcihXZWJLaXQ6OlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgdHJhY2tJZCkKKyAgICBS
ZWVucXVldWVNZWRpYUlmTmVlZGVkKE1lZGlhVGltZSBjdXJyZW50TWVkaWFUaW1lLCB1aW50NjRf
dCBwZW5kaW5nQXBwZW5kRGF0YUNhcGFjaXR5LCB1aW50NjRfdCBtYXhpbXVtQnVmZmVyU2l6ZSkK
KyAgICBUcnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKCkKIH0KIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNr
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFj
a1Byb3h5LmNwcAppbmRleCA2NzQ0OGU5YTc0OGYxOGFkYTQ1MjU5MDliYTJjZDMxNDBiMjI1MWVk
Li4xMzIxNWE2NzM5N2MwY2NmODg3NGZiNGFhZjEwMDgzZDMwYjEyMWE1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5j
cHAKQEAgLTY0LDcgKzY0LDcgQEAgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24m
IFJlbW90ZVRleHRUcmFja1Byb3h5Ojpjb25maWd1cmF0aW9uKCkKIHsKICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8VGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24+IGNvbmZpZ3Vy
YXRpb247CiAKLSAgICBjb25maWd1cmF0aW9uLT5pZGVudGlmaWVyID0gbV90cmFja1ByaXZhdGUt
PmlkKCk7CisgICAgY29uZmlndXJhdGlvbi0+dHJhY2tJZCA9IG1fdHJhY2tQcml2YXRlLT5pZCgp
OwogICAgIGNvbmZpZ3VyYXRpb24tPmxhYmVsID0gbV90cmFja1ByaXZhdGUtPmxhYmVsKCk7CiAg
ICAgY29uZmlndXJhdGlvbi0+bGFuZ3VhZ2UgPSBtX3RyYWNrUHJpdmF0ZS0+bGFuZ3VhZ2UoKTsK
ICAgICBjb25maWd1cmF0aW9uLT50cmFja0luZGV4ID0gbV90cmFja1ByaXZhdGUtPnRyYWNrSW5k
ZXgoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVW
aWRlb1RyYWNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90
ZVZpZGVvVHJhY2tQcm94eS5jcHAKaW5kZXggMzUwZjhlYTczMDdiZDIzN2FhODNmNmNjOTQ1YjU2
MTBkZjZmMWM3MS4uYjkyYTg0ZTNhOWI2OGFjNmM0ZjJhZjM0MjZhZWQ3YTc5NDEyZGFjNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVvVHJhY2tQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVZpZGVv
VHJhY2tQcm94eS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmln
dXJhdGlvbiYgUmVtb3RlVmlkZW9UcmFja1Byb3h5Ojpjb25maWd1cmF0aW9uKCkKIHsKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbj4gY29u
ZmlndXJhdGlvbjsKIAotICAgIGNvbmZpZ3VyYXRpb24tPmlkZW50aWZpZXIgPSBtX3RyYWNrUHJp
dmF0ZS0+aWQoKTsKKyAgICBjb25maWd1cmF0aW9uLT50cmFja0lkID0gbV90cmFja1ByaXZhdGUt
PmlkKCk7CiAgICAgY29uZmlndXJhdGlvbi0+bGFiZWwgPSBtX3RyYWNrUHJpdmF0ZS0+bGFiZWwo
KTsKICAgICBjb25maWd1cmF0aW9uLT5sYW5ndWFnZSA9IG1fdHJhY2tQcml2YXRlLT5sYW5ndWFn
ZSgpOwogICAgIGNvbmZpZ3VyYXRpb24tPnRyYWNrSW5kZXggPSBtX3RyYWNrUHJpdmF0ZS0+dHJh
Y2tJbmRleCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Rl
eHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaAppbmRleCBj
MTM5Y2ZjMTRiNDcxZmIyNThkYmJlODE4MmIzZDVjNjIxNjJiNTkyLi42NTYwNWIwMWExMjg2YzMx
Mjk3ZWJjNjBjZTBmYzg1MDViNTIyZWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVBy
b2Nlc3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZp
Z3VyYXRpb24uaApAQCAtMzQsNyArMzQsNyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIHN0cnVj
dCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7Ci0gICAgQXRvbVN0cmluZyBp
ZGVudGlmaWVyOworICAgIEF0b21TdHJpbmcgdHJhY2tJZDsKICAgICBBdG9tU3RyaW5nIGxhYmVs
OwogICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2U7CiAgICAgQXRvbVN0cmluZyBpbkJhbmRNZXRhZGF0
YVRyYWNrRGlzcGF0Y2hUeXBlOwpAQCAtNTUsNyArNTUsNyBAQCBzdHJ1Y3QgVGV4dFRyYWNrUHJp
dmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24gewogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CiAg
ICAgdm9pZCBlbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICB7Ci0gICAgICAgIGVu
Y29kZXIgPDwgaWRlbnRpZmllcjsKKyAgICAgICAgZW5jb2RlciA8PCB0cmFja0lkOwogICAgICAg
ICBlbmNvZGVyIDw8IGxhYmVsOwogICAgICAgICBlbmNvZGVyIDw8IGxhbmd1YWdlOwogICAgICAg
ICBlbmNvZGVyIDw8IGluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGU7CkBAIC03NSw5ICs3
NSw5IEBAIHN0cnVjdCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbiB7CiAgICAg
dGVtcGxhdGUgPGNsYXNzIERlY29kZXI+CiAgICAgc3RhdGljIE9wdGlvbmFsPFRleHRUcmFja1By
aXZhdGVSZW1vdGVDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKICAgICB7
Ci0gICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IGlkZW50aWZpZXI7Ci0gICAgICAgIGRlY29k
ZXIgPj4gaWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFpZGVudGlmaWVyKQorICAgICAgICBPcHRp
b25hbDxBdG9tU3RyaW5nPiB0cmFja0lkOworICAgICAgICBkZWNvZGVyID4+IHRyYWNrSWQ7Cisg
ICAgICAgIGlmICghdHJhY2tJZCkKICAgICAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAK
ICAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gbGFiZWw7CkBAIC0xNTEsNyArMTUxLDcgQEAg
c3RydWN0IFRleHRUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uIHsKICAgICAgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CiAKICAgICAgICAgcmV0dXJuIHt7Ci0gICAgICAgICAgICBX
VEZNb3ZlKCppZGVudGlmaWVyKSwKKyAgICAgICAgICAgIFdURk1vdmUoKnRyYWNrSWQpLAogICAg
ICAgICAgICAgV1RGTW92ZSgqbGFiZWwpLAogICAgICAgICAgICAgV1RGTW92ZSgqbGFuZ3VhZ2Up
LAogICAgICAgICAgICAgV1RGTW92ZSgqaW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZSks
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVHJhY2tQcml2YXRl
UmVtb3RlQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Ry
YWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24uaAppbmRleCA0NDQyMmIzMDE0ZjIwMjIxNmJl
ZDZhNTdhM2Y4ZWRkNzk0OGU5MjQ2Li5hOGYwNWQxOGZkOTk4OGViYjk5Yzc2NzNiNjg3YTY3MGQ5
MmUwMTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvVHJhY2tQ
cml2YXRlUmVtb3RlQ29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vz
cy9tZWRpYS9UcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uLmgKQEAgLTM0LDcgKzM0LDcg
QEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBzdHJ1Y3QgVHJhY2tQcml2YXRlUmVtb3RlQ29uZmln
dXJhdGlvbiB7Ci0gICAgQXRvbVN0cmluZyBpZGVudGlmaWVyOworICAgIEF0b21TdHJpbmcgdHJh
Y2tJZDsKICAgICBBdG9tU3RyaW5nIGxhYmVsOwogICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2U7CiAg
ICAgTWVkaWFUaW1lIHN0YXJ0VGltZVZhcmlhbmNlIHsgTWVkaWFUaW1lOjp6ZXJvVGltZSgpIH07
CkBAIC00OSw3ICs0OSw3IEBAIHN0cnVjdCBUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9u
IHsKICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiAgICAgewotICAgICAgICBlbmNvZGVyIDw8IGlkZW50aWZpZXI7Cisg
ICAgICAgIGVuY29kZXIgPDwgdHJhY2tJZDsKICAgICAgICAgZW5jb2RlciA8PCBsYWJlbDsKICAg
ICAgICAgZW5jb2RlciA8PCBsYW5ndWFnZTsKICAgICAgICAgZW5jb2RlciA8PCBzdGFydFRpbWVW
YXJpYW5jZTsKQEAgLTYzLDkgKzYzLDkgQEAgc3RydWN0IFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZp
Z3VyYXRpb24gewogICAgIHRlbXBsYXRlIDxjbGFzcyBEZWNvZGVyPgogICAgIHN0YXRpYyBPcHRp
b25hbDxUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uPiBkZWNvZGUoRGVjb2RlciYgZGVj
b2RlcikKICAgICB7Ci0gICAgICAgIE9wdGlvbmFsPEF0b21TdHJpbmc+IGlkZW50aWZpZXI7Ci0g
ICAgICAgIGRlY29kZXIgPj4gaWRlbnRpZmllcjsKLSAgICAgICAgaWYgKCFpZGVudGlmaWVyKQor
ICAgICAgICBPcHRpb25hbDxBdG9tU3RyaW5nPiB0cmFja0lkOworICAgICAgICBkZWNvZGVyID4+
IHRyYWNrSWQ7CisgICAgICAgIGlmICghdHJhY2tJZCkKICAgICAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CiAKICAgICAgICAgT3B0aW9uYWw8QXRvbVN0cmluZz4gbGFiZWw7CkBAIC0xMDks
NyArMTA5LDcgQEAgc3RydWN0IFRyYWNrUHJpdmF0ZVJlbW90ZUNvbmZpZ3VyYXRpb24gewogICAg
ICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKIAogICAgICAgICByZXR1cm4ge3sKLSAgICAg
ICAgICAgIFdURk1vdmUoKmlkZW50aWZpZXIpLAorICAgICAgICAgICAgV1RGTW92ZSgqdHJhY2tJ
ZCksCiAgICAgICAgICAgICBXVEZNb3ZlKCpsYWJlbCksCiAgICAgICAgICAgICBXVEZNb3ZlKCps
YW5ndWFnZSksCiAgICAgICAgICAgICBXVEZNb3ZlKCpzdGFydFRpbWVWYXJpYW5jZSksCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2
YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9U
cmFja1ByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDcyMWMwYWE5MjA3MjRlOWIzM2I1ODY1MzAzMTM3
YjZjYTU0OTAwYTAuLmUyYTNlOTAxYWZmNGU2NDE0MWJmYzk5YzZmMGM0NTcyOWIxZDhiY2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1By
aXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
QXVkaW9UcmFja1ByaXZhdGVSZW1vdGUuY3BwCkBAIC01Myw5ICs1Myw5IEBAIHZvaWQgQXVkaW9U
cmFja1ByaXZhdGVSZW1vdGU6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQogCiB2b2lkIEF1ZGlv
VHJhY2tQcml2YXRlUmVtb3RlOjp1cGRhdGVDb25maWd1cmF0aW9uKFRyYWNrUHJpdmF0ZVJlbW90
ZUNvbmZpZ3VyYXRpb24mJiBjb25maWd1cmF0aW9uKQogewotICAgIGlmIChjb25maWd1cmF0aW9u
LmlkZW50aWZpZXIgIT0gbV9pZCkgeworICAgIGlmIChjb25maWd1cmF0aW9uLnRyYWNrSWQgIT0g
bV9pZCkgewogICAgICAgICBhdXRvIGNoYW5nZWQgPSAhbV9pZC5pc0VtcHR5KCk7Ci0gICAgICAg
IG1faWQgPSBjb25maWd1cmF0aW9uLmlkZW50aWZpZXI7CisgICAgICAgIG1faWQgPSBjb25maWd1
cmF0aW9uLnRyYWNrSWQ7CiAgICAgICAgIGlmIChjaGFuZ2VkICYmIGNsaWVudCgpKQogICAgICAg
ICAgICAgY2xpZW50KCktPmlkQ2hhbmdlZChtX2lkKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVtb3RlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL0F1ZGlvVHJhY2tQcml2YXRlUmVt
b3RlLmgKaW5kZXggNTNkYzliZTMzYzliZmMwZGM0YTdiMDFmYzFmMTAxZjllODc2YTVjNS4uY2Y3
YzBlOTNlZjQ2ZjQ5MDFjZWNjNWY5ZjdhOGU2MWUzZjE2YjNmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9BdWRpb1RyYWNrUHJpdmF0ZVJlbW90ZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvQXVkaW9UcmFja1ByaXZhdGVS
ZW1vdGUuaApAQCAtNDgsNiArNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IEF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlKGNvbm5lY3Rpb24sIGlkZW5kaWZpZXIsIFdU
Rk1vdmUoY29uZmlndXJhdGlvbikpKTsKICAgICB9CiAKKyAgICBBdG9tU3RyaW5nIGlkKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gbV9pZDsgfQogICAgIHZvaWQgdXBkYXRlQ29uZmlndXJhdGlvbihU
cmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0aW9uJiYpOwogCiBwcml2YXRlOgpAQCAtNTUsNyAr
NTYsNiBAQCBwcml2YXRlOgogCiAgICAgdXNpbmcgQXVkaW9UcmFja0tpbmQgPSBXZWJDb3JlOjpB
dWRpb1RyYWNrUHJpdmF0ZTo6S2luZDsKICAgICBBdWRpb1RyYWNrS2luZCBraW5kKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbV9raW5kOyB9Ci0gICAgQXRvbVN0cmluZyBpZCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1faWQ7IH0KICAgICBBdG9tU3RyaW5nIGxhYmVsKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gbV9sYWJlbDsgfQogICAgIEF0b21TdHJpbmcgbGFuZ3VhZ2UoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX2xhbmd1YWdlOyB9CiAgICAgaW50IHRyYWNrSW5kZXgoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3RyYWNrSW5kZXg7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLmNwcAppbmRl
eCA2ZGRlZTg3YWJkY2M3NmY4NjlhZDU1NGRiNTExMmIzNmI4MmYyZDZiLi43MTMyMWU2YmU2MDA0
ODM4YzNiNjM1ZDBlZmRjNGMxZWY2ODkzMjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUu
Y3BwCkBAIC02MzMsNyArNjMzLDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjps
b2FkKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBDb250ZW50VHlwZSYgY29udGVudFR5CiB7CiAgICAg
aWYgKG1fcmVtb3RlRW5naW5lSWRlbnRpZmllciA9PSBNZWRpYVBsYXllckVudW1zOjpNZWRpYUVu
Z2luZUlkZW50aWZpZXI6OkFWRm91bmRhdGlvbk1TRSkgewogICAgICAgICBhdXRvIGlkZW50aWZp
ZXIgPSBSZW1vdGVNZWRpYVNvdXJjZUlkZW50aWZpZXI6OmdlbmVyYXRlKCk7Ci0gICAgICAgIGNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXllclByb3h5OjpMb2FkTWVk
aWFTb3VyY2UodXJsLCBjb250ZW50VHlwZSwgaWRlbnRpZmllciksIG1faWQpOworICAgICAgICBj
b25uZWN0aW9uKCkuc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVBsYXll
clByb3h5OjpMb2FkTWVkaWFTb3VyY2UodXJsLCBjb250ZW50VHlwZSwgaWRlbnRpZmllciksIFt3
ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0oYXV0byYmIGNvbmZpZ3VyYXRpb24pIHsKKyAg
ICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+bV9jb25m
aWd1cmF0aW9uID0gV1RGTW92ZShjb25maWd1cmF0aW9uKTsKKyAgICAgICAgfSwgbV9pZCk7CiAg
ICAgICAgIG1fbWVkaWFTb3VyY2VQcml2YXRlID0gTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjpj
cmVhdGUobV9tYW5hZ2VyLmdwdVByb2Nlc3NDb25uZWN0aW9uKCksIGlkZW50aWZpZXIsIG1fbWFu
YWdlci50eXBlQ2FjaGUobV9yZW1vdGVFbmdpbmVJZGVudGlmaWVyKSwgKnRoaXMsIGNsaWVudCk7
CiAKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuY3BwCmluZGV4IDBh
Yzc4NzIwYmFjNGQ0MjhkMTI0NzA0ODk4NjU5MzkzOGZmNzg1ZGEuLjUwMzIyNTJiZjUwZjE2MjQ1
YjE1ZmU0ZTBmMmZjMTkyZGU1MTg1NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5jcHAK
QEAgLTEwMyw5ICsxMDMsOSBAQCBNZWRpYVNvdXJjZVByaXZhdGU6OkFkZFN0YXR1cyBNZWRpYVNv
dXJjZVByaXZhdGVSZW1vdGU6OmFkZFNvdXJjZUJ1ZmZlcihjb25zdCBDbwogICAgIHJldHVybiBz
dGF0dXM7CiB9CiAKLXZvaWQgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjpkdXJhdGlvbkNoYW5n
ZWQoKQordm9pZCBNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OmR1cmF0aW9uQ2hhbmdlZChjb25z
dCBNZWRpYVRpbWUmIGR1cmF0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9n
cHVQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3RlTWVk
aWFTb3VyY2VQcm94eTo6RHVyYXRpb25DaGFuZ2VkKGR1cmF0aW9uKSwgbV9pZGVudGlmaWVyKTsK
IH0KIAogdm9pZCBNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6Om1hcmtFbmRPZlN0cmVhbShFbmRP
ZlN0cmVhbVN0YXR1cykKQEAgLTExOCwxNCArMTE4LDIwIEBAIHZvaWQgTWVkaWFTb3VyY2VQcml2
YXRlUmVtb3RlOjp1bm1hcmtFbmRPZlN0cmVhbSgpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAorYm9vbCBNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OmlzRW5kZWQoKSBjb25zdAoreworICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiBNZWRpYVBsYXllcjo6
UmVhZHlTdGF0ZSBNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OnJlYWR5U3RhdGUoKSBjb25zdAog
ewogICAgIHJldHVybiBtX21lZGlhUGxheWVyUHJpdmF0ZSA/IG1fbWVkaWFQbGF5ZXJQcml2YXRl
LT5yZWFkeVN0YXRlKCkgOiBNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZTo6SGF2ZU5vdGhpbmc7CiB9
CiAKLXZvaWQgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxh
eWVyOjpSZWFkeVN0YXRlKQordm9pZCBNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGU6OnNldFJlYWR5
U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUgcmVhZHlTdGF0ZSkKIHsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgIG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQo
TWVzc2FnZXM6OlJlbW90ZU1lZGlhU291cmNlUHJveHk6OlNldFJlYWR5U3RhdGUocmVhZHlTdGF0
ZSksIG1faWRlbnRpZmllcik7CiB9CiAKIHZvaWQgTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlOjp3
YWl0Rm9yU2Vla0NvbXBsZXRlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUuaAppbmRleCA3Nzgz
NGY3YTE5ZGNiMGI5NGVkNTJmNjY4MDBlNjA1YzMxNTM0Nzk5Li42NGY3Mzg1YjI5MjlmOWYzMDRi
NDJjOGEzNmUyYjI1NzYyZjllOGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvR1BVL21lZGlhL01lZGlhU291cmNlUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFTb3VyY2VQcml2YXRlUmVtb3RlLmgKQEAgLTU2
LDkgKzU2LDEwIEBAIHB1YmxpYzoKIAogICAgIC8vIE1lZGlhU291cmNlUHJpdmF0ZSBvdmVycmlk
ZXMKICAgICBBZGRTdGF0dXMgYWRkU291cmNlQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRU
eXBlJiwgUmVmUHRyPFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGU+JikgZmluYWw7Ci0gICAg
dm9pZCBkdXJhdGlvbkNoYW5nZWQoKSBmaW5hbDsKKyAgICB2b2lkIGR1cmF0aW9uQ2hhbmdlZChj
b25zdCBNZWRpYVRpbWUmKSBmaW5hbDsKICAgICB2b2lkIG1hcmtFbmRPZlN0cmVhbShFbmRPZlN0
cmVhbVN0YXR1cykgZmluYWw7CiAgICAgdm9pZCB1bm1hcmtFbmRPZlN0cmVhbSgpIGZpbmFsOwor
ICAgIGJvb2wgaXNFbmRlZCgpIGNvbnN0IGZpbmFsOwogICAgIFdlYkNvcmU6Ok1lZGlhUGxheWVy
OjpSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdCBmaW5hbDsKICAgICB2b2lkIHNldFJlYWR5
U3RhdGUoV2ViQ29yZTo6TWVkaWFQbGF5ZXI6OlJlYWR5U3RhdGUpIGZpbmFsOwogICAgIHZvaWQg
d2FpdEZvclNlZWtDb21wbGV0ZWQoKSBmaW5hbDsKQEAgLTc5LDYgKzgwLDggQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8V2ViQ29yZTo6TWVkaWFTb3VyY2VQcml2YXRlQ2xpZW50PiBtX2NsaWVudDsK
ICAgICBWZWN0b3I8UmVmUHRyPFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU+PiBtX3NvdXJjZUJ1
ZmZlcnM7CiAKKyAgICBNZWRpYVRpbWUgbV9kdXJhdGlvbjsKKwogI2lmICFSRUxFQVNFX0xPR19E
SVNBQkxFRAogICAgIGNvbnN0IGNoYXIqIGxvZ0NsYXNzTmFtZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuICJNZWRpYVNvdXJjZVByaXZhdGVSZW1vdGUiOyB9CiAgICAgY29uc3Qgdm9pZCogbG9n
SWRlbnRpZmllcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fbG9nSWRlbnRpZmllcjsgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQ
cml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggNjMyZTAwZmIxNTJkMGZkNzQ2NTc2ZTM0
Y2FmYmY5ZTJiNDYzYmY3ZC4uNmVkZTQyMmE5Yzk0MzcyZjQyZDQwYTZiZjMxZGM2NWFhMzFjYjU0
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1NvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAj
aW5jbHVkZSAiUmVtb3RlU291cmNlQnVmZmVyUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIlNv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGVNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtVGltZVJhbmdlcy5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWYuaD4KIApAQCAtMTAwLDE3ICsxMDEsMTUgQEAgTWVkaWFQbGF5ZXI6OlJlYWR5U3Rh
dGUgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6cmVhZHlTdGF0ZSgpIGNvbnN0CiAgICAgcmV0
dXJuIG1fbWVkaWFQbGF5ZXJQcml2YXRlID8gbV9tZWRpYVBsYXllclByaXZhdGUtPnJlYWR5U3Rh
dGUoKSA6IE1lZGlhUGxheWVyOjpSZWFkeVN0YXRlOjpIYXZlTm90aGluZzsKIH0KIAotdm9pZCBT
b3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzZXRSZWFkeVN0YXRlKE1lZGlhUGxheWVyOjpSZWFk
eVN0YXRlKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpzZXRSZWFkeVN0YXRlKE1l
ZGlhUGxheWVyOjpSZWFkeVN0YXRlIHN0YXRlKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci19
CisgICAgaWYgKCFtX21lZGlhU291cmNlUHJpdmF0ZSkKKyAgICAgICAgcmV0dXJuOwogCi12b2lk
IFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OmZsdXNoKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNr
SUQpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9u
LmNvbm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6U2V0
UmVhZHlTdGF0ZShzdGF0ZSksIG1fcmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcik7CiB9CiAK
LXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6ZW5xdWV1ZVNhbXBsZShSZWY8TWVkaWFT
YW1wbGU+JiYsIGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpCit2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGU6OmZsdXNoKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KQEAgLTEyMCw5ICsxMTksMTMgQEAgYm9vbCBTb3VyY2VCdWZmZXJQ
cml2YXRlUmVtb3RlOjppc1JlYWR5Rm9yTW9yZVNhbXBsZXMoY29uc3QgQXRvbVN0cmluZyYgdHJh
Y2tJRCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJl
bW90ZTo6c2V0QWN0aXZlKGJvb2wpCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNl
dEFjdGl2ZShib29sIGFjdGl2ZSkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICgh
bV9tZWRpYVNvdXJjZVByaXZhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1faXNBY3RpdmUg
PSBhY3RpdmU7CisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChN
ZXNzYWdlczo6UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OlNldEFjdGl2ZShhY3RpdmUpLCBtX3Jl
bW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpOwogfQogCiB2b2lkIFNvdXJjZUJ1ZmZlclByaXZh
dGVSZW1vdGU6Om5vdGlmeUNsaWVudFdoZW5SZWFkeUZvck1vcmVTYW1wbGVzKGNvbnN0IEF0b21T
dHJpbmcmIHRyYWNrSUQpCkBAIC0xNTEsNyArMTU0LDM2IEBAIGJvb2wgU291cmNlQnVmZmVyUHJp
dmF0ZVJlbW90ZTo6Y2FuU3dpdGNoVG9UeXBlKGNvbnN0IENvbnRlbnRUeXBlJikKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVm
ZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoSW5pdGlhbGl6YXRpb25T
ZWdtZW50SW5mbyYmIHNlZ21lbnRJbmZvKQordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3Rl
Ojp1cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0VuZGVkKQorewor
ICAgIGlmICghbV9tZWRpYVNvdXJjZVByaXZhdGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
Z3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90ZVNv
dXJjZUJ1ZmZlclByb3h5OjpVcGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoc291cmNlSXNF
bmRlZCksIG1fcmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU291cmNl
QnVmZmVyUHJpdmF0ZVJlbW90ZTo6ZXZpY3RDb2RlZEZyYW1lcyh1aW50NjRfdCBuZXdEYXRhU2l6
ZSwgdWludDY0X3QgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1
ZmZlclNpemUsIGNvbnN0IE1lZGlhVGltZSYgY3VycmVudFRpbWUsIGNvbnN0IE1lZGlhVGltZSYg
ZHVyYXRpb24sIGJvb2wgaXNFbmRlZCkKK3sKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNv
bm5lY3Rpb24oKS5zZW5kKE1lc3NhZ2VzOjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6RXZpY3RD
b2RlZEZyYW1lcyhuZXdEYXRhU2l6ZSwgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgbWF4aW11
bUJ1ZmZlclNpemUsIGN1cnJlbnRUaW1lLCBkdXJhdGlvbiwgaXNFbmRlZCksIG1fcmVtb3RlU291
cmNlQnVmZmVySWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZTo6YWRkVHJhY2tCdWZmZXIoY29uc3QgQXRvbVN0cmluZyYgdHJhY2tJZCwgUmVmUHRyPE1lZGlh
RGVzY3JpcHRpb24+JiYpCit7CisgICAgQVNTRVJUKG1fdHJhY2tJZGVudGlmaWVyTWFwLmNvbnRh
aW5zKHRyYWNrSWQpKTsKKyAgICBtX2dwdVByb2Nlc3NDb25uZWN0aW9uLmNvbm5lY3Rpb24oKS5z
ZW5kKE1lc3NhZ2VzOjpSZW1vdGVTb3VyY2VCdWZmZXJQcm94eTo6QWRkVHJhY2tCdWZmZXIobV90
cmFja0lkZW50aWZpZXJNYXAuZ2V0KHRyYWNrSWQpKSwgbV9yZW1vdGVTb3VyY2VCdWZmZXJJZGVu
dGlmaWVyKTsKK30KKwordm9pZCBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlOjpyZWVucXVldWVN
ZWRpYUlmTmVlZGVkKGNvbnN0IE1lZGlhVGltZSYgY3VycmVudE1lZGlhVGltZSwgdWludDY0X3Qg
cGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgdWludDY0X3QgbWF4aW11bUJ1ZmZlclNpemUpCit7
CisgICAgbV9ncHVQcm9jZXNzQ29ubmVjdGlvbi5jb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6
UmVtb3RlU291cmNlQnVmZmVyUHJveHk6OlJlZW5xdWV1ZU1lZGlhSWZOZWVkZWQoY3VycmVudE1l
ZGlhVGltZSwgcGVuZGluZ0FwcGVuZERhdGFDYXBhY2l0eSwgbWF4aW11bUJ1ZmZlclNpemUpLCBt
X3JlbW90ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXIpOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclBy
aXZhdGVSZW1vdGU6OnRyeVNpZ25hbEFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoKQoreworICAg
IG1fZ3B1UHJvY2Vzc0Nvbm5lY3Rpb24uY29ubmVjdGlvbigpLnNlbmQoTWVzc2FnZXM6OlJlbW90
ZVNvdXJjZUJ1ZmZlclByb3h5OjpUcnlTaWduYWxBbGxTYW1wbGVzSW5UcmFja0VucXVldWVkKCks
IG1fcmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllcik7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVy
UHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlv
blNlZ21lbnQoSW5pdGlhbGl6YXRpb25TZWdtZW50SW5mbyYmIHNlZ21lbnRJbmZvLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFtX2Ns
aWVudCB8fCAhbV9tZWRpYVBsYXllclByaXZhdGUpCiAgICAgICAgIHJldHVybjsKQEAgLTE2NCw2
ICsxOTYsNyBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJjZUJ1ZmZlclBy
aXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZQogICAgICAgICBpbmZvLnRyYWNrID0g
bV9tZWRpYVBsYXllclByaXZhdGUtPmF1ZGlvVHJhY2tQcml2YXRlUmVtb3RlKGF1ZGlvVHJhY2su
aWRlbnRpZmllcik7CiAgICAgICAgIGluZm8uZGVzY3JpcHRpb24gPSBSZW1vdGVNZWRpYURlc2Ny
aXB0aW9uOjpjcmVhdGUoYXVkaW9UcmFjay5kZXNjcmlwdGlvbik7CiAgICAgICAgIHNlZ21lbnQu
YXVkaW9UcmFja3MuYXBwZW5kKGluZm8pOworICAgICAgICBtX3RyYWNrSWRlbnRpZmllck1hcC5h
ZGQoaW5mby50cmFjay0+aWQoKSwgYXVkaW9UcmFjay5pZGVudGlmaWVyKTsKICAgICB9CiAKICAg
ICBmb3IgKGF1dG8mIHZpZGVvVHJhY2sgOiBzZWdtZW50SW5mby52aWRlb1RyYWNrcykgewpAQCAt
MTcxLDYgKzIwNCw3IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVm
ZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lCiAgICAgICAgIGluZm8udHJh
Y2sgPSBtX21lZGlhUGxheWVyUHJpdmF0ZS0+dmlkZW9UcmFja1ByaXZhdGVSZW1vdGUodmlkZW9U
cmFjay5pZGVudGlmaWVyKTsKICAgICAgICAgaW5mby5kZXNjcmlwdGlvbiA9IFJlbW90ZU1lZGlh
RGVzY3JpcHRpb246OmNyZWF0ZSh2aWRlb1RyYWNrLmRlc2NyaXB0aW9uKTsKICAgICAgICAgc2Vn
bWVudC52aWRlb1RyYWNrcy5hcHBlbmQoaW5mbyk7CisgICAgICAgIG1fdHJhY2tJZGVudGlmaWVy
TWFwLmFkZChpbmZvLnRyYWNrLT5pZCgpLCB2aWRlb1RyYWNrLmlkZW50aWZpZXIpOwogICAgIH0K
IAogICAgIGZvciAoYXV0byYgdGV4dFRyYWNrIDogc2VnbWVudEluZm8udGV4dFRyYWNrcykgewpA
QCAtMTc4LDkgKzIxMiwxMCBAQCB2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJj
ZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZQogICAgICAgICBpbmZv
LnRyYWNrID0gbV9tZWRpYVBsYXllclByaXZhdGUtPnRleHRUcmFja1ByaXZhdGVSZW1vdGUodGV4
dFRyYWNrLmlkZW50aWZpZXIpOwogICAgICAgICBpbmZvLmRlc2NyaXB0aW9uID0gUmVtb3RlTWVk
aWFEZXNjcmlwdGlvbjo6Y3JlYXRlKHRleHRUcmFjay5kZXNjcmlwdGlvbik7CiAgICAgICAgIHNl
Z21lbnQudGV4dFRyYWNrcy5hcHBlbmQoaW5mbyk7CisgICAgICAgIG1fdHJhY2tJZGVudGlmaWVy
TWFwLmFkZChpbmZvLnRyYWNrLT5pZCgpLCB0ZXh0VHJhY2suaWRlbnRpZmllcik7CiAgICAgfQog
Ci0gICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRp
b25TZWdtZW50KFdURk1vdmUoc2VnbWVudCkpOworICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQ
cml2YXRlRGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChXVEZNb3ZlKHNlZ21lbnQpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0
ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZUFwcGVuZENvbXBsZXRlKFNvdXJjZUJ1ZmZlclBy
aXZhdGVDbGllbnQ6OkFwcGVuZFJlc3VsdCBhcHBlbmRSZXN1bHQpCkBAIC0xODksNiArMjI0LDMw
IEBAIHZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZUFw
cGVuZENvbXBsZXRlKFNvdXJjZUJ1ZmZlclByCiAgICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZm
ZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoYXBwZW5kUmVzdWx0KTsKIH0KIAordm9pZCBTb3VyY2VC
dWZmZXJQcml2YXRlUmVtb3RlOjpzb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKGNv
bnN0IE1lZGlhVGltZSYgZHVyYXRpb24pCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgICBt
X2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9uQ2hhbmdlZChkdXJhdGlvbik7Cit9
CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6c291cmNlQnVmZmVyUHJpdmF0ZURp
ZFBhcnNlU2FtcGxlKGRvdWJsZSBzYW1wbGVEdXJhdGlvbikKK3sKKyAgICBpZiAobV9jbGllbnQp
CisgICAgICAgIG1fY2xpZW50LT5zb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoc2Ft
cGxlRHVyYXRpb24pOworfQorCit2b2lkIFNvdXJjZUJ1ZmZlclByaXZhdGVSZW1vdGU6OnNvdXJj
ZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZChib29sIGRpcnR5KQoreworICAgIGlm
IChtX2NsaWVudCkKKyAgICAgICAgbV9jbGllbnQtPnNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJl
ZERpcnR5Q2hhbmdlZChkaXJ0eSk7Cit9CisKK3ZvaWQgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZTo6c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdlZChjb25zdCBXZWJDb3Jl
OjpQbGF0Zm9ybVRpbWVSYW5nZXMmIHRpbWVSYW5nZXMpCit7CisgICAgaWYgKG1fY2xpZW50KQor
ICAgICAgICBtX2NsaWVudC0+c291cmNlQnVmZmVyUHJpdmF0ZUJ1ZmZlcmVkUmFuZ2VzQ2hhbmdl
ZCh0aW1lUmFuZ2VzKTsKK30KKwogI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAogV1RGTG9nQ2hh
bm5lbCYgU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZTo6bG9nQ2hhbm5lbCgpIGNvbnN0CiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1NvdXJjZUJ1ZmZl
clByaXZhdGVSZW1vdGUuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291
cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCmluZGV4IDRkMGUwMzA5YWQ1OWQ2OTRmMTNiYzE0YzQ3
Y2JiYTRhZjJmN2E4NjIuLjc2MmY2M2JmN2QyYjc5YmZlZWJmZTJhY2VhODIzMzE3NDUxOTAwNDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVm
ZmVyUHJpdmF0ZVJlbW90ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVk
aWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90ZS5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVk
ZSAiR1BVUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIK
ICNpbmNsdWRlICJSZW1vdGVTb3VyY2VCdWZmZXJJZGVudGlmaWVyLmgiCisjaW5jbHVkZSAiVHJh
Y2tQcml2YXRlUmVtb3RlSWRlbnRpZmllci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFR5
cGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01lZGlhU2FtcGxlLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9Tb3VyY2VCdWZmZXJQcml2YXRlLmg+CkBAIC00Niw2ICs0NywxMCBAQCBjbGFzcyBDb25uZWN0
aW9uOwogY2xhc3MgRGVjb2RlcjsKIH0KIAorbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgUGxh
dGZvcm1UaW1lUmFuZ2VzOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogc3RydWN0IEluaXRp
YWxpemF0aW9uU2VnbWVudEluZm87CkBAIC03NCwyNSArNzksNDAgQEAgcHJpdmF0ZToKICAgICBX
ZWJDb3JlOjpNZWRpYVBsYXllcjo6UmVhZHlTdGF0ZSByZWFkeVN0YXRlKCkgY29uc3QgZmluYWw7
CiAgICAgdm9pZCBzZXRSZWFkeVN0YXRlKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpSZWFkeVN0YXRl
KSBmaW5hbDsKICAgICB2b2lkIGZsdXNoKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpIGZpbmFs
OwotICAgIHZvaWQgZW5xdWV1ZVNhbXBsZShSZWY8V2ViQ29yZTo6TWVkaWFTYW1wbGU+JiYsIGNv
bnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpIGZpbmFsOwogICAgIGJvb2wgaXNSZWFkeUZvck1vcmVT
YW1wbGVzKGNvbnN0IEF0b21TdHJpbmcmIHRyYWNrSUQpIGZpbmFsOwogICAgIHZvaWQgc2V0QWN0
aXZlKGJvb2wpIGZpbmFsOworICAgIGJvb2wgaXNBY3RpdmUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2lzQWN0aXZlOyB9CiAgICAgdm9pZCBub3RpZnlDbGllbnRXaGVuUmVhZHlGb3JNb3JlU2Ft
cGxlcyhjb25zdCBBdG9tU3RyaW5nJiB0cmFja0lEKSBmaW5hbDsKICAgICBib29sIGNhblNldE1p
bmltdW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0IGZp
bmFsOwogICAgIHZvaWQgc2V0TWluaW11bVVwY29taW5nUHJlc2VudGF0aW9uVGltZShjb25zdCBB
dG9tU3RyaW5nJiwgY29uc3QgTWVkaWFUaW1lJikgZmluYWw7CiAgICAgdm9pZCBjbGVhck1pbmlt
dW1VcGNvbWluZ1ByZXNlbnRhdGlvblRpbWUoY29uc3QgQXRvbVN0cmluZyYpIGZpbmFsOwogICAg
IGJvb2wgY2FuU3dpdGNoVG9UeXBlKGNvbnN0IFdlYkNvcmU6OkNvbnRlbnRUeXBlJikgZmluYWw7
CisgICAgdm9pZCB1cGRhdGVCdWZmZXJlZEZyb21UcmFja0J1ZmZlcnMoYm9vbCBzb3VyY2VJc0Vu
ZGVkKSBmaW5hbDsKKyAgICB2b2lkIGV2aWN0Q29kZWRGcmFtZXModWludDY0X3QgbmV3RGF0YVNp
emUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNpdHksIHVpbnQ2NF90IG1heGltdW1C
dWZmZXJTaXplLCBjb25zdCBNZWRpYVRpbWUmIGN1cnJlbnRUaW1lLCBjb25zdCBNZWRpYVRpbWUm
IGR1cmF0aW9uLCBib29sIGlzRW5kZWQpIGZpbmFsOworICAgIHZvaWQgYWRkVHJhY2tCdWZmZXIo
Y29uc3QgQXRvbVN0cmluZyYgdHJhY2tJZCwgUmVmUHRyPFdlYkNvcmU6Ok1lZGlhRGVzY3JpcHRp
b24+JiYpIGZpbmFsOworICAgIHZvaWQgcmVlbnF1ZXVlTWVkaWFJZk5lZWRlZChjb25zdCBNZWRp
YVRpbWUmIGN1cnJlbnRNZWRpYVRpbWUsIHVpbnQ2NF90IHBlbmRpbmdBcHBlbmREYXRhQ2FwYWNp
dHksIHVpbnQ2NF90IG1heGltdW1CdWZmZXJTaXplKSBmaW5hbDsKKyAgICB2b2lkIHRyeVNpZ25h
bEFsbFNhbXBsZXNJblRyYWNrRW5xdWV1ZWQoKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgZmluYWw7Ci0KLSAgICB2
b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KElu
aXRpYWxpemF0aW9uU2VnbWVudEluZm8mJik7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQcml2YXRl
RGlkUmVjZWl2ZUluaXRpYWxpemF0aW9uU2VnbWVudChJbml0aWFsaXphdGlvblNlZ21lbnRJbmZv
JiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7CisgICAgdm9pZCBzb3VyY2VCdWZmZXJQ
cml2YXRlU3RyZWFtRW5kZWRXaXRoRGVjb2RlRXJyb3IoKTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZl
clByaXZhdGVBcHBlbmRFcnJvcihib29sIGRlY29kZUVycm9yKTsKICAgICB2b2lkIHNvdXJjZUJ1
ZmZlclByaXZhdGVBcHBlbmRDb21wbGV0ZShXZWJDb3JlOjpTb3VyY2VCdWZmZXJQcml2YXRlQ2xp
ZW50OjpBcHBlbmRSZXN1bHQpOworICAgIHZvaWQgc291cmNlQnVmZmVyUHJpdmF0ZUR1cmF0aW9u
Q2hhbmdlZChjb25zdCBNZWRpYVRpbWUmKTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVE
aWRQYXJzZVNhbXBsZShkb3VibGUgc2FtcGxlRHVyYXRpb24pOworICAgIHZvaWQgc291cmNlQnVm
ZmVyUHJpdmF0ZURpZERyb3BTYW1wbGUoKTsKKyAgICB2b2lkIHNvdXJjZUJ1ZmZlclByaXZhdGVE
aWRSZWNlaXZlUmVuZGVyaW5nRXJyb3IoaW50IGVycm9yQ29kZSk7CisgICAgdm9pZCBzb3VyY2VC
dWZmZXJQcml2YXRlQnVmZmVyZWREaXJ0eUNoYW5nZWQoYm9vbCBkaXJ0eSk7CisgICAgdm9pZCBz
b3VyY2VCdWZmZXJQcml2YXRlQnVmZmVyZWRSYW5nZXNDaGFuZ2VkKGNvbnN0IFdlYkNvcmU6OlBs
YXRmb3JtVGltZVJhbmdlcyYpOwogCiAgICAgR1BVUHJvY2Vzc0Nvbm5lY3Rpb24mIG1fZ3B1UHJv
Y2Vzc0Nvbm5lY3Rpb247CiAgICAgUmVtb3RlU291cmNlQnVmZmVySWRlbnRpZmllciBtX3JlbW90
ZVNvdXJjZUJ1ZmZlcklkZW50aWZpZXI7CiAgICAgV2Vha1B0cjxNZWRpYVNvdXJjZVByaXZhdGVS
ZW1vdGU+IG1fbWVkaWFTb3VyY2VQcml2YXRlOwogICAgIFdlYWtQdHI8TWVkaWFQbGF5ZXJQcml2
YXRlUmVtb3RlPiBtX21lZGlhUGxheWVyUHJpdmF0ZTsKLSAgICBXZWJDb3JlOjpTb3VyY2VCdWZm
ZXJQcml2YXRlQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKKworICAgIEhhc2hNYXA8QXRv
bVN0cmluZywgVHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllcj4gbV90cmFja0lkZW50aWZpZXJN
YXA7CisKKyAgICBib29sIG1faXNBY3RpdmUgeyBmYWxzZSB9OwogCiAjaWYgIVJFTEVBU0VfTE9H
X0RJU0FCTEVECiAgICAgY29uc3QgTG9nZ2VyJiBsb2dnZXIoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX2xvZ2dlci5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9Tb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlLm1l
c3NhZ2VzLmluCmluZGV4IDQwNjQyZjYwMzZlZjdlMTFlMjNiODBmNWE0NTFkNzZmM2VkMjhjNGUu
LjZjOGNjYTBmZTg5N2M1OTllYzRjZWI4YTJiZWE1YTlhYWJmNDY4NjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvU291cmNlQnVmZmVyUHJpdmF0ZVJlbW90
ZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1Nv
dXJjZUJ1ZmZlclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KQEAgLTI2LDggKzI2LDEyIEBACiAj
aWYgRU5BQkxFKEdQVV9QUk9DRVNTKSAmJiBFTkFCTEUoTUVESUFfU09VUkNFKQogCiBtZXNzYWdl
cyAtPiBTb3VyY2VCdWZmZXJQcml2YXRlUmVtb3RlIE5vdFJlZkNvdW50ZWQgewotICAgIFNvdXJj
ZUJ1ZmZlclByaXZhdGVEaWRSZWNlaXZlSW5pdGlhbGl6YXRpb25TZWdtZW50KHN0cnVjdCBXZWJL
aXQ6OkluaXRpYWxpemF0aW9uU2VnbWVudEluZm8gc2VnbWVudENvbmZpZ3VyYXRpb24pCisgICAg
U291cmNlQnVmZmVyUHJpdmF0ZURpZFJlY2VpdmVJbml0aWFsaXphdGlvblNlZ21lbnQoc3RydWN0
IFdlYktpdDo6SW5pdGlhbGl6YXRpb25TZWdtZW50SW5mbyBzZWdtZW50Q29uZmlndXJhdGlvbikg
LT4gKCkgQXN5bmMKICAgICBTb3VyY2VCdWZmZXJQcml2YXRlQXBwZW5kQ29tcGxldGUoV2ViQ29y
ZTo6U291cmNlQnVmZmVyUHJpdmF0ZUNsaWVudDo6QXBwZW5kUmVzdWx0IGFwcGVuZFJlc3VsdCkK
KyAgICBTb3VyY2VCdWZmZXJQcml2YXRlRHVyYXRpb25DaGFuZ2VkKE1lZGlhVGltZSBkdXJhdGlv
bikKKyAgICBTb3VyY2VCdWZmZXJQcml2YXRlRGlkUGFyc2VTYW1wbGUoZG91YmxlIHNhbXBsZUR1
cmF0aW9uKQorICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZERpcnR5Q2hhbmdlZChib29s
IGRpcnR5KQorICAgIFNvdXJjZUJ1ZmZlclByaXZhdGVCdWZmZXJlZFJhbmdlc0NoYW5nZWQoV2Vi
Q29yZTo6UGxhdGZvcm1UaW1lUmFuZ2VzIHRpbWVSYW5nZXMpCiB9CiAKICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRl
UmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNr
UHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXggNzMyMjNiODY4NDIxM2EwYmQ4ZjcxMjgyYThlOGRlYTYx
NTk5NWVjMC4uMmI1NmZlZDIzZGVjMzU4NTlhYjg1N2U2ZjZkZmZkNzk4ZTFhYWUxMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRl
UmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRU
cmFja1ByaXZhdGVSZW1vdGUuY3BwCkBAIC01Niw5ICs1Niw5IEBAIHZvaWQgVGV4dFRyYWNrUHJp
dmF0ZVJlbW90ZTo6c2V0TW9kZShUZXh0VHJhY2tNb2RlIG1vZGUpCiAKIHZvaWQgVGV4dFRyYWNr
UHJpdmF0ZVJlbW90ZTo6dXBkYXRlQ29uZmlndXJhdGlvbihUZXh0VHJhY2tQcml2YXRlUmVtb3Rl
Q29uZmlndXJhdGlvbiYmIGNvbmZpZ3VyYXRpb24pCiB7Ci0gICAgaWYgKGNvbmZpZ3VyYXRpb24u
aWRlbnRpZmllciAhPSBtX2lkKSB7CisgICAgaWYgKGNvbmZpZ3VyYXRpb24udHJhY2tJZCAhPSBt
X2lkKSB7CiAgICAgICAgIGF1dG8gY2hhbmdlZCA9ICFtX2lkLmlzRW1wdHkoKTsKLSAgICAgICAg
bV9pZCA9IGNvbmZpZ3VyYXRpb24uaWRlbnRpZmllcjsKKyAgICAgICAgbV9pZCA9IGNvbmZpZ3Vy
YXRpb24udHJhY2tJZDsKICAgICAgICAgaWYgKGNoYW5nZWQgJiYgY2xpZW50KCkpCiAgICAgICAg
ICAgICBjbGllbnQoKS0+aWRDaGFuZ2VkKG1faWQpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVmlkZW9UcmFja1ByaXZhdGVSZW1vdGUuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9WaWRlb1RyYWNrUHJpdmF0ZVJl
bW90ZS5jcHAKaW5kZXggYWM2ZWEwMTQyNzFjMzMxMjZjZDc1MmIzZmZkM2I3ODU0MzlkZTY1Ny4u
MzVlOGU3ZDgzOWM3MjgwMWY2YTk2ZmJlZDI3MjA2NGQ0ZmQ2NmYwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9WaWRlb1RyYWNrUHJpdmF0ZVJlbW90ZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9WaWRlb1RyYWNrUHJp
dmF0ZVJlbW90ZS5jcHAKQEAgLTUyLDkgKzUyLDkgQEAgdm9pZCBWaWRlb1RyYWNrUHJpdmF0ZVJl
bW90ZTo6c2V0U2VsZWN0ZWQoYm9vbCBzZWxlY3RlZCkKIAogdm9pZCBWaWRlb1RyYWNrUHJpdmF0
ZVJlbW90ZTo6dXBkYXRlQ29uZmlndXJhdGlvbihUcmFja1ByaXZhdGVSZW1vdGVDb25maWd1cmF0
aW9uJiYgY29uZmlndXJhdGlvbikKIHsKLSAgICBpZiAoY29uZmlndXJhdGlvbi5pZGVudGlmaWVy
ICE9IG1faWQpIHsKKyAgICBpZiAoY29uZmlndXJhdGlvbi50cmFja0lkICE9IG1faWQpIHsKICAg
ICAgICAgYXV0byBjaGFuZ2VkID0gIW1faWQuaXNFbXB0eSgpOwotICAgICAgICBtX2lkID0gY29u
ZmlndXJhdGlvbi5pZGVudGlmaWVyOworICAgICAgICBtX2lkID0gY29uZmlndXJhdGlvbi50cmFj
a0lkOwogICAgICAgICBpZiAoY2hhbmdlZCAmJiBjbGllbnQoKSkKICAgICAgICAgICAgIGNsaWVu
dCgpLT5pZENoYW5nZWQobV9pZCk7CiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>