<?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>238710</bug_id>
          
          <creation_ts>2022-04-02 23:56:24 -0700</creation_ts>
          <short_desc>[WebGPU] Implement Texture view format compatibility</short_desc>
          <delta_ts>2022-04-07 12:21:22 -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>
          
          <blocked>238711</blocked>
          <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>1857666</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-02 23:56:24 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857667</commentid>
    <comment_count>1</comment_count>
      <attachid>456500</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-03 00:06:16 -0700</bug_when>
    <thetext>Created attachment 456500
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857672</commentid>
    <comment_count>2</comment_count>
      <attachid>456504</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-03 00:52:00 -0700</bug_when>
    <thetext>Created attachment 456504
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857711</commentid>
    <comment_count>3</comment_count>
      <attachid>456504</attachid>
    <who name="Dan Glastonbury">djg</who>
    <bug_when>2022-04-03 17:15:13 -0700</bug_when>
    <thetext>Comment on attachment 456504
Patch

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

&gt; Source/WebGPU/WebGPU/Texture.mm:1119
&gt; +        return std::nullopt;

There appears to be an inconsistency with the logic in this function. If `WGPUTextureFormat_ASTC4x4Unorm` returns `WGPUTextureFormat_ASTC4x4Unorm`, surely these should return themselves? What am I missing?

&gt; Source/WebGPU/WebGPU/Texture.mm:1243
&gt; +    if (canonicalizedFormat1 != canonicalizedFormat1)

Comparison to self?!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857731</commentid>
    <comment_count>4</comment_count>
      <attachid>456504</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-03 23:08:26 -0700</bug_when>
    <thetext>Comment on attachment 456504
Patch

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

&gt;&gt; Source/WebGPU/WebGPU/Texture.mm:1119
&gt;&gt; +        return std::nullopt;
&gt; 
&gt; There appears to be an inconsistency with the logic in this function. If `WGPUTextureFormat_ASTC4x4Unorm` returns `WGPUTextureFormat_ASTC4x4Unorm`, surely these should return themselves? What am I missing?

Yeah, I see what you mean.

Originally, this function was intended to create equivalence classes via normalization; e.g. RGBA8Unorm and RGBA8UnormSrgb should both be members of the same equivalence class, and this function returns a representative member of that class (sort of like how union set works). ASTC4x4Unorm and ASTC4x4UnormSrgb are in the same equivalence class. I was originally thinking that formats like R8Unorm wouldn&apos;t be part of any equivalence class, so they would return nullopt here, but I can also understand where you&apos;re coming from about saying R8Unorm should be in an equivalence class of 1. I&apos;ll change the implementation to do that.

&gt;&gt; Source/WebGPU/WebGPU/Texture.mm:1243
&gt;&gt; +    if (canonicalizedFormat1 != canonicalizedFormat1)
&gt; 
&gt; Comparison to self?!

🤦🏻‍♂️</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857732</commentid>
    <comment_count>5</comment_count>
      <attachid>456504</attachid>
    <who name="Dan Glastonbury">djg</who>
    <bug_when>2022-04-03 23:12:38 -0700</bug_when>
    <thetext>Comment on attachment 456504
Patch

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

&gt;&gt;&gt; Source/WebGPU/WebGPU/Texture.mm:1119
&gt;&gt;&gt; +        return std::nullopt;
&gt;&gt; 
&gt;&gt; There appears to be an inconsistency with the logic in this function. If `WGPUTextureFormat_ASTC4x4Unorm` returns `WGPUTextureFormat_ASTC4x4Unorm`, surely these should return themselves? What am I missing?
&gt; 
&gt; Yeah, I see what you mean.
&gt; 
&gt; Originally, this function was intended to create equivalence classes via normalization; e.g. RGBA8Unorm and RGBA8UnormSrgb should both be members of the same equivalence class, and this function returns a representative member of that class (sort of like how union set works). ASTC4x4Unorm and ASTC4x4UnormSrgb are in the same equivalence class. I was originally thinking that formats like R8Unorm wouldn&apos;t be part of any equivalence class, so they would return nullopt here, but I can also understand where you&apos;re coming from about saying R8Unorm should be in an equivalence class of 1. I&apos;ll change the implementation to do that.

And with that change this function can be `WGPUTextureFormat Text::removeSRGBSuffix(...)`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1857737</commentid>
    <comment_count>6</comment_count>
      <attachid>456533</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-03 23:21:07 -0700</bug_when>
    <thetext>Created attachment 456533
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859171</commentid>
    <comment_count>7</comment_count>
      <attachid>456533</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-07 02:35:12 -0700</bug_when>
    <thetext>Comment on attachment 456533
Patch

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

&gt; Source/WebGPU/WebGPU/Texture.mm:2255
&gt; +    bool foundFormat = descriptor.format == m_descriptor.format;

if (descriptor.format != m_descriptor.format &amp;&amp; !m_viewFormats.contains(descriptor.format)
     return false;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859172</commentid>
    <comment_count>8</comment_count>
      <attachid>456533</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-04-07 02:40:55 -0700</bug_when>
    <thetext>Comment on attachment 456533
Patch

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

&gt; Source/WebGPU/WebGPU/Texture.mm:2017
&gt; +        viewFormats.reserveInitialCapacity(descriptorViewFormats.viewFormatsCount);

viewFormats = Vector { descriptorViewFormats.viewFormats, descriptorViewFormats.viewFormatsCount };</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859368</commentid>
    <comment_count>9</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-04-07 12:20:20 -0700</bug_when>
    <thetext>Committed r292552 (249390@trunk): &lt;https://commits.webkit.org/249390@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859369</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-07 12:21:22 -0700</bug_when>
    <thetext>&lt;rdar://problem/91437290&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456500</attachid>
            <date>2022-04-03 00:06:16 -0700</date>
            <delta_ts>2022-04-03 00:52:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>18914</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGUyN2JiNjQyYzc2ZTliODQ0MWVkZTg0ZmNmY2JjOWZiYzMxMGMyZDEKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTdW4gQXByIDMg
MDA6MDU6MzcgMjAyMiAtMDcwMAoKICAgIFRleHR1cmUgdmlldyBmb3JtYXQgY29tcGF0aWJpbGl0
eQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkdQVS9D
aGFuZ2VMb2cKaW5kZXggNzViNTM0YjU0NDRlLi45NTE3MmU3MDM2NDggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjggQEAKKzIwMjItMDQtMDMgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBJbXBsZW1lbnQgVGV4dHVyZSB2aWV3IGZvcm1h
dCBjb21wYXRpYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzg3MTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSaWdodCBub3csIHRoZSBkZWZpbml0aW9uIG9mIHRleHR1cmUgdmlldyBmb3JtYXQg
Y29tcGF0aWJpbGl0eSBpcyBuYXJyb3cgZW5vdWdoIHRoYXQgd2UnbGwKKyAgICAgICAgbmV2ZXIg
bmVlZCB0byBhZGQgTVRMVGV4dHVyZVVzYWdlUGl4ZWxGb3JtYXRWaWV3IHRvIHRoZSB1c2FnZSBv
ZiBhbnkgdGV4dHVyZXMuIFNvLCBhbGwgd2UKKyAgICAgICAgaGF2ZSB0byBkbyBpcyB2YWxpZGF0
ZS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRp
b24vY3JlYXRlVGV4dHVyZS5odG1sCisKKyAgICAgICAgKiBXZWJHUFUvQ29tbWFuZEVuY29kZXIu
bW06CisgICAgICAgIChXZWJHUFU6OmFyZUNvcHlDb21wYXRpYmxlKToKKyAgICAgICAgKFdlYkdQ
VTo6aXNTUkdCQ29tcGF0aWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViR1BVL0RldmljZS5o
OgorICAgICAgICAqIFdlYkdQVS9UZXh0dXJlLmg6CisgICAgICAgICogV2ViR1BVL1RleHR1cmUu
bW06CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OnJlbW92ZVNSR0JTdWZmaXgpOgorICAgICAg
ICAoV2ViR1BVOjp0ZXh0dXJlVmlld0Zvcm1hdENvbXBhdGlibGUpOgorICAgICAgICAoV2ViR1BV
OjpEZXZpY2U6OnZhbGlkYXRlQ3JlYXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJHUFU6OnVzYWdl
KToKKyAgICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVUZXh0dXJlKToKKwogMjAyMi0wNC0w
MSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9wIGNv
cHlpbmcgU3RhZ2VkRnJhbWV3b3JrcyB0byB0aGUgc2Vjb25kYXJ5IHBhdGggYnkgZGVmYXVsdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0gYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQppbmRleCAzYjZmZjhhZjIwNmEuLjQw
NTg0MGY5OGEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29k
ZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KQEAgLTMz
LDYgKzMzLDcgQEAKICNpbXBvcnQgIkRldmljZS5oIgogI2ltcG9ydCAiUXVlcnlTZXQuaCIKICNp
bXBvcnQgIlJlbmRlclBhc3NFbmNvZGVyLmgiCisjaW1wb3J0ICJUZXh0dXJlLmgiCiAKIG5hbWVz
cGFjZSBXZWJHUFUgewogCkBAIC01NTYsMTM5ICs1NTcsNiBAQCB2b2lkIENvbW1hbmRFbmNvZGVy
Ojpjb3B5VGV4dHVyZVRvQnVmZmVyKGNvbnN0IFdHUFVJbWFnZUNvcHlUZXh0dXJlJiBzb3VyY2Us
IGNvbgogICAgIH0KIH0KIAotc3RhdGljIHN0ZDo6b3B0aW9uYWw8V0dQVVRleHR1cmVGb3JtYXQ+
IGlzU1JHQkNvbXBhdGlibGUoV0dQVVRleHR1cmVGb3JtYXQgZm9ybWF0KQotewotICAgIHN3aXRj
aCAoZm9ybWF0KSB7Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SOFVub3JtOgotICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfUjhTbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X1I4VWludDoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1I4U2ludDoKLSAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X1IxNlVpbnQ6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMTZT
aW50OgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjE2RmxvYXQ6Ci0gICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9SRzhVbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHOFNu
b3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkc4VWludDoKLSAgICBjYXNlIFdHUFVU
ZXh0dXJlRm9ybWF0X1JHOFNpbnQ6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMzJGbG9h
dDoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1IzMlVpbnQ6Ci0gICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9SMzJTaW50OgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkcxNlVpbnQ6
Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzE2U2ludDoKLSAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X1JHMTZGbG9hdDoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkE4VW5vcm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9SR0JBOFVub3JtU3JnYjoKLSAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X1JH
QkE4VW5vcm07Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBOFNub3JtOgotICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQThVaW50OgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfUkdCQThTaW50OgotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfQkdSQThVbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JH
UkE4VW5vcm1TcmdiOgotICAgICAgICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfQkdSQThVbm9y
bTsKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQjEwQTJVbm9ybToKLSAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X1JHMTFCMTBVZmxvYXQ6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9SR0I5RTVVZmxvYXQ6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzMyRmxvYXQ6Ci0g
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzMyVWludDoKLSAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X1JHMzJTaW50OgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQTE2VWludDoK
LSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkExNlNpbnQ6Ci0gICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9SR0JBMTZGbG9hdDoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkEz
MkZsb2F0OgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQTMyVWludDoKLSAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X1JHQkEzMlNpbnQ6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9TdGVuY2lsODoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMTZVbm9ybToKLSAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMjRQbHVzOgotICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfRGVwdGgyNFBsdXNTdGVuY2lsODoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0RlcHRoMjRVbm9ybVN0ZW5jaWw4OgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgz
MkZsb2F0OgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgzMkZsb2F0U3RlbmNpbDg6
Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9CQzFSR0JBVW5vcm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzFSR0JBVW5vcm1T
cmdiOgotICAgICAgICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfQkMxUkdCQVVub3JtOwotICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMyUkdCQVVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfQkMyUkdCQVVub3JtU3JnYjoKLSAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9y
bWF0X0JDMlJHQkFVbm9ybTsKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDM1JHQkFVbm9y
bToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDM1JHQkFVbm9ybVNyZ2I6Ci0gICAgICAg
IHJldHVybiBXR1BVVGV4dHVyZUZvcm1hdF9CQzNSR0JBVW5vcm07Ci0gICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9CQzRSVW5vcm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzRSU25v
cm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzVSR1Vub3JtOgotICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfQkM1UkdTbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JD
NkhSR0JVZmxvYXQ6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzZIUkdCRmxvYXQ6Ci0g
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9C
QzdSR0JBVW5vcm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzdSR0JBVW5vcm1Tcmdi
OgotICAgICAgICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfQkM3UkdCQVVub3JtOwotICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQjhVbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X0VUQzJSR0I4VW5vcm1TcmdiOgotICAgICAgICByZXR1cm4gV0dQVVRleHR1cmVGb3Jt
YXRfRVRDMlJHQjhVbm9ybTsKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4QTFV
bm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4QTFVbm9ybVNyZ2I6Ci0g
ICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOEExVW5vcm07Ci0gICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCQThVbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X0VUQzJSR0JBOFVub3JtU3JnYjoKLSAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9y
bWF0X0VUQzJSR0JBOFVub3JtOwotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRUFDUjExVW5v
cm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FQUNSMTFTbm9ybToKLSAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0VBQ1JHMTFVbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0VBQ1JHMTFTbm9ybToKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0FTVEM0eDRVbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0FTVEM0eDRVbm9ybVNyZ2I6Ci0gICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZvcm1hdF9BU1RD
NHg0VW5vcm07Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNXg0VW5vcm06Ci0gICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNXg0VW5vcm1TcmdiOgotICAgICAgICByZXR1cm4g
V0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NFVub3JtOwotICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfQVNUQzV4NVVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NVVub3Jt
U3JnYjoKLSAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1eDVVbm9ybTsKLSAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM2eDVVbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0FTVEM2eDVVbm9ybVNyZ2I6Ci0gICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZv
cm1hdF9BU1RDNng1VW5vcm07Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng2VW5v
cm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng2VW5vcm1TcmdiOgotICAgICAg
ICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4NlVub3JtOwotICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfQVNUQzh4NVVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNU
Qzh4NVVub3JtU3JnYjoKLSAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDVV
bm9ybTsKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDZVbm9ybToKLSAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDZVbm9ybVNyZ2I6Ci0gICAgICAgIHJldHVybiBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDOHg2VW5vcm07Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9B
U1RDOHg4VW5vcm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg4VW5vcm1Tcmdi
OgotICAgICAgICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4OFVub3JtOwotICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDVVbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X0FTVEMxMHg1VW5vcm1TcmdiOgotICAgICAgICByZXR1cm4gV0dQVVRleHR1cmVGb3Jt
YXRfQVNUQzEweDVVbm9ybTsKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg2VW5v
cm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NlVub3JtU3JnYjoKLSAgICAg
ICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg2VW5vcm07Ci0gICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDMTB4OFVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
QVNUQzEweDhVbm9ybVNyZ2I6Ci0gICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZvcm1hdF9BU1RD
MTB4OFVub3JtOwotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDEwVW5vcm06Ci0g
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4MTBVbm9ybVNyZ2I6Ci0gICAgICAgIHJl
dHVybiBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4MTBVbm9ybTsKLSAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0FTVEMxMngxMFVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNU
QzEyeDEwVW5vcm1TcmdiOgotICAgICAgICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEy
eDEwVW5vcm07Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTJVbm9ybToKLSAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMngxMlVub3JtU3JnYjoKLSAgICAgICAgcmV0
dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMngxMlVub3JtOwotICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfVW5kZWZpbmVkOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRm9yY2UzMjoK
LSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7Ci0gICAgfQotfQotCiBzdGF0aWMgYm9vbCBhcmVDb3B5Q29tcGF0aWJsZShXR1BVVGV4dHVy
ZUZvcm1hdCBmb3JtYXQxLCBXR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQyKQogewogICAgIC8vIGh0
dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2NvcHktY29tcGF0aWJsZQpAQCAtNjk4LDgg
KzU2Niw4IEBAIHN0YXRpYyBib29sIGFyZUNvcHlDb21wYXRpYmxlKFdHUFVUZXh0dXJlRm9ybWF0
IGZvcm1hdDEsIFdHUFVUZXh0dXJlRm9ybWF0IGZvcm1hCiAgICAgICAgIHJldHVybiB0cnVlOwog
CiAgICAgLy8gImZvcm1hdDEgYW5kIGZvcm1hdDIgZGlmZmVyIG9ubHkgaW4gd2hldGhlciB0aGV5
IGFyZSBzcmdiIGZvcm1hdHMgKGhhdmUgdGhlIC1zcmdiIHN1ZmZpeCkuIgotICAgIGF1dG8gY2Fu
b25pY2FsaXplZEZvcm1hdDEgPSBpc1NSR0JDb21wYXRpYmxlKGZvcm1hdDEpOwotICAgIGF1dG8g
Y2Fub25pY2FsaXplZEZvcm1hdDIgPSBpc1NSR0JDb21wYXRpYmxlKGZvcm1hdDIpOworICAgIGF1
dG8gY2Fub25pY2FsaXplZEZvcm1hdDEgPSBUZXh0dXJlOjpyZW1vdmVTUkdCU3VmZml4KGZvcm1h
dDEpOworICAgIGF1dG8gY2Fub25pY2FsaXplZEZvcm1hdDIgPSBUZXh0dXJlOjpyZW1vdmVTUkdC
U3VmZml4KGZvcm1hdDIpOwogICAgIGlmICghY2Fub25pY2FsaXplZEZvcm1hdDEgfHwgIWNhbm9u
aWNhbGl6ZWRGb3JtYXQyKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGNhbm9uaWNh
bGl6ZWRGb3JtYXQxICE9IGNhbm9uaWNhbGl6ZWRGb3JtYXQxKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkdQVS9XZWJHUFUvRGV2aWNlLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UuaApp
bmRleCAyYTI0NzE3NzQ5YzkuLmQ4ZTU5YzhlZDQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvRGV2aWNlLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLmgKQEAg
LTEwMyw3ICsxMDMsNyBAQCBwcml2YXRlOgogICAgIEVycm9yU2NvcGUqIGN1cnJlbnRFcnJvclNj
b3BlKFdHUFVFcnJvckZpbHRlcik7CiAgICAgYm9vbCB2YWxpZGF0ZVBvcEVycm9yU2NvcGUoKSBj
b25zdDsKICAgICBpZDxNVExCdWZmZXI+IHNhZmVDcmVhdGVCdWZmZXIoTlNVSW50ZWdlciBsZW5n
dGgsIE1UTFN0b3JhZ2VNb2RlLCBNVExDUFVDYWNoZU1vZGUgPSBNVExDUFVDYWNoZU1vZGVEZWZh
dWx0Q2FjaGUsIE1UTEhhemFyZFRyYWNraW5nTW9kZSA9IE1UTEhhemFyZFRyYWNraW5nTW9kZURl
ZmF1bHQpIGNvbnN0OwotICAgIGJvb2wgdmFsaWRhdGVDcmVhdGVUZXh0dXJlKGNvbnN0IFdHUFVU
ZXh0dXJlRGVzY3JpcHRvciYpOworICAgIGJvb2wgdmFsaWRhdGVDcmVhdGVUZXh0dXJlKGNvbnN0
IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYsIGNvbnN0IFZlY3RvcjxXR1BVVGV4dHVyZUZvcm1hdD4m
IHZpZXdGb3JtYXRzKTsKIAogICAgIHN0cnVjdCBFcnJvciB7CiAgICAgICAgIFdHUFVFcnJvclR5
cGUgdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaCBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaAppbmRleCAyNjA4MWNjM2UyMWYuLmQ5NWY1Yzlk
NDAwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5oCisrKyBiL1Nv
dXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaApAQCAtNjcsNiArNjcsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGJvb2wgaXNWYWxpZEltYWdlQ29weVNvdXJjZShXR1BVVGV4dHVyZUZvcm1hdCwg
V0dQVVRleHR1cmVBc3BlY3QpOwogICAgIHN0YXRpYyBib29sIGlzVmFsaWRJbWFnZUNvcHlEZXN0
aW5hdGlvbihXR1BVVGV4dHVyZUZvcm1hdCwgV0dQVVRleHR1cmVBc3BlY3QpOwogICAgIHN0YXRp
YyBib29sIHZhbGlkYXRlTGluZWFyVGV4dHVyZURhdGEoY29uc3QgV0dQVVRleHR1cmVEYXRhTGF5
b3V0JiwgdWludDY0X3QsIFdHUFVUZXh0dXJlRm9ybWF0LCBXR1BVRXh0ZW50M0QpOworICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFdHUFVUZXh0dXJlRm9ybWF0PiByZW1vdmVTUkdCU3VmZml4KFdH
UFVUZXh0dXJlRm9ybWF0KTsKIAogICAgIFdHUFVFeHRlbnQzRCBsb2dpY2FsTWlwbGV2ZWxTcGVj
aWZpY1RleHR1cmVFeHRlbnQodWludDMyX3QgbWlwTGV2ZWwpOwogICAgIFdHUFVFeHRlbnQzRCBw
aHlzaWNhbE1pcGxldmVsU3BlY2lmaWNUZXh0dXJlRXh0ZW50KHVpbnQzMl90IG1pcExldmVsKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0gYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9UZXh0dXJlLm1tCmluZGV4IDljNjE3NWRiZWZiOC4uYjlkZjI5OWM3ODFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1RleHR1cmUubW0KQEAgLTEwOTYsNyArMTA5NiwxNTcgQEAgc3RhdGljIGJv
b2wgaGFzU3RvcmFnZUJpbmRpbmdDYXBhYmlsaXR5KFdHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdCkK
ICAgICB9CiB9CiAKLWJvb2wgRGV2aWNlOjp2YWxpZGF0ZUNyZWF0ZVRleHR1cmUoY29uc3QgV0dQ
VVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorc3RkOjpvcHRpb25hbDxXR1BVVGV4dHVy
ZUZvcm1hdD4gVGV4dHVyZTo6cmVtb3ZlU1JHQlN1ZmZpeChXR1BVVGV4dHVyZUZvcm1hdCBmb3Jt
YXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X1I4VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SOFNub3JtOgorICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfUjhVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjhT
aW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjE2VWludDoKKyAgICBjYXNlIFdHUFVU
ZXh0dXJlRm9ybWF0X1IxNlNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMTZGbG9h
dDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHOFVub3JtOgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfUkc4U25vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzhVaW50
OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkc4U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X1IzMkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjMyVWludDoK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1IzMlNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9SRzE2VWludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMTZTaW50Ogor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkcxNkZsb2F0OgorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQThVbm9ybToKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkE4VW5vcm1TcmdiOgorICAgICAgICByZXR1cm4gV0dQ
VVRleHR1cmVGb3JtYXRfUkdCQThVbm9ybTsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JH
QkE4U25vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBOFVpbnQ6CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBOFNpbnQ6CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CR1JBOFVub3JtOgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfQkdSQThVbm9ybVNyZ2I6CisgICAgICAgIHJldHVybiBXR1BVVGV4dHVy
ZUZvcm1hdF9CR1JBOFVub3JtOworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCMTBBMlVu
b3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkcxMUIxMFVmbG9hdDoKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X1JHQjlFNVVmbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X1JHMzJGbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMzJVaW50OgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkczMlNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9SR0JBMTZVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQTE2U2ludDoK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkExNkZsb2F0OgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfUkdCQTMyRmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JB
MzJVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQTMyU2ludDoKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X1N0ZW5jaWw4OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
RGVwdGgxNlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgyNFBsdXM6Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDI0UGx1c1N0ZW5jaWw4OgorICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfRGVwdGgyNFVub3JtU3RlbmNpbDg6CisgICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9EZXB0aDMyRmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0
aDMyRmxvYXRTdGVuY2lsODoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0JDMVJHQkFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X0JDMVJHQkFVbm9ybVNyZ2I6CisgICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZvcm1hdF9C
QzFSR0JBVW5vcm07CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzJSR0JBVW5vcm06Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzJSR0JBVW5vcm1TcmdiOgorICAgICAgICByZXR1
cm4gV0dQVVRleHR1cmVGb3JtYXRfQkMyUkdCQVVub3JtOworICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfQkMzUkdCQVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMzUkdCQVVu
b3JtU3JnYjoKKyAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0JDM1JHQkFVbm9ybTsK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNFJVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0JDNFJTbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNVJHVW5v
cm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzVSR1Nub3JtOgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfQkM2SFJHQlVmbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0JDNkhSR0JGbG9hdDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0JDN1JHQkFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0JDN1JHQkFVbm9ybVNyZ2I6CisgICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZvcm1hdF9CQzdS
R0JBVW5vcm07CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOFVub3JtOgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQjhVbm9ybVNyZ2I6CisgICAgICAgIHJldHVy
biBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOFVub3JtOworICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfRVRDMlJHQjhBMVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJH
QjhBMVVub3JtU3JnYjoKKyAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4
QTFVbm9ybTsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0JBOFVub3JtOgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQkE4VW5vcm1TcmdiOgorICAgICAgICByZXR1
cm4gV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQkE4VW5vcm07CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9FQUNSMTFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VBQ1IxMVNu
b3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRUFDUkcxMVVub3JtOgorICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfRUFDUkcxMVNub3JtOgorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzR4NFVub3JtOgorICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfQVNUQzR4NFVub3JtU3JnYjoKKyAgICAgICAgcmV0dXJuIFdHUFVU
ZXh0dXJlRm9ybWF0X0FTVEM0eDRVbm9ybTsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FT
VEM1eDRVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1eDRVbm9ybVNyZ2I6
CisgICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNXg0VW5vcm07CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNXg1VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9BU1RDNXg1VW5vcm1TcmdiOgorICAgICAgICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRf
QVNUQzV4NVVub3JtOworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4NVVub3JtOgor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4NVVub3JtU3JnYjoKKyAgICAgICAgcmV0
dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM2eDVVbm9ybTsKKyAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X0FTVEM2eDZVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM2eDZV
bm9ybVNyZ2I6CisgICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng2VW5vcm07
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg1VW5vcm06CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDOHg1VW5vcm1TcmdiOgorICAgICAgICByZXR1cm4gV0dQVVRleHR1
cmVGb3JtYXRfQVNUQzh4NVVub3JtOworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4
NlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4NlVub3JtU3JnYjoKKyAg
ICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDZVbm9ybTsKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0FTVEM4eDhVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0FTVEM4eDhVbm9ybVNyZ2I6CisgICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZvcm1hdF9BU1RD
OHg4VW5vcm07CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NVVub3JtOgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDVVbm9ybVNyZ2I6CisgICAgICAgIHJldHVy
biBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NVVub3JtOworICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfQVNUQzEweDZVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg2
VW5vcm1TcmdiOgorICAgICAgICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDZVbm9y
bTsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg4VW5vcm06CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4OFVub3JtU3JnYjoKKyAgICAgICAgcmV0dXJuIFdHUFVU
ZXh0dXJlRm9ybWF0X0FTVEMxMHg4VW5vcm07CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9B
U1RDMTB4MTBVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHgxMFVub3Jt
U3JnYjoKKyAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHgxMFVub3JtOwor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEwVW5vcm06CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTBVbm9ybVNyZ2I6CisgICAgICAgIHJldHVybiBXR1BVVGV4
dHVyZUZvcm1hdF9BU1RDMTJ4MTBVbm9ybTsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FT
VEMxMngxMlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEyVW5vcm1T
cmdiOgorICAgICAgICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEyVW5vcm07Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9VbmRlZmluZWQ6CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9Gb3JjZTMyOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIHRleHR1cmVWaWV3
Rm9ybWF0Q29tcGF0aWJsZShXR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQxLCBXR1BVVGV4dHVyZUZv
cm1hdCBmb3JtYXQyKQoreworICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIv
I3RleHR1cmUtdmlldy1mb3JtYXQtY29tcGF0aWJsZQorCisgICAgaWYgKGZvcm1hdDEgPT0gZm9y
bWF0MikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBhdXRvIGNhbm9uaWNhbGl6ZWRGb3Jt
YXQxID0gVGV4dHVyZTo6cmVtb3ZlU1JHQlN1ZmZpeChmb3JtYXQxKTsKKyAgICBhdXRvIGNhbm9u
aWNhbGl6ZWRGb3JtYXQyID0gVGV4dHVyZTo6cmVtb3ZlU1JHQlN1ZmZpeChmb3JtYXQyKTsKKyAg
ICBpZiAoIWNhbm9uaWNhbGl6ZWRGb3JtYXQxIHx8ICFjYW5vbmljYWxpemVkRm9ybWF0MikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChjYW5vbmljYWxpemVkRm9ybWF0MSAhPSBjYW5v
bmljYWxpemVkRm9ybWF0MSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgRGV2aWNlOjp2YWxpZGF0ZUNyZWF0ZVRleHR1cmUoY29uc3QgV0dQVVRl
eHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBjb25zdCBWZWN0b3I8V0dQVVRleHR1cmVGb3Jt
YXQ+JiB2aWV3Rm9ybWF0cykKIHsKICAgICAvLyBGSVhNRTogInRoaXMgbXVzdCBiZSBhIHZhbGlk
IEdQVURldmljZS4iCiAKQEAgLTEyMTksNyArMTM2OSwxMiBAQCBib29sIERldmljZTo6dmFsaWRh
dGVDcmVhdGVUZXh0dXJlKGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogIkZvciBl
YWNoIHZpZXdGb3JtYXQgaW4gZGVzY3JpcHRvci52aWV3Rm9ybWF0cywgZGVzY3JpcHRvci5mb3Jt
YXQgYW5kIHZpZXdGb3JtYXQgbXVzdCBiZSB0ZXh0dXJlIHZpZXcgZm9ybWF0IGNvbXBhdGlibGUu
IgorICAgIC8vICJGb3IgZWFjaCB2aWV3Rm9ybWF0IGluIGRlc2NyaXB0b3Iudmlld0Zvcm1hdHMi
CisgICAgZm9yIChhdXRvIHZpZXdGb3JtYXQgOiB2aWV3Rm9ybWF0cykgeworICAgICAgICAvLyAi
ZGVzY3JpcHRvci5mb3JtYXQgYW5kIHZpZXdGb3JtYXQgbXVzdCBiZSB0ZXh0dXJlIHZpZXcgZm9y
bWF0IGNvbXBhdGlibGUuIgorICAgICAgICBpZiAoIXRleHR1cmVWaWV3Rm9ybWF0Q29tcGF0aWJs
ZShkZXNjcmlwdG9yLmZvcm1hdCwgdmlld0Zvcm1hdCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMjMzLDcgKzEzODgsOCBAQCBz
dGF0aWMgTVRMVGV4dHVyZVVzYWdlIHVzYWdlKFdHUFVUZXh0dXJlVXNhZ2VGbGFncyB1c2FnZSkK
ICAgICAgICAgcmVzdWx0IHw9IE1UTFRleHR1cmVVc2FnZVNoYWRlcldyaXRlOwogICAgIGlmICh1
c2FnZSAmIFdHUFVUZXh0dXJlVXNhZ2VfUmVuZGVyQXR0YWNobWVudCkKICAgICAgICAgcmVzdWx0
IHw9IE1UTFRleHR1cmVVc2FnZVJlbmRlclRhcmdldDsKLSAgICAvLyBGSVhNRTogRGV0ZXJtaW5l
IHdoZXRoZXIgTVRMVGV4dHVyZVVzYWdlUGl4ZWxGb3JtYXRWaWV3IHNob3VsZCBiZSBzZXQgb3Ig
bm90CisgICAgLy8gRklYTUUoUEVSRk9STUFOQ0UpOiBDb25zaWRlciBzZXR0aW5nIE1UTFRleHR1
cmVVc2FnZVBpeGVsRm9ybWF0VmlldyBvbiBhbGwgZGVwdGgvc3RlbmNpbCB0ZXh0dXJlcywKKyAg
ICAvLyBiZWNhdXNlIHN1cHBvc2VkbHkgaXQncyBmcmVlIGFuZCBpdCBjb3VsZCBiZSB1c2VmdWwg
aW4gd3JpdGVCdWZmZXIoKS4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xODU4LDggKzIw
MTQsMTggQEAgc3RhdGljIE1UTFN0b3JhZ2VNb2RlIHN0b3JhZ2VNb2RlKGJvb2wgZGV2aWNlSGFz
VW5pZmllZE1lbW9yeSkKIAogUmVmUHRyPFRleHR1cmU+IERldmljZTo6Y3JlYXRlVGV4dHVyZShj
b25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgaWYgKGRlc2Ny
aXB0b3IubmV4dEluQ2hhaW4pCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIFZlY3RvcjxX
R1BVVGV4dHVyZUZvcm1hdD4gdmlld0Zvcm1hdHM7CisgICAgaWYgKGRlc2NyaXB0b3IubmV4dElu
Q2hhaW4pIHsKKyAgICAgICAgaWYgKGRlc2NyaXB0b3IubmV4dEluQ2hhaW4tPnNUeXBlICE9IHN0
YXRpY19jYXN0PFdHUFVTVHlwZT4oV0dQVVNUeXBlRXh0ZW5kZWRfVGV4dHVyZURlc2NyaXB0b3JW
aWV3Rm9ybWF0cykpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgY29uc3Qg
YXV0byYgZGVzY3JpcHRvclZpZXdGb3JtYXRzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBXR1BV
VGV4dHVyZURlc2NyaXB0b3JWaWV3Rm9ybWF0cyY+KCpkZXNjcmlwdG9yLm5leHRJbkNoYWluKTsK
KyAgICAgICAgaWYgKGRlc2NyaXB0b3IubmV4dEluQ2hhaW4tPm5leHQgIT0gbnVsbHB0cikKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB2aWV3Rm9ybWF0cy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGRlc2NyaXB0b3JWaWV3Rm9ybWF0cy52aWV3Rm9ybWF0c0NvdW50KTsKKyAg
ICAgICAgLy8gVGhpcyBjb3B5IGlzIHRlbXBvcmFyeSwganVzdCB1bnRpbCBXR1BVVGV4dHVyZURl
c2NyaXB0b3JWaWV3Rm9ybWF0cyBnZXRzIGZvbGRlZCBpbnRvIFdHUFVUZXh0dXJlRGVzY3JpcHRv
ci4KKyAgICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGRlc2NyaXB0b3JWaWV3Rm9ybWF0
cy52aWV3Rm9ybWF0c0NvdW50OyArK2kpCisgICAgICAgICAgICB2aWV3Rm9ybWF0cy51bmNoZWNr
ZWRBcHBlbmQoZGVzY3JpcHRvclZpZXdGb3JtYXRzLnZpZXdGb3JtYXRzW2ldKTsKKyAgICB9CiAK
ICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1ZGV2aWNlLWNy
ZWF0ZXRleHR1cmUKIApAQCAtMTg3MCw3ICsyMDM2LDcgQEAgUmVmUHRyPFRleHR1cmU+IERldmlj
ZTo6Y3JlYXRlVGV4dHVyZShjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
CiAgICAgfQogCiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIHJlcXVpcmVtZW50cyBh
cmUgdW5tZXQ6IgotICAgIGlmICghdmFsaWRhdGVDcmVhdGVUZXh0dXJlKGRlc2NyaXB0b3IpKSB7
CisgICAgaWYgKCF2YWxpZGF0ZUNyZWF0ZVRleHR1cmUoZGVzY3JpcHRvciwgdmlld0Zvcm1hdHMp
KSB7CiAgICAgICAgIC8vICJHZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IuIgogICAgICAgICBn
ZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAg
ICAvLyBGSVhNRTogIlJldHVybiBhIG5ldyBpbnZhbGlkIEdQVVRleHR1cmUuIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456504</attachid>
            <date>2022-04-03 00:52:00 -0700</date>
            <delta_ts>2022-04-03 23:21:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>21888</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGI5ZTVhN2JmM2JmMGYyZTViN2IyYTE3ZWYyZWJkNGE4MDg1ODFmOGMKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTdW4gQXByIDMg
MDA6NTE6MjkgMjAyMiAtMDcwMAoKICAgIFRleHR1cmUgdmlldyBmb3JtYXQgY29tcGF0aWJpbGl0
eQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkdQVS9D
aGFuZ2VMb2cKaW5kZXggNzViNTM0YjU0NDRlLi4zMTUwNjY3NzYxZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzEgQEAKKzIwMjItMDQtMDMgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBJbXBsZW1lbnQgVGV4dHVyZSB2aWV3IGZvcm1h
dCBjb21wYXRpYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzg3MTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSaWdodCBub3csIHRoZSBkZWZpbml0aW9uIG9mIHRleHR1cmUgdmlldyBmb3JtYXQg
Y29tcGF0aWJpbGl0eSBpcyBuYXJyb3cgZW5vdWdoIHRoYXQgd2UnbGwKKyAgICAgICAgbmV2ZXIg
bmVlZCB0byBhZGQgTVRMVGV4dHVyZVVzYWdlUGl4ZWxGb3JtYXRWaWV3IHRvIHRoZSB1c2FnZSBv
ZiBhbnkgdGV4dHVyZXMuIFNvLCBhbGwgd2UKKyAgICAgICAgaGF2ZSB0byBkbyBpcyB2YWxpZGF0
ZS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRp
b24vY3JlYXRlVGV4dHVyZS5odG1sCisKKyAgICAgICAgKiBXZWJHUFUvQ29tbWFuZEVuY29kZXIu
bW06CisgICAgICAgIChXZWJHUFU6OmFyZUNvcHlDb21wYXRpYmxlKToKKyAgICAgICAgKFdlYkdQ
VTo6aXNTUkdCQ29tcGF0aWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViR1BVL0RldmljZS5o
OgorICAgICAgICAqIFdlYkdQVS9UZXh0dXJlLmg6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6
OmNyZWF0ZSk6CisgICAgICAgICogV2ViR1BVL1RleHR1cmUubW06CisgICAgICAgIChXZWJHUFU6
OlRleHR1cmU6OnJlbW92ZVNSR0JTdWZmaXgpOgorICAgICAgICAoV2ViR1BVOjp0ZXh0dXJlVmll
d0Zvcm1hdENvbXBhdGlibGUpOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OnZhbGlkYXRlQ3Jl
YXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJHUFU6OnVzYWdlKToKKyAgICAgICAgKFdlYkdQVTo6
RGV2aWNlOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZTo6VGV4dHVy
ZSk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OnZhbGlkYXRlQ3JlYXRlVmlldyBjb25zdCk6
CisKIDIwMjItMDQtMDEgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAg
ICAgICAgU3RvcCBjb3B5aW5nIFN0YWdlZEZyYW1ld29ya3MgdG8gdGhlIHNlY29uZGFyeSBwYXRo
IGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNv
ZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXggM2I2
ZmY4YWYyMDZhLi40MDU4NDBmOThhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNv
ZGVyLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJEZXZpY2UuaCIKICNpbXBvcnQgIlF1
ZXJ5U2V0LmgiCiAjaW1wb3J0ICJSZW5kZXJQYXNzRW5jb2Rlci5oIgorI2ltcG9ydCAiVGV4dHVy
ZS5oIgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIApAQCAtNTU2LDEzOSArNTU3LDYgQEAgdm9pZCBD
b21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4
dHVyZSYgc291cmNlLCBjb24KICAgICB9CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdHUFVU
ZXh0dXJlRm9ybWF0PiBpc1NSR0JDb21wYXRpYmxlKFdHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdCkK
LXsKLSAgICBzd2l0Y2ggKGZvcm1hdCkgewotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjhV
bm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1I4U25vcm06Ci0gICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9SOFVpbnQ6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SOFNpbnQ6
Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMTZVaW50OgotICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfUjE2U2ludDoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1IxNkZsb2F0Ogot
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkc4VW5vcm06Ci0gICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9SRzhTbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHOFVpbnQ6Ci0g
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzhTaW50OgotICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfUjMyRmxvYXQ6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMzJVaW50OgotICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjMyU2ludDoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X1JHMTZVaW50OgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkcxNlNpbnQ6Ci0gICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzE2RmxvYXQ6Ci0gICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBOFVub3JtOgotICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfUkdCQThVbm9ybVNyZ2I6Ci0gICAgICAgIHJldHVybiBXR1BVVGV4
dHVyZUZvcm1hdF9SR0JBOFVub3JtOwotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQThT
bm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkE4VWludDoKLSAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X1JHQkE4U2ludDoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JHUkE4VW5vcm06Ci0gICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9CR1JBOFVub3JtU3JnYjoKLSAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9y
bWF0X0JHUkE4VW5vcm07Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0IxMEEyVW5vcm06
Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzExQjEwVWZsb2F0OgotICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfUkdCOUU1VWZsb2F0OgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
UkczMkZsb2F0OgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkczMlVpbnQ6Ci0gICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzMyU2ludDoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X1JHQkExNlVpbnQ6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMTZTaW50OgotICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQTE2RmxvYXQ6Ci0gICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9SR0JBMzJGbG9hdDoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkEzMlVp
bnQ6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMzJTaW50OgotICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfU3RlbmNpbDg6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0
aDE2VW5vcm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDI0UGx1czoKLSAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMjRQbHVzU3RlbmNpbDg6Ci0gICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9EZXB0aDI0VW5vcm1TdGVuY2lsODoKLSAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X0RlcHRoMzJGbG9hdDoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMzJG
bG9hdFN0ZW5jaWw4OgotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfQkMxUkdCQVVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
QkMxUkdCQVVub3JtU3JnYjoKLSAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0JDMVJH
QkFVbm9ybTsKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDMlJHQkFVbm9ybToKLSAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDMlJHQkFVbm9ybVNyZ2I6Ci0gICAgICAgIHJldHVybiBX
R1BVVGV4dHVyZUZvcm1hdF9CQzJSR0JBVW5vcm07Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9CQzNSR0JBVW5vcm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzNSR0JBVW5vcm1T
cmdiOgotICAgICAgICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfQkMzUkdCQVVub3JtOwotICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM0UlVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfQkM0UlNub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM1UkdVbm9ybToK
LSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNVJHU25vcm06Ci0gICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9CQzZIUkdCVWZsb2F0OgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM2
SFJHQkZsb2F0OgotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfQkM3UkdCQVVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM3
UkdCQVVub3JtU3JnYjoKLSAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0JDN1JHQkFV
bm9ybTsKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4VW5vcm06Ci0gICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOFVub3JtU3JnYjoKLSAgICAgICAgcmV0dXJuIFdH
UFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4VW5vcm07Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9FVEMyUkdCOEExVW5vcm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOEEx
VW5vcm1TcmdiOgotICAgICAgICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQjhBMVVu
b3JtOwotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQkE4VW5vcm06Ci0gICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCQThVbm9ybVNyZ2I6Ci0gICAgICAgIHJldHVybiBX
R1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCQThVbm9ybTsKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X0VBQ1IxMVVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRUFDUjExU25vcm06
Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FQUNSRzExVW5vcm06Ci0gICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9FQUNSRzExU25vcm06Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNHg0VW5vcm06Ci0gICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDNHg0VW5vcm1TcmdiOgotICAgICAgICByZXR1cm4gV0dQVVRleHR1
cmVGb3JtYXRfQVNUQzR4NFVub3JtOwotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4
NFVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NFVub3JtU3JnYjoKLSAg
ICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1eDRVbm9ybTsKLSAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0FTVEM1eDVVbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0FTVEM1eDVVbm9ybVNyZ2I6Ci0gICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZvcm1hdF9BU1RD
NXg1VW5vcm07Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng1VW5vcm06Ci0gICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng1VW5vcm1TcmdiOgotICAgICAgICByZXR1cm4g
V0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4NVVub3JtOwotICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfQVNUQzZ4NlVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4NlVub3Jt
U3JnYjoKLSAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM2eDZVbm9ybTsKLSAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDVVbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0FTVEM4eDVVbm9ybVNyZ2I6Ci0gICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZv
cm1hdF9BU1RDOHg1VW5vcm07Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg2VW5v
cm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg2VW5vcm1TcmdiOgotICAgICAg
ICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4NlVub3JtOwotICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfQVNUQzh4OFVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNU
Qzh4OFVub3JtU3JnYjoKLSAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDhV
bm9ybTsKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg1VW5vcm06Ci0gICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NVVub3JtU3JnYjoKLSAgICAgICAgcmV0dXJuIFdH
UFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg1VW5vcm07Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9BU1RDMTB4NlVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDZVbm9y
bVNyZ2I6Ci0gICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NlVub3JtOwot
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDhVbm9ybToKLSAgICBjYXNlIFdHUFVU
ZXh0dXJlRm9ybWF0X0FTVEMxMHg4VW5vcm1TcmdiOgotICAgICAgICByZXR1cm4gV0dQVVRleHR1
cmVGb3JtYXRfQVNUQzEweDhVbm9ybTsKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMx
MHgxMFVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDEwVW5vcm1Tcmdi
OgotICAgICAgICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDEwVW5vcm07Ci0gICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTBVbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0FTVEMxMngxMFVub3JtU3JnYjoKLSAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJl
Rm9ybWF0X0FTVEMxMngxMFVub3JtOwotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEy
eDEyVW5vcm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTJVbm9ybVNyZ2I6
Ci0gICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTJVbm9ybTsKLSAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X1VuZGVmaW5lZDoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X0ZvcmNlMzI6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLX0KLQogc3RhdGljIGJvb2wgYXJlQ29weUNvbXBhdGli
bGUoV0dQVVRleHR1cmVGb3JtYXQgZm9ybWF0MSwgV0dQVVRleHR1cmVGb3JtYXQgZm9ybWF0MikK
IHsKICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNjb3B5LWNvbXBhdGli
bGUKQEAgLTY5OCw4ICs1NjYsOCBAQCBzdGF0aWMgYm9vbCBhcmVDb3B5Q29tcGF0aWJsZShXR1BV
VGV4dHVyZUZvcm1hdCBmb3JtYXQxLCBXR1BVVGV4dHVyZUZvcm1hdCBmb3JtYQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIC8vICJmb3JtYXQxIGFuZCBmb3JtYXQyIGRpZmZlciBvbmx5IGlu
IHdoZXRoZXIgdGhleSBhcmUgc3JnYiBmb3JtYXRzIChoYXZlIHRoZSAtc3JnYiBzdWZmaXgpLiIK
LSAgICBhdXRvIGNhbm9uaWNhbGl6ZWRGb3JtYXQxID0gaXNTUkdCQ29tcGF0aWJsZShmb3JtYXQx
KTsKLSAgICBhdXRvIGNhbm9uaWNhbGl6ZWRGb3JtYXQyID0gaXNTUkdCQ29tcGF0aWJsZShmb3Jt
YXQyKTsKKyAgICBhdXRvIGNhbm9uaWNhbGl6ZWRGb3JtYXQxID0gVGV4dHVyZTo6cmVtb3ZlU1JH
QlN1ZmZpeChmb3JtYXQxKTsKKyAgICBhdXRvIGNhbm9uaWNhbGl6ZWRGb3JtYXQyID0gVGV4dHVy
ZTo6cmVtb3ZlU1JHQlN1ZmZpeChmb3JtYXQyKTsKICAgICBpZiAoIWNhbm9uaWNhbGl6ZWRGb3Jt
YXQxIHx8ICFjYW5vbmljYWxpemVkRm9ybWF0MikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGlmIChjYW5vbmljYWxpemVkRm9ybWF0MSAhPSBjYW5vbmljYWxpemVkRm9ybWF0MSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5oIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvRGV2aWNlLmgKaW5kZXggMmEyNDcxNzc0OWM5Li5kOGU1OWM4ZWQ0NzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJHUFUvV2ViR1BVL0RldmljZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0RldmljZS5oCkBAIC0xMDMsNyArMTAzLDcgQEAgcHJpdmF0ZToKICAgICBFcnJvclNjb3BlKiBj
dXJyZW50RXJyb3JTY29wZShXR1BVRXJyb3JGaWx0ZXIpOwogICAgIGJvb2wgdmFsaWRhdGVQb3BF
cnJvclNjb3BlKCkgY29uc3Q7CiAgICAgaWQ8TVRMQnVmZmVyPiBzYWZlQ3JlYXRlQnVmZmVyKE5T
VUludGVnZXIgbGVuZ3RoLCBNVExTdG9yYWdlTW9kZSwgTVRMQ1BVQ2FjaGVNb2RlID0gTVRMQ1BV
Q2FjaGVNb2RlRGVmYXVsdENhY2hlLCBNVExIYXphcmRUcmFja2luZ01vZGUgPSBNVExIYXphcmRU
cmFja2luZ01vZGVEZWZhdWx0KSBjb25zdDsKLSAgICBib29sIHZhbGlkYXRlQ3JlYXRlVGV4dHVy
ZShjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImKTsKKyAgICBib29sIHZhbGlkYXRlQ3JlYXRl
VGV4dHVyZShjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImLCBjb25zdCBWZWN0b3I8V0dQVVRl
eHR1cmVGb3JtYXQ+JiB2aWV3Rm9ybWF0cyk7CiAKICAgICBzdHJ1Y3QgRXJyb3IgewogICAgICAg
ICBXR1BVRXJyb3JUeXBlIHR5cGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9U
ZXh0dXJlLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLmgKaW5kZXggMjYwODFjYzNl
MjFmLi40MDg1Y2I2ZWM0ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1
cmUuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLmgKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbXBvcnQgPHd0Zi9SZWYuaD4KICNpbXBvcnQgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW1w
b3J0IDx3dGYvUmVmUHRyLmg+CisjaW1wb3J0IDx3dGYvVmVjdG9yLmg+CiAKIHN0cnVjdCBXR1BV
VGV4dHVyZUltcGwgewogfTsKQEAgLTQxLDkgKzQyLDkgQEAgY2xhc3MgVGV4dHVyZVZpZXc7CiBj
bGFzcyBUZXh0dXJlIDogcHVibGljIFdHUFVUZXh0dXJlSW1wbCwgcHVibGljIFJlZkNvdW50ZWQ8
VGV4dHVyZT4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8VGV4dHVyZT4gY3JlYXRlKGlkPE1UTFRleHR1cmU+IHRleHR1cmUsIGNvbnN0IFdH
UFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgRGV2aWNlJiBkZXZpY2UpCisgICAgc3Rh
dGljIFJlZjxUZXh0dXJlPiBjcmVhdGUoaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSwgY29uc3QgV0dQ
VVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBWZWN0b3I8V0dQVVRleHR1cmVGb3JtYXQ+
JiYgdmlld0Zvcm1hdHMsIERldmljZSYgZGV2aWNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgVGV4dHVyZSh0ZXh0dXJlLCBkZXNjcmlwdG9yLCBkZXZpY2UpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dHVyZSh0ZXh0dXJlLCBkZXNjcmlwdG9yLCBXVEZN
b3ZlKHZpZXdGb3JtYXRzKSwgZGV2aWNlKSk7CiAgICAgfQogCiAgICAgflRleHR1cmUoKTsKQEAg
LTY3LDYgKzY4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIGlzVmFsaWRJbWFnZUNvcHlT
b3VyY2UoV0dQVVRleHR1cmVGb3JtYXQsIFdHUFVUZXh0dXJlQXNwZWN0KTsKICAgICBzdGF0aWMg
Ym9vbCBpc1ZhbGlkSW1hZ2VDb3B5RGVzdGluYXRpb24oV0dQVVRleHR1cmVGb3JtYXQsIFdHUFVU
ZXh0dXJlQXNwZWN0KTsKICAgICBzdGF0aWMgYm9vbCB2YWxpZGF0ZUxpbmVhclRleHR1cmVEYXRh
KGNvbnN0IFdHUFVUZXh0dXJlRGF0YUxheW91dCYsIHVpbnQ2NF90LCBXR1BVVGV4dHVyZUZvcm1h
dCwgV0dQVUV4dGVudDNEKTsKKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXR1BVVGV4dHVyZUZv
cm1hdD4gcmVtb3ZlU1JHQlN1ZmZpeChXR1BVVGV4dHVyZUZvcm1hdCk7CiAKICAgICBXR1BVRXh0
ZW50M0QgbG9naWNhbE1pcGxldmVsU3BlY2lmaWNUZXh0dXJlRXh0ZW50KHVpbnQzMl90IG1pcExl
dmVsKTsKICAgICBXR1BVRXh0ZW50M0QgcGh5c2ljYWxNaXBsZXZlbFNwZWNpZmljVGV4dHVyZUV4
dGVudCh1aW50MzJfdCBtaXBMZXZlbCk7CkBAIC03NSw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBj
b25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IoKSBjb25zdCB7IHJldHVybiBt
X2Rlc2NyaXB0b3I7IH0KIAogcHJpdmF0ZToKLSAgICBUZXh0dXJlKGlkPE1UTFRleHR1cmU+LCBj
b25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImLCBEZXZpY2UmKTsKKyAgICBUZXh0dXJlKGlkPE1U
TFRleHR1cmU+LCBjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImLCBWZWN0b3I8V0dQVVRleHR1
cmVGb3JtYXQ+JiYgdmlld0Zvcm1hdHMsIERldmljZSYpOwogCiAgICAgV0dQVVRleHR1cmVWaWV3
RGVzY3JpcHRvciByZXNvbHZlVGV4dHVyZVZpZXdEZXNjcmlwdG9yRGVmYXVsdHMoY29uc3QgV0dQ
VVRleHR1cmVWaWV3RGVzY3JpcHRvciYpIGNvbnN0OwogICAgIHVpbnQzMl90IGFycmF5TGF5ZXJD
b3VudCgpIGNvbnN0OwpAQCAtODQsNiArODYsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IGlkPE1U
TFRleHR1cmU+IG1fdGV4dHVyZSB7IG5pbCB9OwogCiAgICAgY29uc3QgV0dQVVRleHR1cmVEZXNj
cmlwdG9yIG1fZGVzY3JpcHRvciB7IH07IC8vICJUaGUgR1BVVGV4dHVyZURlc2NyaXB0b3IgZGVz
Y3JpYmluZyB0aGlzIHRleHR1cmUuIgorICAgIGNvbnN0IFZlY3RvcjxXR1BVVGV4dHVyZUZvcm1h
dD4gbV92aWV3Rm9ybWF0czsKIAogICAgIGNvbnN0IFJlZjxEZXZpY2U+IG1fZGV2aWNlOwogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0gYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9UZXh0dXJlLm1tCmluZGV4IDljNjE3NWRiZWZiOC4uN2YxM2M1YjE5MTc2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tCisrKyBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1RleHR1cmUubW0KQEAgLTEwOTYsNyArMTA5NiwxNTcgQEAgc3RhdGljIGJv
b2wgaGFzU3RvcmFnZUJpbmRpbmdDYXBhYmlsaXR5KFdHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdCkK
ICAgICB9CiB9CiAKLWJvb2wgRGV2aWNlOjp2YWxpZGF0ZUNyZWF0ZVRleHR1cmUoY29uc3QgV0dQ
VVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorc3RkOjpvcHRpb25hbDxXR1BVVGV4dHVy
ZUZvcm1hdD4gVGV4dHVyZTo6cmVtb3ZlU1JHQlN1ZmZpeChXR1BVVGV4dHVyZUZvcm1hdCBmb3Jt
YXQpCit7CisgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X1I4VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SOFNub3JtOgorICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfUjhVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjhT
aW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjE2VWludDoKKyAgICBjYXNlIFdHUFVU
ZXh0dXJlRm9ybWF0X1IxNlNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMTZGbG9h
dDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHOFVub3JtOgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfUkc4U25vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzhVaW50
OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkc4U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X1IzMkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjMyVWludDoK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1IzMlNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9SRzE2VWludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMTZTaW50Ogor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkcxNkZsb2F0OgorICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQThVbm9ybToKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkE4VW5vcm1TcmdiOgorICAgICAgICByZXR1cm4gV0dQ
VVRleHR1cmVGb3JtYXRfUkdCQThVbm9ybTsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JH
QkE4U25vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBOFVpbnQ6CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBOFNpbnQ6CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CR1JBOFVub3JtOgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfQkdSQThVbm9ybVNyZ2I6CisgICAgICAgIHJldHVybiBXR1BVVGV4dHVy
ZUZvcm1hdF9CR1JBOFVub3JtOworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCMTBBMlVu
b3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkcxMUIxMFVmbG9hdDoKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X1JHQjlFNVVmbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X1JHMzJGbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMzJVaW50OgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkczMlNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9SR0JBMTZVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQTE2U2ludDoK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkExNkZsb2F0OgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfUkdCQTMyRmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JB
MzJVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQTMyU2ludDoKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X1N0ZW5jaWw4OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
RGVwdGgxNlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgyNFBsdXM6Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDI0UGx1c1N0ZW5jaWw4OgorICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfRGVwdGgyNFVub3JtU3RlbmNpbDg6CisgICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9EZXB0aDMyRmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0
aDMyRmxvYXRTdGVuY2lsODoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0JDMVJHQkFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X0JDMVJHQkFVbm9ybVNyZ2I6CisgICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZvcm1hdF9C
QzFSR0JBVW5vcm07CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzJSR0JBVW5vcm06Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzJSR0JBVW5vcm1TcmdiOgorICAgICAgICByZXR1
cm4gV0dQVVRleHR1cmVGb3JtYXRfQkMyUkdCQVVub3JtOworICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfQkMzUkdCQVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMzUkdCQVVu
b3JtU3JnYjoKKyAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0JDM1JHQkFVbm9ybTsK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNFJVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0JDNFJTbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNVJHVW5v
cm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzVSR1Nub3JtOgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfQkM2SFJHQlVmbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0JDNkhSR0JGbG9hdDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0JDN1JHQkFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0JDN1JHQkFVbm9ybVNyZ2I6CisgICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZvcm1hdF9CQzdS
R0JBVW5vcm07CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOFVub3JtOgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQjhVbm9ybVNyZ2I6CisgICAgICAgIHJldHVy
biBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOFVub3JtOworICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfRVRDMlJHQjhBMVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJH
QjhBMVVub3JtU3JnYjoKKyAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4
QTFVbm9ybTsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0JBOFVub3JtOgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQkE4VW5vcm1TcmdiOgorICAgICAgICByZXR1
cm4gV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQkE4VW5vcm07CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9FQUNSMTFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VBQ1IxMVNu
b3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRUFDUkcxMVVub3JtOgorICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfRUFDUkcxMVNub3JtOgorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzR4NFVub3JtOgorICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfQVNUQzR4NFVub3JtU3JnYjoKKyAgICAgICAgcmV0dXJuIFdHUFVU
ZXh0dXJlRm9ybWF0X0FTVEM0eDRVbm9ybTsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FT
VEM1eDRVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1eDRVbm9ybVNyZ2I6
CisgICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNXg0VW5vcm07CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNXg1VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9BU1RDNXg1VW5vcm1TcmdiOgorICAgICAgICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRf
QVNUQzV4NVVub3JtOworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4NVVub3JtOgor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4NVVub3JtU3JnYjoKKyAgICAgICAgcmV0
dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM2eDVVbm9ybTsKKyAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X0FTVEM2eDZVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM2eDZV
bm9ybVNyZ2I6CisgICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng2VW5vcm07
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg1VW5vcm06CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDOHg1VW5vcm1TcmdiOgorICAgICAgICByZXR1cm4gV0dQVVRleHR1
cmVGb3JtYXRfQVNUQzh4NVVub3JtOworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4
NlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4NlVub3JtU3JnYjoKKyAg
ICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDZVbm9ybTsKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0FTVEM4eDhVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0FTVEM4eDhVbm9ybVNyZ2I6CisgICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZvcm1hdF9BU1RD
OHg4VW5vcm07CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NVVub3JtOgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDVVbm9ybVNyZ2I6CisgICAgICAgIHJldHVy
biBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NVVub3JtOworICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfQVNUQzEweDZVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg2
VW5vcm1TcmdiOgorICAgICAgICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDZVbm9y
bTsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg4VW5vcm06CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4OFVub3JtU3JnYjoKKyAgICAgICAgcmV0dXJuIFdHUFVU
ZXh0dXJlRm9ybWF0X0FTVEMxMHg4VW5vcm07CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9B
U1RDMTB4MTBVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHgxMFVub3Jt
U3JnYjoKKyAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHgxMFVub3JtOwor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEwVW5vcm06CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTBVbm9ybVNyZ2I6CisgICAgICAgIHJldHVybiBXR1BVVGV4
dHVyZUZvcm1hdF9BU1RDMTJ4MTBVbm9ybTsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FT
VEMxMngxMlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEyVW5vcm1T
cmdiOgorICAgICAgICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEyVW5vcm07Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9VbmRlZmluZWQ6CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9Gb3JjZTMyOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIHRleHR1cmVWaWV3
Rm9ybWF0Q29tcGF0aWJsZShXR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQxLCBXR1BVVGV4dHVyZUZv
cm1hdCBmb3JtYXQyKQoreworICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIv
I3RleHR1cmUtdmlldy1mb3JtYXQtY29tcGF0aWJsZQorCisgICAgaWYgKGZvcm1hdDEgPT0gZm9y
bWF0MikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBhdXRvIGNhbm9uaWNhbGl6ZWRGb3Jt
YXQxID0gVGV4dHVyZTo6cmVtb3ZlU1JHQlN1ZmZpeChmb3JtYXQxKTsKKyAgICBhdXRvIGNhbm9u
aWNhbGl6ZWRGb3JtYXQyID0gVGV4dHVyZTo6cmVtb3ZlU1JHQlN1ZmZpeChmb3JtYXQyKTsKKyAg
ICBpZiAoIWNhbm9uaWNhbGl6ZWRGb3JtYXQxIHx8ICFjYW5vbmljYWxpemVkRm9ybWF0MikKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChjYW5vbmljYWxpemVkRm9ybWF0MSAhPSBjYW5v
bmljYWxpemVkRm9ybWF0MSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKK2Jvb2wgRGV2aWNlOjp2YWxpZGF0ZUNyZWF0ZVRleHR1cmUoY29uc3QgV0dQVVRl
eHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBjb25zdCBWZWN0b3I8V0dQVVRleHR1cmVGb3Jt
YXQ+JiB2aWV3Rm9ybWF0cykKIHsKICAgICAvLyBGSVhNRTogInRoaXMgbXVzdCBiZSBhIHZhbGlk
IEdQVURldmljZS4iCiAKQEAgLTEyMTksNyArMTM2OSwxMiBAQCBib29sIERldmljZTo6dmFsaWRh
dGVDcmVhdGVUZXh0dXJlKGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogIkZvciBl
YWNoIHZpZXdGb3JtYXQgaW4gZGVzY3JpcHRvci52aWV3Rm9ybWF0cywgZGVzY3JpcHRvci5mb3Jt
YXQgYW5kIHZpZXdGb3JtYXQgbXVzdCBiZSB0ZXh0dXJlIHZpZXcgZm9ybWF0IGNvbXBhdGlibGUu
IgorICAgIC8vICJGb3IgZWFjaCB2aWV3Rm9ybWF0IGluIGRlc2NyaXB0b3Iudmlld0Zvcm1hdHMi
CisgICAgZm9yIChhdXRvIHZpZXdGb3JtYXQgOiB2aWV3Rm9ybWF0cykgeworICAgICAgICAvLyAi
ZGVzY3JpcHRvci5mb3JtYXQgYW5kIHZpZXdGb3JtYXQgbXVzdCBiZSB0ZXh0dXJlIHZpZXcgZm9y
bWF0IGNvbXBhdGlibGUuIgorICAgICAgICBpZiAoIXRleHR1cmVWaWV3Rm9ybWF0Q29tcGF0aWJs
ZShkZXNjcmlwdG9yLmZvcm1hdCwgdmlld0Zvcm1hdCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMjMzLDcgKzEzODgsOCBAQCBz
dGF0aWMgTVRMVGV4dHVyZVVzYWdlIHVzYWdlKFdHUFVUZXh0dXJlVXNhZ2VGbGFncyB1c2FnZSkK
ICAgICAgICAgcmVzdWx0IHw9IE1UTFRleHR1cmVVc2FnZVNoYWRlcldyaXRlOwogICAgIGlmICh1
c2FnZSAmIFdHUFVUZXh0dXJlVXNhZ2VfUmVuZGVyQXR0YWNobWVudCkKICAgICAgICAgcmVzdWx0
IHw9IE1UTFRleHR1cmVVc2FnZVJlbmRlclRhcmdldDsKLSAgICAvLyBGSVhNRTogRGV0ZXJtaW5l
IHdoZXRoZXIgTVRMVGV4dHVyZVVzYWdlUGl4ZWxGb3JtYXRWaWV3IHNob3VsZCBiZSBzZXQgb3Ig
bm90CisgICAgLy8gRklYTUUoUEVSRk9STUFOQ0UpOiBDb25zaWRlciBzZXR0aW5nIE1UTFRleHR1
cmVVc2FnZVBpeGVsRm9ybWF0VmlldyBvbiBhbGwgZGVwdGgvc3RlbmNpbCB0ZXh0dXJlcywKKyAg
ICAvLyBiZWNhdXNlIHN1cHBvc2VkbHkgaXQncyBmcmVlIGFuZCBpdCBjb3VsZCBiZSB1c2VmdWwg
aW4gd3JpdGVCdWZmZXIoKS4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xODU4LDggKzIw
MTQsMTggQEAgc3RhdGljIE1UTFN0b3JhZ2VNb2RlIHN0b3JhZ2VNb2RlKGJvb2wgZGV2aWNlSGFz
VW5pZmllZE1lbW9yeSkKIAogUmVmUHRyPFRleHR1cmU+IERldmljZTo6Y3JlYXRlVGV4dHVyZShj
b25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgaWYgKGRlc2Ny
aXB0b3IubmV4dEluQ2hhaW4pCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIFZlY3RvcjxX
R1BVVGV4dHVyZUZvcm1hdD4gdmlld0Zvcm1hdHM7CisgICAgaWYgKGRlc2NyaXB0b3IubmV4dElu
Q2hhaW4pIHsKKyAgICAgICAgaWYgKGRlc2NyaXB0b3IubmV4dEluQ2hhaW4tPnNUeXBlICE9IHN0
YXRpY19jYXN0PFdHUFVTVHlwZT4oV0dQVVNUeXBlRXh0ZW5kZWRfVGV4dHVyZURlc2NyaXB0b3JW
aWV3Rm9ybWF0cykpCisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgY29uc3Qg
YXV0byYgZGVzY3JpcHRvclZpZXdGb3JtYXRzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBXR1BV
VGV4dHVyZURlc2NyaXB0b3JWaWV3Rm9ybWF0cyY+KCpkZXNjcmlwdG9yLm5leHRJbkNoYWluKTsK
KyAgICAgICAgaWYgKGRlc2NyaXB0b3IubmV4dEluQ2hhaW4tPm5leHQgIT0gbnVsbHB0cikKKyAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB2aWV3Rm9ybWF0cy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGRlc2NyaXB0b3JWaWV3Rm9ybWF0cy52aWV3Rm9ybWF0c0NvdW50KTsKKyAg
ICAgICAgLy8gVGhpcyBjb3B5IGlzIHRlbXBvcmFyeSwganVzdCB1bnRpbCBXR1BVVGV4dHVyZURl
c2NyaXB0b3JWaWV3Rm9ybWF0cyBnZXRzIGZvbGRlZCBpbnRvIFdHUFVUZXh0dXJlRGVzY3JpcHRv
ci4KKyAgICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IGRlc2NyaXB0b3JWaWV3Rm9ybWF0
cy52aWV3Rm9ybWF0c0NvdW50OyArK2kpCisgICAgICAgICAgICB2aWV3Rm9ybWF0cy51bmNoZWNr
ZWRBcHBlbmQoZGVzY3JpcHRvclZpZXdGb3JtYXRzLnZpZXdGb3JtYXRzW2ldKTsKKyAgICB9CiAK
ICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1ZGV2aWNlLWNy
ZWF0ZXRleHR1cmUKIApAQCAtMTg3MCw3ICsyMDM2LDcgQEAgUmVmUHRyPFRleHR1cmU+IERldmlj
ZTo6Y3JlYXRlVGV4dHVyZShjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
CiAgICAgfQogCiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIHJlcXVpcmVtZW50cyBh
cmUgdW5tZXQ6IgotICAgIGlmICghdmFsaWRhdGVDcmVhdGVUZXh0dXJlKGRlc2NyaXB0b3IpKSB7
CisgICAgaWYgKCF2YWxpZGF0ZUNyZWF0ZVRleHR1cmUoZGVzY3JpcHRvciwgdmlld0Zvcm1hdHMp
KSB7CiAgICAgICAgIC8vICJHZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IuIgogICAgICAgICBn
ZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAg
ICAvLyBGSVhNRTogIlJldHVybiBhIG5ldyBpbnZhbGlkIEdQVVRleHR1cmUuIgpAQCAtMTk0Miwx
MiArMjEwOCwxMyBAQCBSZWZQdHI8VGV4dHVyZT4gRGV2aWNlOjpjcmVhdGVUZXh0dXJlKGNvbnN0
IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKICAgICAvLyAiU2V0IHQuW1tkZXNj
cmlwdG9yXV0gdG8gZGVzY3JpcHRvci4iCiAgICAgLy8gIlJldHVybiB0LiIKIAotICAgIHJldHVy
biBUZXh0dXJlOjpjcmVhdGUodGV4dHVyZSwgZGVzY3JpcHRvciwgKnRoaXMpOworICAgIHJldHVy
biBUZXh0dXJlOjpjcmVhdGUodGV4dHVyZSwgZGVzY3JpcHRvciwgV1RGTW92ZSh2aWV3Rm9ybWF0
cyksICp0aGlzKTsKIH0KIAotVGV4dHVyZTo6VGV4dHVyZShpZDxNVExUZXh0dXJlPiB0ZXh0dXJl
LCBjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIERldmljZSYgZGV2aWNl
KQorVGV4dHVyZTo6VGV4dHVyZShpZDxNVExUZXh0dXJlPiB0ZXh0dXJlLCBjb25zdCBXR1BVVGV4
dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIFZlY3RvcjxXR1BVVGV4dHVyZUZvcm1hdD4mJiB2
aWV3Rm9ybWF0cywgRGV2aWNlJiBkZXZpY2UpCiAgICAgOiBtX3RleHR1cmUodGV4dHVyZSkKICAg
ICAsIG1fZGVzY3JpcHRvcihkZXNjcmlwdG9yKQorICAgICwgbV92aWV3Rm9ybWF0cyhXVEZNb3Zl
KHZpZXdGb3JtYXRzKSkKICAgICAsIG1fZGV2aWNlKGRldmljZSkKIHsKIH0KQEAgLTIwOTIsNyAr
MjI1OSwxNiBAQCBib29sIFRleHR1cmU6OnZhbGlkYXRlQ3JlYXRlVmlldyhjb25zdCBXR1BVVGV4
dHVyZVZpZXdEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjbwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAvLyBGSVhNRTogImRlc2NyaXB0b3IuZm9ybWF0IG11c3QgYmUgZXF1YWwgdG8gZWl0
aGVyIHRoaXMuW1tkZXNjcmlwdG9yXV0uZm9ybWF0IG9yIG9uZSBvZiB0aGUgZm9ybWF0cyBpbiB0
aGlzLltbZGVzY3JpcHRvcl1dLnZpZXdGb3JtYXRzLiIKLSAgICBpZiAoZGVzY3JpcHRvci5mb3Jt
YXQgIT0gbV9kZXNjcmlwdG9yLmZvcm1hdCkKKyAgICBib29sIGZvdW5kRm9ybWF0ID0gZGVzY3Jp
cHRvci5mb3JtYXQgPT0gbV9kZXNjcmlwdG9yLmZvcm1hdDsKKyAgICBpZiAoIWZvdW5kRm9ybWF0
KSB7CisgICAgICAgIGZvciAoYXV0byB2aWV3Rm9ybWF0IDogbV92aWV3Rm9ybWF0cykgeworICAg
ICAgICAgICAgaWYgKGRlc2NyaXB0b3IuZm9ybWF0ID09IHZpZXdGb3JtYXQpIHsKKyAgICAgICAg
ICAgICAgICBmb3VuZEZvcm1hdCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFmb3VuZEZvcm1hdCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gIklmIGRlc2NyaXB0b3IuZGltZW5zaW9uIGlzOiIK
</data>
<flag name="review"
          id="484816"
          type_id="1"
          status="-"
          setter="mmaxfield"
    />
    <flag name="commit-queue"
          id="484831"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456533</attachid>
            <date>2022-04-03 23:21:07 -0700</date>
            <delta_ts>2022-04-07 02:35:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>21759</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGM0ZDMxMmI5NDYzY2RiMDQxMGMyNWIxZDkzOTY0NDgxMjJkYWQ0OWEKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTdW4gQXByIDMg
MDA6NTE6MjkgMjAyMiAtMDcwMAoKICAgIFRleHR1cmUgdmlldyBmb3JtYXQgY29tcGF0aWJpbGl0
eQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkdQVS9D
aGFuZ2VMb2cKaW5kZXggNzViNTM0YjU0NDRlLi4zMTUwNjY3NzYxZDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzEgQEAKKzIwMjItMDQtMDMgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBJbXBsZW1lbnQgVGV4dHVyZSB2aWV3IGZvcm1h
dCBjb21wYXRpYmlsaXR5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzg3MTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBSaWdodCBub3csIHRoZSBkZWZpbml0aW9uIG9mIHRleHR1cmUgdmlldyBmb3JtYXQg
Y29tcGF0aWJpbGl0eSBpcyBuYXJyb3cgZW5vdWdoIHRoYXQgd2UnbGwKKyAgICAgICAgbmV2ZXIg
bmVlZCB0byBhZGQgTVRMVGV4dHVyZVVzYWdlUGl4ZWxGb3JtYXRWaWV3IHRvIHRoZSB1c2FnZSBv
ZiBhbnkgdGV4dHVyZXMuIFNvLCBhbGwgd2UKKyAgICAgICAgaGF2ZSB0byBkbyBpcyB2YWxpZGF0
ZS4KKworICAgICAgICBUZXN0OiBodHRwL3Rlc3RzL3dlYmdwdS93ZWJncHUvYXBpL3ZhbGlkYXRp
b24vY3JlYXRlVGV4dHVyZS5odG1sCisKKyAgICAgICAgKiBXZWJHUFUvQ29tbWFuZEVuY29kZXIu
bW06CisgICAgICAgIChXZWJHUFU6OmFyZUNvcHlDb21wYXRpYmxlKToKKyAgICAgICAgKFdlYkdQ
VTo6aXNTUkdCQ29tcGF0aWJsZSk6IERlbGV0ZWQuCisgICAgICAgICogV2ViR1BVL0RldmljZS5o
OgorICAgICAgICAqIFdlYkdQVS9UZXh0dXJlLmg6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6
OmNyZWF0ZSk6CisgICAgICAgICogV2ViR1BVL1RleHR1cmUubW06CisgICAgICAgIChXZWJHUFU6
OlRleHR1cmU6OnJlbW92ZVNSR0JTdWZmaXgpOgorICAgICAgICAoV2ViR1BVOjp0ZXh0dXJlVmll
d0Zvcm1hdENvbXBhdGlibGUpOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OnZhbGlkYXRlQ3Jl
YXRlVGV4dHVyZSk6CisgICAgICAgIChXZWJHUFU6OnVzYWdlKToKKyAgICAgICAgKFdlYkdQVTo6
RGV2aWNlOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZTo6VGV4dHVy
ZSk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OnZhbGlkYXRlQ3JlYXRlVmlldyBjb25zdCk6
CisKIDIwMjItMDQtMDEgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAg
ICAgICAgU3RvcCBjb3B5aW5nIFN0YWdlZEZyYW1ld29ya3MgdG8gdGhlIHNlY29uZGFyeSBwYXRo
IGJ5IGRlZmF1bHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNv
ZGVyLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXggM2I2
ZmY4YWYyMDZhLi5mZWQ5MjU3MmQ4ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L0NvbW1hbmRFbmNvZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNv
ZGVyLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJEZXZpY2UuaCIKICNpbXBvcnQgIlF1
ZXJ5U2V0LmgiCiAjaW1wb3J0ICJSZW5kZXJQYXNzRW5jb2Rlci5oIgorI2ltcG9ydCAiVGV4dHVy
ZS5oIgogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIApAQCAtNTU2LDEzOSArNTU3LDYgQEAgdm9pZCBD
b21tYW5kRW5jb2Rlcjo6Y29weVRleHR1cmVUb0J1ZmZlcihjb25zdCBXR1BVSW1hZ2VDb3B5VGV4
dHVyZSYgc291cmNlLCBjb24KICAgICB9CiB9CiAKLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdHUFVU
ZXh0dXJlRm9ybWF0PiBpc1NSR0JDb21wYXRpYmxlKFdHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdCkK
LXsKLSAgICBzd2l0Y2ggKGZvcm1hdCkgewotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjhV
bm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1I4U25vcm06Ci0gICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9SOFVpbnQ6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SOFNpbnQ6
Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMTZVaW50OgotICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfUjE2U2ludDoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1IxNkZsb2F0Ogot
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkc4VW5vcm06Ci0gICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9SRzhTbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHOFVpbnQ6Ci0g
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzhTaW50OgotICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfUjMyRmxvYXQ6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMzJVaW50OgotICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjMyU2ludDoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X1JHMTZVaW50OgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkcxNlNpbnQ6Ci0gICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzE2RmxvYXQ6Ci0gICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBOFVub3JtOgotICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfUkdCQThVbm9ybVNyZ2I6Ci0gICAgICAgIHJldHVybiBXR1BVVGV4
dHVyZUZvcm1hdF9SR0JBOFVub3JtOwotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQThT
bm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkE4VWludDoKLSAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X1JHQkE4U2ludDoKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
LSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JHUkE4VW5vcm06Ci0gICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9CR1JBOFVub3JtU3JnYjoKLSAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9y
bWF0X0JHUkE4VW5vcm07Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0IxMEEyVW5vcm06
Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzExQjEwVWZsb2F0OgotICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfUkdCOUU1VWZsb2F0OgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
UkczMkZsb2F0OgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkczMlVpbnQ6Ci0gICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzMyU2ludDoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X1JHQkExNlVpbnQ6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMTZTaW50OgotICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQTE2RmxvYXQ6Ci0gICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9SR0JBMzJGbG9hdDoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkEzMlVp
bnQ6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMzJTaW50OgotICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfU3RlbmNpbDg6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0
aDE2VW5vcm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDI0UGx1czoKLSAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMjRQbHVzU3RlbmNpbDg6Ci0gICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9EZXB0aDI0VW5vcm1TdGVuY2lsODoKLSAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X0RlcHRoMzJGbG9hdDoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMzJG
bG9hdFN0ZW5jaWw4OgotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfQkMxUkdCQVVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
QkMxUkdCQVVub3JtU3JnYjoKLSAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0JDMVJH
QkFVbm9ybTsKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDMlJHQkFVbm9ybToKLSAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDMlJHQkFVbm9ybVNyZ2I6Ci0gICAgICAgIHJldHVybiBX
R1BVVGV4dHVyZUZvcm1hdF9CQzJSR0JBVW5vcm07Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9CQzNSR0JBVW5vcm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzNSR0JBVW5vcm1T
cmdiOgotICAgICAgICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfQkMzUkdCQVVub3JtOwotICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM0UlVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfQkM0UlNub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM1UkdVbm9ybToK
LSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNVJHU25vcm06Ci0gICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9CQzZIUkdCVWZsb2F0OgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM2
SFJHQkZsb2F0OgotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfQkM3UkdCQVVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM3
UkdCQVVub3JtU3JnYjoKLSAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0JDN1JHQkFV
bm9ybTsKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4VW5vcm06Ci0gICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOFVub3JtU3JnYjoKLSAgICAgICAgcmV0dXJuIFdH
UFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4VW5vcm07Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9FVEMyUkdCOEExVW5vcm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOEEx
VW5vcm1TcmdiOgotICAgICAgICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQjhBMVVu
b3JtOwotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQkE4VW5vcm06Ci0gICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCQThVbm9ybVNyZ2I6Ci0gICAgICAgIHJldHVybiBX
R1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCQThVbm9ybTsKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X0VBQ1IxMVVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRUFDUjExU25vcm06
Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FQUNSRzExVW5vcm06Ci0gICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9FQUNSRzExU25vcm06Ci0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNHg0VW5vcm06Ci0gICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDNHg0VW5vcm1TcmdiOgotICAgICAgICByZXR1cm4gV0dQVVRleHR1
cmVGb3JtYXRfQVNUQzR4NFVub3JtOwotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4
NFVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NFVub3JtU3JnYjoKLSAg
ICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1eDRVbm9ybTsKLSAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0FTVEM1eDVVbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0FTVEM1eDVVbm9ybVNyZ2I6Ci0gICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZvcm1hdF9BU1RD
NXg1VW5vcm07Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng1VW5vcm06Ci0gICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng1VW5vcm1TcmdiOgotICAgICAgICByZXR1cm4g
V0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4NVVub3JtOwotICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfQVNUQzZ4NlVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4NlVub3Jt
U3JnYjoKLSAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM2eDZVbm9ybTsKLSAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDVVbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0FTVEM4eDVVbm9ybVNyZ2I6Ci0gICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZv
cm1hdF9BU1RDOHg1VW5vcm07Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg2VW5v
cm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg2VW5vcm1TcmdiOgotICAgICAg
ICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4NlVub3JtOwotICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfQVNUQzh4OFVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNU
Qzh4OFVub3JtU3JnYjoKLSAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDhV
bm9ybTsKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg1VW5vcm06Ci0gICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NVVub3JtU3JnYjoKLSAgICAgICAgcmV0dXJuIFdH
UFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg1VW5vcm07Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9BU1RDMTB4NlVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDZVbm9y
bVNyZ2I6Ci0gICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NlVub3JtOwot
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDhVbm9ybToKLSAgICBjYXNlIFdHUFVU
ZXh0dXJlRm9ybWF0X0FTVEMxMHg4VW5vcm1TcmdiOgotICAgICAgICByZXR1cm4gV0dQVVRleHR1
cmVGb3JtYXRfQVNUQzEweDhVbm9ybTsKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMx
MHgxMFVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDEwVW5vcm1Tcmdi
OgotICAgICAgICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDEwVW5vcm07Ci0gICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTBVbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0FTVEMxMngxMFVub3JtU3JnYjoKLSAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJl
Rm9ybWF0X0FTVEMxMngxMFVub3JtOwotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEy
eDEyVW5vcm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTJVbm9ybVNyZ2I6
Ci0gICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTJVbm9ybTsKLSAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X1VuZGVmaW5lZDoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X0ZvcmNlMzI6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgIH0KLX0KLQogc3RhdGljIGJvb2wgYXJlQ29weUNvbXBhdGli
bGUoV0dQVVRleHR1cmVGb3JtYXQgZm9ybWF0MSwgV0dQVVRleHR1cmVGb3JtYXQgZm9ybWF0MikK
IHsKICAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNjb3B5LWNvbXBhdGli
bGUKQEAgLTY5OCwxNCArNTY2LDcgQEAgc3RhdGljIGJvb2wgYXJlQ29weUNvbXBhdGlibGUoV0dQ
VVRleHR1cmVGb3JtYXQgZm9ybWF0MSwgV0dQVVRleHR1cmVGb3JtYXQgZm9ybWEKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICAvLyAiZm9ybWF0MSBhbmQgZm9ybWF0MiBkaWZmZXIgb25seSBp
biB3aGV0aGVyIHRoZXkgYXJlIHNyZ2IgZm9ybWF0cyAoaGF2ZSB0aGUgLXNyZ2Igc3VmZml4KS4i
Ci0gICAgYXV0byBjYW5vbmljYWxpemVkRm9ybWF0MSA9IGlzU1JHQkNvbXBhdGlibGUoZm9ybWF0
MSk7Ci0gICAgYXV0byBjYW5vbmljYWxpemVkRm9ybWF0MiA9IGlzU1JHQkNvbXBhdGlibGUoZm9y
bWF0Mik7Ci0gICAgaWYgKCFjYW5vbmljYWxpemVkRm9ybWF0MSB8fCAhY2Fub25pY2FsaXplZEZv
cm1hdDIpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoY2Fub25pY2FsaXplZEZvcm1h
dDEgIT0gY2Fub25pY2FsaXplZEZvcm1hdDEpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAg
IHJldHVybiB0cnVlOworICAgIHJldHVybiBUZXh0dXJlOjpyZW1vdmVTUkdCU3VmZml4KGZvcm1h
dDEpID09IFRleHR1cmU6OnJlbW92ZVNSR0JTdWZmaXgoZm9ybWF0Mik7CiB9CiAKIHN0YXRpYyBi
b29sIHZhbGlkYXRlQ29weVRleHR1cmVUb1RleHR1cmUoY29uc3QgV0dQVUltYWdlQ29weVRleHR1
cmUmIHNvdXJjZSwgY29uc3QgV0dQVUltYWdlQ29weVRleHR1cmUmIGRlc3RpbmF0aW9uLCBjb25z
dCBXR1BVRXh0ZW50M0QmIGNvcHlTaXplKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJH
UFUvRGV2aWNlLmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9EZXZpY2UuaAppbmRleCAyYTI0NzE3
NzQ5YzkuLmQ4ZTU5YzhlZDQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2
aWNlLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvRGV2aWNlLmgKQEAgLTEwMyw3ICsxMDMs
NyBAQCBwcml2YXRlOgogICAgIEVycm9yU2NvcGUqIGN1cnJlbnRFcnJvclNjb3BlKFdHUFVFcnJv
ckZpbHRlcik7CiAgICAgYm9vbCB2YWxpZGF0ZVBvcEVycm9yU2NvcGUoKSBjb25zdDsKICAgICBp
ZDxNVExCdWZmZXI+IHNhZmVDcmVhdGVCdWZmZXIoTlNVSW50ZWdlciBsZW5ndGgsIE1UTFN0b3Jh
Z2VNb2RlLCBNVExDUFVDYWNoZU1vZGUgPSBNVExDUFVDYWNoZU1vZGVEZWZhdWx0Q2FjaGUsIE1U
TEhhemFyZFRyYWNraW5nTW9kZSA9IE1UTEhhemFyZFRyYWNraW5nTW9kZURlZmF1bHQpIGNvbnN0
OwotICAgIGJvb2wgdmFsaWRhdGVDcmVhdGVUZXh0dXJlKGNvbnN0IFdHUFVUZXh0dXJlRGVzY3Jp
cHRvciYpOworICAgIGJvb2wgdmFsaWRhdGVDcmVhdGVUZXh0dXJlKGNvbnN0IFdHUFVUZXh0dXJl
RGVzY3JpcHRvciYsIGNvbnN0IFZlY3RvcjxXR1BVVGV4dHVyZUZvcm1hdD4mIHZpZXdGb3JtYXRz
KTsKIAogICAgIHN0cnVjdCBFcnJvciB7CiAgICAgICAgIFdHUFVFcnJvclR5cGUgdHlwZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaCBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1RleHR1cmUuaAppbmRleCAyNjA4MWNjM2UyMWYuLmI5NDQ3OWIzMjAxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1RleHR1cmUuaApAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCA8d3RmL1JlZi5oPgog
I2ltcG9ydCA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KKyNpbXBv
cnQgPHd0Zi9WZWN0b3IuaD4KIAogc3RydWN0IFdHUFVUZXh0dXJlSW1wbCB7CiB9OwpAQCAtNDEs
OSArNDIsOSBAQCBjbGFzcyBUZXh0dXJlVmlldzsKIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgV0dQ
VVRleHR1cmVJbXBsLCBwdWJsaWMgUmVmQ291bnRlZDxUZXh0dXJlPiB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxUZXh0dXJlPiBjcmVhdGUo
aWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSwgY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yLCBEZXZpY2UmIGRldmljZSkKKyAgICBzdGF0aWMgUmVmPFRleHR1cmU+IGNyZWF0ZShp
ZDxNVExUZXh0dXJlPiB0ZXh0dXJlLCBjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IsIFZlY3RvcjxXR1BVVGV4dHVyZUZvcm1hdD4mJiB2aWV3Rm9ybWF0cywgRGV2aWNlJiBk
ZXZpY2UpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0dXJlKHRleHR1
cmUsIGRlc2NyaXB0b3IsIGRldmljZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBU
ZXh0dXJlKHRleHR1cmUsIGRlc2NyaXB0b3IsIFdURk1vdmUodmlld0Zvcm1hdHMpLCBkZXZpY2Up
KTsKICAgICB9CiAKICAgICB+VGV4dHVyZSgpOwpAQCAtNjcsNiArNjgsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIGJvb2wgaXNWYWxpZEltYWdlQ29weVNvdXJjZShXR1BVVGV4dHVyZUZvcm1hdCwg
V0dQVVRleHR1cmVBc3BlY3QpOwogICAgIHN0YXRpYyBib29sIGlzVmFsaWRJbWFnZUNvcHlEZXN0
aW5hdGlvbihXR1BVVGV4dHVyZUZvcm1hdCwgV0dQVVRleHR1cmVBc3BlY3QpOwogICAgIHN0YXRp
YyBib29sIHZhbGlkYXRlTGluZWFyVGV4dHVyZURhdGEoY29uc3QgV0dQVVRleHR1cmVEYXRhTGF5
b3V0JiwgdWludDY0X3QsIFdHUFVUZXh0dXJlRm9ybWF0LCBXR1BVRXh0ZW50M0QpOworICAgIHN0
YXRpYyBXR1BVVGV4dHVyZUZvcm1hdCByZW1vdmVTUkdCU3VmZml4KFdHUFVUZXh0dXJlRm9ybWF0
KTsKIAogICAgIFdHUFVFeHRlbnQzRCBsb2dpY2FsTWlwbGV2ZWxTcGVjaWZpY1RleHR1cmVFeHRl
bnQodWludDMyX3QgbWlwTGV2ZWwpOwogICAgIFdHUFVFeHRlbnQzRCBwaHlzaWNhbE1pcGxldmVs
U3BlY2lmaWNUZXh0dXJlRXh0ZW50KHVpbnQzMl90IG1pcExldmVsKTsKQEAgLTc1LDcgKzc3LDcg
QEAgcHVibGljOgogICAgIGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcigp
IGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRvcjsgfQogCiBwcml2YXRlOgotICAgIFRleHR1cmUo
aWQ8TVRMVGV4dHVyZT4sIGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYsIERldmljZSYpOwor
ICAgIFRleHR1cmUoaWQ8TVRMVGV4dHVyZT4sIGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYs
IFZlY3RvcjxXR1BVVGV4dHVyZUZvcm1hdD4mJiB2aWV3Rm9ybWF0cywgRGV2aWNlJik7CiAKICAg
ICBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yIHJlc29sdmVUZXh0dXJlVmlld0Rlc2NyaXB0b3JE
ZWZhdWx0cyhjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJikgY29uc3Q7CiAgICAgdWlu
dDMyX3QgYXJyYXlMYXllckNvdW50KCkgY29uc3Q7CkBAIC04NCw2ICs4Niw3IEBAIHByaXZhdGU6
CiAgICAgY29uc3QgaWQ8TVRMVGV4dHVyZT4gbV90ZXh0dXJlIHsgbmlsIH07CiAKICAgICBjb25z
dCBXR1BVVGV4dHVyZURlc2NyaXB0b3IgbV9kZXNjcmlwdG9yIHsgfTsgLy8gIlRoZSBHUFVUZXh0
dXJlRGVzY3JpcHRvciBkZXNjcmliaW5nIHRoaXMgdGV4dHVyZS4iCisgICAgY29uc3QgVmVjdG9y
PFdHUFVUZXh0dXJlRm9ybWF0PiBtX3ZpZXdGb3JtYXRzOwogCiAgICAgY29uc3QgUmVmPERldmlj
ZT4gbV9kZXZpY2U7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVy
ZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0KaW5kZXggOWM2MTc1ZGJlZmI4
Li5lN2NiNmYxYjI3NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUu
bW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5tbQpAQCAtMTA5Niw3ICsxMDk2
LDE1MCBAQCBzdGF0aWMgYm9vbCBoYXNTdG9yYWdlQmluZGluZ0NhcGFiaWxpdHkoV0dQVVRleHR1
cmVGb3JtYXQgZm9ybWF0KQogICAgIH0KIH0KIAotYm9vbCBEZXZpY2U6OnZhbGlkYXRlQ3JlYXRl
VGV4dHVyZShjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitXR1BVVGV4
dHVyZUZvcm1hdCBUZXh0dXJlOjpyZW1vdmVTUkdCU3VmZml4KFdHUFVUZXh0dXJlRm9ybWF0IGZv
cm1hdCkKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfUjhVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1I4U25vcm06CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9SOFVpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9S
OFNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMTZVaW50OgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfUjE2U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1IxNkZs
b2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkc4VW5vcm06CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9SRzhTbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHOFVp
bnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzhTaW50OgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfUjMyRmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMzJVaW50
OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjMyU2ludDoKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X1JHMTZVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkcxNlNpbnQ6
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzE2RmxvYXQ6CisgICAgICAgIHJldHVybiBm
b3JtYXQ7CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBOFVub3JtOgorICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfUkdCQThVbm9ybVNyZ2I6CisgICAgICAgIHJldHVybiBXR1BVVGV4
dHVyZUZvcm1hdF9SR0JBOFVub3JtOworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQThT
bm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkE4VWludDoKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X1JHQkE4U2ludDoKKyAgICAgICAgcmV0dXJuIGZvcm1hdDsKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JHUkE4VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9CR1JBOFVub3JtU3JnYjoKKyAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0JH
UkE4VW5vcm07CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0IxMEEyVW5vcm06CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzExQjEwVWZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfUkdCOUU1VWZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkczMkZs
b2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkczMlVpbnQ6CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9SRzMyU2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkEx
NlVpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMTZTaW50OgorICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfUkdCQTE2RmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9SR0JBMzJGbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkEzMlVpbnQ6Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMzJTaW50OgorICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfU3RlbmNpbDg6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDE2VW5v
cm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDI0UGx1czoKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0RlcHRoMjRQbHVzU3RlbmNpbDg6CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9EZXB0aDI0VW5vcm1TdGVuY2lsODoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0RlcHRoMzJGbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMzJGbG9hdFN0
ZW5jaWw4OgorICAgICAgICByZXR1cm4gZm9ybWF0OworICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfQkMxUkdCQVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMxUkdCQVVub3Jt
U3JnYjoKKyAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0JDMVJHQkFVbm9ybTsKKyAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDMlJHQkFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0JDMlJHQkFVbm9ybVNyZ2I6CisgICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZv
cm1hdF9CQzJSR0JBVW5vcm07CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzNSR0JBVW5v
cm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzNSR0JBVW5vcm1TcmdiOgorICAgICAg
ICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfQkMzUkdCQVVub3JtOworICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfQkM0UlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM0UlNu
b3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM1UkdVbm9ybToKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0JDNVJHU25vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9C
QzZIUkdCVWZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM2SFJHQkZsb2F0Ogor
ICAgICAgICByZXR1cm4gZm9ybWF0OworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM3UkdC
QVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM3UkdCQVVub3JtU3JnYjoKKyAg
ICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0JDN1JHQkFVbm9ybTsKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9FVEMyUkdCOFVub3JtU3JnYjoKKyAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0VU
QzJSR0I4VW5vcm07CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOEExVW5vcm06
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOEExVW5vcm1TcmdiOgorICAgICAg
ICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQjhBMVVub3JtOworICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfRVRDMlJHQkE4VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9FVEMyUkdCQThVbm9ybVNyZ2I6CisgICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZvcm1hdF9F
VEMyUkdCQThVbm9ybTsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VBQ1IxMVVub3JtOgor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRUFDUjExU25vcm06CisgICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9FQUNSRzExVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FQUNS
RzExU25vcm06CisgICAgICAgIHJldHVybiBmb3JtYXQ7CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9BU1RDNHg0VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNHg0VW5v
cm1TcmdiOgorICAgICAgICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfQVNUQzR4NFVub3JtOwor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NFVub3JtOgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfQVNUQzV4NFVub3JtU3JnYjoKKyAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJl
Rm9ybWF0X0FTVEM1eDRVbm9ybTsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1eDVV
bm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1eDVVbm9ybVNyZ2I6CisgICAg
ICAgIHJldHVybiBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNXg1VW5vcm07CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDNng1VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9B
U1RDNng1VW5vcm1TcmdiOgorICAgICAgICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4
NVVub3JtOworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4NlVub3JtOgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4NlVub3JtU3JnYjoKKyAgICAgICAgcmV0dXJuIFdH
UFVUZXh0dXJlRm9ybWF0X0FTVEM2eDZVbm9ybTsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0FTVEM4eDVVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDVVbm9ybVNy
Z2I6CisgICAgICAgIHJldHVybiBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg1VW5vcm07CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg2VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9BU1RDOHg2VW5vcm1TcmdiOgorICAgICAgICByZXR1cm4gV0dQVVRleHR1cmVGb3Jt
YXRfQVNUQzh4NlVub3JtOworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4OFVub3Jt
OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4OFVub3JtU3JnYjoKKyAgICAgICAg
cmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDhVbm9ybTsKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0FTVEMxMHg1VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RD
MTB4NVVub3JtU3JnYjoKKyAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg1
VW5vcm07CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NlVub3JtOgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDZVbm9ybVNyZ2I6CisgICAgICAgIHJldHVybiBX
R1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NlVub3JtOworICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfQVNUQzEweDhVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg4VW5v
cm1TcmdiOgorICAgICAgICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDhVbm9ybTsK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHgxMFVub3JtOgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfQVNUQzEweDEwVW5vcm1TcmdiOgorICAgICAgICByZXR1cm4gV0dQVVRl
eHR1cmVGb3JtYXRfQVNUQzEweDEwVW5vcm07CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9B
U1RDMTJ4MTBVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMngxMFVub3Jt
U3JnYjoKKyAgICAgICAgcmV0dXJuIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMngxMFVub3JtOwor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEyVW5vcm06CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTJVbm9ybVNyZ2I6CisgICAgICAgIHJldHVybiBXR1BVVGV4
dHVyZUZvcm1hdF9BU1RDMTJ4MTJVbm9ybTsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1Vu
ZGVmaW5lZDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0ZvcmNlMzI6CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gV0dQVVRleHR1cmVGb3JtYXRfVW5k
ZWZpbmVkOworICAgIH0KK30KKworc3RhdGljIGJvb2wgdGV4dHVyZVZpZXdGb3JtYXRDb21wYXRp
YmxlKFdHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdDEsIFdHUFVUZXh0dXJlRm9ybWF0IGZvcm1hdDIp
Cit7CisgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jdGV4dHVyZS12aWV3
LWZvcm1hdC1jb21wYXRpYmxlCisKKyAgICBpZiAoZm9ybWF0MSA9PSBmb3JtYXQyKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBUZXh0dXJlOjpyZW1vdmVTUkdCU3VmZml4KGZv
cm1hdDEpID09IFRleHR1cmU6OnJlbW92ZVNSR0JTdWZmaXgoZm9ybWF0Mik7Cit9CisKK2Jvb2wg
RGV2aWNlOjp2YWxpZGF0ZUNyZWF0ZVRleHR1cmUoY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yLCBjb25zdCBWZWN0b3I8V0dQVVRleHR1cmVGb3JtYXQ+JiB2aWV3Rm9ybWF0
cykKIHsKICAgICAvLyBGSVhNRTogInRoaXMgbXVzdCBiZSBhIHZhbGlkIEdQVURldmljZS4iCiAK
QEAgLTEyMTksNyArMTM2MiwxMiBAQCBib29sIERldmljZTo6dmFsaWRhdGVDcmVhdGVUZXh0dXJl
KGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogIkZvciBlYWNoIHZpZXdGb3JtYXQg
aW4gZGVzY3JpcHRvci52aWV3Rm9ybWF0cywgZGVzY3JpcHRvci5mb3JtYXQgYW5kIHZpZXdGb3Jt
YXQgbXVzdCBiZSB0ZXh0dXJlIHZpZXcgZm9ybWF0IGNvbXBhdGlibGUuIgorICAgIC8vICJGb3Ig
ZWFjaCB2aWV3Rm9ybWF0IGluIGRlc2NyaXB0b3Iudmlld0Zvcm1hdHMiCisgICAgZm9yIChhdXRv
IHZpZXdGb3JtYXQgOiB2aWV3Rm9ybWF0cykgeworICAgICAgICAvLyAiZGVzY3JpcHRvci5mb3Jt
YXQgYW5kIHZpZXdGb3JtYXQgbXVzdCBiZSB0ZXh0dXJlIHZpZXcgZm9ybWF0IGNvbXBhdGlibGUu
IgorICAgICAgICBpZiAoIXRleHR1cmVWaWV3Rm9ybWF0Q29tcGF0aWJsZShkZXNjcmlwdG9yLmZv
cm1hdCwgdmlld0Zvcm1hdCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xMjMzLDcgKzEzODEsOCBAQCBzdGF0aWMgTVRMVGV4dHVy
ZVVzYWdlIHVzYWdlKFdHUFVUZXh0dXJlVXNhZ2VGbGFncyB1c2FnZSkKICAgICAgICAgcmVzdWx0
IHw9IE1UTFRleHR1cmVVc2FnZVNoYWRlcldyaXRlOwogICAgIGlmICh1c2FnZSAmIFdHUFVUZXh0
dXJlVXNhZ2VfUmVuZGVyQXR0YWNobWVudCkKICAgICAgICAgcmVzdWx0IHw9IE1UTFRleHR1cmVV
c2FnZVJlbmRlclRhcmdldDsKLSAgICAvLyBGSVhNRTogRGV0ZXJtaW5lIHdoZXRoZXIgTVRMVGV4
dHVyZVVzYWdlUGl4ZWxGb3JtYXRWaWV3IHNob3VsZCBiZSBzZXQgb3Igbm90CisgICAgLy8gRklY
TUUoUEVSRk9STUFOQ0UpOiBDb25zaWRlciBzZXR0aW5nIE1UTFRleHR1cmVVc2FnZVBpeGVsRm9y
bWF0VmlldyBvbiBhbGwgZGVwdGgvc3RlbmNpbCB0ZXh0dXJlcywKKyAgICAvLyBiZWNhdXNlIHN1
cHBvc2VkbHkgaXQncyBmcmVlIGFuZCBpdCBjb3VsZCBiZSB1c2VmdWwgaW4gd3JpdGVCdWZmZXIo
KS4KICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xODU4LDggKzIwMDcsMTggQEAgc3RhdGlj
IE1UTFN0b3JhZ2VNb2RlIHN0b3JhZ2VNb2RlKGJvb2wgZGV2aWNlSGFzVW5pZmllZE1lbW9yeSkK
IAogUmVmUHRyPFRleHR1cmU+IERldmljZTo6Y3JlYXRlVGV4dHVyZShjb25zdCBXR1BVVGV4dHVy
ZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiB7Ci0gICAgaWYgKGRlc2NyaXB0b3IubmV4dEluQ2hh
aW4pCi0gICAgICAgIHJldHVybiBudWxscHRyOworICAgIFZlY3RvcjxXR1BVVGV4dHVyZUZvcm1h
dD4gdmlld0Zvcm1hdHM7CisgICAgaWYgKGRlc2NyaXB0b3IubmV4dEluQ2hhaW4pIHsKKyAgICAg
ICAgaWYgKGRlc2NyaXB0b3IubmV4dEluQ2hhaW4tPnNUeXBlICE9IHN0YXRpY19jYXN0PFdHUFVT
VHlwZT4oV0dQVVNUeXBlRXh0ZW5kZWRfVGV4dHVyZURlc2NyaXB0b3JWaWV3Rm9ybWF0cykpCisg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgY29uc3QgYXV0byYgZGVzY3JpcHRv
clZpZXdGb3JtYXRzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0
b3JWaWV3Rm9ybWF0cyY+KCpkZXNjcmlwdG9yLm5leHRJbkNoYWluKTsKKyAgICAgICAgaWYgKGRl
c2NyaXB0b3IubmV4dEluQ2hhaW4tPm5leHQgIT0gbnVsbHB0cikKKyAgICAgICAgICAgIHJldHVy
biBudWxscHRyOworICAgICAgICB2aWV3Rm9ybWF0cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGRl
c2NyaXB0b3JWaWV3Rm9ybWF0cy52aWV3Rm9ybWF0c0NvdW50KTsKKyAgICAgICAgLy8gVGhpcyBj
b3B5IGlzIHRlbXBvcmFyeSwganVzdCB1bnRpbCBXR1BVVGV4dHVyZURlc2NyaXB0b3JWaWV3Rm9y
bWF0cyBnZXRzIGZvbGRlZCBpbnRvIFdHUFVUZXh0dXJlRGVzY3JpcHRvci4KKyAgICAgICAgZm9y
ICh1aW50MzJfdCBpID0gMDsgaSA8IGRlc2NyaXB0b3JWaWV3Rm9ybWF0cy52aWV3Rm9ybWF0c0Nv
dW50OyArK2kpCisgICAgICAgICAgICB2aWV3Rm9ybWF0cy51bmNoZWNrZWRBcHBlbmQoZGVzY3Jp
cHRvclZpZXdGb3JtYXRzLnZpZXdGb3JtYXRzW2ldKTsKKyAgICB9CiAKICAgICAvLyBodHRwczov
L2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1ZGV2aWNlLWNyZWF0ZXRleHR1cmUKIApA
QCAtMTg3MCw3ICsyMDI5LDcgQEAgUmVmUHRyPFRleHR1cmU+IERldmljZTo6Y3JlYXRlVGV4dHVy
ZShjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiAgICAgfQogCiAgICAg
Ly8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIHJlcXVpcmVtZW50cyBhcmUgdW5tZXQ6IgotICAg
IGlmICghdmFsaWRhdGVDcmVhdGVUZXh0dXJlKGRlc2NyaXB0b3IpKSB7CisgICAgaWYgKCF2YWxp
ZGF0ZUNyZWF0ZVRleHR1cmUoZGVzY3JpcHRvciwgdmlld0Zvcm1hdHMpKSB7CiAgICAgICAgIC8v
ICJHZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IuIgogICAgICAgICBnZW5lcmF0ZUFWYWxpZGF0
aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICAvLyBGSVhNRTogIlJl
dHVybiBhIG5ldyBpbnZhbGlkIEdQVVRleHR1cmUuIgpAQCAtMTk0MiwxMiArMjEwMSwxMyBAQCBS
ZWZQdHI8VGV4dHVyZT4gRGV2aWNlOjpjcmVhdGVUZXh0dXJlKGNvbnN0IFdHUFVUZXh0dXJlRGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKICAgICAvLyAiU2V0IHQuW1tkZXNjcmlwdG9yXV0gdG8gZGVz
Y3JpcHRvci4iCiAgICAgLy8gIlJldHVybiB0LiIKIAotICAgIHJldHVybiBUZXh0dXJlOjpjcmVh
dGUodGV4dHVyZSwgZGVzY3JpcHRvciwgKnRoaXMpOworICAgIHJldHVybiBUZXh0dXJlOjpjcmVh
dGUodGV4dHVyZSwgZGVzY3JpcHRvciwgV1RGTW92ZSh2aWV3Rm9ybWF0cyksICp0aGlzKTsKIH0K
IAotVGV4dHVyZTo6VGV4dHVyZShpZDxNVExUZXh0dXJlPiB0ZXh0dXJlLCBjb25zdCBXR1BVVGV4
dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIERldmljZSYgZGV2aWNlKQorVGV4dHVyZTo6VGV4
dHVyZShpZDxNVExUZXh0dXJlPiB0ZXh0dXJlLCBjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IsIFZlY3RvcjxXR1BVVGV4dHVyZUZvcm1hdD4mJiB2aWV3Rm9ybWF0cywgRGV2
aWNlJiBkZXZpY2UpCiAgICAgOiBtX3RleHR1cmUodGV4dHVyZSkKICAgICAsIG1fZGVzY3JpcHRv
cihkZXNjcmlwdG9yKQorICAgICwgbV92aWV3Rm9ybWF0cyhXVEZNb3ZlKHZpZXdGb3JtYXRzKSkK
ICAgICAsIG1fZGV2aWNlKGRldmljZSkKIHsKIH0KQEAgLTIwOTIsNyArMjI1MiwxNiBAQCBib29s
IFRleHR1cmU6OnZhbGlkYXRlQ3JlYXRlVmlldyhjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yKSBjbwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBGSVhN
RTogImRlc2NyaXB0b3IuZm9ybWF0IG11c3QgYmUgZXF1YWwgdG8gZWl0aGVyIHRoaXMuW1tkZXNj
cmlwdG9yXV0uZm9ybWF0IG9yIG9uZSBvZiB0aGUgZm9ybWF0cyBpbiB0aGlzLltbZGVzY3JpcHRv
cl1dLnZpZXdGb3JtYXRzLiIKLSAgICBpZiAoZGVzY3JpcHRvci5mb3JtYXQgIT0gbV9kZXNjcmlw
dG9yLmZvcm1hdCkKKyAgICBib29sIGZvdW5kRm9ybWF0ID0gZGVzY3JpcHRvci5mb3JtYXQgPT0g
bV9kZXNjcmlwdG9yLmZvcm1hdDsKKyAgICBpZiAoIWZvdW5kRm9ybWF0KSB7CisgICAgICAgIGZv
ciAoYXV0byB2aWV3Rm9ybWF0IDogbV92aWV3Rm9ybWF0cykgeworICAgICAgICAgICAgaWYgKGRl
c2NyaXB0b3IuZm9ybWF0ID09IHZpZXdGb3JtYXQpIHsKKyAgICAgICAgICAgICAgICBmb3VuZEZv
cm1hdCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisgICAgaWYgKCFmb3VuZEZvcm1hdCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgLy8gIklmIGRlc2NyaXB0b3IuZGltZW5zaW9uIGlzOiIK
</data>
<flag name="review"
          id="484856"
          type_id="1"
          status="+"
          setter="kkinnunen"
    />
    <flag name="commit-queue"
          id="484882"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>