<?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>239058</bug_id>
          
          <creation_ts>2022-04-10 19:49:18 -0700</creation_ts>
          <short_desc>[WebGPU] Use checked arithmetic</short_desc>
          <delta_ts>2022-04-11 20:01:16 -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>WebGPU</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>dino</cc>
    
    <cc>djg</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1860187</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-10 19:49:18 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860188</commentid>
    <comment_count>1</comment_count>
      <attachid>457226</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-10 19:55:07 -0700</bug_when>
    <thetext>Created attachment 457226
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860189</commentid>
    <comment_count>2</comment_count>
      <attachid>457227</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-10 19:56:38 -0700</bug_when>
    <thetext>Created attachment 457227
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860190</commentid>
    <comment_count>3</comment_count>
      <attachid>457228</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-10 20:31:26 -0700</bug_when>
    <thetext>Created attachment 457228
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860232</commentid>
    <comment_count>4</comment_count>
      <attachid>457228</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-11 02:13:51 -0700</bug_when>
    <thetext>Comment on attachment 457228
Patch

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

&gt; Source/WebGPU/WebGPU/Buffer.mm:180
&gt; +    auto endOffset = CheckedSize(offset) + CheckedSize(rangeSize);

auto endOffset = checkedSum&lt;size_t&gt;(offset, rangeSize);

&gt; Source/WebGPU/WebGPU/Buffer.mm:194
&gt;      auto rangeSize = size;

here it would be more more appropriate to have the rangeSize local as a checked.

so you&apos;d do:
auto rangeSize = checkedRangeSize(m_size, size, offset)

and implementation would use Checked instead of static asserts. The static asserts are a bit confusing, as the first one asserts a relatively well-known language-level fact (unsigned is unsigned) and the second one asserts a language-level fact that &quot;technically may not always hold&quot;. 
E.g. static asserting a user-level construct is &quot;assert that user is holding this correctly&quot;, which is ok.
 When one starts to assert language level constructs, it is like &quot;assert that we live in the universe we think we live in&quot;, which starts to get strange.

&gt; Source/WebGPU/WebGPU/Buffer.mm:228
&gt; +    auto end = CheckedUint64(CheckedSize(offset) + CheckedSize(rangeSize));

I think if your m_size is uint64, you are interested in the calculation in that domain.
so you could just do
auto end = checkedSum&lt;uint64_t&gt;(offset, rangeSize)

&gt; Source/WebGPU/WebGPU/Texture.mm:2783
&gt; +        auto bytesBeforeLastImage = bytesPerImage * (CheckedUint32(copyExtent.depthOrArrayLayers) - 1);

Your patch is mostly written in style of
 &quot;cast all the elements of an equation into checked&quot;
However, there as still some that are written in style of 
 &quot;cast only the innermost elements into checked and let the precedence rules and implicit type conversion cast every other element correctly&quot;

You do the latter since you don&apos;t want to explicitly cast - 1 to - CheckedUint32(1).
I&apos;d think it&apos;s a bit more eloquent to use the latter rule and trust that when verifying and writing this, the developers know the precedence rules

&gt; Source/WebGPU/WebGPU/Texture.mm:2793
&gt; +            requiredBytesInCopy += bytesInLastRow.value();

maybe doesn&apos;t need .value()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860535</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-11 20:00:29 -0700</bug_when>
    <thetext>Committed r292757 (249541@trunk): &lt;https://commits.webkit.org/249541@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860536</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-11 20:01:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/91603903&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457226</attachid>
            <date>2022-04-10 19:55:07 -0700</date>
            <delta_ts>2022-04-10 19:56:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>28895</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDYxN2NkZWRmNDNkYmM4NWM1OGJkY2IxNzE5MDRjMWMyY2NjMGZjNWIKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTdW4gQXByIDEw
IDE5OjU0OjQxIDIwMjIgLTA3MDAKCiAgICBDaGVja2VkIGFyaXRobWV0aWMKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4
IDg1MjI2MjEyMTM2Ny4uYTNhMzVjN2Q1Y2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisy
MDIyLTA0LTEwICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dlYkdQVV0gVXNlIGNoZWNrZWQgYXJpdGhtZXRpYworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MDU4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgaGF2ZSBhIGJ1bmNoIG9mIHBsYWNlcyB3
aGVyZSBvdmVyZmxvdyBjYW4gb2NjdXIuCisKKyAgICAgICAgTHVja2lseSwgd2UgY2FuIGp1c3Qg
ZGV0ZWN0IG92ZXJmbG93IGluc2lkZSB0aGUgdmFsaWRhdGlvbiBmdW5jdGlvbnMsIGFuZCBub3Qg
aGF2ZQorICAgICAgICB0byBkbyBhbnkgaW5zaWRlIHRoZSBjb2RlIHRoYXQgY3JlYXRlcyBwbGF0
Zm9ybSB0eXBlcyAoTlNVSW50ZWdlciwgZXRjLikuIFRoaXMgaXMKKyAgICAgICAgYmVjYXVzZSBp
ZiB0aGUgdmFsaWRhdGlvbiBjb2RlIHN1Y2NlZWRzLCB0aGVuIHdlIGFyZSBndWFyYW50ZWVkIHRo
YXQgdGhlIGNhc3QgdG8KKyAgICAgICAgTlNVSW50ZWdlcnMgd2lsbCBzdWNjZWVkLiBUaGlzIGlz
IGJlY2F1c2UgcmFuZ2VzIGluIGEgcmVzb3VyY2UgYXJlIGNoZWNrZWQgYWdhaW5zdAorICAgICAg
ICB0aGUgc2l6ZSBvZiB0aGUgcmVzb3VyY2UsIGFuZCB0aGUgc2l6ZSBvZiB0aGUgcmVzb3VyY2Ug
aGFzIGJlZW4gY2hlY2tlZCBhZ2FpbnN0CisgICAgICAgIHBsYXRmb3JtIG1heGltdW1zLCB3aGlj
aCBhcmUgZ3VhcmFudGVlZCB0byBiZSBzbWFsbGVyIHRoYW4gdGhlIGxhcmdlc3QgTlNVSW50ZWdl
ci4KKworICAgICAgICAqIFdlYkdQVS9CaW5kR3JvdXAubW06CisgICAgICAgIChXZWJHUFU6OkRl
dmljZTo6Y3JlYXRlQmluZEdyb3VwKToKKyAgICAgICAgKiBXZWJHUFUvQnVmZmVyLm1tOgorICAg
ICAgICAoV2ViR1BVOjpCdWZmZXI6OnZhbGlkYXRlR2V0TWFwcGVkUmFuZ2UgY29uc3QpOgorICAg
ICAgICAoV2ViR1BVOjpCdWZmZXI6OmdldE1hcHBlZFJhbmdlKToKKyAgICAgICAgKFdlYkdQVTo6
QnVmZmVyOjp2YWxpZGF0ZU1hcEFzeW5jIGNvbnN0KToKKyAgICAgICAgKFdlYkdQVTo6QnVmZmVy
OjptYXBBc3luYyk6CisgICAgICAgICogV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tOgorICAgICAg
ICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6dmFsaWRhdGVDb3B5QnVmZmVyVG9CdWZmZXIpOgor
ICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZSk6Cisg
ICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKToKKyAg
ICAgICAgKFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKToKKyAg
ICAgICAgKFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6OnZhbGlkYXRlQ2xlYXJCdWZmZXIpOgorICAg
ICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6Y2xlYXJCdWZmZXIpOgorICAgICAgICAqIFdl
YkdQVS9RdWV1ZS5tbToKKyAgICAgICAgKFdlYkdQVTo6UXVldWU6OnZhbGlkYXRlV3JpdGVCdWZm
ZXIgY29uc3QpOgorICAgICAgICAoV2ViR1BVOjpRdWV1ZTo6d3JpdGVUZXh0dXJlKToKKyAgICAg
ICAgKiBXZWJHUFUvVGV4dHVyZS5oOgorICAgICAgICAqIFdlYkdQVS9UZXh0dXJlLm1tOgorICAg
ICAgICAoV2ViR1BVOjpUZXh0dXJlOjpyZXNvbHZlVGV4dHVyZVZpZXdEZXNjcmlwdG9yRGVmYXVs
dHMgY29uc3QpOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlOjp2YWxpZGF0ZUNyZWF0ZVZpZXcg
Y29uc3QpOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlOjpjcmVhdGVWaWV3KToKKyAgICAgICAg
KFdlYkdQVTo6VGV4dHVyZTo6dmFsaWRhdGVUZXh0dXJlQ29weVJhbmdlKToKKyAgICAgICAgKFdl
YkdQVTo6VGV4dHVyZTo6dmFsaWRhdGVMaW5lYXJUZXh0dXJlRGF0YSk6CisKIDIwMjItMDQtMTAg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2Vi
R1BVXSBXZWJHUFUgc3RyaW5ncyBhcmUgVVRGLTgsIG5vdCBMYXRpbi0xCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXAubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9C
aW5kR3JvdXAubW0KaW5kZXggMThiNGU4ZDE4NzQ4Li42M2RjNTZjNWYyOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9CaW5kR3JvdXAubW0KQEAgLTU1LDYgKzU1LDggQEAgUmVmPEJpbmRHcm91cD4gRGV2aWNl
OjpjcmVhdGVCaW5kR3JvdXAoY29uc3QgV0dQVUJpbmRHcm91cERlc2NyaXB0b3ImIGRlc2NyaXB0
b3IKICAgICBpZiAoZGVzY3JpcHRvci5uZXh0SW5DaGFpbikKICAgICAgICAgcmV0dXJuIEJpbmRH
cm91cDo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiAKKyAgICAvLyBGSVhNRTogVmFsaWRhdGUgdGhp
cyBhY2NvcmRpbmcgdG8gdGhlIHNwZWMuCisKICAgICBjb25zdCBCaW5kR3JvdXBMYXlvdXQmIGJp
bmRHcm91cExheW91dCA9IFdlYkdQVTo6ZnJvbUFQSShkZXNjcmlwdG9yLmxheW91dCk7CiAKICAg
ICAvLyBGSVhNRShQRVJGT1JNQU5DRSk6IERvbid0IGFsbG9jYXRlIDMgbmV3IGJ1ZmZlcnMgZm9y
IGV2ZXJ5IGJpbmQgZ3JvdXAuCkBAIC05MSw3ICs5Myw2IEBAIFJlZjxCaW5kR3JvdXA+IERldmlj
ZTo6Y3JlYXRlQmluZEdyb3VwKGNvbnN0IFdHUFVCaW5kR3JvdXBEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yCiAKICAgICAgICAgaWYgKGJ1ZmZlcklzUHJlc2VudCkgewogICAgICAgICAgICAgaWQ8TVRM
QnVmZmVyPiBidWZmZXIgPSBXZWJHUFU6OmZyb21BUEkoZW50cnkuYnVmZmVyKS5idWZmZXIoKTsK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBjYXN0cy4KICAgICAgICAgICAgIFt2
ZXJ0ZXhBcmd1bWVudEVuY29kZXIgc2V0QnVmZmVyOmJ1ZmZlciBvZmZzZXQ6c3RhdGljX2Nhc3Q8
TlNVSW50ZWdlcj4oZW50cnkub2Zmc2V0KSBhdEluZGV4OmVudHJ5LmJpbmRpbmddOwogICAgICAg
ICAgICAgW2ZyYWdtZW50QXJndW1lbnRFbmNvZGVyIHNldEJ1ZmZlcjpidWZmZXIgb2Zmc2V0OnN0
YXRpY19jYXN0PE5TVUludGVnZXI+KGVudHJ5Lm9mZnNldCkgYXRJbmRleDplbnRyeS5iaW5kaW5n
XTsKICAgICAgICAgICAgIFtjb21wdXRlQXJndW1lbnRFbmNvZGVyIHNldEJ1ZmZlcjpidWZmZXIg
b2Zmc2V0OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KGVudHJ5Lm9mZnNldCkgYXRJbmRleDplbnRy
eS5iaW5kaW5nXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbSBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbQppbmRleCBiYTJjYTMxYzg3YTUuLjQ2MmU3
NWI2NGE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLm1tCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1w
b3J0ICJBUElDb252ZXJzaW9ucy5oIgogI2ltcG9ydCAiRGV2aWNlLmgiCisjaW1wb3J0IDx3dGYv
Q2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFt
ZXNwYWNlIFdlYkdQVSB7CkBAIC0xNzYsOSArMTc3LDggQEAgYm9vbCBCdWZmZXI6OnZhbGlkYXRl
R2V0TWFwcGVkUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHJhbmdlU2l6ZSkgY29uc3QKICAg
ICBpZiAob2Zmc2V0IDwgbV9tYXBwaW5nUmFuZ2UuYmVnaW5PZmZzZXQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIC8vIEZJWE1FOiBVc2VkIGNoZWNrZWQgYXJpdGhtZXRpYy4KLSAgICBh
dXRvIGVuZE9mZnNldCA9IG9mZnNldCArIHJhbmdlU2l6ZTsKLSAgICBpZiAoZW5kT2Zmc2V0ID4g
bV9tYXBwaW5nUmFuZ2UuZW5kT2Zmc2V0KQorICAgIGF1dG8gZW5kT2Zmc2V0ID0gQ2hlY2tlZFNp
emUob2Zmc2V0KSArIENoZWNrZWRTaXplKHJhbmdlU2l6ZSk7CisgICAgaWYgKGVuZE9mZnNldC5o
YXNPdmVyZmxvd2VkKCkgfHwgZW5kT2Zmc2V0LnZhbHVlKCkgPiBtX21hcHBpbmdSYW5nZS5lbmRP
ZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX21hcHBlZFJhbmdlcy5v
dmVybGFwcyh7IG9mZnNldCwgZW5kT2Zmc2V0IH0pKQpAQCAtMTkxLDE3ICsxOTEsMTkgQEAgdm9p
ZCogQnVmZmVyOjpnZXRNYXBwZWRSYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSkKIHsK
ICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1YnVmZmVyLWdl
dG1hcHBlZHJhbmdlCiAKLSAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KLSAg
ICBhdXRvIHJhbmdlU2l6ZSA9IHNpemU7Ci0gICAgaWYgKHNpemUgPT0gV0dQVV9XSE9MRV9NQVBf
U0laRSkKLSAgICAgICAgcmFuZ2VTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdGQ6Om1heChz
dGF0aWNfY2FzdDx1aW50NjRfdD4oMCksIG1fc2l6ZSAtIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihv
ZmZzZXQpKSk7CisgICAgQ2hlY2tlZFNpemUgcmFuZ2VTaXplID0gc2l6ZTsKKyAgICBpZiAoc2l6
ZSA9PSBXR1BVX1dIT0xFX01BUF9TSVpFKSB7CisgICAgICAgIGF1dG8gcmVtYWluZGVyID0gQ2hl
Y2tlZFVpbnQ2NChtX3NpemUpIC0gQ2hlY2tlZFVpbnQ2NChvZmZzZXQpOworICAgICAgICBpZiAo
IXJlbWFpbmRlci5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgICAgICByYW5nZVNpemUgPSBzdGQ6
Om1heChzdGF0aWNfY2FzdDx1aW50NjRfdD4oMCksIHJlbWFpbmRlci52YWx1ZSgpKTsKKyAgICB9
CiAKLSAgICBpZiAoIXZhbGlkYXRlR2V0TWFwcGVkUmFuZ2Uob2Zmc2V0LCByYW5nZVNpemUpKSB7
CisgICAgaWYgKHJhbmdlU2l6ZS5oYXNPdmVyZmxvd2VkKCkgfHwgIXZhbGlkYXRlR2V0TWFwcGVk
UmFuZ2Uob2Zmc2V0LCByYW5nZVNpemUudmFsdWUoKSkpIHsKICAgICAgICAgLy8gRklYTUU6ICJ0
aHJvdyBhbiBPcGVyYXRpb25FcnJvciBhbmQgc3RvcC4iCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIG1fbWFwcGVkUmFuZ2VzLmFkZCh7IG9mZnNldCwgb2Zmc2V0ICsgcmFu
Z2VTaXplIH0pOworICAgIG1fbWFwcGVkUmFuZ2VzLmFkZCh7IG9mZnNldCwgb2Zmc2V0ICsgcmFu
Z2VTaXplLnZhbHVlKCkgfSk7CiAgICAgbV9tYXBwZWRSYW5nZXMuY29tcGFjdCgpOwogCiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPihtX2J1ZmZlci5jb250ZW50cykgKyBvZmZzZXQ7CkBA
IC0yMjAsOCArMjIyLDggQEAgYm9vbCBCdWZmZXI6OnZhbGlkYXRlTWFwQXN5bmMoV0dQVU1hcE1v
ZGVGbGFncyBtb2RlLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgcmFuZ2UKICAgICBpZiAocmFuZ2VT
aXplICUgNCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gRklYTUU6IFVzZSBjaGVj
a2VkIGFyaXRobWV0aWMuCi0gICAgaWYgKHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQgKyBy
YW5nZVNpemUpID4gbV9zaXplKQorICAgIGF1dG8gZW5kID0gQ2hlY2tlZFVpbnQ2NChDaGVja2Vk
U2l6ZShvZmZzZXQpICsgQ2hlY2tlZFNpemUocmFuZ2VTaXplKSk7CisgICAgaWYgKGVuZC5oYXNP
dmVyZmxvd2VkKCkgfHwgZW5kLnZhbHVlKCkgPiBtX3NpemUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpVbm1hcHBlZCkKQEAgLTI0NCwxMiArMjQ2
LDE0IEBAIHZvaWQgQnVmZmVyOjptYXBBc3luYyhXR1BVTWFwTW9kZUZsYWdzIG1vZGUsIHNpemVf
dCBvZmZzZXQsIHNpemVfdCBzaXplLCBDb21wbGV0CiB7CiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIu
Z2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdWJ1ZmZlci1tYXBhc3luYwogCi0gICAgLy8gRklYTUU6
IFVzZSBjaGVja2VkIGFyaXRobWV0aWMuCi0gICAgYXV0byByYW5nZVNpemUgPSBzaXplOwotICAg
IGlmIChzaXplID09IFdHUFVfV0hPTEVfTUFQX1NJWkUpCi0gICAgICAgIHJhbmdlU2l6ZSA9IHN0
YXRpY19jYXN0PHNpemVfdD4oc3RkOjptYXgoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDApLCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4obV9zaXplIC0gb2Zmc2V0KSkpOworICAgIENoZWNrZWRTaXplIHJh
bmdlU2l6ZSA9IHNpemU7CisgICAgaWYgKHNpemUgPT0gV0dQVV9XSE9MRV9NQVBfU0laRSkgewor
ICAgICAgICBhdXRvIHJlbWFpbmRlciA9IENoZWNrZWRVaW50NjQobV9zaXplKSAtIENoZWNrZWRV
aW50NjQob2Zmc2V0KTsKKyAgICAgICAgaWYgKCFyZW1haW5kZXIuaGFzT3ZlcmZsb3dlZCgpKQor
ICAgICAgICAgICAgcmFuZ2VTaXplID0gc3RkOjptYXgoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDAp
LCByZW1haW5kZXIudmFsdWUoKSk7CisgICAgfQogCi0gICAgaWYgKCF2YWxpZGF0ZU1hcEFzeW5j
KG1vZGUsIG9mZnNldCwgcmFuZ2VTaXplKSkgeworICAgIGlmIChyYW5nZVNpemUuaGFzT3ZlcmZs
b3dlZCgpIHx8ICF2YWxpZGF0ZU1hcEFzeW5jKG1vZGUsIG9mZnNldCwgcmFuZ2VTaXplLnZhbHVl
KCkpKSB7CiAgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlk
YXRpb24gZmFpbHVyZS4iX3MpOwogCiAgICAgICAgIG1fZGV2aWNlLT5pbnN0YW5jZSgpLnNjaGVk
dWxlV29yayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKQEAgLTI2
Miw3ICsyNjYsNyBAQCB2b2lkIEJ1ZmZlcjo6bWFwQXN5bmMoV0dQVU1hcE1vZGVGbGFncyBtb2Rl
LCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwgQ29tcGxldAogCiAgICAgbV9tYXBNb2RlID0g
bW9kZTsKIAotICAgIG1fZGV2aWNlLT5nZXRRdWV1ZSgpLm9uU3VibWl0dGVkV29ya0RvbmUoMCwg
W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBvZmZzZXQsIHJhbmdlU2l6ZSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oV0dQVVF1ZXVlV29ya0RvbmVTdGF0dXMgc3RhdHVzKSBt
dXRhYmxlIHsKKyAgICBtX2RldmljZS0+Z2V0UXVldWUoKS5vblN1Ym1pdHRlZFdvcmtEb25lKDAs
IFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgb2Zmc2V0LCByYW5nZVNpemUgPSByYW5n
ZVNpemUudmFsdWUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oV0dQVVF1ZXVlV29y
a0RvbmVTdGF0dXMgc3RhdHVzKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMt
Pm1fc3RhdGUgPT0gU3RhdGU6Ok1hcHBpbmdQZW5kaW5nKSB7CiAgICAgICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5tX3N0YXRlID0gU3RhdGU6Ok1hcHBlZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21t
YW5kRW5jb2Rlci5tbQppbmRleCA5Y2EzNjQwMjYwNmQuLjk2MzJiZGMwYTAzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KQEAgLTEyMSwyMSArMTIxLDIwIEBAIGJvb2wg
Q29tbWFuZEVuY29kZXI6OnZhbGlkYXRlQ29weUJ1ZmZlclRvQnVmZmVyKGNvbnN0IEJ1ZmZlciYg
c291cmNlLCB1aW50NjRfdCBzCiAgICAgaWYgKGRlc3RpbmF0aW9uT2Zmc2V0ICUgNCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gRklYTUU6ICIoc291cmNlT2Zmc2V0ICsgc2l6ZSkg
ZG9lcyBub3Qgb3ZlcmZsb3cgYSBHUFVTaXplNjQuIgorICAgIGF1dG8gc291cmNlRW5kID0gQ2hl
Y2tlZFVpbnQ2NChzb3VyY2VPZmZzZXQpICsgQ2hlY2tlZFVpbnQ2NChzaXplKTsKKyAgICBpZiAo
c291cmNlRW5kLmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
Ly8gRklYTUU6ICIoZGVzdGluYXRpb25PZmZzZXQgKyBzaXplKSBkb2VzIG5vdCBvdmVyZmxvdyBh
IEdQVVNpemU2NC4iCisgICAgYXV0byBkZXN0aW5hdGlvbkVuZCA9IENoZWNrZWRVaW50NjQoZGVz
dGluYXRpb25PZmZzZXQpICsgQ2hlY2tlZFVpbnQ2NChzaXplKTsKKyAgICBpZiAoZGVzdGluYXRp
b25FbmQuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBG
SVhNRTogInNvdXJjZS5bW3NpemVdXSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gKHNvdXJj
ZU9mZnNldCArIHNpemUpLiIKLSAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYwot
ICAgIGlmIChzb3VyY2Uuc2l6ZSgpIDwgc291cmNlT2Zmc2V0ICsgc2l6ZSkKKyAgICBpZiAoc291
cmNlLnNpemUoKSA8IHNvdXJjZUVuZC52YWx1ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICAvLyBGSVhNRTogImRlc3RpbmF0aW9uLltbc2l6ZV1dIGlzIGdyZWF0ZXIgdGhhbiBvciBl
cXVhbCB0byAoZGVzdGluYXRpb25PZmZzZXQgKyBzaXplKS4iCi0gICAgLy8gRklYTUU6IFVzZSBj
aGVja2VkIGFyaXRobWV0aWMKLSAgICBpZiAoZGVzdGluYXRpb24uc2l6ZSgpIDwgZGVzdGluYXRp
b25PZmZzZXQgKyBzaXplKQorICAgIGlmIChkZXN0aW5hdGlvbi5zaXplKCkgPCBkZXN0aW5hdGlv
bkVuZC52YWx1ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBGSVhNRTogInNv
dXJjZSBhbmQgZGVzdGluYXRpb24gYXJlIG5vdCB0aGUgc2FtZSBHUFVCdWZmZXIuIgogICAgIGlm
ICgmc291cmNlID09ICZkZXN0aW5hdGlvbikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0y
NTcsNyArMjU2LDYgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZShj
b25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKIAogICAgIE5TVUludGVnZXIg
c291cmNlQnl0ZXNQZXJSb3cgPSBzb3VyY2UubGF5b3V0LmJ5dGVzUGVyUm93OwogCi0gICAgLy8g
RklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMKICAgICBOU1VJbnRlZ2VyIHNvdXJjZUJ5dGVz
UGVySW1hZ2UgPSBzb3VyY2UubGF5b3V0LnJvd3NQZXJJbWFnZSAqIHNvdXJjZS5sYXlvdXQuYnl0
ZXNQZXJSb3c7CiAKICAgICBNVExCbGl0T3B0aW9uIG9wdGlvbnMgPSBNVExCbGl0T3B0aW9uTm9u
ZTsKQEAgLTI4OSw3ICsyODcsNiBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9U
ZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlCdWZmZXImIHNvdXJjZSwgY29ucwogICAgICAgICBh
dXRvIHNvdXJjZVNpemUgPSBNVExTaXplTWFrZSh3aWR0aEZvck1ldGFsLCAxLCAxKTsKICAgICAg
ICAgYXV0byBkZXN0aW5hdGlvbk9yaWdpbiA9IE1UTE9yaWdpbk1ha2UoZGVzdGluYXRpb24ub3Jp
Z2luLngsIDEsIDEpOwogICAgICAgICBmb3IgKHVpbnQzMl90IGxheWVyID0gMDsgbGF5ZXIgPCBj
b3B5U2l6ZS5kZXB0aE9yQXJyYXlMYXllcnM7ICsrbGF5ZXIpIHsKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljLgogICAgICAgICAgICAgYXV0byBzb3VyY2VPZmZz
ZXQgPSBzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihzb3VyY2UubGF5b3V0Lm9mZnNldCArIGxheWVy
ICogc291cmNlQnl0ZXNQZXJJbWFnZSk7CiAgICAgICAgICAgICBOU1VJbnRlZ2VyIGRlc3RpbmF0
aW9uU2xpY2UgPSBkZXN0aW5hdGlvbi5vcmlnaW4ueiArIGxheWVyOwogICAgICAgICAgICAgW21f
YmxpdENvbW1hbmRFbmNvZGVyCkBAIC0zMTIsNyArMzA5LDYgQEAgdm9pZCBDb21tYW5kRW5jb2Rl
cjo6Y29weUJ1ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2Us
IGNvbnMKICAgICAgICAgYXV0byBzb3VyY2VTaXplID0gTVRMU2l6ZU1ha2Uod2lkdGhGb3JNZXRh
bCwgaGVpZ2h0Rm9yTWV0YWwsIDEpOwogICAgICAgICBhdXRvIGRlc3RpbmF0aW9uT3JpZ2luID0g
TVRMT3JpZ2luTWFrZShkZXN0aW5hdGlvbi5vcmlnaW4ueCwgZGVzdGluYXRpb24ub3JpZ2luLnks
IDEpOwogICAgICAgICBmb3IgKHVpbnQzMl90IGxheWVyID0gMDsgbGF5ZXIgPCBjb3B5U2l6ZS5k
ZXB0aE9yQXJyYXlMYXllcnM7ICsrbGF5ZXIpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBVc2Ug
Y2hlY2tlZCBhcml0aG1ldGljLgogICAgICAgICAgICAgYXV0byBzb3VyY2VPZmZzZXQgPSBzdGF0
aWNfY2FzdDxOU1VJbnRlZ2VyPihzb3VyY2UubGF5b3V0Lm9mZnNldCArIGxheWVyICogc291cmNl
Qnl0ZXNQZXJJbWFnZSk7CiAgICAgICAgICAgICBOU1VJbnRlZ2VyIGRlc3RpbmF0aW9uU2xpY2Ug
PSBkZXN0aW5hdGlvbi5vcmlnaW4ueiArIGxheWVyOwogICAgICAgICAgICAgW21fYmxpdENvbW1h
bmRFbmNvZGVyCkBAIC00MjIsNyArNDE4LDYgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRl
eHR1cmVUb0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KIAog
ICAgIE5TVUludGVnZXIgZGVzdGluYXRpb25CeXRlc1BlclJvdyA9IGRlc3RpbmF0aW9uLmxheW91
dC5ieXRlc1BlclJvdzsKIAotICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljCiAg
ICAgTlNVSW50ZWdlciBkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2UgPSBkZXN0aW5hdGlvbi5sYXlv
dXQucm93c1BlckltYWdlICogZGVzdGluYXRpb24ubGF5b3V0LmJ5dGVzUGVyUm93OwogCiAgICAg
TVRMQmxpdE9wdGlvbiBvcHRpb25zID0gTVRMQmxpdE9wdGlvbk5vbmU7CkBAIC00NTQsNyArNDQ5
LDYgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZlcihjb25zdCBXR1BV
SW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAgICAgYXV0byBzb3VyY2VTaXplID0g
TVRMU2l6ZU1ha2Uod2lkdGhGb3JNZXRhbCwgMSwgMSk7CiAgICAgICAgIGF1dG8gc291cmNlT3Jp
Z2luID0gTVRMT3JpZ2luTWFrZShzb3VyY2Uub3JpZ2luLngsIDEsIDEpOwogICAgICAgICBmb3Ig
KHVpbnQzMl90IGxheWVyID0gMDsgbGF5ZXIgPCBjb3B5U2l6ZS5kZXB0aE9yQXJyYXlMYXllcnM7
ICsrbGF5ZXIpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGlj
LgogICAgICAgICAgICAgYXV0byBkZXN0aW5hdGlvbk9mZnNldCA9IHN0YXRpY19jYXN0PE5TVUlu
dGVnZXI+KGRlc3RpbmF0aW9uLmxheW91dC5vZmZzZXQgKyBsYXllciAqIGRlc3RpbmF0aW9uQnl0
ZXNQZXJJbWFnZSk7CiAgICAgICAgICAgICBOU1VJbnRlZ2VyIHNvdXJjZVNsaWNlID0gc291cmNl
Lm9yaWdpbi56ICsgbGF5ZXI7CiAgICAgICAgICAgICBbbV9ibGl0Q29tbWFuZEVuY29kZXIKQEAg
LTQ3Nyw3ICs0NzEsNiBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvQnVmZmVy
KGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBzb3VyY2UsIGNvbgogICAgICAgICBhdXRvIHNv
dXJjZVNpemUgPSBNVExTaXplTWFrZSh3aWR0aEZvck1ldGFsLCBoZWlnaHRGb3JNZXRhbCwgMSk7
CiAgICAgICAgIGF1dG8gc291cmNlT3JpZ2luID0gTVRMT3JpZ2luTWFrZShzb3VyY2Uub3JpZ2lu
LngsIHNvdXJjZS5vcmlnaW4ueSwgMSk7CiAgICAgICAgIGZvciAodWludDMyX3QgbGF5ZXIgPSAw
OyBsYXllciA8IGNvcHlTaXplLmRlcHRoT3JBcnJheUxheWVyczsgKytsYXllcikgewotICAgICAg
ICAgICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMuCiAgICAgICAgICAgICBhdXRv
IGRlc3RpbmF0aW9uT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oZGVzdGluYXRpb24u
bGF5b3V0Lm9mZnNldCArIGxheWVyICogZGVzdGluYXRpb25CeXRlc1BlckltYWdlKTsKICAgICAg
ICAgICAgIE5TVUludGVnZXIgc291cmNlU2xpY2UgPSBzb3VyY2Uub3JpZ2luLnogKyBsYXllcjsK
ICAgICAgICAgICAgIFttX2JsaXRDb21tYW5kRW5jb2RlcgpAQCAtNjE3LDcgKzYxMCw2IEBAIHZv
aWQgQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNv
cHlUZXh0dXJlJiBzb3VyY2UsIGNvCiAgICAgICAgIGF1dG8gc291cmNlT3JpZ2luID0gTVRMT3Jp
Z2luTWFrZShzb3VyY2Uub3JpZ2luLngsIDEsIDEpOwogICAgICAgICBhdXRvIGRlc3RpbmF0aW9u
T3JpZ2luID0gTVRMT3JpZ2luTWFrZShkZXN0aW5hdGlvbi5vcmlnaW4ueCwgMSwgMSk7CiAgICAg
ICAgIGZvciAodWludDMyX3QgbGF5ZXIgPSAwOyBsYXllciA8IGNvcHlTaXplLmRlcHRoT3JBcnJh
eUxheWVyczsgKytsYXllcikgewotICAgICAgICAgICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFy
aXRobWV0aWMuCiAgICAgICAgICAgICBOU1VJbnRlZ2VyIHNvdXJjZVNsaWNlID0gc291cmNlLm9y
aWdpbi56ICsgbGF5ZXI7CiAgICAgICAgICAgICBOU1VJbnRlZ2VyIGRlc3RpbmF0aW9uU2xpY2Ug
PSBkZXN0aW5hdGlvbi5vcmlnaW4ueiArIGxheWVyOwogICAgICAgICAgICAgW21fYmxpdENvbW1h
bmRFbmNvZGVyCkBAIC02NDAsNyArNjMyLDYgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRl
eHR1cmVUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY28KICAg
ICAgICAgYXV0byBzb3VyY2VPcmlnaW4gPSBNVExPcmlnaW5NYWtlKHNvdXJjZS5vcmlnaW4ueCwg
c291cmNlLm9yaWdpbi55LCAxKTsKICAgICAgICAgYXV0byBkZXN0aW5hdGlvbk9yaWdpbiA9IE1U
TE9yaWdpbk1ha2UoZGVzdGluYXRpb24ub3JpZ2luLngsIGRlc3RpbmF0aW9uLm9yaWdpbi55LCAx
KTsKICAgICAgICAgZm9yICh1aW50MzJfdCBsYXllciA9IDA7IGxheWVyIDwgY29weVNpemUuZGVw
dGhPckFycmF5TGF5ZXJzOyArK2xheWVyKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVXNlIGNo
ZWNrZWQgYXJpdGhtZXRpYy4KICAgICAgICAgICAgIE5TVUludGVnZXIgc291cmNlU2xpY2UgPSBz
b3VyY2Uub3JpZ2luLnogKyBsYXllcjsKICAgICAgICAgICAgIE5TVUludGVnZXIgZGVzdGluYXRp
b25TbGljZSA9IGRlc3RpbmF0aW9uLm9yaWdpbi56ICsgbGF5ZXI7CiAgICAgICAgICAgICBbbV9i
bGl0Q29tbWFuZEVuY29kZXIKQEAgLTY5Miw4ICs2ODMsOCBAQCBib29sIENvbW1hbmRFbmNvZGVy
Ojp2YWxpZGF0ZUNsZWFyQnVmZmVyKGNvbnN0IEJ1ZmZlciYgYnVmZmVyLCB1aW50NjRfdCBvZmZz
ZXQsCiAgICAgaWYgKG9mZnNldCAlIDQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8v
IEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljLgotICAgIGlmIChidWZmZXIuc2l6ZSgpIDwg
b2Zmc2V0ICsgc2l6ZSkKKyAgICBhdXRvIGVuZCA9IENoZWNrZWRVaW50NjQob2Zmc2V0KSArIENo
ZWNrZWRVaW50NjQoc2l6ZSk7CisgICAgaWYgKGVuZC5oYXNPdmVyZmxvd2VkKCkgfHwgYnVmZmVy
LnNpemUoKSA8IGVuZC52YWx1ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTcwNyw4ICs2OTgsMTIgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y2xlYXJC
dWZmZXIoY29uc3QgQnVmZmVyJiBidWZmZXIsIHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3QKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHNpemUgPT0gV0dQVV9XSE9MRV9TSVpFKSB7Ci0gICAg
ICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljLgotICAgICAgICBzaXplID0gYnVm
ZmVyLnNpemUoKSAtIG9mZnNldDsKKyAgICAgICAgYXV0byBsb2NhbFNpemUgPSBDaGVja2VkVWlu
dDY0KGJ1ZmZlci5zaXplKCkpIC0gQ2hlY2tlZFVpbnQ2NChvZmZzZXQpOworICAgICAgICBpZiAo
bG9jYWxTaXplLmhhc092ZXJmbG93ZWQoKSkgeworICAgICAgICAgICAgbV9kZXZpY2UtPmdlbmVy
YXRlQVZhbGlkYXRpb25FcnJvcigiQ29tbWFuZEVuY29kZXI6OmNsZWFyQnVmZmVyKCk6IG9mZnNl
dCA+IGJ1ZmZlci5zaXplIl9zKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAg
ICAgICBzaXplID0gbG9jYWxTaXplLnZhbHVlKCk7CiAgICAgfQogCiAgICAgaWYgKCF2YWxpZGF0
ZUNsZWFyQnVmZmVyKGJ1ZmZlciwgb2Zmc2V0LCBzaXplKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvUXVldWUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5tbQpp
bmRleCAwNzdkNDFhMjgwODkuLmY1N2MzOTZiNWM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvUXVldWUubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUubW0KQEAg
LTE3MSw4ICsxNzEsOCBAQCBib29sIFF1ZXVlOjp2YWxpZGF0ZVdyaXRlQnVmZmVyKGNvbnN0IEJ1
ZmZlciYgYnVmZmVyLCB1aW50NjRfdCBidWZmZXJPZmZzZXQsIHNpegogICAgIGlmIChidWZmZXJP
ZmZzZXQgJSA0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBGSVhNRTogVXNlIGNo
ZWNrZWQgYXJpdGhtZXRpYwotICAgIGlmIChidWZmZXJPZmZzZXQgKyBzaXplID4gYnVmZmVyLnNp
emUoKSkKKyAgICBhdXRvIGVuZCA9IENoZWNrZWRVaW50NjQoYnVmZmVyT2Zmc2V0KSArIENoZWNr
ZWRVaW50NjQoc2l6ZSk7CisgICAgaWYgKGVuZC5oYXNPdmVyZmxvd2VkKCkgfHwgZW5kLnZhbHVl
KCkgPiBidWZmZXIuc2l6ZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTI4Myw3ICsyODMsNiBAQCB2b2lkIFF1ZXVlOjp3cml0ZVRleHR1cmUoY29uc3Qg
V0dQVUltYWdlQ29weVRleHR1cmUmIGRlc3RpbmF0aW9uLCBjb25zdCB2b2lkKiBkYQogCiAgICAg
TlNVSW50ZWdlciBieXRlc1BlclJvdyA9IGRhdGFMYXlvdXQuYnl0ZXNQZXJSb3c7CiAKLSAgICAv
LyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KICAgICBOU1VJbnRlZ2VyIGJ5dGVzUGVy
SW1hZ2UgPSBkYXRhTGF5b3V0LmJ5dGVzUGVyUm93ICogZGF0YUxheW91dC5yb3dzUGVySW1hZ2U7
CiAKICAgICBNVExCbGl0T3B0aW9uIG9wdGlvbnMgPSBNVExCbGl0T3B0aW9uTm9uZTsKQEAgLTMx
NSw3ICszMTQsNiBAQCB2b2lkIFF1ZXVlOjp3cml0ZVRleHR1cmUoY29uc3QgV0dQVUltYWdlQ29w
eVRleHR1cmUmIGRlc3RpbmF0aW9uLCBjb25zdCB2b2lkKiBkYQogICAgICAgICAgICAgICAgIGNh
c2UgV0dQVVRleHR1cmVEaW1lbnNpb25fMUQ6IHsKICAgICAgICAgICAgICAgICAgICAgYXV0byBy
ZWdpb24gPSBNVExSZWdpb25NYWtlMUQoZGVzdGluYXRpb24ub3JpZ2luLngsIHNpemUud2lkdGgp
OwogICAgICAgICAgICAgICAgICAgICBmb3IgKHVpbnQzMl90IGxheWVyID0gMDsgbGF5ZXIgPCBz
aXplLmRlcHRoT3JBcnJheUxheWVyczsgKytsYXllcikgewotICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMuCiAgICAgICAgICAgICAgICAgICAg
ICAgICBhdXRvIHNvdXJjZU9mZnNldCA9IHN0YXRpY19jYXN0PE5TVUludGVnZXI+KGRhdGFMYXlv
dXQub2Zmc2V0ICsgbGF5ZXIgKiBieXRlc1BlckltYWdlKTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIE5TVUludGVnZXIgZGVzdGluYXRpb25TbGljZSA9IGRlc3RpbmF0aW9uLm9yaWdpbi56ICsg
bGF5ZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICBbZnJvbUFQSShkZXN0aW5hdGlvbi50ZXh0
dXJlKS50ZXh0dXJlKCkKQEAgLTMzMSw3ICszMjksNiBAQCB2b2lkIFF1ZXVlOjp3cml0ZVRleHR1
cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIGRlc3RpbmF0aW9uLCBjb25zdCB2b2lkKiBk
YQogICAgICAgICAgICAgICAgIGNhc2UgV0dQVVRleHR1cmVEaW1lbnNpb25fMkQ6IHsKICAgICAg
ICAgICAgICAgICAgICAgYXV0byByZWdpb24gPSBNVExSZWdpb25NYWtlMkQoZGVzdGluYXRpb24u
b3JpZ2luLngsIGRlc3RpbmF0aW9uLm9yaWdpbi55LCBzaXplLndpZHRoLCBzaXplLmhlaWdodCk7
CiAgICAgICAgICAgICAgICAgICAgIGZvciAodWludDMyX3QgbGF5ZXIgPSAwOyBsYXllciA8IHNp
emUuZGVwdGhPckFycmF5TGF5ZXJzOyArK2xheWVyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KICAgICAgICAgICAgICAgICAgICAg
ICAgIGF1dG8gc291cmNlT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oZGF0YUxheW91
dC5vZmZzZXQgKyBsYXllciAqIGJ5dGVzUGVySW1hZ2UpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgTlNVSW50ZWdlciBkZXN0aW5hdGlvblNsaWNlID0gZGVzdGluYXRpb24ub3JpZ2luLnogKyBs
YXllcjsKICAgICAgICAgICAgICAgICAgICAgICAgIFtmcm9tQVBJKGRlc3RpbmF0aW9uLnRleHR1
cmUpLnRleHR1cmUoKQpAQCAtMzkwLDcgKzM4Nyw2IEBAIHZvaWQgUXVldWU6OndyaXRlVGV4dHVy
ZShjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgZGVzdGluYXRpb24sIGNvbnN0IHZvaWQqIGRh
CiAgICAgICAgIGF1dG8gc291cmNlU2l6ZSA9IE1UTFNpemVNYWtlKHdpZHRoRm9yTWV0YWwsIDEs
IDEpOwogICAgICAgICBhdXRvIGRlc3RpbmF0aW9uT3JpZ2luID0gTVRMT3JpZ2luTWFrZShkZXN0
aW5hdGlvbi5vcmlnaW4ueCwgMSwgMSk7CiAgICAgICAgIGZvciAodWludDMyX3QgbGF5ZXIgPSAw
OyBsYXllciA8IHNpemUuZGVwdGhPckFycmF5TGF5ZXJzOyArK2xheWVyKSB7Ci0gICAgICAgICAg
ICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KICAgICAgICAgICAgIE5TVUludGVn
ZXIgc291cmNlT2Zmc2V0ID0gbGF5ZXIgKiBieXRlc1BlckltYWdlOwogICAgICAgICAgICAgTlNV
SW50ZWdlciBkZXN0aW5hdGlvblNsaWNlID0gZGVzdGluYXRpb24ub3JpZ2luLnogKyBsYXllcjsK
ICAgICAgICAgICAgIFttX2JsaXRDb21tYW5kRW5jb2RlcgpAQCAtNDEzLDcgKzQwOSw2IEBAIHZv
aWQgUXVldWU6OndyaXRlVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgZGVzdGlu
YXRpb24sIGNvbnN0IHZvaWQqIGRhCiAgICAgICAgIGF1dG8gc291cmNlU2l6ZSA9IE1UTFNpemVN
YWtlKHdpZHRoRm9yTWV0YWwsIGhlaWdodEZvck1ldGFsLCAxKTsKICAgICAgICAgYXV0byBkZXN0
aW5hdGlvbk9yaWdpbiA9IE1UTE9yaWdpbk1ha2UoZGVzdGluYXRpb24ub3JpZ2luLngsIGRlc3Rp
bmF0aW9uLm9yaWdpbi55LCAxKTsKICAgICAgICAgZm9yICh1aW50MzJfdCBsYXllciA9IDA7IGxh
eWVyIDwgc2l6ZS5kZXB0aE9yQXJyYXlMYXllcnM7ICsrbGF5ZXIpIHsKLSAgICAgICAgICAgIC8v
IEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljLgogICAgICAgICAgICAgTlNVSW50ZWdlciBz
b3VyY2VPZmZzZXQgPSBsYXllciAqIGJ5dGVzUGVySW1hZ2U7CiAgICAgICAgICAgICBOU1VJbnRl
Z2VyIGRlc3RpbmF0aW9uU2xpY2UgPSBkZXN0aW5hdGlvbi5vcmlnaW4ueiArIGxheWVyOwogICAg
ICAgICAgICAgW21fYmxpdENvbW1hbmRFbmNvZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9UZXh0dXJlLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLmgKaW5kZXgg
NGZmYTI2YmY5ZjVhLi5mZGI4YTE4YWU1NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1RleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLmgKQEAgLTg4
LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBUZXh0dXJlKGlkPE1UTFRleHR1cmU+LCBjb25zdCBX
R1BVVGV4dHVyZURlc2NyaXB0b3ImLCBWZWN0b3I8V0dQVVRleHR1cmVGb3JtYXQ+JiYgdmlld0Zv
cm1hdHMsIERldmljZSYpOwogICAgIFRleHR1cmUoRGV2aWNlJik7CiAKLSAgICBXR1BVVGV4dHVy
ZVZpZXdEZXNjcmlwdG9yIHJlc29sdmVUZXh0dXJlVmlld0Rlc2NyaXB0b3JEZWZhdWx0cyhjb25z
dCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJikgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxX
R1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yPiByZXNvbHZlVGV4dHVyZVZpZXdEZXNjcmlwdG9yRGVm
YXVsdHMoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYpIGNvbnN0OwogICAgIHVpbnQz
Ml90IGFycmF5TGF5ZXJDb3VudCgpIGNvbnN0OwogICAgIGJvb2wgdmFsaWRhdGVDcmVhdGVWaWV3
KGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1Rl
eHR1cmUubW0KaW5kZXggMmM4MGZmYjQ5ODBlLi42Mzg3MDIxNzZlMWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
VGV4dHVyZS5tbQpAQCAtMjA2OCw3ICsyMDY4LDcgQEAgVGV4dHVyZTo6VGV4dHVyZShEZXZpY2Um
IGRldmljZSkKIAogVGV4dHVyZTo6flRleHR1cmUoKSA9IGRlZmF1bHQ7CiAKLVdHUFVUZXh0dXJl
Vmlld0Rlc2NyaXB0b3IgVGV4dHVyZTo6cmVzb2x2ZVRleHR1cmVWaWV3RGVzY3JpcHRvckRlZmF1
bHRzKGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0Citz
dGQ6Om9wdGlvbmFsPFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3I+IFRleHR1cmU6OnJlc29sdmVU
ZXh0dXJlVmlld0Rlc2NyaXB0b3JEZWZhdWx0cyhjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKSBjb25zdAogewogICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5p
by9ncHV3ZWIvI2Fic3RyYWN0LW9wZGVmLXJlc29sdmluZy1ncHV0ZXh0dXJldmlld2Rlc2NyaXB0
b3ItZGVmYXVsdHMKIApAQCAtMjA3OCw4ICsyMDc4LDEwIEBAIFdHUFVUZXh0dXJlVmlld0Rlc2Ny
aXB0b3IgVGV4dHVyZTo6cmVzb2x2ZVRleHR1cmVWaWV3RGVzY3JpcHRvckRlZmF1bHRzKGNvbnN0
IFdHCiAgICAgICAgIHJlc29sdmVkLmZvcm1hdCA9IG1fZGVzY3JpcHRvci5mb3JtYXQ7CiAKICAg
ICBpZiAocmVzb2x2ZWQubWlwTGV2ZWxDb3VudCA9PSBXR1BVX01JUF9MRVZFTF9DT1VOVF9VTkRF
RklORUQpIHsKLSAgICAgICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMuCi0gICAg
ICAgIHJlc29sdmVkLm1pcExldmVsQ291bnQgPSBtX2Rlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCAt
IHJlc29sdmVkLmJhc2VNaXBMZXZlbDsKKyAgICAgICAgYXV0byBtaXBMZXZlbENvdW50ID0gQ2hl
Y2tlZFVpbnQzMihtX2Rlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCkgLSBDaGVja2VkVWludDMyKHJl
c29sdmVkLmJhc2VNaXBMZXZlbCk7CisgICAgICAgIGlmIChtaXBMZXZlbENvdW50Lmhhc092ZXJm
bG93ZWQoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJlc29s
dmVkLm1pcExldmVsQ291bnQgPSBtaXBMZXZlbENvdW50LnZhbHVlKCk7CiAgICAgfQogCiAgICAg
aWYgKHJlc29sdmVkLmRpbWVuc2lvbiA9PSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fVW5kZWZp
bmVkKSB7CkBAIC0yMTEyLDEwICsyMTE0LDEzIEBAIFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3Ig
VGV4dHVyZTo6cmVzb2x2ZVRleHR1cmVWaWV3RGVzY3JpcHRvckRlZmF1bHRzKGNvbnN0IFdHCiAg
ICAgICAgICAgICByZXNvbHZlZC5hcnJheUxheWVyQ291bnQgPSA2OwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uXzJEQXJyYXk6Ci0gICAg
ICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX0N1YmVBcnJheToKLSAgICAgICAgICAg
IC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljCi0gICAgICAgICAgICByZXNvbHZlZC5h
cnJheUxheWVyQ291bnQgPSBtX2Rlc2NyaXB0b3Iuc2l6ZS5kZXB0aE9yQXJyYXlMYXllcnMgLSBy
ZXNvbHZlZC5iYXNlQXJyYXlMYXllcjsKKyAgICAgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1l
bnNpb25fQ3ViZUFycmF5OiB7CisgICAgICAgICAgICBhdXRvIGFycmF5TGF5ZXJDb3VudCA9IENo
ZWNrZWRVaW50MzIobV9kZXNjcmlwdG9yLnNpemUuZGVwdGhPckFycmF5TGF5ZXJzKSAtIENoZWNr
ZWRVaW50MzIocmVzb2x2ZWQuYmFzZUFycmF5TGF5ZXIpOworICAgICAgICAgICAgaWYgKGFycmF5
TGF5ZXJDb3VudC5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJlc29sdmVkLmFycmF5TGF5ZXJDb3VudCA9IGFycmF5TGF5
ZXJDb3VudC52YWx1ZSgpOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAg
Y2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fRm9yY2UzMjoKICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVkOwpAQCAtMjE2Niwx
OCArMjE3MSwxNyBAQCBib29sIFRleHR1cmU6OnZhbGlkYXRlQ3JlYXRlVmlldyhjb25zdCBXR1BV
VGV4dHVyZVZpZXdEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjbwogICAgIGlmICghZGVzY3JpcHRv
ci5taXBMZXZlbENvdW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBGSVhNRTog
VXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KLSAgICBpZiAoZGVzY3JpcHRvci5iYXNlTWlwTGV2ZWwg
KyBkZXNjcmlwdG9yLm1pcExldmVsQ291bnQgPiBtX2Rlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCkK
KyAgICBhdXRvIGVuZE1pcExldmVsID0gQ2hlY2tlZFVpbnQzMihkZXNjcmlwdG9yLmJhc2VNaXBM
ZXZlbCkgKyBDaGVja2VkVWludDMyKGRlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCk7CisgICAgaWYg
KGVuZE1pcExldmVsLmhhc092ZXJmbG93ZWQoKSB8fCBlbmRNaXBMZXZlbC52YWx1ZSgpID4gbV9k
ZXNjcmlwdG9yLm1pcExldmVsQ291bnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
ICghZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljLgotICAgIGlmIChkZXNjcmlwdG9y
LmJhc2VBcnJheUxheWVyICsgZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgPiBhcnJheUxheWVy
Q291bnQoKSkKKyAgICBhdXRvIGVuZEFycmF5TGF5ZXIgPSBDaGVja2VkVWludDMyKGRlc2NyaXB0
b3IuYmFzZUFycmF5TGF5ZXIpICsgQ2hlY2tlZFVpbnQzMihkZXNjcmlwdG9yLmFycmF5TGF5ZXJD
b3VudCk7CisgICAgaWYgKGVuZEFycmF5TGF5ZXIuaGFzT3ZlcmZsb3dlZCgpIHx8IGVuZEFycmF5
TGF5ZXIudmFsdWUoKSA+IGFycmF5TGF5ZXJDb3VudCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICAvLyAiZGVzY3JpcHRvci5mb3JtYXQgbXVzdCBiZSBlcXVhbCB0byBlaXRoZXIgdGhp
cy5bW2Rlc2NyaXB0b3JdXS5mb3JtYXQgb3Igb25lIG9mIHRoZSBmb3JtYXRzIGluIHRoaXMuW1tk
ZXNjcmlwdG9yXV0udmlld0Zvcm1hdHMuIgogICAgIGlmIChkZXNjcmlwdG9yLmZvcm1hdCAhPSBt
X2Rlc2NyaXB0b3IuZm9ybWF0ICYmICFtX3ZpZXdGb3JtYXRzLmNvbnRhaW5zKGRlc2NyaXB0b3Iu
Zm9ybWF0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yMjYxLDcgKzIyNjUsNyBAQCBS
ZWY8VGV4dHVyZVZpZXc+IFRleHR1cmU6OmNyZWF0ZVZpZXcoY29uc3QgV0dQVVRleHR1cmVWaWV3
RGVzY3JpcHRvciYgaW5wdXREZXNjcgogCiAgICAgYXV0byBkZXNjcmlwdG9yID0gcmVzb2x2ZVRl
eHR1cmVWaWV3RGVzY3JpcHRvckRlZmF1bHRzKGlucHV0RGVzY3JpcHRvcik7CiAKLSAgICBpZiAo
IXZhbGlkYXRlQ3JlYXRlVmlldyhkZXNjcmlwdG9yKSkgeworICAgIGlmICghZGVzY3JpcHRvciB8
fCAhdmFsaWRhdGVDcmVhdGVWaWV3KCpkZXNjcmlwdG9yKSkgewogICAgICAgICBtX2RldmljZS0+
Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKIAogICAg
ICAgICAvLyBGSVhNRTogIlJldHVybiBhIG5ldyBpbnZhbGlkIEdQVVRleHR1cmVWaWV3LiIKQEAg
LTIyNjksMTYgKzIyNzMsMTYgQEAgUmVmPFRleHR1cmVWaWV3PiBUZXh0dXJlOjpjcmVhdGVWaWV3
KGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGlucHV0RGVzY3IKICAgICB9CiAKICAg
ICBzdGQ6Om9wdGlvbmFsPE1UTFBpeGVsRm9ybWF0PiBwaXhlbEZvcm1hdDsKLSAgICBpZiAoaXNE
ZXB0aE9yU3RlbmNpbEZvcm1hdChkZXNjcmlwdG9yLmZvcm1hdCkpIHsKLSAgICAgICAgc3dpdGNo
IChkZXNjcmlwdG9yLmFzcGVjdCkgeworICAgIGlmIChpc0RlcHRoT3JTdGVuY2lsRm9ybWF0KGRl
c2NyaXB0b3ItPmZvcm1hdCkpIHsKKyAgICAgICAgc3dpdGNoIChkZXNjcmlwdG9yLT5hc3BlY3Qp
IHsKICAgICAgICAgY2FzZSBXR1BVVGV4dHVyZUFzcGVjdF9BbGw6Ci0gICAgICAgICAgICBwaXhl
bEZvcm1hdCA9IFdlYkdQVTo6cGl4ZWxGb3JtYXQoZGVzY3JpcHRvci5mb3JtYXQpOworICAgICAg
ICAgICAgcGl4ZWxGb3JtYXQgPSBXZWJHUFU6OnBpeGVsRm9ybWF0KGRlc2NyaXB0b3ItPmZvcm1h
dCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXR1BVVGV4dHVyZUFzcGVjdF9T
dGVuY2lsT25seToKLSAgICAgICAgICAgIHBpeGVsRm9ybWF0ID0gc3RlbmNpbE9ubHlBc3BlY3RN
ZXRhbEZvcm1hdChkZXNjcmlwdG9yLmZvcm1hdCk7CisgICAgICAgICAgICBwaXhlbEZvcm1hdCA9
IHN0ZW5jaWxPbmx5QXNwZWN0TWV0YWxGb3JtYXQoZGVzY3JpcHRvci0+Zm9ybWF0KTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdHUFVUZXh0dXJlQXNwZWN0X0RlcHRoT25seToK
LSAgICAgICAgICAgIHBpeGVsRm9ybWF0ID0gZGVwdGhPbmx5QXNwZWN0TWV0YWxGb3JtYXQoZGVz
Y3JpcHRvci5mb3JtYXQpOworICAgICAgICAgICAgcGl4ZWxGb3JtYXQgPSBkZXB0aE9ubHlBc3Bl
Y3RNZXRhbEZvcm1hdChkZXNjcmlwdG9yLT5mb3JtYXQpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgV0dQVVRleHR1cmVBc3BlY3RfRm9yY2UzMjoKICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjI5MCwxMiArMjI5NCwxMiBAQCBSZWY8VGV4dHVyZVZpZXc+
IFRleHR1cmU6OmNyZWF0ZVZpZXcoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYgaW5w
dXREZXNjcgogICAgIEFTU0VSVCgqcGl4ZWxGb3JtYXQgIT0gTVRMUGl4ZWxGb3JtYXRJbnZhbGlk
KTsKIAogICAgIE1UTFRleHR1cmVUeXBlIHRleHR1cmVUeXBlOwotICAgIHN3aXRjaCAoZGVzY3Jp
cHRvci5kaW1lbnNpb24pIHsKKyAgICBzd2l0Y2ggKGRlc2NyaXB0b3ItPmRpbWVuc2lvbikgewog
ICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX1VuZGVmaW5lZDoKICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIHJldHVybiBUZXh0dXJlVmlldzo6Y3JlYXRlSW52
YWxpZChtX2RldmljZSk7CiAgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fMUQ6Ci0g
ICAgICAgIGlmIChkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCA9PSAxKQorICAgICAgICBpZiAo
ZGVzY3JpcHRvci0+YXJyYXlMYXllckNvdW50ID09IDEpCiAgICAgICAgICAgICB0ZXh0dXJlVHlw
ZSA9IE1UTFRleHR1cmVUeXBlMUQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRleHR1cmVU
eXBlID0gTVRMVGV4dHVyZVR5cGUxREFycmF5OwpAQCAtMjMzMCwyMSArMjMzNCwyMSBAQCBSZWY8
VGV4dHVyZVZpZXc+IFRleHR1cmU6OmNyZWF0ZVZpZXcoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVz
Y3JpcHRvciYgaW5wdXREZXNjcgogICAgICAgICByZXR1cm4gVGV4dHVyZVZpZXc6OmNyZWF0ZUlu
dmFsaWQobV9kZXZpY2UpOwogICAgIH0KIAotICAgIGF1dG8gbGV2ZWxzID0gTlNNYWtlUmFuZ2Uo
ZGVzY3JpcHRvci5iYXNlTWlwTGV2ZWwsIGRlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCk7CisgICAg
YXV0byBsZXZlbHMgPSBOU01ha2VSYW5nZShkZXNjcmlwdG9yLT5iYXNlTWlwTGV2ZWwsIGRlc2Ny
aXB0b3ItPm1pcExldmVsQ291bnQpOwogCi0gICAgYXV0byBzbGljZXMgPSBOU01ha2VSYW5nZShk
ZXNjcmlwdG9yLmJhc2VBcnJheUxheWVyLCBkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCk7Cisg
ICAgYXV0byBzbGljZXMgPSBOU01ha2VSYW5nZShkZXNjcmlwdG9yLT5iYXNlQXJyYXlMYXllciwg
ZGVzY3JpcHRvci0+YXJyYXlMYXllckNvdW50KTsKIAogICAgIGlkPE1UTFRleHR1cmU+IHRleHR1
cmUgPSBbbV90ZXh0dXJlIG5ld1RleHR1cmVWaWV3V2l0aFBpeGVsRm9ybWF0OipwaXhlbEZvcm1h
dCB0ZXh0dXJlVHlwZTp0ZXh0dXJlVHlwZSBsZXZlbHM6bGV2ZWxzIHNsaWNlczpzbGljZXNdOwog
ICAgIGlmICghdGV4dHVyZSkKICAgICAgICAgcmV0dXJuIFRleHR1cmVWaWV3OjpjcmVhdGVJbnZh
bGlkKG1fZGV2aWNlKTsKIAotICAgIHRleHR1cmUubGFiZWwgPSBmcm9tQVBJKGRlc2NyaXB0b3Iu
bGFiZWwpOworICAgIHRleHR1cmUubGFiZWwgPSBmcm9tQVBJKGRlc2NyaXB0b3ItPmxhYmVsKTsK
IAogICAgIHN0ZDo6b3B0aW9uYWw8V0dQVUV4dGVudDNEPiByZW5kZXJFeHRlbnQ7CiAgICAgaWYg
IChtX2Rlc2NyaXB0b3IudXNhZ2UgJiBXR1BVVGV4dHVyZVVzYWdlX1JlbmRlckF0dGFjaG1lbnQp
Ci0gICAgICAgIHJlbmRlckV4dGVudCA9IGNvbXB1dGVSZW5kZXJFeHRlbnQobV9kZXNjcmlwdG9y
LnNpemUsIGRlc2NyaXB0b3IuYmFzZU1pcExldmVsKTsKKyAgICAgICAgcmVuZGVyRXh0ZW50ID0g
Y29tcHV0ZVJlbmRlckV4dGVudChtX2Rlc2NyaXB0b3Iuc2l6ZSwgZGVzY3JpcHRvci0+YmFzZU1p
cExldmVsKTsKIAotICAgIHJldHVybiBUZXh0dXJlVmlldzo6Y3JlYXRlKHRleHR1cmUsIGRlc2Ny
aXB0b3IsIHJlbmRlckV4dGVudCwgbV9kZXZpY2UpOworICAgIHJldHVybiBUZXh0dXJlVmlldzo6
Y3JlYXRlKHRleHR1cmUsICpkZXNjcmlwdG9yLCByZW5kZXJFeHRlbnQsIG1fZGV2aWNlKTsKIH0K
IAogdm9pZCBUZXh0dXJlOjpkZXN0cm95KCkKQEAgLTI3MTMsMTYgKzI3MTcsMTYgQEAgYm9vbCBU
ZXh0dXJlOjp2YWxpZGF0ZVRleHR1cmVDb3B5UmFuZ2UoY29uc3QgV0dQVUltYWdlQ29weVRleHR1
cmUmIGltYWdlQ29weVRleHQKIAogICAgIGF1dG8gc3VicmVzb3VyY2VTaXplID0gaW1hZ2VDb3B5
VGV4dHVyZVN1YnJlc291cmNlU2l6ZShpbWFnZUNvcHlUZXh0dXJlKTsKIAotICAgIC8vIEZJWE1F
OiBVc2VkIGNoZWNrZWQgYXJpdGhtZXRpYwotICAgIGlmIChpbWFnZUNvcHlUZXh0dXJlLm9yaWdp
bi54ICsgY29weVNpemUud2lkdGggPiBzdWJyZXNvdXJjZVNpemUud2lkdGgpCisgICAgYXV0byBl
bmRYID0gQ2hlY2tlZFVpbnQzMihpbWFnZUNvcHlUZXh0dXJlLm9yaWdpbi54KSArIENoZWNrZWRV
aW50MzIoY29weVNpemUud2lkdGgpOworICAgIGlmIChlbmRYLmhhc092ZXJmbG93ZWQoKSB8fCBl
bmRYLnZhbHVlKCkgPiBzdWJyZXNvdXJjZVNpemUud2lkdGgpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIC8vIEZJWE1FOiBVc2VkIGNoZWNrZWQgYXJpdGhtZXRpYwotICAgIGlmICgoaW1h
Z2VDb3B5VGV4dHVyZS5vcmlnaW4ueSArIGNvcHlTaXplLmhlaWdodCkgPiBzdWJyZXNvdXJjZVNp
emUuaGVpZ2h0KQorICAgIGF1dG8gZW5kWSA9IENoZWNrZWRVaW50MzIoaW1hZ2VDb3B5VGV4dHVy
ZS5vcmlnaW4ueSkgKyBDaGVja2VkVWludDMyKGNvcHlTaXplLmhlaWdodCk7CisgICAgaWYgKGVu
ZFkuaGFzT3ZlcmZsb3dlZCgpIHx8IGVuZFkudmFsdWUoKSA+IHN1YnJlc291cmNlU2l6ZS5oZWln
aHQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vIEZJWE1FOiBVc2VkIGNoZWNrZWQg
YXJpdGhtZXRpYwotICAgIGlmICgoaW1hZ2VDb3B5VGV4dHVyZS5vcmlnaW4ueiArIGNvcHlTaXpl
LmRlcHRoT3JBcnJheUxheWVycykgPiBzdWJyZXNvdXJjZVNpemUuZGVwdGhPckFycmF5TGF5ZXJz
KQorICAgIGF1dG8gZW5kWiA9IENoZWNrZWRVaW50MzIoaW1hZ2VDb3B5VGV4dHVyZS5vcmlnaW4u
eikgKyBDaGVja2VkVWludDMyKGNvcHlTaXplLmRlcHRoT3JBcnJheUxheWVycyk7CisgICAgaWYg
KGVuZFouaGFzT3ZlcmZsb3dlZCgpIHx8IGVuZFoudmFsdWUoKSA+IHN1YnJlc291cmNlU2l6ZS5k
ZXB0aE9yQXJyYXlMYXllcnMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChjb3B5
U2l6ZS53aWR0aCAlIGJsb2NrV2lkdGgpCkBAIC0yNzQ2LDggKzI3NTAsOSBAQCBib29sIFRleHR1
cmU6OnZhbGlkYXRlTGluZWFyVGV4dHVyZURhdGEoY29uc3QgV0dQVVRleHR1cmVEYXRhTGF5b3V0
JiBsYXlvdXQsIHVpbgogCiAgICAgYXV0byBoZWlnaHRJbkJsb2NrcyA9IGNvcHlFeHRlbnQuaGVp
Z2h0IC8gYmxvY2tIZWlnaHQ7CiAKLSAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRp
Yy4KLSAgICBhdXRvIGJ5dGVzSW5MYXN0Um93ID0gYmxvY2tTaXplICogd2lkdGhJbkJsb2NrczsK
KyAgICBhdXRvIGJ5dGVzSW5MYXN0Um93ID0gQ2hlY2tlZFVpbnQzMihibG9ja1NpemUpICogQ2hl
Y2tlZFVpbnQzMih3aWR0aEluQmxvY2tzKTsKKyAgICBpZiAoYnl0ZXNJbkxhc3RSb3cuaGFzT3Zl
cmZsb3dlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoaGVpZ2h0SW5CbG9j
a3MgPiAxKSB7CiAgICAgICAgIGlmIChsYXlvdXQuYnl0ZXNQZXJSb3cgPT0gV0dQVV9DT1BZX1NU
UklERV9VTkRFRklORUQpCkBAIC0yNzYwLDcgKzI3NjUsNyBAQCBib29sIFRleHR1cmU6OnZhbGlk
YXRlTGluZWFyVGV4dHVyZURhdGEoY29uc3QgV0dQVVRleHR1cmVEYXRhTGF5b3V0JiBsYXlvdXQs
IHVpbgogICAgIH0KIAogICAgIGlmIChsYXlvdXQuYnl0ZXNQZXJSb3cgIT0gV0dQVV9DT1BZX1NU
UklERV9VTkRFRklORUQpIHsKLSAgICAgICAgaWYgKGxheW91dC5ieXRlc1BlclJvdyA8IGJ5dGVz
SW5MYXN0Um93KQorICAgICAgICBpZiAobGF5b3V0LmJ5dGVzUGVyUm93IDwgYnl0ZXNJbkxhc3RS
b3cudmFsdWUoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTI3Njks
MzMgKzI3NzQsMjYgQEAgYm9vbCBUZXh0dXJlOjp2YWxpZGF0ZUxpbmVhclRleHR1cmVEYXRhKGNv
bnN0IFdHUFVUZXh0dXJlRGF0YUxheW91dCYgbGF5b3V0LCB1aW4KICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICB1aW50NjRfdCByZXF1aXJlZEJ5dGVzSW5Db3B5ID0gMDsK
KyAgICBhdXRvIHJlcXVpcmVkQnl0ZXNJbkNvcHkgPSBDaGVja2VkVWludDY0KDApOwogCiAgICAg
aWYgKGNvcHlFeHRlbnQuZGVwdGhPckFycmF5TGF5ZXJzID4gMSkgewotICAgICAgICAvLyBGSVhN
RTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KLSAgICAgICAgYXV0byBieXRlc1BlckltYWdlID0g
bGF5b3V0LmJ5dGVzUGVyUm93ICogbGF5b3V0LnJvd3NQZXJJbWFnZTsKKyAgICAgICAgYXV0byBi
eXRlc1BlckltYWdlID0gQ2hlY2tlZFVpbnQzMihsYXlvdXQuYnl0ZXNQZXJSb3cpICogQ2hlY2tl
ZFVpbnQzMihsYXlvdXQucm93c1BlckltYWdlKTsKIAotICAgICAgICAvLyBGSVhNRTogVXNlIGNo
ZWNrZWQgYXJpdGhtZXRpYy4KLSAgICAgICAgYXV0byBieXRlc0JlZm9yZUxhc3RJbWFnZSA9IGJ5
dGVzUGVySW1hZ2UgKiAoY29weUV4dGVudC5kZXB0aE9yQXJyYXlMYXllcnMgLSAxKTsKKyAgICAg
ICAgYXV0byBieXRlc0JlZm9yZUxhc3RJbWFnZSA9IGJ5dGVzUGVySW1hZ2UgKiAoQ2hlY2tlZFVp
bnQzMihjb3B5RXh0ZW50LmRlcHRoT3JBcnJheUxheWVycykgLSAxKTsKIAotICAgICAgICAvLyBG
SVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KICAgICAgICAgcmVxdWlyZWRCeXRlc0luQ29w
eSArPSBieXRlc0JlZm9yZUxhc3RJbWFnZTsKICAgICB9CiAKICAgICBpZiAoY29weUV4dGVudC5k
ZXB0aE9yQXJyYXlMYXllcnMgPiAwKSB7Ci0gICAgICAgIGlmIChoZWlnaHRJbkJsb2NrcyA+IDEp
IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljLgotICAgICAg
ICAgICAgcmVxdWlyZWRCeXRlc0luQ29weSArPSBsYXlvdXQuYnl0ZXNQZXJSb3cgKiAoaGVpZ2h0
SW5CbG9ja3MgLSAxKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoaGVpZ2h0SW5CbG9ja3MgPiAx
KQorICAgICAgICAgICAgcmVxdWlyZWRCeXRlc0luQ29weSArPSBDaGVja2VkVWludDMyKGxheW91
dC5ieXRlc1BlclJvdykgKiAoQ2hlY2tlZFVpbnQzMihoZWlnaHRJbkJsb2NrcykgLSAxKTsKIAot
ICAgICAgICBpZiAoaGVpZ2h0SW5CbG9ja3MgPiAwKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTog
VXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KLSAgICAgICAgICAgIHJlcXVpcmVkQnl0ZXNJbkNvcHkg
Kz0gYnl0ZXNJbkxhc3RSb3c7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGhlaWdodEluQmxvY2tz
ID4gMCkKKyAgICAgICAgICAgIHJlcXVpcmVkQnl0ZXNJbkNvcHkgKz0gYnl0ZXNJbkxhc3RSb3cu
dmFsdWUoKTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4K
LSAgICBpZiAobGF5b3V0Lm9mZnNldCArIHJlcXVpcmVkQnl0ZXNJbkNvcHkgPiBieXRlU2l6ZSkK
KyAgICBhdXRvIGVuZCA9IENoZWNrZWRVaW50NjQobGF5b3V0Lm9mZnNldCkgKyByZXF1aXJlZEJ5
dGVzSW5Db3B5OworICAgIGlmIChlbmQuaGFzT3ZlcmZsb3dlZCgpIHx8IGVuZC52YWx1ZSgpID4g
Ynl0ZVNpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457227</attachid>
            <date>2022-04-10 19:56:38 -0700</date>
            <delta_ts>2022-04-10 20:31:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>29370</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDdlOTBlNGQ3ZWU1M2FjNDA0YzQ3ZThlYzdjODA2MTZkODFlNDRiYmMKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTdW4gQXByIDEw
IDE5OjU0OjQxIDIwMjIgLTA3MDAKCiAgICBDaGVja2VkIGFyaXRobWV0aWMKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4
IDg1MjI2MjEyMTM2Ny4uYTNhMzVjN2Q1Y2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisy
MDIyLTA0LTEwICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dlYkdQVV0gVXNlIGNoZWNrZWQgYXJpdGhtZXRpYworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MDU4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgaGF2ZSBhIGJ1bmNoIG9mIHBsYWNlcyB3
aGVyZSBvdmVyZmxvdyBjYW4gb2NjdXIuCisKKyAgICAgICAgTHVja2lseSwgd2UgY2FuIGp1c3Qg
ZGV0ZWN0IG92ZXJmbG93IGluc2lkZSB0aGUgdmFsaWRhdGlvbiBmdW5jdGlvbnMsIGFuZCBub3Qg
aGF2ZQorICAgICAgICB0byBkbyBhbnkgaW5zaWRlIHRoZSBjb2RlIHRoYXQgY3JlYXRlcyBwbGF0
Zm9ybSB0eXBlcyAoTlNVSW50ZWdlciwgZXRjLikuIFRoaXMgaXMKKyAgICAgICAgYmVjYXVzZSBp
ZiB0aGUgdmFsaWRhdGlvbiBjb2RlIHN1Y2NlZWRzLCB0aGVuIHdlIGFyZSBndWFyYW50ZWVkIHRo
YXQgdGhlIGNhc3QgdG8KKyAgICAgICAgTlNVSW50ZWdlcnMgd2lsbCBzdWNjZWVkLiBUaGlzIGlz
IGJlY2F1c2UgcmFuZ2VzIGluIGEgcmVzb3VyY2UgYXJlIGNoZWNrZWQgYWdhaW5zdAorICAgICAg
ICB0aGUgc2l6ZSBvZiB0aGUgcmVzb3VyY2UsIGFuZCB0aGUgc2l6ZSBvZiB0aGUgcmVzb3VyY2Ug
aGFzIGJlZW4gY2hlY2tlZCBhZ2FpbnN0CisgICAgICAgIHBsYXRmb3JtIG1heGltdW1zLCB3aGlj
aCBhcmUgZ3VhcmFudGVlZCB0byBiZSBzbWFsbGVyIHRoYW4gdGhlIGxhcmdlc3QgTlNVSW50ZWdl
ci4KKworICAgICAgICAqIFdlYkdQVS9CaW5kR3JvdXAubW06CisgICAgICAgIChXZWJHUFU6OkRl
dmljZTo6Y3JlYXRlQmluZEdyb3VwKToKKyAgICAgICAgKiBXZWJHUFUvQnVmZmVyLm1tOgorICAg
ICAgICAoV2ViR1BVOjpCdWZmZXI6OnZhbGlkYXRlR2V0TWFwcGVkUmFuZ2UgY29uc3QpOgorICAg
ICAgICAoV2ViR1BVOjpCdWZmZXI6OmdldE1hcHBlZFJhbmdlKToKKyAgICAgICAgKFdlYkdQVTo6
QnVmZmVyOjp2YWxpZGF0ZU1hcEFzeW5jIGNvbnN0KToKKyAgICAgICAgKFdlYkdQVTo6QnVmZmVy
OjptYXBBc3luYyk6CisgICAgICAgICogV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tOgorICAgICAg
ICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6dmFsaWRhdGVDb3B5QnVmZmVyVG9CdWZmZXIpOgor
ICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZSk6Cisg
ICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKToKKyAg
ICAgICAgKFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKToKKyAg
ICAgICAgKFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6OnZhbGlkYXRlQ2xlYXJCdWZmZXIpOgorICAg
ICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6Y2xlYXJCdWZmZXIpOgorICAgICAgICAqIFdl
YkdQVS9RdWV1ZS5tbToKKyAgICAgICAgKFdlYkdQVTo6UXVldWU6OnZhbGlkYXRlV3JpdGVCdWZm
ZXIgY29uc3QpOgorICAgICAgICAoV2ViR1BVOjpRdWV1ZTo6d3JpdGVUZXh0dXJlKToKKyAgICAg
ICAgKiBXZWJHUFUvVGV4dHVyZS5oOgorICAgICAgICAqIFdlYkdQVS9UZXh0dXJlLm1tOgorICAg
ICAgICAoV2ViR1BVOjpUZXh0dXJlOjpyZXNvbHZlVGV4dHVyZVZpZXdEZXNjcmlwdG9yRGVmYXVs
dHMgY29uc3QpOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlOjp2YWxpZGF0ZUNyZWF0ZVZpZXcg
Y29uc3QpOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlOjpjcmVhdGVWaWV3KToKKyAgICAgICAg
KFdlYkdQVTo6VGV4dHVyZTo6dmFsaWRhdGVUZXh0dXJlQ29weVJhbmdlKToKKyAgICAgICAgKFdl
YkdQVTo6VGV4dHVyZTo6dmFsaWRhdGVMaW5lYXJUZXh0dXJlRGF0YSk6CisKIDIwMjItMDQtMTAg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2Vi
R1BVXSBXZWJHUFUgc3RyaW5ncyBhcmUgVVRGLTgsIG5vdCBMYXRpbi0xCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXAubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9C
aW5kR3JvdXAubW0KaW5kZXggMThiNGU4ZDE4NzQ4Li42M2RjNTZjNWYyOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9CaW5kR3JvdXAubW0KQEAgLTU1LDYgKzU1LDggQEAgUmVmPEJpbmRHcm91cD4gRGV2aWNl
OjpjcmVhdGVCaW5kR3JvdXAoY29uc3QgV0dQVUJpbmRHcm91cERlc2NyaXB0b3ImIGRlc2NyaXB0
b3IKICAgICBpZiAoZGVzY3JpcHRvci5uZXh0SW5DaGFpbikKICAgICAgICAgcmV0dXJuIEJpbmRH
cm91cDo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiAKKyAgICAvLyBGSVhNRTogVmFsaWRhdGUgdGhp
cyBhY2NvcmRpbmcgdG8gdGhlIHNwZWMuCisKICAgICBjb25zdCBCaW5kR3JvdXBMYXlvdXQmIGJp
bmRHcm91cExheW91dCA9IFdlYkdQVTo6ZnJvbUFQSShkZXNjcmlwdG9yLmxheW91dCk7CiAKICAg
ICAvLyBGSVhNRShQRVJGT1JNQU5DRSk6IERvbid0IGFsbG9jYXRlIDMgbmV3IGJ1ZmZlcnMgZm9y
IGV2ZXJ5IGJpbmQgZ3JvdXAuCkBAIC05MSw3ICs5Myw2IEBAIFJlZjxCaW5kR3JvdXA+IERldmlj
ZTo6Y3JlYXRlQmluZEdyb3VwKGNvbnN0IFdHUFVCaW5kR3JvdXBEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yCiAKICAgICAgICAgaWYgKGJ1ZmZlcklzUHJlc2VudCkgewogICAgICAgICAgICAgaWQ8TVRM
QnVmZmVyPiBidWZmZXIgPSBXZWJHUFU6OmZyb21BUEkoZW50cnkuYnVmZmVyKS5idWZmZXIoKTsK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBjYXN0cy4KICAgICAgICAgICAgIFt2
ZXJ0ZXhBcmd1bWVudEVuY29kZXIgc2V0QnVmZmVyOmJ1ZmZlciBvZmZzZXQ6c3RhdGljX2Nhc3Q8
TlNVSW50ZWdlcj4oZW50cnkub2Zmc2V0KSBhdEluZGV4OmVudHJ5LmJpbmRpbmddOwogICAgICAg
ICAgICAgW2ZyYWdtZW50QXJndW1lbnRFbmNvZGVyIHNldEJ1ZmZlcjpidWZmZXIgb2Zmc2V0OnN0
YXRpY19jYXN0PE5TVUludGVnZXI+KGVudHJ5Lm9mZnNldCkgYXRJbmRleDplbnRyeS5iaW5kaW5n
XTsKICAgICAgICAgICAgIFtjb21wdXRlQXJndW1lbnRFbmNvZGVyIHNldEJ1ZmZlcjpidWZmZXIg
b2Zmc2V0OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KGVudHJ5Lm9mZnNldCkgYXRJbmRleDplbnRy
eS5iaW5kaW5nXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbSBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbQppbmRleCBiYTJjYTMxYzg3YTUuLjQ2MmU3
NWI2NGE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLm1tCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1w
b3J0ICJBUElDb252ZXJzaW9ucy5oIgogI2ltcG9ydCAiRGV2aWNlLmgiCisjaW1wb3J0IDx3dGYv
Q2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFt
ZXNwYWNlIFdlYkdQVSB7CkBAIC0xNzYsOSArMTc3LDggQEAgYm9vbCBCdWZmZXI6OnZhbGlkYXRl
R2V0TWFwcGVkUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHJhbmdlU2l6ZSkgY29uc3QKICAg
ICBpZiAob2Zmc2V0IDwgbV9tYXBwaW5nUmFuZ2UuYmVnaW5PZmZzZXQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIC8vIEZJWE1FOiBVc2VkIGNoZWNrZWQgYXJpdGhtZXRpYy4KLSAgICBh
dXRvIGVuZE9mZnNldCA9IG9mZnNldCArIHJhbmdlU2l6ZTsKLSAgICBpZiAoZW5kT2Zmc2V0ID4g
bV9tYXBwaW5nUmFuZ2UuZW5kT2Zmc2V0KQorICAgIGF1dG8gZW5kT2Zmc2V0ID0gQ2hlY2tlZFNp
emUob2Zmc2V0KSArIENoZWNrZWRTaXplKHJhbmdlU2l6ZSk7CisgICAgaWYgKGVuZE9mZnNldC5o
YXNPdmVyZmxvd2VkKCkgfHwgZW5kT2Zmc2V0LnZhbHVlKCkgPiBtX21hcHBpbmdSYW5nZS5lbmRP
ZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX21hcHBlZFJhbmdlcy5v
dmVybGFwcyh7IG9mZnNldCwgZW5kT2Zmc2V0IH0pKQpAQCAtMTkxLDE3ICsxOTEsMTkgQEAgdm9p
ZCogQnVmZmVyOjpnZXRNYXBwZWRSYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSkKIHsK
ICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1YnVmZmVyLWdl
dG1hcHBlZHJhbmdlCiAKLSAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KLSAg
ICBhdXRvIHJhbmdlU2l6ZSA9IHNpemU7Ci0gICAgaWYgKHNpemUgPT0gV0dQVV9XSE9MRV9NQVBf
U0laRSkKLSAgICAgICAgcmFuZ2VTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdGQ6Om1heChz
dGF0aWNfY2FzdDx1aW50NjRfdD4oMCksIG1fc2l6ZSAtIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihv
ZmZzZXQpKSk7CisgICAgQ2hlY2tlZFNpemUgcmFuZ2VTaXplID0gc2l6ZTsKKyAgICBpZiAoc2l6
ZSA9PSBXR1BVX1dIT0xFX01BUF9TSVpFKSB7CisgICAgICAgIGF1dG8gcmVtYWluZGVyID0gQ2hl
Y2tlZFVpbnQ2NChtX3NpemUpIC0gQ2hlY2tlZFVpbnQ2NChvZmZzZXQpOworICAgICAgICBpZiAo
IXJlbWFpbmRlci5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgICAgICByYW5nZVNpemUgPSBzdGQ6
Om1heChzdGF0aWNfY2FzdDx1aW50NjRfdD4oMCksIHJlbWFpbmRlci52YWx1ZSgpKTsKKyAgICB9
CiAKLSAgICBpZiAoIXZhbGlkYXRlR2V0TWFwcGVkUmFuZ2Uob2Zmc2V0LCByYW5nZVNpemUpKSB7
CisgICAgaWYgKHJhbmdlU2l6ZS5oYXNPdmVyZmxvd2VkKCkgfHwgIXZhbGlkYXRlR2V0TWFwcGVk
UmFuZ2Uob2Zmc2V0LCByYW5nZVNpemUudmFsdWUoKSkpIHsKICAgICAgICAgLy8gRklYTUU6ICJ0
aHJvdyBhbiBPcGVyYXRpb25FcnJvciBhbmQgc3RvcC4iCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAotICAgIG1fbWFwcGVkUmFuZ2VzLmFkZCh7IG9mZnNldCwgb2Zmc2V0ICsgcmFu
Z2VTaXplIH0pOworICAgIG1fbWFwcGVkUmFuZ2VzLmFkZCh7IG9mZnNldCwgb2Zmc2V0ICsgcmFu
Z2VTaXplLnZhbHVlKCkgfSk7CiAgICAgbV9tYXBwZWRSYW5nZXMuY29tcGFjdCgpOwogCiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGNoYXIqPihtX2J1ZmZlci5jb250ZW50cykgKyBvZmZzZXQ7CkBA
IC0yMjAsOCArMjIyLDggQEAgYm9vbCBCdWZmZXI6OnZhbGlkYXRlTWFwQXN5bmMoV0dQVU1hcE1v
ZGVGbGFncyBtb2RlLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgcmFuZ2UKICAgICBpZiAocmFuZ2VT
aXplICUgNCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gRklYTUU6IFVzZSBjaGVj
a2VkIGFyaXRobWV0aWMuCi0gICAgaWYgKHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQgKyBy
YW5nZVNpemUpID4gbV9zaXplKQorICAgIGF1dG8gZW5kID0gQ2hlY2tlZFVpbnQ2NChDaGVja2Vk
U2l6ZShvZmZzZXQpICsgQ2hlY2tlZFNpemUocmFuZ2VTaXplKSk7CisgICAgaWYgKGVuZC5oYXNP
dmVyZmxvd2VkKCkgfHwgZW5kLnZhbHVlKCkgPiBtX3NpemUpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIGlmIChtX3N0YXRlICE9IFN0YXRlOjpVbm1hcHBlZCkKQEAgLTI0NCwxMiArMjQ2
LDE0IEBAIHZvaWQgQnVmZmVyOjptYXBBc3luYyhXR1BVTWFwTW9kZUZsYWdzIG1vZGUsIHNpemVf
dCBvZmZzZXQsIHNpemVfdCBzaXplLCBDb21wbGV0CiB7CiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIu
Z2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdWJ1ZmZlci1tYXBhc3luYwogCi0gICAgLy8gRklYTUU6
IFVzZSBjaGVja2VkIGFyaXRobWV0aWMuCi0gICAgYXV0byByYW5nZVNpemUgPSBzaXplOwotICAg
IGlmIChzaXplID09IFdHUFVfV0hPTEVfTUFQX1NJWkUpCi0gICAgICAgIHJhbmdlU2l6ZSA9IHN0
YXRpY19jYXN0PHNpemVfdD4oc3RkOjptYXgoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDApLCBzdGF0
aWNfY2FzdDx1aW50NjRfdD4obV9zaXplIC0gb2Zmc2V0KSkpOworICAgIENoZWNrZWRTaXplIHJh
bmdlU2l6ZSA9IHNpemU7CisgICAgaWYgKHNpemUgPT0gV0dQVV9XSE9MRV9NQVBfU0laRSkgewor
ICAgICAgICBhdXRvIHJlbWFpbmRlciA9IENoZWNrZWRVaW50NjQobV9zaXplKSAtIENoZWNrZWRV
aW50NjQob2Zmc2V0KTsKKyAgICAgICAgaWYgKCFyZW1haW5kZXIuaGFzT3ZlcmZsb3dlZCgpKQor
ICAgICAgICAgICAgcmFuZ2VTaXplID0gc3RkOjptYXgoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDAp
LCByZW1haW5kZXIudmFsdWUoKSk7CisgICAgfQogCi0gICAgaWYgKCF2YWxpZGF0ZU1hcEFzeW5j
KG1vZGUsIG9mZnNldCwgcmFuZ2VTaXplKSkgeworICAgIGlmIChyYW5nZVNpemUuaGFzT3ZlcmZs
b3dlZCgpIHx8ICF2YWxpZGF0ZU1hcEFzeW5jKG1vZGUsIG9mZnNldCwgcmFuZ2VTaXplLnZhbHVl
KCkpKSB7CiAgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlk
YXRpb24gZmFpbHVyZS4iX3MpOwogCiAgICAgICAgIG1fZGV2aWNlLT5pbnN0YW5jZSgpLnNjaGVk
dWxlV29yayhbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oKSBtdXRhYmxlIHsKQEAgLTI2
Miw3ICsyNjYsNyBAQCB2b2lkIEJ1ZmZlcjo6bWFwQXN5bmMoV0dQVU1hcE1vZGVGbGFncyBtb2Rl
LCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwgQ29tcGxldAogCiAgICAgbV9tYXBNb2RlID0g
bW9kZTsKIAotICAgIG1fZGV2aWNlLT5nZXRRdWV1ZSgpLm9uU3VibWl0dGVkV29ya0RvbmUoMCwg
W3Byb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBvZmZzZXQsIHJhbmdlU2l6ZSwgY2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oV0dQVVF1ZXVlV29ya0RvbmVTdGF0dXMgc3RhdHVzKSBt
dXRhYmxlIHsKKyAgICBtX2RldmljZS0+Z2V0UXVldWUoKS5vblN1Ym1pdHRlZFdvcmtEb25lKDAs
IFtwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgb2Zmc2V0LCByYW5nZVNpemUgPSByYW5n
ZVNpemUudmFsdWUoKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oV0dQVVF1ZXVlV29y
a0RvbmVTdGF0dXMgc3RhdHVzKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMt
Pm1fc3RhdGUgPT0gU3RhdGU6Ok1hcHBpbmdQZW5kaW5nKSB7CiAgICAgICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5tX3N0YXRlID0gU3RhdGU6Ok1hcHBlZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21t
YW5kRW5jb2Rlci5tbQppbmRleCA5Y2EzNjQwMjYwNmQuLjE4Yjc0YjRjMzU3NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KQEAgLTM1LDYgKzM1LDcgQEAKICNpbXBvcnQg
IlF1ZXJ5U2V0LmgiCiAjaW1wb3J0ICJSZW5kZXJQYXNzRW5jb2Rlci5oIgogI2ltcG9ydCAiVGV4
dHVyZS5oIgorI2ltcG9ydCA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAKIG5hbWVzcGFjZSBX
ZWJHUFUgewogCkBAIC0xMjEsMjEgKzEyMiwyMCBAQCBib29sIENvbW1hbmRFbmNvZGVyOjp2YWxp
ZGF0ZUNvcHlCdWZmZXJUb0J1ZmZlcihjb25zdCBCdWZmZXImIHNvdXJjZSwgdWludDY0X3Qgcwog
ICAgIGlmIChkZXN0aW5hdGlvbk9mZnNldCAlIDQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIC8vIEZJWE1FOiAiKHNvdXJjZU9mZnNldCArIHNpemUpIGRvZXMgbm90IG92ZXJmbG93IGEg
R1BVU2l6ZTY0LiIKKyAgICBhdXRvIHNvdXJjZUVuZCA9IENoZWNrZWRVaW50NjQoc291cmNlT2Zm
c2V0KSArIENoZWNrZWRVaW50NjQoc2l6ZSk7CisgICAgaWYgKHNvdXJjZUVuZC5oYXNPdmVyZmxv
d2VkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vIEZJWE1FOiAiKGRlc3RpbmF0
aW9uT2Zmc2V0ICsgc2l6ZSkgZG9lcyBub3Qgb3ZlcmZsb3cgYSBHUFVTaXplNjQuIgorICAgIGF1
dG8gZGVzdGluYXRpb25FbmQgPSBDaGVja2VkVWludDY0KGRlc3RpbmF0aW9uT2Zmc2V0KSArIENo
ZWNrZWRVaW50NjQoc2l6ZSk7CisgICAgaWYgKGRlc3RpbmF0aW9uRW5kLmhhc092ZXJmbG93ZWQo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gRklYTUU6ICJzb3VyY2UuW1tzaXpl
XV0gaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIChzb3VyY2VPZmZzZXQgKyBzaXplKS4iCi0g
ICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMKLSAgICBpZiAoc291cmNlLnNpemUo
KSA8IHNvdXJjZU9mZnNldCArIHNpemUpCisgICAgaWYgKHNvdXJjZS5zaXplKCkgPCBzb3VyY2VF
bmQudmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gRklYTUU6ICJkZXN0
aW5hdGlvbi5bW3NpemVdXSBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gKGRlc3RpbmF0aW9u
T2Zmc2V0ICsgc2l6ZSkuIgotICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljCi0g
ICAgaWYgKGRlc3RpbmF0aW9uLnNpemUoKSA8IGRlc3RpbmF0aW9uT2Zmc2V0ICsgc2l6ZSkKKyAg
ICBpZiAoZGVzdGluYXRpb24uc2l6ZSgpIDwgZGVzdGluYXRpb25FbmQudmFsdWUoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gRklYTUU6ICJzb3VyY2UgYW5kIGRlc3RpbmF0aW9u
IGFyZSBub3QgdGhlIHNhbWUgR1BVQnVmZmVyLiIKICAgICBpZiAoJnNvdXJjZSA9PSAmZGVzdGlu
YXRpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjU3LDcgKzI1Nyw2IEBAIHZvaWQg
Q29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weUJ1
ZmZlciYgc291cmNlLCBjb25zCiAKICAgICBOU1VJbnRlZ2VyIHNvdXJjZUJ5dGVzUGVyUm93ID0g
c291cmNlLmxheW91dC5ieXRlc1BlclJvdzsKIAotICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBh
cml0aG1ldGljCiAgICAgTlNVSW50ZWdlciBzb3VyY2VCeXRlc1BlckltYWdlID0gc291cmNlLmxh
eW91dC5yb3dzUGVySW1hZ2UgKiBzb3VyY2UubGF5b3V0LmJ5dGVzUGVyUm93OwogCiAgICAgTVRM
QmxpdE9wdGlvbiBvcHRpb25zID0gTVRMQmxpdE9wdGlvbk5vbmU7CkBAIC0yODksNyArMjg4LDYg
QEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZShjb25zdCBXR1BVSW1h
Z2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAgICAgICAgYXV0byBzb3VyY2VTaXplID0gTVRM
U2l6ZU1ha2Uod2lkdGhGb3JNZXRhbCwgMSwgMSk7CiAgICAgICAgIGF1dG8gZGVzdGluYXRpb25P
cmlnaW4gPSBNVExPcmlnaW5NYWtlKGRlc3RpbmF0aW9uLm9yaWdpbi54LCAxLCAxKTsKICAgICAg
ICAgZm9yICh1aW50MzJfdCBsYXllciA9IDA7IGxheWVyIDwgY29weVNpemUuZGVwdGhPckFycmF5
TGF5ZXJzOyArK2xheWVyKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJp
dGhtZXRpYy4KICAgICAgICAgICAgIGF1dG8gc291cmNlT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8TlNV
SW50ZWdlcj4oc291cmNlLmxheW91dC5vZmZzZXQgKyBsYXllciAqIHNvdXJjZUJ5dGVzUGVySW1h
Z2UpOwogICAgICAgICAgICAgTlNVSW50ZWdlciBkZXN0aW5hdGlvblNsaWNlID0gZGVzdGluYXRp
b24ub3JpZ2luLnogKyBsYXllcjsKICAgICAgICAgICAgIFttX2JsaXRDb21tYW5kRW5jb2RlcgpA
QCAtMzEyLDcgKzMxMCw2IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb1RleHR1
cmUoY29uc3QgV0dQVUltYWdlQ29weUJ1ZmZlciYgc291cmNlLCBjb25zCiAgICAgICAgIGF1dG8g
c291cmNlU2l6ZSA9IE1UTFNpemVNYWtlKHdpZHRoRm9yTWV0YWwsIGhlaWdodEZvck1ldGFsLCAx
KTsKICAgICAgICAgYXV0byBkZXN0aW5hdGlvbk9yaWdpbiA9IE1UTE9yaWdpbk1ha2UoZGVzdGlu
YXRpb24ub3JpZ2luLngsIGRlc3RpbmF0aW9uLm9yaWdpbi55LCAxKTsKICAgICAgICAgZm9yICh1
aW50MzJfdCBsYXllciA9IDA7IGxheWVyIDwgY29weVNpemUuZGVwdGhPckFycmF5TGF5ZXJzOyAr
K2xheWVyKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4K
ICAgICAgICAgICAgIGF1dG8gc291cmNlT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4o
c291cmNlLmxheW91dC5vZmZzZXQgKyBsYXllciAqIHNvdXJjZUJ5dGVzUGVySW1hZ2UpOwogICAg
ICAgICAgICAgTlNVSW50ZWdlciBkZXN0aW5hdGlvblNsaWNlID0gZGVzdGluYXRpb24ub3JpZ2lu
LnogKyBsYXllcjsKICAgICAgICAgICAgIFttX2JsaXRDb21tYW5kRW5jb2RlcgpAQCAtNDIyLDcg
KzQxOSw2IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIoY29uc3Qg
V0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY29uCiAKICAgICBOU1VJbnRlZ2VyIGRlc3Rp
bmF0aW9uQnl0ZXNQZXJSb3cgPSBkZXN0aW5hdGlvbi5sYXlvdXQuYnl0ZXNQZXJSb3c7CiAKLSAg
ICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYwogICAgIE5TVUludGVnZXIgZGVzdGlu
YXRpb25CeXRlc1BlckltYWdlID0gZGVzdGluYXRpb24ubGF5b3V0LnJvd3NQZXJJbWFnZSAqIGRl
c3RpbmF0aW9uLmxheW91dC5ieXRlc1BlclJvdzsKIAogICAgIE1UTEJsaXRPcHRpb24gb3B0aW9u
cyA9IE1UTEJsaXRPcHRpb25Ob25lOwpAQCAtNDU0LDcgKzQ1MCw2IEBAIHZvaWQgQ29tbWFuZEVu
Y29kZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNv
dXJjZSwgY29uCiAgICAgICAgIGF1dG8gc291cmNlU2l6ZSA9IE1UTFNpemVNYWtlKHdpZHRoRm9y
TWV0YWwsIDEsIDEpOwogICAgICAgICBhdXRvIHNvdXJjZU9yaWdpbiA9IE1UTE9yaWdpbk1ha2Uo
c291cmNlLm9yaWdpbi54LCAxLCAxKTsKICAgICAgICAgZm9yICh1aW50MzJfdCBsYXllciA9IDA7
IGxheWVyIDwgY29weVNpemUuZGVwdGhPckFycmF5TGF5ZXJzOyArK2xheWVyKSB7Ci0gICAgICAg
ICAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KICAgICAgICAgICAgIGF1dG8g
ZGVzdGluYXRpb25PZmZzZXQgPSBzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihkZXN0aW5hdGlvbi5s
YXlvdXQub2Zmc2V0ICsgbGF5ZXIgKiBkZXN0aW5hdGlvbkJ5dGVzUGVySW1hZ2UpOwogICAgICAg
ICAgICAgTlNVSW50ZWdlciBzb3VyY2VTbGljZSA9IHNvdXJjZS5vcmlnaW4ueiArIGxheWVyOwog
ICAgICAgICAgICAgW21fYmxpdENvbW1hbmRFbmNvZGVyCkBAIC00NzcsNyArNDcyLDYgQEAgdm9p
ZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5
VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAgICAgYXV0byBzb3VyY2VTaXplID0gTVRMU2l6ZU1h
a2Uod2lkdGhGb3JNZXRhbCwgaGVpZ2h0Rm9yTWV0YWwsIDEpOwogICAgICAgICBhdXRvIHNvdXJj
ZU9yaWdpbiA9IE1UTE9yaWdpbk1ha2Uoc291cmNlLm9yaWdpbi54LCBzb3VyY2Uub3JpZ2luLnks
IDEpOwogICAgICAgICBmb3IgKHVpbnQzMl90IGxheWVyID0gMDsgbGF5ZXIgPCBjb3B5U2l6ZS5k
ZXB0aE9yQXJyYXlMYXllcnM7ICsrbGF5ZXIpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBVc2Ug
Y2hlY2tlZCBhcml0aG1ldGljLgogICAgICAgICAgICAgYXV0byBkZXN0aW5hdGlvbk9mZnNldCA9
IHN0YXRpY19jYXN0PE5TVUludGVnZXI+KGRlc3RpbmF0aW9uLmxheW91dC5vZmZzZXQgKyBsYXll
ciAqIGRlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZSk7CiAgICAgICAgICAgICBOU1VJbnRlZ2VyIHNv
dXJjZVNsaWNlID0gc291cmNlLm9yaWdpbi56ICsgbGF5ZXI7CiAgICAgICAgICAgICBbbV9ibGl0
Q29tbWFuZEVuY29kZXIKQEAgLTYxNyw3ICs2MTEsNiBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpj
b3B5VGV4dHVyZVRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBj
bwogICAgICAgICBhdXRvIHNvdXJjZU9yaWdpbiA9IE1UTE9yaWdpbk1ha2Uoc291cmNlLm9yaWdp
bi54LCAxLCAxKTsKICAgICAgICAgYXV0byBkZXN0aW5hdGlvbk9yaWdpbiA9IE1UTE9yaWdpbk1h
a2UoZGVzdGluYXRpb24ub3JpZ2luLngsIDEsIDEpOwogICAgICAgICBmb3IgKHVpbnQzMl90IGxh
eWVyID0gMDsgbGF5ZXIgPCBjb3B5U2l6ZS5kZXB0aE9yQXJyYXlMYXllcnM7ICsrbGF5ZXIpIHsK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljLgogICAgICAgICAg
ICAgTlNVSW50ZWdlciBzb3VyY2VTbGljZSA9IHNvdXJjZS5vcmlnaW4ueiArIGxheWVyOwogICAg
ICAgICAgICAgTlNVSW50ZWdlciBkZXN0aW5hdGlvblNsaWNlID0gZGVzdGluYXRpb24ub3JpZ2lu
LnogKyBsYXllcjsKICAgICAgICAgICAgIFttX2JsaXRDb21tYW5kRW5jb2RlcgpAQCAtNjQwLDcg
KzYzMyw2IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKGNvbnN0
IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBzb3VyY2UsIGNvCiAgICAgICAgIGF1dG8gc291cmNlT3Jp
Z2luID0gTVRMT3JpZ2luTWFrZShzb3VyY2Uub3JpZ2luLngsIHNvdXJjZS5vcmlnaW4ueSwgMSk7
CiAgICAgICAgIGF1dG8gZGVzdGluYXRpb25PcmlnaW4gPSBNVExPcmlnaW5NYWtlKGRlc3RpbmF0
aW9uLm9yaWdpbi54LCBkZXN0aW5hdGlvbi5vcmlnaW4ueSwgMSk7CiAgICAgICAgIGZvciAodWlu
dDMyX3QgbGF5ZXIgPSAwOyBsYXllciA8IGNvcHlTaXplLmRlcHRoT3JBcnJheUxheWVyczsgKyts
YXllcikgewotICAgICAgICAgICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMuCiAg
ICAgICAgICAgICBOU1VJbnRlZ2VyIHNvdXJjZVNsaWNlID0gc291cmNlLm9yaWdpbi56ICsgbGF5
ZXI7CiAgICAgICAgICAgICBOU1VJbnRlZ2VyIGRlc3RpbmF0aW9uU2xpY2UgPSBkZXN0aW5hdGlv
bi5vcmlnaW4ueiArIGxheWVyOwogICAgICAgICAgICAgW21fYmxpdENvbW1hbmRFbmNvZGVyCkBA
IC02OTIsOCArNjg0LDggQEAgYm9vbCBDb21tYW5kRW5jb2Rlcjo6dmFsaWRhdGVDbGVhckJ1ZmZl
cihjb25zdCBCdWZmZXImIGJ1ZmZlciwgdWludDY0X3Qgb2Zmc2V0LAogICAgIGlmIChvZmZzZXQg
JSA0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQg
YXJpdGhtZXRpYy4KLSAgICBpZiAoYnVmZmVyLnNpemUoKSA8IG9mZnNldCArIHNpemUpCisgICAg
YXV0byBlbmQgPSBDaGVja2VkVWludDY0KG9mZnNldCkgKyBDaGVja2VkVWludDY0KHNpemUpOwor
ICAgIGlmIChlbmQuaGFzT3ZlcmZsb3dlZCgpIHx8IGJ1ZmZlci5zaXplKCkgPCBlbmQudmFsdWUo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC03MDcsOCAr
Njk5LDEyIEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNsZWFyQnVmZmVyKGNvbnN0IEJ1ZmZlciYg
YnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90CiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChzaXplID09IFdHUFVfV0hPTEVfU0laRSkgewotICAgICAgICAvLyBGSVhNRTogVXNlIGNo
ZWNrZWQgYXJpdGhtZXRpYy4KLSAgICAgICAgc2l6ZSA9IGJ1ZmZlci5zaXplKCkgLSBvZmZzZXQ7
CisgICAgICAgIGF1dG8gbG9jYWxTaXplID0gQ2hlY2tlZFVpbnQ2NChidWZmZXIuc2l6ZSgpKSAt
IENoZWNrZWRVaW50NjQob2Zmc2V0KTsKKyAgICAgICAgaWYgKGxvY2FsU2l6ZS5oYXNPdmVyZmxv
d2VkKCkpIHsKKyAgICAgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3Io
IkNvbW1hbmRFbmNvZGVyOjpjbGVhckJ1ZmZlcigpOiBvZmZzZXQgPiBidWZmZXIuc2l6ZSJfcyk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgc2l6ZSA9IGxvY2FsU2l6
ZS52YWx1ZSgpOwogICAgIH0KIAogICAgIGlmICghdmFsaWRhdGVDbGVhckJ1ZmZlcihidWZmZXIs
IG9mZnNldCwgc2l6ZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVl
Lm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUubW0KaW5kZXggMDc3ZDQxYTI4MDg5Li40
OTg5YWYxNTk1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLm1tCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLm1tCkBAIC0zMiw2ICszMiw3IEBACiAjaW1w
b3J0ICJEZXZpY2UuaCIKICNpbXBvcnQgIklzVmFsaWRUb1VzZVdpdGguaCIKICNpbXBvcnQgIlRl
eHR1cmUuaCIKKyNpbXBvcnQgPHd0Zi9DaGVja2VkQXJpdGhtZXRpYy5oPgogCiBuYW1lc3BhY2Ug
V2ViR1BVIHsKIApAQCAtMTcxLDggKzE3Miw4IEBAIGJvb2wgUXVldWU6OnZhbGlkYXRlV3JpdGVC
dWZmZXIoY29uc3QgQnVmZmVyJiBidWZmZXIsIHVpbnQ2NF90IGJ1ZmZlck9mZnNldCwgc2l6CiAg
ICAgaWYgKGJ1ZmZlck9mZnNldCAlIDQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8v
IEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljCi0gICAgaWYgKGJ1ZmZlck9mZnNldCArIHNp
emUgPiBidWZmZXIuc2l6ZSgpKQorICAgIGF1dG8gZW5kID0gQ2hlY2tlZFVpbnQ2NChidWZmZXJP
ZmZzZXQpICsgQ2hlY2tlZFVpbnQ2NChzaXplKTsKKyAgICBpZiAoZW5kLmhhc092ZXJmbG93ZWQo
KSB8fCBlbmQudmFsdWUoKSA+IGJ1ZmZlci5zaXplKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIHJldHVybiB0cnVlOwpAQCAtMjgzLDcgKzI4NCw2IEBAIHZvaWQgUXVldWU6OndyaXRl
VGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgZGVzdGluYXRpb24sIGNvbnN0IHZv
aWQqIGRhCiAKICAgICBOU1VJbnRlZ2VyIGJ5dGVzUGVyUm93ID0gZGF0YUxheW91dC5ieXRlc1Bl
clJvdzsKIAotICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljLgogICAgIE5TVUlu
dGVnZXIgYnl0ZXNQZXJJbWFnZSA9IGRhdGFMYXlvdXQuYnl0ZXNQZXJSb3cgKiBkYXRhTGF5b3V0
LnJvd3NQZXJJbWFnZTsKIAogICAgIE1UTEJsaXRPcHRpb24gb3B0aW9ucyA9IE1UTEJsaXRPcHRp
b25Ob25lOwpAQCAtMzE1LDcgKzMxNSw2IEBAIHZvaWQgUXVldWU6OndyaXRlVGV4dHVyZShjb25z
dCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgZGVzdGluYXRpb24sIGNvbnN0IHZvaWQqIGRhCiAgICAg
ICAgICAgICAgICAgY2FzZSBXR1BVVGV4dHVyZURpbWVuc2lvbl8xRDogewogICAgICAgICAgICAg
ICAgICAgICBhdXRvIHJlZ2lvbiA9IE1UTFJlZ2lvbk1ha2UxRChkZXN0aW5hdGlvbi5vcmlnaW4u
eCwgc2l6ZS53aWR0aCk7CiAgICAgICAgICAgICAgICAgICAgIGZvciAodWludDMyX3QgbGF5ZXIg
PSAwOyBsYXllciA8IHNpemUuZGVwdGhPckFycmF5TGF5ZXJzOyArK2xheWVyKSB7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KICAgICAg
ICAgICAgICAgICAgICAgICAgIGF1dG8gc291cmNlT2Zmc2V0ID0gc3RhdGljX2Nhc3Q8TlNVSW50
ZWdlcj4oZGF0YUxheW91dC5vZmZzZXQgKyBsYXllciAqIGJ5dGVzUGVySW1hZ2UpOwogICAgICAg
ICAgICAgICAgICAgICAgICAgTlNVSW50ZWdlciBkZXN0aW5hdGlvblNsaWNlID0gZGVzdGluYXRp
b24ub3JpZ2luLnogKyBsYXllcjsKICAgICAgICAgICAgICAgICAgICAgICAgIFtmcm9tQVBJKGRl
c3RpbmF0aW9uLnRleHR1cmUpLnRleHR1cmUoKQpAQCAtMzMxLDcgKzMzMCw2IEBAIHZvaWQgUXVl
dWU6OndyaXRlVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgZGVzdGluYXRpb24s
IGNvbnN0IHZvaWQqIGRhCiAgICAgICAgICAgICAgICAgY2FzZSBXR1BVVGV4dHVyZURpbWVuc2lv
bl8yRDogewogICAgICAgICAgICAgICAgICAgICBhdXRvIHJlZ2lvbiA9IE1UTFJlZ2lvbk1ha2Uy
RChkZXN0aW5hdGlvbi5vcmlnaW4ueCwgZGVzdGluYXRpb24ub3JpZ2luLnksIHNpemUud2lkdGgs
IHNpemUuaGVpZ2h0KTsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1aW50MzJfdCBsYXllciA9
IDA7IGxheWVyIDwgc2l6ZS5kZXB0aE9yQXJyYXlMYXllcnM7ICsrbGF5ZXIpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljLgogICAgICAg
ICAgICAgICAgICAgICAgICAgYXV0byBzb3VyY2VPZmZzZXQgPSBzdGF0aWNfY2FzdDxOU1VJbnRl
Z2VyPihkYXRhTGF5b3V0Lm9mZnNldCArIGxheWVyICogYnl0ZXNQZXJJbWFnZSk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBOU1VJbnRlZ2VyIGRlc3RpbmF0aW9uU2xpY2UgPSBkZXN0aW5hdGlv
bi5vcmlnaW4ueiArIGxheWVyOwogICAgICAgICAgICAgICAgICAgICAgICAgW2Zyb21BUEkoZGVz
dGluYXRpb24udGV4dHVyZSkudGV4dHVyZSgpCkBAIC0zOTAsNyArMzg4LDYgQEAgdm9pZCBRdWV1
ZTo6d3JpdGVUZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBkZXN0aW5hdGlvbiwg
Y29uc3Qgdm9pZCogZGEKICAgICAgICAgYXV0byBzb3VyY2VTaXplID0gTVRMU2l6ZU1ha2Uod2lk
dGhGb3JNZXRhbCwgMSwgMSk7CiAgICAgICAgIGF1dG8gZGVzdGluYXRpb25PcmlnaW4gPSBNVExP
cmlnaW5NYWtlKGRlc3RpbmF0aW9uLm9yaWdpbi54LCAxLCAxKTsKICAgICAgICAgZm9yICh1aW50
MzJfdCBsYXllciA9IDA7IGxheWVyIDwgc2l6ZS5kZXB0aE9yQXJyYXlMYXllcnM7ICsrbGF5ZXIp
IHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljLgogICAgICAg
ICAgICAgTlNVSW50ZWdlciBzb3VyY2VPZmZzZXQgPSBsYXllciAqIGJ5dGVzUGVySW1hZ2U7CiAg
ICAgICAgICAgICBOU1VJbnRlZ2VyIGRlc3RpbmF0aW9uU2xpY2UgPSBkZXN0aW5hdGlvbi5vcmln
aW4ueiArIGxheWVyOwogICAgICAgICAgICAgW21fYmxpdENvbW1hbmRFbmNvZGVyCkBAIC00MTMs
NyArNDEwLDYgQEAgdm9pZCBRdWV1ZTo6d3JpdGVUZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlU
ZXh0dXJlJiBkZXN0aW5hdGlvbiwgY29uc3Qgdm9pZCogZGEKICAgICAgICAgYXV0byBzb3VyY2VT
aXplID0gTVRMU2l6ZU1ha2Uod2lkdGhGb3JNZXRhbCwgaGVpZ2h0Rm9yTWV0YWwsIDEpOwogICAg
ICAgICBhdXRvIGRlc3RpbmF0aW9uT3JpZ2luID0gTVRMT3JpZ2luTWFrZShkZXN0aW5hdGlvbi5v
cmlnaW4ueCwgZGVzdGluYXRpb24ub3JpZ2luLnksIDEpOwogICAgICAgICBmb3IgKHVpbnQzMl90
IGxheWVyID0gMDsgbGF5ZXIgPCBzaXplLmRlcHRoT3JBcnJheUxheWVyczsgKytsYXllcikgewot
ICAgICAgICAgICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMuCiAgICAgICAgICAg
ICBOU1VJbnRlZ2VyIHNvdXJjZU9mZnNldCA9IGxheWVyICogYnl0ZXNQZXJJbWFnZTsKICAgICAg
ICAgICAgIE5TVUludGVnZXIgZGVzdGluYXRpb25TbGljZSA9IGRlc3RpbmF0aW9uLm9yaWdpbi56
ICsgbGF5ZXI7CiAgICAgICAgICAgICBbbV9ibGl0Q29tbWFuZEVuY29kZXIKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1Rl
eHR1cmUuaAppbmRleCA0ZmZhMjZiZjlmNWEuLmZkYjhhMThhZTU2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1Rl
eHR1cmUuaApAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgogICAgIFRleHR1cmUoaWQ8TVRMVGV4
dHVyZT4sIGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYsIFZlY3RvcjxXR1BVVGV4dHVyZUZv
cm1hdD4mJiB2aWV3Rm9ybWF0cywgRGV2aWNlJik7CiAgICAgVGV4dHVyZShEZXZpY2UmKTsKIAot
ICAgIFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IgcmVzb2x2ZVRleHR1cmVWaWV3RGVzY3JpcHRv
ckRlZmF1bHRzKGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImKSBjb25zdDsKKyAgICBz
dGQ6Om9wdGlvbmFsPFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3I+IHJlc29sdmVUZXh0dXJlVmll
d0Rlc2NyaXB0b3JEZWZhdWx0cyhjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJikgY29u
c3Q7CiAgICAgdWludDMyX3QgYXJyYXlMYXllckNvdW50KCkgY29uc3Q7CiAgICAgYm9vbCB2YWxp
ZGF0ZUNyZWF0ZVZpZXcoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvVGV4dHVyZS5tbQppbmRleCAyYzgwZmZiNDk4MGUuLjkzMDc5ZTkzNGMzYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5tbQorKysgYi9Tb3VyY2Uv
V2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJBUElD
b252ZXJzaW9ucy5oIgogI2ltcG9ydCAiRGV2aWNlLmgiCiAjaW1wb3J0ICJUZXh0dXJlVmlldy5o
IgorI2ltcG9ydCA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+CiAjaW1wb3J0IDx3dGYvTWF0aEV4
dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKQEAgLTIwNjgsNyArMjA2OSw3IEBAIFRleHR1
cmU6OlRleHR1cmUoRGV2aWNlJiBkZXZpY2UpCiAKIFRleHR1cmU6On5UZXh0dXJlKCkgPSBkZWZh
dWx0OwogCi1XR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yIFRleHR1cmU6OnJlc29sdmVUZXh0dXJl
Vmlld0Rlc2NyaXB0b3JEZWZhdWx0cyhjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJiBk
ZXNjcmlwdG9yKSBjb25zdAorc3RkOjpvcHRpb25hbDxXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9y
PiBUZXh0dXJlOjpyZXNvbHZlVGV4dHVyZVZpZXdEZXNjcmlwdG9yRGVmYXVsdHMoY29uc3QgV0dQ
VVRleHR1cmVWaWV3RGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKIHsKICAgICAvLyBodHRw
czovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNhYnN0cmFjdC1vcGRlZi1yZXNvbHZpbmctZ3B1
dGV4dHVyZXZpZXdkZXNjcmlwdG9yLWRlZmF1bHRzCiAKQEAgLTIwNzgsOCArMjA3OSwxMCBAQCBX
R1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yIFRleHR1cmU6OnJlc29sdmVUZXh0dXJlVmlld0Rlc2Ny
aXB0b3JEZWZhdWx0cyhjb25zdCBXRwogICAgICAgICByZXNvbHZlZC5mb3JtYXQgPSBtX2Rlc2Ny
aXB0b3IuZm9ybWF0OwogCiAgICAgaWYgKHJlc29sdmVkLm1pcExldmVsQ291bnQgPT0gV0dQVV9N
SVBfTEVWRUxfQ09VTlRfVU5ERUZJTkVEKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tl
ZCBhcml0aG1ldGljLgotICAgICAgICByZXNvbHZlZC5taXBMZXZlbENvdW50ID0gbV9kZXNjcmlw
dG9yLm1pcExldmVsQ291bnQgLSByZXNvbHZlZC5iYXNlTWlwTGV2ZWw7CisgICAgICAgIGF1dG8g
bWlwTGV2ZWxDb3VudCA9IENoZWNrZWRVaW50MzIobV9kZXNjcmlwdG9yLm1pcExldmVsQ291bnQp
IC0gQ2hlY2tlZFVpbnQzMihyZXNvbHZlZC5iYXNlTWlwTGV2ZWwpOworICAgICAgICBpZiAobWlw
TGV2ZWxDb3VudC5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgICAgICByZXNvbHZlZC5taXBMZXZlbENvdW50ID0gbWlwTGV2ZWxDb3VudC52YWx1
ZSgpOwogICAgIH0KIAogICAgIGlmIChyZXNvbHZlZC5kaW1lbnNpb24gPT0gV0dQVVRleHR1cmVW
aWV3RGltZW5zaW9uX1VuZGVmaW5lZCkgewpAQCAtMjExMiwxMCArMjExNSwxMyBAQCBXR1BVVGV4
dHVyZVZpZXdEZXNjcmlwdG9yIFRleHR1cmU6OnJlc29sdmVUZXh0dXJlVmlld0Rlc2NyaXB0b3JE
ZWZhdWx0cyhjb25zdCBXRwogICAgICAgICAgICAgcmVzb2x2ZWQuYXJyYXlMYXllckNvdW50ID0g
NjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVu
c2lvbl8yREFycmF5OgotICAgICAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl9DdWJl
QXJyYXk6Ci0gICAgICAgICAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYwotICAg
ICAgICAgICAgcmVzb2x2ZWQuYXJyYXlMYXllckNvdW50ID0gbV9kZXNjcmlwdG9yLnNpemUuZGVw
dGhPckFycmF5TGF5ZXJzIC0gcmVzb2x2ZWQuYmFzZUFycmF5TGF5ZXI7CisgICAgICAgIGNhc2Ug
V0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX0N1YmVBcnJheTogeworICAgICAgICAgICAgYXV0byBh
cnJheUxheWVyQ291bnQgPSBDaGVja2VkVWludDMyKG1fZGVzY3JpcHRvci5zaXplLmRlcHRoT3JB
cnJheUxheWVycykgLSBDaGVja2VkVWludDMyKHJlc29sdmVkLmJhc2VBcnJheUxheWVyKTsKKyAg
ICAgICAgICAgIGlmIChhcnJheUxheWVyQ291bnQuaGFzT3ZlcmZsb3dlZCgpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICByZXNvbHZlZC5hcnJheUxh
eWVyQ291bnQgPSBhcnJheUxheWVyQ291bnQudmFsdWUoKTsKICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CiAgICAgICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX0ZvcmNlMzI6
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiBy
ZXNvbHZlZDsKQEAgLTIxNjYsMTggKzIxNzIsMTcgQEAgYm9vbCBUZXh0dXJlOjp2YWxpZGF0ZUNy
ZWF0ZVZpZXcoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY28K
ICAgICBpZiAoIWRlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMuCi0gICAgaWYgKGRlc2Ny
aXB0b3IuYmFzZU1pcExldmVsICsgZGVzY3JpcHRvci5taXBMZXZlbENvdW50ID4gbV9kZXNjcmlw
dG9yLm1pcExldmVsQ291bnQpCisgICAgYXV0byBlbmRNaXBMZXZlbCA9IENoZWNrZWRVaW50MzIo
ZGVzY3JpcHRvci5iYXNlTWlwTGV2ZWwpICsgQ2hlY2tlZFVpbnQzMihkZXNjcmlwdG9yLm1pcExl
dmVsQ291bnQpOworICAgIGlmIChlbmRNaXBMZXZlbC5oYXNPdmVyZmxvd2VkKCkgfHwgZW5kTWlw
TGV2ZWwudmFsdWUoKSA+IG1fZGVzY3JpcHRvci5taXBMZXZlbENvdW50KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAoIWRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50KQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4K
LSAgICBpZiAoZGVzY3JpcHRvci5iYXNlQXJyYXlMYXllciArIGRlc2NyaXB0b3IuYXJyYXlMYXll
ckNvdW50ID4gYXJyYXlMYXllckNvdW50KCkpCisgICAgYXV0byBlbmRBcnJheUxheWVyID0gQ2hl
Y2tlZFVpbnQzMihkZXNjcmlwdG9yLmJhc2VBcnJheUxheWVyKSArIENoZWNrZWRVaW50MzIoZGVz
Y3JpcHRvci5hcnJheUxheWVyQ291bnQpOworICAgIGlmIChlbmRBcnJheUxheWVyLmhhc092ZXJm
bG93ZWQoKSB8fCBlbmRBcnJheUxheWVyLnZhbHVlKCkgPiBhcnJheUxheWVyQ291bnQoKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gImRlc2NyaXB0b3IuZm9ybWF0IG11c3QgYmUg
ZXF1YWwgdG8gZWl0aGVyIHRoaXMuW1tkZXNjcmlwdG9yXV0uZm9ybWF0IG9yIG9uZSBvZiB0aGUg
Zm9ybWF0cyBpbiB0aGlzLltbZGVzY3JpcHRvcl1dLnZpZXdGb3JtYXRzLiIKICAgICBpZiAoZGVz
Y3JpcHRvci5mb3JtYXQgIT0gbV9kZXNjcmlwdG9yLmZvcm1hdCAmJiAhbV92aWV3Rm9ybWF0cy5j
b250YWlucyhkZXNjcmlwdG9yLmZvcm1hdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
MjI2MSw3ICsyMjY2LDcgQEAgUmVmPFRleHR1cmVWaWV3PiBUZXh0dXJlOjpjcmVhdGVWaWV3KGNv
bnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGlucHV0RGVzY3IKIAogICAgIGF1dG8gZGVz
Y3JpcHRvciA9IHJlc29sdmVUZXh0dXJlVmlld0Rlc2NyaXB0b3JEZWZhdWx0cyhpbnB1dERlc2Ny
aXB0b3IpOwogCi0gICAgaWYgKCF2YWxpZGF0ZUNyZWF0ZVZpZXcoZGVzY3JpcHRvcikpIHsKKyAg
ICBpZiAoIWRlc2NyaXB0b3IgfHwgIXZhbGlkYXRlQ3JlYXRlVmlldygqZGVzY3JpcHRvcikpIHsK
ICAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBm
YWlsdXJlLiJfcyk7CiAKICAgICAgICAgLy8gRklYTUU6ICJSZXR1cm4gYSBuZXcgaW52YWxpZCBH
UFVUZXh0dXJlVmlldy4iCkBAIC0yMjY5LDE2ICsyMjc0LDE2IEBAIFJlZjxUZXh0dXJlVmlldz4g
VGV4dHVyZTo6Y3JlYXRlVmlldyhjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJiBpbnB1
dERlc2NyCiAgICAgfQogCiAgICAgc3RkOjpvcHRpb25hbDxNVExQaXhlbEZvcm1hdD4gcGl4ZWxG
b3JtYXQ7Ci0gICAgaWYgKGlzRGVwdGhPclN0ZW5jaWxGb3JtYXQoZGVzY3JpcHRvci5mb3JtYXQp
KSB7Ci0gICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5hc3BlY3QpIHsKKyAgICBpZiAoaXNEZXB0
aE9yU3RlbmNpbEZvcm1hdChkZXNjcmlwdG9yLT5mb3JtYXQpKSB7CisgICAgICAgIHN3aXRjaCAo
ZGVzY3JpcHRvci0+YXNwZWN0KSB7CiAgICAgICAgIGNhc2UgV0dQVVRleHR1cmVBc3BlY3RfQWxs
OgotICAgICAgICAgICAgcGl4ZWxGb3JtYXQgPSBXZWJHUFU6OnBpeGVsRm9ybWF0KGRlc2NyaXB0
b3IuZm9ybWF0KTsKKyAgICAgICAgICAgIHBpeGVsRm9ybWF0ID0gV2ViR1BVOjpwaXhlbEZvcm1h
dChkZXNjcmlwdG9yLT5mb3JtYXQpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2Ug
V0dQVVRleHR1cmVBc3BlY3RfU3RlbmNpbE9ubHk6Ci0gICAgICAgICAgICBwaXhlbEZvcm1hdCA9
IHN0ZW5jaWxPbmx5QXNwZWN0TWV0YWxGb3JtYXQoZGVzY3JpcHRvci5mb3JtYXQpOworICAgICAg
ICAgICAgcGl4ZWxGb3JtYXQgPSBzdGVuY2lsT25seUFzcGVjdE1ldGFsRm9ybWF0KGRlc2NyaXB0
b3ItPmZvcm1hdCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBXR1BVVGV4dHVy
ZUFzcGVjdF9EZXB0aE9ubHk6Ci0gICAgICAgICAgICBwaXhlbEZvcm1hdCA9IGRlcHRoT25seUFz
cGVjdE1ldGFsRm9ybWF0KGRlc2NyaXB0b3IuZm9ybWF0KTsKKyAgICAgICAgICAgIHBpeGVsRm9y
bWF0ID0gZGVwdGhPbmx5QXNwZWN0TWV0YWxGb3JtYXQoZGVzY3JpcHRvci0+Zm9ybWF0KTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdHUFVUZXh0dXJlQXNwZWN0X0ZvcmNlMzI6
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTIyOTAsMTIgKzIyOTUsMTIg
QEAgUmVmPFRleHR1cmVWaWV3PiBUZXh0dXJlOjpjcmVhdGVWaWV3KGNvbnN0IFdHUFVUZXh0dXJl
Vmlld0Rlc2NyaXB0b3ImIGlucHV0RGVzY3IKICAgICBBU1NFUlQoKnBpeGVsRm9ybWF0ICE9IE1U
TFBpeGVsRm9ybWF0SW52YWxpZCk7CiAKICAgICBNVExUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZTsK
LSAgICBzd2l0Y2ggKGRlc2NyaXB0b3IuZGltZW5zaW9uKSB7CisgICAgc3dpdGNoIChkZXNjcmlw
dG9yLT5kaW1lbnNpb24pIHsKICAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl9VbmRl
ZmluZWQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1cm4gVGV4
dHVyZVZpZXc6OmNyZWF0ZUludmFsaWQobV9kZXZpY2UpOwogICAgIGNhc2UgV0dQVVRleHR1cmVW
aWV3RGltZW5zaW9uXzFEOgotICAgICAgICBpZiAoZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQg
PT0gMSkKKyAgICAgICAgaWYgKGRlc2NyaXB0b3ItPmFycmF5TGF5ZXJDb3VudCA9PSAxKQogICAg
ICAgICAgICAgdGV4dHVyZVR5cGUgPSBNVExUZXh0dXJlVHlwZTFEOwogICAgICAgICBlbHNlCiAg
ICAgICAgICAgICB0ZXh0dXJlVHlwZSA9IE1UTFRleHR1cmVUeXBlMURBcnJheTsKQEAgLTIzMzAs
MjEgKzIzMzUsMjEgQEAgUmVmPFRleHR1cmVWaWV3PiBUZXh0dXJlOjpjcmVhdGVWaWV3KGNvbnN0
IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGlucHV0RGVzY3IKICAgICAgICAgcmV0dXJuIFRl
eHR1cmVWaWV3OjpjcmVhdGVJbnZhbGlkKG1fZGV2aWNlKTsKICAgICB9CiAKLSAgICBhdXRvIGxl
dmVscyA9IE5TTWFrZVJhbmdlKGRlc2NyaXB0b3IuYmFzZU1pcExldmVsLCBkZXNjcmlwdG9yLm1p
cExldmVsQ291bnQpOworICAgIGF1dG8gbGV2ZWxzID0gTlNNYWtlUmFuZ2UoZGVzY3JpcHRvci0+
YmFzZU1pcExldmVsLCBkZXNjcmlwdG9yLT5taXBMZXZlbENvdW50KTsKIAotICAgIGF1dG8gc2xp
Y2VzID0gTlNNYWtlUmFuZ2UoZGVzY3JpcHRvci5iYXNlQXJyYXlMYXllciwgZGVzY3JpcHRvci5h
cnJheUxheWVyQ291bnQpOworICAgIGF1dG8gc2xpY2VzID0gTlNNYWtlUmFuZ2UoZGVzY3JpcHRv
ci0+YmFzZUFycmF5TGF5ZXIsIGRlc2NyaXB0b3ItPmFycmF5TGF5ZXJDb3VudCk7CiAKICAgICBp
ZDxNVExUZXh0dXJlPiB0ZXh0dXJlID0gW21fdGV4dHVyZSBuZXdUZXh0dXJlVmlld1dpdGhQaXhl
bEZvcm1hdDoqcGl4ZWxGb3JtYXQgdGV4dHVyZVR5cGU6dGV4dHVyZVR5cGUgbGV2ZWxzOmxldmVs
cyBzbGljZXM6c2xpY2VzXTsKICAgICBpZiAoIXRleHR1cmUpCiAgICAgICAgIHJldHVybiBUZXh0
dXJlVmlldzo6Y3JlYXRlSW52YWxpZChtX2RldmljZSk7CiAKLSAgICB0ZXh0dXJlLmxhYmVsID0g
ZnJvbUFQSShkZXNjcmlwdG9yLmxhYmVsKTsKKyAgICB0ZXh0dXJlLmxhYmVsID0gZnJvbUFQSShk
ZXNjcmlwdG9yLT5sYWJlbCk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPFdHUFVFeHRlbnQzRD4gcmVu
ZGVyRXh0ZW50OwogICAgIGlmICAobV9kZXNjcmlwdG9yLnVzYWdlICYgV0dQVVRleHR1cmVVc2Fn
ZV9SZW5kZXJBdHRhY2htZW50KQotICAgICAgICByZW5kZXJFeHRlbnQgPSBjb21wdXRlUmVuZGVy
RXh0ZW50KG1fZGVzY3JpcHRvci5zaXplLCBkZXNjcmlwdG9yLmJhc2VNaXBMZXZlbCk7CisgICAg
ICAgIHJlbmRlckV4dGVudCA9IGNvbXB1dGVSZW5kZXJFeHRlbnQobV9kZXNjcmlwdG9yLnNpemUs
IGRlc2NyaXB0b3ItPmJhc2VNaXBMZXZlbCk7CiAKLSAgICByZXR1cm4gVGV4dHVyZVZpZXc6OmNy
ZWF0ZSh0ZXh0dXJlLCBkZXNjcmlwdG9yLCByZW5kZXJFeHRlbnQsIG1fZGV2aWNlKTsKKyAgICBy
ZXR1cm4gVGV4dHVyZVZpZXc6OmNyZWF0ZSh0ZXh0dXJlLCAqZGVzY3JpcHRvciwgcmVuZGVyRXh0
ZW50LCBtX2RldmljZSk7CiB9CiAKIHZvaWQgVGV4dHVyZTo6ZGVzdHJveSgpCkBAIC0yNzEzLDE2
ICsyNzE4LDE2IEBAIGJvb2wgVGV4dHVyZTo6dmFsaWRhdGVUZXh0dXJlQ29weVJhbmdlKGNvbnN0
IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBpbWFnZUNvcHlUZXh0CiAKICAgICBhdXRvIHN1YnJlc291
cmNlU2l6ZSA9IGltYWdlQ29weVRleHR1cmVTdWJyZXNvdXJjZVNpemUoaW1hZ2VDb3B5VGV4dHVy
ZSk7CiAKLSAgICAvLyBGSVhNRTogVXNlZCBjaGVja2VkIGFyaXRobWV0aWMKLSAgICBpZiAoaW1h
Z2VDb3B5VGV4dHVyZS5vcmlnaW4ueCArIGNvcHlTaXplLndpZHRoID4gc3VicmVzb3VyY2VTaXpl
LndpZHRoKQorICAgIGF1dG8gZW5kWCA9IENoZWNrZWRVaW50MzIoaW1hZ2VDb3B5VGV4dHVyZS5v
cmlnaW4ueCkgKyBDaGVja2VkVWludDMyKGNvcHlTaXplLndpZHRoKTsKKyAgICBpZiAoZW5kWC5o
YXNPdmVyZmxvd2VkKCkgfHwgZW5kWC52YWx1ZSgpID4gc3VicmVzb3VyY2VTaXplLndpZHRoKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBGSVhNRTogVXNlZCBjaGVja2VkIGFyaXRo
bWV0aWMKLSAgICBpZiAoKGltYWdlQ29weVRleHR1cmUub3JpZ2luLnkgKyBjb3B5U2l6ZS5oZWln
aHQpID4gc3VicmVzb3VyY2VTaXplLmhlaWdodCkKKyAgICBhdXRvIGVuZFkgPSBDaGVja2VkVWlu
dDMyKGltYWdlQ29weVRleHR1cmUub3JpZ2luLnkpICsgQ2hlY2tlZFVpbnQzMihjb3B5U2l6ZS5o
ZWlnaHQpOworICAgIGlmIChlbmRZLmhhc092ZXJmbG93ZWQoKSB8fCBlbmRZLnZhbHVlKCkgPiBz
dWJyZXNvdXJjZVNpemUuaGVpZ2h0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBG
SVhNRTogVXNlZCBjaGVja2VkIGFyaXRobWV0aWMKLSAgICBpZiAoKGltYWdlQ29weVRleHR1cmUu
b3JpZ2luLnogKyBjb3B5U2l6ZS5kZXB0aE9yQXJyYXlMYXllcnMpID4gc3VicmVzb3VyY2VTaXpl
LmRlcHRoT3JBcnJheUxheWVycykKKyAgICBhdXRvIGVuZFogPSBDaGVja2VkVWludDMyKGltYWdl
Q29weVRleHR1cmUub3JpZ2luLnopICsgQ2hlY2tlZFVpbnQzMihjb3B5U2l6ZS5kZXB0aE9yQXJy
YXlMYXllcnMpOworICAgIGlmIChlbmRaLmhhc092ZXJmbG93ZWQoKSB8fCBlbmRaLnZhbHVlKCkg
PiBzdWJyZXNvdXJjZVNpemUuZGVwdGhPckFycmF5TGF5ZXJzKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBpZiAoY29weVNpemUud2lkdGggJSBibG9ja1dpZHRoKQpAQCAtMjc0Niw4ICsy
NzUxLDkgQEAgYm9vbCBUZXh0dXJlOjp2YWxpZGF0ZUxpbmVhclRleHR1cmVEYXRhKGNvbnN0IFdH
UFVUZXh0dXJlRGF0YUxheW91dCYgbGF5b3V0LCB1aW4KIAogICAgIGF1dG8gaGVpZ2h0SW5CbG9j
a3MgPSBjb3B5RXh0ZW50LmhlaWdodCAvIGJsb2NrSGVpZ2h0OwogCi0gICAgLy8gRklYTUU6IFVz
ZSBjaGVja2VkIGFyaXRobWV0aWMuCi0gICAgYXV0byBieXRlc0luTGFzdFJvdyA9IGJsb2NrU2l6
ZSAqIHdpZHRoSW5CbG9ja3M7CisgICAgYXV0byBieXRlc0luTGFzdFJvdyA9IENoZWNrZWRVaW50
MzIoYmxvY2tTaXplKSAqIENoZWNrZWRVaW50MzIod2lkdGhJbkJsb2Nrcyk7CisgICAgaWYgKGJ5
dGVzSW5MYXN0Um93Lmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKGhlaWdodEluQmxvY2tzID4gMSkgewogICAgICAgICBpZiAobGF5b3V0LmJ5dGVzUGVy
Um93ID09IFdHUFVfQ09QWV9TVFJJREVfVU5ERUZJTkVEKQpAQCAtMjc2MCw3ICsyNzY2LDcgQEAg
Ym9vbCBUZXh0dXJlOjp2YWxpZGF0ZUxpbmVhclRleHR1cmVEYXRhKGNvbnN0IFdHUFVUZXh0dXJl
RGF0YUxheW91dCYgbGF5b3V0LCB1aW4KICAgICB9CiAKICAgICBpZiAobGF5b3V0LmJ5dGVzUGVy
Um93ICE9IFdHUFVfQ09QWV9TVFJJREVfVU5ERUZJTkVEKSB7Ci0gICAgICAgIGlmIChsYXlvdXQu
Ynl0ZXNQZXJSb3cgPCBieXRlc0luTGFzdFJvdykKKyAgICAgICAgaWYgKGxheW91dC5ieXRlc1Bl
clJvdyA8IGJ5dGVzSW5MYXN0Um93LnZhbHVlKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCkBAIC0yNzY5LDMzICsyNzc1LDI2IEBAIGJvb2wgVGV4dHVyZTo6dmFsaWRhdGVM
aW5lYXJUZXh0dXJlRGF0YShjb25zdCBXR1BVVGV4dHVyZURhdGFMYXlvdXQmIGxheW91dCwgdWlu
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgdWludDY0X3QgcmVxdWly
ZWRCeXRlc0luQ29weSA9IDA7CisgICAgYXV0byByZXF1aXJlZEJ5dGVzSW5Db3B5ID0gQ2hlY2tl
ZFVpbnQ2NCgwKTsKIAogICAgIGlmIChjb3B5RXh0ZW50LmRlcHRoT3JBcnJheUxheWVycyA+IDEp
IHsKLSAgICAgICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMuCi0gICAgICAgIGF1
dG8gYnl0ZXNQZXJJbWFnZSA9IGxheW91dC5ieXRlc1BlclJvdyAqIGxheW91dC5yb3dzUGVySW1h
Z2U7CisgICAgICAgIGF1dG8gYnl0ZXNQZXJJbWFnZSA9IENoZWNrZWRVaW50MzIobGF5b3V0LmJ5
dGVzUGVyUm93KSAqIENoZWNrZWRVaW50MzIobGF5b3V0LnJvd3NQZXJJbWFnZSk7CiAKLSAgICAg
ICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMuCi0gICAgICAgIGF1dG8gYnl0ZXNC
ZWZvcmVMYXN0SW1hZ2UgPSBieXRlc1BlckltYWdlICogKGNvcHlFeHRlbnQuZGVwdGhPckFycmF5
TGF5ZXJzIC0gMSk7CisgICAgICAgIGF1dG8gYnl0ZXNCZWZvcmVMYXN0SW1hZ2UgPSBieXRlc1Bl
ckltYWdlICogKENoZWNrZWRVaW50MzIoY29weUV4dGVudC5kZXB0aE9yQXJyYXlMYXllcnMpIC0g
MSk7CiAKLSAgICAgICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMuCiAgICAgICAg
IHJlcXVpcmVkQnl0ZXNJbkNvcHkgKz0gYnl0ZXNCZWZvcmVMYXN0SW1hZ2U7CiAgICAgfQogCiAg
ICAgaWYgKGNvcHlFeHRlbnQuZGVwdGhPckFycmF5TGF5ZXJzID4gMCkgewotICAgICAgICBpZiAo
aGVpZ2h0SW5CbG9ja3MgPiAxKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQg
YXJpdGhtZXRpYy4KLSAgICAgICAgICAgIHJlcXVpcmVkQnl0ZXNJbkNvcHkgKz0gbGF5b3V0LmJ5
dGVzUGVyUm93ICogKGhlaWdodEluQmxvY2tzIC0gMSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYg
KGhlaWdodEluQmxvY2tzID4gMSkKKyAgICAgICAgICAgIHJlcXVpcmVkQnl0ZXNJbkNvcHkgKz0g
Q2hlY2tlZFVpbnQzMihsYXlvdXQuYnl0ZXNQZXJSb3cpICogKENoZWNrZWRVaW50MzIoaGVpZ2h0
SW5CbG9ja3MpIC0gMSk7CiAKLSAgICAgICAgaWYgKGhlaWdodEluQmxvY2tzID4gMCkgewotICAg
ICAgICAgICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMuCi0gICAgICAgICAgICBy
ZXF1aXJlZEJ5dGVzSW5Db3B5ICs9IGJ5dGVzSW5MYXN0Um93OwotICAgICAgICB9CisgICAgICAg
IGlmIChoZWlnaHRJbkJsb2NrcyA+IDApCisgICAgICAgICAgICByZXF1aXJlZEJ5dGVzSW5Db3B5
ICs9IGJ5dGVzSW5MYXN0Um93LnZhbHVlKCk7CiAgICAgfQogCi0gICAgLy8gRklYTUU6IFVzZSBj
aGVja2VkIGFyaXRobWV0aWMuCi0gICAgaWYgKGxheW91dC5vZmZzZXQgKyByZXF1aXJlZEJ5dGVz
SW5Db3B5ID4gYnl0ZVNpemUpCisgICAgYXV0byBlbmQgPSBDaGVja2VkVWludDY0KGxheW91dC5v
ZmZzZXQpICsgcmVxdWlyZWRCeXRlc0luQ29weTsKKyAgICBpZiAoZW5kLmhhc092ZXJmbG93ZWQo
KSB8fCBlbmQudmFsdWUoKSA+IGJ5dGVTaXplKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAg
ICByZXR1cm4gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457228</attachid>
            <date>2022-04-10 20:31:26 -0700</date>
            <delta_ts>2022-04-11 02:13:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>28308</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGJjZjA3ZjQ3Y2FjZDQ4YTBhMmNlN2UxMjYwYWY5ZTAyYTM3MDRiYzMKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTdW4gQXByIDEw
IDE5OjU0OjQxIDIwMjIgLTA3MDAKCiAgICBDaGVja2VkIGFyaXRobWV0aWMKCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4
IDg1MjI2MjEyMTM2Ny4uYTNhMzVjN2Q1Y2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisy
MDIyLTA0LTEwICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAg
ICAgICAgW1dlYkdQVV0gVXNlIGNoZWNrZWQgYXJpdGhtZXRpYworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MDU4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgaGF2ZSBhIGJ1bmNoIG9mIHBsYWNlcyB3
aGVyZSBvdmVyZmxvdyBjYW4gb2NjdXIuCisKKyAgICAgICAgTHVja2lseSwgd2UgY2FuIGp1c3Qg
ZGV0ZWN0IG92ZXJmbG93IGluc2lkZSB0aGUgdmFsaWRhdGlvbiBmdW5jdGlvbnMsIGFuZCBub3Qg
aGF2ZQorICAgICAgICB0byBkbyBhbnkgaW5zaWRlIHRoZSBjb2RlIHRoYXQgY3JlYXRlcyBwbGF0
Zm9ybSB0eXBlcyAoTlNVSW50ZWdlciwgZXRjLikuIFRoaXMgaXMKKyAgICAgICAgYmVjYXVzZSBp
ZiB0aGUgdmFsaWRhdGlvbiBjb2RlIHN1Y2NlZWRzLCB0aGVuIHdlIGFyZSBndWFyYW50ZWVkIHRo
YXQgdGhlIGNhc3QgdG8KKyAgICAgICAgTlNVSW50ZWdlcnMgd2lsbCBzdWNjZWVkLiBUaGlzIGlz
IGJlY2F1c2UgcmFuZ2VzIGluIGEgcmVzb3VyY2UgYXJlIGNoZWNrZWQgYWdhaW5zdAorICAgICAg
ICB0aGUgc2l6ZSBvZiB0aGUgcmVzb3VyY2UsIGFuZCB0aGUgc2l6ZSBvZiB0aGUgcmVzb3VyY2Ug
aGFzIGJlZW4gY2hlY2tlZCBhZ2FpbnN0CisgICAgICAgIHBsYXRmb3JtIG1heGltdW1zLCB3aGlj
aCBhcmUgZ3VhcmFudGVlZCB0byBiZSBzbWFsbGVyIHRoYW4gdGhlIGxhcmdlc3QgTlNVSW50ZWdl
ci4KKworICAgICAgICAqIFdlYkdQVS9CaW5kR3JvdXAubW06CisgICAgICAgIChXZWJHUFU6OkRl
dmljZTo6Y3JlYXRlQmluZEdyb3VwKToKKyAgICAgICAgKiBXZWJHUFUvQnVmZmVyLm1tOgorICAg
ICAgICAoV2ViR1BVOjpCdWZmZXI6OnZhbGlkYXRlR2V0TWFwcGVkUmFuZ2UgY29uc3QpOgorICAg
ICAgICAoV2ViR1BVOjpCdWZmZXI6OmdldE1hcHBlZFJhbmdlKToKKyAgICAgICAgKFdlYkdQVTo6
QnVmZmVyOjp2YWxpZGF0ZU1hcEFzeW5jIGNvbnN0KToKKyAgICAgICAgKFdlYkdQVTo6QnVmZmVy
OjptYXBBc3luYyk6CisgICAgICAgICogV2ViR1BVL0NvbW1hbmRFbmNvZGVyLm1tOgorICAgICAg
ICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6dmFsaWRhdGVDb3B5QnVmZmVyVG9CdWZmZXIpOgor
ICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRvVGV4dHVyZSk6Cisg
ICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvQnVmZmVyKToKKyAg
ICAgICAgKFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9UZXh0dXJlKToKKyAg
ICAgICAgKFdlYkdQVTo6Q29tbWFuZEVuY29kZXI6OnZhbGlkYXRlQ2xlYXJCdWZmZXIpOgorICAg
ICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6Y2xlYXJCdWZmZXIpOgorICAgICAgICAqIFdl
YkdQVS9RdWV1ZS5tbToKKyAgICAgICAgKFdlYkdQVTo6UXVldWU6OnZhbGlkYXRlV3JpdGVCdWZm
ZXIgY29uc3QpOgorICAgICAgICAoV2ViR1BVOjpRdWV1ZTo6d3JpdGVUZXh0dXJlKToKKyAgICAg
ICAgKiBXZWJHUFUvVGV4dHVyZS5oOgorICAgICAgICAqIFdlYkdQVS9UZXh0dXJlLm1tOgorICAg
ICAgICAoV2ViR1BVOjpUZXh0dXJlOjpyZXNvbHZlVGV4dHVyZVZpZXdEZXNjcmlwdG9yRGVmYXVs
dHMgY29uc3QpOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlOjp2YWxpZGF0ZUNyZWF0ZVZpZXcg
Y29uc3QpOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlOjpjcmVhdGVWaWV3KToKKyAgICAgICAg
KFdlYkdQVTo6VGV4dHVyZTo6dmFsaWRhdGVUZXh0dXJlQ29weVJhbmdlKToKKyAgICAgICAgKFdl
YkdQVTo6VGV4dHVyZTo6dmFsaWRhdGVMaW5lYXJUZXh0dXJlRGF0YSk6CisKIDIwMjItMDQtMTAg
IE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2Vi
R1BVXSBXZWJHUFUgc3RyaW5ncyBhcmUgVVRGLTgsIG5vdCBMYXRpbi0xCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9CaW5kR3JvdXAubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9C
aW5kR3JvdXAubW0KaW5kZXggMThiNGU4ZDE4NzQ4Li42M2RjNTZjNWYyOWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0JpbmRHcm91cC5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9CaW5kR3JvdXAubW0KQEAgLTU1LDYgKzU1LDggQEAgUmVmPEJpbmRHcm91cD4gRGV2aWNl
OjpjcmVhdGVCaW5kR3JvdXAoY29uc3QgV0dQVUJpbmRHcm91cERlc2NyaXB0b3ImIGRlc2NyaXB0
b3IKICAgICBpZiAoZGVzY3JpcHRvci5uZXh0SW5DaGFpbikKICAgICAgICAgcmV0dXJuIEJpbmRH
cm91cDo6Y3JlYXRlSW52YWxpZCgqdGhpcyk7CiAKKyAgICAvLyBGSVhNRTogVmFsaWRhdGUgdGhp
cyBhY2NvcmRpbmcgdG8gdGhlIHNwZWMuCisKICAgICBjb25zdCBCaW5kR3JvdXBMYXlvdXQmIGJp
bmRHcm91cExheW91dCA9IFdlYkdQVTo6ZnJvbUFQSShkZXNjcmlwdG9yLmxheW91dCk7CiAKICAg
ICAvLyBGSVhNRShQRVJGT1JNQU5DRSk6IERvbid0IGFsbG9jYXRlIDMgbmV3IGJ1ZmZlcnMgZm9y
IGV2ZXJ5IGJpbmQgZ3JvdXAuCkBAIC05MSw3ICs5Myw2IEBAIFJlZjxCaW5kR3JvdXA+IERldmlj
ZTo6Y3JlYXRlQmluZEdyb3VwKGNvbnN0IFdHUFVCaW5kR3JvdXBEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yCiAKICAgICAgICAgaWYgKGJ1ZmZlcklzUHJlc2VudCkgewogICAgICAgICAgICAgaWQ8TVRM
QnVmZmVyPiBidWZmZXIgPSBXZWJHUFU6OmZyb21BUEkoZW50cnkuYnVmZmVyKS5idWZmZXIoKTsK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBjYXN0cy4KICAgICAgICAgICAgIFt2
ZXJ0ZXhBcmd1bWVudEVuY29kZXIgc2V0QnVmZmVyOmJ1ZmZlciBvZmZzZXQ6c3RhdGljX2Nhc3Q8
TlNVSW50ZWdlcj4oZW50cnkub2Zmc2V0KSBhdEluZGV4OmVudHJ5LmJpbmRpbmddOwogICAgICAg
ICAgICAgW2ZyYWdtZW50QXJndW1lbnRFbmNvZGVyIHNldEJ1ZmZlcjpidWZmZXIgb2Zmc2V0OnN0
YXRpY19jYXN0PE5TVUludGVnZXI+KGVudHJ5Lm9mZnNldCkgYXRJbmRleDplbnRyeS5iaW5kaW5n
XTsKICAgICAgICAgICAgIFtjb21wdXRlQXJndW1lbnRFbmNvZGVyIHNldEJ1ZmZlcjpidWZmZXIg
b2Zmc2V0OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KGVudHJ5Lm9mZnNldCkgYXRJbmRleDplbnRy
eS5iaW5kaW5nXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbSBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbQppbmRleCBiYTJjYTMxYzg3YTUuLjQ1MDVl
NjhiNzg2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLm1tCisrKyBi
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW1w
b3J0ICJBUElDb252ZXJzaW9ucy5oIgogI2ltcG9ydCAiRGV2aWNlLmgiCisjaW1wb3J0IDx3dGYv
Q2hlY2tlZEFyaXRobWV0aWMuaD4KICNpbXBvcnQgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAogbmFt
ZXNwYWNlIFdlYkdQVSB7CkBAIC0xNzYsOSArMTc3LDggQEAgYm9vbCBCdWZmZXI6OnZhbGlkYXRl
R2V0TWFwcGVkUmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHJhbmdlU2l6ZSkgY29uc3QKICAg
ICBpZiAob2Zmc2V0IDwgbV9tYXBwaW5nUmFuZ2UuYmVnaW5PZmZzZXQpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIC8vIEZJWE1FOiBVc2VkIGNoZWNrZWQgYXJpdGhtZXRpYy4KLSAgICBh
dXRvIGVuZE9mZnNldCA9IG9mZnNldCArIHJhbmdlU2l6ZTsKLSAgICBpZiAoZW5kT2Zmc2V0ID4g
bV9tYXBwaW5nUmFuZ2UuZW5kT2Zmc2V0KQorICAgIGF1dG8gZW5kT2Zmc2V0ID0gQ2hlY2tlZFNp
emUob2Zmc2V0KSArIENoZWNrZWRTaXplKHJhbmdlU2l6ZSk7CisgICAgaWYgKGVuZE9mZnNldC5o
YXNPdmVyZmxvd2VkKCkgfHwgZW5kT2Zmc2V0LnZhbHVlKCkgPiBtX21hcHBpbmdSYW5nZS5lbmRP
ZmZzZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX21hcHBlZFJhbmdlcy5v
dmVybGFwcyh7IG9mZnNldCwgZW5kT2Zmc2V0IH0pKQpAQCAtMTkxLDEwICsxOTEsMTUgQEAgdm9p
ZCogQnVmZmVyOjpnZXRNYXBwZWRSYW5nZShzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSkKIHsK
ICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1YnVmZmVyLWdl
dG1hcHBlZHJhbmdlCiAKLSAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KICAg
ICBhdXRvIHJhbmdlU2l6ZSA9IHNpemU7Ci0gICAgaWYgKHNpemUgPT0gV0dQVV9XSE9MRV9NQVBf
U0laRSkKLSAgICAgICAgcmFuZ2VTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzdGQ6Om1heChz
dGF0aWNfY2FzdDx1aW50NjRfdD4oMCksIG1fc2l6ZSAtIHN0YXRpY19jYXN0PHVpbnQ2NF90Pihv
ZmZzZXQpKSk7CisgICAgaWYgKHNpemUgPT0gV0dQVV9XSE9MRV9NQVBfU0laRSkgeworICAgICAg
ICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2lnbmVkPHNpemVfdD46OnZhbHVlID09IHN0ZDo6aXNf
c2lnbmVkPHVpbnQ2NF90Pjo6dmFsdWUpOworICAgICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihz
aXplX3QpIDw9IHNpemVvZih1aW50NjRfdCkpOworICAgICAgICBpZiAobV9zaXplID4gb2Zmc2V0
KQorICAgICAgICAgICAgcmFuZ2VTaXplID0gbV9zaXplIC0gb2Zmc2V0OworICAgICAgICBlbHNl
CisgICAgICAgICAgICByYW5nZVNpemUgPSAwOworICAgIH0KIAogICAgIGlmICghdmFsaWRhdGVH
ZXRNYXBwZWRSYW5nZShvZmZzZXQsIHJhbmdlU2l6ZSkpIHsKICAgICAgICAgLy8gRklYTUU6ICJ0
aHJvdyBhbiBPcGVyYXRpb25FcnJvciBhbmQgc3RvcC4iCkBAIC0yMjAsOCArMjI1LDggQEAgYm9v
bCBCdWZmZXI6OnZhbGlkYXRlTWFwQXN5bmMoV0dQVU1hcE1vZGVGbGFncyBtb2RlLCBzaXplX3Qg
b2Zmc2V0LCBzaXplX3QgcmFuZ2UKICAgICBpZiAocmFuZ2VTaXplICUgNCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMuCi0gICAg
aWYgKHN0YXRpY19jYXN0PHVpbnQ2NF90PihvZmZzZXQgKyByYW5nZVNpemUpID4gbV9zaXplKQor
ICAgIGF1dG8gZW5kID0gQ2hlY2tlZFVpbnQ2NChDaGVja2VkU2l6ZShvZmZzZXQpICsgQ2hlY2tl
ZFNpemUocmFuZ2VTaXplKSk7CisgICAgaWYgKGVuZC5oYXNPdmVyZmxvd2VkKCkgfHwgZW5kLnZh
bHVlKCkgPiBtX3NpemUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX3N0YXRl
ICE9IFN0YXRlOjpVbm1hcHBlZCkKQEAgLTI0NCwxMCArMjQ5LDE1IEBAIHZvaWQgQnVmZmVyOjpt
YXBBc3luYyhXR1BVTWFwTW9kZUZsYWdzIG1vZGUsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXpl
LCBDb21wbGV0CiB7CiAgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9t
LWdwdWJ1ZmZlci1tYXBhc3luYwogCi0gICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0
aWMuCiAgICAgYXV0byByYW5nZVNpemUgPSBzaXplOwotICAgIGlmIChzaXplID09IFdHUFVfV0hP
TEVfTUFQX1NJWkUpCi0gICAgICAgIHJhbmdlU2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oc3Rk
OjptYXgoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KDApLCBzdGF0aWNfY2FzdDx1aW50NjRfdD4obV9z
aXplIC0gb2Zmc2V0KSkpOworICAgIGlmIChzaXplID09IFdHUFVfV0hPTEVfTUFQX1NJWkUpIHsK
KyAgICAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NpZ25lZDxzaXplX3Q+Ojp2YWx1ZSA9PSBz
dGQ6OmlzX3NpZ25lZDx1aW50NjRfdD46OnZhbHVlKTsKKyAgICAgICAgc3RhdGljX2Fzc2VydChz
aXplb2Yoc2l6ZV90KSA8PSBzaXplb2YodWludDY0X3QpKTsKKyAgICAgICAgaWYgKG1fc2l6ZSA+
IG9mZnNldCkKKyAgICAgICAgICAgIHJhbmdlU2l6ZSA9IG1fc2l6ZSAtIG9mZnNldDsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcmFuZ2VTaXplID0gMDsKKyAgICB9CiAKICAgICBpZiAoIXZh
bGlkYXRlTWFwQXN5bmMobW9kZSwgb2Zmc2V0LCByYW5nZVNpemUpKSB7CiAgICAgICAgIG1fZGV2
aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0gYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQppbmRleCA5Y2EzNjQwMjYwNmQuLjE4
Yjc0YjRjMzU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29k
ZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KQEAgLTM1
LDYgKzM1LDcgQEAKICNpbXBvcnQgIlF1ZXJ5U2V0LmgiCiAjaW1wb3J0ICJSZW5kZXJQYXNzRW5j
b2Rlci5oIgogI2ltcG9ydCAiVGV4dHVyZS5oIgorI2ltcG9ydCA8d3RmL0NoZWNrZWRBcml0aG1l
dGljLmg+CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCkBAIC0xMjEsMjEgKzEyMiwyMCBAQCBib29s
IENvbW1hbmRFbmNvZGVyOjp2YWxpZGF0ZUNvcHlCdWZmZXJUb0J1ZmZlcihjb25zdCBCdWZmZXIm
IHNvdXJjZSwgdWludDY0X3QgcwogICAgIGlmIChkZXN0aW5hdGlvbk9mZnNldCAlIDQpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vIEZJWE1FOiAiKHNvdXJjZU9mZnNldCArIHNpemUp
IGRvZXMgbm90IG92ZXJmbG93IGEgR1BVU2l6ZTY0LiIKKyAgICBhdXRvIHNvdXJjZUVuZCA9IENo
ZWNrZWRVaW50NjQoc291cmNlT2Zmc2V0KSArIENoZWNrZWRVaW50NjQoc2l6ZSk7CisgICAgaWYg
KHNvdXJjZUVuZC5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IC8vIEZJWE1FOiAiKGRlc3RpbmF0aW9uT2Zmc2V0ICsgc2l6ZSkgZG9lcyBub3Qgb3ZlcmZsb3cg
YSBHUFVTaXplNjQuIgorICAgIGF1dG8gZGVzdGluYXRpb25FbmQgPSBDaGVja2VkVWludDY0KGRl
c3RpbmF0aW9uT2Zmc2V0KSArIENoZWNrZWRVaW50NjQoc2l6ZSk7CisgICAgaWYgKGRlc3RpbmF0
aW9uRW5kLmhhc092ZXJmbG93ZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8g
RklYTUU6ICJzb3VyY2UuW1tzaXplXV0gaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIChzb3Vy
Y2VPZmZzZXQgKyBzaXplKS4iCi0gICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMK
LSAgICBpZiAoc291cmNlLnNpemUoKSA8IHNvdXJjZU9mZnNldCArIHNpemUpCisgICAgaWYgKHNv
dXJjZS5zaXplKCkgPCBzb3VyY2VFbmQudmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgLy8gRklYTUU6ICJkZXN0aW5hdGlvbi5bW3NpemVdXSBpcyBncmVhdGVyIHRoYW4gb3Ig
ZXF1YWwgdG8gKGRlc3RpbmF0aW9uT2Zmc2V0ICsgc2l6ZSkuIgotICAgIC8vIEZJWE1FOiBVc2Ug
Y2hlY2tlZCBhcml0aG1ldGljCi0gICAgaWYgKGRlc3RpbmF0aW9uLnNpemUoKSA8IGRlc3RpbmF0
aW9uT2Zmc2V0ICsgc2l6ZSkKKyAgICBpZiAoZGVzdGluYXRpb24uc2l6ZSgpIDwgZGVzdGluYXRp
b25FbmQudmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gRklYTUU6ICJz
b3VyY2UgYW5kIGRlc3RpbmF0aW9uIGFyZSBub3QgdGhlIHNhbWUgR1BVQnVmZmVyLiIKICAgICBp
ZiAoJnNvdXJjZSA9PSAmZGVzdGluYXRpb24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
MjU3LDcgKzI1Nyw2IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUo
Y29uc3QgV0dQVUltYWdlQ29weUJ1ZmZlciYgc291cmNlLCBjb25zCiAKICAgICBOU1VJbnRlZ2Vy
IHNvdXJjZUJ5dGVzUGVyUm93ID0gc291cmNlLmxheW91dC5ieXRlc1BlclJvdzsKIAotICAgIC8v
IEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljCiAgICAgTlNVSW50ZWdlciBzb3VyY2VCeXRl
c1BlckltYWdlID0gc291cmNlLmxheW91dC5yb3dzUGVySW1hZ2UgKiBzb3VyY2UubGF5b3V0LmJ5
dGVzUGVyUm93OwogCiAgICAgTVRMQmxpdE9wdGlvbiBvcHRpb25zID0gTVRMQmxpdE9wdGlvbk5v
bmU7CkBAIC0yODksNyArMjg4LDYgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weUJ1ZmZlclRv
VGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5QnVmZmVyJiBzb3VyY2UsIGNvbnMKICAgICAgICAg
YXV0byBzb3VyY2VTaXplID0gTVRMU2l6ZU1ha2Uod2lkdGhGb3JNZXRhbCwgMSwgMSk7CiAgICAg
ICAgIGF1dG8gZGVzdGluYXRpb25PcmlnaW4gPSBNVExPcmlnaW5NYWtlKGRlc3RpbmF0aW9uLm9y
aWdpbi54LCAxLCAxKTsKICAgICAgICAgZm9yICh1aW50MzJfdCBsYXllciA9IDA7IGxheWVyIDwg
Y29weVNpemUuZGVwdGhPckFycmF5TGF5ZXJzOyArK2xheWVyKSB7Ci0gICAgICAgICAgICAvLyBG
SVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KICAgICAgICAgICAgIGF1dG8gc291cmNlT2Zm
c2V0ID0gc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oc291cmNlLmxheW91dC5vZmZzZXQgKyBsYXll
ciAqIHNvdXJjZUJ5dGVzUGVySW1hZ2UpOwogICAgICAgICAgICAgTlNVSW50ZWdlciBkZXN0aW5h
dGlvblNsaWNlID0gZGVzdGluYXRpb24ub3JpZ2luLnogKyBsYXllcjsKICAgICAgICAgICAgIFtt
X2JsaXRDb21tYW5kRW5jb2RlcgpAQCAtMzEyLDcgKzMxMCw2IEBAIHZvaWQgQ29tbWFuZEVuY29k
ZXI6OmNvcHlCdWZmZXJUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weUJ1ZmZlciYgc291cmNl
LCBjb25zCiAgICAgICAgIGF1dG8gc291cmNlU2l6ZSA9IE1UTFNpemVNYWtlKHdpZHRoRm9yTWV0
YWwsIGhlaWdodEZvck1ldGFsLCAxKTsKICAgICAgICAgYXV0byBkZXN0aW5hdGlvbk9yaWdpbiA9
IE1UTE9yaWdpbk1ha2UoZGVzdGluYXRpb24ub3JpZ2luLngsIGRlc3RpbmF0aW9uLm9yaWdpbi55
LCAxKTsKICAgICAgICAgZm9yICh1aW50MzJfdCBsYXllciA9IDA7IGxheWVyIDwgY29weVNpemUu
ZGVwdGhPckFycmF5TGF5ZXJzOyArK2xheWVyKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVXNl
IGNoZWNrZWQgYXJpdGhtZXRpYy4KICAgICAgICAgICAgIGF1dG8gc291cmNlT2Zmc2V0ID0gc3Rh
dGljX2Nhc3Q8TlNVSW50ZWdlcj4oc291cmNlLmxheW91dC5vZmZzZXQgKyBsYXllciAqIHNvdXJj
ZUJ5dGVzUGVySW1hZ2UpOwogICAgICAgICAgICAgTlNVSW50ZWdlciBkZXN0aW5hdGlvblNsaWNl
ID0gZGVzdGluYXRpb24ub3JpZ2luLnogKyBsYXllcjsKICAgICAgICAgICAgIFttX2JsaXRDb21t
YW5kRW5jb2RlcgpAQCAtNDIyLDcgKzQxOSw2IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlU
ZXh0dXJlVG9CdWZmZXIoY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY29uCiAK
ICAgICBOU1VJbnRlZ2VyIGRlc3RpbmF0aW9uQnl0ZXNQZXJSb3cgPSBkZXN0aW5hdGlvbi5sYXlv
dXQuYnl0ZXNQZXJSb3c7CiAKLSAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYwog
ICAgIE5TVUludGVnZXIgZGVzdGluYXRpb25CeXRlc1BlckltYWdlID0gZGVzdGluYXRpb24ubGF5
b3V0LnJvd3NQZXJJbWFnZSAqIGRlc3RpbmF0aW9uLmxheW91dC5ieXRlc1BlclJvdzsKIAogICAg
IE1UTEJsaXRPcHRpb24gb3B0aW9ucyA9IE1UTEJsaXRPcHRpb25Ob25lOwpAQCAtNDU0LDcgKzQ1
MCw2IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlUZXh0dXJlVG9CdWZmZXIoY29uc3QgV0dQ
VUltYWdlQ29weVRleHR1cmUmIHNvdXJjZSwgY29uCiAgICAgICAgIGF1dG8gc291cmNlU2l6ZSA9
IE1UTFNpemVNYWtlKHdpZHRoRm9yTWV0YWwsIDEsIDEpOwogICAgICAgICBhdXRvIHNvdXJjZU9y
aWdpbiA9IE1UTE9yaWdpbk1ha2Uoc291cmNlLm9yaWdpbi54LCAxLCAxKTsKICAgICAgICAgZm9y
ICh1aW50MzJfdCBsYXllciA9IDA7IGxheWVyIDwgY29weVNpemUuZGVwdGhPckFycmF5TGF5ZXJz
OyArK2xheWVyKSB7Ci0gICAgICAgICAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRp
Yy4KICAgICAgICAgICAgIGF1dG8gZGVzdGluYXRpb25PZmZzZXQgPSBzdGF0aWNfY2FzdDxOU1VJ
bnRlZ2VyPihkZXN0aW5hdGlvbi5sYXlvdXQub2Zmc2V0ICsgbGF5ZXIgKiBkZXN0aW5hdGlvbkJ5
dGVzUGVySW1hZ2UpOwogICAgICAgICAgICAgTlNVSW50ZWdlciBzb3VyY2VTbGljZSA9IHNvdXJj
ZS5vcmlnaW4ueiArIGxheWVyOwogICAgICAgICAgICAgW21fYmxpdENvbW1hbmRFbmNvZGVyCkBA
IC00NzcsNyArNDcyLDYgQEAgdm9pZCBDb21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZl
cihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgc291cmNlLCBjb24KICAgICAgICAgYXV0byBz
b3VyY2VTaXplID0gTVRMU2l6ZU1ha2Uod2lkdGhGb3JNZXRhbCwgaGVpZ2h0Rm9yTWV0YWwsIDEp
OwogICAgICAgICBhdXRvIHNvdXJjZU9yaWdpbiA9IE1UTE9yaWdpbk1ha2Uoc291cmNlLm9yaWdp
bi54LCBzb3VyY2Uub3JpZ2luLnksIDEpOwogICAgICAgICBmb3IgKHVpbnQzMl90IGxheWVyID0g
MDsgbGF5ZXIgPCBjb3B5U2l6ZS5kZXB0aE9yQXJyYXlMYXllcnM7ICsrbGF5ZXIpIHsKLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljLgogICAgICAgICAgICAgYXV0
byBkZXN0aW5hdGlvbk9mZnNldCA9IHN0YXRpY19jYXN0PE5TVUludGVnZXI+KGRlc3RpbmF0aW9u
LmxheW91dC5vZmZzZXQgKyBsYXllciAqIGRlc3RpbmF0aW9uQnl0ZXNQZXJJbWFnZSk7CiAgICAg
ICAgICAgICBOU1VJbnRlZ2VyIHNvdXJjZVNsaWNlID0gc291cmNlLm9yaWdpbi56ICsgbGF5ZXI7
CiAgICAgICAgICAgICBbbV9ibGl0Q29tbWFuZEVuY29kZXIKQEAgLTYxNyw3ICs2MTEsNiBAQCB2
b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5VGV4dHVyZVRvVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VD
b3B5VGV4dHVyZSYgc291cmNlLCBjbwogICAgICAgICBhdXRvIHNvdXJjZU9yaWdpbiA9IE1UTE9y
aWdpbk1ha2Uoc291cmNlLm9yaWdpbi54LCAxLCAxKTsKICAgICAgICAgYXV0byBkZXN0aW5hdGlv
bk9yaWdpbiA9IE1UTE9yaWdpbk1ha2UoZGVzdGluYXRpb24ub3JpZ2luLngsIDEsIDEpOwogICAg
ICAgICBmb3IgKHVpbnQzMl90IGxheWVyID0gMDsgbGF5ZXIgPCBjb3B5U2l6ZS5kZXB0aE9yQXJy
YXlMYXllcnM7ICsrbGF5ZXIpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBh
cml0aG1ldGljLgogICAgICAgICAgICAgTlNVSW50ZWdlciBzb3VyY2VTbGljZSA9IHNvdXJjZS5v
cmlnaW4ueiArIGxheWVyOwogICAgICAgICAgICAgTlNVSW50ZWdlciBkZXN0aW5hdGlvblNsaWNl
ID0gZGVzdGluYXRpb24ub3JpZ2luLnogKyBsYXllcjsKICAgICAgICAgICAgIFttX2JsaXRDb21t
YW5kRW5jb2RlcgpAQCAtNjQwLDcgKzYzMyw2IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlU
ZXh0dXJlVG9UZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBzb3VyY2UsIGNvCiAg
ICAgICAgIGF1dG8gc291cmNlT3JpZ2luID0gTVRMT3JpZ2luTWFrZShzb3VyY2Uub3JpZ2luLngs
IHNvdXJjZS5vcmlnaW4ueSwgMSk7CiAgICAgICAgIGF1dG8gZGVzdGluYXRpb25PcmlnaW4gPSBN
VExPcmlnaW5NYWtlKGRlc3RpbmF0aW9uLm9yaWdpbi54LCBkZXN0aW5hdGlvbi5vcmlnaW4ueSwg
MSk7CiAgICAgICAgIGZvciAodWludDMyX3QgbGF5ZXIgPSAwOyBsYXllciA8IGNvcHlTaXplLmRl
cHRoT3JBcnJheUxheWVyczsgKytsYXllcikgewotICAgICAgICAgICAgLy8gRklYTUU6IFVzZSBj
aGVja2VkIGFyaXRobWV0aWMuCiAgICAgICAgICAgICBOU1VJbnRlZ2VyIHNvdXJjZVNsaWNlID0g
c291cmNlLm9yaWdpbi56ICsgbGF5ZXI7CiAgICAgICAgICAgICBOU1VJbnRlZ2VyIGRlc3RpbmF0
aW9uU2xpY2UgPSBkZXN0aW5hdGlvbi5vcmlnaW4ueiArIGxheWVyOwogICAgICAgICAgICAgW21f
YmxpdENvbW1hbmRFbmNvZGVyCkBAIC02OTIsOCArNjg0LDggQEAgYm9vbCBDb21tYW5kRW5jb2Rl
cjo6dmFsaWRhdGVDbGVhckJ1ZmZlcihjb25zdCBCdWZmZXImIGJ1ZmZlciwgdWludDY0X3Qgb2Zm
c2V0LAogICAgIGlmIChvZmZzZXQgJSA0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAv
LyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KLSAgICBpZiAoYnVmZmVyLnNpemUoKSA8
IG9mZnNldCArIHNpemUpCisgICAgYXV0byBlbmQgPSBDaGVja2VkVWludDY0KG9mZnNldCkgKyBD
aGVja2VkVWludDY0KHNpemUpOworICAgIGlmIChlbmQuaGFzT3ZlcmZsb3dlZCgpIHx8IGJ1ZmZl
ci5zaXplKCkgPCBlbmQudmFsdWUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgcmV0
dXJuIHRydWU7CkBAIC03MDcsOCArNjk5LDEyIEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNsZWFy
QnVmZmVyKGNvbnN0IEJ1ZmZlciYgYnVmZmVyLCB1aW50NjRfdCBvZmZzZXQsIHVpbnQ2NF90CiAg
ICAgICAgIHJldHVybjsKIAogICAgIGlmIChzaXplID09IFdHUFVfV0hPTEVfU0laRSkgewotICAg
ICAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KLSAgICAgICAgc2l6ZSA9IGJ1
ZmZlci5zaXplKCkgLSBvZmZzZXQ7CisgICAgICAgIGF1dG8gbG9jYWxTaXplID0gQ2hlY2tlZFVp
bnQ2NChidWZmZXIuc2l6ZSgpKSAtIENoZWNrZWRVaW50NjQob2Zmc2V0KTsKKyAgICAgICAgaWYg
KGxvY2FsU2l6ZS5oYXNPdmVyZmxvd2VkKCkpIHsKKyAgICAgICAgICAgIG1fZGV2aWNlLT5nZW5l
cmF0ZUFWYWxpZGF0aW9uRXJyb3IoIkNvbW1hbmRFbmNvZGVyOjpjbGVhckJ1ZmZlcigpOiBvZmZz
ZXQgPiBidWZmZXIuc2l6ZSJfcyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgc2l6ZSA9IGxvY2FsU2l6ZS52YWx1ZSgpOwogICAgIH0KIAogICAgIGlmICghdmFsaWRh
dGVDbGVhckJ1ZmZlcihidWZmZXIsIG9mZnNldCwgc2l6ZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUubW0K
aW5kZXggMDc3ZDQxYTI4MDg5Li40OTg5YWYxNTk1YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1F1ZXVlLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLm1tCkBA
IC0zMiw2ICszMiw3IEBACiAjaW1wb3J0ICJEZXZpY2UuaCIKICNpbXBvcnQgIklzVmFsaWRUb1Vz
ZVdpdGguaCIKICNpbXBvcnQgIlRleHR1cmUuaCIKKyNpbXBvcnQgPHd0Zi9DaGVja2VkQXJpdGht
ZXRpYy5oPgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIApAQCAtMTcxLDggKzE3Miw4IEBAIGJvb2wg
UXVldWU6OnZhbGlkYXRlV3JpdGVCdWZmZXIoY29uc3QgQnVmZmVyJiBidWZmZXIsIHVpbnQ2NF90
IGJ1ZmZlck9mZnNldCwgc2l6CiAgICAgaWYgKGJ1ZmZlck9mZnNldCAlIDQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljCi0gICAg
aWYgKGJ1ZmZlck9mZnNldCArIHNpemUgPiBidWZmZXIuc2l6ZSgpKQorICAgIGF1dG8gZW5kID0g
Q2hlY2tlZFVpbnQ2NChidWZmZXJPZmZzZXQpICsgQ2hlY2tlZFVpbnQ2NChzaXplKTsKKyAgICBp
ZiAoZW5kLmhhc092ZXJmbG93ZWQoKSB8fCBlbmQudmFsdWUoKSA+IGJ1ZmZlci5zaXplKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwpAQCAtMjgzLDcgKzI4NCw2
IEBAIHZvaWQgUXVldWU6OndyaXRlVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYg
ZGVzdGluYXRpb24sIGNvbnN0IHZvaWQqIGRhCiAKICAgICBOU1VJbnRlZ2VyIGJ5dGVzUGVyUm93
ID0gZGF0YUxheW91dC5ieXRlc1BlclJvdzsKIAotICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBh
cml0aG1ldGljLgogICAgIE5TVUludGVnZXIgYnl0ZXNQZXJJbWFnZSA9IGRhdGFMYXlvdXQuYnl0
ZXNQZXJSb3cgKiBkYXRhTGF5b3V0LnJvd3NQZXJJbWFnZTsKIAogICAgIE1UTEJsaXRPcHRpb24g
b3B0aW9ucyA9IE1UTEJsaXRPcHRpb25Ob25lOwpAQCAtMzE1LDcgKzMxNSw2IEBAIHZvaWQgUXVl
dWU6OndyaXRlVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5VGV4dHVyZSYgZGVzdGluYXRpb24s
IGNvbnN0IHZvaWQqIGRhCiAgICAgICAgICAgICAgICAgY2FzZSBXR1BVVGV4dHVyZURpbWVuc2lv
bl8xRDogewogICAgICAgICAgICAgICAgICAgICBhdXRvIHJlZ2lvbiA9IE1UTFJlZ2lvbk1ha2Ux
RChkZXN0aW5hdGlvbi5vcmlnaW4ueCwgc2l6ZS53aWR0aCk7CiAgICAgICAgICAgICAgICAgICAg
IGZvciAodWludDMyX3QgbGF5ZXIgPSAwOyBsYXllciA8IHNpemUuZGVwdGhPckFycmF5TGF5ZXJz
OyArK2xheWVyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogVXNlIGNoZWNr
ZWQgYXJpdGhtZXRpYy4KICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gc291cmNlT2Zmc2V0
ID0gc3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4oZGF0YUxheW91dC5vZmZzZXQgKyBsYXllciAqIGJ5
dGVzUGVySW1hZ2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgTlNVSW50ZWdlciBkZXN0aW5h
dGlvblNsaWNlID0gZGVzdGluYXRpb24ub3JpZ2luLnogKyBsYXllcjsKICAgICAgICAgICAgICAg
ICAgICAgICAgIFtmcm9tQVBJKGRlc3RpbmF0aW9uLnRleHR1cmUpLnRleHR1cmUoKQpAQCAtMzMx
LDcgKzMzMCw2IEBAIHZvaWQgUXVldWU6OndyaXRlVGV4dHVyZShjb25zdCBXR1BVSW1hZ2VDb3B5
VGV4dHVyZSYgZGVzdGluYXRpb24sIGNvbnN0IHZvaWQqIGRhCiAgICAgICAgICAgICAgICAgY2Fz
ZSBXR1BVVGV4dHVyZURpbWVuc2lvbl8yRDogewogICAgICAgICAgICAgICAgICAgICBhdXRvIHJl
Z2lvbiA9IE1UTFJlZ2lvbk1ha2UyRChkZXN0aW5hdGlvbi5vcmlnaW4ueCwgZGVzdGluYXRpb24u
b3JpZ2luLnksIHNpemUud2lkdGgsIHNpemUuaGVpZ2h0KTsKICAgICAgICAgICAgICAgICAgICAg
Zm9yICh1aW50MzJfdCBsYXllciA9IDA7IGxheWVyIDwgc2l6ZS5kZXB0aE9yQXJyYXlMYXllcnM7
ICsrbGF5ZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tl
ZCBhcml0aG1ldGljLgogICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBzb3VyY2VPZmZzZXQg
PSBzdGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihkYXRhTGF5b3V0Lm9mZnNldCArIGxheWVyICogYnl0
ZXNQZXJJbWFnZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBOU1VJbnRlZ2VyIGRlc3RpbmF0
aW9uU2xpY2UgPSBkZXN0aW5hdGlvbi5vcmlnaW4ueiArIGxheWVyOwogICAgICAgICAgICAgICAg
ICAgICAgICAgW2Zyb21BUEkoZGVzdGluYXRpb24udGV4dHVyZSkudGV4dHVyZSgpCkBAIC0zOTAs
NyArMzg4LDYgQEAgdm9pZCBRdWV1ZTo6d3JpdGVUZXh0dXJlKGNvbnN0IFdHUFVJbWFnZUNvcHlU
ZXh0dXJlJiBkZXN0aW5hdGlvbiwgY29uc3Qgdm9pZCogZGEKICAgICAgICAgYXV0byBzb3VyY2VT
aXplID0gTVRMU2l6ZU1ha2Uod2lkdGhGb3JNZXRhbCwgMSwgMSk7CiAgICAgICAgIGF1dG8gZGVz
dGluYXRpb25PcmlnaW4gPSBNVExPcmlnaW5NYWtlKGRlc3RpbmF0aW9uLm9yaWdpbi54LCAxLCAx
KTsKICAgICAgICAgZm9yICh1aW50MzJfdCBsYXllciA9IDA7IGxheWVyIDwgc2l6ZS5kZXB0aE9y
QXJyYXlMYXllcnM7ICsrbGF5ZXIpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tl
ZCBhcml0aG1ldGljLgogICAgICAgICAgICAgTlNVSW50ZWdlciBzb3VyY2VPZmZzZXQgPSBsYXll
ciAqIGJ5dGVzUGVySW1hZ2U7CiAgICAgICAgICAgICBOU1VJbnRlZ2VyIGRlc3RpbmF0aW9uU2xp
Y2UgPSBkZXN0aW5hdGlvbi5vcmlnaW4ueiArIGxheWVyOwogICAgICAgICAgICAgW21fYmxpdENv
bW1hbmRFbmNvZGVyCkBAIC00MTMsNyArNDEwLDYgQEAgdm9pZCBRdWV1ZTo6d3JpdGVUZXh0dXJl
KGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBkZXN0aW5hdGlvbiwgY29uc3Qgdm9pZCogZGEK
ICAgICAgICAgYXV0byBzb3VyY2VTaXplID0gTVRMU2l6ZU1ha2Uod2lkdGhGb3JNZXRhbCwgaGVp
Z2h0Rm9yTWV0YWwsIDEpOwogICAgICAgICBhdXRvIGRlc3RpbmF0aW9uT3JpZ2luID0gTVRMT3Jp
Z2luTWFrZShkZXN0aW5hdGlvbi5vcmlnaW4ueCwgZGVzdGluYXRpb24ub3JpZ2luLnksIDEpOwog
ICAgICAgICBmb3IgKHVpbnQzMl90IGxheWVyID0gMDsgbGF5ZXIgPCBzaXplLmRlcHRoT3JBcnJh
eUxheWVyczsgKytsYXllcikgewotICAgICAgICAgICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFy
aXRobWV0aWMuCiAgICAgICAgICAgICBOU1VJbnRlZ2VyIHNvdXJjZU9mZnNldCA9IGxheWVyICog
Ynl0ZXNQZXJJbWFnZTsKICAgICAgICAgICAgIE5TVUludGVnZXIgZGVzdGluYXRpb25TbGljZSA9
IGRlc3RpbmF0aW9uLm9yaWdpbi56ICsgbGF5ZXI7CiAgICAgICAgICAgICBbbV9ibGl0Q29tbWFu
ZEVuY29kZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaAppbmRleCA0ZmZhMjZiZjlmNWEuLmZkYjhhMThh
ZTU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5oCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaApAQCAtODgsNyArODgsNyBAQCBwcml2YXRlOgog
ICAgIFRleHR1cmUoaWQ8TVRMVGV4dHVyZT4sIGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYs
IFZlY3RvcjxXR1BVVGV4dHVyZUZvcm1hdD4mJiB2aWV3Rm9ybWF0cywgRGV2aWNlJik7CiAgICAg
VGV4dHVyZShEZXZpY2UmKTsKIAotICAgIFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IgcmVzb2x2
ZVRleHR1cmVWaWV3RGVzY3JpcHRvckRlZmF1bHRzKGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2Ny
aXB0b3ImKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0
b3I+IHJlc29sdmVUZXh0dXJlVmlld0Rlc2NyaXB0b3JEZWZhdWx0cyhjb25zdCBXR1BVVGV4dHVy
ZVZpZXdEZXNjcmlwdG9yJikgY29uc3Q7CiAgICAgdWludDMyX3QgYXJyYXlMYXllckNvdW50KCkg
Y29uc3Q7CiAgICAgYm9vbCB2YWxpZGF0ZUNyZWF0ZVZpZXcoY29uc3QgV0dQVVRleHR1cmVWaWV3
RGVzY3JpcHRvciYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9U
ZXh0dXJlLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5tbQppbmRleCAyYzgwZmZi
NDk4MGUuLjkzMDc5ZTkzNGMzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4
dHVyZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW1wb3J0ICJBUElDb252ZXJzaW9ucy5oIgogI2ltcG9ydCAiRGV2aWNlLmgiCiAj
aW1wb3J0ICJUZXh0dXJlVmlldy5oIgorI2ltcG9ydCA8d3RmL0NoZWNrZWRBcml0aG1ldGljLmg+
CiAjaW1wb3J0IDx3dGYvTWF0aEV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKQEAgLTIw
NjgsNyArMjA2OSw3IEBAIFRleHR1cmU6OlRleHR1cmUoRGV2aWNlJiBkZXZpY2UpCiAKIFRleHR1
cmU6On5UZXh0dXJlKCkgPSBkZWZhdWx0OwogCi1XR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yIFRl
eHR1cmU6OnJlc29sdmVUZXh0dXJlVmlld0Rlc2NyaXB0b3JEZWZhdWx0cyhjb25zdCBXR1BVVGV4
dHVyZVZpZXdEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAorc3RkOjpvcHRpb25hbDxXR1BV
VGV4dHVyZVZpZXdEZXNjcmlwdG9yPiBUZXh0dXJlOjpyZXNvbHZlVGV4dHVyZVZpZXdEZXNjcmlw
dG9yRGVmYXVsdHMoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYgZGVzY3JpcHRvcikg
Y29uc3QKIHsKICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNhYnN0cmFj
dC1vcGRlZi1yZXNvbHZpbmctZ3B1dGV4dHVyZXZpZXdkZXNjcmlwdG9yLWRlZmF1bHRzCiAKQEAg
LTIwNzgsOCArMjA3OSwxMCBAQCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yIFRleHR1cmU6OnJl
c29sdmVUZXh0dXJlVmlld0Rlc2NyaXB0b3JEZWZhdWx0cyhjb25zdCBXRwogICAgICAgICByZXNv
bHZlZC5mb3JtYXQgPSBtX2Rlc2NyaXB0b3IuZm9ybWF0OwogCiAgICAgaWYgKHJlc29sdmVkLm1p
cExldmVsQ291bnQgPT0gV0dQVV9NSVBfTEVWRUxfQ09VTlRfVU5ERUZJTkVEKSB7Ci0gICAgICAg
IC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljLgotICAgICAgICByZXNvbHZlZC5taXBM
ZXZlbENvdW50ID0gbV9kZXNjcmlwdG9yLm1pcExldmVsQ291bnQgLSByZXNvbHZlZC5iYXNlTWlw
TGV2ZWw7CisgICAgICAgIGF1dG8gbWlwTGV2ZWxDb3VudCA9IENoZWNrZWRVaW50MzIobV9kZXNj
cmlwdG9yLm1pcExldmVsQ291bnQpIC0gQ2hlY2tlZFVpbnQzMihyZXNvbHZlZC5iYXNlTWlwTGV2
ZWwpOworICAgICAgICBpZiAobWlwTGV2ZWxDb3VudC5oYXNPdmVyZmxvd2VkKCkpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXNvbHZlZC5taXBMZXZlbENvdW50
ID0gbWlwTGV2ZWxDb3VudC52YWx1ZSgpOwogICAgIH0KIAogICAgIGlmIChyZXNvbHZlZC5kaW1l
bnNpb24gPT0gV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX1VuZGVmaW5lZCkgewpAQCAtMjExMiwx
MCArMjExNSwxMyBAQCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yIFRleHR1cmU6OnJlc29sdmVU
ZXh0dXJlVmlld0Rlc2NyaXB0b3JEZWZhdWx0cyhjb25zdCBXRwogICAgICAgICAgICAgcmVzb2x2
ZWQuYXJyYXlMYXllckNvdW50ID0gNjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNl
IFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl8yREFycmF5OgotICAgICAgICBjYXNlIFdHUFVUZXh0
dXJlVmlld0RpbWVuc2lvbl9DdWJlQXJyYXk6Ci0gICAgICAgICAgICAvLyBGSVhNRTogVXNlIGNo
ZWNrZWQgYXJpdGhtZXRpYwotICAgICAgICAgICAgcmVzb2x2ZWQuYXJyYXlMYXllckNvdW50ID0g
bV9kZXNjcmlwdG9yLnNpemUuZGVwdGhPckFycmF5TGF5ZXJzIC0gcmVzb2x2ZWQuYmFzZUFycmF5
TGF5ZXI7CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX0N1YmVBcnJheTog
eworICAgICAgICAgICAgYXV0byBhcnJheUxheWVyQ291bnQgPSBDaGVja2VkVWludDMyKG1fZGVz
Y3JpcHRvci5zaXplLmRlcHRoT3JBcnJheUxheWVycykgLSBDaGVja2VkVWludDMyKHJlc29sdmVk
LmJhc2VBcnJheUxheWVyKTsKKyAgICAgICAgICAgIGlmIChhcnJheUxheWVyQ291bnQuaGFzT3Zl
cmZsb3dlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAg
ICAgICByZXNvbHZlZC5hcnJheUxheWVyQ291bnQgPSBhcnJheUxheWVyQ291bnQudmFsdWUoKTsK
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2UgV0dQVVRleHR1cmVW
aWV3RGltZW5zaW9uX0ZvcmNlMzI6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgICAgIHJldHVybiByZXNvbHZlZDsKQEAgLTIxNjYsMTggKzIxNzIsMTcgQEAgYm9v
bCBUZXh0dXJlOjp2YWxpZGF0ZUNyZWF0ZVZpZXcoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3Jp
cHRvciYgZGVzY3JpcHRvcikgY28KICAgICBpZiAoIWRlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRo
bWV0aWMuCi0gICAgaWYgKGRlc2NyaXB0b3IuYmFzZU1pcExldmVsICsgZGVzY3JpcHRvci5taXBM
ZXZlbENvdW50ID4gbV9kZXNjcmlwdG9yLm1pcExldmVsQ291bnQpCisgICAgYXV0byBlbmRNaXBM
ZXZlbCA9IENoZWNrZWRVaW50MzIoZGVzY3JpcHRvci5iYXNlTWlwTGV2ZWwpICsgQ2hlY2tlZFVp
bnQzMihkZXNjcmlwdG9yLm1pcExldmVsQ291bnQpOworICAgIGlmIChlbmRNaXBMZXZlbC5oYXNP
dmVyZmxvd2VkKCkgfHwgZW5kTWlwTGV2ZWwudmFsdWUoKSA+IG1fZGVzY3JpcHRvci5taXBMZXZl
bENvdW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWRlc2NyaXB0b3IuYXJy
YXlMYXllckNvdW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBGSVhNRTogVXNl
IGNoZWNrZWQgYXJpdGhtZXRpYy4KLSAgICBpZiAoZGVzY3JpcHRvci5iYXNlQXJyYXlMYXllciAr
IGRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50ID4gYXJyYXlMYXllckNvdW50KCkpCisgICAgYXV0
byBlbmRBcnJheUxheWVyID0gQ2hlY2tlZFVpbnQzMihkZXNjcmlwdG9yLmJhc2VBcnJheUxheWVy
KSArIENoZWNrZWRVaW50MzIoZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQpOworICAgIGlmIChl
bmRBcnJheUxheWVyLmhhc092ZXJmbG93ZWQoKSB8fCBlbmRBcnJheUxheWVyLnZhbHVlKCkgPiBh
cnJheUxheWVyQ291bnQoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgLy8gImRlc2Ny
aXB0b3IuZm9ybWF0IG11c3QgYmUgZXF1YWwgdG8gZWl0aGVyIHRoaXMuW1tkZXNjcmlwdG9yXV0u
Zm9ybWF0IG9yIG9uZSBvZiB0aGUgZm9ybWF0cyBpbiB0aGlzLltbZGVzY3JpcHRvcl1dLnZpZXdG
b3JtYXRzLiIKICAgICBpZiAoZGVzY3JpcHRvci5mb3JtYXQgIT0gbV9kZXNjcmlwdG9yLmZvcm1h
dCAmJiAhbV92aWV3Rm9ybWF0cy5jb250YWlucyhkZXNjcmlwdG9yLmZvcm1hdCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIApAQCAtMjI2MSw3ICsyMjY2LDcgQEAgUmVmPFRleHR1cmVWaWV3PiBU
ZXh0dXJlOjpjcmVhdGVWaWV3KGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGlucHV0
RGVzY3IKIAogICAgIGF1dG8gZGVzY3JpcHRvciA9IHJlc29sdmVUZXh0dXJlVmlld0Rlc2NyaXB0
b3JEZWZhdWx0cyhpbnB1dERlc2NyaXB0b3IpOwogCi0gICAgaWYgKCF2YWxpZGF0ZUNyZWF0ZVZp
ZXcoZGVzY3JpcHRvcikpIHsKKyAgICBpZiAoIWRlc2NyaXB0b3IgfHwgIXZhbGlkYXRlQ3JlYXRl
VmlldygqZGVzY3JpcHRvcikpIHsKICAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRp
b25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAKICAgICAgICAgLy8gRklYTUU6ICJS
ZXR1cm4gYSBuZXcgaW52YWxpZCBHUFVUZXh0dXJlVmlldy4iCkBAIC0yMjY5LDE2ICsyMjc0LDE2
IEBAIFJlZjxUZXh0dXJlVmlldz4gVGV4dHVyZTo6Y3JlYXRlVmlldyhjb25zdCBXR1BVVGV4dHVy
ZVZpZXdEZXNjcmlwdG9yJiBpbnB1dERlc2NyCiAgICAgfQogCiAgICAgc3RkOjpvcHRpb25hbDxN
VExQaXhlbEZvcm1hdD4gcGl4ZWxGb3JtYXQ7Ci0gICAgaWYgKGlzRGVwdGhPclN0ZW5jaWxGb3Jt
YXQoZGVzY3JpcHRvci5mb3JtYXQpKSB7Ci0gICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci5hc3Bl
Y3QpIHsKKyAgICBpZiAoaXNEZXB0aE9yU3RlbmNpbEZvcm1hdChkZXNjcmlwdG9yLT5mb3JtYXQp
KSB7CisgICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci0+YXNwZWN0KSB7CiAgICAgICAgIGNhc2Ug
V0dQVVRleHR1cmVBc3BlY3RfQWxsOgotICAgICAgICAgICAgcGl4ZWxGb3JtYXQgPSBXZWJHUFU6
OnBpeGVsRm9ybWF0KGRlc2NyaXB0b3IuZm9ybWF0KTsKKyAgICAgICAgICAgIHBpeGVsRm9ybWF0
ID0gV2ViR1BVOjpwaXhlbEZvcm1hdChkZXNjcmlwdG9yLT5mb3JtYXQpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgV0dQVVRleHR1cmVBc3BlY3RfU3RlbmNpbE9ubHk6Ci0gICAg
ICAgICAgICBwaXhlbEZvcm1hdCA9IHN0ZW5jaWxPbmx5QXNwZWN0TWV0YWxGb3JtYXQoZGVzY3Jp
cHRvci5mb3JtYXQpOworICAgICAgICAgICAgcGl4ZWxGb3JtYXQgPSBzdGVuY2lsT25seUFzcGVj
dE1ldGFsRm9ybWF0KGRlc2NyaXB0b3ItPmZvcm1hdCk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBXR1BVVGV4dHVyZUFzcGVjdF9EZXB0aE9ubHk6Ci0gICAgICAgICAgICBwaXhl
bEZvcm1hdCA9IGRlcHRoT25seUFzcGVjdE1ldGFsRm9ybWF0KGRlc2NyaXB0b3IuZm9ybWF0KTsK
KyAgICAgICAgICAgIHBpeGVsRm9ybWF0ID0gZGVwdGhPbmx5QXNwZWN0TWV0YWxGb3JtYXQoZGVz
Y3JpcHRvci0+Zm9ybWF0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFdHUFVU
ZXh0dXJlQXNwZWN0X0ZvcmNlMzI6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
QEAgLTIyOTAsMTIgKzIyOTUsMTIgQEAgUmVmPFRleHR1cmVWaWV3PiBUZXh0dXJlOjpjcmVhdGVW
aWV3KGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGlucHV0RGVzY3IKICAgICBBU1NF
UlQoKnBpeGVsRm9ybWF0ICE9IE1UTFBpeGVsRm9ybWF0SW52YWxpZCk7CiAKICAgICBNVExUZXh0
dXJlVHlwZSB0ZXh0dXJlVHlwZTsKLSAgICBzd2l0Y2ggKGRlc2NyaXB0b3IuZGltZW5zaW9uKSB7
CisgICAgc3dpdGNoIChkZXNjcmlwdG9yLT5kaW1lbnNpb24pIHsKICAgICBjYXNlIFdHUFVUZXh0
dXJlVmlld0RpbWVuc2lvbl9VbmRlZmluZWQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm4gVGV4dHVyZVZpZXc6OmNyZWF0ZUludmFsaWQobV9kZXZpY2UpOwog
ICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uXzFEOgotICAgICAgICBpZiAoZGVzY3Jp
cHRvci5hcnJheUxheWVyQ291bnQgPT0gMSkKKyAgICAgICAgaWYgKGRlc2NyaXB0b3ItPmFycmF5
TGF5ZXJDb3VudCA9PSAxKQogICAgICAgICAgICAgdGV4dHVyZVR5cGUgPSBNVExUZXh0dXJlVHlw
ZTFEOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0ZXh0dXJlVHlwZSA9IE1UTFRleHR1cmVU
eXBlMURBcnJheTsKQEAgLTIzMzAsMjEgKzIzMzUsMjEgQEAgUmVmPFRleHR1cmVWaWV3PiBUZXh0
dXJlOjpjcmVhdGVWaWV3KGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGlucHV0RGVz
Y3IKICAgICAgICAgcmV0dXJuIFRleHR1cmVWaWV3OjpjcmVhdGVJbnZhbGlkKG1fZGV2aWNlKTsK
ICAgICB9CiAKLSAgICBhdXRvIGxldmVscyA9IE5TTWFrZVJhbmdlKGRlc2NyaXB0b3IuYmFzZU1p
cExldmVsLCBkZXNjcmlwdG9yLm1pcExldmVsQ291bnQpOworICAgIGF1dG8gbGV2ZWxzID0gTlNN
YWtlUmFuZ2UoZGVzY3JpcHRvci0+YmFzZU1pcExldmVsLCBkZXNjcmlwdG9yLT5taXBMZXZlbENv
dW50KTsKIAotICAgIGF1dG8gc2xpY2VzID0gTlNNYWtlUmFuZ2UoZGVzY3JpcHRvci5iYXNlQXJy
YXlMYXllciwgZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQpOworICAgIGF1dG8gc2xpY2VzID0g
TlNNYWtlUmFuZ2UoZGVzY3JpcHRvci0+YmFzZUFycmF5TGF5ZXIsIGRlc2NyaXB0b3ItPmFycmF5
TGF5ZXJDb3VudCk7CiAKICAgICBpZDxNVExUZXh0dXJlPiB0ZXh0dXJlID0gW21fdGV4dHVyZSBu
ZXdUZXh0dXJlVmlld1dpdGhQaXhlbEZvcm1hdDoqcGl4ZWxGb3JtYXQgdGV4dHVyZVR5cGU6dGV4
dHVyZVR5cGUgbGV2ZWxzOmxldmVscyBzbGljZXM6c2xpY2VzXTsKICAgICBpZiAoIXRleHR1cmUp
CiAgICAgICAgIHJldHVybiBUZXh0dXJlVmlldzo6Y3JlYXRlSW52YWxpZChtX2RldmljZSk7CiAK
LSAgICB0ZXh0dXJlLmxhYmVsID0gZnJvbUFQSShkZXNjcmlwdG9yLmxhYmVsKTsKKyAgICB0ZXh0
dXJlLmxhYmVsID0gZnJvbUFQSShkZXNjcmlwdG9yLT5sYWJlbCk7CiAKICAgICBzdGQ6Om9wdGlv
bmFsPFdHUFVFeHRlbnQzRD4gcmVuZGVyRXh0ZW50OwogICAgIGlmICAobV9kZXNjcmlwdG9yLnVz
YWdlICYgV0dQVVRleHR1cmVVc2FnZV9SZW5kZXJBdHRhY2htZW50KQotICAgICAgICByZW5kZXJF
eHRlbnQgPSBjb21wdXRlUmVuZGVyRXh0ZW50KG1fZGVzY3JpcHRvci5zaXplLCBkZXNjcmlwdG9y
LmJhc2VNaXBMZXZlbCk7CisgICAgICAgIHJlbmRlckV4dGVudCA9IGNvbXB1dGVSZW5kZXJFeHRl
bnQobV9kZXNjcmlwdG9yLnNpemUsIGRlc2NyaXB0b3ItPmJhc2VNaXBMZXZlbCk7CiAKLSAgICBy
ZXR1cm4gVGV4dHVyZVZpZXc6OmNyZWF0ZSh0ZXh0dXJlLCBkZXNjcmlwdG9yLCByZW5kZXJFeHRl
bnQsIG1fZGV2aWNlKTsKKyAgICByZXR1cm4gVGV4dHVyZVZpZXc6OmNyZWF0ZSh0ZXh0dXJlLCAq
ZGVzY3JpcHRvciwgcmVuZGVyRXh0ZW50LCBtX2RldmljZSk7CiB9CiAKIHZvaWQgVGV4dHVyZTo6
ZGVzdHJveSgpCkBAIC0yNzEzLDE2ICsyNzE4LDE2IEBAIGJvb2wgVGV4dHVyZTo6dmFsaWRhdGVU
ZXh0dXJlQ29weVJhbmdlKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBpbWFnZUNvcHlUZXh0
CiAKICAgICBhdXRvIHN1YnJlc291cmNlU2l6ZSA9IGltYWdlQ29weVRleHR1cmVTdWJyZXNvdXJj
ZVNpemUoaW1hZ2VDb3B5VGV4dHVyZSk7CiAKLSAgICAvLyBGSVhNRTogVXNlZCBjaGVja2VkIGFy
aXRobWV0aWMKLSAgICBpZiAoaW1hZ2VDb3B5VGV4dHVyZS5vcmlnaW4ueCArIGNvcHlTaXplLndp
ZHRoID4gc3VicmVzb3VyY2VTaXplLndpZHRoKQorICAgIGF1dG8gZW5kWCA9IENoZWNrZWRVaW50
MzIoaW1hZ2VDb3B5VGV4dHVyZS5vcmlnaW4ueCkgKyBDaGVja2VkVWludDMyKGNvcHlTaXplLndp
ZHRoKTsKKyAgICBpZiAoZW5kWC5oYXNPdmVyZmxvd2VkKCkgfHwgZW5kWC52YWx1ZSgpID4gc3Vi
cmVzb3VyY2VTaXplLndpZHRoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAvLyBGSVhN
RTogVXNlZCBjaGVja2VkIGFyaXRobWV0aWMKLSAgICBpZiAoKGltYWdlQ29weVRleHR1cmUub3Jp
Z2luLnkgKyBjb3B5U2l6ZS5oZWlnaHQpID4gc3VicmVzb3VyY2VTaXplLmhlaWdodCkKKyAgICBh
dXRvIGVuZFkgPSBDaGVja2VkVWludDMyKGltYWdlQ29weVRleHR1cmUub3JpZ2luLnkpICsgQ2hl
Y2tlZFVpbnQzMihjb3B5U2l6ZS5oZWlnaHQpOworICAgIGlmIChlbmRZLmhhc092ZXJmbG93ZWQo
KSB8fCBlbmRZLnZhbHVlKCkgPiBzdWJyZXNvdXJjZVNpemUuaGVpZ2h0KQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAvLyBGSVhNRTogVXNlZCBjaGVja2VkIGFyaXRobWV0aWMKLSAgICBp
ZiAoKGltYWdlQ29weVRleHR1cmUub3JpZ2luLnogKyBjb3B5U2l6ZS5kZXB0aE9yQXJyYXlMYXll
cnMpID4gc3VicmVzb3VyY2VTaXplLmRlcHRoT3JBcnJheUxheWVycykKKyAgICBhdXRvIGVuZFog
PSBDaGVja2VkVWludDMyKGltYWdlQ29weVRleHR1cmUub3JpZ2luLnopICsgQ2hlY2tlZFVpbnQz
Mihjb3B5U2l6ZS5kZXB0aE9yQXJyYXlMYXllcnMpOworICAgIGlmIChlbmRaLmhhc092ZXJmbG93
ZWQoKSB8fCBlbmRaLnZhbHVlKCkgPiBzdWJyZXNvdXJjZVNpemUuZGVwdGhPckFycmF5TGF5ZXJz
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoY29weVNpemUud2lkdGggJSBibG9j
a1dpZHRoKQpAQCAtMjc0Niw4ICsyNzUxLDkgQEAgYm9vbCBUZXh0dXJlOjp2YWxpZGF0ZUxpbmVh
clRleHR1cmVEYXRhKGNvbnN0IFdHUFVUZXh0dXJlRGF0YUxheW91dCYgbGF5b3V0LCB1aW4KIAog
ICAgIGF1dG8gaGVpZ2h0SW5CbG9ja3MgPSBjb3B5RXh0ZW50LmhlaWdodCAvIGJsb2NrSGVpZ2h0
OwogCi0gICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMuCi0gICAgYXV0byBieXRl
c0luTGFzdFJvdyA9IGJsb2NrU2l6ZSAqIHdpZHRoSW5CbG9ja3M7CisgICAgYXV0byBieXRlc0lu
TGFzdFJvdyA9IENoZWNrZWRVaW50MzIoYmxvY2tTaXplKSAqIENoZWNrZWRVaW50MzIod2lkdGhJ
bkJsb2Nrcyk7CisgICAgaWYgKGJ5dGVzSW5MYXN0Um93Lmhhc092ZXJmbG93ZWQoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKGhlaWdodEluQmxvY2tzID4gMSkgewogICAgICAg
ICBpZiAobGF5b3V0LmJ5dGVzUGVyUm93ID09IFdHUFVfQ09QWV9TVFJJREVfVU5ERUZJTkVEKQpA
QCAtMjc2MCw3ICsyNzY2LDcgQEAgYm9vbCBUZXh0dXJlOjp2YWxpZGF0ZUxpbmVhclRleHR1cmVE
YXRhKGNvbnN0IFdHUFVUZXh0dXJlRGF0YUxheW91dCYgbGF5b3V0LCB1aW4KICAgICB9CiAKICAg
ICBpZiAobGF5b3V0LmJ5dGVzUGVyUm93ICE9IFdHUFVfQ09QWV9TVFJJREVfVU5ERUZJTkVEKSB7
Ci0gICAgICAgIGlmIChsYXlvdXQuYnl0ZXNQZXJSb3cgPCBieXRlc0luTGFzdFJvdykKKyAgICAg
ICAgaWYgKGxheW91dC5ieXRlc1BlclJvdyA8IGJ5dGVzSW5MYXN0Um93LnZhbHVlKCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0yNzY5LDMzICsyNzc1LDI2IEBAIGJv
b2wgVGV4dHVyZTo6dmFsaWRhdGVMaW5lYXJUZXh0dXJlRGF0YShjb25zdCBXR1BVVGV4dHVyZURh
dGFMYXlvdXQmIGxheW91dCwgdWluCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
Ci0gICAgdWludDY0X3QgcmVxdWlyZWRCeXRlc0luQ29weSA9IDA7CisgICAgYXV0byByZXF1aXJl
ZEJ5dGVzSW5Db3B5ID0gQ2hlY2tlZFVpbnQ2NCgwKTsKIAogICAgIGlmIChjb3B5RXh0ZW50LmRl
cHRoT3JBcnJheUxheWVycyA+IDEpIHsKLSAgICAgICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFy
aXRobWV0aWMuCi0gICAgICAgIGF1dG8gYnl0ZXNQZXJJbWFnZSA9IGxheW91dC5ieXRlc1BlclJv
dyAqIGxheW91dC5yb3dzUGVySW1hZ2U7CisgICAgICAgIGF1dG8gYnl0ZXNQZXJJbWFnZSA9IENo
ZWNrZWRVaW50MzIobGF5b3V0LmJ5dGVzUGVyUm93KSAqIENoZWNrZWRVaW50MzIobGF5b3V0LnJv
d3NQZXJJbWFnZSk7CiAKLSAgICAgICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMu
Ci0gICAgICAgIGF1dG8gYnl0ZXNCZWZvcmVMYXN0SW1hZ2UgPSBieXRlc1BlckltYWdlICogKGNv
cHlFeHRlbnQuZGVwdGhPckFycmF5TGF5ZXJzIC0gMSk7CisgICAgICAgIGF1dG8gYnl0ZXNCZWZv
cmVMYXN0SW1hZ2UgPSBieXRlc1BlckltYWdlICogKENoZWNrZWRVaW50MzIoY29weUV4dGVudC5k
ZXB0aE9yQXJyYXlMYXllcnMpIC0gMSk7CiAKLSAgICAgICAgLy8gRklYTUU6IFVzZSBjaGVja2Vk
IGFyaXRobWV0aWMuCiAgICAgICAgIHJlcXVpcmVkQnl0ZXNJbkNvcHkgKz0gYnl0ZXNCZWZvcmVM
YXN0SW1hZ2U7CiAgICAgfQogCiAgICAgaWYgKGNvcHlFeHRlbnQuZGVwdGhPckFycmF5TGF5ZXJz
ID4gMCkgewotICAgICAgICBpZiAoaGVpZ2h0SW5CbG9ja3MgPiAxKSB7Ci0gICAgICAgICAgICAv
LyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYy4KLSAgICAgICAgICAgIHJlcXVpcmVkQnl0
ZXNJbkNvcHkgKz0gbGF5b3V0LmJ5dGVzUGVyUm93ICogKGhlaWdodEluQmxvY2tzIC0gMSk7Ci0g
ICAgICAgIH0KKyAgICAgICAgaWYgKGhlaWdodEluQmxvY2tzID4gMSkKKyAgICAgICAgICAgIHJl
cXVpcmVkQnl0ZXNJbkNvcHkgKz0gQ2hlY2tlZFVpbnQzMihsYXlvdXQuYnl0ZXNQZXJSb3cpICog
KENoZWNrZWRVaW50MzIoaGVpZ2h0SW5CbG9ja3MpIC0gMSk7CiAKLSAgICAgICAgaWYgKGhlaWdo
dEluQmxvY2tzID4gMCkgewotICAgICAgICAgICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRo
bWV0aWMuCi0gICAgICAgICAgICByZXF1aXJlZEJ5dGVzSW5Db3B5ICs9IGJ5dGVzSW5MYXN0Um93
OwotICAgICAgICB9CisgICAgICAgIGlmIChoZWlnaHRJbkJsb2NrcyA+IDApCisgICAgICAgICAg
ICByZXF1aXJlZEJ5dGVzSW5Db3B5ICs9IGJ5dGVzSW5MYXN0Um93LnZhbHVlKCk7CiAgICAgfQog
Ci0gICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMuCi0gICAgaWYgKGxheW91dC5v
ZmZzZXQgKyByZXF1aXJlZEJ5dGVzSW5Db3B5ID4gYnl0ZVNpemUpCisgICAgYXV0byBlbmQgPSBD
aGVja2VkVWludDY0KGxheW91dC5vZmZzZXQpICsgcmVxdWlyZWRCeXRlc0luQ29weTsKKyAgICBp
ZiAoZW5kLmhhc092ZXJmbG93ZWQoKSB8fCBlbmQudmFsdWUoKSA+IGJ5dGVTaXplKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsK
</data>
<flag name="review"
          id="485774"
          type_id="1"
          status="+"
          setter="kkinnunen"
    />
    <flag name="commit-queue"
          id="485775"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>