<?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>77004</bug_id>
          
          <creation_ts>2012-01-25 04:19:42 -0800</creation_ts>
          <short_desc>REGRESSION(r105858): It made many tests crash on Qt (Requested by Ossy on #webkit).</short_desc>
          <delta_ts>2012-01-25 04:37:12 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>76660</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>kenneth</cc>
    
    <cc>noam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>542177</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-25 04:19:42 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/105858 broke the build:
It made many tests crash on Qt (Requested by Ossy on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542178</commentid>
    <comment_count>1</comment_count>
      <attachid>123918</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-25 04:20:16 -0800</bug_when>
    <thetext>Created attachment 123918
ROLLOUT of r105858

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542189</commentid>
    <comment_count>2</comment_count>
      <attachid>123918</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-25 04:37:07 -0800</bug_when>
    <thetext>Comment on attachment 123918
ROLLOUT of r105858

Clearing flags on attachment: 123918

Committed r105868: &lt;http://trac.webkit.org/changeset/105868&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542190</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-25 04:37:12 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123918</attachid>
            <date>2012-01-25 04:20:16 -0800</date>
            <delta_ts>2012-01-25 04:37:07 -0800</delta_ts>
            <desc>ROLLOUT of r105858</desc>
            <filename>bug-77004-20120125122129.patch</filename>
            <type>text/plain</type>
            <size>36838</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzQ0Nzg2MTJmNTk2NmY0
YmJkZDc4NWU5NDJmNzE0MDhiOTI0MjRhYS4uM2ExNWE2MjE4YjQ5NmVkY2Y1YTlhNDg5ZmQ0MDlh
Y2VjMmQwMGIyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTAxLTI1ICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTA1ODU4LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xMDU4NTgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc3MDA0CisKKyAgICAgICAgSXQgbWFkZSBtYW55IHRlc3RzIGNyYXNoIG9uIFF0
IChSZXF1ZXN0ZWQgYnkgT3NzeSBvbiAjd2Via2l0KS4KKworICAgICAgICAqIEdOVW1ha2VmaWxl
Lmxpc3QuYW06CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJl
TWFwcGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
OjphZGRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXI6OnBhdXNlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjpyZW1vdmVBbmltYXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5oOgorICAgICAgICAoR3JhcGhp
Y3NMYXllclRleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5oOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTm9kZTo6c3luY0NvbXBvc2l0aW5nU3RhdGVT
ZWxmKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJOb2RlOjpkZXNjZW5kYW50c09y
U2VsZkhhdmVSdW5uaW5nQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpub3JtYWxpemVk
QW5pbWF0aW9uVmFsdWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyTm9kZTo6YXBwbHlPcGFjaXR5QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OnNvbHZlRXBzaWxvbik6CisgICAgICAgIChXZWJDb3JlOjpzb2x2ZUN1YmljQmV6aWVyRnVu
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6c29sdmVTdGVwc0Z1bmN0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OmFwcGx5VGltaW5nRnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlck5vZGU6OmFwcGx5VHJhbnNmb3JtQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHR1cmVNYXBwZXJOb2RlOjphcHBseUFuaW1hdGlvbkZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJOb2RlOjphcHBseUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0dXJlTWFwcGVyTm9kZTo6aGFzT3BhY2l0eUFuaW1hdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyTm9kZTo6aGFzVHJhbnNmb3JtQW5pbWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJOb2RlOjpzeW5jQW5pbWF0aW9ucyk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0dXJlTWFwcGVyTm9kZTo6c3luY0FuaW1hdGlvbnNSZWN1cnNpdmVseSk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTm9kZTo6c3luY0NvbXBvc2l0aW5nU3RhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckFuaW1hdGlvbjo6VGV4dHVyZU1hcHBl
ckFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJOb2RlLmg6CisgICAgICAgIChUZXh0dXJlTWFwcGVyQW5pbWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHR1cmVNYXBwZXJBbmltYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFRleHR1cmVNYXBwZXJOb2RlKToKKwogMjAxMi0wMS0yNSAgVnNldm9s
b2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBbSW5zcGVjdG9ySW5kZXhlZERCXSBQYXNzIERhdGFiYXNlLCBvYmplY3Qgc3RvcmVzIGFuZCBp
bmRleGVzIG1ldGEgaW5mb3JtYXRpb24gdG8gZnJvbnRlbmQuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQppbmRleCBjMDA4YjUzZmRkMTg4MmRkZTM3YmI3ZDhjZmU0MjkyMWQ1NjFkZmM4Li4y
MTk1ODZmZDQ4OWUwZTkyOWRiNmI3MDFmOTQ4YTM1YmY2MGRjMDMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KQEAgLTU3MTksOCArNTcxOSw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0xheWVyVHJhbnNmb3Jt
LmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXIuaCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJBbmltYXRpb24uY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuY3BwIFwKIAlTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyLmgKQEAgLTU3MzksOCArNTczNyw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0xheWVyVHJhbnNmb3JtLmgg
XAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXIuaCBcCi0JU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJBbmltYXRpb24uY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuaCBcCiAJU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDAzZWFiNjhjODdkMzVjY2U1MTAyYjkxZjhiYjdmNjhk
NmQ4Mzc1N2UuLmNmOTI5MWFhMzNhOTE5Nzg4MGQxYzZmNDhiNjFiODg5MWQzMmU1OWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFy
Z2V0LnByaQpAQCAtMzkyOSw3ICszOTI5LDYgQEAgY29udGFpbnMoQ09ORklHLCB0ZXhtYXApIHsK
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyLmggXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvTGF5ZXJUcmFuc2Zvcm0u
aCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmggXAot
ICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5o
IFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmgg
XAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXIuaAogCkBAIC0zOTM3LDcgKzM5MzYsNiBAQCBjb250YWlucyhDT05GSUcsIHRleG1hcCkg
ewogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9xdC9UZXh0dXJlTWFwcGVyUXQuY3BwIFwKICAg
ICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0xheWVyVHJhbnNmb3JtLmNwcCBcCiAgICAg
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcCBcCi0gICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcCBcCiAg
ICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5jcHAgXAog
ICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBw
ZXIuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAzNTcwZmNjZjg3OTM4ZTg4NGQxMDZmZDg2ZDYz
NmQwMjk1NmNmYzdlLi4xNjE0ZmI0NjQxZGEyZTdlODY3MzkwYWFhZGYwN2Q2ZjA4Y2JjMWRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCkBAIC0zNTcyLDggKzM1NzIsNiBAQAogICAgICAgICAgICAgJ3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9MYXllclRyYW5zZm9ybS5oJywKICAgICAgICAgICAgICdwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgnLAotICAgICAgICAgICAgJ3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcCcsCi0gICAg
ICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24u
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJO
b2RlLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJOb2RlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1
cmVNYXBwZXIuY3BwCmluZGV4IGY0NzhiOWYxZjZiZmFhNTAxZjUxYzBmY2E4YmRiNDRhNjM5ZTkx
N2YuLjdlZjk4MThlZDZlMDMwM2Y0OTc2MzYxODcxNDE0Njc0ZDU4MTk0ZjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtMzY1LDI3ICszNjUsNTkgQEAg
Ym9vbCBHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZy
YW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QKICAgICBpZiAoIWFuaW0gfHwgYW5pbS0+aXNFbXB0eU9y
WmVyb0R1cmF0aW9uKCkgfHwgdmFsdWVMaXN0LnNpemUoKSA8IDIgfHwgKHZhbHVlTGlzdC5wcm9w
ZXJ0eSgpICE9IEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0gJiYgdmFsdWVMaXN0LnBy
b3BlcnR5KCkgIT0gQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICBib29sIGxpc3RzTWF0Y2g7Ci0gICAgYm9vbCBoYXNCaWdSb3RhdGlvbjsKLSAg
ICBWZWN0b3I8VHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlPiBmdW5jdGlvbkxpc3Q7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2FuaW1hdGlvbnMuc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgLy8gVGhlIHNhbWUgYW5pbWF0aW9uIG5hbWUgY2FuIGJlIHVzZWQgZm9yIHR3byBh
bmltYXRpb25zIHdpdGggZGlmZmVyZW50IHByb3BlcnRpZXMuCisgICAgICAgIGlmIChtX2FuaW1h
dGlvbnNbaV0tPm5hbWUgIT0ga2V5ZnJhbWVzTmFtZSB8fCBtX2FuaW1hdGlvbnNbaV0tPmtleWZy
YW1lcy5wcm9wZXJ0eSgpICE9IHZhbHVlTGlzdC5wcm9wZXJ0eSgpKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgLy8gV2UgYWxyZWFkeSBoYXZlIGEgY29weSBvZiB0aGlzIGFuaW1h
dGlvbiwgdGhhdCBtZWFucyB0aGF0IHdlJ3JlIHJlc3VtaW5nIGl0IHJhdGhlciB0aGFuIGFkZGlu
ZyBpdC4KKyAgICAgICAgUmVmUHRyPFRleHR1cmVNYXBwZXJBbmltYXRpb24+JiBhbmltYXRpb24g
PSBtX2FuaW1hdGlvbnNbaV07CisgICAgICAgIGFuaW1hdGlvbi0+YW5pbWF0aW9uID0gQW5pbWF0
aW9uOjpjcmVhdGUoYW5pbSk7CisgICAgICAgIGFuaW1hdGlvbi0+cGF1c2VkID0gZmFsc2U7Cisg
ICAgICAgIGFuaW1hdGlvbi0+c3RhcnRUaW1lID0gV1RGOjpjdXJyZW50VGltZSgpIC0gdGltZU9m
ZnNldDsKKyAgICAgICAgbm90aWZ5Q2hhbmdlKFRleHR1cmVNYXBwZXJOb2RlOjpBbmltYXRpb25D
aGFuZ2UpOworICAgICAgICBtX2FuaW1hdGlvblN0YXJ0ZWRUaW1lci5zdGFydE9uZVNob3QoMCk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KIAotICAgIGlmICh2YWx1ZUxpc3QucHJvcGVy
dHkoKSA9PSBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKQotICAgICAgICBmZXRjaFRy
YW5zZm9ybU9wZXJhdGlvbkxpc3QodmFsdWVMaXN0LCBmdW5jdGlvbkxpc3QsIGxpc3RzTWF0Y2gs
IGhhc0JpZ1JvdGF0aW9uKTsKKyAgICBSZWZQdHI8VGV4dHVyZU1hcHBlckFuaW1hdGlvbj4gYW5p
bWF0aW9uID0gVGV4dHVyZU1hcHBlckFuaW1hdGlvbjo6Y3JlYXRlKHZhbHVlTGlzdCk7CisgICAg
YW5pbWF0aW9uLT5ib3hTaXplID0gYm94U2l6ZTsKKyAgICBhbmltYXRpb24tPm5hbWUgPSBrZXlm
cmFtZXNOYW1lOworICAgIGFuaW1hdGlvbi0+YW5pbWF0aW9uID0gQW5pbWF0aW9uOjpjcmVhdGUo
YW5pbSk7CisgICAgYW5pbWF0aW9uLT5wYXVzZWQgPSBmYWxzZTsKKyAgICBhbmltYXRpb24tPnN0
YXJ0VGltZSA9IFdURjo6Y3VycmVudFRpbWUoKSAtIHRpbWVPZmZzZXQ7CisKKyAgICBpZiAodmFs
dWVMaXN0LnByb3BlcnR5KCkgPT0gQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSkgewor
ICAgICAgICBib29sIGhhc0JpZ1JvdGF0aW9uOyAvLyBOb3QgdXNlZCwgYnV0IHJlcXVpcmVkIGFz
IGEgcG9pbnRlciBwYXJhbWV0ZXIgZm9yIHRoZSBmdW5jdGlvbi4KKyAgICAgICAgZmV0Y2hUcmFu
c2Zvcm1PcGVyYXRpb25MaXN0KHZhbHVlTGlzdCwgYW5pbWF0aW9uLT5mdW5jdGlvbkxpc3QsIGFu
aW1hdGlvbi0+bGlzdHNNYXRjaCwgaGFzQmlnUm90YXRpb24pOworICAgIH0KIAotICAgIG1fYW5p
bWF0aW9ucy5hZGQoa2V5ZnJhbWVzTmFtZSwgVGV4dHVyZU1hcHBlckFuaW1hdGlvbih2YWx1ZUxp
c3QsIGJveFNpemUsIGFuaW0sIHRpbWVPZmZzZXQsIGZ1bmN0aW9uTGlzdCwgbGlzdHNNYXRjaCkp
OworICAgIG1fYW5pbWF0aW9ucy5hcHBlbmQoYW5pbWF0aW9uKTsKICAgICBub3RpZnlDaGFuZ2Uo
VGV4dHVyZU1hcHBlck5vZGU6OkFuaW1hdGlvbkNoYW5nZSk7CiAgICAgbV9hbmltYXRpb25TdGFy
dGVkVGltZXIuc3RhcnRPbmVTaG90KDApOworCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZvaWQg
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnBhdXNlQW5pbWF0aW9uKGNvbnN0IFN0cmluZyYg
YW5pbWF0aW9uTmFtZSwgZG91YmxlIHRpbWVPZmZzZXQpCiB7Ci0gICAgbV9hbmltYXRpb25zLnBh
dXNlKGFuaW1hdGlvbk5hbWUsIHRpbWVPZmZzZXQpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9hbmltYXRpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX2FuaW1hdGlvbnNb
aV0tPm5hbWUgIT0gYW5pbWF0aW9uTmFtZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICBtX2FuaW1hdGlvbnNbaV0tPnBhdXNlZCA9IHRydWU7CisgICAgICAgIG5vdGlmeUNoYW5nZShU
ZXh0dXJlTWFwcGVyTm9kZTo6QW5pbWF0aW9uQ2hhbmdlKTsKKyAgICB9CiB9CiAKIHZvaWQgR3Jh
cGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnJlbW92ZUFuaW1hdGlvbihjb25zdCBTdHJpbmcmIGFu
aW1hdGlvbk5hbWUpCiB7Ci0gICAgbV9hbmltYXRpb25zLnJlbW92ZShhbmltYXRpb25OYW1lKTsK
KyAgICBmb3IgKGludCBpID0gbV9hbmltYXRpb25zLnNpemUoKSAtIDE7IGkgPj0gMDsgLS1pKSB7
CisgICAgICAgIC8vIFRoZSBzYW1lIGFuaW1hdGlvbiBuYW1lIGNhbiBiZSB1c2VkIGZvciB0d28g
YW5pbWF0aW9ucyB3aXRoIGRpZmZlcmVudCBwcm9wZXJ0aWVzLiBXZSBzaG91bGQgcmVtb3ZlIGJv
dGguCisgICAgICAgIGlmIChtX2FuaW1hdGlvbnNbaV0tPm5hbWUgIT0gYW5pbWF0aW9uTmFtZSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBtX2FuaW1hdGlvbnMucmVtb3ZlKGkpOwor
ICAgICAgICBub3RpZnlDaGFuZ2UoVGV4dHVyZU1hcHBlck5vZGU6OkFuaW1hdGlvbkNoYW5nZSk7
CisgICAgfQogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyOjphbmltYXRpb25T
dGFydGVkVGltZXJGaXJlZChUaW1lcjxHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcj4qKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAppbmRleCAxNzJmZGRhMjRmMmFlYmUy
ZjhlNWE5ZDg5MjQ5MjUzMTlkNWJkMTFhLi5lYmI5YjUzNmQ1MDY3NjQ0OGU4MjIzNTk1NWNmYmZj
ZTkyZGI5NTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaApAQCAt
OTUsNyArOTUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zeW5jUXVldWVkOwogICAgIGludCBt
X2NoYW5nZU1hc2s7CiAgICAgVGV4dHVyZU1hcHBlck5vZGU6OkNvbnRlbnREYXRhIG1fcGVuZGlu
Z0NvbnRlbnQ7Ci0gICAgVGV4dHVyZU1hcHBlckFuaW1hdGlvbnMgbV9hbmltYXRpb25zOworICAg
IFZlY3RvcjxSZWZQdHI8VGV4dHVyZU1hcHBlckFuaW1hdGlvbj4gPiBtX2FuaW1hdGlvbnM7CiAg
ICAgdm9pZCBhbmltYXRpb25TdGFydGVkVGltZXJGaXJlZChUaW1lcjxHcmFwaGljc0xheWVyVGV4
dHVyZU1hcHBlcj4qKTsKICAgICBUaW1lcjxHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcj4gbV9h
bmltYXRpb25TdGFydGVkVGltZXI7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24u
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjA4M2E2MTdhOGI1MDY1YmU2MmVm
YjczYTdiNzhkZGZmMGE1NWJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyQW5pbWF0aW9uLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI1NSArMCwwIEBACi0vKgot
IENvcHlyaWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlh
cnkoLWllcykKLQotIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLQotIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKLSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLQotIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2Vl
IHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0g
Qm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlRleHR1cmVNYXBwZXJBbmltYXRpb24uaCIKLQotI2luY2x1ZGUgIkN1cnJlbnRU
aW1lLmgiCi0jaW5jbHVkZSAiVW5pdEJlemllci5oIgotCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVS
KQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1zdGF0aWMgZG91YmxlIG5vcm1hbGl6ZWRBbmltYXRp
b25WYWx1ZShkb3VibGUgcnVubmluZ1RpbWUsIGRvdWJsZSBkdXJhdGlvbiwgYm9vbCBhbHRlcm5h
dGUpCi17Ci0gICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBjb25z
dCBpbnQgbG9vcENvdW50ID0gcnVubmluZ1RpbWUgLyBkdXJhdGlvbjsKLSAgICBjb25zdCBkb3Vi
bGUgbGFzdEZ1bGxMb29wID0gZHVyYXRpb24gKiBkb3VibGUobG9vcENvdW50KTsKLSAgICBjb25z
dCBkb3VibGUgcmVtYWluZGVyID0gcnVubmluZ1RpbWUgLSBsYXN0RnVsbExvb3A7Ci0gICAgY29u
c3QgZG91YmxlIG5vcm1hbGl6ZWQgPSByZW1haW5kZXIgLyBkdXJhdGlvbjsKLSAgICByZXR1cm4g
KGxvb3BDb3VudCAlIDIgJiYgYWx0ZXJuYXRlKSA/ICgxIC0gbm9ybWFsaXplZCkgOiBub3JtYWxp
emVkOwotfQotCi1zdGF0aWMgZmxvYXQgYXBwbHlPcGFjaXR5QW5pbWF0aW9uKGZsb2F0IGZyb21P
cGFjaXR5LCBmbG9hdCB0b09wYWNpdHksIGRvdWJsZSBwcm9ncmVzcykKLXsKLSAgICAvLyBPcHRp
bWl6YXRpb246IHNwZWNpYWwgY2FzZSB0aGUgZWRnZSB2YWx1ZXMgKDAgYW5kIDEpLgotICAgIGlm
IChwcm9ncmVzcyA9PSAxLjApCi0gICAgICAgIHJldHVybiB0b09wYWNpdHk7Ci0KLSAgICBpZiAo
IXByb2dyZXNzKQotICAgICAgICByZXR1cm4gZnJvbU9wYWNpdHk7Ci0KLSAgICByZXR1cm4gZnJv
bU9wYWNpdHkgKyBwcm9ncmVzcyAqICh0b09wYWNpdHkgLSBmcm9tT3BhY2l0eSk7Ci19Ci0KLXN0
YXRpYyBpbmxpbmUgZG91YmxlIHNvbHZlRXBzaWxvbihkb3VibGUgZHVyYXRpb24pCi17Ci0gICAg
cmV0dXJuIDEuMCAvICgyMDAuMCAqIGR1cmF0aW9uKTsKLX0KLQotc3RhdGljIGlubGluZSBkb3Vi
bGUgc29sdmVDdWJpY0JlemllckZ1bmN0aW9uKGRvdWJsZSBwMXgsIGRvdWJsZSBwMXksIGRvdWJs
ZSBwMngsIGRvdWJsZSBwMnksIGRvdWJsZSB0LCBkb3VibGUgZHVyYXRpb24pCi17Ci0gICAgcmV0
dXJuIFVuaXRCZXppZXIocDF4LCBwMXksIHAyeCwgcDJ5KS5zb2x2ZSh0LCBzb2x2ZUVwc2lsb24o
ZHVyYXRpb24pKTsKLX0KLQotc3RhdGljIGlubGluZSBkb3VibGUgc29sdmVTdGVwc0Z1bmN0aW9u
KGludCBudW1TdGVwcywgYm9vbCBzdGVwQXRTdGFydCwgZG91YmxlIHQpCi17Ci0gICAgaWYgKHN0
ZXBBdFN0YXJ0KQotICAgICAgICByZXR1cm4gc3RkOjptaW4oMS4wLCAoZmxvb3IobnVtU3RlcHMg
KiB0KSArIDEpIC8gbnVtU3RlcHMpOwotICAgIHJldHVybiBmbG9vcihudW1TdGVwcyAqIHQpIC8g
bnVtU3RlcHM7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgZmxvYXQgYXBwbHlUaW1pbmdGdW5jdGlvbihj
b25zdCBUaW1pbmdGdW5jdGlvbiogdGltaW5nRnVuY3Rpb24sIGZsb2F0IHByb2dyZXNzLCBkb3Vi
bGUgZHVyYXRpb24pCi17Ci0gICAgaWYgKCF0aW1pbmdGdW5jdGlvbikKLSAgICAgICAgcmV0dXJu
IHByb2dyZXNzOwotCi0gICAgaWYgKHRpbWluZ0Z1bmN0aW9uLT5pc0N1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb24oKSkgewotICAgICAgICBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKiBj
dGYgPSBzdGF0aWNfY2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKj4odGltaW5n
RnVuY3Rpb24pOwotICAgICAgICByZXR1cm4gc29sdmVDdWJpY0JlemllckZ1bmN0aW9uKGN0Zi0+
eDEoKSwgY3RmLT55MSgpLCBjdGYtPngyKCksIGN0Zi0+eTIoKSwgcHJvZ3Jlc3MsIGR1cmF0aW9u
KTsKLSAgICB9Ci0KLSAgICBpZiAodGltaW5nRnVuY3Rpb24tPmlzU3RlcHNUaW1pbmdGdW5jdGlv
bigpKSB7Ci0gICAgICAgIGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24qIHN0ZiA9IHN0YXRpY19j
YXN0PGNvbnN0IFN0ZXBzVGltaW5nRnVuY3Rpb24qPih0aW1pbmdGdW5jdGlvbik7Ci0gICAgICAg
IHJldHVybiBzb2x2ZVN0ZXBzRnVuY3Rpb24oc3RmLT5udW1iZXJPZlN0ZXBzKCksIHN0Zi0+c3Rl
cEF0U3RhcnQoKSwgZG91YmxlKHByb2dyZXNzKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHByb2dy
ZXNzOwotfQotCi1zdGF0aWMgVHJhbnNmb3JtYXRpb25NYXRyaXggYXBwbHlUcmFuc2Zvcm1Bbmlt
YXRpb24oY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyogZnJvbSwgY29uc3QgVHJhbnNmb3JtT3Bl
cmF0aW9ucyogdG8sIGRvdWJsZSBwcm9ncmVzcywgY29uc3QgSW50U2l6ZSYgYm94U2l6ZSwgY29u
c3QgVmVjdG9yPFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZT4gZnVuY3Rpb25MaXN0
LCBib29sIGxpc3RzTWF0Y2gpCi17Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4Owot
Ci0gICAgLy8gRmlyc3QgZnJhbWUgb2YgYW4gYW5pbWF0aW9uLgotICAgIGlmICghcHJvZ3Jlc3Mp
IHsKLSAgICAgICAgZnJvbS0+YXBwbHkoYm94U2l6ZSwgbWF0cml4KTsKLSAgICAgICAgcmV0dXJu
IG1hdHJpeDsKLSAgICB9Ci0KLSAgICAvLyBMYXN0IGZyYW1lIG9mIGFuIGFuaW1hdGlvbi4KLSAg
ICBpZiAocHJvZ3Jlc3MgPT0gMSkgewotICAgICAgICB0by0+YXBwbHkoYm94U2l6ZSwgbWF0cml4
KTsKLSAgICAgICAgcmV0dXJuIG1hdHJpeDsKLSAgICB9Ci0KLSAgICAvLyBJZiB3ZSBoYXZlIGlu
Y29tcGF0aWJsZSBvcGVyYXRpb24gbGlzdHMsIHdlIGJsZW5kIHRoZSByZXN1bHRpbmcgbWF0cmlj
ZXMuCi0gICAgaWYgKCFsaXN0c01hdGNoKSB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGZyb21NYXRyaXg7Ci0gICAgICAgIHRvLT5hcHBseShib3hTaXplLCBtYXRyaXgpOwotICAgICAg
ICBmcm9tLT5hcHBseShib3hTaXplLCBmcm9tTWF0cml4KTsKLSAgICAgICAgbWF0cml4LmJsZW5k
KGZyb21NYXRyaXgsIHByb2dyZXNzKTsKLSAgICAgICAgcmV0dXJuIG1hdHJpeDsKLSAgICB9Ci0K
LSAgICAvLyBBbmltYXRpb24gdG8gIi13ZWJraXQtdHJhbnNmb3JtOiBub25lIi4KLSAgICBpZiAo
IXRvLT5zaXplKCkpIHsKLSAgICAgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBibGVuZGVkKCp0byk7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25MaXN0LnNpemUoKTsgKytp
KQotICAgICAgICAgICAgYmxlbmRlZC5vcGVyYXRpb25zKClbaV0tPmJsZW5kKDAsIHByb2dyZXNz
LCB0cnVlKS0+YXBwbHkobWF0cml4LCBib3hTaXplKTsKLSAgICAgICAgcmV0dXJuIG1hdHJpeDsK
LSAgICB9Ci0KLSAgICAvLyBBbmltYXRpb24gZnJvbSAiLXdlYmtpdC10cmFuc2Zvcm06IG5vbmUi
LgotICAgIGlmICghZnJvbS0+c2l6ZSgpKSB7Ci0gICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMg
YmxlbmRlZCgqZnJvbSk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25M
aXN0LnNpemUoKTsgKytpKQotICAgICAgICAgICAgYmxlbmRlZC5vcGVyYXRpb25zKClbaV0tPmJs
ZW5kKDAsIDEuIC0gcHJvZ3Jlc3MsIHRydWUpLT5hcHBseShtYXRyaXgsIGJveFNpemUpOwotICAg
ICAgICByZXR1cm4gbWF0cml4OwotICAgIH0KLQotICAgIC8vIE5vcm1hbCBhbmltYXRpb24gd2l0
aCBhIG1hdGNoaW5nIG9wZXJhdGlvbiBsaXN0LgotICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgYmxl
bmRlZCgqdG8pOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25MaXN0LnNpemUo
KTsgKytpKQotICAgICAgICBibGVuZGVkLm9wZXJhdGlvbnMoKVtpXS0+YmxlbmQoZnJvbS0+YXQo
aSksIHByb2dyZXNzLCAhZnJvbS0+YXQoaSkpLT5hcHBseShtYXRyaXgsIGJveFNpemUpOwotICAg
IHJldHVybiBtYXRyaXg7Ci19Ci0KLQotVGV4dHVyZU1hcHBlckFuaW1hdGlvbjo6VGV4dHVyZU1h
cHBlckFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYga2V5ZnJhbWVzLCBjb25zdCBJ
bnRTaXplJiBib3hTaXplLCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgZG91YmxlIHRpbWVP
ZmZzZXQsIGNvbnN0IFZlY3RvcjxUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGU+JiBm
dW5jdGlvbkxpc3QsIGJvb2wgbGlzdHNNYXRjaCkKLSAgICA6IG1fa2V5ZnJhbWVzKGtleWZyYW1l
cykKLSAgICAsIG1fYm94U2l6ZShib3hTaXplKQotICAgICwgbV9hbmltYXRpb24oQW5pbWF0aW9u
OjpjcmVhdGUoYW5pbWF0aW9uKSkKLSAgICAsIG1fZnVuY3Rpb25MaXN0KGZ1bmN0aW9uTGlzdCkK
LSAgICAsIG1fbGlzdHNNYXRjaChsaXN0c01hdGNoKQotICAgICwgbV9zdGFydFRpbWUoV1RGOjpj
dXJyZW50VGltZSgpIC0gdGltZU9mZnNldCkKLSAgICAsIG1fcGF1c2VUaW1lKDApCi0gICAgLCBt
X3N0YXRlKFBsYXlpbmdTdGF0ZSkKLXsKLX0KLQotdm9pZCBUZXh0dXJlTWFwcGVyQW5pbWF0aW9u
OjphcHBseUludGVybmFsKFRleHR1cmVNYXBwZXJBbmltYXRpb25DbGllbnQqIGNsaWVudCwgY29u
c3QgQW5pbWF0aW9uVmFsdWUqIGZyb20sIGNvbnN0IEFuaW1hdGlvblZhbHVlKiB0bywgZmxvYXQg
cHJvZ3Jlc3MpCi17Ci0gICAgc3dpdGNoIChtX2tleWZyYW1lcy5wcm9wZXJ0eSgpKSB7Ci0gICAg
Y2FzZSBBbmltYXRlZFByb3BlcnR5T3BhY2l0eToKLSAgICAgICAgY2xpZW50LT5zZXRPcGFjaXR5
KGFwcGx5T3BhY2l0eUFuaW1hdGlvbigoc3RhdGljX2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25W
YWx1ZSo+KGZyb20pLT52YWx1ZSgpKSwgKHN0YXRpY19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9u
VmFsdWUqPih0byktPnZhbHVlKCkpLCBwcm9ncmVzcykpOwotICAgICAgICByZXR1cm47Ci0gICAg
Y2FzZSBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtOgotICAgICAgICBjbGllbnQtPnNl
dFRyYW5zZm9ybShhcHBseVRyYW5zZm9ybUFuaW1hdGlvbihzdGF0aWNfY2FzdDxjb25zdCBUcmFu
c2Zvcm1BbmltYXRpb25WYWx1ZSo+KGZyb20pLT52YWx1ZSgpLCBzdGF0aWNfY2FzdDxjb25zdCBU
cmFuc2Zvcm1BbmltYXRpb25WYWx1ZSo+KHRvKS0+dmFsdWUoKSwgcHJvZ3Jlc3MsIG1fYm94U2l6
ZSwgbV9mdW5jdGlvbkxpc3QsIG1fbGlzdHNNYXRjaCkpOwotICAgICAgICByZXR1cm47Ci0gICAg
ZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotfQotCi1ib29s
IFRleHR1cmVNYXBwZXJBbmltYXRpb246OmlzQWN0aXZlKCkgY29uc3QKLXsKLSAgICBpZiAoc3Rh
dGUoKSAhPSBTdG9wcGVkU3RhdGUpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgcmV0dXJu
IG1fYW5pbWF0aW9uLT5maWxsc0ZvcndhcmRzKCk7Ci19Ci0KLWJvb2wgVGV4dHVyZU1hcHBlckFu
aW1hdGlvbnM6Omhhc0FjdGl2ZUFuaW1hdGlvbnNPZlR5cGUoQW5pbWF0ZWRQcm9wZXJ0eUlEIHR5
cGUpIGNvbnN0Ci17Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFRleHR1cmVNYXBwZXJBbmltYXRpb24+
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2FuaW1hdGlvbnMuZW5kKCk7Ci0gICAgZm9yIChIYXNo
TWFwPFN0cmluZywgVGV4dHVyZU1hcHBlckFuaW1hdGlvbj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bV9hbmltYXRpb25zLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBjb25zdCBU
ZXh0dXJlTWFwcGVyQW5pbWF0aW9uJiBhbmltYXRpb24gPSBpdC0+c2Vjb25kOwotICAgICAgICBp
ZiAoYW5pbWF0aW9uLmlzQWN0aXZlKCkgJiYgYW5pbWF0aW9uLnByb3BlcnR5KCkgPT0gdHlwZSkK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LWJvb2wgVGV4dHVyZU1hcHBlckFuaW1hdGlvbnM6Omhhc1J1bm5pbmdBbmltYXRpb25zKCkgY29u
c3QKLXsKLSAgICBIYXNoTWFwPFN0cmluZywgVGV4dHVyZU1hcHBlckFuaW1hdGlvbj46OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IG1fYW5pbWF0aW9ucy5lbmQoKTsKLSAgICBmb3IgKEhhc2hNYXA8U3Ry
aW5nLCBUZXh0dXJlTWFwcGVyQW5pbWF0aW9uPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2FuaW1h
dGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGNvbnN0IFRleHR1cmVN
YXBwZXJBbmltYXRpb24mIGFuaW1hdGlvbiA9IGl0LT5zZWNvbmQ7Ci0gICAgICAgIGlmIChhbmlt
YXRpb24uc3RhdGUoKSA9PSBUZXh0dXJlTWFwcGVyQW5pbWF0aW9uOjpQbGF5aW5nU3RhdGUpCi0g
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LXZvaWQgVGV4dHVyZU1hcHBlckFuaW1hdGlvbjo6YXBwbHkoVGV4dHVyZU1hcHBlckFuaW1hdGlv
bkNsaWVudCogY2xpZW50KQotewotICAgIGlmIChzdGF0ZSgpID09IFN0b3BwZWRTdGF0ZSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgZG91YmxlIHRvdGFsUnVubmluZ1RpbWUgPSBtX3N0YXRlID09
IFBhdXNlZFN0YXRlID8gbV9wYXVzZVRpbWUgOiBXVEY6OmN1cnJlbnRUaW1lKCkgLSBtX3N0YXJ0
VGltZTsKLSAgICBkb3VibGUgbm9ybWFsaXplZFZhbHVlID0gbm9ybWFsaXplZEFuaW1hdGlvblZh
bHVlKHRvdGFsUnVubmluZ1RpbWUsIG1fYW5pbWF0aW9uLT5kdXJhdGlvbigpLCBtX2FuaW1hdGlv
bi0+ZGlyZWN0aW9uKCkpOwotCi0gICAgaWYgKG1fYW5pbWF0aW9uLT5pdGVyYXRpb25Db3VudCgp
ICE9IEFuaW1hdGlvbjo6SXRlcmF0aW9uQ291bnRJbmZpbml0ZSAmJiB0b3RhbFJ1bm5pbmdUaW1l
ID49IG1fYW5pbWF0aW9uLT5kdXJhdGlvbigpICogbV9hbmltYXRpb24tPml0ZXJhdGlvbkNvdW50
KCkpCi0gICAgICAgIHNldFN0YXRlKFN0b3BwZWRTdGF0ZSk7Ci0KLSAgICBpZiAoIW5vcm1hbGl6
ZWRWYWx1ZSkgewotICAgICAgICBhcHBseUludGVybmFsKGNsaWVudCwgbV9rZXlmcmFtZXMuYXQo
MCksIG1fa2V5ZnJhbWVzLmF0KDEpLCAwKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBp
ZiAobm9ybWFsaXplZFZhbHVlID09IDEuMCkgewotICAgICAgICBhcHBseUludGVybmFsKGNsaWVu
dCwgbV9rZXlmcmFtZXMuYXQobV9rZXlmcmFtZXMuc2l6ZSgpIC0gMiksIG1fa2V5ZnJhbWVzLmF0
KG1fa2V5ZnJhbWVzLnNpemUoKSAtIDEpLCAxKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAg
ICBpZiAobV9rZXlmcmFtZXMuc2l6ZSgpID09IDIpIHsKLSAgICAgICAgbm9ybWFsaXplZFZhbHVl
ID0gYXBwbHlUaW1pbmdGdW5jdGlvbihtX2FuaW1hdGlvbi0+dGltaW5nRnVuY3Rpb24oKS5nZXQo
KSwgbm9ybWFsaXplZFZhbHVlLCBtX2FuaW1hdGlvbi0+ZHVyYXRpb24oKSk7Ci0gICAgICAgIGFw
cGx5SW50ZXJuYWwoY2xpZW50LCBtX2tleWZyYW1lcy5hdCgwKSwgbV9rZXlmcmFtZXMuYXQoMSks
IG5vcm1hbGl6ZWRWYWx1ZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fa2V5ZnJhbWVzLnNpemUoKSAtIDE7ICsraSkgewotICAgICAgICBj
b25zdCBBbmltYXRpb25WYWx1ZSogZnJvbSA9IG1fa2V5ZnJhbWVzLmF0KGkpOwotICAgICAgICBj
b25zdCBBbmltYXRpb25WYWx1ZSogdG8gPSBtX2tleWZyYW1lcy5hdChpICsgMSk7Ci0gICAgICAg
IGlmIChmcm9tLT5rZXlUaW1lKCkgPiBub3JtYWxpemVkVmFsdWUgfHwgdG8tPmtleVRpbWUoKSA8
IG5vcm1hbGl6ZWRWYWx1ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIG5vcm1h
bGl6ZWRWYWx1ZSA9IChub3JtYWxpemVkVmFsdWUgLSBmcm9tLT5rZXlUaW1lKCkpIC8gKHRvLT5r
ZXlUaW1lKCkgLSBmcm9tLT5rZXlUaW1lKCkpOwotICAgICAgICBub3JtYWxpemVkVmFsdWUgPSBh
cHBseVRpbWluZ0Z1bmN0aW9uKGZyb20tPnRpbWluZ0Z1bmN0aW9uKCksIG5vcm1hbGl6ZWRWYWx1
ZSwgbV9hbmltYXRpb24tPmR1cmF0aW9uKCkpOwotICAgICAgICBhcHBseUludGVybmFsKGNsaWVu
dCwgZnJvbSwgdG8sIG5vcm1hbGl6ZWRWYWx1ZSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0K
LQotdm9pZCBUZXh0dXJlTWFwcGVyQW5pbWF0aW9uOjpwYXVzZShkb3VibGUgb2Zmc2V0KQotewot
ICAgIC8vIEZJWE1FOiBzaG91bGQgYXBwbHkgb2Zmc2V0IGhlcmUuCi0gICAgc2V0U3RhdGUoUGF1
c2VkU3RhdGUpOwotICAgIG1fcGF1c2VUaW1lID0gV1RGOjpjdXJyZW50VGltZSgpIC0gb2Zmc2V0
OwotfQotCi12b2lkIFRleHR1cmVNYXBwZXJBbmltYXRpb25zOjpwYXVzZShjb25zdCBTdHJpbmcm
IG5hbWUsIGRvdWJsZSBvZmZzZXQpCi17Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFRleHR1cmVNYXBw
ZXJBbmltYXRpb24+OjppdGVyYXRvciBpdCA9IG1fYW5pbWF0aW9ucy5maW5kKG5hbWUpOwotICAg
IGlmIChpdCA9PSBtX2FuaW1hdGlvbnMuZW5kKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBpdC0+
c2Vjb25kLnBhdXNlKG9mZnNldCk7Ci19Ci0KLXZvaWQgVGV4dHVyZU1hcHBlckFuaW1hdGlvbnM6
OmFwcGx5KFRleHR1cmVNYXBwZXJBbmltYXRpb25DbGllbnQqIGNsaWVudCkKLXsKLSAgICBIYXNo
TWFwPFN0cmluZywgVGV4dHVyZU1hcHBlckFuaW1hdGlvbj46Oml0ZXJhdG9yIGVuZCA9IG1fYW5p
bWF0aW9ucy5lbmQoKTsKLSAgICBmb3IgKEhhc2hNYXA8U3RyaW5nLCBUZXh0dXJlTWFwcGVyQW5p
bWF0aW9uPjo6aXRlcmF0b3IgaXQgPSBtX2FuaW1hdGlvbnMuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQotICAgICAgICBpdC0+c2Vjb25kLmFwcGx5KGNsaWVudCk7Ci19Ci0KLX0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDVlMjI2ZThhZTY0OWYzNTU3YTI1YThiNmQzMTViZmNiNzllMWI1ZjIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmltYXRpb24uaAorKysgL2Rldi9udWxs
CkBAIC0xLDg2ICswLDAgQEAKLS8qCi0gQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBvcmF0
aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotCi0gVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgotCi0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g
dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIGFsb25n
IHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdy
aXRlIHRvCi0gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKLSBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwot
Ci0jaWZuZGVmIFRleHR1cmVNYXBwZXJBbmltYXRpb25faAotI2RlZmluZSBUZXh0dXJlTWFwcGVy
QW5pbWF0aW9uX2gKLQotI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKLSNpbmNsdWRlICJIYXNo
TWFwLmgiCi0jaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKLSNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdIYXNoLmg+Ci0KLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci0KLWNsYXNzIFRleHR1cmVNYXBwZXJBbmltYXRpb25DbGllbnQgewotcHVibGlj
OgotICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldE9wYWNpdHkoZmxvYXQpID0gMDsKLX07Ci0K
LWNsYXNzIFRleHR1cmVNYXBwZXJBbmltYXRpb24gewotcHVibGljOgotICAgIGVudW0gQW5pbWF0
aW9uU3RhdGUgeyBQbGF5aW5nU3RhdGUsIFBhdXNlZFN0YXRlLCBTdG9wcGVkU3RhdGUgfTsKLQot
ICAgIFRleHR1cmVNYXBwZXJBbmltYXRpb24oKQotICAgICAgICA6IG1fa2V5ZnJhbWVzKEFuaW1h
dGVkUHJvcGVydHlJbnZhbGlkKQotICAgIHsgfQotICAgIFRleHR1cmVNYXBwZXJBbmltYXRpb24o
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmLCBjb25zdCBJbnRTaXplJiwgY29uc3QgQW5pbWF0aW9u
KiwgZG91YmxlLCBjb25zdCBWZWN0b3I8VHJhbnNmb3JtT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBl
PiYsIGJvb2wpOwotICAgIHZvaWQgYXBwbHkoVGV4dHVyZU1hcHBlckFuaW1hdGlvbkNsaWVudCop
OwotICAgIHZvaWQgcGF1c2UoZG91YmxlKTsKLSAgICBBbmltYXRpb25TdGF0ZSBzdGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RhdGU7IH0KLSAgICB2b2lkIHNldFN0YXRlKEFuaW1hdGlvblN0YXRl
IHMpIHsgbV9zdGF0ZSA9IHM7IH0KLSAgICBBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkoKSBj
b25zdCB7IHJldHVybiBtX2tleWZyYW1lcy5wcm9wZXJ0eSgpOyB9Ci0gICAgYm9vbCBpc0FjdGl2
ZSgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIHZvaWQgYXBwbHlJbnRlcm5hbChUZXh0dXJlTWFw
cGVyQW5pbWF0aW9uQ2xpZW50KiwgY29uc3QgQW5pbWF0aW9uVmFsdWUqIGZyb20sIGNvbnN0IEFu
aW1hdGlvblZhbHVlKiB0bywgZmxvYXQgcHJvZ3Jlc3MpOwotICAgIEtleWZyYW1lVmFsdWVMaXN0
IG1fa2V5ZnJhbWVzOwotICAgIEludFNpemUgbV9ib3hTaXplOwotICAgIFJlZlB0cjxBbmltYXRp
b24+IG1fYW5pbWF0aW9uOwotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgVmVjdG9yPFRyYW5zZm9y
bU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZT4gbV9mdW5jdGlvbkxpc3Q7Ci0gICAgYm9vbCBtX2xp
c3RzTWF0Y2g7Ci0gICAgYm9vbCBtX2hhc0JpZ1JvdGF0aW9uOwotICAgIGRvdWJsZSBtX3N0YXJ0
VGltZTsKLSAgICBkb3VibGUgbV9wYXVzZVRpbWU7Ci0gICAgQW5pbWF0aW9uU3RhdGUgbV9zdGF0
ZTsKLX07Ci0KLWNsYXNzIFRleHR1cmVNYXBwZXJBbmltYXRpb25zIHsKLXB1YmxpYzoKLSAgICBU
ZXh0dXJlTWFwcGVyQW5pbWF0aW9ucygpIHsgfQotCi0gICAgdm9pZCBhZGQoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBUZXh0dXJlTWFwcGVyQW5pbWF0aW9uJiBhbmltYXRpb24pIHsgbV9hbmlt
YXRpb25zLmFkZChuYW1lLCBhbmltYXRpb24pOyB9Ci0gICAgdm9pZCByZW1vdmUoY29uc3QgU3Ry
aW5nJiBuYW1lKSB7IG1fYW5pbWF0aW9ucy5yZW1vdmUobmFtZSk7IH0KLSAgICB2b2lkIHBhdXNl
KGNvbnN0IFN0cmluZyYsIGRvdWJsZSk7Ci0gICAgdm9pZCBhcHBseShUZXh0dXJlTWFwcGVyQW5p
bWF0aW9uQ2xpZW50Kik7Ci0gICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9hbmlt
YXRpb25zLmlzRW1wdHkoKTsgfQotCi0gICAgYm9vbCBoYXNSdW5uaW5nQW5pbWF0aW9ucygpIGNv
bnN0OwotICAgIGJvb2wgaGFzQWN0aXZlQW5pbWF0aW9uc09mVHlwZShBbmltYXRlZFByb3BlcnR5
SUQgdHlwZSkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFRleHR1cmVN
YXBwZXJBbmltYXRpb24+IG1fYW5pbWF0aW9uczsKLX07Ci0KLX0KLSNlbmRpZiAvLyBVU0UoVEVY
VFVSRV9NQVBQRVIpCi0KLSNlbmRpZiAvLyBUZXh0dXJlTWFwcGVyQW5pbWF0aW9uX2gKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlck5vZGUuY3BwCmluZGV4IGNjZjQ5YmM5ODRiYWE1YzRkMThmZjgzMGQ4OTYwMzFk
MDY3Mjg2MjUuLmI2OGU4MTJkYmI3YmI2NjE2NzU0MDlmNGExOGEzNWU5MzUzODQ0OGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJOb2RlLmNwcApAQCAtNTg1LDggKzU4NSwxMSBAQCB2b2lkIFRleHR1cmVN
YXBwZXJOb2RlOjpzeW5jQ29tcG9zaXRpbmdTdGF0ZVNlbGYoR3JhcGhpY3NMYXllclRleHR1cmVN
YXBwZXIqIGdyYQogICAgICAgICAgICBsYXllci0+bV9lZmZlY3RUYXJnZXQgPSB0aGlzOwogICAg
IH0KIAotICAgIGlmIChjaGFuZ2VNYXNrICYgQW5pbWF0aW9uQ2hhbmdlKQotICAgICAgICBtX2Fu
aW1hdGlvbnMgPSBncmFwaGljc0xheWVyLT5tX2FuaW1hdGlvbnM7CisgICAgaWYgKGNoYW5nZU1h
c2sgJiBBbmltYXRpb25DaGFuZ2UpIHsKKyAgICAgICAgbV9hbmltYXRpb25zLmNsZWFyKCk7Cisg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZ3JhcGhpY3NMYXllci0+bV9hbmltYXRpb25z
LnNpemUoKTsgKytpKQorICAgICAgICAgICAgbV9hbmltYXRpb25zLmFwcGVuZChncmFwaGljc0xh
eWVyLT5tX2FuaW1hdGlvbnNbaV0pOworICAgIH0KIAogICAgIG1fc3RhdGUubWFza0xheWVyID0g
dG9UZXh0dXJlTWFwcGVyTm9kZShncmFwaGljc0xheWVyLT5tYXNrTGF5ZXIoKSk7CiAgICAgbV9z
dGF0ZS5yZXBsaWNhTGF5ZXIgPSB0b1RleHR1cmVNYXBwZXJOb2RlKGdyYXBoaWNzTGF5ZXItPnJl
cGxpY2FMYXllcigpKTsKQEAgLTYxMSw2ICs2MTQsMTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTm9k
ZTo6c3luY0NvbXBvc2l0aW5nU3RhdGVTZWxmKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKiBn
cmEKICAgICBpZiAoIW1fY3VycmVudENvbnRlbnQubmVlZHNEaXNwbGF5KQogICAgICAgICBtX2N1
cnJlbnRDb250ZW50Lm5lZWRzRGlzcGxheVJlY3QudW5pdGUocGVuZGluZ0NvbnRlbnQubmVlZHNE
aXNwbGF5UmVjdCk7CiAKKyAgICBpZiAoIWhhc09wYWNpdHlBbmltYXRpb24oKSkKKyAgICAgICAg
bV9vcGFjaXR5ID0gbV9zdGF0ZS5vcGFjaXR5OworICAgIGlmICghaGFzVHJhbnNmb3JtQW5pbWF0
aW9uKCkpCisgICAgICAgIG1fdHJhbnNmb3JtLnNldExvY2FsVHJhbnNmb3JtKG1fc3RhdGUudHJh
bnNmb3JtKTsKKwogICAgIG1fdHJhbnNmb3JtLnNldFBvc2l0aW9uKG1fc3RhdGUucG9zKTsKICAg
ICBtX3RyYW5zZm9ybS5zZXRBbmNob3JQb2ludChtX3N0YXRlLmFuY2hvclBvaW50KTsKICAgICBt
X3RyYW5zZm9ybS5zZXRTaXplKG1fc3RhdGUuc2l6ZSk7CkBAIC02MjAsOCArNjI4LDEwIEBAIHZv
aWQgVGV4dHVyZU1hcHBlck5vZGU6OnN5bmNDb21wb3NpdGluZ1N0YXRlU2VsZihHcmFwaGljc0xh
eWVyVGV4dHVyZU1hcHBlciogZ3JhCiAKIGJvb2wgVGV4dHVyZU1hcHBlck5vZGU6OmRlc2NlbmRh
bnRzT3JTZWxmSGF2ZVJ1bm5pbmdBbmltYXRpb25zKCkgY29uc3QKIHsKLSAgICBpZiAobV9hbmlt
YXRpb25zLmhhc1J1bm5pbmdBbmltYXRpb25zKCkpCi0gICAgICAgIHJldHVybiB0cnVlOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hbmltYXRpb25zLnNpemUoKTsgKytpKSB7CisgICAg
ICAgIGlmICghbV9hbmltYXRpb25zW2ldLT5wYXVzZWQpCisgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fY2hpbGRyZW4uc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgaWYgKG1fY2hpbGRyZW5baV0tPmRlc2NlbmRhbnRzT3JTZWxmSGF2
ZVJ1bm5pbmdBbmltYXRpb25zKCkpCkBAIC02MzEsMTggKzY0MSwxOTcgQEAgYm9vbCBUZXh0dXJl
TWFwcGVyTm9kZTo6ZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0FuaW1hdGlvbnMoKSBjb25z
dAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyTm9kZTo6c3luY0Fu
aW1hdGlvbnMoKQorc3RhdGljIGRvdWJsZSBub3JtYWxpemVkQW5pbWF0aW9uVmFsdWUoZG91Ymxl
IHJ1bm5pbmdUaW1lLCBkb3VibGUgZHVyYXRpb24sIGJvb2wgYWx0ZXJuYXRlKQoreworICAgIGlm
ICghZHVyYXRpb24pCisgICAgICAgIHJldHVybiAwOworICAgIGNvbnN0IGludCBsb29wQ291bnQg
PSBydW5uaW5nVGltZSAvIGR1cmF0aW9uOworICAgIGNvbnN0IGRvdWJsZSBsYXN0RnVsbExvb3Ag
PSBkdXJhdGlvbiAqIGRvdWJsZShsb29wQ291bnQpOworICAgIGNvbnN0IGRvdWJsZSByZW1haW5k
ZXIgPSBydW5uaW5nVGltZSAtIGxhc3RGdWxsTG9vcDsKKyAgICBjb25zdCBkb3VibGUgbm9ybWFs
aXplZCA9IHJlbWFpbmRlciAvIGR1cmF0aW9uOworICAgIHJldHVybiAobG9vcENvdW50ICUgMiAm
JiBhbHRlcm5hdGUpID8gKDEgLSBub3JtYWxpemVkKSA6IG5vcm1hbGl6ZWQ7Cit9CisKK3ZvaWQg
VGV4dHVyZU1hcHBlck5vZGU6OmFwcGx5T3BhY2l0eUFuaW1hdGlvbihmbG9hdCBmcm9tT3BhY2l0
eSwgZmxvYXQgdG9PcGFjaXR5LCBkb3VibGUgcHJvZ3Jlc3MpCit7CisgICAgLy8gT3B0aW1pemF0
aW9uOiBzcGVjaWFsIGNhc2UgdGhlIGVkZ2UgdmFsdWVzICgwIGFuZCAxKS4KKyAgICBpZiAocHJv
Z3Jlc3MgPT0gMS4wKQorICAgICAgICBzZXRPcGFjaXR5KHRvT3BhY2l0eSk7CisgICAgZWxzZSBp
ZiAoIXByb2dyZXNzKQorICAgICAgICBzZXRPcGFjaXR5KGZyb21PcGFjaXR5KTsKKyAgICBlbHNl
CisgICAgICAgIHNldE9wYWNpdHkoZnJvbU9wYWNpdHkgKyBwcm9ncmVzcyAqICh0b09wYWNpdHkg
LSBmcm9tT3BhY2l0eSkpOworfQorCitzdGF0aWMgaW5saW5lIGRvdWJsZSBzb2x2ZUVwc2lsb24o
ZG91YmxlIGR1cmF0aW9uKQoreworICAgIHJldHVybiAxLjAgLyAoMjAwLjAgKiBkdXJhdGlvbik7
Cit9CisKK3N0YXRpYyBpbmxpbmUgZG91YmxlIHNvbHZlQ3ViaWNCZXppZXJGdW5jdGlvbihkb3Vi
bGUgcDF4LCBkb3VibGUgcDF5LCBkb3VibGUgcDJ4LCBkb3VibGUgcDJ5LCBkb3VibGUgdCwgZG91
YmxlIGR1cmF0aW9uKQoreworICAgIFVuaXRCZXppZXIgYmV6aWVyKHAxeCwgcDF5LCBwMngsIHAy
eSk7CisgICAgcmV0dXJuIGJlemllci5zb2x2ZSh0LCBzb2x2ZUVwc2lsb24oZHVyYXRpb24pKTsK
K30KKworc3RhdGljIGlubGluZSBkb3VibGUgc29sdmVTdGVwc0Z1bmN0aW9uKGludCBudW1TdGVw
cywgYm9vbCBzdGVwQXRTdGFydCwgZG91YmxlIHQpCit7CisgICAgaWYgKHN0ZXBBdFN0YXJ0KQor
ICAgICAgICByZXR1cm4gc3RkOjptaW4oMS4wLCAoZmxvb3IobnVtU3RlcHMgKiB0KSArIDEpIC8g
bnVtU3RlcHMpOworICAgIHJldHVybiBmbG9vcihudW1TdGVwcyAqIHQpIC8gbnVtU3RlcHM7Cit9
CisKK3N0YXRpYyBpbmxpbmUgZmxvYXQgYXBwbHlUaW1pbmdGdW5jdGlvbihjb25zdCBUaW1pbmdG
dW5jdGlvbiogdGltaW5nRnVuY3Rpb24sIGZsb2F0IHByb2dyZXNzLCBkb3VibGUgZHVyYXRpb24p
Cit7CisgICAgaWYgKCF0aW1pbmdGdW5jdGlvbikKKyAgICAgICAgcmV0dXJuIHByb2dyZXNzOwor
CisgICAgaWYgKHRpbWluZ0Z1bmN0aW9uLT5pc0N1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24oKSkg
eworICAgICAgICBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKiBjdGYgPSBzdGF0aWNf
Y2FzdDxjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKj4odGltaW5nRnVuY3Rpb24pOwor
ICAgICAgICByZXR1cm4gc29sdmVDdWJpY0JlemllckZ1bmN0aW9uKGN0Zi0+eDEoKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdGYtPnkxKCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RmLT54MigpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGN0Zi0+eTIoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcm9ncmVzcywgZHVyYXRpb24pOworICAgIH0KKworICAgIGlm
ICh0aW1pbmdGdW5jdGlvbi0+aXNTdGVwc1RpbWluZ0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgY29u
c3QgU3RlcHNUaW1pbmdGdW5jdGlvbiogc3RmID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1p
bmdGdW5jdGlvbio+KHRpbWluZ0Z1bmN0aW9uKTsKKyAgICAgICAgcmV0dXJuIHNvbHZlU3RlcHNG
dW5jdGlvbihzdGYtPm51bWJlck9mU3RlcHMoKSwgc3RmLT5zdGVwQXRTdGFydCgpLCBkb3VibGUo
cHJvZ3Jlc3MpKTsKKyAgICB9CisKKyAgICByZXR1cm4gcHJvZ3Jlc3M7Cit9CisKK3ZvaWQgVGV4
dHVyZU1hcHBlck5vZGU6OmFwcGx5VHJhbnNmb3JtQW5pbWF0aW9uKGNvbnN0IFRleHR1cmVNYXBw
ZXJBbmltYXRpb24mIGFuaW1hdGlvbiwgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyogZnJvbSwg
Y29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyogdG8sIGRvdWJsZSBwcm9ncmVzcykKIHsKLSAgICBt
X2FuaW1hdGlvbnMuYXBwbHkodGhpcyk7Ci0gICAgaWYgKCFtX2FuaW1hdGlvbnMuaGFzQWN0aXZl
QW5pbWF0aW9uc09mVHlwZShBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKSkKLSAgICAg
ICAgc2V0VHJhbnNmb3JtKG1fc3RhdGUudHJhbnNmb3JtKTsKLSAgICBpZiAoIW1fYW5pbWF0aW9u
cy5oYXNBY3RpdmVBbmltYXRpb25zT2ZUeXBlKEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KSkKLSAg
ICAgICAgc2V0T3BhY2l0eShtX3N0YXRlLm9wYWNpdHkpOworICAgIC8vIE9wdGltaXphdGlvbjog
c3BlY2lhbCBjYXNlIHRoZSBlZGdlIHZhbHVlcyAoMCBhbmQgMSkuCisgICAgaWYgKHByb2dyZXNz
ID09IDEuMCB8fCAhcHJvZ3Jlc3MpIHsKKyAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0
cml4OworICAgICAgICBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zKiBvcHMgPSBwcm9ncmVzcyA/
IHRvIDogZnJvbTsKKyAgICAgICAgb3BzLT5hcHBseShhbmltYXRpb24uYm94U2l6ZSwgbWF0cml4
KTsKKyAgICAgICAgc2V0VHJhbnNmb3JtKG1hdHJpeCk7CisgICAgfQorCisgICAgaWYgKCFhbmlt
YXRpb24ubGlzdHNNYXRjaCkgeworICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0b01hdHJp
eCwgZnJvbU1hdHJpeDsKKyAgICAgICAgdG8tPmFwcGx5KGFuaW1hdGlvbi5ib3hTaXplLCB0b01h
dHJpeCk7CisgICAgICAgIGZyb20tPmFwcGx5KGFuaW1hdGlvbi5ib3hTaXplLCBmcm9tTWF0cml4
KTsKKyAgICAgICAgdG9NYXRyaXguYmxlbmQoZnJvbU1hdHJpeCwgcHJvZ3Jlc3MpOworICAgICAg
ICBzZXRUcmFuc2Zvcm0odG9NYXRyaXgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4OworCisgICAgaWYgKCF0by0+c2l6ZSgpKSB7Cisg
ICAgICAgIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlvbnMqIHN3YXAgPSB0bzsKKyAgICAgICAgdG8g
PSBmcm9tOworICAgICAgICBmcm9tID0gc3dhcDsKKyAgICB9IGVsc2UgaWYgKCFmcm9tLT5zaXpl
KCkpCisgICAgICAgIHByb2dyZXNzID0gMS4wIC0gcHJvZ3Jlc3M7CisKKyAgICBUcmFuc2Zvcm1P
cGVyYXRpb25zIGJsZW5kZWQoKnRvKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFuaW1h
dGlvbi5mdW5jdGlvbkxpc3Quc2l6ZSgpOyArK2kpCisgICAgICAgIGJsZW5kZWQub3BlcmF0aW9u
cygpW2ldLT5ibGVuZChmcm9tLT5hdChpKSwgcHJvZ3Jlc3MsICFmcm9tLT5hdChpKSktPmFwcGx5
KG1hdHJpeCwgYW5pbWF0aW9uLmJveFNpemUpOworCisgICAgc2V0VHJhbnNmb3JtKG1hdHJpeCk7
Cit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlck5vZGU6OmFwcGx5QW5pbWF0aW9uRnJhbWUoY29uc3Qg
VGV4dHVyZU1hcHBlckFuaW1hdGlvbiYgYW5pbWF0aW9uLCBjb25zdCBBbmltYXRpb25WYWx1ZSog
ZnJvbSwgY29uc3QgQW5pbWF0aW9uVmFsdWUqIHRvLCBmbG9hdCBwcm9ncmVzcykKK3sKKyAgICBz
d2l0Y2ggKGFuaW1hdGlvbi5rZXlmcmFtZXMucHJvcGVydHkoKSkgeworICAgIGNhc2UgQW5pbWF0
ZWRQcm9wZXJ0eU9wYWNpdHk6CisgICAgICAgIGFwcGx5T3BhY2l0eUFuaW1hdGlvbigoc3RhdGlj
X2Nhc3Q8Y29uc3QgRmxvYXRBbmltYXRpb25WYWx1ZSo+KGZyb20pLT52YWx1ZSgpKSwgKHN0YXRp
Y19jYXN0PGNvbnN0IEZsb2F0QW5pbWF0aW9uVmFsdWUqPih0byktPnZhbHVlKCkpLCBwcm9ncmVz
cyk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFu
c2Zvcm06CisgICAgICAgIGFwcGx5VHJhbnNmb3JtQW5pbWF0aW9uKGFuaW1hdGlvbiwgc3RhdGlj
X2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPihmcm9tKS0+dmFsdWUoKSwgc3Rh
dGljX2Nhc3Q8Y29uc3QgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUqPih0byktPnZhbHVlKCksIHBy
b2dyZXNzKTsKKyAgICAgICAgcmV0dXJuOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIH0KK30KKwordm9pZCBUZXh0dXJlTWFwcGVyTm9kZTo6YXBwbHlB
bmltYXRpb24oY29uc3QgVGV4dHVyZU1hcHBlckFuaW1hdGlvbiYgYW5pbWF0aW9uLCBkb3VibGUg
bm9ybWFsaXplZFZhbHVlKQoreworICAgIC8vIE9wdGltaXphdGlvbjogc3BlY2lhbCBjYXNlIHRo
ZSBlZGdlIHZhbHVlcyAoMCBhbmQgMSkuCisgICAgaWYgKCFub3JtYWxpemVkVmFsdWUpIHsKKyAg
ICAgICAgYXBwbHlBbmltYXRpb25GcmFtZShhbmltYXRpb24sIGFuaW1hdGlvbi5rZXlmcmFtZXMu
YXQoMCksIGFuaW1hdGlvbi5rZXlmcmFtZXMuYXQoMSksIDApOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIGlmIChub3JtYWxpemVkVmFsdWUgPT0gMS4wKSB7CisgICAgICAgIGFwcGx5QW5p
bWF0aW9uRnJhbWUoYW5pbWF0aW9uLCBhbmltYXRpb24ua2V5ZnJhbWVzLmF0KGFuaW1hdGlvbi5r
ZXlmcmFtZXMuc2l6ZSgpIC0gMiksIGFuaW1hdGlvbi5rZXlmcmFtZXMuYXQoYW5pbWF0aW9uLmtl
eWZyYW1lcy5zaXplKCkgLSAxKSwgMSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYg
KGFuaW1hdGlvbi5rZXlmcmFtZXMuc2l6ZSgpID09IDIpIHsKKyAgICAgICAgbm9ybWFsaXplZFZh
bHVlID0gYXBwbHlUaW1pbmdGdW5jdGlvbihhbmltYXRpb24uYW5pbWF0aW9uLT50aW1pbmdGdW5j
dGlvbigpLmdldCgpLCBub3JtYWxpemVkVmFsdWUsIGFuaW1hdGlvbi5hbmltYXRpb24tPmR1cmF0
aW9uKCkpOworICAgICAgICBhcHBseUFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvbiwgYW5pbWF0aW9u
LmtleWZyYW1lcy5hdCgwKSwgYW5pbWF0aW9uLmtleWZyYW1lcy5hdCgxKSwgbm9ybWFsaXplZFZh
bHVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgYW5pbWF0aW9uLmtleWZyYW1lcy5zaXplKCkgLSAxOyArK2kpIHsKKyAgICAgICAgY29uc3Qg
QW5pbWF0aW9uVmFsdWUqIGZyb20gPSBhbmltYXRpb24ua2V5ZnJhbWVzLmF0KGkpOworICAgICAg
ICBjb25zdCBBbmltYXRpb25WYWx1ZSogdG8gPSBhbmltYXRpb24ua2V5ZnJhbWVzLmF0KGkgKyAx
KTsKKyAgICAgICAgaWYgKGZyb20tPmtleVRpbWUoKSA+IG5vcm1hbGl6ZWRWYWx1ZSB8fCB0by0+
a2V5VGltZSgpIDwgbm9ybWFsaXplZFZhbHVlKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgbm9ybWFsaXplZFZhbHVlID0gKG5vcm1hbGl6ZWRWYWx1ZSAtIGZyb20tPmtleVRpbWUo
KSkgLyAodG8tPmtleVRpbWUoKSAtIGZyb20tPmtleVRpbWUoKSk7CisgICAgICAgIG5vcm1hbGl6
ZWRWYWx1ZSA9IGFwcGx5VGltaW5nRnVuY3Rpb24oZnJvbS0+dGltaW5nRnVuY3Rpb24oKSwgbm9y
bWFsaXplZFZhbHVlLCBhbmltYXRpb24uYW5pbWF0aW9uLT5kdXJhdGlvbigpKTsKKyAgICAgICAg
YXBwbHlBbmltYXRpb25GcmFtZShhbmltYXRpb24sIGZyb20sIHRvLCBub3JtYWxpemVkVmFsdWUp
OworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK2Jvb2wgVGV4dHVyZU1hcHBlck5vZGU6Omhh
c09wYWNpdHlBbmltYXRpb24oKSBjb25zdAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9hbmltYXRpb25zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGNvbnN0IFRleHR1cmVNYXBwZXJB
bmltYXRpb24mIGFuaW1hdGlvbiA9ICptX2FuaW1hdGlvbnNbaV0uZ2V0KCk7CisgICAgICAgIGlm
IChhbmltYXRpb24ua2V5ZnJhbWVzLnByb3BlcnR5KCkgPT0gQW5pbWF0ZWRQcm9wZXJ0eU9wYWNp
dHkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIFRleHR1cmVNYXBwZXJOb2RlOjpoYXNUcmFuc2Zvcm1BbmltYXRpb24oKSBjb25z
dAoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hbmltYXRpb25zLnNpemUoKTsgKytp
KSB7CisgICAgICAgIGNvbnN0IFRleHR1cmVNYXBwZXJBbmltYXRpb24mIGFuaW1hdGlvbiA9ICpt
X2FuaW1hdGlvbnNbaV0uZ2V0KCk7CisgICAgICAgIGlmIChhbmltYXRpb24ua2V5ZnJhbWVzLnBy
b3BlcnR5KCkgPT0gQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSkKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgVGV4dHVy
ZU1hcHBlck5vZGU6OnN5bmNBbmltYXRpb25zKEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyKiBs
YXllcikKK3sKKyAgICBmb3IgKGludCBpID0gbV9hbmltYXRpb25zLnNpemUoKSAtIDE7IGkgPj0g
MDsgLS1pKSB7CisgICAgICAgIFJlZlB0cjxUZXh0dXJlTWFwcGVyQW5pbWF0aW9uPiBhbmltYXRp
b24gPSBtX2FuaW1hdGlvbnNbaV07CisKKyAgICAgICAgZG91YmxlIHRvdGFsUnVubmluZ1RpbWUg
PSBXVEY6OmN1cnJlbnRUaW1lKCkgLSBhbmltYXRpb24tPnN0YXJ0VGltZTsKKyAgICAgICAgUmVm
UHRyPEFuaW1hdGlvbj4gYW5pbSA9IGFuaW1hdGlvbi0+YW5pbWF0aW9uOworICAgICAgICBkb3Vi
bGUgbm9ybWFsaXplZFZhbHVlID0gbm9ybWFsaXplZEFuaW1hdGlvblZhbHVlKHRvdGFsUnVubmlu
Z1RpbWUsIGFuaW0tPmR1cmF0aW9uKCksIGFuaW0tPmRpcmVjdGlvbigpKTsKKworICAgICAgICBp
ZiAoYW5pbS0+aXRlcmF0aW9uQ291bnQoKSAhPSBBbmltYXRpb246Okl0ZXJhdGlvbkNvdW50SW5m
aW5pdGUgJiYgdG90YWxSdW5uaW5nVGltZSA+PSBhbmltLT5kdXJhdGlvbigpICogYW5pbS0+aXRl
cmF0aW9uQ291bnQoKSkgeworICAgICAgICAgICAgLy8gV2UgYXBwbHkgYW4gYW5pbWF0aW9uIHRo
YXQgdmVyeSBjbG9zZSB0byB0aGUgZWRnZSwgc28gdGhhdCB0aGUgZmluYWwgZnJhbWUgaXMgYXBw
bGllZCwgb3Rlcndpc2Ugd2UgbWlnaHQgZ2V0LCBmb3IgZXhhbXBsZSwgYW4gb3BhY2l0eSBvZiAw
LjAxIHdoaWNoIGlzIHN0aWxsIHZpc2libGUuCisgICAgICAgICAgICBpZiAoYW5pbS0+ZmlsbHNG
b3J3YXJkcygpKSB7CisgICAgICAgICAgICAgICAgaWYgKGFuaW1hdGlvbi0+a2V5ZnJhbWVzLnBy
b3BlcnR5KCkgPT0gQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSkKKyAgICAgICAgICAg
ICAgICAgICAgc2V0VHJhbnNmb3JtKG1fc3RhdGUudHJhbnNmb3JtKTsKKyAgICAgICAgICAgICAg
ICBlbHNlIGlmIChhbmltYXRpb24tPmtleWZyYW1lcy5wcm9wZXJ0eSgpID09IEFuaW1hdGVkUHJv
cGVydHlPcGFjaXR5KQorICAgICAgICAgICAgICAgICAgICBzZXRPcGFjaXR5KG1fc3RhdGUub3Bh
Y2l0eSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1fYW5pbWF0aW9ucy5yZW1vdmUo
aSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghYW5p
bWF0aW9uLT5wYXVzZWQpCisgICAgICAgICAgICBhcHBseUFuaW1hdGlvbigqYW5pbWF0aW9uLmdl
dCgpLCBub3JtYWxpemVkVmFsdWUpOworICAgIH0KIH0KIAogdm9pZCBUZXh0dXJlTWFwcGVyTm9k
ZTo6c3luY0FuaW1hdGlvbnNSZWN1cnNpdmVseSgpCiB7Ci0gICAgc3luY0FuaW1hdGlvbnMoKTsK
KyAgICBzeW5jQW5pbWF0aW9ucygwKTsKIAogICAgIGZvciAoaW50IGkgPSBtX2NoaWxkcmVuLnNp
emUoKSAtIDE7IGkgPj0gMDsgLS1pKQogICAgICAgICBtX2NoaWxkcmVuW2ldLT5zeW5jQW5pbWF0
aW9uc1JlY3Vyc2l2ZWx5KCk7CkBAIC02NjYsNyArODU1LDggQEAgdm9pZCBUZXh0dXJlTWFwcGVy
Tm9kZTo6c3luY0NvbXBvc2l0aW5nU3RhdGUoR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqIGdy
YXBoaWMKICAgICBpZiAobV9zdGF0ZS5yZXBsaWNhTGF5ZXIpCiAgICAgICAgIG1fc3RhdGUucmVw
bGljYUxheWVyLT5zeW5jQ29tcG9zaXRpbmdTdGF0ZSh0b0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFw
cGVyKGdyYXBoaWNzTGF5ZXItPnJlcGxpY2FMYXllcigpKSwgdGV4dHVyZU1hcHBlcik7CiAKLSAg
ICBzeW5jQW5pbWF0aW9ucygpOworICAgIHN5bmNBbmltYXRpb25zKGdyYXBoaWNzTGF5ZXIpOwor
CiAgICAgY29tcHV0ZVRpbGVzKCk7CiAKICAgICBpZiAoZ3JhcGhpY3NMYXllcikKQEAgLTY4OSw1
ICs4NzksMTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTm9kZTo6c3luY0NvbXBvc2l0aW5nU3RhdGUo
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIqIGdyYXBoaWMKICAgICB9CiB9CiAKK1RleHR1cmVN
YXBwZXJBbmltYXRpb246OlRleHR1cmVNYXBwZXJBbmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1
ZUxpc3QmIHZhbHVlcykKKyAgICA6IGtleWZyYW1lcyh2YWx1ZXMpCit7CiB9CisKK30KKwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5oCmluZGV4IGZlNGIxNGM3M2VmM2JlNzNhMjQxMzA3ODg3
ZjlhNWFhYWJhOGNmYjEuLmE2OTYxZTg4YzUxMTEzMGYzYWMyMjZkNzRkNWEwYWQwNWNkYmU3ZDMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5oCkBAIC0yNyw5ICsyNywxMCBAQAogI2luY2x1ZGUgIklu
dFBvaW50SGFzaC5oIgogI2luY2x1ZGUgIkxheWVyVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiVGV4
dHVyZU1hcHBlci5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJBbmltYXRpb24uaCIKICNpbmNs
dWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybU9wZXJhdGlvbnMuaCIKKyNpbmNsdWRl
ICJUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKKyNpbmNsdWRlICJVbml0QmV6aWVyLmgi
CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNTYsNyArNTcsMjIgQEAgcHVibGljOgog
ICAgIHsgfQogfTsKIAotY2xhc3MgVGV4dHVyZU1hcHBlck5vZGUgOiBwdWJsaWMgVGV4dHVyZU1h
cHBlckFuaW1hdGlvbkNsaWVudCB7CitjbGFzcyBUZXh0dXJlTWFwcGVyQW5pbWF0aW9uIDogcHVi
bGljIFJlZkNvdW50ZWQ8VGV4dHVyZU1hcHBlckFuaW1hdGlvbj4geworcHVibGljOgorICAgIFN0
cmluZyBuYW1lOworICAgIEtleWZyYW1lVmFsdWVMaXN0IGtleWZyYW1lczsKKyAgICBJbnRTaXpl
IGJveFNpemU7CisgICAgUmVmUHRyPEFuaW1hdGlvbj4gYW5pbWF0aW9uOworICAgIGJvb2wgcGF1
c2VkOworICAgIFZlY3RvcjxUcmFuc2Zvcm1PcGVyYXRpb246Ok9wZXJhdGlvblR5cGU+IGZ1bmN0
aW9uTGlzdDsKKyAgICBib29sIGxpc3RzTWF0Y2g7CisgICAgYm9vbCBoYXNCaWdSb3RhdGlvbjsK
KyAgICBkb3VibGUgc3RhcnRUaW1lOworICAgIFRleHR1cmVNYXBwZXJBbmltYXRpb24oY29uc3Qg
S2V5ZnJhbWVWYWx1ZUxpc3QmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVy
QW5pbWF0aW9uPiBjcmVhdGUoY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlcykgeyByZXR1
cm4gYWRvcHRSZWYobmV3IFRleHR1cmVNYXBwZXJBbmltYXRpb24odmFsdWVzKSk7IH0KK307CisK
K2NsYXNzIFRleHR1cmVNYXBwZXJOb2RlIHsKIAogcHVibGljOgogICAgIC8vIFRoaXMgc2V0IG9m
IGZsYWdzIGhlbHAgdXMgZGVmZXIgd2hpY2ggcHJvcGVydGllcyBvZiB0aGUgbGF5ZXIgaGF2ZSBi
ZWVuCkBAIC0xODIsNyArMTk4LDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWludFNlbGZBbmRD
aGlsZHJlbldpdGhSZXBsaWNhKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmKTsKICAg
ICB2b2lkIHJlbmRlckNvbnRlbnQoVGV4dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5ZXIqKTsKIAot
ICAgIHZvaWQgc3luY0FuaW1hdGlvbnMoKTsKKyAgICB2b2lkIHN5bmNBbmltYXRpb25zKEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyKik7CisgICAgdm9pZCBhcHBseUFuaW1hdGlvbihjb25zdCBU
ZXh0dXJlTWFwcGVyQW5pbWF0aW9uJiwgZG91YmxlIHJ1bm5pbmdUaW1lKTsKKyAgICB2b2lkIGFw
cGx5QW5pbWF0aW9uRnJhbWUoY29uc3QgVGV4dHVyZU1hcHBlckFuaW1hdGlvbiYsIGNvbnN0IEFu
aW1hdGlvblZhbHVlKiBmcm9tLCBjb25zdCBBbmltYXRpb25WYWx1ZSogdG8sIGZsb2F0IHByb2dy
ZXNzKTsKKyAgICB2b2lkIGFwcGx5T3BhY2l0eUFuaW1hdGlvbihmbG9hdCBmcm9tT3BhY2l0eSwg
ZmxvYXQgdG9PcGFjaXR5LCBkb3VibGUpOworICAgIHZvaWQgYXBwbHlUcmFuc2Zvcm1BbmltYXRp
b24oY29uc3QgVGV4dHVyZU1hcHBlckFuaW1hdGlvbiYsIGNvbnN0IFRyYW5zZm9ybU9wZXJhdGlv
bnMqIHN0YXJ0LCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zKiBlbmQsIGRvdWJsZSk7CisgICAg
Ym9vbCBoYXNPcGFjaXR5QW5pbWF0aW9uKCkgY29uc3Q7CisgICAgYm9vbCBoYXNUcmFuc2Zvcm1B
bmltYXRpb24oKSBjb25zdDsKICAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0OwogICAgIGJvb2wg
c2hvdWxkUGFpbnRUb0ludGVybWVkaWF0ZVN1cmZhY2UoKSBjb25zdDsKIApAQCAtMjkzLDcgKzMx
NSw4IEBAIHByaXZhdGU6CiAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIFRleHR1cmVNYXBwZXIq
IG1fdGV4dHVyZU1hcHBlcjsKLSAgICBUZXh0dXJlTWFwcGVyQW5pbWF0aW9ucyBtX2FuaW1hdGlv
bnM7CisKKyAgICBWZWN0b3I8UmVmUHRyPFRleHR1cmVNYXBwZXJBbmltYXRpb24+ID4gbV9hbmlt
YXRpb25zOwogfTsKIAogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>