<?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>102619</bug_id>
          
          <creation_ts>2012-11-18 14:59:20 -0800</creation_ts>
          <short_desc>REGRESSION(r135074): Made most layout tests crash. (Requested by rakuco on #webkit).</short_desc>
          <delta_ts>2012-11-18 15:08:17 -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>101291</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>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>770189</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-18 14:59:20 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/135074 broke the build:
Made most layout tests crash. (Requested by rakuco 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>770192</commentid>
    <comment_count>1</comment_count>
      <attachid>174857</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-18 15:00:08 -0800</bug_when>
    <thetext>Created attachment 174857
ROLLOUT of r135074

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>770194</commentid>
    <comment_count>2</comment_count>
      <attachid>174857</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-11-18 15:08:06 -0800</bug_when>
    <thetext>Comment on attachment 174857
ROLLOUT of r135074

Clearing flags on attachment: 174857

Committed r135083: &lt;http://trac.webkit.org/changeset/135083&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770195</commentid>
    <comment_count>3</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-11-18 15:08:17 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174857</attachid>
            <date>2012-11-18 15:00:08 -0800</date>
            <delta_ts>2012-11-18 15:08:05 -0800</delta_ts>
            <desc>ROLLOUT of r135074</desc>
            <filename>bug-102619-20121118230626.patch</filename>
            <type>text/plain</type>
            <size>62256</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MDgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWY1YzQ4ODAwNTI4MGVi
ZDk4Y2Y0NGZmMmU1NGFlOTVlNjZkMjYwNi4uNTkzYWQ3YmFkOWZiOWEwNTg1ZmUyMjllNzdjMmZj
Yjc2OGE0NDEwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTExLTE4ICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTM1MDc0LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xMzUwNzQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMjYxOQorCisgICAgICAgIE1hZGUgbW9zdCBsYXlvdXQgdGVzdHMgY3Jhc2gu
IChSZXF1ZXN0ZWQgYnkgcmFrdWNvIG9uCisgICAgICAgICN3ZWJraXQpLgorCisgICAgICAgICog
UGxhdGZvcm1FZmwuY21ha2U6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBo
aWNzQ29udGV4dDNERWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6OkdyYXBoaWNz
Q29udGV4dDNEKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjp+R3JhcGhp
Y3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0Q6Om1ha2VD
b250ZXh0Q3VycmVudCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2V0
Q29udGV4dExvc3RDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0Nv
bnRleHQzRFByaXZhdGU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6On5HcmFwaGljc0NvbnRleHQzRFByaXZhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVTdXJm
YWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6c2V0Q3Vy
cmVudEdMQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OnBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlOjptYWtlQ29udGV4dEN1cnJlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc1N1cmZhY2VzKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y29weVRvR3JhcGhpY3NT
dXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Z3Jh
cGhpY3NTdXJmYWNlVG9rZW4pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFw
aGljc0NvbnRleHQzRFByaXZhdGUuaDoKKyAgICAgICAgKEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dMRGVmcy5oOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HTFBsYXRmb3JtQ29udGV4dC5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dMUGxhdGZv
cm1Db250ZXh0Lmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dMUGxhdGZvcm1TdXJmYWNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR0xQbGF0Zm9ybVN1cmZhY2UuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29udGV4dC5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbnRleHQuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYU3VyZmFjZS5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dM
WFN1cmZhY2UuaDogUmVtb3ZlZC4KKwogMjAxMi0xMS0xOCAgQW50dGkgS29pdmlzdG8gIDxhbnR0
aUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTI5NjQ0KTogVXNlciBTdHlsZVNo
ZWV0IG5vdCBhcHBseWluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwu
Y21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCAyY2Q2Njk5N2Fm
NDM5MTgxMTcxMzRlMjMxNDlkYmZhODNkOTM5MDU1Li41ODJhZjA1N2JmYzY3ZDMxNDhhMzhiOGZj
MGQzOTYyNmQyYzdiMjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5j
bWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZQpAQCAtMjc3LDcgKzI3
Nyw2IEBAIElGIChXVEZfVVNFXzNEX0dSQVBISUNTKQogICBMSVNUKEFQUEVORCBXZWJDb3JlX0lO
Q0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mv
b3BlbmdsIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcyIK
LSAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4IgogICAg
ICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAiCiAgICkKICAgTElTVChB
UFBFTkQgV2ViQ29yZV9TT1VSQ0VTCkBAIC0yODcsMTMgKzI4Niw5IEBAIElGIChXVEZfVVNFXzNE
X0dSQVBISUNTKQogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFBy
aXZhdGUuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5H
TC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29t
bW9uLmNwcAotICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HTFBsYXRmb3JtQ29udGV4dC5j
cHAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR0xQbGF0Zm9ybVN1cmZhY2UuY3BwCiAg
ICAgcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1v
bi5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuY3Bw
Ci0gICAgcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWFN1cmZhY2UuY3BwCi0gICAg
cGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbnRleHQuY3BwCiAgICAgcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvcXQvR3JhcGhpY3NTdXJmYWNlR0xYLmNwcAogICAgIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0wuY3BwCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTaGFkZXJNYW5hZ2VyLmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRl
eHQzREVmbC5jcHAKaW5kZXggMmUyYTQ5MzEzODkwMzJjMzA2ZDM2Y2ZhZTFiZDkwZDY0YjE5ODUw
My4uZDEzOTEzMDdjZDNiYzkyNjJkNDY5ODE0NzMzNDliOTAwZGQ0ZTkyMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNERWZs
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3ND
b250ZXh0M0RFZmwuY3BwCkBAIC0xLDYgKzEsNSBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIw
MTIgU2Ftc3VuZyBFbGVjdHJvbmljcwotICAgIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jw
b3JhdGlvbi4KIAogICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjgsNiArMjcsNyBAQAogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCiAjaW5jbHVkZSAiT3BlbkdMU2hpbXMuaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybUNvbnRleHRDYWlyby5oIgorI2luY2x1ZGUgPEdML2dseC5oPgogCiAjaWYgVVNFKE9Q
RU5HTF9FU18yKQogI2luY2x1ZGUgIkV4dGVuc2lvbnMzRE9wZW5HTEVTLmgiCkBAIC0zOSw5ICsz
OSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxHcmFwaGljc0NvbnRleHQz
RD4gR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRl
cyBhdHRycywgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgUmVuZGVyU3R5bGUgcmVuZGVyU3R5bGUp
CiB7Ci0gICAgaWYgKHJlbmRlclN0eWxlID09IFJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93KQot
ICAgICAgICByZXR1cm4gMDsKLQogICAgIFJlZlB0cjxHcmFwaGljc0NvbnRleHQzRD4gY29udGV4
dCA9IGFkb3B0UmVmKG5ldyBHcmFwaGljc0NvbnRleHQzRChhdHRycywgaG9zdFdpbmRvdywgcmVu
ZGVyU3R5bGUpKTsKICAgICByZXR1cm4gY29udGV4dC0+bV9wcml2YXRlID8gY29udGV4dC5yZWxl
YXNlKCkgOiAwOwogfQpAQCAtNzAsMTIgKzY3LDI5IEBAIEdyYXBoaWNzQ29udGV4dDNEOjpHcmFw
aGljc0NvbnRleHQzRChHcmFwaGljc0NvbnRleHQzRDo6QXR0cmlidXRlcyBhdHRycywgSG9zdFdp
CiAgICAgLCBtX211bHRpc2FtcGxlQ29sb3JCdWZmZXIoMCkKICAgICAsIG1fcHJpdmF0ZShhZG9w
dFB0cihuZXcgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlKHRoaXMsIGhvc3RXaW5kb3csIHJlbmRl
clN0eWxlKSkpCiB7Ci0gICAgaWYgKCFtX3ByaXZhdGUgfHwgIW1fcHJpdmF0ZS0+bV9wbGF0Zm9y
bUNvbnRleHQpIHsKKyAgICB2YWxpZGF0ZUF0dHJpYnV0ZXMoKTsKKworICAgIGlmICghbV9wcml2
YXRlKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZFNoaW1z
ID0gZmFsc2U7CisgICAgc3RhdGljIGJvb2wgc3VjY2VzcyA9IHRydWU7CisgICAgaWYgKCFpbml0
aWFsaXplZFNoaW1zKSB7CisgICAgICAgIHN1Y2Nlc3MgPSBpbml0aWFsaXplT3BlbkdMU2hpbXMo
KTsKKyAgICAgICAgaW5pdGlhbGl6ZWRTaGltcyA9IHRydWU7CisgICAgfQorICAgIGlmICghc3Vj
Y2VzcykgewogICAgICAgICBtX3ByaXZhdGUgPSBudWxscHRyOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgdmFsaWRhdGVBdHRyaWJ1dGVzKCk7CisgICAgaWYgKHJlbmRlclN0eWxlID09
IFJlbmRlclRvQ3VycmVudEdMQ29udGV4dCkgeworICAgICAgICAvLyBFdmFzIGRvZXNuJ3QgYWxs
b3cgaW5jbHVkaW5nIGdsIGhlYWRlcnMgYW5kIEV2YXNfR0wgaGVhZGVycyBhdCB0aGUgc2FtZSB0
aW1lLAorICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIHF1ZXJ5IHRoZSBjdXJyZW50IGdsIGNvbnRl
eHQvc3VyZmFjZSBoZXJlIGluc3RlYWQgb2YgaW4gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLgor
ICAgICAgICB2b2lkKiBjdXJyZW50Q29udGV4dCA9ICh2b2lkKilnbFhHZXRDdXJyZW50Q29udGV4
dCgpOworICAgICAgICB2b2lkKiBjdXJyZW50U3VyZmFjZSA9ICh2b2lkKilnbFhHZXRDdXJyZW50
RHJhd2FibGUoKTsKKyAgICAgICAgbV9wcml2YXRlLT5zZXRDdXJyZW50R0xDb250ZXh0KGN1cnJl
bnRDb250ZXh0LCBjdXJyZW50U3VyZmFjZSk7CisgICAgfQogCiAgICAgaWYgKHJlbmRlclN0eWxl
ID09IFJlbmRlck9mZnNjcmVlbikgewogICAgICAgICAvLyBDcmVhdGUgYnVmZmVycyBmb3IgdGhl
IGNhbnZhcyBGQk8uCkBAIC0xMzMsMTkgKzE0NywxNCBAQCBHcmFwaGljc0NvbnRleHQzRDo6R3Jh
cGhpY3NDb250ZXh0M0QoR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnMsIEhvc3RX
aQogICAgIGdsRW5hYmxlKEdMX1BPSU5UX1NQUklURSk7CiAgICAgZ2xFbmFibGUoR0xfVkVSVEVY
X1BST0dSQU1fUE9JTlRfU0laRSk7CiAjZW5kaWYKLSAgICBnbENsZWFyQ29sb3IoMC4wLCAwLjAs
IDAuMCwgMC4wKTsKIH0KIAogR3JhcGhpY3NDb250ZXh0M0Q6On5HcmFwaGljc0NvbnRleHQzRCgp
CiB7Ci0gICAgaWYgKCFtX3ByaXZhdGUgfHwgIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAgIGlm
IChtX3JlbmRlclN0eWxlID09IFJlbmRlclRvQ3VycmVudEdMQ29udGV4dCB8fCAhbV9wcml2YXRl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fZmJvKSB7Ci0gICAgICAgIG1fcHJpdmF0
ZS0+cmVsZWFzZVJlc291cmNlcygpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCisgICAgbWFr
ZUNvbnRleHRDdXJyZW50KCk7CiAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbV90ZXh0dXJlKTsK
IAogICAgIGlmIChtX2F0dHJzLmFudGlhbGlhcykgewpAQCAtMTU2LDYgKzE2NSw3IEBAIEdyYXBo
aWNzQ29udGV4dDNEOjp+R3JhcGhpY3NDb250ZXh0M0QoKQogCiAgICAgICAgIGdsRGVsZXRlRnJh
bWVidWZmZXJzKDEsICZtX211bHRpc2FtcGxlRkJPKTsKICAgICB9IGVsc2UgaWYgKG1fYXR0cnMu
c3RlbmNpbCB8fCBtX2F0dHJzLmRlcHRoKSB7CisKICNpZiBVU0UoT1BFTkdMX0VTXzIpCiAgICAg
ICAgIGlmIChtX2F0dHJzLmRlcHRoKQogICAgICAgICAgICAgZ2xEZWxldGVSZW5kZXJidWZmZXJz
KDEsICZtX2RlcHRoQnVmZmVyKTsKQEAgLTE2NSw5ICsxNzUsNyBAQCBHcmFwaGljc0NvbnRleHQz
RDo6fkdyYXBoaWNzQ29udGV4dDNEKCkKICNlbmRpZgogICAgICAgICBnbERlbGV0ZVJlbmRlcmJ1
ZmZlcnMoMSwgJm1fZGVwdGhTdGVuY2lsQnVmZmVyKTsKICAgICB9Ci0KICAgICBnbERlbGV0ZUZy
YW1lYnVmZmVycygxLCAmbV9mYm8pOwotICAgIG1fcHJpdmF0ZS0+cmVsZWFzZVJlc291cmNlcygp
OwogfQogCiBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEIEdyYXBoaWNzQ29udGV4dDNEOjpwbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCkKQEAgLTE4OSw2ICsxOTcsMTIgQEAgUGxhdGZvcm1MYXll
ciogR3JhcGhpY3NDb250ZXh0M0Q6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogCiBib29sIEdyYXBo
aWNzQ29udGV4dDNEOjptYWtlQ29udGV4dEN1cnJlbnQoKQogeworICAgIGlmICghbV9wcml2YXRl
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAobV9yZW5kZXJTdHlsZSA9PSBSZW5k
ZXJUb0N1cnJlbnRHTENvbnRleHQpCisgICAgICAgIHJldHVybiB0cnVlOworCiAgICAgcmV0dXJu
IG1fcHJpdmF0ZS0+bWFrZUNvbnRleHRDdXJyZW50KCk7CiB9CiAKQEAgLTIwMSw5ICsyMTUsOSBA
QCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjppc0dMRVMyQ29tcGxpYW50KCkgY29uc3QKICNlbmRp
ZgogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzZXRDb250ZXh0TG9zdENhbGxiYWNrKFBh
c3NPd25QdHI8Q29udGV4dExvc3RDYWxsYmFjaz4gY2FsbEJhY2spCit2b2lkIEdyYXBoaWNzQ29u
dGV4dDNEOjpzZXRDb250ZXh0TG9zdENhbGxiYWNrKFBhc3NPd25QdHI8Q29udGV4dExvc3RDYWxs
YmFjaz4pIAogewotICAgIG1fcHJpdmF0ZS0+c2V0Q29udGV4dExvc3RDYWxsYmFjayhjYWxsQmFj
ayk7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
c2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2soUGFzc093blB0cjxFcnJvck1lc3NhZ2VDYWxsYmFjaz4p
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAppbmRleCAxMjhkY2JiNDg2OWYyNjFh
MmM2MjUyYjc5ZjU4YTQ1ZDBmZDg4ZWU3Li42MmQwYTZlM2E1MmUxZWY0MTlkNWRiNzdiMjIzZWM4
M2U1NDFhOTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9l
ZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcApAQCAtMSw2ICsx
LDUgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAg
ICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uCiAKICAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTE5LDEwNiArMTgsMTYwIEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAKICNpZiBVU0UoM0RfR1JBUEhJQ1Mp
IHx8IFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNpbmNsdWRlICJHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGUuaCIKIAorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
Ikhvc3RXaW5kb3cuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtQ29udGV4dENhaXJvLmgiCi0KLSNpZiBVU0UoT1BFTkdMX0VTXzIpCi0jaW5jbHVkZSA8
R0xFUzIvZ2wyLmg+Ci0jaW5jbHVkZSA8R0xFUzIvZ2wyZXh0Lmg+Ci0jZWxzZQotI2luY2x1ZGUg
Ik9wZW5HTFNoaW1zLmgiCi0jZW5kaWYKKyNpbmNsdWRlIDxFY29yZV9FdmFzLmg+CisjaW5jbHVk
ZSA8RXZhc19HTC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBHcmFwaGljc0NvbnRl
eHQzRFByaXZhdGU6OkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZShHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCwgSG9zdFdpbmRvdyogaG9zdFdpbmRvdywgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRl
clN0eWxlIHJlbmRlclN0eWxlKQogICAgIDogbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX2hv
c3RXaW5kb3coaG9zdFdpbmRvdykKLSAgICAsIG1fcGVuZGluZ1N1cmZhY2VSZXNpemUoZmFsc2Up
CisgICAgLCBtX2V2YXNHTCgwKQorICAgICwgbV9ldmFzR0xDb250ZXh0KDApCisgICAgLCBtX2V2
YXNHTFN1cmZhY2UoMCkKKyAgICAsIG1fZ2xDb250ZXh0KDApCisgICAgLCBtX2dsU3VyZmFjZSgw
KQorICAgICwgbV9hcGkoMCkKKyAgICAsIG1fcmVuZGVyU3R5bGUocmVuZGVyU3R5bGUpCiB7Cisg
ICAgaWYgKHJlbmRlclN0eWxlID09IEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJUb0N1cnJlbnRH
TENvbnRleHQpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChtX2hvc3RXaW5kb3cgJiYgbV9o
b3N0V2luZG93LT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkgewogICAgICAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoaXMgY29kZSBwYXRoIGZvciBXZWJLaXQxLgogICAgICAgICAvLyBHZXQgRXZhcyBv
YmplY3QgZnJvbSBwbGF0Zm9ybVBhZ2VDbGllbnQgYW5kIHNldCBFdmFzR0wgcmVsYXRlZCBtZW1i
ZXJzLgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wbGF0Zm9ybUNvbnRleHQgPSBH
TFBsYXRmb3JtQ29udGV4dDo6Y3JlYXRlQ29udGV4dChyZW5kZXJTdHlsZSk7Ci0gICAgaWYgICgh
bV9wbGF0Zm9ybUNvbnRleHQpCisgICAgLy8gRm9yIFdlYktpdDIsIHdlIG5lZWQgdG8gY3JlYXRl
IGEgZHVtbXkgZWNvcmVFdmFzIG9iamVjdCBmb3IgdGhlIFdlYlByb2Nlc3MgaW4gb3JkZXIgdG8g
dXNlIEV2YXNHTCBBUElzLgorI2lmZGVmIEhBVkVfRUNPUkVfWAorICAgIGVjb3JlX2V2YXNfaW5p
dCgpOworICAgIG1fZWNvcmVFdmFzID0gYWRvcHRQdHIoZWNvcmVfZXZhc19nbF94MTFfbmV3KDAs
IDAsIDAsIDAsIDEsIDEpKTsKKyAgICBpZiAoIW1fZWNvcmVFdmFzKQogICAgICAgICByZXR1cm47
Ci0KLSAgICBpZiAocmVuZGVyU3R5bGUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlck9mZnNj
cmVlbikgewotI2lmIFVTRShHUkFQSElDU19TVVJGQUNFKQotICAgICAgICBtX3BsYXRmb3JtU3Vy
ZmFjZSA9IEdMUGxhdGZvcm1TdXJmYWNlOjpjcmVhdGVUcmFuc3BvcnRTdXJmYWNlKCk7CiAjZWxz
ZQotICAgICAgICBtX3BsYXRmb3JtU3VyZmFjZSA9IEdMUGxhdGZvcm1TdXJmYWNlOjpjcmVhdGVP
ZmZzY3JlZW5TdXJmYWNlKCk7CisgICAgcmV0dXJuOwogI2VuZGlmCi0gICAgICAgIGlmICghbV9w
bGF0Zm9ybVN1cmZhY2UpIHsKLSAgICAgICAgICAgIG1fcGxhdGZvcm1Db250ZXh0ID0gbnVsbHB0
cjsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghbV9wbGF0
Zm9ybUNvbnRleHQtPmluaXRpYWxpemUobV9wbGF0Zm9ybVN1cmZhY2UuZ2V0KCkpIHx8ICFtX3Bs
YXRmb3JtQ29udGV4dC0+bWFrZUN1cnJlbnQobV9wbGF0Zm9ybVN1cmZhY2UuZ2V0KCkpKSB7Ci0g
ICAgICAgICAgICByZWxlYXNlUmVzb3VyY2VzKCk7Ci0gICAgICAgICAgICBtX3BsYXRmb3JtQ29u
dGV4dCA9IG51bGxwdHI7Ci0gICAgICAgICAgICBtX3BsYXRmb3JtU3VyZmFjZSA9IG51bGxwdHI7
CisKKyAgICBFdmFzKiBldmFzID0gZWNvcmVfZXZhc19nZXQobV9lY29yZUV2YXMuZ2V0KCkpOwor
ICAgIGlmICghZXZhcykKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQ3JlYXRlIGEgbmV3IEV2
YXNfR0wgb2JqZWN0IGZvciBnbCByZW5kZXJpbmcgb24gZWZsLgorICAgIG1fZXZhc0dMID0gZXZh
c19nbF9uZXcoZXZhcyk7CisgICAgaWYgKCFtX2V2YXNHTCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gR2V0IHRoZSBBUEkgZm9yIHJlbmRlcmluZyB1c2luZyBPcGVuR0wuCisgICAgLy8gVGhp
cyByZXR1cm5zIGEgc3RydWN0dXJlIHRoYXQgY29udGFpbnMgYWxsIHRoZSBPcGVuR0wgZnVuY3Rp
b25zIHdlIGNhbiB1c2UgdG8gcmVuZGVyIGluIEV2YXMKKyAgICBtX2FwaSA9IGV2YXNfZ2xfYXBp
X2dldChtX2V2YXNHTCk7CisgICAgaWYgKCFtX2FwaSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gQ3JlYXRlIGEgY29udGV4dAorICAgIG1fZXZhc0dMQ29udGV4dCA9IGV2YXNfZ2xfY29udGV4
dF9jcmVhdGUobV9ldmFzR0wsIDApOworICAgIGlmICghbV9ldmFzR0xDb250ZXh0KQorICAgICAg
ICByZXR1cm47CisKKyAgICAvLyBDcmVhdGUgYSBzdXJmYWNlCisgICAgaWYgKCFjcmVhdGVTdXJm
YWNlKDAsIHJlbmRlclN0eWxlID09IEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJEaXJlY3RseVRv
SG9zdFdpbmRvdykpCisgICAgICAgIHJldHVybjsKKworICAgIG1ha2VDb250ZXh0Q3VycmVudCgp
OworCiAjaWYgVVNFKEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgbV9zdXJmYWNlSGFuZGxlID0gR3JhcGhpY3NTdXJmYWNlVG9rZW4obV9wbGF0Zm9ybVN1cmZh
Y2UtPmhhbmRsZSgpKTsKLSNlbHNlCi0gICAgICAgIH0KKyAgICBJbnRTaXplIHN1cmZhY2VTaXpl
KG1fY29udGV4dC0+bV9jdXJyZW50V2lkdGgsIG1fY29udGV4dC0+bV9jdXJyZW50SGVpZ2h0KTsK
KyAgICBtX3N1cmZhY2VGbGFncyA9IEdyYXBoaWNzU3VyZmFjZTo6U3VwcG9ydHNUZXh0dXJlVGFy
Z2V0IHwgR3JhcGhpY3NTdXJmYWNlOjpTdXBwb3J0c1NoYXJpbmc7CisgICAgaWYgKCFzdXJmYWNl
U2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlID0gR3JhcGhpY3NTdXJm
YWNlOjpjcmVhdGUoc3VyZmFjZVNpemUsIG1fc3VyZmFjZUZsYWdzKTsKICNlbmRpZgotICAgIH0K
IH0KIAogR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjp+R3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
KCkKIHsKLX0KKyAgICBpZiAoIW1fZXZhc0dMKQorICAgICAgICByZXR1cm47CiAKLXZvaWQgR3Jh
cGhpY3NDb250ZXh0M0RQcml2YXRlOjpyZWxlYXNlUmVzb3VyY2VzKCkKLXsKLSAgICAvLyBSZWxl
YXNlIHRoZSBjdXJyZW50IGNvbnRleHQgYW5kIGRyYXdhYmxlIG9ubHkgYWZ0ZXIgZGVzdHJveWlu
ZyBhbnkgYXNzb2NpYXRlZCBnbCByZXNvdXJjZXMuCi0gICAgaWYgKG1fcGxhdGZvcm1Db250ZXh0
KQotICAgICAgICBtX3BsYXRmb3JtQ29udGV4dC0+ZGVzdHJveSgpOworICAgIGlmIChtX2V2YXNH
TFN1cmZhY2UpCisgICAgICAgIGV2YXNfZ2xfc3VyZmFjZV9kZXN0cm95KG1fZXZhc0dMLCBtX2V2
YXNHTFN1cmZhY2UpOworCisgICAgaWYgKG1fZXZhc0dMQ29udGV4dCkKKyAgICAgICAgZXZhc19n
bF9jb250ZXh0X2Rlc3Ryb3kobV9ldmFzR0wsIG1fZXZhc0dMQ29udGV4dCk7CiAKLSAgICBpZiAo
bV9wbGF0Zm9ybVN1cmZhY2UpCi0gICAgICAgIG1fcGxhdGZvcm1TdXJmYWNlLT5kZXN0cm95KCk7
CisgICAgZXZhc19nbF9mcmVlKG1fZXZhc0dMKTsKIAotICAgIGlmIChtX3BsYXRmb3JtQ29udGV4
dCkKLSAgICAgICAgbV9wbGF0Zm9ybUNvbnRleHQtPnJlbGVhc2VDdXJyZW50KCk7CisjaWYgVVNF
KEdSQVBISUNTX1NVUkZBQ0UpCisgICAgbV9ncmFwaGljc1N1cmZhY2UuY2xlYXIoKTsKKyNlbmRp
ZgogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Y3JlYXRlU3VyZmFjZShQYWdl
Q2xpZW50RWZsKiwgYm9vbCkKK2Jvb2wgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVT
dXJmYWNlKFBhZ2VDbGllbnRFZmwqIHBhZ2VDbGllbnQsIGJvb2wgcmVuZGVyRGlyZWN0bHlUb0hv
c3RXaW5kb3cpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgLy8gSWYgUmVuZGVyU3R5bGUgaXMgUmVuZGVyT2Zmc2NyZWVuLCB3ZSB3aWxsIGJlIHJlbmRl
cmluZyB0byBhIEZCTywKKyAgICAvLyBzbyBFdmFzX0dMX1N1cmZhY2UgaGFzIGEgMXgxIGR1bW15
IHN1cmZhY2UuCisgICAgaW50IHdpZHRoID0gMTsKKyAgICBpbnQgaGVpZ2h0ID0gMTsKKworICAg
IC8vIEJ1dCwgaW4gY2FzZSBvZiBSZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdywgd2UgaGF2ZSB0
byByZW5kZXIgdG8gYSByZW5kZXIgdGFyZ2V0IHN1cmZhY2Ugd2l0aCB0aGUgc2FtZSBzaXplIGFz
IG91ciB3ZWJWaWV3LgorICAgIGlmIChyZW5kZXJEaXJlY3RseVRvSG9zdFdpbmRvdykgeworICAg
ICAgICBpZiAoIXBhZ2VDbGllbnQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IC8vIEZJWE1FOiBHZXQgZ2VvbWV0cnkgb2Ygd2ViVmlldyBhbmQgc2V0IHNpemUgb2YgdGFyZ2V0
IHN1cmZhY2UuCisgICAgfQorCisgICAgRXZhc19HTF9Db25maWcgY29uZmlnID0geworICAgICAg
ICBFVkFTX0dMX1JHQkFfODg4OCwKKyAgICAgICAgRVZBU19HTF9ERVBUSF9CSVRfOCwKKyAgICAg
ICAgRVZBU19HTF9TVEVOQ0lMX05PTkUsIC8vIEZJWE1FOiBzZXQgRVZBU19HTF9TVEVOQ0lMX0JJ
VF84IGFmdGVyIGZpeGluZyBFdmFzX0dMIGJ1Zy4KKyAgICAgICAgRVZBU19HTF9PUFRJT05TX05P
TkUsCisgICAgICAgIEVWQVNfR0xfTVVMVElTQU1QTEVfTk9ORQorICAgIH07CisKKyAgICAvLyBD
cmVhdGUgYSBuZXcgRXZhc19HTF9TdXJmYWNlIG9iamVjdAorICAgIG1fZXZhc0dMU3VyZmFjZSA9
IGV2YXNfZ2xfc3VyZmFjZV9jcmVhdGUobV9ldmFzR0wsICZjb25maWcsIHdpZHRoLCBoZWlnaHQp
OworICAgIGlmICghbV9ldmFzR0xTdXJmYWNlKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyNp
ZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgaWYgKHJlbmRlckRpcmVjdGx5VG9I
b3N0V2luZG93KSB7CisgICAgICAgIEV2YXNfTmF0aXZlX1N1cmZhY2UgbmF0aXZlU3VyZmFjZTsK
KyAgICAgICAgLy8gRmlsbCBpbiB0aGUgTmF0aXZlIFN1cmZhY2UgaW5mb3JtYXRpb24gZnJvbSB0
aGUgZ2l2ZW4gRXZhcyBHTCBzdXJmYWNlLgorICAgICAgICBldmFzX2dsX25hdGl2ZV9zdXJmYWNl
X2dldChtX2V2YXNHTCwgbV9ldmFzR0xTdXJmYWNlLCAmbmF0aXZlU3VyZmFjZSk7CisKKyAgICAg
ICAgLy8gRklYTUU6IENyZWF0ZSBhbmQgc3BlY2lhbGx5IHNldCB1cCBhIGV2YXNfb2JqZWN0IHdo
aWNoIGFjdCBhcyB0aGUgcmVuZGVyIHRhcmdlciBzdXJmYWNlLgorICAgIH0KKyNlbmRpZgorCisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpzZXRD
b250ZXh0TG9zdENhbGxiYWNrKFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q6OkNvbnRleHRM
b3N0Q2FsbGJhY2s+IGNhbGxCYWNrKQordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnNl
dEN1cnJlbnRHTENvbnRleHQodm9pZCogY29udGV4dCwgdm9pZCogc3VyZmFjZSkKIHsKLSAgICBt
X2NvbnRleHRMb3N0Q2FsbGJhY2sgPSBjYWxsQmFjazsKKyAgICBtX2dsQ29udGV4dCA9IGNvbnRl
eHQ7CisgICAgbV9nbFN1cmZhY2UgPSBzdXJmYWNlOwogfQogCiBQbGF0Zm9ybUdyYXBoaWNzQ29u
dGV4dDNEIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGxhdGZvcm1HcmFwaGljc0NvbnRleHQz
RCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGxhdGZvcm1Db250ZXh0LT5oYW5kbGUoKTsKKyAg
ICBpZiAobV9yZW5kZXJTdHlsZSA9PSBHcmFwaGljc0NvbnRleHQzRDo6UmVuZGVyVG9DdXJyZW50
R0xDb250ZXh0KQorICAgICAgICByZXR1cm4gbV9nbENvbnRleHQ7CisKKyAgICByZXR1cm4gbV9l
dmFzR0xDb250ZXh0OwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6bWFrZUNv
bnRleHRDdXJyZW50KCkKIHsKLSAgICBib29sIHJldHVyblZhbHVlID0gbV9wbGF0Zm9ybUNvbnRl
eHQtPm1ha2VDdXJyZW50KG1fcGxhdGZvcm1TdXJmYWNlLmdldCgpKTsKLQotICAgIGlmIChtX2Nv
bnRleHRMb3N0Q2FsbGJhY2sgJiYgIW1fcGxhdGZvcm1Db250ZXh0LT5pc1ZhbGlkKCkpIHsKLSAg
ICAgICAgcmV0dXJuVmFsdWUgPSBmYWxzZTsKLSAgICAgICAgbV9jb250ZXh0TG9zdENhbGxiYWNr
LT5vbkNvbnRleHRMb3N0KCk7Ci0gICAgICAgIC8vIEZJWE1FOiBSZXN0b3JlIGNvbnRleHQKLSAg
ICB9Ci0KLSAgICByZXR1cm4gcmV0dXJuVmFsdWU7CisgICAgcmV0dXJuIGV2YXNfZ2xfbWFrZV9j
dXJyZW50KG1fZXZhc0dMLCBtX2V2YXNHTFN1cmZhY2UsIG1fZXZhc0dMQ29udGV4dCk7CiB9CiAK
ICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCkBAIC0xMjksMzYgKzE4MiwyNyBAQCB2b2lkIEdy
YXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBl
ciosIGNvbnN0IEZsb2F0UgogI2VuZGlmCiAKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLXZv
aWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc1N1cmZhY2VzKGNvbnN0
IEludFNpemUmKQordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNz
U3VyZmFjZXMoY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBtX3BlbmRpbmdTdXJmYWNlUmVz
aXplID0gdHJ1ZTsKKyAgICBpZiAoc2l6ZS5pc0VtcHR5KCkpCisgICAgICAgIG1fZ3JhcGhpY3NT
dXJmYWNlLmNsZWFyKCk7CisgICAgZWxzZQorICAgICAgICBtX2dyYXBoaWNzU3VyZmFjZSA9IEdy
YXBoaWNzU3VyZmFjZTo6Y3JlYXRlKHNpemUsIG1fc3VyZmFjZUZsYWdzKTsKIH0KIAogdWludDMy
X3QgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjb3B5VG9HcmFwaGljc1N1cmZhY2UoKQogewot
ICAgIGlmICghbV9wbGF0Zm9ybUNvbnRleHQgfHwgIW1ha2VDb250ZXh0Q3VycmVudCgpKQorICAg
IGlmICghbV9ncmFwaGljc1N1cmZhY2UpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgaWYgKG1f
cGVuZGluZ1N1cmZhY2VSZXNpemUpIHsKLSAgICAgICAgbV9wZW5kaW5nU3VyZmFjZVJlc2l6ZSA9
IGZhbHNlOwotICAgICAgICBtX3BsYXRmb3JtU3VyZmFjZS0+c2V0R2VvbWV0cnkoSW50UmVjdCgw
LCAwLCBtX2NvbnRleHQtPm1fY3VycmVudFdpZHRoLCBtX2NvbnRleHQtPm1fY3VycmVudEhlaWdo
dCkpOwotICAgIH0KLQotICAgIGlmIChtX2NvbnRleHQtPm1fYXR0cnMuYW50aWFsaWFzKSB7Ci0j
aWYgIVVTRShPUEVOR0xfRVNfMikKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9G
UkFNRUJVRkZFUl9FWFQsIG1fY29udGV4dC0+bV9tdWx0aXNhbXBsZUZCTyk7Ci0gICAgICAgIGds
QmluZEZyYW1lYnVmZmVyKEdMX0RSQVdfRlJBTUVCVUZGRVJfRVhULCBtX2NvbnRleHQtPm1fZmJv
KTsKLSAgICAgICAgZ2xCbGl0RnJhbWVidWZmZXIoMCwgMCwgbV9jb250ZXh0LT5tX2N1cnJlbnRX
aWR0aCwgbV9jb250ZXh0LT5tX2N1cnJlbnRIZWlnaHQsIDAsIDAsIG1fY29udGV4dC0+bV9jdXJy
ZW50V2lkdGgsIG1fY29udGV4dC0+bV9jdXJyZW50SGVpZ2h0LCBHTF9DT0xPUl9CVUZGRVJfQklU
LCBHTF9MSU5FQVIpOwotI2VuZGlmCi0gICAgfQotCi0gICAgbV9wbGF0Zm9ybVN1cmZhY2UtPnVw
ZGF0ZUNvbnRlbnRzKG1fY29udGV4dC0+bV90ZXh0dXJlLCBJbnRSZWN0KDAsIDAsIG1fY29udGV4
dC0+bV9jdXJyZW50V2lkdGgsIG1fY29udGV4dC0+bV9jdXJyZW50SGVpZ2h0KSwgbV9jb250ZXh0
LT5tX2JvdW5kRkJPKTsKLSAgICByZXR1cm4gMDsKKyAgICBtYWtlQ29udGV4dEN1cnJlbnQoKTsK
KyAgICBtX2dyYXBoaWNzU3VyZmFjZS0+Y29weUZyb21UZXh0dXJlKG1fY29udGV4dC0+bV90ZXh0
dXJlLCBJbnRSZWN0KDAsIDAsIG1fY29udGV4dC0+bV9jdXJyZW50V2lkdGgsIG1fY29udGV4dC0+
bV9jdXJyZW50SGVpZ2h0KSk7CisgICAgcmV0dXJuIG1fZ3JhcGhpY3NTdXJmYWNlLT5zd2FwQnVm
ZmVycygpOwogfQogCiBHcmFwaGljc1N1cmZhY2VUb2tlbiBHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OmdyYXBoaWNzU3VyZmFjZVRva2VuKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9zdXJmYWNl
SGFuZGxlOworICAgIHJldHVybiBtX2dyYXBoaWNzU3VyZmFjZS0+ZXhwb3J0VG9rZW4oKTsKIH0K
ICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9l
ZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKaW5kZXggZmFlYzAzNjgzOTdi
ZGQ4YzIyZDVjOTkyYTNhMzA0Yzc3MzRlNDIxYi4uMWFlNDM1MWY5ZjQzMDkwN2U1ZjA0MTk2NWU2
MDBlZWFiNGI4NDkxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaApAQCAtMSw2ICsx
LDUgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDEyIFNhbXN1bmcgRWxlY3Ryb25pY3MKLSAg
ICBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uCiAKICAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKQEAgLTIxLDggKzIwLDYgQEAKICNpZm5kZWYgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlX2gK
ICNkZWZpbmUgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlX2gKIAotI2lmIFVTRSgzRF9HUkFQSElD
UykgfHwgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCiAjaW5jbHVkZSAiR3JhcGhpY3ND
b250ZXh0M0QuaCIKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKQEAgLTMwLDExICsyNywx
NCBAQAogI2VuZGlmCiAKICNpZiBVU0UoR1JBUEhJQ1NfU1VSRkFDRSkKLSNpbmNsdWRlICJHTFBs
YXRmb3JtU3VyZmFjZS5oIgorI2luY2x1ZGUgIkdyYXBoaWNzU3VyZmFjZS5oIgogI2VuZGlmCiAK
LSNpbmNsdWRlICJHTFBsYXRmb3JtQ29udGV4dC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+Cit0eXBlZGVmIHN0cnVjdCBfRXZhc19HTCAgICAgICAgICAgICAgIEV2YXNfR0w7Cit0eXBl
ZGVmIHN0cnVjdCBfRXZhc19HTF9TdXJmYWNlICAgICAgIEV2YXNfR0xfU3VyZmFjZTsKK3R5cGVk
ZWYgc3RydWN0IF9FdmFzX0dMX0NvbnRleHQgICAgICAgRXZhc19HTF9Db250ZXh0OwordHlwZWRl
ZiBzdHJ1Y3QgX0V2YXNfR0xfQ29uZmlnICAgICAgICBFdmFzX0dMX0NvbmZpZzsKK3R5cGVkZWYg
c3RydWN0IF9FdmFzX0dMX0FQSSAgICAgICAgICAgRXZhc19HTF9BUEk7CiAKIGNsYXNzIFBhZ2VD
bGllbnRFZmw7CiAKQEAgLTQ4LDkgKzQ4LDggQEAgcHVibGljOgogICAgIEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZShHcmFwaGljc0NvbnRleHQzRCosIEhvc3RXaW5kb3cqLCBHcmFwaGljc0NvbnRl
eHQzRDo6UmVuZGVyU3R5bGUpOwogICAgIH5HcmFwaGljc0NvbnRleHQzRFByaXZhdGUoKTsKIAot
ICAgIGJvb2wgY3JlYXRlU3VyZmFjZShQYWdlQ2xpZW50RWZsKiwgYm9vbCk7CiAgICAgUGxhdGZv
cm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3Q7Ci0g
ICAgdm9pZCBzZXRDb250ZXh0TG9zdENhbGxiYWNrKFBhc3NPd25QdHI8R3JhcGhpY3NDb250ZXh0
M0Q6OkNvbnRleHRMb3N0Q2FsbGJhY2s+ICBjYWxsQmFjayk7CisKICNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0
OwogI2VuZGlmCkBAIC02MiwyMyArNjEsMzEgQEAgcHVibGljOgogICAgIHZpcnR1YWwgR3JhcGhp
Y3NTdXJmYWNlVG9rZW4gZ3JhcGhpY3NTdXJmYWNlVG9rZW4oKSBjb25zdDsKICAgICB2b2lkIGNy
ZWF0ZUdyYXBoaWNzU3VyZmFjZXMoY29uc3QgSW50U2l6ZSYpOwogI2VuZGlmCisKICAgICBib29s
IG1ha2VDb250ZXh0Q3VycmVudCgpOwotICAgIHZvaWQgcmVsZWFzZVJlc291cmNlcygpOworICAg
IGJvb2wgY3JlYXRlU3VyZmFjZShQYWdlQ2xpZW50RWZsKiwgYm9vbCByZW5kZXJEaXJlY3RseVRv
RXZhc0dMT2JqZWN0KTsKKyAgICB2b2lkIHNldEN1cnJlbnRHTENvbnRleHQodm9pZCosIHZvaWQq
KTsKKwogICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIG1fYXR0cmlidXRlczsKICAg
ICBHcmFwaGljc0NvbnRleHQzRCogbV9jb250ZXh0OwogICAgIEhvc3RXaW5kb3cqIG1faG9zdFdp
bmRvdzsKLSAgICBPd25QdHI8R0xQbGF0Zm9ybUNvbnRleHQ+IG1fcGxhdGZvcm1Db250ZXh0Owot
ICAgIE93blB0cjxHTFBsYXRmb3JtU3VyZmFjZT4gbV9wbGF0Zm9ybVN1cmZhY2U7CiAjaWYgVVNF
KEdSQVBISUNTX1NVUkZBQ0UpCi0gICAgR3JhcGhpY3NTdXJmYWNlVG9rZW4gbV9zdXJmYWNlSGFu
ZGxlOworICAgIEdyYXBoaWNzU3VyZmFjZTo6RmxhZ3MgbV9zdXJmYWNlRmxhZ3M7CisgICAgUmVm
UHRyPEdyYXBoaWNzU3VyZmFjZT4gbV9ncmFwaGljc1N1cmZhY2U7CiAjZW5kaWYKLSAgICBPd25Q
dHI8R3JhcGhpY3NDb250ZXh0M0Q6OkNvbnRleHRMb3N0Q2FsbGJhY2s+IG1fY29udGV4dExvc3RD
YWxsYmFjazsKKwogICAgIExpc3RIYXNoU2V0PEdDM0RlbnVtPiBtX3N5bnRoZXRpY0Vycm9yczsK
LSAgICBib29sIG1fcGVuZGluZ1N1cmZhY2VSZXNpemU7CisKKyAgICBPd25QdHI8RWNvcmVfRXZh
cz4gbV9lY29yZUV2YXM7CisgICAgRXZhc19HTCogbV9ldmFzR0w7CisgICAgRXZhc19HTF9Db250
ZXh0KiBtX2V2YXNHTENvbnRleHQ7CisgICAgRXZhc19HTF9TdXJmYWNlKiBtX2V2YXNHTFN1cmZh
Y2U7CisgICAgdm9pZCogbV9nbENvbnRleHQ7CisgICAgdm9pZCogbV9nbFN1cmZhY2U7CisgICAg
RXZhc19HTF9BUEkqIG1fYXBpOworICAgIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHlsZSBt
X3JlbmRlclN0eWxlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYKLQot
I2VuZGlmCisjZW5kaWYgLy8gR3JhcGhpY3NMYXllckVmbF9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR0xEZWZzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR0xEZWZzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDZlMzZhMTExNmVhNDcwNzU3OWMxMTg1ZDFjN2NlODE2MWZlYjg1ZjQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dMRGVmcy5oCisrKyAvZGV2L251bGwKQEAgLTEsNjMg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBHTERlZnNfaAotI2RlZmluZSBH
TERlZnNfaAotCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotCi0jaWYgVVNFKE9Q
RU5HTF9FU18yKQotI2luY2x1ZGUgIkV4dGVuc2lvbnMzRE9wZW5HTEVTLmgiCi0jZWxzZQotI2lu
Y2x1ZGUgIkV4dGVuc2lvbnMzRE9wZW5HTC5oIgotI2VuZGlmCi0KLSNpbmNsdWRlICJPcGVuR0xT
aGltcy5oIgotCi0jaW5jbHVkZSA8R0wvZ2wuaD4KLSNpbmNsdWRlIDxHTC9nbGV4dC5oPgotI2lm
IEhBVkUoR0xYKQotI2luY2x1ZGUgPEdML2dseC5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotI2lmIEhBVkUoR0xYKQotdHlwZWRlZiBHTFhDb250ZXh0IFBsYXRmb3JtQ29udGV4
dDsKLXR5cGVkZWYgRGlzcGxheSogUGxhdGZvcm1EaXNwbGF5OwotdHlwZWRlZiBHTFhGQkNvbmZp
ZyBQbGF0Zm9ybVN1cmZhY2VDb25maWc7Ci10eXBlZGVmIEdMWERyYXdhYmxlIFBsYXRmb3JtU3Vy
ZmFjZTsKLSNlbHNlCi10eXBlZGVmIHZvaWQqIFBsYXRmb3JtQ29udGV4dDsKLXR5cGVkZWYgdm9p
ZCogUGxhdGZvcm1EaXNwbGF5OwotdHlwZWRlZiB2b2lkKiBQbGF0Zm9ybVN1cmZhY2VDb25maWc7
Ci10eXBlZGVmIHZvaWQqIFBsYXRmb3JtU3VyZmFjZTsKLSNlbmRpZgotCi19Ci0KLSNlbmRpZgot
Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HTFBsYXRmb3JtQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvR0xQbGF0Zm9ybUNvbnRleHQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA1NWFiNjk1OTJhOWM3OWRmMGNmYzIxZDhhNjYwZDBiYzJjOWI3NzE0Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HTFBsYXRmb3JtQ29udGV4dC5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwyMDUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jw
b3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkdMUGxhdGZvcm1Db250ZXh0LmgiCi0KLSNpZiBVU0UoQUNDRUxFUkFU
RURfQ09NUE9TSVRJTkcpCi0KLSNpZiBIQVZFKEdMWCkKLSNpbmNsdWRlICJHTFhDb250ZXh0Lmgi
Ci0jZW5kaWYKLQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotc3RhdGljIFBGTkdMR0VUR1JBUEhJQ1NSRVNFVFNUQVRVU0FSQlBST0MgZ2xHZXRH
cmFwaGljc1Jlc2V0U3RhdHVzQVJCID0gMDsKLXN0YXRpYyBHTFBsYXRmb3JtQ29udGV4dCogbV9j
dXJyZW50Q29udGV4dCA9IDA7Ci0KLVBhc3NPd25QdHI8R0xQbGF0Zm9ybUNvbnRleHQ+IEdMUGxh
dGZvcm1Db250ZXh0OjpjcmVhdGVDb250ZXh0KEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJTdHls
ZSByZW5kZXJTdHlsZSkKLXsKLSAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZFNoaW1zID0gZmFs
c2U7Ci0KLSAgICBpZiAoIWluaXRpYWxpemVkU2hpbXMpIHsKLSAgICAgICAgaW5pdGlhbGl6ZWRT
aGltcyA9IGluaXRpYWxpemVPcGVuR0xTaGltcygpOwotI2lmIEhBVkUoR0xYKQotICAgICAgICBn
bEdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUR1JB
UEhJQ1NSRVNFVFNUQVRVU0FSQlBST0M+KGdsWEdldFByb2NBZGRyZXNzQVJCKHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KCJnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIiKSkpOwot
I2VuZGlmCi0gICAgfQotCi0gICAgaWYgKCFpbml0aWFsaXplZFNoaW1zKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLQotICAgIHN3aXRjaCAocmVuZGVyU3R5bGUpIHsKLSAgICBjYXNlIEdyYXBo
aWNzQ29udGV4dDNEOjpSZW5kZXJPZmZzY3JlZW46Ci0gICAgICAgIGlmIChPd25QdHI8R0xQbGF0
Zm9ybUNvbnRleHQ+IGdseENvbnRleHQgPSBHTFBsYXRmb3JtQ29udGV4dDo6Y3JlYXRlT2ZmU2Ny
ZWVuQ29udGV4dCgpKQotICAgICAgICAgICAgcmV0dXJuIGdseENvbnRleHQucmVsZWFzZSgpOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpSZW5kZXJUb0N1cnJl
bnRHTENvbnRleHQ6Ci0gICAgICAgIGlmIChPd25QdHI8R0xQbGF0Zm9ybUNvbnRleHQ+IGdseENv
bnRleHQgPSBHTFBsYXRmb3JtQ29udGV4dDo6Y3JlYXRlQ3VycmVudENvbnRleHRXcmFwcGVyKCkp
Ci0gICAgICAgICAgICByZXR1cm4gZ2x4Q29udGV4dC5yZWxlYXNlKCk7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93
OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLVBhc3NPd25QdHI8R0xQbGF0Zm9ybUNvbnRleHQ+
IEdMUGxhdGZvcm1Db250ZXh0OjpjcmVhdGVPZmZTY3JlZW5Db250ZXh0KCkKLXsKLSNpZiBIQVZF
KEdMWCkKLSAgICBPd25QdHI8R0xQbGF0Zm9ybUNvbnRleHQ+IGdseENvbnRleHQgPSBhZG9wdFB0
cihuZXcgR0xYT2ZmU2NyZWVuQ29udGV4dCgpKTsKLSAgICByZXR1cm4gZ2x4Q29udGV4dC5yZWxl
YXNlKCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBudWxscHRyOwotfQotCi1QYXNzT3duUHRyPEdM
UGxhdGZvcm1Db250ZXh0PiBHTFBsYXRmb3JtQ29udGV4dDo6Y3JlYXRlQ3VycmVudENvbnRleHRX
cmFwcGVyKCkKLXsKLSNpZiBIQVZFKEdMWCkKLSAgICBPd25QdHI8R0xQbGF0Zm9ybUNvbnRleHQ+
IGdseENvbnRleHQgPSBhZG9wdFB0cihuZXcgR0xYQ3VycmVudENvbnRleHRXcmFwcGVyKCkpOwot
ICAgIHJldHVybiBnbHhDb250ZXh0LnJlbGVhc2UoKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIG51
bGxwdHI7Ci19Ci0KLUdMUGxhdGZvcm1Db250ZXh0OjpHTFBsYXRmb3JtQ29udGV4dCgpCi0gICAg
OiBtX2NvbnRleHRIYW5kbGUoMCkKLSAgICAsIG1fcmVzZXRMb3N0Q29udGV4dChmYWxzZSkKLXsK
LX0KLQotR0xQbGF0Zm9ybUNvbnRleHQ6On5HTFBsYXRmb3JtQ29udGV4dCgpCi17Ci0gICAgaWYg
KHRoaXMgPT0gbV9jdXJyZW50Q29udGV4dCkKLSAgICAgICAgbV9jdXJyZW50Q29udGV4dCA9IDA7
Ci19Ci0KLWJvb2wgR0xQbGF0Zm9ybUNvbnRleHQ6Om1ha2VDdXJyZW50KEdMUGxhdGZvcm1TdXJm
YWNlKiBzdXJmYWNlKQotewotICAgIG1fY29udGV4dExvc3QgPSBmYWxzZTsKLQotICAgIGlmIChz
dXJmYWNlICYmICFzdXJmYWNlLT5oYW5kbGUoKSkgewotICAgICAgICBtX2N1cnJlbnRDb250ZXh0
ID0gMDsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChpc0N1cnJlbnRD
b250ZXh0KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgYm9vbCByZXR1cm5WYWx1ZSA9
IGZhbHNlOwotCi0gICAgaWYgKCFzdXJmYWNlKSB7Ci0gICAgICAgIG1fY3VycmVudENvbnRleHQg
PSAwOwotICAgICAgICBwbGF0Zm9ybVJlbGVhc2VDdXJyZW50KCk7Ci0gICAgICAgIHJldHVyblZh
bHVlID0gdHJ1ZTsKLSAgICB9IGVsc2UgaWYgKHBsYXRmb3JtTWFrZUN1cnJlbnQoc3VyZmFjZSkp
IHsKLSAgICAgICAgbV9jdXJyZW50Q29udGV4dCA9IHRoaXM7Ci0gICAgICAgIHJldHVyblZhbHVl
ID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBpZiAobV9yZXNldExvc3RDb250ZXh0ICYmIGdsR2V0R3Jh
cGhpY3NSZXNldFN0YXR1c0FSQikgewotICAgICAgICBHTGVudW0gc3RhdHVzID0gZ2xHZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCKCk7Ci0KLSAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKLSAgICAg
ICAgY2FzZSBQTEFURk9STUNPTlRFWFRfTk9fRVJST1I6Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBQTEFURk9STUNPTlRFWFRfR1VJTFRZX0NPTlRFWFRfUkVTRVQ6Ci0gICAgICAg
ICAgICBtX2NvbnRleHRMb3N0ID0gdHJ1ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIFBMQVRGT1JNQ09OVEVYVF9JTk5PQ0VOVF9DT05URVhUX1JFU0VUOgotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgUExBVEZPUk1DT05URVhUX1VOS05PV05fQ09OVEVYVF9SRVNF
VDoKLSAgICAgICAgICAgIG1fY29udGV4dExvc3QgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIHJldHVybiByZXR1cm5WYWx1ZTsKLX0KLQotYm9vbCBHTFBsYXRmb3JtQ29udGV4dDo6
aXNWYWxpZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY29udGV4dEhhbmRsZSAmJiAhbV9jb250
ZXh0TG9zdDsKLX0KLQotdm9pZCBHTFBsYXRmb3JtQ29udGV4dDo6cmVsZWFzZUN1cnJlbnQoKQot
ewotICAgIGlmICghaXNDdXJyZW50Q29udGV4dCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBt
X2N1cnJlbnRDb250ZXh0ID0gMDsKLSAgICBwbGF0Zm9ybVJlbGVhc2VDdXJyZW50KCk7Ci19Ci0K
LVBsYXRmb3JtQ29udGV4dCBHTFBsYXRmb3JtQ29udGV4dDo6aGFuZGxlKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9jb250ZXh0SGFuZGxlOwotfQotCi1ib29sIEdMUGxhdGZvcm1Db250ZXh0Ojpp
c0N1cnJlbnRDb250ZXh0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotYm9vbCBH
TFBsYXRmb3JtQ29udGV4dDo6aW5pdGlhbGl6ZShHTFBsYXRmb3JtU3VyZmFjZSopCi17Ci0gICAg
cmV0dXJuIHRydWU7Ci19Ci0KLUdMUGxhdGZvcm1Db250ZXh0KiBHTFBsYXRmb3JtQ29udGV4dDo6
Z2V0Q3VycmVudCgpCi17Ci0gICAgcmV0dXJuIG1fY3VycmVudENvbnRleHQ7Ci19Ci0KLWJvb2wg
R0xQbGF0Zm9ybUNvbnRleHQ6OnBsYXRmb3JtTWFrZUN1cnJlbnQoR0xQbGF0Zm9ybVN1cmZhY2Uq
KQotewotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIEdMUGxhdGZvcm1Db250ZXh0OjpwbGF0
Zm9ybVJlbGVhc2VDdXJyZW50KCkKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotfQotCi12b2lk
IEdMUGxhdGZvcm1Db250ZXh0OjpkZXN0cm95KCkKLXsKLSAgICBtX2NvbnRleHRIYW5kbGUgPSAw
OwotICAgIG1fcmVzZXRMb3N0Q29udGV4dCA9IGZhbHNlOwotCi0gICAgaWYgKHRoaXMgPT0gbV9j
dXJyZW50Q29udGV4dCkKLSAgICAgICAgbV9jdXJyZW50Q29udGV4dCA9IDA7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR0xQbGF0Zm9ybUNvbnRleHQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HTFBsYXRmb3JtQ29udGV4dC5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTU5YjdiZTg5NTFlNjNhNjA3ZjFjZDM1MzZkMzk3Yjc0
OTRmNWM4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HTFBsYXRmb3JtQ29udGV4dC5o
CisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBHTFBsYXRmb3JtQ29udGV4dF9oCi0jZGVmaW5lIEdMUGxhdGZvcm1Db250ZXh0X2gKLQot
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKLQotI2luY2x1ZGUgIkdMRGVmcy5oIgot
I2luY2x1ZGUgIkdMUGxhdGZvcm1TdXJmYWNlLmgiCi0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLQotLy8gRW5jYXBzdWxhdGVzIGFuIE9w
ZW5HTCBjb250ZXh0LCBoaWRpbmcgcGxhdGZvcm0gc3BlY2lmaWMgbWFuYWdlbWVudC4KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgR0xQbGF0Zm9ybUNvbnRleHQgewotICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKEdMUGxhdGZvcm1Db250ZXh0KTsKLQotcHVibGljOgotICAgIC8vIEZyb20g
aHR0cDovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS9nbGVzL2V4dGVuc2lvbnMvRVhUL0VYVF9y
b2J1c3RuZXNzLnR4dAotICAgIGVudW0gUGxhdGZvcm1Db250ZXh0UmVzZXQgewotICAgICAgICBQ
TEFURk9STUNPTlRFWFRfTk9fRVJST1IgPSAweDAwMDAsCi0gICAgICAgIFBMQVRGT1JNQ09OVEVY
VF9HVUlMVFlfQ09OVEVYVF9SRVNFVCA9IDB4ODI1MywKLSAgICAgICAgUExBVEZPUk1DT05URVhU
X0lOTk9DRU5UX0NPTlRFWFRfUkVTRVQgPSAweDgyNTQsCi0gICAgICAgIFBMQVRGT1JNQ09OVEVY
VF9VTktOT1dOX0NPTlRFWFRfUkVTRVQgPSAweDgyNTUsCi0gICAgfTsKLQotICAgIHN0YXRpYyBQ
YXNzT3duUHRyPEdMUGxhdGZvcm1Db250ZXh0PiBjcmVhdGVDb250ZXh0KEdyYXBoaWNzQ29udGV4
dDNEOjpSZW5kZXJTdHlsZSk7Ci0KLSAgICB2aXJ0dWFsIH5HTFBsYXRmb3JtQ29udGV4dCgpOwot
Ci0gICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoR0xQbGF0Zm9ybVN1cmZhY2UqKTsKLQotICAg
IC8vIE1ha2VzIHRoaXMgYW5kIHN1cmZhY2UgYXMgY3VycmVudCBjb250ZXh0IGFuZCBkcmF3YWJs
ZS4KLSAgICAvLyBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gd2l0aCBubyBzdXJmYWNlIGlzIHNhbWUg
YXMgY2FsbGluZyByZWxlYXNlQ3VycmVudC4KLSAgICAvLyBEb2VzIG5vdGhpbmcgaWYgdGhpcyBp
cyBhbHJlYWR5IGN1cnJlbnQgQ29udGV4dC4KLSAgICBib29sIG1ha2VDdXJyZW50KEdMUGxhdGZv
cm1TdXJmYWNlKiA9IDApOwotCi0gICAgLy8gU2V0cyBDdXJyZW50IENvbnRleHQgYW5kIERyYXdh
YmxlIGFzIE51bGwuCi0gICAgLy8gRG9lc24ndCBoYXZlIGFueSBlZmZlY3QgaWYgdGhpcyBpcyBu
b3QgdGhlIGN1cnJlbnQgQ29udGV4dC4KLSAgICB2b2lkIHJlbGVhc2VDdXJyZW50KCk7Ci0KLSAg
ICBQbGF0Zm9ybUNvbnRleHQgaGFuZGxlKCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgaXND
dXJyZW50Q29udGV4dCgpIGNvbnN0OwotCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7Ci0KLSAg
ICAvLyBEZXN0cm95cyBhbnkgR0wgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRl
eHQuCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKTsKLQotICAgIHN0YXRpYyBHTFBsYXRmb3Jt
Q29udGV4dCogZ2V0Q3VycmVudCgpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgR0xQbGF0Zm9ybUNvbnRl
eHQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgcGxhdGZvcm1NYWtlQ3VycmVudChHTFBsYXRmb3JtU3Vy
ZmFjZSopOwotICAgIHZpcnR1YWwgdm9pZCBwbGF0Zm9ybVJlbGVhc2VDdXJyZW50KCk7Ci0gICAg
UGxhdGZvcm1Db250ZXh0IG1fY29udGV4dEhhbmRsZTsKLSAgICBib29sIG1fcmVzZXRMb3N0Q29u
dGV4dDsKLSAgICBib29sIG1fY29udGV4dExvc3Q7Ci0KLXByaXZhdGU6Ci0gICAgc3RhdGljIFBh
c3NPd25QdHI8R0xQbGF0Zm9ybUNvbnRleHQ+IGNyZWF0ZU9mZlNjcmVlbkNvbnRleHQoKTsKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxHTFBsYXRmb3JtQ29udGV4dD4gY3JlYXRlQ3VycmVudENvbnRl
eHRXcmFwcGVyKCk7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgotCi0j
ZW5kaWYgLy8gR0xOYXRpdmVDb250ZXh0X0gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HTFBsYXRmb3JtU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR0xQbGF0Zm9ybVN1cmZhY2UuY3BwCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OTQ0ZGMwNjhlOTdhOGQyOTY1OGJhMWQyZmY4ODBj
OGY5ZDAwYzk4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HTFBsYXRmb3JtU3VyZmFj
ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdMUGxhdGZvcm1TdXJmYWNlLmgiCi0K
LSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0KLSNpZiBIQVZFKEdMWCkKLSNpbmNs
dWRlICJHTFhTdXJmYWNlLmgiCi0jZW5kaWYKLQotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotUGFzc093blB0cjxHTFBsYXRmb3JtU3VyZmFjZT4g
R0xQbGF0Zm9ybVN1cmZhY2U6OmNyZWF0ZU9mZnNjcmVlblN1cmZhY2UoKQotewotI2lmIEhBVkUo
R0xYKQotICAgIE93blB0cjxHTFBsYXRmb3JtU3VyZmFjZT4gc3VyZmFjZSA9IGFkb3B0UHRyKG5l
dyBHTFhQQnVmZmVyKCkpOwotCi0gICAgaWYgKHN1cmZhY2UtPmhhbmRsZSgpKQotICAgICAgICBy
ZXR1cm4gc3VyZmFjZS5yZWxlYXNlKCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBudWxscHRyOwot
fQotCi1QYXNzT3duUHRyPEdMUGxhdGZvcm1TdXJmYWNlPiBHTFBsYXRmb3JtU3VyZmFjZTo6Y3Jl
YXRlVHJhbnNwb3J0U3VyZmFjZSgpCi17Ci0jaWYgSEFWRShHTFgpCi0gICAgT3duUHRyPEdMUGxh
dGZvcm1TdXJmYWNlPiBzdXJmYWNlID0gYWRvcHRQdHIobmV3IEdMWFRyYW5zcG9ydFN1cmZhY2Uo
KSk7Ci0KLSAgICBpZiAoc3VyZmFjZS0+aGFuZGxlKCkpCi0gICAgICAgIHJldHVybiBzdXJmYWNl
LnJlbGVhc2UoKTsKLSNlbmRpZgotCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLUdMUGxhdGZv
cm1TdXJmYWNlOjpHTFBsYXRmb3JtU3VyZmFjZSgpCi0gICAgOiBtX3Jlc3RvcmVOZWVkZWQodHJ1
ZSkKLSAgICAsIG1fZmJvSWQoMCkKLSAgICAsIG1fc2hhcmVkRGlzcGxheSgwKQotICAgICwgbV9k
cmF3YWJsZSgwKQotewotfQotCi1HTFBsYXRmb3JtU3VyZmFjZTo6fkdMUGxhdGZvcm1TdXJmYWNl
KCkKLXsKLX0KLQotUGxhdGZvcm1TdXJmYWNlIEdMUGxhdGZvcm1TdXJmYWNlOjpoYW5kbGUoKSBj
b25zdAotewotICAgIHJldHVybiBtX2RyYXdhYmxlOwotfQotCi1jb25zdCBJbnRSZWN0JiBHTFBs
YXRmb3JtU3VyZmFjZTo6Z2VvbWV0cnkoKSBjb25zdAotewotICAgIHJldHVybiBtX3JlY3Q7Ci19
Ci0KLVBsYXRmb3JtRGlzcGxheSBHTFBsYXRmb3JtU3VyZmFjZTo6c2hhcmVkRGlzcGxheSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fc2hhcmVkRGlzcGxheTsKLX0KLQotUGxhdGZvcm1TdXJmYWNl
Q29uZmlnIEdMUGxhdGZvcm1TdXJmYWNlOjpjb25maWd1cmF0aW9uKCkKLXsKLSAgICByZXR1cm4g
MDsKLX0KLQotdm9pZCBHTFBsYXRmb3JtU3VyZmFjZTo6c3dhcEJ1ZmZlcnMoKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci19Ci0KLXZvaWQgR0xQbGF0Zm9ybVN1cmZhY2U6OmNvcHlUZXh0dXJl
KHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpCi17Ci0gICAgaWYg
KCFtX2Zib0lkKQotICAgICAgICBnbEdlbkZyYW1lYnVmZmVycygxLCAmbV9mYm9JZCk7Ci0KLSAg
ICBtX3Jlc3RvcmVOZWVkZWQgPSB0cnVlOwotICAgIGludCB4ID0gc291cmNlUmVjdC54KCk7Ci0g
ICAgaW50IHkgPSBzb3VyY2VSZWN0LnkoKTsKLSAgICBpbnQgd2lkdGggPSBzb3VyY2VSZWN0Lndp
ZHRoKCk7Ci0gICAgaW50IGhlaWdodCA9IHNvdXJjZVJlY3QuaGVpZ2h0KCk7Ci0KLSAgICBnbFB1
c2hBdHRyaWIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0KLSAgICBHTGludCBwcmV2aW91c0ZCTzsK
LSAgICBnbEdldEludGVnZXJ2KEdMX0ZSQU1FQlVGRkVSX0JJTkRJTkcsICZwcmV2aW91c0ZCTyk7
Ci0KLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9SRUFEX0ZSQU1FQlVGRkVSLCBtX2Zib0lkKTsK
LQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSk7Ci0gICAgZ2xGcmFt
ZWJ1ZmZlclRleHR1cmUyRChHTF9SRUFEX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5U
MCwgR0xfVEVYVFVSRV8yRCwgdGV4dHVyZSwgMCk7Ci0KLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
TF9EUkFXX0ZSQU1FQlVGRkVSLCAwKTsKLQotICAgIGdsQmxpdEZyYW1lYnVmZmVyKHgsIHksIHdp
ZHRoLCBoZWlnaHQsIHgsIHksIHdpZHRoLCBoZWlnaHQsIEdMX0NPTE9SX0JVRkZFUl9CSVQsIEdM
X0xJTkVBUik7Ci0KLSAgICBnbEZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX1JFQURfRlJBTUVCVUZG
RVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhUVVJFXzJELCAwLCAwKTsKLSAgICBnbEJp
bmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIDApOwotICAgIGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZS
QU1FQlVGRkVSLCBwcmV2aW91c0ZCTyk7Ci0KLSAgICBnbFBvcEF0dHJpYigpOwotfQotCi12b2lk
IEdMUGxhdGZvcm1TdXJmYWNlOjp1cGRhdGVDb250ZW50cyh1aW50MzJfdCB0ZXh0dXJlLCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBHTHVpbnQgYmluZEZib0lkKQotewotICAgIG1f
cmVzdG9yZU5lZWRlZCA9IGZhbHNlOwotCi0gICAgaWYgKCFtX2Zib0lkKQotICAgICAgICBnbEdl
bkZyYW1lYnVmZmVycygxLCAmbV9mYm9JZCk7Ci0KLSAgICBpbnQgeCA9IHNvdXJjZVJlY3QueCgp
OwotICAgIGludCB5ID0gc291cmNlUmVjdC55KCk7Ci0gICAgaW50IHdpZHRoID0gc291cmNlUmVj
dC53aWR0aCgpOwotICAgIGludCBoZWlnaHQgPSBzb3VyY2VSZWN0LmhlaWdodCgpOwotCi0gICAg
Z2xCaW5kRnJhbWVidWZmZXIoR0xfUkVBRF9GUkFNRUJVRkZFUiwgbV9mYm9JZCk7Ci0gICAgZ2xC
aW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKLSAgICBnbEZyYW1lYnVmZmVyVGV4
dHVyZTJEKEdMX1JFQURfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBHTF9URVhU
VVJFXzJELCB0ZXh0dXJlLCAwKTsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihHTF9EUkFXX0ZSQU1F
QlVGRkVSLCAwKTsKLSAgICBnbEJsaXRGcmFtZWJ1ZmZlcih4LCB5LCB3aWR0aCwgaGVpZ2h0LCB4
LCB5LCB3aWR0aCwgaGVpZ2h0LCBHTF9DT0xPUl9CVUZGRVJfQklULCBHTF9MSU5FQVIpOwotICAg
IHN3YXBCdWZmZXJzKCk7Ci0gICAgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9SRUFEX0ZSQU1F
QlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgR0xfVEVYVFVSRV8yRCwgMCwgMCk7Ci0gICAg
Z2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAwKTsKLSAgICBnbEJpbmRGcmFtZWJ1ZmZlcihH
TF9GUkFNRUJVRkZFUiwgYmluZEZib0lkKTsKLX0KLQotdm9pZCBHTFBsYXRmb3JtU3VyZmFjZTo6
c2V0R2VvbWV0cnkoY29uc3QgSW50UmVjdCYgbmV3UmVjdCkKLXsKLSAgICBtX3JlY3QgPSBuZXdS
ZWN0OwotfQotCi12b2lkIEdMUGxhdGZvcm1TdXJmYWNlOjpkZXN0cm95KCkKLXsKLSAgICBtX3Jl
Y3QgPSBJbnRSZWN0KCk7Ci0KLSAgICBpZiAobV9mYm9JZCkKLSAgICAgICAgZ2xEZWxldGVGcmFt
ZWJ1ZmZlcnMoMSwgJm1fZmJvSWQpOwotCi0gICAgbV9mYm9JZCA9IDA7Ci19Ci0KLX0KLQotI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R0xQbGF0Zm9ybVN1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29w
ZW5nbC9HTFBsYXRmb3JtU3VyZmFjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm
MTA2NmI3YmViMzdkMjZmZmFlZDY0ZTY5MzQzODEwMmJiZmVhOTAzLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9HTFBsYXRmb3JtU3VyZmFjZS5oCisrKyAvZGV2L251bGwKQEAgLTEsODkg
KzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBHTFBsYXRmb3JtU3VyZmFjZV9o
Ci0jZGVmaW5lIEdMUGxhdGZvcm1TdXJmYWNlX2gKLQotI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01Q
T1NJVElORykKLQotI2luY2x1ZGUgIkdMRGVmcy5oIgotI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0KLS8vIEVuY2Fwc3VsYXRlcyBhIHN1
cmZhY2UgdGhhdCBjYW4gYmUgcmVuZGVyZWQgdG8gd2l0aCBHTCwgaGlkaW5nIHBsYXRmb3JtCi0v
LyBzcGVjaWZpYyBtYW5hZ2VtZW50LgotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHTFBs
YXRmb3JtU3VyZmFjZSB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR0xQbGF0Zm9ybVN1cmZh
Y2UpOwotCi1wdWJsaWM6Ci0gICAgLy8gQ3JlYXRlcyBhIEdMIHN1cmZhY2UgdXNlZCBmb3Igb2Zm
c2NyZWVuIHJlbmRlcmluZy4KLSAgICBzdGF0aWMgUGFzc093blB0cjxHTFBsYXRmb3JtU3VyZmFj
ZT4gY3JlYXRlT2Zmc2NyZWVuU3VyZmFjZSgpOwotCi0gICAgLy8gQ3JlYXRlcyBhIEdMIHN1cmZh
Y2UgdXNlZCBmb3Igb2Zmc2NyZWVuIHJlbmRlcmluZy4gVGhlIHJlc3VsdHMgY2FuIGJlIHRyYW5z
cG9ydGVkCi0gICAgLy8gdG8gdGhlIFVJIHByb2Nlc3MgZm9yIGRpc3BsYXkuCi0gICAgc3RhdGlj
IFBhc3NPd25QdHI8R0xQbGF0Zm9ybVN1cmZhY2U+IGNyZWF0ZVRyYW5zcG9ydFN1cmZhY2UoKTsK
LQotICAgIHZpcnR1YWwgfkdMUGxhdGZvcm1TdXJmYWNlKCk7Ci0KLSAgICBjb25zdCBJbnRSZWN0
JiBnZW9tZXRyeSgpIGNvbnN0OwotCi0gICAgLy8gR2V0IHRoZSB1bmRlcmx5aW5nIHBsYXRmb3Jt
IHNwZWNpZmljIHN1cmZhY2UgaGFuZGxlLgotICAgIFBsYXRmb3JtU3VyZmFjZSBoYW5kbGUoKSBj
b25zdDsKLQotICAgIFBsYXRmb3JtRGlzcGxheSBzaGFyZWREaXNwbGF5KCkgY29uc3Q7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgc3dhcEJ1ZmZlcnMoKTsKLQotICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4
dHVyZSh1aW50MzJfdCB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsKLQotICAg
IC8vIENvbnZlbmllbmNlIEZ1bmN0aW9uIHRvIHVwZGF0ZSBzdXJmYWNlIGJhY2tidWZmZXIgd2l0
aCB0ZXh0dXJlIGNvbnRlbnRzIGFuZCByZXN0b3JlIGN1cnJlbnQgRkJPLgotICAgIC8vIEZ1bmN0
aW9uIGRvZXMgdGhlIGZvbGxvd2luZyhpbiBvcmRlcik6Ci0gICAgLy8gYSlCbGl0cyB0ZXh0dXJl
IGNvbnRlbnRzIHRvIGJhY2sgYnVmZmVyLgotICAgIC8vIGIpQ2FsbHMgU3dhcCBCdWZmZXJzLgot
ICAgIC8vIGMpU2V0cyBjdXJyZW50IEZCTyBhcyBiaW5kRmJvSWQuCi0gICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUNvbnRlbnRzKHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEdMdWludCBiaW5kRmJvSWQpOwotCi0gICAgdmlydHVhbCB2b2lkIHNldEdlb21l
dHJ5KGNvbnN0IEludFJlY3QmIG5ld1JlY3QpOwotCi0gICAgdmlydHVhbCBQbGF0Zm9ybVN1cmZh
Y2VDb25maWcgY29uZmlndXJhdGlvbigpOwotCi0gICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKTsK
LQotcHJvdGVjdGVkOgotICAgIEdMUGxhdGZvcm1TdXJmYWNlKCk7Ci0gICAgYm9vbCBtX3Jlc3Rv
cmVOZWVkZWQ7Ci0gICAgSW50UmVjdCBtX3JlY3Q7Ci0gICAgR0x1aW50IG1fZmJvSWQ7Ci0gICAg
UGxhdGZvcm1EaXNwbGF5IG1fc2hhcmVkRGlzcGxheTsKLSAgICBQbGF0Zm9ybVN1cmZhY2UgbV9k
cmF3YWJsZTsKLX07Ci0KLX0KLQotI2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbnRleHQu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTVmMDZjZjY0Nzc2MjhjNjgwZWQx
NDA4YzhmYTJiN2E2M2YxOTIzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9H
TFhDb250ZXh0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiR0xYQ29udGV4dC5oIgot
Ci0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBIQVZFKEdMWCkKLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi10eXBlZGVmIEdMWENvbnRleHQgKCpHTFhDUkVBVEVDT05URVhUQVRU
UklCU0FSQlBST0MpKERpc3BsYXkqLCBHTFhGQkNvbmZpZywgR0xYQ29udGV4dCwgQm9vbCwgY29u
c3QgaW50Kik7Ci1zdGF0aWMgR0xYQ1JFQVRFQ09OVEVYVEFUVFJJQlNBUkJQUk9DIGdsWENyZWF0
ZUNvbnRleHRBdHRyaWJzQVJCID0gMDsKLQotc3RhdGljIGludCBBdHRyaWJzW10gPSB7Ci0gICAg
R0xYX0NPTlRFWFRfUkVTRVRfTk9USUZJQ0FUSU9OX1NUUkFURUdZX0FSQiwKLSAgICBHTFhfTE9T
RV9DT05URVhUX09OX1JFU0VUX0FSQiwKLSAgICAwIH07Ci0KLXN0YXRpYyB2b2lkIGluaXRpYWxp
emVBUkJFeHRlbnNpb25zKCkKLXsKLSAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNl
OwotCi0gICAgaWYgKGluaXRpYWxpemVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpbml0aWFs
aXplZCA9IHRydWU7Ci0gICAgZ2xYQ3JlYXRlQ29udGV4dEF0dHJpYnNBUkIgPSByZWludGVycHJl
dF9jYXN0PEdMWENSRUFURUNPTlRFWFRBVFRSSUJTQVJCUFJPQz4oZ2xYR2V0UHJvY0FkZHJlc3Mo
cmVpbnRlcnByZXRfY2FzdDxjb25zdCBHTHVieXRlKj4oImdsWENyZWF0ZUNvbnRleHRBdHRyaWJz
QVJCIikpKTsKLX0KLQotR0xYT2ZmU2NyZWVuQ29udGV4dDo6R0xYT2ZmU2NyZWVuQ29udGV4dCgp
Ci0gICAgOiBHTFBsYXRmb3JtQ29udGV4dCgpCi0gICAgLCBtX2Rpc3BsYXkoMCkKLXsKLX0KLQot
Ym9vbCBHTFhPZmZTY3JlZW5Db250ZXh0Ojppbml0aWFsaXplKEdMUGxhdGZvcm1TdXJmYWNlKiBz
dXJmYWNlKQotewotICAgIGlmICghc3VyZmFjZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgbV9kaXNwbGF5ID0gc3VyZmFjZS0+c2hhcmVkRGlzcGxheSgpOwotICAgIGlmICghbV9kaXNw
bGF5KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBHTFhGQkNvbmZpZyBjb25maWcgPSBz
dXJmYWNlLT5jb25maWd1cmF0aW9uKCk7Ci0KLSAgICBpZiAoY29uZmlnKSB7Ci0gICAgICAgIGlu
aXRpYWxpemVBUkJFeHRlbnNpb25zKCk7Ci0KLSAgICAgICAgaWYgKGdsWENyZWF0ZUNvbnRleHRB
dHRyaWJzQVJCKQotICAgICAgICAgICAgbV9jb250ZXh0SGFuZGxlID0gZ2xYQ3JlYXRlQ29udGV4
dEF0dHJpYnNBUkIobV9kaXNwbGF5LCBjb25maWcsIDAsIHRydWUsIEF0dHJpYnMpOwotCi0gICAg
ICAgIGlmIChtX2NvbnRleHRIYW5kbGUpCi0gICAgICAgICAgICBtX3Jlc2V0TG9zdENvbnRleHQg
PSB0cnVlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX2NvbnRleHRIYW5kbGUgPSBnbFhD
cmVhdGVOZXdDb250ZXh0KG1fZGlzcGxheSwgY29uZmlnLCBHTFhfUkdCQV9UWVBFLCAwLCB0cnVl
KTsKLQotICAgICAgICBpZiAobV9jb250ZXh0SGFuZGxlKQotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1HTFhPZmZTY3JlZW5Db250ZXh0
Ojp+R0xYT2ZmU2NyZWVuQ29udGV4dCgpCi17Ci19Ci0KLWJvb2wgR0xYT2ZmU2NyZWVuQ29udGV4
dDo6aXNDdXJyZW50Q29udGV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fY29udGV4dEhhbmRs
ZSA9PSBnbFhHZXRDdXJyZW50Q29udGV4dCgpOwotfQotCi1ib29sIEdMWE9mZlNjcmVlbkNvbnRl
eHQ6OnBsYXRmb3JtTWFrZUN1cnJlbnQoR0xQbGF0Zm9ybVN1cmZhY2UqIHN1cmZhY2UpCi17Ci0g
ICAgcmV0dXJuIGdsWE1ha2VDdXJyZW50KHN1cmZhY2UtPnNoYXJlZERpc3BsYXkoKSwgc3VyZmFj
ZS0+aGFuZGxlKCksIG1fY29udGV4dEhhbmRsZSk7Ci19Ci0KLXZvaWQgR0xYT2ZmU2NyZWVuQ29u
dGV4dDo6cGxhdGZvcm1SZWxlYXNlQ3VycmVudCgpCi17Ci0gICAgZ2xYTWFrZUN1cnJlbnQobV9k
aXNwbGF5LCAwLCAwKTsKLX0KLQotdm9pZCBHTFhPZmZTY3JlZW5Db250ZXh0OjpmcmVlUmVzb3Vy
Y2VzKCkKLXsKLSAgICBpZiAobV9jb250ZXh0SGFuZGxlKQotICAgICAgICBnbFhEZXN0cm95Q29u
dGV4dChtX2Rpc3BsYXksIG1fY29udGV4dEhhbmRsZSk7Ci0KLSAgICBtX2NvbnRleHRIYW5kbGUg
PSAwOwotICAgIG1fZGlzcGxheSA9IDA7Ci19Ci0KLXZvaWQgR0xYT2ZmU2NyZWVuQ29udGV4dDo6
ZGVzdHJveSgpCi17Ci0gICAgZnJlZVJlc291cmNlcygpOwotICAgIEdMUGxhdGZvcm1Db250ZXh0
OjpkZXN0cm95KCk7Ci19Ci0KLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29udGV4dC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZ2x4L0dMWENvbnRleHQuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2NmZjhkNTFmYjczMzI2ZTI4NDRkZjEwN2UyYWNjMGZl
MTkyODA4OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYQ29udGV4dC5o
CisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
MiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lm
bmRlZiBHTFhDb250ZXh0X2gKLSNkZWZpbmUgR0xYQ29udGV4dF9oCi0KLSNpZiBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpICYmIEhBVkUoR0xYKQotCi0jaW5jbHVkZSAiR0xQbGF0Zm9ybUNv
bnRleHQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBHTFhDdXJyZW50Q29udGV4
dFdyYXBwZXIgOiBwdWJsaWMgR0xQbGF0Zm9ybUNvbnRleHQgewotICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEdMWEN1cnJlbnRDb250ZXh0V3JhcHBlcik7Ci0KLXB1YmxpYzoKLSAgICBHTFhDdXJy
ZW50Q29udGV4dFdyYXBwZXIoKQotICAgICAgICA6IEdMUGxhdGZvcm1Db250ZXh0KCkKLSAgICB7
Ci0gICAgICAgIG1fY29udGV4dEhhbmRsZSA9IGdsWEdldEN1cnJlbnRDb250ZXh0KCk7Ci0gICAg
fQotCi0gICAgdmlydHVhbCB+R0xYQ3VycmVudENvbnRleHRXcmFwcGVyKCkgeyB9Ci19OwotCi1j
bGFzcyBHTFhPZmZTY3JlZW5Db250ZXh0IDogcHVibGljIEdMUGxhdGZvcm1Db250ZXh0IHsKLSAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShHTFhPZmZTY3JlZW5Db250ZXh0KTsKLQotcHVibGljOgot
ICAgIEdMWE9mZlNjcmVlbkNvbnRleHQoKTsKLSAgICB2aXJ0dWFsIH5HTFhPZmZTY3JlZW5Db250
ZXh0KCk7Ci0gICAgYm9vbCBpbml0aWFsaXplKEdMUGxhdGZvcm1TdXJmYWNlKik7Ci0gICAgYm9v
bCBwbGF0Zm9ybU1ha2VDdXJyZW50KEdMUGxhdGZvcm1TdXJmYWNlKik7Ci0gICAgdm9pZCBwbGF0
Zm9ybVJlbGVhc2VDdXJyZW50KCk7Ci0gICAgdm9pZCBkZXN0cm95KCk7Ci0gICAgYm9vbCBpc0N1
cnJlbnRDb250ZXh0KCkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBmcmVlUmVzb3VyY2Vz
KCk7Ci0gICAgRGlzcGxheSogbV9kaXNwbGF5OwotfTsKLQotfQotCi0jZW5kaWYgLy8gR0xYQ1VS
UkVOVENPTlRFWFdSQVBQRVJfSAotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmNwcApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTNiOWMxMDIwOWFlNDcwZjVlNDQ4MjQ1OWNhMzgx
YjkyM2FlYjdkZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9nbHgvR0xYU3VyZmFj
ZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0g
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdMWFN1cmZhY2UuaCIKLQotI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgSEFWRShHTFgpCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotU2hhcmVkWDExUmVzb3VyY2VzKiBTaGFyZWRYMTFSZXNvdXJjZXM6Om1fc3RhdGlj
U2hhcmVkUmVzb3VyY2UgPSAwOwotCi1zdGF0aWMgY29uc3QgaW50IHBidWZmZXJBdHRyaWJ1dGVz
W10gPSB7IEdMWF9QQlVGRkVSX1dJRFRILCAxLCBHTFhfUEJVRkZFUl9IRUlHSFQsIDEsIDAgfTsK
LQotR0xYU3VyZmFjZTo6R0xYU3VyZmFjZSgpCi0gICAgOiBHTFBsYXRmb3JtU3VyZmFjZSgpCi17
Ci0gICAgbV9zaGFyZWRSZXNvdXJjZXMgPSBTaGFyZWRYMTFSZXNvdXJjZXM6OmNyZWF0ZSgpOwot
ICAgIG1fc2hhcmVkRGlzcGxheSA9IG1fc2hhcmVkUmVzb3VyY2VzLT5kaXNwbGF5KCk7Ci19Ci0K
LUdMWFN1cmZhY2U6On5HTFhTdXJmYWNlKCkKLXsKLX0KLQotWFZpc3VhbEluZm8qIEdMWFN1cmZh
Y2U6OnZpc3VhbEluZm8oKQotewotICAgIHJldHVybiBtX3NoYXJlZFJlc291cmNlcy0+dmlzdWFs
SW5mbygpOwotfQotCi1XaW5kb3cgR0xYU3VyZmFjZTo6eFdpbmRvdygpCi17Ci0gICAgcmV0dXJu
IG1fc2hhcmVkUmVzb3VyY2VzLT5nZXRYV2luZG93KCk7Ci19Ci0KLUdMWEZCQ29uZmlnIEdMWFN1
cmZhY2U6OnBCdWZmZXJDb25maWd1cmF0aW9uKCkKLXsKLSAgICByZXR1cm4gbV9zaGFyZWRSZXNv
dXJjZXMtPnBCdWZmZXJDb250ZXh0Q29uZmlnKCk7Ci19Ci0KLUdMWEZCQ29uZmlnIEdMWFN1cmZh
Y2U6OnRyYW5zcG9ydFN1cmZhY2VDb25maWd1cmF0aW9uKCkKLXsKLSAgICByZXR1cm4gbV9zaGFy
ZWRSZXNvdXJjZXMtPnN1cmZhY2VDb250ZXh0Q29uZmlnKCk7Ci19Ci0KLWJvb2wgR0xYU3VyZmFj
ZTo6aXNYUmVuZGVyRXh0ZW5zaW9uU3VwcG9ydGVkKCkKLXsKLSAgICByZXR1cm4gbV9zaGFyZWRS
ZXNvdXJjZXMtPmlzWFJlbmRlckV4dGVuc2lvblN1cHBvcnRlZCgpOwotfQotCi1HTFhUcmFuc3Bv
cnRTdXJmYWNlOjpHTFhUcmFuc3BvcnRTdXJmYWNlKCkKLSAgICA6IEdMWFN1cmZhY2UoKQotewot
ICAgIGluaXRpYWxpemUoKTsKLX0KLQotR0xYVHJhbnNwb3J0U3VyZmFjZTo6fkdMWFRyYW5zcG9y
dFN1cmZhY2UoKQotewotfQotCi1QbGF0Zm9ybVN1cmZhY2VDb25maWcgR0xYVHJhbnNwb3J0U3Vy
ZmFjZTo6Y29uZmlndXJhdGlvbigpCi17Ci0gICAgcmV0dXJuIHRyYW5zcG9ydFN1cmZhY2VDb25m
aWd1cmF0aW9uKCk7Ci19Ci0KLXZvaWQgR0xYVHJhbnNwb3J0U3VyZmFjZTo6c3dhcEJ1ZmZlcnMo
KQotewotICAgIGlmICghbV9kcmF3YWJsZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKG1f
cmVzdG9yZU5lZWRlZCkgewotICAgICAgICBHTGludCBvbGRGQk87Ci0gICAgICAgIGdsR2V0SW50
ZWdlcnYoR0xfRlJBTUVCVUZGRVJfQklORElORywgJm9sZEZCTyk7Ci0gICAgICAgIGdsQmluZEZy
YW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKTsKLSAgICAgICAgZ2xYU3dhcEJ1ZmZlcnMoc2hh
cmVkRGlzcGxheSgpLCBtX2RyYXdhYmxlKTsKLSAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIG9sZEZCTyk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGdsWFN3YXBCdWZmZXJz
KHNoYXJlZERpc3BsYXkoKSwgbV9kcmF3YWJsZSk7Ci19Ci0KLXZvaWQgR0xYVHJhbnNwb3J0U3Vy
ZmFjZTo6c2V0R2VvbWV0cnkoY29uc3QgSW50UmVjdCYgbmV3UmVjdCkKLXsKLSAgICBHTFBsYXRm
b3JtU3VyZmFjZTo6c2V0R2VvbWV0cnkobmV3UmVjdCk7Ci0gICAgaW50IHdpZHRoID0gbmV3UmVj
dC53aWR0aCgpOwotICAgIGludCBoZWlnaHQgPSBuZXdSZWN0LmhlaWdodCgpOwotICAgIFhSZXNp
emVXaW5kb3coc2hhcmVkRGlzcGxheSgpLCBtX2RyYXdhYmxlLCB3aWR0aCwgaGVpZ2h0KTsKLX0K
LQotdm9pZCBHTFhUcmFuc3BvcnRTdXJmYWNlOjppbml0aWFsaXplKCkKLXsKLSAgICBEaXNwbGF5
KiBkaXNwbGF5ID0gc2hhcmVkRGlzcGxheSgpOwotICAgIEdMWEZCQ29uZmlnIGNvbmZpZyA9IHRy
YW5zcG9ydFN1cmZhY2VDb25maWd1cmF0aW9uKCk7Ci0gICAgaWYgKCFjb25maWcpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFhWaXN1YWxJbmZvKiB2aXNJbmZvID0gdmlzdWFsSW5mbygpOwotICAg
IGlmICghdmlzSW5mbykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQ29sb3JtYXAgY21hcCA9IFhD
cmVhdGVDb2xvcm1hcChkaXNwbGF5LCB4V2luZG93KCksIHZpc0luZm8tPnZpc3VhbCwgQWxsb2NO
b25lKTsKLSAgICBYU2V0V2luZG93QXR0cmlidXRlcyBhdHRyaWJ1dGU7Ci0gICAgYXR0cmlidXRl
LmJhY2tncm91bmRfcGl4ZWwgPSBXaGl0ZVBpeGVsKGRpc3BsYXksIDApOwotICAgIGF0dHJpYnV0
ZS5ib3JkZXJfcGl4ZWwgPSBCbGFja1BpeGVsKGRpc3BsYXksIDApOwotICAgIGF0dHJpYnV0ZS5j
b2xvcm1hcCA9IGNtYXA7Ci0gICAgbV9kcmF3YWJsZSAgPSBYQ3JlYXRlV2luZG93KGRpc3BsYXks
IHhXaW5kb3coKSwgMCwgMCwgMSwgMSwgMCwgdmlzSW5mby0+ZGVwdGgsIElucHV0T3V0cHV0LCB2
aXNJbmZvLT52aXN1YWwsIENXQmFja1BpeGVsIHwgQ1dCb3JkZXJQaXhlbCB8IENXQ29sb3JtYXAs
ICZhdHRyaWJ1dGUpOwotICAgIGlmICghbV9kcmF3YWJsZSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgWFNldFdpbmRvd0JhY2tncm91bmRQaXhtYXAoZGlzcGxheSwgbV9kcmF3YWJsZSwgMCk7Ci0g
ICAgWENvbXBvc2l0ZVJlZGlyZWN0V2luZG93KGRpc3BsYXksIG1fZHJhd2FibGUsIENvbXBvc2l0
ZVJlZGlyZWN0TWFudWFsKTsKLQotICAgIGlmIChpc1hSZW5kZXJFeHRlbnNpb25TdXBwb3J0ZWQo
KSkKLSAgICAgICAgWE1hcFdpbmRvdyhkaXNwbGF5LCBtX2RyYXdhYmxlKTsKLX0KLQotdm9pZCBH
TFhUcmFuc3BvcnRTdXJmYWNlOjpkZXN0cm95KCkKLXsKLSAgICBmcmVlUmVzb3VyY2VzKCk7Ci0g
ICAgR0xQbGF0Zm9ybVN1cmZhY2U6OmRlc3Ryb3koKTsKLX0KLQotdm9pZCBHTFhUcmFuc3BvcnRT
dXJmYWNlOjpmcmVlUmVzb3VyY2VzKCkKLXsKLSAgICBpZiAoIW1fZHJhd2FibGUpCi0gICAgICAg
IHJldHVybjsKLQotICAgIEdMUGxhdGZvcm1TdXJmYWNlOjpkZXN0cm95KCk7Ci0gICAgRGlzcGxh
eSogZGlzcGxheSA9IHNoYXJlZERpc3BsYXkoKTsKLSAgICBpZiAoIWRpc3BsYXkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFhEZXN0cm95V2luZG93KGRpc3BsYXksIG1fZHJhd2FibGUpOwotICAg
IG1fZHJhd2FibGUgPSAwOwotfQotCi1HTFhQQnVmZmVyOjpHTFhQQnVmZmVyKCkKLSAgICA6IEdM
WFN1cmZhY2UoKQotewotICAgIGluaXRpYWxpemUoKTsKLX0KLQotR0xYUEJ1ZmZlcjo6fkdMWFBC
dWZmZXIoKQotewotfQotCi12b2lkIEdMWFBCdWZmZXI6OmluaXRpYWxpemUoKQotewotICAgIERp
c3BsYXkqIGRpc3BsYXkgPSBzaGFyZWREaXNwbGF5KCk7Ci0gICAgR0xYRkJDb25maWcgY29uZmln
ID0gcEJ1ZmZlckNvbmZpZ3VyYXRpb24oKTsKLSAgICBpZiAoIWNvbmZpZykKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgbV9kcmF3YWJsZSA9IGdsWENyZWF0ZVBidWZmZXIoZGlzcGxheSwgY29uZmln
LCBwYnVmZmVyQXR0cmlidXRlcyk7Ci19Ci0KLVBsYXRmb3JtU3VyZmFjZUNvbmZpZyBHTFhQQnVm
ZmVyOjpjb25maWd1cmF0aW9uKCkKLXsKLSAgICByZXR1cm4gcEJ1ZmZlckNvbmZpZ3VyYXRpb24o
KTsKLX0KLQotdm9pZCBHTFhQQnVmZmVyOjpkZXN0cm95KCkKLXsKLSAgICBmcmVlUmVzb3VyY2Vz
KCk7Ci19Ci0KLXZvaWQgR0xYUEJ1ZmZlcjo6ZnJlZVJlc291cmNlcygpCi17Ci0gICAgaWYgKCFt
X2RyYXdhYmxlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBHTFBsYXRmb3JtU3VyZmFjZTo6ZGVz
dHJveSgpOwotICAgIERpc3BsYXkqIGRpc3BsYXkgPSBzaGFyZWREaXNwbGF5KCk7Ci0gICAgaWYg
KCFkaXNwbGF5KQotICAgICAgICByZXR1cm47Ci0KLSAgICBnbFhEZXN0cm95UGJ1ZmZlcihkaXNw
bGF5LCBtX2RyYXdhYmxlKTsKLSAgICBtX2RyYXdhYmxlID0gMDsKLX0KLQotfQotCi0jZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2ds
eC9HTFhTdXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9nbHgvR0xYU3VyZmFjZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDcxMzk3
ZDllYWI1ZDJmZjJlMDMzZWJlMGYxZmRhNjBhMGZlMzQ4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3N1cmZhY2VzL2dseC9HTFhTdXJmYWNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyODggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
LSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBHTFhTdXJmYWNlX2gKLSNkZWZpbmUgR0xY
U3VyZmFjZV9oCi0KLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIEhBVkUoR0xY
KQotCi0jaW5jbHVkZSAiR0xQbGF0Zm9ybVN1cmZhY2UuaCIKLQotI2luY2x1ZGUgPFgxMS9leHRl
bnNpb25zL1hjb21wb3NpdGUuaD4KLSNpbmNsdWRlIDxYMTEvZXh0ZW5zaW9ucy9YcmVuZGVyLmg+
Ci0jaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
Y2xhc3MgU2hhcmVkWDExUmVzb3VyY2VzIDogcHVibGljIFdURjo6UmVmQ291bnRlZEJhc2Ugewot
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNoYXJlZFgxMVJlc291cmNlcyk7Ci0KLXB1YmxpYzoK
LSAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFyZWRYMTFSZXNvdXJjZXM+IGNyZWF0ZSgpCi0gICAg
ewotICAgICAgICBpZiAoIW1fc3RhdGljU2hhcmVkUmVzb3VyY2UpCi0gICAgICAgICAgICBtX3N0
YXRpY1NoYXJlZFJlc291cmNlID0gbmV3IFNoYXJlZFgxMVJlc291cmNlcygpOwotICAgICAgICBl
bHNlCi0gICAgICAgICAgICBtX3N0YXRpY1NoYXJlZFJlc291cmNlLT5yZWYoKTsKLQotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobV9zdGF0aWNTaGFyZWRSZXNvdXJjZSk7Ci0gICAgfQotCi0gICAg
dm9pZCBkZXJlZigpCi0gICAgewotICAgICAgICBpZiAoZGVyZWZCYXNlKCkpIHsKLSAgICAgICAg
ICAgIG1fc3RhdGljU2hhcmVkUmVzb3VyY2UgPSAwOwotICAgICAgICAgICAgZGVsZXRlIHRoaXM7
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBXaW5kb3cgZ2V0WFdpbmRvdygpCi0gICAgewotICAg
ICAgICBpZiAoIW1fd2luZG93KSB7Ci0gICAgICAgICAgICBEaXNwbGF5KiBkcHkgPSBkaXNwbGF5
KCk7Ci0gICAgICAgICAgICBYU2V0V2luZG93QXR0cmlidXRlcyBhdHRyaWJ1dGVzOwotICAgICAg
ICAgICAgYXR0cmlidXRlcy5vdmVycmlkZV9yZWRpcmVjdCA9IHRydWU7Ci0gICAgICAgICAgICBt
X3dpbmRvdyA9IFhDcmVhdGVTaW1wbGVXaW5kb3coZHB5LCBYRGVmYXVsdFJvb3RXaW5kb3coZHB5
KSwgLTEsIC0xLCAxLCAxLCAwLCBCbGFja1BpeGVsKGRweSwgMCksIFdoaXRlUGl4ZWwoZHB5LCAw
KSk7Ci0gICAgICAgICAgICAvLyBGcm9tIGh0dHA6Ly90cm9uY2hlLmNvbS9ndWkveC94bGliL3dp
bmRvdy9hdHRyaWJ1dGVzLwotICAgICAgICAgICAgWENoYW5nZVdpbmRvd0F0dHJpYnV0ZXMoZHB5
LCBtX3dpbmRvdywgQ1dPdmVycmlkZVJlZGlyZWN0LCAmYXR0cmlidXRlcyk7Ci0gICAgICAgICAg
ICBYTWFwV2luZG93KGRweSwgbV93aW5kb3cpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJu
IG1fd2luZG93OwotICAgIH0KLQotICAgIERpc3BsYXkqIGRpc3BsYXkoKQotICAgIHsKLSAgICAg
ICAgaWYgKCFtX2Rpc3BsYXkpCi0gICAgICAgICAgICBtX2Rpc3BsYXkgPSBYT3BlbkRpc3BsYXko
MCk7Ci0KLSAgICAgICAgcmV0dXJuIG1fZGlzcGxheTsKLSAgICB9Ci0KLSAgICBYVmlzdWFsSW5m
byogdmlzdWFsSW5mbygpCi0gICAgewotICAgICAgICBpZiAoIW1fVmlzdWFsSW5mbykKLSAgICAg
ICAgICAgIHN1cmZhY2VDb250ZXh0Q29uZmlnKCk7Ci0KLSAgICAgICAgcmV0dXJuIG1fVmlzdWFs
SW5mbzsKLSAgICB9Ci0KLSAgICBHTFhGQkNvbmZpZyBjcmVhdGVDb25maWcoY29uc3QgaW50IGF0
dHJpYnV0ZXNbXSkKLSAgICB7Ci0gICAgICAgIGludCBudW1SZXR1cm5lZDsKLSAgICAgICAgbV9W
aXN1YWxJbmZvID0gMDsKLSAgICAgICAgR0xYRkJDb25maWcqIHRlbXAgPSBnbFhDaG9vc2VGQkNv
bmZpZyhkaXNwbGF5KCksIERlZmF1bHRTY3JlZW4oZGlzcGxheSgpKSwgYXR0cmlidXRlcywgJm51
bVJldHVybmVkKTsKLQotICAgICAgICBpZiAoIW51bVJldHVybmVkKQotICAgICAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICAgICAgR0xYRkJDb25maWcgc2VsZWN0ZWRDb25maWcgPSAwOwotICAgICAg
ICBib29sIGZvdW5kID0gZmFsc2U7Ci0KLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1S
ZXR1cm5lZDsgKytpKSB7Ci0gICAgICAgICAgICBtX1Zpc3VhbEluZm8gPSBnbFhHZXRWaXN1YWxG
cm9tRkJDb25maWcoZGlzcGxheSgpLCB0ZW1wW2ldKTsKLSAgICAgICAgICAgIGlmICghbV9WaXN1
YWxJbmZvKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBpZiAobV9z
dXBwb3J0c1hSZW5kZXJFeHRlbnNpb24pIHsKLSAgICAgICAgICAgICAgICBYUmVuZGVyUGljdEZv
cm1hdCogZm9ybWF0ID0gWFJlbmRlckZpbmRWaXN1YWxGb3JtYXQoZGlzcGxheSgpLCBtX1Zpc3Vh
bEluZm8tPnZpc3VhbCk7Ci0gICAgICAgICAgICAgICAgaWYgKGZvcm1hdCAmJiBmb3JtYXQtPmRp
cmVjdC5hbHBoYU1hc2sgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29uZmln
ID0gdGVtcFtpXTsKLSAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2Ug
aWYgKG1fVmlzdWFsSW5mby0+ZGVwdGggPT0gMzIpIHsKLSAgICAgICAgICAgICAgICBzZWxlY3Rl
ZENvbmZpZyA9IHRlbXBbaV07Ci0gICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOwotICAgICAg
ICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRGlkIG5vdCBmaW5kIGFueSB2aXN1YWwg
c3VwcG9ydGluZyBhbHBoYSwgc2VsZWN0IHRoZSBmaXJzdCBhdmFpbGFibGUgY29uZmlnLgotICAg
ICAgICBpZiAoIWZvdW5kKSB7Ci0gICAgICAgICAgICBzZWxlY3RlZENvbmZpZyA9IHRlbXBbMF07
Ci0gICAgICAgICAgICBtX1Zpc3VhbEluZm8gPSBnbFhHZXRWaXN1YWxGcm9tRkJDb25maWcobV9k
aXNwbGF5LCB0ZW1wWzBdKTsKLSAgICAgICAgfQotCi0gICAgICAgIFhGcmVlKHRlbXApOwotCi0g
ICAgICAgIHJldHVybiBzZWxlY3RlZENvbmZpZzsKLSAgICB9Ci0KLSAgICBHTFhGQkNvbmZpZyBw
QnVmZmVyQ29udGV4dENvbmZpZygpCi0gICAgewotICAgICAgICBpZiAoIW1fcGJ1ZmZlcmZiQ29u
ZmlnKSB7Ci0gICAgICAgICAgICBzdGF0aWMgY29uc3QgaW50IGF0dHJpYnV0ZXNbXSA9IHsKLSAg
ICAgICAgICAgICAgICBHTFhfTEVWRUwsIDAsCi0gICAgICAgICAgICAgICAgR0xYX0RSQVdBQkxF
X1RZUEUsIEdMWF9QQlVGRkVSX0JJVCwKLSAgICAgICAgICAgICAgICBHTFhfUkVOREVSX1RZUEUs
ICAgR0xYX1JHQkFfQklULAotICAgICAgICAgICAgICAgIEdMWF9SRURfU0laRSwgICAgICAxLAot
ICAgICAgICAgICAgICAgIEdMWF9HUkVFTl9TSVpFLCAgICAxLAotICAgICAgICAgICAgICAgIEdM
WF9CTFVFX1NJWkUsICAgICAxLAotICAgICAgICAgICAgICAgIEdMWF9ET1VCTEVCVUZGRVIsICBH
TF9GQUxTRSwKLSAgICAgICAgICAgICAgICBOb25lCi0gICAgICAgICAgICB9OwotCi0gICAgICAg
ICAgICBpbnQgbnVtUmV0dXJuZWQ7Ci0gICAgICAgICAgICBHTFhGQkNvbmZpZyogdGVtcCA9IGds
WENob29zZUZCQ29uZmlnKGRpc3BsYXkoKSwgRGVmYXVsdFNjcmVlbihkaXNwbGF5KCkpLCBhdHRy
aWJ1dGVzLCAmbnVtUmV0dXJuZWQpOwotICAgICAgICAgICAgaWYgKG51bVJldHVybmVkKQotICAg
ICAgICAgICAgICAgIG1fcGJ1ZmZlcmZiQ29uZmlnID0gdGVtcFswXTsKLSAgICAgICAgICAgIFhG
cmVlKHRlbXApOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG1fcGJ1ZmZlcmZiQ29uZmln
OwotICAgIH0KLQotICAgIEdMWEZCQ29uZmlnIHN1cmZhY2VDb250ZXh0Q29uZmlnKCkKLSAgICB7
Ci0gICAgICAgIGlmICghbV9zdXJmYWNlQ29udGV4dGZiQ29uZmlnKSB7Ci0gICAgICAgICAgICBz
dGF0aWMgaW50IGF0dHJpYnV0ZXNbXSA9IHsKLSAgICAgICAgICAgICAgICBHTFhfTEVWRUwsIDAs
Ci0gICAgICAgICAgICAgICAgR0xYX0RSQVdBQkxFX1RZUEUsIEdMWF9XSU5ET1dfQklULAotICAg
ICAgICAgICAgICAgIEdMWF9SRU5ERVJfVFlQRSwgICBHTFhfUkdCQV9CSVQsCi0gICAgICAgICAg
ICAgICAgR0xYX1JFRF9TSVpFLCAgICAgIDEsCi0gICAgICAgICAgICAgICAgR0xYX0dSRUVOX1NJ
WkUsICAgIDEsCi0gICAgICAgICAgICAgICAgR0xYX0JMVUVfU0laRSwgICAgIDEsCi0gICAgICAg
ICAgICAgICAgR0xYX0FMUEhBX1NJWkUsICAgIDEsCi0gICAgICAgICAgICAgICAgR0xYX0RFUFRI
X1NJWkUsICAgIDEsCi0gICAgICAgICAgICAgICAgR0xYX1hfVklTVUFMX1RZUEUsIEdMWF9UUlVF
X0NPTE9SLAotICAgICAgICAgICAgICAgIEdMWF9ET1VCTEVCVUZGRVIsICBUcnVlLAotICAgICAg
ICAgICAgICAgIE5vbmUKLSAgICAgICAgICAgIH07Ci0KLSAgICAgICAgICAgIGludCBldmVudEJh
c2VwLCBlcnJvckJhc2VwOwotICAgICAgICAgICAgbV9zdXBwb3J0c1hSZW5kZXJFeHRlbnNpb24g
PSBYUmVuZGVyUXVlcnlFeHRlbnNpb24oZGlzcGxheSgpLCAmZXZlbnRCYXNlcCwgJmVycm9yQmFz
ZXApOwotCi0gICAgICAgICAgICBtX3N1cmZhY2VDb250ZXh0ZmJDb25maWcgPSBjcmVhdGVDb25m
aWcoYXR0cmlidXRlcyk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gbV9zdXJmYWNlQ29u
dGV4dGZiQ29uZmlnOwotICAgIH0KLQotICAgIGJvb2wgaXNYUmVuZGVyRXh0ZW5zaW9uU3VwcG9y
dGVkKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX3N1cHBvcnRzWFJlbmRlckV4dGVuc2lvbjsK
LSAgICB9Ci0KLXByaXZhdGU6Ci0gICAgU2hhcmVkWDExUmVzb3VyY2VzKCkKLSAgICAgICAgOiBt
X3N1cHBvcnRzWFJlbmRlckV4dGVuc2lvbihmYWxzZSkKLSAgICAgICAgLCBtX21hcmtGb3JEZWxl
dGlvbihmYWxzZSkKLSAgICAgICAgLCBtX3dpbmRvdygwKQotICAgICAgICAsIG1fZGlzcGxheSgw
KQotICAgICAgICAsIG1fcGJ1ZmZlcmZiQ29uZmlnKDApCi0gICAgICAgICwgbV9zdXJmYWNlQ29u
dGV4dGZiQ29uZmlnKDApCi0gICAgICAgICwgbV9WaXN1YWxJbmZvKDApCi0gICAgewotICAgIH0K
LQotICAgIH5TaGFyZWRYMTFSZXNvdXJjZXMoKQotICAgIHsKLSAgICAgICAgaWYgKCFtX2Rpc3Bs
YXkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgaWYgKG1fd2luZG93KSB7Ci0gICAg
ICAgICAgICBYVW5tYXBXaW5kb3cobV9kaXNwbGF5LCBtX3dpbmRvdyk7Ci0gICAgICAgICAgICBY
RGVzdHJveVdpbmRvdyhtX2Rpc3BsYXksIG1fd2luZG93KTsKLSAgICAgICAgICAgIG1fd2luZG93
ID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtX3BidWZmZXJmYkNvbmZpZykKLSAgICAg
ICAgICAgIG1fcGJ1ZmZlcmZiQ29uZmlnID0gMDsKLQotICAgICAgICBpZiAobV9zdXJmYWNlQ29u
dGV4dGZiQ29uZmlnKQotICAgICAgICAgICAgbV9zdXJmYWNlQ29udGV4dGZiQ29uZmlnID0gMDsK
LQotICAgICAgICBpZiAobV9WaXN1YWxJbmZvKSB7Ci0gICAgICAgICAgICBYRnJlZShtX1Zpc3Vh
bEluZm8pOwotICAgICAgICAgICAgbV9WaXN1YWxJbmZvID0gMDsKLSAgICAgICAgfQotCi0gICAg
ICAgIFhDbG9zZURpc3BsYXkobV9kaXNwbGF5KTsKLSAgICAgICAgbV9kaXNwbGF5ID0gMDsKLSAg
ICB9Ci0KLSAgICBzdGF0aWMgU2hhcmVkWDExUmVzb3VyY2VzKiBtX3N0YXRpY1NoYXJlZFJlc291
cmNlOwotICAgIGJvb2wgbV9zdXBwb3J0c1hSZW5kZXJFeHRlbnNpb247Ci0gICAgYm9vbCBtX21h
cmtGb3JEZWxldGlvbjsKLSAgICBXaW5kb3cgbV93aW5kb3c7Ci0gICAgRGlzcGxheSogbV9kaXNw
bGF5OwotICAgIEdMWEZCQ29uZmlnIG1fcGJ1ZmZlcmZiQ29uZmlnOwotICAgIEdMWEZCQ29uZmln
IG1fc3VyZmFjZUNvbnRleHRmYkNvbmZpZzsKLSAgICBYVmlzdWFsSW5mbyogbV9WaXN1YWxJbmZv
OwotfTsKLQotY2xhc3MgR0xYU3VyZmFjZSA6IHB1YmxpYyBHTFBsYXRmb3JtU3VyZmFjZSB7Ci0g
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoR0xYU3VyZmFjZSk7Ci0KLXB1YmxpYzoKLSAgICBHTFhT
dXJmYWNlKCk7Ci0gICAgdmlydHVhbCB+R0xYU3VyZmFjZSgpOwotCi1wcm90ZWN0ZWQ6Ci0gICAg
WFZpc3VhbEluZm8qIHZpc3VhbEluZm8oKTsKLSAgICBXaW5kb3cgeFdpbmRvdygpOwotICAgIEdM
WEZCQ29uZmlnIHBCdWZmZXJDb25maWd1cmF0aW9uKCk7Ci0gICAgR0xYRkJDb25maWcgdHJhbnNw
b3J0U3VyZmFjZUNvbmZpZ3VyYXRpb24oKTsKLSAgICBib29sIGlzWFJlbmRlckV4dGVuc2lvblN1
cHBvcnRlZCgpOwotCi1wcml2YXRlOgotICAgIFJlZlB0cjxTaGFyZWRYMTFSZXNvdXJjZXM+IG1f
c2hhcmVkUmVzb3VyY2VzOwotfTsKLQotY2xhc3MgR0xYVHJhbnNwb3J0U3VyZmFjZSA6IHB1Ymxp
YyBHTFhTdXJmYWNlIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShHTFhUcmFuc3BvcnRTdXJm
YWNlKTsKLQotcHVibGljOgotICAgIEdMWFRyYW5zcG9ydFN1cmZhY2UoKTsKLSAgICB2aXJ0dWFs
IH5HTFhUcmFuc3BvcnRTdXJmYWNlKCk7Ci0gICAgUGxhdGZvcm1TdXJmYWNlQ29uZmlnIGNvbmZp
Z3VyYXRpb24oKTsKLSAgICB2b2lkIHN3YXBCdWZmZXJzKCk7Ci0gICAgdm9pZCBzZXRHZW9tZXRy
eShjb25zdCBJbnRSZWN0JiBuZXdSZWN0KTsKLSAgICB2b2lkIGRlc3Ryb3koKTsKLQotcHJpdmF0
ZToKLSAgICB2b2lkIGluaXRpYWxpemUoKTsKLSAgICB2b2lkIGZyZWVSZXNvdXJjZXMoKTsKLX07
Ci0KLWNsYXNzIEdMWFBCdWZmZXIgOiBwdWJsaWMgR0xYU3VyZmFjZSB7Ci0gICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoR0xYUEJ1ZmZlcik7Ci0KLXB1YmxpYzoKLSAgICBHTFhQQnVmZmVyKCk7Ci0g
ICAgdmlydHVhbCB+R0xYUEJ1ZmZlcigpOwotICAgIFBsYXRmb3JtU3VyZmFjZUNvbmZpZyBjb25m
aWd1cmF0aW9uKCk7Ci0gICAgdm9pZCBkZXN0cm95KCk7Ci0KLXByaXZhdGU6Ci0gICAgdm9pZCBp
bml0aWFsaXplKCk7Ci0gICAgdm9pZCBmcmVlUmVzb3VyY2VzKCk7Ci19OwotCi19Ci0KLSNlbmRp
ZgotCi0jZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>