<?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>118137</bug_id>
          
          <creation_ts>2013-06-27 08:06:04 -0700</creation_ts>
          <short_desc>REGRESSION(r152074): It caused lots of layout and API test crash on Qt Wk2. (Requested by kadam on #webkit).</short_desc>
          <delta_ts>2013-06-27 08:42:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>104360</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>noam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>904244</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-27 08:06:04 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/152074 broke the build:
It caused lots of layout and API test crash on Qt Wk2. (Requested by kadam 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>904246</commentid>
    <comment_count>1</comment_count>
      <attachid>205610</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-27 08:06:35 -0700</bug_when>
    <thetext>Created attachment 205610
ROLLOUT of r152074

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>904254</commentid>
    <comment_count>2</comment_count>
      <attachid>205610</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-27 08:42:54 -0700</bug_when>
    <thetext>Comment on attachment 205610
ROLLOUT of r152074

Clearing flags on attachment: 205610

Committed r152099: &lt;http://trac.webkit.org/changeset/152099&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>904255</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-27 08:42:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205610</attachid>
            <date>2013-06-27 08:06:35 -0700</date>
            <delta_ts>2013-06-27 08:42:54 -0700</delta_ts>
            <desc>ROLLOUT of r152074</desc>
            <filename>bug-118137-20130627080437.patch</filename>
            <type>text/plain</type>
            <size>63663</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyMDk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWExZTU2NTFhNWY0MTEw
ZjQ0ZTg0MmNiMmIxNGM2M2NkNGYwYTI2NS4uZjBhM2IxZDBjZDY4YWIyNTc5YWZiYWVlYTQwZDg5
MTczN2MxZDY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTA2LTI3ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTUyMDc0LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2No
YW5nZXNldC8xNTIwNzQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTExODEzNworCisgICAgICAgIEl0IGNhdXNlZCBsb3RzIG9mIGxheW91dCBhbmQgQVBJ
IHRlc3QgY3Jhc2ggb24gUXQgV2syLgorICAgICAgICAoUmVxdWVzdGVkIGJ5IGthZGFtIG9uICN3
ZWJraXQpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogVGFyZ2V0LnBy
aToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29tcG9z
aXRpbmdDb29yZGluYXRvci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaDogUmVtb3ZlZC4K
KwogMjAxMy0wNi0yNyAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEu
Y29tPgogCiAgICAgICAgIEZpeGluZyBzb21lIGNvbXBpbGVyIHdhcm5pbmdzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5k
ZXggNDk4MjViZjg1MzBkN2Q5MTIxZmE5YTFhMDdmODkzMTc3MWMxNGZhMC4uM2I1MjJjYzM5OGQ1
MWE0YmRhZjNjNmE0ZWM3NjZjOTgwMGFmZTBhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBA
CisyMDEzLTA2LTI3ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTUyMDc0LgorICAgICAgICBodHRwOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xNTIwNzQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExODEzNworCisgICAgICAgIEl0IGNhdXNlZCBsb3Rz
IG9mIGxheW91dCBhbmQgQVBJIHRlc3QgY3Jhc2ggb24gUXQgV2syLgorICAgICAgICAoUmVxdWVz
dGVkIGJ5IGthZGFtIG9uICN3ZWJraXQpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojp+Q29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpDb29y
ZGluYXRlZExheWVyVHJlZUhvc3QpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKToKKyAgICAgICAgKFdlYktpdDo6Q29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYktpdDo6Q29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpmb3JjZVJlcGFpbnQpOgorICAgICAgICAoV2ViS2l0OjpD
b29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNpemVEaWRDaGFuZ2UpOgorICAgICAgICAoV2ViS2l0
OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcyk6Cisg
ICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y2xlYXJQZW5kaW5nU3Rh
dGVDaGFuZ2VzKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpp
bml0aWFsaXplUm9vdENvbXBvc2l0aW5nTGF5ZXJJZk5lZWRlZCk6CisgICAgICAgIChXZWJLaXQ6
OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c3luY0xheWVyU3RhdGUpOgorICAgICAgICAoV2Vi
S2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnByZXBhcmVDdXN0b21GaWx0ZXJQcm94aWVz
SWZOZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNo
ZWNrQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3hpZXMpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OnJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW1Qcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGV0YWNoTGF5ZXIpOgorICAg
ICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBlcmZvcm1TY2hlZHVsZWRM
YXllckZsdXNoKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpz
eW5jRGlzcGxheVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVI
b3N0OjpkaWRQZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCk6CisgICAgICAgIChXZWJLaXQ6OkNv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlUGFnZU92ZXJsYXlMYXllcik6CisgICAgICAg
IChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlSW1hZ2VCYWNraW5nSWZO
ZWVkZWQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0
ZUltYWdlQmFja2luZyk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6dXBkYXRlSW1hZ2VCYWNraW5nKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXll
clRyZWVIb3N0OjpjbGVhckltYWdlQmFja2luZ0NvbnRlbnRzKToKKyAgICAgICAgKFdlYktpdDo6
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpyZW1vdmVJbWFnZUJhY2tpbmcpOgorICAgICAgICAo
V2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZsdXNoUGVuZGluZ0ltYWdlQmFja2lu
Z0NoYW5nZXMpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6Om5v
dGlmeUFuaW1hdGlvblN0YXJ0ZWQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6Om5vdGlmeUZsdXNoUmVxdWlyZWQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMpOgorICAgICAgICAoV2ViS2l0OjpDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2Vi
S2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZVNjYWxlRmFjdG9yKToKKyAgICAg
ICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwYWdlU2NhbGVGYWN0b3IpOgor
ICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZVVwZGF0ZUF0
bGFzKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpyZW1vdmVV
cGRhdGVBdGxhcyk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
dmlzaWJsZUNvbnRlbnRzUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJU
cmVlSG9zdDo6bWFpbkNvbnRlbnRzTGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OnNldFZpc2libGVDb250ZW50c1JlY3QpOgorICAgICAgICAoV2ViS2l0
OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Z3JhcGhpY3NM
YXllckZhY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OnNjaGVkdWxlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpyZW5kZXJOZXh0RnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OnB1cmdlQmFja2luZ1N0b3Jlcyk6CisgICAgICAgIChXZWJLaXQ6OkNvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6cGFpbnRUb1N1cmZhY2UpOgorICAgICAgICAoV2ViS2l0OjpD
b29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNjaGVkdWxlUmVsZWFzZUluYWN0aXZlQXRsYXNlcyk6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cmVsZWFzZUluYWN0
aXZlQXRsYXNlc1RpbWVyRmlyZWQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZExheWVy
VHJlZUhvc3Q6OmNvbW1pdFNjcm9sbE9mZnNldCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Lmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYktp
dDo6TGF5ZXJUcmVlSG9zdDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6CisgICAgICAgIChXZWJL
aXQ6OkxheWVyVHJlZUhvc3Q6OnJlbmRlck5leHRGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6Okxh
eWVyVHJlZUhvc3Q6OnB1cmdlQmFja2luZ1N0b3Jlcyk6CisKIDIwMTMtMDYtMjcgIFhhYmllciBS
b2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBGaXhpbmcg
c29tZSBjb21waWxlciB3YXJuaW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhZDM4NTJlNjA2
MzJmMDg1ZjBlNzlmYThjMzQxYThlMTI3MGY4NWRhLi5hMThmYTMwNjczMjA1MzJkYWI3ZmMyY2Jh
MWUwYmU4MzBkZWMzYTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTk3OCw3ICsxOTc4LDYg
QEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU3Bv
dExpZ2h0U291cmNlLmNwcAogCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5h
dGVkL0FyZWFBbGxvY2F0b3IuY3BwCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3Jk
aW5hdGVkL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIu
Y3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkg
Yi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IGY0MTdkZGU1MmNmYTdiYTk4MmY0YTEw
NDU2NGRiNGEzZjI4Njg3YTIuLmFiMjJmMDcwZmFkZDcyYTJiMGRkYWIzOWYxYzQ3ZDMzZGVjZjQ1
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQpAQCAtNDA4OSw3ICs0MDg5LDYgQEAgdXNlPygzRF9HUkFQSElDUykg
ewogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmggXAog
ICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclNoYWRlclByb2dy
YW0uaCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9BcmVh
QWxsb2NhdG9yLmggXAotICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0
ZWQvQ29tcG9zaXRpbmdDb29yZGluYXRvci5oIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL2Nvb3JkaW5hdGVkL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmggXAogICAgICAgICBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRDdXN0b21GaWx0
ZXJPcGVyYXRpb24uaCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGlu
YXRlZC9Db29yZGluYXRlZEN1c3RvbUZpbHRlclByb2dyYW0uaCBcCkBAIC00MTI1LDcgKzQxMjQs
NiBAQCB1c2U/KDNEX0dSQVBISUNTKSB7CiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyR0wuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJTaGFkZXJQcm9ncmFtLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9jb29yZGluYXRlZC9BcmVhQWxsb2NhdG9yLmNwcCBcCi0gICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNw
cCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGlu
YXRlZEJhY2tpbmdTdG9yZS5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Y29vcmRpbmF0ZWQvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmNwcCBcCiAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUu
Y3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9jb29yZGluYXRlZC9Db21wb3NpdGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db21wb3NpdGluZ0Nvb3JkaW5h
dG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2JmOTdlZTBiNjM0OGJlOTRk
OTE4ZGE3YTc1NzE4NjQwMjhmMDc5ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvY29v
cmRpbmF0ZWQvQ29tcG9zaXRpbmdDb29yZGluYXRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0
MzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBh
bmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgQ29tcGFu
eSAxMDAsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNv
bmZpZy5oIgotCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotI2luY2x1ZGUgIkNvbXBv
c2l0aW5nQ29vcmRpbmF0b3IuaCIKLQotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRnJh
bWVWaWV3LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSAiSW5zcGVj
dG9yQ29udHJvbGxlci5oIgotI2luY2x1ZGUgIlBhZ2UuaCIKLSNpbmNsdWRlICJTZXR0aW5ncy5o
IgotI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgotI2luY2x1ZGUgPHd0Zi9UZW1wb3JhcnlD
aGFuZ2UuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzT3duUHRyPENvbXBvc2l0aW5n
Q29vcmRpbmF0b3I+IENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OmNyZWF0ZShQYWdlKiBwYWdlLCBD
b21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpDbGllbnQqIGNsaWVudCkKLXsKLSAgICByZXR1cm4gYWRv
cHRQdHIobmV3IENvbXBvc2l0aW5nQ29vcmRpbmF0b3IocGFnZSwgY2xpZW50KSk7Ci19Ci0KLUNv
bXBvc2l0aW5nQ29vcmRpbmF0b3I6On5Db21wb3NpdGluZ0Nvb3JkaW5hdG9yKCkKLXsKLSAgICBw
dXJnZUJhY2tpbmdTdG9yZXMoKTsKLQotICAgIExheWVyTWFwOjppdGVyYXRvciBlbmQgPSBtX3Jl
Z2lzdGVyZWRMYXllcnMuZW5kKCk7Ci0gICAgZm9yIChMYXllck1hcDo6aXRlcmF0b3IgaXQgPSBt
X3JlZ2lzdGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQotICAgICAgICBpdC0+
dmFsdWUtPnNldENvb3JkaW5hdG9yKDApOwotfQotCi1Db21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpD
b21wb3NpdGluZ0Nvb3JkaW5hdG9yKFBhZ2UqIHBhZ2UsIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6
OkNsaWVudCogY2xpZW50KQotICAgIDogbV9wYWdlKHBhZ2UpCi0gICAgLCBtX2NsaWVudChjbGll
bnQpCi0gICAgLCBtX3Jvb3RDb21wb3NpdGluZ0xheWVyKDApCi0gICAgLCBtX2lzUHVyZ2luZyhm
YWxzZSkKLSAgICAsIG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlcyhmYWxzZSkKLSAgICAsIG1fc2hv
dWxkU3luY0ZyYW1lKGZhbHNlKQotICAgICwgbV9kaWRJbml0aWFsaXplUm9vdENvbXBvc2l0aW5n
TGF5ZXIoZmFsc2UpCi0gICAgLCBtX3JlbGVhc2VJbmFjdGl2ZUF0bGFzZXNUaW1lcih0aGlzLCAm
Q29tcG9zaXRpbmdDb29yZGluYXRvcjo6cmVsZWFzZUluYWN0aXZlQXRsYXNlc1RpbWVyRmlyZWQp
Ci0jaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotICAgICwgbV9sYXN0QW5pbWF0
aW9uU2VydmljZVRpbWUoMCkKLSNlbmRpZgotewotICAgIG1fcGFnZS0+c2V0dGluZ3MoKS0+c2V0
QXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKLQotICAgIC8vIFRoaXMg
aXMgYSB0ZW1wb3Jhcnkgd2F5IHRvIGVuYWJsZSB0aGlzIG9ubHkgaW4gdGhlIEdMIGNhc2UsIHVu
dGlsIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlciBpcyByZW1vdmVkLgotICAgIC8vIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTE0ODY5Ci0gICAgQ29vcmRpbmF0
ZWRHcmFwaGljc0xheWVyOjpzZXRTaG91bGRTdXBwb3J0Q29udGVudHNUaWxpbmcodHJ1ZSk7Ci19
Ci0KLXZvaWQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIo
R3JhcGhpY3NMYXllciogbGF5ZXIpCi17Ci0gICAgaWYgKG1fcm9vdENvbXBvc2l0aW5nTGF5ZXIp
Ci0gICAgICAgIG1fcm9vdENvbXBvc2l0aW5nTGF5ZXItPnJlbW92ZUZyb21QYXJlbnQoKTsKLQot
ICAgIG1fcm9vdENvbXBvc2l0aW5nTGF5ZXIgPSBsYXllcjsKLSAgICBpZiAobV9yb290Q29tcG9z
aXRpbmdMYXllcikKLSAgICAgICAgbV9yb290TGF5ZXItPmFkZENoaWxkQXRJbmRleChtX3Jvb3RD
b21wb3NpdGluZ0xheWVyLCAwKTsKLX0KLQotdm9pZCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpz
aXplRGlkQ2hhbmdlKGNvbnN0IEludFNpemUmIG5ld1NpemUpCi17Ci0gICAgbV9yb290TGF5ZXIt
PnNldFNpemUobmV3U2l6ZSk7Ci0gICAgbV9jbGllbnQtPm5vdGlmeUZsdXNoUmVxdWlyZWQoKTsK
LX0KLQotYm9vbCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpmbHVzaFBlbmRpbmdMYXllckNoYW5n
ZXMoKQotewotICAgIFRlbXBvcmFyeUNoYW5nZTxib29sPiBwcm90ZWN0b3IobV9pc0ZsdXNoaW5n
TGF5ZXJDaGFuZ2VzLCB0cnVlKTsKLQotICAgIGluaXRpYWxpemVSb290Q29tcG9zaXRpbmdMYXll
cklmTmVlZGVkKCk7Ci0KLSAgICBtX3Jvb3RMYXllci0+Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9y
VGhpc0xheWVyT25seSgpOwotICAgIG1fY2xpZW50LT5kaWRGbHVzaFJvb3RMYXllcigpOwotCi0g
ICAgYm9vbCBkaWRTeW5jID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpLT5mbHVzaENvbXBv
c2l0aW5nU3RhdGVJbmNsdWRpbmdTdWJmcmFtZXMoKTsKLQotICAgIHRvQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyKG1fcm9vdExheWVyLmdldCgpKS0+dXBkYXRlQ29udGVudEJ1ZmZlcnNJbmNsdWRp
bmdTdWJMYXllcnMoKTsKLSAgICB0b0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihtX3Jvb3RMYXll
ci5nZXQoKSktPnN5bmNQZW5kaW5nU3RhdGVDaGFuZ2VzSW5jbHVkaW5nU3ViTGF5ZXJzKCk7Ci0K
LSAgICBmbHVzaFBlbmRpbmdJbWFnZUJhY2tpbmdDaGFuZ2VzKCk7Ci0KLSAgICBpZiAobV9zaG91
bGRTeW5jRnJhbWUpIHsKLSAgICAgICAgZGlkU3luYyA9IHRydWU7Ci0KLSAgICAgICAgaWYgKG1f
cm9vdENvbXBvc2l0aW5nTGF5ZXIpIHsKLSAgICAgICAgICAgIG1fc3RhdGUuY29udGVudHNTaXpl
ID0gcm91bmRlZEludFNpemUobV9yb290Q29tcG9zaXRpbmdMYXllci0+c2l6ZSgpKTsKLSAgICAg
ICAgICAgIGlmIChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGNvbnRlbnRzTGF5ZXIgPSBtYWlu
Q29udGVudHNMYXllcigpKQotICAgICAgICAgICAgICAgIG1fc3RhdGUuY292ZXJlZFJlY3QgPSBj
b250ZW50c0xheWVyLT5jb3ZlclJlY3QoKTsKLSAgICAgICAgfQotICAgICAgICBtX3N0YXRlLnNj
cm9sbFBvc2l0aW9uID0gbV92aXNpYmxlQ29udGVudHNSZWN0LmxvY2F0aW9uKCk7Ci0KLSAgICAg
ICAgbV9jbGllbnQtPmNvbW1pdFNjZW5lU3RhdGUobV9zdGF0ZSk7Ci0KLSAgICAgICAgY2xlYXJQ
ZW5kaW5nU3RhdGVDaGFuZ2VzKCk7Ci0gICAgICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gZmFsc2U7
Ci0gICAgfQotCi0gICAgcmV0dXJuIGRpZFN5bmM7Ci19Ci0KLXZvaWQgQ29tcG9zaXRpbmdDb29y
ZGluYXRvcjo6c3luY0Rpc3BsYXlTdGF0ZSgpCi17Ci0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLSAg
ICBtX3BhZ2UtPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+ZGlkQmVnaW5GcmFtZSgpOwotI2VuZGlm
Ci0KLSNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpICYmICFVU0UoUkVRVUVTVF9B
TklNQVRJT05fRlJBTUVfVElNRVIpICYmICFVU0UoUkVRVUVTVF9BTklNQVRJT05fRlJBTUVfRElT
UExBWV9NT05JVE9SKQotICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGFueSBwcmV2aW91c2x5IHJlZ2lz
dGVyZWQgYW5pbWF0aW9uIGNhbGxiYWNrcyBhcmUgYmVpbmcgZXhlY3V0ZWQgYmVmb3JlIHdlIGZs
dXNoIHRoZSBsYXllcnMuCi0gICAgbV9sYXN0QW5pbWF0aW9uU2VydmljZVRpbWUgPSBXVEY6Om1v
bm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOwotICAgIG1fcGFnZS0+bWFpbkZyYW1lKCktPnZp
ZXcoKS0+c2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyhtX2xhc3RBbmltYXRpb25TZXJ2aWNlVGlt
ZSk7Ci0jZW5kaWYKLSAgICBtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCktPnVwZGF0ZUxheW91
dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKTsKLX0KLQotI2lmIEVOQUJMRShSRVFVRVNUX0FO
SU1BVElPTl9GUkFNRSkKLWRvdWJsZSBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpuZXh0QW5pbWF0
aW9uU2VydmljZVRpbWUoKSBjb25zdAotewotICAgIC8vIEFjY29yZGluZyB0byB0aGUgcmVxdWVz
dEFuaW1hdGlvbkZyYW1lIHNwZWMsIHJBRiBjYWxsYmFja3Mgc2hvdWxkIG5vdCBiZSBmYXN0ZXIg
dGhhbiA2MEZQUy4KLSAgICBzdGF0aWMgY29uc3QgZG91YmxlIE1pbmltYWxUaW1lb3V0Rm9yQW5p
bWF0aW9ucyA9IDEuIC8gNjAuOwotICAgIHJldHVybiBzdGQ6Om1heDxkb3VibGU+KDAuLCBNaW5p
bWFsVGltZW91dEZvckFuaW1hdGlvbnMgLSBXVEY6Om1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGlt
ZSgpICsgbV9sYXN0QW5pbWF0aW9uU2VydmljZVRpbWUpOwotfQotI2VuZGlmCi0KLXZvaWQgQ29t
cG9zaXRpbmdDb29yZGluYXRvcjo6Y2xlYXJQZW5kaW5nU3RhdGVDaGFuZ2VzKCkKLXsKLSAgICBt
X3N0YXRlLmxheWVyc1RvQ3JlYXRlLmNsZWFyKCk7Ci0gICAgbV9zdGF0ZS5sYXllcnNUb1VwZGF0
ZS5jbGVhcigpOwotICAgIG1fc3RhdGUubGF5ZXJzVG9SZW1vdmUuY2xlYXIoKTsKLQotICAgIG1f
c3RhdGUuaW1hZ2VzVG9DcmVhdGUuY2xlYXIoKTsKLSAgICBtX3N0YXRlLmltYWdlc1RvUmVtb3Zl
LmNsZWFyKCk7Ci0gICAgbV9zdGF0ZS5pbWFnZXNUb1VwZGF0ZS5jbGVhcigpOwotICAgIG1fc3Rh
dGUuaW1hZ2VzVG9DbGVhci5jbGVhcigpOwotCi0gICAgbV9zdGF0ZS51cGRhdGVBdGxhc2VzVG9D
cmVhdGUuY2xlYXIoKTsKLSAgICBtX3N0YXRlLnVwZGF0ZUF0bGFzZXNUb1JlbW92ZS5jbGVhcigp
OwotCi0jaWYgRU5BQkxFKENTU19TSEFERVJTKQotICAgIG1fc3RhdGUuY3VzdG9tRmlsdGVyc1Rv
Q3JlYXRlLmNsZWFyKCk7Ci0gICAgbV9zdGF0ZS5jdXN0b21GaWx0ZXJzVG9SZW1vdmUuY2xlYXIo
KTsKLSNlbmRpZgotfQotCi12b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OmluaXRpYWxpemVS
b290Q29tcG9zaXRpbmdMYXllcklmTmVlZGVkKCkKLXsKLSAgICBpZiAobV9kaWRJbml0aWFsaXpl
Um9vdENvbXBvc2l0aW5nTGF5ZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fc3RhdGUucm9v
dENvbXBvc2l0aW5nTGF5ZXIgPSB0b0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihtX3Jvb3RMYXll
ci5nZXQoKSktPmlkKCk7Ci0gICAgbV9kaWRJbml0aWFsaXplUm9vdENvbXBvc2l0aW5nTGF5ZXIg
PSB0cnVlOwotICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsKLX0KLQotdm9pZCBDb21wb3Np
dGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVSb290TGF5ZXIoY29uc3QgSW50U2l6ZSYgc2l6ZSkKLXsK
LSAgICBBU1NFUlQoIW1fcm9vdExheWVyKTsKLSAgICAvLyBDcmVhdGUgYSByb290IGxheWVyLgot
ICAgIG1fcm9vdExheWVyID0gR3JhcGhpY3NMYXllcjo6Y3JlYXRlKHRoaXMsIHRoaXMpOwotI2lm
bmRlZiBOREVCVUcKLSAgICBtX3Jvb3RMYXllci0+c2V0TmFtZSgiQ29tcG9zaXRpbmdDb29yZGlu
YXRvciByb290IGxheWVyIik7Ci0jZW5kaWYKLSAgICBtX3Jvb3RMYXllci0+c2V0RHJhd3NDb250
ZW50KGZhbHNlKTsKLSAgICBtX3Jvb3RMYXllci0+c2V0U2l6ZShzaXplKTsKLX0KLQotdm9pZCBD
b21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpzeW5jTGF5ZXJTdGF0ZShDb29yZGluYXRlZExheWVySUQg
aWQsIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0YXRlJiBzdGF0ZSkKLXsKLSAgICBtX3Nob3Vs
ZFN5bmNGcmFtZSA9IHRydWU7Ci0gICAgbV9jbGllbnQtPndpbGxTeW5jTGF5ZXJTdGF0ZShzdGF0
ZSk7Ci0gICAgbV9zdGF0ZS5sYXllcnNUb1VwZGF0ZS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaWQs
IHN0YXRlKSk7Ci19Ci0KLVBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IENvbXBv
c2l0aW5nQ29vcmRpbmF0b3I6OmNyZWF0ZUltYWdlQmFja2luZ0lmTmVlZGVkKEltYWdlKiBpbWFn
ZSkKLXsKLSAgICBDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQgPSBDb29yZGluYXRl
ZEltYWdlQmFja2luZzo6Z2V0Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRChpbWFnZSk7Ci0gICAg
SW1hZ2VCYWNraW5nTWFwOjppdGVyYXRvciBpdCA9IG1faW1hZ2VCYWNraW5ncy5maW5kKGltYWdl
SUQpOwotICAgIFJlZlB0cjxDb29yZGluYXRlZEltYWdlQmFja2luZz4gaW1hZ2VCYWNraW5nOwot
ICAgIGlmIChpdCA9PSBtX2ltYWdlQmFja2luZ3MuZW5kKCkpIHsKLSAgICAgICAgaW1hZ2VCYWNr
aW5nID0gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmNyZWF0ZSh0aGlzLCBpbWFnZSk7Ci0gICAg
ICAgIG1faW1hZ2VCYWNraW5ncy5hZGQoaW1hZ2VJRCwgaW1hZ2VCYWNraW5nKTsKLSAgICB9IGVs
c2UKLSAgICAgICAgaW1hZ2VCYWNraW5nID0gaXQtPnZhbHVlOwotCi0gICAgcmV0dXJuIGltYWdl
QmFja2luZzsKLX0KLQotdm9pZCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVJbWFnZUJh
Y2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEKQotewotICAgIG1fc3RhdGUu
aW1hZ2VzVG9DcmVhdGUuYXBwZW5kKGltYWdlSUQpOwotfQotCi12b2lkIENvbXBvc2l0aW5nQ29v
cmRpbmF0b3I6OnVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGlt
YWdlSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBjb29yZGluYXRlZFN1cmZhY2Up
Ci17Ci0gICAgbV9zaG91bGRTeW5jRnJhbWUgPSB0cnVlOwotICAgIG1fc3RhdGUuaW1hZ2VzVG9V
cGRhdGUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGltYWdlSUQsIGNvb3JkaW5hdGVkU3VyZmFjZSkp
OwotfQotCi12b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OmNsZWFySW1hZ2VCYWNraW5nQ29u
dGVudHMoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlEKQotewotICAgIG1fc2hvdWxk
U3luY0ZyYW1lID0gdHJ1ZTsKLSAgICBtX3N0YXRlLmltYWdlc1RvQ2xlYXIuYXBwZW5kKGltYWdl
SUQpOwotfQotCi12b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OnJlbW92ZUltYWdlQmFja2lu
ZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQpCi17Ci0gICAgaWYgKG1faXNQdXJn
aW5nKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQobV9pbWFnZUJhY2tpbmdzLmNvbnRh
aW5zKGltYWdlSUQpKTsKLSAgICBtX2ltYWdlQmFja2luZ3MucmVtb3ZlKGltYWdlSUQpOwotCi0g
ICAgbV9zdGF0ZS5pbWFnZXNUb1JlbW92ZS5hcHBlbmQoaW1hZ2VJRCk7Ci19Ci0KLXZvaWQgQ29t
cG9zaXRpbmdDb29yZGluYXRvcjo6Zmx1c2hQZW5kaW5nSW1hZ2VCYWNraW5nQ2hhbmdlcygpCi17
Ci0gICAgSW1hZ2VCYWNraW5nTWFwOjppdGVyYXRvciBlbmQgPSBtX2ltYWdlQmFja2luZ3MuZW5k
KCk7Ci0gICAgZm9yIChJbWFnZUJhY2tpbmdNYXA6Oml0ZXJhdG9yIGl0ZXIgPSBtX2ltYWdlQmFj
a2luZ3MuYmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRlcikKLSAgICAgICAgaXRlci0+dmFsdWUt
PnVwZGF0ZSgpOwotfQotCi12b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6Om5vdGlmeUFuaW1h
dGlvblN0YXJ0ZWQoY29uc3QgR3JhcGhpY3NMYXllciosIGRvdWJsZSAvKiB0aW1lICovKQotewot
fQotCi12b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6Om5vdGlmeUZsdXNoUmVxdWlyZWQoY29u
c3QgR3JhcGhpY3NMYXllciopCi17Ci0gICAgbV9jbGllbnQtPm5vdGlmeUZsdXNoUmVxdWlyZWQo
KTsKLX0KLQotCi12b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OnBhaW50Q29udGVudHMoY29u
c3QgR3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllciwgR3JhcGhpY3NDb250ZXh0JiBncmFwaGlj
c0NvbnRleHQsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBJbnRSZWN0JiBjbGlw
UmVjdCkKLXsKLSAgICBtX2NsaWVudC0+cGFpbnRMYXllckNvbnRlbnRzKGdyYXBoaWNzTGF5ZXIs
IGdyYXBoaWNzQ29udGV4dCwgY2xpcFJlY3QpOwotfQotCi1QYXNzT3duUHRyPEdyYXBoaWNzTGF5
ZXI+IENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OmNyZWF0ZUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NM
YXllckNsaWVudCogY2xpZW50KQotewotICAgIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciogbGF5
ZXIgPSBuZXcgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKGNsaWVudCk7Ci0gICAgbGF5ZXItPnNl
dENvb3JkaW5hdG9yKHRoaXMpOwotICAgIG1fcmVnaXN0ZXJlZExheWVycy5hZGQobGF5ZXItPmlk
KCksIGxheWVyKTsKLSAgICBtX3N0YXRlLmxheWVyc1RvQ3JlYXRlLmFwcGVuZChsYXllci0+aWQo
KSk7Ci0gICAgbGF5ZXItPnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7Ci0gICAgbV9j
bGllbnQtPm5vdGlmeUZsdXNoUmVxdWlyZWQoKTsKLSAgICByZXR1cm4gYWRvcHRQdHIobGF5ZXIp
OwotfQotCi1mbG9hdCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpkZXZpY2VTY2FsZUZhY3Rvcigp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKLX0KLQot
ZmxvYXQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6cGFnZVNjYWxlRmFjdG9yKCkgY29uc3QKLXsK
LSAgICByZXR1cm4gbV9wYWdlLT5wYWdlU2NhbGVGYWN0b3IoKTsKLX0KLQotdm9pZCBDb21wb3Np
dGluZ0Nvb3JkaW5hdG9yOjpjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lELCBQYXNz
UmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4gY29vcmRpbmF0ZWRTdXJmYWNlKQotewotICAgIG1f
c3RhdGUudXBkYXRlQXRsYXNlc1RvQ3JlYXRlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihhdGxhc0lE
LCBjb29yZGluYXRlZFN1cmZhY2UpKTsKLX0KLQotdm9pZCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9y
OjpyZW1vdmVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lEKQotewotICAgIGlmIChtX2lzUHVy
Z2luZykKLSAgICAgICAgcmV0dXJuOwotICAgIG1fc3RhdGUudXBkYXRlQXRsYXNlc1RvUmVtb3Zl
LmFwcGVuZChhdGxhc0lEKTsKLX0KLQotRmxvYXRSZWN0IENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6
OnZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdAotewotICAgIHJldHVybiBtX3Zpc2libGVDb250
ZW50c1JlY3Q7Ci19Ci0KLUNvb3JkaW5hdGVkR3JhcGhpY3NMYXllciogQ29tcG9zaXRpbmdDb29y
ZGluYXRvcjo6bWFpbkNvbnRlbnRzTGF5ZXIoKQotewotICAgIGlmICghbV9yb290Q29tcG9zaXRp
bmdMYXllcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gdG9Db29yZGluYXRlZEdy
YXBoaWNzTGF5ZXIobV9yb290Q29tcG9zaXRpbmdMYXllciktPmZpbmRGaXJzdERlc2NlbmRhbnRX
aXRoQ29udGVudHNSZWN1cnNpdmVseSgpOwotfQotCi12b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0
b3I6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBG
bG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQotewotICAgIC8vIEEgemVybyB0cmFqZWN0b3J5
VmVjdG9yIGluZGljYXRlcyB0aGF0IHRpbGVzIGFsbCBhcm91bmQgdGhlIHZpZXdwb3J0IGFyZSBy
ZXF1ZXN0ZWQuCi0gICAgaWYgKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciogY29udGVudHNMYXll
ciA9IG1haW5Db250ZW50c0xheWVyKCkpCi0gICAgICAgIGNvbnRlbnRzTGF5ZXItPnNldFZpc2li
bGVDb250ZW50UmVjdFRyYWplY3RvcnlWZWN0b3IodHJhamVjdG9yeVZlY3Rvcik7Ci0KLSAgICBi
b29sIGNvbnRlbnRzUmVjdERpZENoYW5nZSA9IHJlY3QgIT0gbV92aXNpYmxlQ29udGVudHNSZWN0
OwotICAgIGlmIChjb250ZW50c1JlY3REaWRDaGFuZ2UpIHsKLSAgICAgICAgbV92aXNpYmxlQ29u
dGVudHNSZWN0ID0gcmVjdDsKLQotICAgICAgICBMYXllck1hcDo6aXRlcmF0b3IgZW5kID0gbV9y
ZWdpc3RlcmVkTGF5ZXJzLmVuZCgpOwotICAgICAgICBmb3IgKExheWVyTWFwOjppdGVyYXRvciBp
dCA9IG1fcmVnaXN0ZXJlZExheWVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCi0gICAgICAg
ICAgICBpdC0+dmFsdWUtPnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7Ci0gICAgfQot
Ci0gICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpOwotICAg
IGlmICh2aWV3LT51c2VGaXhlZExheW91dCgpKSB7Ci0gICAgICAgIC8vIFJvdW5kIHRoZSByZWN0
IGluc3RlYWQgb2YgZW5jbG9zaW5nIGl0IHRvIG1ha2Ugc3VyZSB0aGF0IGl0cyBzaXplIHN0YXlz
Ci0gICAgICAgIC8vIHRoZSBzYW1lIHdoaWxlIHBhbm5pbmcuIFRoaXMgY2FuIGhhdmUgbmFzdHkg
ZWZmZWN0cyBvbiBsYXlvdXQuCi0gICAgICAgIHZpZXctPnNldEZpeGVkVmlzaWJsZUNvbnRlbnRS
ZWN0KHJvdW5kZWRJbnRSZWN0KHJlY3QpKTsKLSAgICB9Ci19Ci0KLXZvaWQgQ29tcG9zaXRpbmdD
b29yZGluYXRvcjo6ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkKLXsKLSAgICBtX3Jv
b3RMYXllci0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7Ci19Ci0KLXZvaWQgQ29t
cG9zaXRpbmdDb29yZGluYXRvcjo6ZGV0YWNoTGF5ZXIoQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVy
KiBsYXllcikKLXsKLSAgICBpZiAobV9pc1B1cmdpbmcpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1fcmVnaXN0ZXJlZExheWVycy5yZW1vdmUobGF5ZXItPmlkKCkpOwotCi0gICAgc2l6ZV90IGlu
ZGV4ID0gbV9zdGF0ZS5sYXllcnNUb0NyZWF0ZS5maW5kKGxheWVyLT5pZCgpKTsKLSAgICBpZiAo
aW5kZXggIT0gbm90Rm91bmQpIHsKLSAgICAgICAgbV9zdGF0ZS5sYXllcnNUb0NyZWF0ZS5yZW1v
dmUoaW5kZXgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbV9zdGF0ZS5sYXllcnNU
b1JlbW92ZS5hcHBlbmQobGF5ZXItPmlkKCkpOwotICAgIG1fY2xpZW50LT5ub3RpZnlGbHVzaFJl
cXVpcmVkKCk7Ci19Ci0KLXZvaWQgQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6Y29tbWl0U2Nyb2xs
T2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCkK
LXsKLSAgICBMYXllck1hcDo6aXRlcmF0b3IgaSA9IG1fcmVnaXN0ZXJlZExheWVycy5maW5kKGxh
eWVySUQpOwotICAgIGlmIChpID09IG1fcmVnaXN0ZXJlZExheWVycy5lbmQoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgaS0+dmFsdWUtPmNvbW1pdFNjcm9sbE9mZnNldChvZmZzZXQpOwotfQot
Ci12b2lkIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OnJlbmRlck5leHRGcmFtZSgpCi17Ci0gICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdXBkYXRlQXRsYXNlcy5zaXplKCk7ICsraSkKLSAg
ICAgICAgbV91cGRhdGVBdGxhc2VzW2ldLT5kaWRTd2FwQnVmZmVycygpOwotfQotCi12b2lkIENv
bXBvc2l0aW5nQ29vcmRpbmF0b3I6OnB1cmdlQmFja2luZ1N0b3JlcygpCi17Ci0gICAgVGVtcG9y
YXJ5Q2hhbmdlPGJvb2w+IHB1cmdpbmdUb2dnbGUobV9pc1B1cmdpbmcsIHRydWUpOwotCi0gICAg
TGF5ZXJNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fcmVnaXN0ZXJlZExheWVycy5lbmQoKTsKLSAgICBm
b3IgKExheWVyTWFwOjppdGVyYXRvciBpdCA9IG1fcmVnaXN0ZXJlZExheWVycy5iZWdpbigpOyBp
dCAhPSBlbmQ7ICsraXQpCi0gICAgICAgIGl0LT52YWx1ZS0+cHVyZ2VCYWNraW5nU3RvcmVzKCk7
Ci0KLSAgICBtX2ltYWdlQmFja2luZ3MuY2xlYXIoKTsKLSAgICBtX3VwZGF0ZUF0bGFzZXMuY2xl
YXIoKTsKLX0KLQotYm9vbCBDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpwYWludFRvU3VyZmFjZShj
b25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6OkZsYWdzIGZsYWdzLCB1aW50
MzJfdCYgYXRsYXNJRCwgSW50UG9pbnQmIG9mZnNldCwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpDbGll
bnQqIGNsaWVudCkKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV91cGRhdGVBdGxh
c2VzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIFVwZGF0ZUF0bGFzKiBhdGxhcyA9IG1fdXBkYXRl
QXRsYXNlc1tpXS5nZXQoKTsKLSAgICAgICAgaWYgKGF0bGFzLT5zdXBwb3J0c0FscGhhKCkgPT0g
KGZsYWdzICYgQ29vcmRpbmF0ZWRTdXJmYWNlOjpTdXBwb3J0c0FscGhhKSkgewotICAgICAgICAg
ICAgLy8gVGhpcyB3aWxsIGJlIGZhbHNlIGlmIHRoZXJlIGlzIG5vIGF2YWlsYWJsZSBidWZmZXIg
c3BhY2UuCi0gICAgICAgICAgICBpZiAoYXRsYXMtPnBhaW50T25BdmFpbGFibGVCdWZmZXIoc2l6
ZSwgYXRsYXNJRCwgb2Zmc2V0LCBjbGllbnQpKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc3RhdGljIGNvbnN0IGludCBTY3JhdGNoQnVmZmVy
RGltZW5zaW9uID0gMTAyNDsgLy8gU2hvdWxkIGJlIGEgcG93ZXIgb2YgdHdvLgotICAgIG1fdXBk
YXRlQXRsYXNlcy5hcHBlbmQoYWRvcHRQdHIobmV3IFVwZGF0ZUF0bGFzKHRoaXMsIFNjcmF0Y2hC
dWZmZXJEaW1lbnNpb24sIGZsYWdzKSkpOwotICAgIHNjaGVkdWxlUmVsZWFzZUluYWN0aXZlQXRs
YXNlcygpOwotICAgIHJldHVybiBtX3VwZGF0ZUF0bGFzZXMubGFzdCgpLT5wYWludE9uQXZhaWxh
YmxlQnVmZmVyKHNpemUsIGF0bGFzSUQsIG9mZnNldCwgY2xpZW50KTsKLX0KLQotY29uc3QgZG91
YmxlIFJlbGVhc2VJbmFjdGl2ZUF0bGFzZXNUaW1lckludGVydmFsID0gMC41OwotCi12b2lkIENv
bXBvc2l0aW5nQ29vcmRpbmF0b3I6OnNjaGVkdWxlUmVsZWFzZUluYWN0aXZlQXRsYXNlcygpCi17
Ci0gICAgaWYgKCFtX3JlbGVhc2VJbmFjdGl2ZUF0bGFzZXNUaW1lci5pc0FjdGl2ZSgpKQotICAg
ICAgICBtX3JlbGVhc2VJbmFjdGl2ZUF0bGFzZXNUaW1lci5zdGFydFJlcGVhdGluZyhSZWxlYXNl
SW5hY3RpdmVBdGxhc2VzVGltZXJJbnRlcnZhbCk7Ci19Ci0KLXZvaWQgQ29tcG9zaXRpbmdDb29y
ZGluYXRvcjo6cmVsZWFzZUluYWN0aXZlQXRsYXNlc1RpbWVyRmlyZWQoVGltZXI8Q29tcG9zaXRp
bmdDb29yZGluYXRvcj4qKQotewotICAgIC8vIFdlIGFsd2F5cyB3YW50IHRvIGtlZXAgb25lIGF0
bGFzIGZvciBub24tY29tcG9zaXRlZCBjb250ZW50LgotICAgIE93blB0cjxVcGRhdGVBdGxhcz4g
YXRsYXNUb0tlZXBBbnl3YXk7Ci0gICAgYm9vbCBmb3VuZEFjdGl2ZUF0bGFzRm9yTm9uQ29tcG9z
aXRlZENvbnRlbnQgPSBmYWxzZTsKLSAgICBmb3IgKGludCBpID0gbV91cGRhdGVBdGxhc2VzLnNp
emUoKSAtIDE7ICBpID49IDA7IC0taSkgewotICAgICAgICBVcGRhdGVBdGxhcyogYXRsYXMgPSBt
X3VwZGF0ZUF0bGFzZXNbaV0uZ2V0KCk7Ci0gICAgICAgIGlmICghYXRsYXMtPmlzSW5Vc2UoKSkK
LSAgICAgICAgICAgIGF0bGFzLT5hZGRUaW1lSW5hY3RpdmUoUmVsZWFzZUluYWN0aXZlQXRsYXNl
c1RpbWVySW50ZXJ2YWwpOwotICAgICAgICBib29sIHVzYWJsZUZvck5vbkNvbXBvc2l0ZWRDb250
ZW50ID0gIWF0bGFzLT5zdXBwb3J0c0FscGhhKCk7Ci0gICAgICAgIGlmIChhdGxhcy0+aXNJbmFj
dGl2ZSgpKSB7Ci0gICAgICAgICAgICBpZiAoIWZvdW5kQWN0aXZlQXRsYXNGb3JOb25Db21wb3Np
dGVkQ29udGVudCAmJiAhYXRsYXNUb0tlZXBBbnl3YXkgJiYgdXNhYmxlRm9yTm9uQ29tcG9zaXRl
ZENvbnRlbnQpCi0gICAgICAgICAgICAgICAgYXRsYXNUb0tlZXBBbnl3YXkgPSBtX3VwZGF0ZUF0
bGFzZXNbaV0ucmVsZWFzZSgpOwotICAgICAgICAgICAgbV91cGRhdGVBdGxhc2VzLnJlbW92ZShp
KTsKLSAgICAgICAgfSBlbHNlIGlmICh1c2FibGVGb3JOb25Db21wb3NpdGVkQ29udGVudCkKLSAg
ICAgICAgICAgIGZvdW5kQWN0aXZlQXRsYXNGb3JOb25Db21wb3NpdGVkQ29udGVudCA9IHRydWU7
Ci0gICAgfQotCi0gICAgaWYgKCFmb3VuZEFjdGl2ZUF0bGFzRm9yTm9uQ29tcG9zaXRlZENvbnRl
bnQgJiYgYXRsYXNUb0tlZXBBbnl3YXkpCi0gICAgICAgIG1fdXBkYXRlQXRsYXNlcy5hcHBlbmQo
YXRsYXNUb0tlZXBBbnl3YXkucmVsZWFzZSgpKTsKLQotICAgIGlmIChtX3VwZGF0ZUF0bGFzZXMu
c2l6ZSgpIDw9IDEpCi0gICAgICAgIG1fcmVsZWFzZUluYWN0aXZlQXRsYXNlc1RpbWVyLnN0b3Ao
KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL2Nvb3JkaW5hdGVkL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9jb29yZGluYXRlZC9Db21wb3NpdGluZ0Nv
b3JkaW5hdG9yLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4MGZkODNhZmExOWJm
ODlkMDQ0MGJlMjljZmVlYzVkNDI1YzI5OGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L2Nvb3JkaW5hdGVkL0NvbXBvc2l0aW5nQ29vcmRpbmF0b3IuaAorKysgL2Rldi9udWxsCkBAIC0x
LDE2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9u
IGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICogQ29weXJpZ2h0IChDKSAyMDEzIENvbXBh
bnkgMTAwLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgQ29t
cG9zaXRpbmdDb29yZGluYXRvcl9oCi0jZGVmaW5lIENvbXBvc2l0aW5nQ29vcmRpbmF0b3JfaAot
Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotCi0jaW5jbHVkZSAiQ29vcmRpbmF0ZWRH
cmFwaGljc0xheWVyLmgiCi0jaW5jbHVkZSAiQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlLmgiCi0j
aW5jbHVkZSAiQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmcuaCIKLSNpbmNsdWRlICJGbG9hdFBvaW50
LmgiCi0jaW5jbHVkZSAiR3JhcGhpY3NMYXllckNsaWVudC5oIgotI2luY2x1ZGUgIkdyYXBoaWNz
TGF5ZXJGYWN0b3J5LmgiCi0jaW5jbHVkZSAiSW50UmVjdC5oIgotI2luY2x1ZGUgIlRpbWVyLmgi
Ci0jaW5jbHVkZSAiVXBkYXRlQXRsYXMuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0KLSNp
ZiBFTkFCTEUoQ1NTX1NIQURFUlMpCi0jaW5jbHVkZSAiRmlsdGVyT3BlcmF0aW9ucy5oIgotI2Vu
ZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgUGFnZTsKLWNsYXNzIEdyYXBoaWNz
Q29udGV4dDsKLWNsYXNzIEdyYXBoaWNzTGF5ZXI7Ci1jbGFzcyBDb29yZGluYXRlZFN1cmZhY2U7
Ci0KLWNsYXNzIENvbXBvc2l0aW5nQ29vcmRpbmF0b3IgOiBwdWJsaWMgR3JhcGhpY3NMYXllckNs
aWVudAotICAgICwgcHVibGljIENvb3JkaW5hdGVkR3JhcGhpY3NMYXllckNsaWVudAotICAgICwg
cHVibGljIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpDbGllbnQKLSAgICAsIHB1YmxpYyBVcGRh
dGVBdGxhczo6Q2xpZW50Ci0gICAgLCBwdWJsaWMgR3JhcGhpY3NMYXllckZhY3RvcnkgewotICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKENvbXBvc2l0aW5nQ29vcmRpbmF0b3IpOyBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBjbGFzcyBDbGllbnQgewotICAgIHB1YmxpYzoK
LSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZsdXNoUm9vdExheWVyKCkgPSAwOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgd2lsbFN5bmNMYXllclN0YXRlKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllclN0
YXRlJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Rmx1c2hSZXF1aXJlZCgpID0g
MDsKLSAgICAgICAgdmlydHVhbCB2b2lkIGNvbW1pdFNjZW5lU3RhdGUoQ29vcmRpbmF0ZWRHcmFw
aGljc1N0YXRlJikgPSAwOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRMYXllckNvbnRlbnRz
KGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBjb25zdCBJbnRSZWN0JiBj
bGlwUmVjdCkgPSAwOwotICAgIH07Ci0KLSAgICBzdGF0aWMgUGFzc093blB0cjxDb21wb3NpdGlu
Z0Nvb3JkaW5hdG9yPiBjcmVhdGUoUGFnZSosIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OkNsaWVu
dCopOwotICAgIHZpcnR1YWwgfkNvbXBvc2l0aW5nQ29vcmRpbmF0b3IoKTsKLQotICAgIHZvaWQg
c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoR3JhcGhpY3NMYXllciopOwotICAgIHZvaWQgc2l6ZURp
ZENoYW5nZShjb25zdCBJbnRTaXplJiBuZXdTaXplKTsKLSAgICB2b2lkIGRldmljZU9yUGFnZVNj
YWxlRmFjdG9yQ2hhbmdlZCgpOwotCi0gICAgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UG9pbnQmKTsKLSAgICB2b2lkIHJlbmRlck5leHRG
cmFtZSgpOwotICAgIHZvaWQgcHVyZ2VCYWNraW5nU3RvcmVzKCk7Ci0gICAgdm9pZCBjb21taXRT
Y3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50U2l6ZSYgb2Zmc2V0KTsKLQot
ICAgIHZvaWQgY3JlYXRlUm9vdExheWVyKGNvbnN0IEludFNpemUmKTsKLSAgICB2b2lkIGNsZWFy
Um9vdExheWVyKCkgeyBtX3Jvb3RMYXllciA9IG51bGxwdHI7IH0KLSAgICBHcmFwaGljc0xheWVy
KiByb290TGF5ZXIoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RMYXllci5nZXQoKTsgfQotICAgIENv
b3JkaW5hdGVkR3JhcGhpY3NMYXllciogbWFpbkNvbnRlbnRzTGF5ZXIoKTsKLQotICAgIGJvb2wg
Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzKCk7Ci0gICAgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRl
JiBzdGF0ZSgpIHsgcmV0dXJuIG1fc3RhdGU7IH0KLQotICAgIHZvaWQgc3luY0Rpc3BsYXlTdGF0
ZSgpOwotCi0jaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotICAgIGRvdWJsZSBu
ZXh0QW5pbWF0aW9uU2VydmljZVRpbWUoKSBjb25zdDsKLSNlbmRpZgotCi1wcml2YXRlOgotICAg
IENvbXBvc2l0aW5nQ29vcmRpbmF0b3IoUGFnZSosIENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OkNs
aWVudCopOwotCi0gICAgLy8gR3JhcGhpY3NMYXllckNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBu
b3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBkb3VibGUgdGltZSkg
T1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUZsdXNoUmVxdWlyZWQoY29uc3QgR3Jh
cGhpY3NMYXllciopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBwYWludENvbnRlbnRzKGNv
bnN0IEdyYXBoaWNzTGF5ZXIqLCBHcmFwaGljc0NvbnRleHQmLCBHcmFwaGljc0xheWVyUGFpbnRp
bmdQaGFzZSwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpIE9WRVJSSURFOwotICAgIHZpcnR1YWwg
ZmxvYXQgZGV2aWNlU2NhbGVGYWN0b3IoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGZs
b2F0IHBhZ2VTY2FsZUZhY3RvcigpIGNvbnN0IE9WRVJSSURFOwotCi0gICAgLy8gQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmc6OkNsaWVudAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVJbWFnZUJhY2tp
bmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lELCBQYXNzUmVmUHRy
PENvb3JkaW5hdGVkU3VyZmFjZT4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBjbGVhcklt
YWdlQmFja2luZ0NvbnRlbnRzKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCByZW1vdmVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0ZWRJbWFnZUJhY2tp
bmdJRCkgT1ZFUlJJREU7Ci0KLSAgICAvLyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQK
LSAgICB2aXJ0dWFsIGJvb2wgaXNGbHVzaGluZ0xheWVyQ2hhbmdlcygpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlczsgfQotICAgIHZpcnR1YWwgRmxvYXRS
ZWN0IHZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0ZUltYWdlQmFja2luZ0lmTmVl
ZGVkKEltYWdlKikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIGRldGFjaExheWVyKENvb3Jk
aW5hdGVkR3JhcGhpY3NMYXllciopIE9WRVJSSURFOwotICAgIHZpcnR1YWwgYm9vbCBwYWludFRv
U3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJm
YWNlOjpGbGFncywgdWludDMyX3QmIC8qIGF0bGFzSUQgKi8sIFdlYkNvcmU6OkludFBvaW50Jiwg
V2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQqKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgc3luY0xheWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXllcklELCBDb29yZGluYXRlZEdy
YXBoaWNzTGF5ZXJTdGF0ZSYpIE9WRVJSSURFOwotCi0gICAgLy8gVXBkYXRlQXRsYXM6OkNsaWVu
dAotICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lELCBQ
YXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4pIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9p
ZCByZW1vdmVVcGRhdGVBdGxhcyh1aW50MzJfdCBhdGxhc0lEKSBPVkVSUklERTsKLQotICAgIC8v
IEdyYXBoaWNzTGF5ZXJGYWN0b3J5Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPEdyYXBoaWNzTGF5
ZXI+IGNyZWF0ZUdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllckNsaWVudCopIE9WRVJSSURFOwot
Ci0gICAgdm9pZCBpbml0aWFsaXplUm9vdENvbXBvc2l0aW5nTGF5ZXJJZk5lZWRlZCgpOwotICAg
IHZvaWQgZmx1c2hQZW5kaW5nSW1hZ2VCYWNraW5nQ2hhbmdlcygpOwotICAgIHZvaWQgY2xlYXJQ
ZW5kaW5nU3RhdGVDaGFuZ2VzKCk7Ci0KLSAgICB2b2lkIHNjaGVkdWxlUmVsZWFzZUluYWN0aXZl
QXRsYXNlcygpOwotCi0gICAgdm9pZCByZWxlYXNlSW5hY3RpdmVBdGxhc2VzVGltZXJGaXJlZChU
aW1lcjxDb21wb3NpdGluZ0Nvb3JkaW5hdG9yPiopOwotCi0gICAgUGFnZSogbV9wYWdlOwotICAg
IENvbXBvc2l0aW5nQ29vcmRpbmF0b3I6OkNsaWVudCogbV9jbGllbnQ7Ci0KLSAgICBPd25QdHI8
R3JhcGhpY3NMYXllcj4gbV9yb290TGF5ZXI7Ci0gICAgR3JhcGhpY3NMYXllciogbV9yb290Q29t
cG9zaXRpbmdMYXllcjsKLQotICAgIENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSBtX3N0YXRlOwot
Ci0gICAgdHlwZWRlZiBIYXNoTWFwPENvb3JkaW5hdGVkTGF5ZXJJRCwgQ29vcmRpbmF0ZWRHcmFw
aGljc0xheWVyKj4gTGF5ZXJNYXA7Ci0gICAgTGF5ZXJNYXAgbV9yZWdpc3RlcmVkTGF5ZXJzOwot
ICAgIHR5cGVkZWYgSGFzaE1hcDxDb29yZGluYXRlZEltYWdlQmFja2luZ0lELCBSZWZQdHI8Q29v
cmRpbmF0ZWRJbWFnZUJhY2tpbmc+ID4gSW1hZ2VCYWNraW5nTWFwOwotICAgIEltYWdlQmFja2lu
Z01hcCBtX2ltYWdlQmFja2luZ3M7Ci0gICAgVmVjdG9yPE93blB0cjxVcGRhdGVBdGxhcz4gPiBt
X3VwZGF0ZUF0bGFzZXM7Ci0KLSAgICAvLyBXZSBkb24ndCBzZW5kIHRoZSBtZXNzYWdlcyByZWxh
dGVkIHRvIHJlbGVhc2luZyByZXNvdXJjZXMgdG8gcmVuZGVyZXIgZHVyaW5nIHB1cmdpbmcsIGJl
Y2F1c2UgcmVuZGVyZXIgYWxyZWFkeSBoYWQgcmVtb3ZlZCBhbGwgcmVzb3VyY2VzLgotICAgIGJv
b2wgbV9pc1B1cmdpbmc7Ci0gICAgYm9vbCBtX2lzRmx1c2hpbmdMYXllckNoYW5nZXM7Ci0KLSAg
ICBGbG9hdFJlY3QgbV92aXNpYmxlQ29udGVudHNSZWN0OwotCi0gICAgYm9vbCBtX3Nob3VsZFN5
bmNGcmFtZTsKLSAgICBib29sIG1fZGlkSW5pdGlhbGl6ZVJvb3RDb21wb3NpdGluZ0xheWVyOwot
ICAgIFRpbWVyPENvbXBvc2l0aW5nQ29vcmRpbmF0b3I+IG1fcmVsZWFzZUluYWN0aXZlQXRsYXNl
c1RpbWVyOwotCi0jaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQotICAgIGRvdWJs
ZSBtX2xhc3RBbmltYXRpb25TZXJ2aWNlVGltZTsKLSNlbmRpZgotfTsKLQotfQotCi0jZW5kaWYK
LQotI2VuZGlmIC8vIENvbXBvc2l0aW5nQ29vcmRpbmF0b3JfaApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggNTkw
Yjc0YzA3ODlkNWQ1NjkzMGMwYzkzYWUxZGIyNzA0NDQwYzZhNC4uMTg2YjJlYjY2NGUxOGRmOWE4
OTVjMDVjOTA0NGY4NjUwNjU1NmZlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3QuY3BwCkBAIC00MCw4ICs0MCwxOCBAQAog
I2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFt
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVWaWV3Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9H
cmFwaGljc1N1cmZhY2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckNvbnRyb2xsZXIu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1JlbmRlckxh
eWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZW5kZXJMYXllckJhY2tpbmcuaD4KKyNpbmNsdWRl
IDxXZWJDb3JlL1JlbmRlckxheWVyQ29tcG9zaXRvci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVu
ZGVyVmlldy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3MuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL1N1cmZhY2VVcGRhdGVJbmZvLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9UZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllci5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgorI2luY2x1ZGUg
PHd0Zi9UZW1wb3JhcnlDaGFuZ2UuaD4KIAogI2lmIEVOQUJMRShDU1NfU0hBREVSUykKICNpbmNs
dWRlICJDdXN0b21GaWx0ZXJWYWxpZGF0ZWRQcm9ncmFtLmgiCkBAIC02MiwyNiArNzIsNTEgQEAg
Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojp+Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0KCkKICNp
ZiBFTkFCTEUoQ1NTX1NIQURFUlMpCiAgICAgZGlzY29ubmVjdEN1c3RvbUZpbHRlclByb2dyYW1z
KCk7CiAjZW5kaWYKKyAgICBwdXJnZUJhY2tpbmdTdG9yZXMoKTsKKworICAgIExheWVyTWFwOjpp
dGVyYXRvciBlbmQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuZW5kKCk7CisgICAgZm9yIChMYXllck1h
cDo6aXRlcmF0b3IgaXQgPSBtX3JlZ2lzdGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQorICAgICAgICBpdC0+dmFsdWUtPnNldENvb3JkaW5hdG9yKDApOwogfQogCiBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdChXZWJQYWdlKiB3ZWJQ
YWdlKQogICAgIDogTGF5ZXJUcmVlSG9zdCh3ZWJQYWdlKQorICAgICwgbV9yb290Q29tcG9zaXRp
bmdMYXllcigwKQogICAgICwgbV9ub3RpZnlBZnRlclNjaGVkdWxlZExheWVyRmx1c2goZmFsc2Up
CiAgICAgLCBtX2lzVmFsaWQodHJ1ZSkKKyAgICAsIG1faXNQdXJnaW5nKGZhbHNlKQorICAgICwg
bV9pc0ZsdXNoaW5nTGF5ZXJDaGFuZ2VzKGZhbHNlKQorICAgICwgbV93YWl0aW5nRm9yVUlQcm9j
ZXNzKHRydWUpCiAgICAgLCBtX2lzU3VzcGVuZGVkKGZhbHNlKQotICAgICwgbV9pc1dhaXRpbmdG
b3JSZW5kZXJlcih0cnVlKQorICAgICwgbV9zaG91bGRTeW5jRnJhbWUoZmFsc2UpCisgICAgLCBt
X2RpZEluaXRpYWxpemVSb290Q29tcG9zaXRpbmdMYXllcihmYWxzZSkKICAgICAsIG1fbGF5ZXJG
bHVzaFRpbWVyKHRoaXMsICZDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmxheWVyRmx1c2hUaW1l
ckZpcmVkKQorICAgICwgbV9yZWxlYXNlSW5hY3RpdmVBdGxhc2VzVGltZXIodGhpcywgJkNvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6cmVsZWFzZUluYWN0aXZlQXRsYXNlc1RpbWVyRmlyZWQpCiAg
ICAgLCBtX2xheWVyRmx1c2hTY2hlZHVsaW5nRW5hYmxlZCh0cnVlKQogICAgICwgbV9mb3JjZVJl
cGFpbnRBc3luY0NhbGxiYWNrSUQoMCkKKyAgICAsIG1fYW5pbWF0aW9uc0xvY2tlZChmYWxzZSkK
KyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUpCisgICAgLCBtX2xhc3RBbmltYXRp
b25TZXJ2aWNlVGltZSgwKQorI2VuZGlmCiB7Ci0gICAgbV9jb29yZGluYXRvciA9IENvbXBvc2l0
aW5nQ29vcmRpbmF0b3I6OmNyZWF0ZSh3ZWJQYWdlLT5jb3JlUGFnZSgpLCB0aGlzKTsKKyAgICBt
X3dlYlBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0
b3JJbkNvbXBvc2l0b3IodHJ1ZSk7CiAKLSAgICBtX2Nvb3JkaW5hdG9yLT5jcmVhdGVSb290TGF5
ZXIod2ViUGFnZS0+c2l6ZSgpKTsKLSAgICBtX2xheWVyVHJlZUNvbnRleHQuY29vcmRpbmF0ZWRM
YXllcklEID0gdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIobV9jb29yZGluYXRvci0+cm9vdExh
eWVyKCkpLT5pZCgpOworICAgIC8vIENyZWF0ZSBhIHJvb3QgbGF5ZXIuCisgICAgbV9yb290TGF5
ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUodGhpcywgdGhpcyk7CisjaWZuZGVmIE5ERUJVRwor
ICAgIG1fcm9vdExheWVyLT5zZXROYW1lKCJDb29yZGluYXRlZExheWVyVHJlZUhvc3Qgcm9vdCBs
YXllciIpOworI2VuZGlmCisgICAgbV9yb290TGF5ZXItPnNldERyYXdzQ29udGVudChmYWxzZSk7
CisgICAgbV9yb290TGF5ZXItPnNldFNpemUobV93ZWJQYWdlLT5zaXplKCkpOworICAgIG1fbGF5
ZXJUcmVlQ29udGV4dC5jb29yZGluYXRlZExheWVySUQgPSB0b0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcihtX3Jvb3RMYXllci5nZXQoKSktPmlkKCk7CiAKICAgICBDb29yZGluYXRlZFN1cmZhY2U6
OnNldEZhY3RvcnkoY3JlYXRlQ29vcmRpbmF0ZWRTdXJmYWNlKTsKIAotICAgIGlmICh3ZWJQYWdl
LT5oYXNQYWdlT3ZlcmxheSgpKQorICAgIC8vIFRoaXMgaXMgYSB0ZW1wb3Jhcnkgd2F5IHRvIGVu
YWJsZSB0aGlzIG9ubHkgaW4gdGhlIEdMIGNhc2UsIHVudGlsIFRleHR1cmVNYXBwZXJJbWFnZUJ1
ZmZlciBpcyByZW1vdmVkLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTE0ODY5CisgICAgQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyOjpzZXRTaG91
bGRTdXBwb3J0Q29udGVudHNUaWxpbmcodHJ1ZSk7CisKKyAgICBpZiAobV93ZWJQYWdlLT5oYXNQ
YWdlT3ZlcmxheSgpKQogICAgICAgICBjcmVhdGVQYWdlT3ZlcmxheUxheWVyKCk7CiAKICAgICBz
Y2hlZHVsZUxheWVyRmx1c2goKTsKQEAgLTEyMyw3ICsxNTgsMTIgQEAgdm9pZCBDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6OnNldFNob3VsZE5vdGlmeUFmdGVyTmV4dFNjaGVkdWxlZExheWVyRmx1
c2goYm9vbAogCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6c2V0Um9vdENvbXBvc2l0
aW5nTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciogZ3JhcGhpY3NMYXllcikKIHsKLSAgICBt
X2Nvb3JkaW5hdG9yLT5zZXRSb290Q29tcG9zaXRpbmdMYXllcihncmFwaGljc0xheWVyKTsKKyAg
ICBpZiAobV9yb290Q29tcG9zaXRpbmdMYXllcikKKyAgICAgICAgbV9yb290Q29tcG9zaXRpbmdM
YXllci0+cmVtb3ZlRnJvbVBhcmVudCgpOworCisgICAgbV9yb290Q29tcG9zaXRpbmdMYXllciA9
IGdyYXBoaWNzTGF5ZXI7CisgICAgaWYgKG1fcm9vdENvbXBvc2l0aW5nTGF5ZXIpCisgICAgICAg
IG1fcm9vdExheWVyLT5hZGRDaGlsZEF0SW5kZXgobV9yb290Q29tcG9zaXRpbmdMYXllciwgMCk7
CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjppbnZhbGlkYXRlKCkKQEAgLTEz
MSw3ICsxNzEsNyBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6aW52YWxpZGF0ZSgp
CiAgICAgY2FuY2VsUGVuZGluZ0xheWVyRmx1c2goKTsKIAogICAgIEFTU0VSVChtX2lzVmFsaWQp
OwotICAgIG1fY29vcmRpbmF0b3ItPmNsZWFyUm9vdExheWVyKCk7CisgICAgbV9yb290TGF5ZXIg
PSBudWxscHRyOwogICAgIG1faXNWYWxpZCA9IGZhbHNlOwogfQogCkBAIC0xMzksMTIgKzE3OSwx
MiBAQCB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Zm9yY2VSZXBhaW50KCkKIHsKICAg
ICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSBmb3IgcnVubmluZyBsYXlvdXQgdGVzdHMuIFNpbmNlIGlu
IHRoaXMgY2FzZSB3ZSBhcmUgbm90IHdhaXRpbmcgZm9yIGEgVUlQcm9jZXNzIHRvIHJlcGx5IG5p
Y2VseS4KICAgICAvLyBJbnN0ZWFkIHdlIGFyZSBqdXN0IHRyaWdnZXJpbmcgZm9yY2VSZXBhaW50
LiBCdXQgd2Ugc3RpbGwgd2FudCB0byBoYXZlIHRoZSBzY3JpcHRlZCBhbmltYXRpb24gY2FsbGJh
Y2tzIGJlaW5nIGV4ZWN1dGVkLgotICAgIG1fY29vcmRpbmF0b3ItPnN5bmNEaXNwbGF5U3RhdGUo
KTsKKyAgICBzeW5jRGlzcGxheVN0YXRlKCk7CiAKICAgICAvLyBXZSBuZWVkIHRvIHNjaGVkdWxl
IGFub3RoZXIgZmx1c2gsIG90aGVyd2lzZSB0aGUgZm9yY2VkIHBhaW50IG1pZ2h0IGNhbmNlbCBh
IGxhdGVyIGV4cGVjdGVkIGZsdXNoLgogICAgIC8vIFRoaXMgaXMgYWxpZ25lZCB3aXRoIExheWVy
VHJlZUhvc3RDQS4KICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKLSAgICBtX2Nvb3JkaW5hdG9y
LT5mbHVzaFBlbmRpbmdMYXllckNoYW5nZXMoKTsKKyAgICBmbHVzaFBlbmRpbmdMYXllckNoYW5n
ZXMoKTsKIH0KIAogYm9vbCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludEFz
eW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQpCkBAIC0xNTgsNyArMTk4LDcgQEAgYm9vbCBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OmZvcmNlUmVwYWludEFzeW5jKHVpbnQ2NF90IGNhbGxiYWNrSUQp
CiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzaXplRGlkQ2hhbmdlKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIG5ld1NpemUpCiB7Ci0gICAgbV9jb29yZGluYXRvci0+c2l6ZURpZENo
YW5nZShuZXdTaXplKTsKKyAgICBtX3Jvb3RMYXllci0+c2V0U2l6ZShuZXdTaXplKTsKICAgICBz
Y2hlZHVsZUxheWVyRmx1c2goKTsKIH0KIApAQCAtMTkzLDQ5ICsyMzMsMTExIEBAIHZvaWQgQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRQYWdlT3ZlcmxheU9wYWNpdHkoUGFnZU92ZXJsYXkq
LCBmbG9hdCB2YWx1ZSkKICAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKIH0KIAotdm9pZCBDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OnNldFZpc2libGVDb250ZW50c1JlY3QoY29uc3QgRmxvYXRS
ZWN0JiByZWN0LCBjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5VmVjdG9yKQorYm9vbCBDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OmZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpCiB7Ci0gICAg
bV9jb29yZGluYXRvci0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChyZWN0LCB0cmFqZWN0b3J5VmVj
dG9yKTsKLSAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKKyAgICBpZiAobV93YWl0aW5nRm9yVUlQ
cm9jZXNzKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9v
bD4gcHJvdGVjdG9yKG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlcywgdHJ1ZSk7CisKKyAgICBpbml0
aWFsaXplUm9vdENvbXBvc2l0aW5nTGF5ZXJJZk5lZWRlZCgpOworCisgICAgbV9yb290TGF5ZXIt
PmZsdXNoQ29tcG9zaXRpbmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKyAgICBpZiAobV9wYWdl
T3ZlcmxheUxheWVyKQorICAgICAgICBtX3BhZ2VPdmVybGF5TGF5ZXItPmZsdXNoQ29tcG9zaXRp
bmdTdGF0ZUZvclRoaXNMYXllck9ubHkoKTsKKworICAgIGJvb2wgZGlkU3luYyA9IG1fd2ViUGFn
ZS0+Y29yZVBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+Zmx1c2hDb21wb3NpdGluZ1N0YXRl
SW5jbHVkaW5nU3ViZnJhbWVzKCk7CisKKyAgICB0b0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllciht
X3Jvb3RMYXllci5nZXQoKSktPnVwZGF0ZUNvbnRlbnRCdWZmZXJzSW5jbHVkaW5nU3ViTGF5ZXJz
KCk7CisgICAgdG9Db29yZGluYXRlZEdyYXBoaWNzTGF5ZXIobV9yb290TGF5ZXIuZ2V0KCkpLT5z
eW5jUGVuZGluZ1N0YXRlQ2hhbmdlc0luY2x1ZGluZ1N1YkxheWVycygpOworCisgICAgZmx1c2hQ
ZW5kaW5nSW1hZ2VCYWNraW5nQ2hhbmdlcygpOworCisgICAgaWYgKG1fc2hvdWxkU3luY0ZyYW1l
KSB7CisgICAgICAgIGRpZFN5bmMgPSB0cnVlOworCisgICAgICAgIGlmIChtX3Jvb3RDb21wb3Np
dGluZ0xheWVyKSB7CisgICAgICAgICAgICBtX3N0YXRlLmNvbnRlbnRzU2l6ZSA9IHJvdW5kZWRJ
bnRTaXplKG1fcm9vdENvbXBvc2l0aW5nTGF5ZXItPnNpemUoKSk7CisgICAgICAgICAgICBpZiAo
Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBjb250ZW50c0xheWVyID0gbWFpbkNvbnRlbnRzTGF5
ZXIoKSkKKyAgICAgICAgICAgICAgICBtX3N0YXRlLmNvdmVyZWRSZWN0ID0gY29udGVudHNMYXll
ci0+Y292ZXJSZWN0KCk7CisgICAgICAgIH0KKworICAgICAgICBtX3N0YXRlLnNjcm9sbFBvc2l0
aW9uID0gbV92aXNpYmxlQ29udGVudHNSZWN0LmxvY2F0aW9uKCk7CisKKyAgICAgICAgbV93ZWJQ
YWdlLT5zZW5kKE1lc3NhZ2VzOjpDb29yZGluYXRlZExheWVyVHJlZUhvc3RQcm94eTo6Q29tbWl0
Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlKG1fc3RhdGUpKTsKKworICAgICAgICBjbGVhclBlbmRp
bmdTdGF0ZUNoYW5nZXMoKTsKKyAgICAgICAgbV93YWl0aW5nRm9yVUlQcm9jZXNzID0gdHJ1ZTsK
KyAgICAgICAgbV9zaG91bGRTeW5jRnJhbWUgPSBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAobV9m
b3JjZVJlcGFpbnRBc3luY0NhbGxiYWNrSUQpIHsKKyAgICAgICAgbV93ZWJQYWdlLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlZvaWRDYWxsYmFjayhtX2ZvcmNlUmVwYWludEFzeW5jQ2Fs
bGJhY2tJRCkpOworICAgICAgICBtX2ZvcmNlUmVwYWludEFzeW5jQ2FsbGJhY2tJRCA9IDA7Cisg
ICAgfQorCisgICAgcmV0dXJuIGRpZFN5bmM7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpyZW5kZXJOZXh0RnJhbWUoKQordm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OmNsZWFyUGVuZGluZ1N0YXRlQ2hhbmdlcygpCiB7Ci0gICAgbV9jb29yZGluYXRvci0+cmVuZGVy
TmV4dEZyYW1lKCk7Ci0gICAgbV9pc1dhaXRpbmdGb3JSZW5kZXJlciA9IGZhbHNlOwotICAgIHNj
aGVkdWxlTGF5ZXJGbHVzaCgpOworICAgIG1fc3RhdGUubGF5ZXJzVG9DcmVhdGUuY2xlYXIoKTsK
KyAgICBtX3N0YXRlLmxheWVyc1RvVXBkYXRlLmNsZWFyKCk7CisgICAgbV9zdGF0ZS5sYXllcnNU
b1JlbW92ZS5jbGVhcigpOworCisgICAgbV9zdGF0ZS5pbWFnZXNUb0NyZWF0ZS5jbGVhcigpOwor
ICAgIG1fc3RhdGUuaW1hZ2VzVG9SZW1vdmUuY2xlYXIoKTsKKyAgICBtX3N0YXRlLmltYWdlc1Rv
VXBkYXRlLmNsZWFyKCk7CisgICAgbV9zdGF0ZS5pbWFnZXNUb0NsZWFyLmNsZWFyKCk7CisKKyAg
ICBtX3N0YXRlLnVwZGF0ZUF0bGFzZXNUb0NyZWF0ZS5jbGVhcigpOworICAgIG1fc3RhdGUudXBk
YXRlQXRsYXNlc1RvUmVtb3ZlLmNsZWFyKCk7CisKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisg
ICAgbV9zdGF0ZS5jdXN0b21GaWx0ZXJzVG9DcmVhdGUuY2xlYXIoKTsKKyAgICBtX3N0YXRlLmN1
c3RvbUZpbHRlcnNUb1JlbW92ZS5jbGVhcigpOworI2VuZGlmCiB9CiAKLXZvaWQgQ29vcmRpbmF0
ZWRMYXllclRyZWVIb3N0OjpwdXJnZUJhY2tpbmdTdG9yZXMoKQordm9pZCBDb29yZGluYXRlZExh
eWVyVHJlZUhvc3Q6OmluaXRpYWxpemVSb290Q29tcG9zaXRpbmdMYXllcklmTmVlZGVkKCkKIHsK
LSAgICBtX2Nvb3JkaW5hdG9yLT5wdXJnZUJhY2tpbmdTdG9yZXMoKTsKKyAgICBpZiAobV9kaWRJ
bml0aWFsaXplUm9vdENvbXBvc2l0aW5nTGF5ZXIpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
c3RhdGUucm9vdENvbXBvc2l0aW5nTGF5ZXIgPSB0b0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllciht
X3Jvb3RMYXllci5nZXQoKSktPmlkKCk7CisgICAgbV9kaWRJbml0aWFsaXplUm9vdENvbXBvc2l0
aW5nTGF5ZXIgPSB0cnVlOworICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsKIH0KIAotdm9p
ZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OndpbGxTeW5jTGF5ZXJTdGF0ZShDb29yZGluYXRl
ZEdyYXBoaWNzTGF5ZXJTdGF0ZSYgc3RhdGUpCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9z
dDo6c3luY0xheWVyU3RhdGUoQ29vcmRpbmF0ZWRMYXllcklEIGlkLCBDb29yZGluYXRlZEdyYXBo
aWNzTGF5ZXJTdGF0ZSYgc3RhdGUpCiB7Ci0jaWYgRU5BQkxFKENTU19TSEFERVJTKQotICAgIGlm
IChzdGF0ZS5hbmltYXRpb25zQ2hhbmdlZCkKLSAgICAgICAgcHJlcGFyZUN1c3RvbUZpbHRlclBy
b3hpZXNGb3JBbmltYXRpb25zKHN0YXRlLmFuaW1hdGlvbnMpOworICAgIG1fc2hvdWxkU3luY0Zy
YW1lID0gdHJ1ZTsKIAotICAgIGlmIChzdGF0ZS5maWx0ZXJzQ2hhbmdlZCkKLSAgICAgICAgY2hl
Y2tDdXN0b21GaWx0ZXJQcm9ncmFtUHJveGllcyhzdGF0ZS5maWx0ZXJzKTsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKHN0YXRlKTsKKyNpZiBFTkFCTEUoQ1NTX1NIQURFUlMpCisgICAgcHJlcGFy
ZUN1c3RvbUZpbHRlclByb3hpZXNJZk5lZWRlZChzdGF0ZSk7CiAjZW5kaWYKKworICAgIG1fc3Rh
dGUubGF5ZXJzVG9VcGRhdGUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGlkLCBzdGF0ZSkpOwogfQog
CiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OnByZXBhcmVDdXN0b21GaWx0ZXJQcm94aWVzRm9yQW5pbWF0aW9ucyhHcmFwaGljc0xheWVyQW5p
bWF0aW9ucyYgYWN0aXZlQW5pbWF0aW9ucykKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGFjdGl2ZUFuaW1hdGlvbnMuYW5pbWF0aW9ucygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNv
bnN0IEtleWZyYW1lVmFsdWVMaXN0JiBrZXlmcmFtZXMgPSBhY3RpdmVBbmltYXRpb25zLmFuaW1h
dGlvbnMoKS5hdChpKS5rZXlmcmFtZXMoKTsKLSAgICAgICAgaWYgKGtleWZyYW1lcy5wcm9wZXJ0
eSgpICE9IEFuaW1hdGVkUHJvcGVydHlXZWJraXRGaWx0ZXIpCi0gICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBrZXlmcmFtZXMuc2l6ZSgpOyArK2op
IHsKLSAgICAgICAgICAgIGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJiBmaWx0ZXJWYWx1ZSA9
IHN0YXRpY19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJj4oa2V5ZnJhbWVzLmF0KGop
KTsKLSAgICAgICAgICAgIGNoZWNrQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3hpZXMoZmlsdGVyVmFs
dWUudmFsdWUoKSk7Cit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cHJlcGFyZUN1c3Rv
bUZpbHRlclByb3hpZXNJZk5lZWRlZChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYgc3Rh
dGUpCit7CisgICAgaWYgKHN0YXRlLmFuaW1hdGlvbnNDaGFuZ2VkKSB7CisgICAgICAgIEdyYXBo
aWNzTGF5ZXJBbmltYXRpb25zJiBhY3RpdmVBbmltYXRpb25zID0gc3RhdGUuYW5pbWF0aW9uczsK
KyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhY3RpdmVBbmltYXRpb25zLmFuaW1hdGlv
bnMoKS5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3Qm
IGtleWZyYW1lcyA9IGFjdGl2ZUFuaW1hdGlvbnMuYW5pbWF0aW9ucygpLmF0KGkpLmtleWZyYW1l
cygpOworICAgICAgICAgICAgaWYgKGtleWZyYW1lcy5wcm9wZXJ0eSgpICE9IEFuaW1hdGVkUHJv
cGVydHlXZWJraXRGaWx0ZXIpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAg
ICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGtleWZyYW1lcy5zaXplKCk7ICsraikgeworICAgICAg
ICAgICAgICAgIGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJiBmaWx0ZXJWYWx1ZSA9IHN0YXRp
Y19jYXN0PGNvbnN0IEZpbHRlckFuaW1hdGlvblZhbHVlJj4oa2V5ZnJhbWVzLmF0KGopKTsKKyAg
ICAgICAgICAgICAgICBjaGVja0N1c3RvbUZpbHRlclByb2dyYW1Qcm94aWVzKGZpbHRlclZhbHVl
LnZhbHVlKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorCisgICAgaWYgKHN0
YXRlLmZpbHRlcnNDaGFuZ2VkKQorICAgICAgICBjaGVja0N1c3RvbUZpbHRlclByb2dyYW1Qcm94
aWVzKHN0YXRlLmZpbHRlcnMpOwogfQogCiB2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6
Y2hlY2tDdXN0b21GaWx0ZXJQcm9ncmFtUHJveGllcyhjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBm
aWx0ZXJzKQpAQCAtMjY1LDcgKzM2Nyw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjpjaGVja0N1c3RvbUZpbHRlclByb2dyYW1Qcm94aWVzKGNvbnN0IEZpbHRlck9wZXJhCiAgICAg
ICAgIGlmICghY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LT5jbGllbnQoKSkgewogICAgICAgICAg
ICAgY3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5LT5zZXRDbGllbnQodGhpcyk7CiAgICAgICAgICAg
ICBtX2N1c3RvbUZpbHRlclByb2dyYW1zLmFkZChjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHkuZ2V0
KCkpOwotICAgICAgICAgICAgbV9jb29yZGluYXRvci0+c3RhdGUoKS5jdXN0b21GaWx0ZXJzVG9D
cmVhdGUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGN1c3RvbUZpbHRlclByb2dyYW1Qcm94eS0+aWQo
KSwgY3VzdG9tT3BlcmF0aW9uLT52YWxpZGF0ZWRQcm9ncmFtKCktPnZhbGlkYXRlZFByb2dyYW1J
bmZvKCkpKTsKKyAgICAgICAgICAgIG1fc3RhdGUuY3VzdG9tRmlsdGVyc1RvQ3JlYXRlLmFwcGVu
ZChzdGQ6Om1ha2VfcGFpcihjdXN0b21GaWx0ZXJQcm9ncmFtUHJveHktPmlkKCksIGN1c3RvbU9w
ZXJhdGlvbi0+dmFsaWRhdGVkUHJvZ3JhbSgpLT52YWxpZGF0ZWRQcm9ncmFtSW5mbygpKSk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBJZiB0aGUgY2xpZW50IHdhcyBub3QgZGlz
Y29ubmVjdGVkIHRoZW4gdGhpcyBjb29yZGluYXRvciBtdXN0IGJlIHRoZSBjbGllbnQgZm9yIGl0
LgogICAgICAgICAgICAgQVNTRVJUKGN1c3RvbUZpbHRlclByb2dyYW1Qcm94eS0+Y2xpZW50KCkg
PT0gdGhpcyk7CkBAIC0yNzgsNyArMzgwLDcgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OnJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW1Qcm94eShXZWJDdXN0b21GaWx0ZXJQcm8KICAg
ICAvLyBBdCB0aGlzIHRpbWUgdGhlIHNoYWRlciBpcyBub3QgbmVlZGVkIGFueW1vcmUsIHNvIHdl
IHJlbW92ZSBpdCBmcm9tIG91ciBzZXQgYW5kCiAgICAgLy8gc2VuZCBhIG1lc3NhZ2UgdG8gdGhl
IG90aGVyIHByb2Nlc3MgdG8gZGVsZXRlIGl0LgogICAgIG1fY3VzdG9tRmlsdGVyUHJvZ3JhbXMu
cmVtb3ZlKGN1c3RvbUZpbHRlclByb2dyYW1Qcm94eSk7Ci0gICAgbV9jb29yZGluYXRvci0+c3Rh
dGUoKS5jdXN0b21GaWx0ZXJzVG9SZW1vdmUuYXBwZW5kKGN1c3RvbUZpbHRlclByb2dyYW1Qcm94
eS0+aWQoKSk7CisgICAgbV9zdGF0ZS5jdXN0b21GaWx0ZXJzVG9SZW1vdmUuYXBwZW5kKGN1c3Rv
bUZpbHRlclByb2dyYW1Qcm94eS0+aWQoKSk7CiB9CiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRy
ZWVIb3N0OjpkaXNjb25uZWN0Q3VzdG9tRmlsdGVyUHJvZ3JhbXMoKQpAQCAtMjkwLDMwICszOTIs
NTIgQEAgdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRpc2Nvbm5lY3RDdXN0b21GaWx0
ZXJQcm9ncmFtcygpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKENTU19TSEFERVJTKQogCi12b2lkIENv
b3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6ZGlkRmx1c2hSb290TGF5ZXIoKQordm9pZCBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OmRldGFjaExheWVyKENvb3JkaW5hdGVkR3JhcGhpY3NMYXllciog
bGF5ZXIpCiB7Ci0gICAgaWYgKG1fcGFnZU92ZXJsYXlMYXllcikKLSAgICAgICAgbV9wYWdlT3Zl
cmxheUxheWVyLT5mbHVzaENvbXBvc2l0aW5nU3RhdGVGb3JUaGlzTGF5ZXJPbmx5KCk7CisgICAg
bV9yZWdpc3RlcmVkTGF5ZXJzLnJlbW92ZShsYXllci0+aWQoKSk7CisKKyAgICBzaXplX3QgaW5k
ZXggPSBtX3N0YXRlLmxheWVyc1RvQ3JlYXRlLmZpbmQobGF5ZXItPmlkKCkpOworICAgIGlmIChp
bmRleCAhPSBub3RGb3VuZCkgeworICAgICAgICBtX3N0YXRlLmxheWVyc1RvQ3JlYXRlLnJlbW92
ZShpbmRleCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3N0YXRlLmxheWVyc1Rv
UmVtb3ZlLmFwcGVuZChsYXllci0+aWQoKSk7CisgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiB9
CiAKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpwZXJmb3JtU2NoZWR1bGVkTGF5ZXJG
bHVzaCgpCiB7Ci0gICAgaWYgKG1faXNTdXNwZW5kZWQgfHwgbV9pc1dhaXRpbmdGb3JSZW5kZXJl
cikKKyAgICBpZiAobV9pc1N1c3BlbmRlZCB8fCBtX3dhaXRpbmdGb3JVSVByb2Nlc3MpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fY29vcmRpbmF0b3ItPnN5bmNEaXNwbGF5U3RhdGUoKTsKKyAg
ICBzeW5jRGlzcGxheVN0YXRlKCk7CiAKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYm9vbCBkaWRTeW5jID0gbV9jb29yZGluYXRvci0+Zmx1c2hQZW5kaW5nTGF5
ZXJDaGFuZ2VzKCk7CisgICAgaWYgKGZsdXNoUGVuZGluZ0xheWVyQ2hhbmdlcygpKQorICAgICAg
ICBkaWRQZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCgpOworfQogCi0gICAgaWYgKG1fZm9yY2VS
ZXBhaW50QXN5bmNDYWxsYmFja0lEKSB7Ci0gICAgICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpWb2lkQ2FsbGJhY2sobV9mb3JjZVJlcGFpbnRBc3luY0NhbGxiYWNr
SUQpKTsKLSAgICAgICAgbV9mb3JjZVJlcGFpbnRBc3luY0NhbGxiYWNrSUQgPSAwOwotICAgIH0K
K3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzeW5jRGlzcGxheVN0YXRlKCkKK3sKKyNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIG1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpLT5kaWRCZWdpbkZyYW1lKCk7CisjZW5kaWYKKworI2lmIEVOQUJMRShSRVFV
RVNUX0FOSU1BVElPTl9GUkFNRSkgJiYgIVVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9USU1F
UikgJiYgIVVTRShSRVFVRVNUX0FOSU1BVElPTl9GUkFNRV9ESVNQTEFZX01PTklUT1IpCisgICAg
Ly8gTWFrZSBzdXJlIHRoYXQgYW55IHByZXZpb3VzbHkgcmVnaXN0ZXJlZCBhbmltYXRpb24gY2Fs
bGJhY2tzIGFyZSBiZWluZyBleGVjdXRlZCBiZWZvcmUgd2UgZmx1c2ggdGhlIGxheWVycy4KKyAg
ICBtX2xhc3RBbmltYXRpb25TZXJ2aWNlVGltZSA9IFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNp
bmdUaW1lKCk7CisgICAgbV93ZWJQYWdlLT5jb3JlUGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygp
LT5zZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb25zKG1fbGFzdEFuaW1hdGlvblNlcnZpY2VUaW1lKTsK
KyNlbmRpZgorCisgICAgbV93ZWJQYWdlLT5sYXlvdXRJZk5lZWRlZCgpOworfQogCi0gICAgaWYg
KG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoICYmIGRpZFN5bmMpIHsKK3ZvaWQgQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkaWRQZXJmb3JtU2NoZWR1bGVkTGF5ZXJGbHVzaCgpCit7
CisgICAgaWYgKG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRMYXllckZsdXNoKSB7CiAgICAgICAgIHN0
YXRpY19jYXN0PERyYXdpbmdBcmVhSW1wbCo+KG1fd2ViUGFnZS0+ZHJhd2luZ0FyZWEoKSktPmxh
eWVySG9zdERpZEZsdXNoTGF5ZXJzKCk7CiAgICAgICAgIG1fbm90aWZ5QWZ0ZXJTY2hlZHVsZWRM
YXllckZsdXNoID0gZmFsc2U7CiAgICAgfQpAQCAtMzI4LDE1ICs0NTIsMTUgQEAgdm9pZCBDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZVBhZ2VPdmVybGF5TGF5ZXIoKQogewogICAgIEFT
U0VSVCghbV9wYWdlT3ZlcmxheUxheWVyKTsKIAotICAgIG1fcGFnZU92ZXJsYXlMYXllciA9IEdy
YXBoaWNzTGF5ZXI6OmNyZWF0ZShncmFwaGljc0xheWVyRmFjdG9yeSgpLCBtX2Nvb3JkaW5hdG9y
LmdldCgpKTsKKyAgICBtX3BhZ2VPdmVybGF5TGF5ZXIgPSBHcmFwaGljc0xheWVyOjpjcmVhdGUo
dGhpcywgdGhpcyk7CiAjaWZuZGVmIE5ERUJVRwotICAgIG1fcGFnZU92ZXJsYXlMYXllci0+c2V0
TmFtZSgiQ29tcG9zaXRpbmdDb29yZGluYXRvciBwYWdlIG92ZXJsYXkgY29udGVudCIpOworICAg
IG1fcGFnZU92ZXJsYXlMYXllci0+c2V0TmFtZSgiQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0IHBh
Z2Ugb3ZlcmxheSBjb250ZW50Iik7CiAjZW5kaWYKIAogICAgIG1fcGFnZU92ZXJsYXlMYXllci0+
c2V0RHJhd3NDb250ZW50KHRydWUpOwotICAgIG1fcGFnZU92ZXJsYXlMYXllci0+c2V0U2l6ZSht
X2Nvb3JkaW5hdG9yLT5yb290TGF5ZXIoKS0+c2l6ZSgpKTsKKyAgICBtX3BhZ2VPdmVybGF5TGF5
ZXItPnNldFNpemUobV93ZWJQYWdlLT5zaXplKCkpOwogCi0gICAgbV9jb29yZGluYXRvci0+cm9v
dExheWVyKCktPmFkZENoaWxkKG1fcGFnZU92ZXJsYXlMYXllci5nZXQoKSk7CisgICAgbV9yb290
TGF5ZXItPmFkZENoaWxkKG1fcGFnZU92ZXJsYXlMYXllci5nZXQoKSk7CiB9CiAKIHZvaWQgQ29v
cmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXN0cm95UGFnZU92ZXJsYXlMYXllcigpCkBAIC0zNDYs
NyArNDcwLDY1IEBAIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpkZXN0cm95UGFnZU92
ZXJsYXlMYXllcigpCiAgICAgbV9wYWdlT3ZlcmxheUxheWVyID0gbnVsbHB0cjsKIH0KIAotdm9p
ZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhaW50TGF5ZXJDb250ZW50cyhjb25zdCBHcmFw
aGljc0xheWVyKiBncmFwaGljc0xheWVyLCBHcmFwaGljc0NvbnRleHQmIGdyYXBoaWNzQ29udGV4
dCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QpCitQYXNzUmVmUHRyPENvb3JkaW5hdGVkSW1hZ2VC
YWNraW5nPiBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUltYWdlQmFja2luZ0lmTmVl
ZGVkKEltYWdlKiBpbWFnZSkKK3sKKyAgICBDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdl
SUQgPSBDb29yZGluYXRlZEltYWdlQmFja2luZzo6Z2V0Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJ
RChpbWFnZSk7CisgICAgSW1hZ2VCYWNraW5nTWFwOjppdGVyYXRvciBpdCA9IG1faW1hZ2VCYWNr
aW5ncy5maW5kKGltYWdlSUQpOworICAgIFJlZlB0cjxDb29yZGluYXRlZEltYWdlQmFja2luZz4g
aW1hZ2VCYWNraW5nOworICAgIGlmIChpdCA9PSBtX2ltYWdlQmFja2luZ3MuZW5kKCkpIHsKKyAg
ICAgICAgaW1hZ2VCYWNraW5nID0gQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc6OmNyZWF0ZSh0aGlz
LCBpbWFnZSk7CisgICAgICAgIG1faW1hZ2VCYWNraW5ncy5hZGQoaW1hZ2VJRCwgaW1hZ2VCYWNr
aW5nKTsKKyAgICB9IGVsc2UKKyAgICAgICAgaW1hZ2VCYWNraW5nID0gaXQtPnZhbHVlOworCisg
ICAgcmV0dXJuIGltYWdlQmFja2luZzsKK30KKwordm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhv
c3Q6OmNyZWF0ZUltYWdlQmFja2luZyhDb29yZGluYXRlZEltYWdlQmFja2luZ0lEIGltYWdlSUQp
Cit7CisgICAgbV9zdGF0ZS5pbWFnZXNUb0NyZWF0ZS5hcHBlbmQoaW1hZ2VJRCk7Cit9CisKK3Zv
aWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojp1cGRhdGVJbWFnZUJhY2tpbmcoQ29vcmRpbmF0
ZWRJbWFnZUJhY2tpbmdJRCBpbWFnZUlELCBQYXNzUmVmUHRyPENvb3JkaW5hdGVkU3VyZmFjZT4g
Y29vcmRpbmF0ZWRTdXJmYWNlKQoreworICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsKKyAg
ICBtX3N0YXRlLmltYWdlc1RvVXBkYXRlLmFwcGVuZChzdGQ6Om1ha2VfcGFpcihpbWFnZUlELCBj
b29yZGluYXRlZFN1cmZhY2UpKTsKK30KKwordm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OmNsZWFySW1hZ2VCYWNraW5nQ29udGVudHMoQ29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCBpbWFn
ZUlEKQoreworICAgIG1fc2hvdWxkU3luY0ZyYW1lID0gdHJ1ZTsKKyAgICBtX3N0YXRlLmltYWdl
c1RvQ2xlYXIuYXBwZW5kKGltYWdlSUQpOworfQorCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVl
SG9zdDo6cmVtb3ZlSW1hZ2VCYWNraW5nKENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nSUQgaW1hZ2VJ
RCkKK3sKKyAgICBpZiAobV9pc1B1cmdpbmcpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VS
VChtX2ltYWdlQmFja2luZ3MuY29udGFpbnMoaW1hZ2VJRCkpOworICAgIG1faW1hZ2VCYWNraW5n
cy5yZW1vdmUoaW1hZ2VJRCk7CisKKyAgICBtX3N0YXRlLmltYWdlc1RvUmVtb3ZlLmFwcGVuZChp
bWFnZUlEKTsKK30KKwordm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmZsdXNoUGVuZGlu
Z0ltYWdlQmFja2luZ0NoYW5nZXMoKQoreworICAgIEltYWdlQmFja2luZ01hcDo6aXRlcmF0b3Ig
ZW5kID0gbV9pbWFnZUJhY2tpbmdzLmVuZCgpOworICAgIGZvciAoSW1hZ2VCYWNraW5nTWFwOjpp
dGVyYXRvciBpdGVyID0gbV9pbWFnZUJhY2tpbmdzLmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0
ZXIpCisgICAgICAgIGl0ZXItPnZhbHVlLT51cGRhdGUoKTsKK30KKwordm9pZCBDb29yZGluYXRl
ZExheWVyVHJlZUhvc3Q6Om5vdGlmeUFuaW1hdGlvblN0YXJ0ZWQoY29uc3QgV2ViQ29yZTo6R3Jh
cGhpY3NMYXllciosIGRvdWJsZSAvKiB0aW1lICovKQoreworfQorCit2b2lkIENvb3JkaW5hdGVk
TGF5ZXJUcmVlSG9zdDo6bm90aWZ5Rmx1c2hSZXF1aXJlZChjb25zdCBXZWJDb3JlOjpHcmFwaGlj
c0xheWVyKikKK3sKKyAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKK30KKwordm9pZCBDb29yZGlu
YXRlZExheWVyVHJlZUhvc3Q6OnBhaW50Q29udGVudHMoY29uc3QgV2ViQ29yZTo6R3JhcGhpY3NM
YXllciogZ3JhcGhpY3NMYXllciwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiBncmFwaGljc0Nv
bnRleHQsIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICBpZiAoZ3JhcGhpY3NMYXllciA9PSBtX3BhZ2VP
dmVybGF5TGF5ZXIpIHsKICAgICAgICAgLy8gT3ZlcmxheXMgY29udGFpbiB0cmFuc3BhcmVudCBj
b250ZW50cyBhbmQgd29uJ3QgY2xlYXIgdGhlIGNvbnRleHQgYXMgcGFydCBvZiB0aGVpciByZW5k
ZXJpbmcsIHNvIHdlIGRvIGl0IGhlcmUuCkBAIC0zNTYsMTAgKzUzOCwxNSBAQCB2b2lkIENvb3Jk
aW5hdGVkTGF5ZXJUcmVlSG9zdDo6cGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IEdyYXBoaWNzTGF5
ZXIqIGdyYXBoaWNzTAogICAgIH0KIH0KIAotdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6
OmNvbW1pdFNjZW5lU3RhdGUoV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJiBzdGF0
ZSkKK1Bhc3NPd25QdHI8R3JhcGhpY3NMYXllcj4gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpj
cmVhdGVHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXJDbGllbnQqIGNsaWVudCkKIHsKLSAgICBt
X3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OkNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdFByb3h5OjpD
b21taXRDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUoc3RhdGUpKTsKLSAgICBtX2lzV2FpdGluZ0Zv
clJlbmRlcmVyID0gdHJ1ZTsKKyAgICBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGxheWVyID0g
bmV3IENvb3JkaW5hdGVkR3JhcGhpY3NMYXllcihjbGllbnQpOworICAgIGxheWVyLT5zZXRDb29y
ZGluYXRvcih0aGlzKTsKKyAgICBtX3JlZ2lzdGVyZWRMYXllcnMuYWRkKGxheWVyLT5pZCgpLCBs
YXllcik7CisgICAgbV9zdGF0ZS5sYXllcnNUb0NyZWF0ZS5hcHBlbmQobGF5ZXItPmlkKCkpOwor
ICAgIGxheWVyLT5zZXROZWVkc1Zpc2libGVSZWN0QWRqdXN0bWVudCgpOworICAgIHNjaGVkdWxl
TGF5ZXJGbHVzaCgpOworICAgIHJldHVybiBhZG9wdFB0cihsYXllcik7CiB9CiAKIFBhc3NSZWZQ
dHI8Q29vcmRpbmF0ZWRTdXJmYWNlPiBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0ZUNv
b3JkaW5hdGVkU3VyZmFjZShjb25zdCBJbnRTaXplJiBzaXplLCBDb29yZGluYXRlZFN1cmZhY2U6
OkZsYWdzIGZsYWdzKQpAQCAtMzY3LDE0ICs1NTQsNzMgQEAgUGFzc1JlZlB0cjxDb29yZGluYXRl
ZFN1cmZhY2U+IENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlQ29vcmRpbmF0ZWRTdXJm
YWMKICAgICByZXR1cm4gV2ViQ29vcmRpbmF0ZWRTdXJmYWNlOjpjcmVhdGUoc2l6ZSwgZmxhZ3Mp
OwogfQogCitmbG9hdCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmRldmljZVNjYWxlRmFjdG9y
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJQYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpOwor
fQorCitmbG9hdCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnBhZ2VTY2FsZUZhY3RvcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fd2ViUGFnZS0+cGFnZVNjYWxlRmFjdG9yKCk7Cit9CisKIGJv
b2wgTGF5ZXJUcmVlSG9zdDo6c3VwcG9ydHNBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkKIHsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNyZWF0
ZVVwZGF0ZUF0bGFzKHVpbnQzMl90IGF0bGFzSUQsIFBhc3NSZWZQdHI8Q29vcmRpbmF0ZWRTdXJm
YWNlPiBjb29yZGluYXRlZFN1cmZhY2UpCit7CisgICAgbV9zdGF0ZS51cGRhdGVBdGxhc2VzVG9D
cmVhdGUuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGF0bGFzSUQsIGNvb3JkaW5hdGVkU3VyZmFjZSkp
OworfQorCit2b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cmVtb3ZlVXBkYXRlQXRsYXMo
dWludDMyX3QgYXRsYXNJRCkKK3sKKyAgICBpZiAobV9pc1B1cmdpbmcpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX3N0YXRlLnVwZGF0ZUF0bGFzZXNUb1JlbW92ZS5hcHBlbmQoYXRsYXNJRCk7Cit9
CisKK1dlYkNvcmU6OkZsb2F0UmVjdCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnZpc2libGVD
b250ZW50c1JlY3QoKSBjb25zdAoreworICAgIHJldHVybiBtX3Zpc2libGVDb250ZW50c1JlY3Q7
Cit9CisKK0Nvb3JkaW5hdGVkR3JhcGhpY3NMYXllciogQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
OjptYWluQ29udGVudHNMYXllcigpCit7CisgICAgaWYgKCFtX3Jvb3RDb21wb3NpdGluZ0xheWVy
KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiB0b0Nvb3JkaW5hdGVkR3JhcGhpY3NM
YXllcihtX3Jvb3RDb21wb3NpdGluZ0xheWVyKS0+ZmluZEZpcnN0RGVzY2VuZGFudFdpdGhDb250
ZW50c1JlY3Vyc2l2ZWx5KCk7Cit9CisKK3ZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0Ojpz
ZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYXRQ
b2ludCYgdHJhamVjdG9yeVZlY3RvcikKK3sKKyAgICAvLyBBIHplcm8gdHJhamVjdG9yeVZlY3Rv
ciBpbmRpY2F0ZXMgdGhhdCB0aWxlcyBhbGwgYXJvdW5kIHRoZSB2aWV3cG9ydCBhcmUgcmVxdWVz
dGVkLgorICAgIGlmIChDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXIqIGNvbnRlbnRzTGF5ZXIgPSBt
YWluQ29udGVudHNMYXllcigpKQorICAgICAgICBjb250ZW50c0xheWVyLT5zZXRWaXNpYmxlQ29u
dGVudFJlY3RUcmFqZWN0b3J5VmVjdG9yKHRyYWplY3RvcnlWZWN0b3IpOworCisgICAgYm9vbCBj
b250ZW50c1JlY3REaWRDaGFuZ2UgPSByZWN0ICE9IG1fdmlzaWJsZUNvbnRlbnRzUmVjdDsKKyAg
ICBpZiAoY29udGVudHNSZWN0RGlkQ2hhbmdlKSB7CisgICAgICAgIG1fdmlzaWJsZUNvbnRlbnRz
UmVjdCA9IHJlY3Q7CisKKyAgICAgICAgTGF5ZXJNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fcmVnaXN0
ZXJlZExheWVycy5lbmQoKTsKKyAgICAgICAgZm9yIChMYXllck1hcDo6aXRlcmF0b3IgaXQgPSBt
X3JlZ2lzdGVyZWRMYXllcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAg
ICBpdC0+dmFsdWUtPnNldE5lZWRzVmlzaWJsZVJlY3RBZGp1c3RtZW50KCk7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBzY2hlZHVsZUxheWVyRmx1c2goKTsKKyAgICBpZiAobV93ZWJQYWdlLT51
c2VGaXhlZExheW91dCgpKSB7CisgICAgICAgIC8vIFJvdW5kIHRoZSByZWN0IGluc3RlYWQgb2Yg
ZW5jbG9zaW5nIGl0IHRvIG1ha2Ugc3VyZSB0aGF0IGl0cyBzaXplIHN0YXlzCisgICAgICAgIC8v
IHRoZSBzYW1lIHdoaWxlIHBhbm5pbmcuIFRoaXMgY2FuIGhhdmUgbmFzdHkgZWZmZWN0cyBvbiBs
YXlvdXQuCisgICAgICAgIG1fd2ViUGFnZS0+c2V0Rml4ZWRWaXNpYmxlQ29udGVudFJlY3Qocm91
bmRlZEludFJlY3QocmVjdCkpOworICAgIH0KK30KKwogdm9pZCBDb29yZGluYXRlZExheWVyVHJl
ZUhvc3Q6OmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpCiB7Ci0gICAgbV9jb29yZGlu
YXRvci0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCk7CisgICAgbV9yb290TGF5ZXIt
PmRldmljZU9yUGFnZVNjYWxlRmFjdG9yQ2hhbmdlZCgpOwogICAgIGlmIChtX3BhZ2VPdmVybGF5
TGF5ZXIpCiAgICAgICAgIG1fcGFnZU92ZXJsYXlMYXllci0+ZGV2aWNlT3JQYWdlU2NhbGVGYWN0
b3JDaGFuZ2VkKCk7CiB9CkBAIC0zODUsMjMgKzYzMSw5NSBAQCB2b2lkIENvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdDo6cGFnZUJhY2tncm91bmRUcmFuc3BhcmVuY3lDaGFuZ2VkKCkKIAogR3JhcGhp
Y3NMYXllckZhY3RvcnkqIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6Z3JhcGhpY3NMYXllckZh
Y3RvcnkoKQogewotICAgIHJldHVybiBtX2Nvb3JkaW5hdG9yLmdldCgpOworICAgIHJldHVybiB0
aGlzOwogfQogCiAjaWYgRU5BQkxFKFJFUVVFU1RfQU5JTUFUSU9OX0ZSQU1FKQogdm9pZCBDb29y
ZGluYXRlZExheWVyVHJlZUhvc3Q6OnNjaGVkdWxlQW5pbWF0aW9uKCkKIHsKLSAgICBpZiAobV9p
c1dhaXRpbmdGb3JSZW5kZXJlcikKKyAgICBpZiAobV93YWl0aW5nRm9yVUlQcm9jZXNzKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAobV9sYXllckZsdXNoVGltZXIuaXNBY3RpdmUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9sYXllckZsdXNoVGltZXIuc3RhcnRPbmVTaG90KG1fY29v
cmRpbmF0b3ItPm5leHRBbmltYXRpb25TZXJ2aWNlVGltZSgpKTsKKyAgICAvLyBBY2NvcmRpbmcg
dG8gdGhlIHJlcXVlc3RBbmltYXRpb25GcmFtZSBzcGVjLCByQUYgY2FsbGJhY2tzIHNob3VsZCBu
b3QgYmUgZmFzdGVyIHRoYW4gNjBGUFMuCisgICAgc3RhdGljIGNvbnN0IGRvdWJsZSBNaW5pbWFs
VGltZW91dEZvckFuaW1hdGlvbnMgPSAxLiAvIDYwLjsKKyAgICBtX2xheWVyRmx1c2hUaW1lci5z
dGFydE9uZVNob3Qoc3RkOjptYXg8ZG91YmxlPigwLiwgTWluaW1hbFRpbWVvdXRGb3JBbmltYXRp
b25zIC0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSArIG1fbGFzdEFuaW1hdGlv
blNlcnZpY2VUaW1lKSk7CiAgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7CiB9CiAjZW5kaWYKIAor
dm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnJlbmRlck5leHRGcmFtZSgpCit7CisgICAg
bV93YWl0aW5nRm9yVUlQcm9jZXNzID0gZmFsc2U7CisgICAgc2NoZWR1bGVMYXllckZsdXNoKCk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdXBkYXRlQXRsYXNlcy5zaXplKCk7ICsr
aSkKKyAgICAgICAgbV91cGRhdGVBdGxhc2VzW2ldLT5kaWRTd2FwQnVmZmVycygpOworfQorCit2
b2lkIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cHVyZ2VCYWNraW5nU3RvcmVzKCkKK3sKKyAg
ICBUZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gcHVyZ2luZ1RvZ2dsZShtX2lzUHVyZ2luZywgdHJ1ZSk7
CisKKyAgICBMYXllck1hcDo6aXRlcmF0b3IgZW5kID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmVuZCgp
OworICAgIGZvciAoTGF5ZXJNYXA6Oml0ZXJhdG9yIGl0ID0gbV9yZWdpc3RlcmVkTGF5ZXJzLmJl
Z2luKCk7IGl0ICE9IGVuZDsgKytpdCkKKyAgICAgICAgaXQtPnZhbHVlLT5wdXJnZUJhY2tpbmdT
dG9yZXMoKTsKKworICAgIG1faW1hZ2VCYWNraW5ncy5jbGVhcigpOworICAgIG1fdXBkYXRlQXRs
YXNlcy5jbGVhcigpOworfQorCitib29sIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdDo6cGFpbnRU
b1N1cmZhY2UoY29uc3QgSW50U2l6ZSYgc2l6ZSwgQ29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncyBm
bGFncywgdWludDMyX3QmIGF0bGFzSUQsIEludFBvaW50JiBvZmZzZXQsIENvb3JkaW5hdGVkU3Vy
ZmFjZTo6Q2xpZW50KiBjbGllbnQpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1f
dXBkYXRlQXRsYXNlcy5zaXplKCk7ICsraSkgeworICAgICAgICBVcGRhdGVBdGxhcyogYXRsYXMg
PSBtX3VwZGF0ZUF0bGFzZXNbaV0uZ2V0KCk7CisgICAgICAgIGlmIChhdGxhcy0+c3VwcG9ydHNB
bHBoYSgpID09IChmbGFncyAmIENvb3JkaW5hdGVkU3VyZmFjZTo6U3VwcG9ydHNBbHBoYSkpIHsK
KyAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBmYWxzZSBpZiB0aGVyZSBpcyBubyBhdmFpbGFibGUg
YnVmZmVyIHNwYWNlLgorICAgICAgICAgICAgaWYgKGF0bGFzLT5wYWludE9uQXZhaWxhYmxlQnVm
ZmVyKHNpemUsIGF0bGFzSUQsIG9mZnNldCwgY2xpZW50KSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBjb25zdCBpbnQgU2NyYXRj
aEJ1ZmZlckRpbWVuc2lvbiA9IDEwMjQ7IC8vIFNob3VsZCBiZSBhIHBvd2VyIG9mIHR3by4KKyAg
ICBtX3VwZGF0ZUF0bGFzZXMuYXBwZW5kKGFkb3B0UHRyKG5ldyBVcGRhdGVBdGxhcyh0aGlzLCBT
Y3JhdGNoQnVmZmVyRGltZW5zaW9uLCBmbGFncykpKTsKKyAgICBzY2hlZHVsZVJlbGVhc2VJbmFj
dGl2ZUF0bGFzZXMoKTsKKyAgICByZXR1cm4gbV91cGRhdGVBdGxhc2VzLmxhc3QoKS0+cGFpbnRP
bkF2YWlsYWJsZUJ1ZmZlcihzaXplLCBhdGxhc0lELCBvZmZzZXQsIGNsaWVudCk7Cit9CisKK2Nv
bnN0IGRvdWJsZSBSZWxlYXNlSW5hY3RpdmVBdGxhc2VzVGltZXJJbnRlcnZhbCA9IDAuNTsKKwor
dm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OnNjaGVkdWxlUmVsZWFzZUluYWN0aXZlQXRs
YXNlcygpCit7CisgICAgaWYgKCFtX3JlbGVhc2VJbmFjdGl2ZUF0bGFzZXNUaW1lci5pc0FjdGl2
ZSgpKQorICAgICAgICBtX3JlbGVhc2VJbmFjdGl2ZUF0bGFzZXNUaW1lci5zdGFydFJlcGVhdGlu
ZyhSZWxlYXNlSW5hY3RpdmVBdGxhc2VzVGltZXJJbnRlcnZhbCk7Cit9CisKK3ZvaWQgQ29vcmRp
bmF0ZWRMYXllclRyZWVIb3N0OjpyZWxlYXNlSW5hY3RpdmVBdGxhc2VzVGltZXJGaXJlZChUaW1l
cjxDb29yZGluYXRlZExheWVyVHJlZUhvc3Q+KikKK3sKKyAgICAvLyBXZSBhbHdheXMgd2FudCB0
byBrZWVwIG9uZSBhdGxhcyBmb3Igbm9uLWNvbXBvc2l0ZWQgY29udGVudC4KKyAgICBPd25QdHI8
VXBkYXRlQXRsYXM+IGF0bGFzVG9LZWVwQW55d2F5OworICAgIGJvb2wgZm91bmRBY3RpdmVBdGxh
c0Zvck5vbkNvbXBvc2l0ZWRDb250ZW50ID0gZmFsc2U7CisgICAgZm9yIChpbnQgaSA9IG1fdXBk
YXRlQXRsYXNlcy5zaXplKCkgLSAxOyAgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgVXBkYXRlQXRs
YXMqIGF0bGFzID0gbV91cGRhdGVBdGxhc2VzW2ldLmdldCgpOworICAgICAgICBpZiAoIWF0bGFz
LT5pc0luVXNlKCkpCisgICAgICAgICAgICBhdGxhcy0+YWRkVGltZUluYWN0aXZlKFJlbGVhc2VJ
bmFjdGl2ZUF0bGFzZXNUaW1lckludGVydmFsKTsKKyAgICAgICAgYm9vbCB1c2FibGVGb3JOb25D
b21wb3NpdGVkQ29udGVudCA9ICFhdGxhcy0+c3VwcG9ydHNBbHBoYSgpOworICAgICAgICBpZiAo
YXRsYXMtPmlzSW5hY3RpdmUoKSkgeworICAgICAgICAgICAgaWYgKCFmb3VuZEFjdGl2ZUF0bGFz
Rm9yTm9uQ29tcG9zaXRlZENvbnRlbnQgJiYgIWF0bGFzVG9LZWVwQW55d2F5ICYmIHVzYWJsZUZv
ck5vbkNvbXBvc2l0ZWRDb250ZW50KQorICAgICAgICAgICAgICAgIGF0bGFzVG9LZWVwQW55d2F5
ID0gbV91cGRhdGVBdGxhc2VzW2ldLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1fdXBkYXRlQXRs
YXNlcy5yZW1vdmUoaSk7CisgICAgICAgIH0gZWxzZSBpZiAodXNhYmxlRm9yTm9uQ29tcG9zaXRl
ZENvbnRlbnQpCisgICAgICAgICAgICBmb3VuZEFjdGl2ZUF0bGFzRm9yTm9uQ29tcG9zaXRlZENv
bnRlbnQgPSB0cnVlOworICAgIH0KKworICAgIGlmICghZm91bmRBY3RpdmVBdGxhc0Zvck5vbkNv
bXBvc2l0ZWRDb250ZW50ICYmIGF0bGFzVG9LZWVwQW55d2F5KQorICAgICAgICBtX3VwZGF0ZUF0
bGFzZXMuYXBwZW5kKGF0bGFzVG9LZWVwQW55d2F5LnJlbGVhc2UoKSk7CisKKyAgICBpZiAobV91
cGRhdGVBdGxhc2VzLnNpemUoKSA8PSAxKQorICAgICAgICBtX3JlbGVhc2VJbmFjdGl2ZUF0bGFz
ZXNUaW1lci5zdG9wKCk7Cit9CisKIHZvaWQgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0OjpzZXRC
YWNrZ3JvdW5kQ29sb3IoY29uc3QgV2ViQ29yZTo6Q29sb3ImIGNvbG9yKQogewogICAgIG1fd2Vi
UGFnZS0+c2VuZChNZXNzYWdlczo6Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0UHJveHk6OlNldEJh
Y2tncm91bmRDb2xvcihjb2xvcikpOwpAQCAtNDA5LDcgKzcyNywxMSBAQCB2b2lkIENvb3JkaW5h
dGVkTGF5ZXJUcmVlSG9zdDo6c2V0QmFja2dyb3VuZENvbG9yKGNvbnN0IFdlYkNvcmU6OkNvbG9y
JiBjb2xvcikKIAogdm9pZCBDb29yZGluYXRlZExheWVyVHJlZUhvc3Q6OmNvbW1pdFNjcm9sbE9m
ZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBvZmZzZXQpCiB7
Ci0gICAgbV9jb29yZGluYXRvci0+Y29tbWl0U2Nyb2xsT2Zmc2V0KGxheWVySUQsIG9mZnNldCk7
CisgICAgTGF5ZXJNYXA6Oml0ZXJhdG9yIGkgPSBtX3JlZ2lzdGVyZWRMYXllcnMuZmluZChsYXll
cklEKTsKKyAgICBpZiAoaSA9PSBtX3JlZ2lzdGVyZWRMYXllcnMuZW5kKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGktPnZhbHVlLT5jb21taXRTY3JvbGxPZmZzZXQob2Zmc2V0KTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZExheWVyVHJlZUhvc3Qu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNz
L0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGU4ZTU2NDhlNjNhMzEzYzYwZmIwNGFj
ZDQ0NjA1ODNlYzk1M2U0M2EuLjE0MTRmNDNlOGZiNjc1MmFhNzllOTBkZDM0MmZmYjEyY2M3ZjNm
ZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkTGF5
ZXJUcmVlSG9zdC5oCkBAIC0yNSw4ICsyNSwxMyBAQAogCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29u
dGV4dC5oIgogI2luY2x1ZGUgIkxheWVyVHJlZUhvc3QuaCIKLSNpbmNsdWRlIDxXZWJDb3JlL0Nv
bXBvc2l0aW5nQ29vcmRpbmF0b3IuaD4KKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUgPFdl
YkNvcmUvQ29vcmRpbmF0ZWRHcmFwaGljc0xheWVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Db29y
ZGluYXRlZEdyYXBoaWNzU3RhdGUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0Nvb3JkaW5hdGVkSW1h
Z2VCYWNraW5nLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyQ2xpZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9HcmFwaGljc0xheWVyRmFjdG9yeS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvVXBkYXRlQXRsYXMuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKICNpZiBFTkFCTEUo
Q1NTX1NIQURFUlMpCkBAIC00MSw3ICs0NiwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgV2ViUGFnZTsKIAotY2xhc3MgQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0IDogcHVibGljIExh
eWVyVHJlZUhvc3QsIHB1YmxpYyBXZWJDb3JlOjpDb21wb3NpdGluZ0Nvb3JkaW5hdG9yOjpDbGll
bnQKK2NsYXNzIENvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdCA6IHB1YmxpYyBMYXllclRyZWVIb3N0
LCBXZWJDb3JlOjpHcmFwaGljc0xheWVyQ2xpZW50CisgICAgLCBwdWJsaWMgV2ViQ29yZTo6Q29v
cmRpbmF0ZWRHcmFwaGljc0xheWVyQ2xpZW50CisgICAgLCBwdWJsaWMgV2ViQ29yZTo6Q29vcmRp
bmF0ZWRJbWFnZUJhY2tpbmc6OkNsaWVudAorICAgICwgcHVibGljIFdlYkNvcmU6OlVwZGF0ZUF0
bGFzOjpDbGllbnQKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpHcmFwaGljc0xheWVyRmFjdG9yeQog
I2lmIEVOQUJMRShDU1NfU0hBREVSUykKICAgICAsIFdlYkN1c3RvbUZpbHRlclByb2dyYW1Qcm94
eUNsaWVudAogI2VuZGlmCkBAIC03NSw2ICs4NCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2VkKCkgT1ZFUlJJREU7CiAgICAgdmlydHVh
bCB2b2lkIHBhZ2VCYWNrZ3JvdW5kVHJhbnNwYXJlbmN5Q2hhbmdlZCgpIE9WRVJSSURFOwogCisg
ICAgdmlydHVhbCB2b2lkIHJlbmRlck5leHRGcmFtZSgpOworICAgIHZpcnR1YWwgdm9pZCBwdXJn
ZUJhY2tpbmdTdG9yZXMoKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmlzaWJsZUNvbnRlbnRzUmVj
dChjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFBvaW50Jik7
CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDb29yZGluYXRlZExheWVyVHJlZUhvc3RNZXNz
YWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlRGVjb2RlciYpOwogICAg
IHZpcnR1YWwgV2ViQ29yZTo6R3JhcGhpY3NMYXllckZhY3RvcnkqIGdyYXBoaWNzTGF5ZXJGYWN0
b3J5KCkgT1ZFUlJJREU7CiAgICAgV2ViQ29yZTo6Q29vcmRpbmF0ZWRHcmFwaGljc0xheWVyKiBt
YWluQ29udGVudHNMYXllcigpOwpAQCAtODYsMzEgKzk4LDYwIEBAIHB1YmxpYzoKIAogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVkU3VyZmFjZT4gY3JlYXRlQ29vcmRp
bmF0ZWRTdXJmYWNlKGNvbnN0IFdlYkNvcmU6OkludFNpemUmLCBXZWJDb3JlOjpDb29yZGluYXRl
ZFN1cmZhY2U6OkZsYWdzKTsKIAorICAgIHZvaWQgY29tbWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90
IGxheWVySUQsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIG9mZnNldCk7CisKIHByb3RlY3RlZDoK
ICAgICBleHBsaWNpdCBDb29yZGluYXRlZExheWVyVHJlZUhvc3QoV2ViUGFnZSopOwogCiBwcml2
YXRlOgorICAgIC8vIEdyYXBoaWNzTGF5ZXJDbGllbnQKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5
QW5pbWF0aW9uU3RhcnRlZChjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgZG91YmxlIHRp
bWUpOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGbHVzaFJlcXVpcmVkKGNvbnN0IFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBX
ZWJDb3JlOjpHcmFwaGljc0xheWVyKiwgV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0JiwgV2ViQ29y
ZTo6R3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNs
aXBSZWN0KTsKKyAgICB2aXJ0dWFsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKCkgY29uc3QgT1ZF
UlJJREU7CisgICAgdmlydHVhbCBmbG9hdCBwYWdlU2NhbGVGYWN0b3IoKSBjb25zdCBPVkVSUklE
RTsKKworICAgIC8vIENvb3JkaW5hdGVkSW1hZ2VCYWNraW5nOjpDbGllbnQKKyAgICB2aXJ0dWFs
IHZvaWQgY3JlYXRlSW1hZ2VCYWNraW5nKFdlYkNvcmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5n
SUQpIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJbWFnZUJhY2tpbmcoV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpDb29yZGlu
YXRlZFN1cmZhY2U+KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgY2xlYXJJbWFnZUJhY2tp
bmdDb250ZW50cyhXZWJDb3JlOjpDb29yZGluYXRlZEltYWdlQmFja2luZ0lEKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlSW1hZ2VCYWNraW5nKFdlYkNvcmU6OkNvb3JkaW5hdGVk
SW1hZ2VCYWNraW5nSUQpIE9WRVJSSURFOworCisgICAgdm9pZCBmbHVzaFBlbmRpbmdJbWFnZUJh
Y2tpbmdDaGFuZ2VzKCk7CisKKyAgICAvLyBDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJDbGllbnQK
KyAgICB2aXJ0dWFsIGJvb2wgaXNGbHVzaGluZ0xheWVyQ2hhbmdlcygpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIG1faXNGbHVzaGluZ0xheWVyQ2hhbmdlczsgfQorICAgIHZpcnR1YWwgV2ViQ29y
ZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50c1JlY3QoKSBjb25zdDsKKyAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8V2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmc+IGNyZWF0ZUltYWdlQmFj
a2luZ0lmTmVlZGVkKFdlYkNvcmU6OkltYWdlKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lk
IGRldGFjaExheWVyKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllciopOworICAgIHZp
cnR1YWwgYm9vbCBwYWludFRvU3VyZmFjZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiwgV2ViQ29y
ZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpGbGFncywgdWludDMyX3QmIC8qIGF0bGFzSUQgKi8sIFdl
YkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6Q29vcmRpbmF0ZWRTdXJmYWNlOjpDbGllbnQqKSBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc3luY0xheWVyU3RhdGUoV2ViQ29yZTo6Q29vcmRp
bmF0ZWRMYXllcklELCBXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYpOwor
CisgICAgLy8gVXBkYXRlQXRsYXM6OkNsaWVudAorICAgIHZpcnR1YWwgdm9pZCBjcmVhdGVVcGRh
dGVBdGxhcyh1aW50MzJfdCBhdGxhc0lELCBQYXNzUmVmUHRyPFdlYkNvcmU6OkNvb3JkaW5hdGVk
U3VyZmFjZT4pIE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCByZW1vdmVVcGRhdGVBdGxhcyh1
aW50MzJfdCBhdGxhc0lEKSBPVkVSUklERTsKKworICAgIC8vIEdyYXBoaWNzTGF5ZXJGYWN0b3J5
CisgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IGNyZWF0ZUdy
YXBoaWNzTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllckNsaWVudCopIE9WRVJSSURFOworCiAg
ICAgLy8gQ29vcmRpbmF0ZWRMYXllclRyZWVIb3N0CisgICAgdm9pZCBpbml0aWFsaXplUm9vdENv
bXBvc2l0aW5nTGF5ZXJJZk5lZWRlZCgpOwogICAgIHZvaWQgY3JlYXRlUGFnZU92ZXJsYXlMYXll
cigpOwogICAgIHZvaWQgZGVzdHJveVBhZ2VPdmVybGF5TGF5ZXIoKTsKKyAgICBib29sIGZsdXNo
UGVuZGluZ0xheWVyQ2hhbmdlcygpOworICAgIHZvaWQgY2xlYXJQZW5kaW5nU3RhdGVDaGFuZ2Vz
KCk7CiAgICAgdm9pZCBjYW5jZWxQZW5kaW5nTGF5ZXJGbHVzaCgpOwogICAgIHZvaWQgcGVyZm9y
bVNjaGVkdWxlZExheWVyRmx1c2goKTsKLSAgICB2b2lkIHNldFZpc2libGVDb250ZW50c1JlY3Qo
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYpOwot
ICAgIHZvaWQgcmVuZGVyTmV4dEZyYW1lKCk7Ci0gICAgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMo
KTsKLSAgICB2b2lkIGNvbW1pdFNjcm9sbE9mZnNldCh1aW50MzJfdCBsYXllcklELCBjb25zdCBX
ZWJDb3JlOjpJbnRTaXplJiBvZmZzZXQpOwotCisgICAgdm9pZCBkaWRQZXJmb3JtU2NoZWR1bGVk
TGF5ZXJGbHVzaCgpOworICAgIHZvaWQgc3luY0Rpc3BsYXlTdGF0ZSgpOwogICAgIHZvaWQgbGF5
ZXJGbHVzaFRpbWVyRmlyZWQoV2ViQ29yZTo6VGltZXI8Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0
PiopOwogCi0gICAgLy8gQ29tcG9zaXRpbmdDb29yZGluYXRvcjo6Q2xpZW50Ci0gICAgdmlydHVh
bCB2b2lkIGRpZEZsdXNoUm9vdExheWVyKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCB2b2lkIHdp
bGxTeW5jTGF5ZXJTdGF0ZShXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzTGF5ZXJTdGF0ZSYp
IE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlGbHVzaFJlcXVpcmVkKCkgT1ZFUlJJ
REUgeyBzY2hlZHVsZUxheWVyRmx1c2goKTsgfTsKLSAgICB2aXJ0dWFsIHZvaWQgY29tbWl0U2Nl
bmVTdGF0ZShXZWJDb3JlOjpDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRMYXllckNvbnRlbnRzKGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXIqLCBXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBjbGlwUmVjdCkgT1ZFUlJJREU7CisgICAgdm9pZCBzY2hlZHVsZVJlbGVhc2VJbmFjdGl2ZUF0
bGFzZXMoKTsKKworICAgIHZvaWQgcmVsZWFzZUluYWN0aXZlQXRsYXNlc1RpbWVyRmlyZWQoV2Vi
Q29yZTo6VGltZXI8Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0PiopOwogCiAjaWYgRU5BQkxFKENT
U19TSEFERVJTKQotICAgIHZvaWQgcHJlcGFyZUN1c3RvbUZpbHRlclByb3hpZXNGb3JBbmltYXRp
b25zKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJBbmltYXRpb25zJik7CisgICAgdm9pZCBwcmVwYXJl
Q3VzdG9tRmlsdGVyUHJveGllc0lmTmVlZGVkKFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NM
YXllclN0YXRlJik7CiAKICAgICAvLyBXZWJDdXN0b21GaWx0ZXJQcm9ncmFtUHJveHlDbGllbnQK
ICAgICB2b2lkIHJlbW92ZUN1c3RvbUZpbHRlclByb2dyYW1Qcm94eShXZWJDdXN0b21GaWx0ZXJQ
cm9ncmFtUHJveHkqKTsKQEAgLTExOSwyNiArMTYwLDQ3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBk
aXNjb25uZWN0Q3VzdG9tRmlsdGVyUHJvZ3JhbXMoKTsKICNlbmRpZgogCi0gICAgT3duUHRyPFdl
YkNvcmU6OkNvbXBvc2l0aW5nQ29vcmRpbmF0b3I+IG1fY29vcmRpbmF0b3I7CisgICAgT3duUHRy
PFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fcm9vdExheWVyOworICAgIFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXIqIG1fcm9vdENvbXBvc2l0aW5nTGF5ZXI7CiAKICAgICAvLyBUaGUgcGFnZSBvdmVy
bGF5IGxheWVyLiBXaWxsIGJlIG51bGwgaWYgdGhlcmUncyBubyBwYWdlIG92ZXJsYXkuCiAgICAg
T3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fcGFnZU92ZXJsYXlMYXllcjsKICAgICBS
ZWZQdHI8UGFnZU92ZXJsYXk+IG1fcGFnZU92ZXJsYXk7CiAKKyAgICBXZWJDb3JlOjpDb29yZGlu
YXRlZEdyYXBoaWNzU3RhdGUgbV9zdGF0ZTsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxXZWJDb3Jl
OjpDb29yZGluYXRlZExheWVySUQsIFdlYkNvcmU6OkNvb3JkaW5hdGVkR3JhcGhpY3NMYXllcio+
IExheWVyTWFwOworICAgIExheWVyTWFwIG1fcmVnaXN0ZXJlZExheWVyczsKKyAgICB0eXBlZGVm
IEhhc2hNYXA8V2ViQ29yZTo6Q29vcmRpbmF0ZWRJbWFnZUJhY2tpbmdJRCwgUmVmUHRyPFdlYkNv
cmU6OkNvb3JkaW5hdGVkSW1hZ2VCYWNraW5nPiA+IEltYWdlQmFja2luZ01hcDsKKyAgICBJbWFn
ZUJhY2tpbmdNYXAgbV9pbWFnZUJhY2tpbmdzOworICAgIFZlY3RvcjxPd25QdHI8V2ViQ29yZTo6
VXBkYXRlQXRsYXM+ID4gbV91cGRhdGVBdGxhc2VzOworCiAjaWYgRU5BQkxFKENTU19TSEFERVJT
KQogICAgIEhhc2hTZXQ8V2ViQ3VzdG9tRmlsdGVyUHJvZ3JhbVByb3h5Kj4gbV9jdXN0b21GaWx0
ZXJQcm9ncmFtczsKICNlbmRpZgogCiAgICAgYm9vbCBtX25vdGlmeUFmdGVyU2NoZWR1bGVkTGF5
ZXJGbHVzaDsKICAgICBib29sIG1faXNWYWxpZDsKKyAgICAvLyBXZSBkb24ndCBzZW5kIHRoZSBt
ZXNzYWdlcyByZWxhdGVkIHRvIHJlbGVhc2luZyByZXNvdXJjZXMgdG8gVUkgUHJvY2VzcyBkdXJp
bmcgcHVyZ2luZywgYmVjYXVzZSBVSSBQcm9jZXNzIGFscmVhZHkgaGFkIHJlbW92ZWQgYWxsIHJl
c291cmNlcy4KKyAgICBib29sIG1faXNQdXJnaW5nOworICAgIGJvb2wgbV9pc0ZsdXNoaW5nTGF5
ZXJDaGFuZ2VzOworCisgICAgYm9vbCBtX3dhaXRpbmdGb3JVSVByb2Nlc3M7CiAgICAgYm9vbCBt
X2lzU3VzcGVuZGVkOwotICAgIGJvb2wgbV9pc1dhaXRpbmdGb3JSZW5kZXJlcjsKKyAgICBXZWJD
b3JlOjpGbG9hdFJlY3QgbV92aXNpYmxlQ29udGVudHNSZWN0OwogCiAgICAgTGF5ZXJUcmVlQ29u
dGV4dCBtX2xheWVyVHJlZUNvbnRleHQ7Ci0KKyAgICBib29sIG1fc2hvdWxkU3luY0ZyYW1lOwor
ICAgIGJvb2wgbV9kaWRJbml0aWFsaXplUm9vdENvbXBvc2l0aW5nTGF5ZXI7CiAgICAgV2ViQ29y
ZTo6VGltZXI8Q29vcmRpbmF0ZWRMYXllclRyZWVIb3N0PiBtX2xheWVyRmx1c2hUaW1lcjsKKyAg
ICBXZWJDb3JlOjpUaW1lcjxDb29yZGluYXRlZExheWVyVHJlZUhvc3Q+IG1fcmVsZWFzZUluYWN0
aXZlQXRsYXNlc1RpbWVyOwogICAgIGJvb2wgbV9sYXllckZsdXNoU2NoZWR1bGluZ0VuYWJsZWQ7
CiAgICAgdWludDY0X3QgbV9mb3JjZVJlcGFpbnRBc3luY0NhbGxiYWNrSUQ7CisgICAgYm9vbCBt
X2FuaW1hdGlvbnNMb2NrZWQ7CisKKyNpZiBFTkFCTEUoUkVRVUVTVF9BTklNQVRJT05fRlJBTUUp
CisgICAgZG91YmxlIG1fbGFzdEFuaW1hdGlvblNlcnZpY2VUaW1lOworI2VuZGlmCiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9MYXllclRyZWVIb3N0LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YlBhZ2UvTGF5ZXJUcmVlSG9zdC5oCmluZGV4IDJmYWQyZDEzY2YyNWQ4MzZlY2ZhYmEzYWJmZTZh
Zjg5ODAyNDBhMjYuLjkwYmJiOTQxZDFhYjA1NjgxZjk2YTIxNDAyY2Y5MzQ4MWIzMjc3N2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9MYXllclRyZWVIb3N0
LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0xheWVyVHJlZUhvc3Qu
aApAQCAtODcsNiArODcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEJhY2tncm91
bmRDb2xvcihjb25zdCBXZWJDb3JlOjpDb2xvciYpIHsgfQogCiAjaWYgVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQorICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGZsb2F0IC8qIHNjYWxlICovLCBjb25zdCBXZWJDb3JlOjpG
bG9hdFBvaW50JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHJlbmRlck5leHRGcmFtZSgpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBwdXJnZUJhY2tpbmdTdG9yZXMoKSB7IH0KICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZUNvb3JkaW5hdGVkTGF5ZXJUcmVlSG9zdE1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VEZWNvZGVyJikgPSAwOwogI2VuZGlmCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>