<?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>238311</bug_id>
          
          <creation_ts>2022-03-23 23:08:29 -0700</creation_ts>
          <short_desc>[WebGPU] Implement Texture::createView() according to the spec</short_desc>
          <delta_ts>2022-03-31 01:27:09 -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>
          <dependson>238427</dependson>
          <blocked>238367</blocked>
    
    <blocked>238428</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>1854585</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-23 23:08:29 -0700</bug_when>
    <thetext>[WebGPU] Implement Texture::createView() according to the spec</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854586</commentid>
    <comment_count>1</comment_count>
      <attachid>455611</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-23 23:19:14 -0700</bug_when>
    <thetext>Created attachment 455611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854770</commentid>
    <comment_count>2</comment_count>
      <attachid>455611</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-24 11:08:47 -0700</bug_when>
    <thetext>Comment on attachment 455611
Patch

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

&gt; Source/WebGPU/WebGPU/Texture.mm:1934
&gt; +            textureType = MTLTextureType2DMultisampleArray;

This needs to be guarded. https://commits.webkit.org/r291805</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854890</commentid>
    <comment_count>3</comment_count>
      <attachid>455696</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-24 15:58:56 -0700</bug_when>
    <thetext>Created attachment 455696
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855436</commentid>
    <comment_count>4</comment_count>
      <attachid>455863</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-26 21:38:55 -0700</bug_when>
    <thetext>Created attachment 455863
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855453</commentid>
    <comment_count>5</comment_count>
      <attachid>455866</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-27 11:17:06 -0700</bug_when>
    <thetext>Created attachment 455866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855468</commentid>
    <comment_count>6</comment_count>
      <attachid>455874</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-27 18:47:11 -0700</bug_when>
    <thetext>Created attachment 455874
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1855500</commentid>
    <comment_count>7</comment_count>
      <attachid>455887</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-27 22:04:36 -0700</bug_when>
    <thetext>Created attachment 455887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856310</commentid>
    <comment_count>8</comment_count>
      <attachid>455887</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2022-03-30 00:27:01 -0700</bug_when>
    <thetext>Comment on attachment 455887
Patch

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

&gt; Source/WebGPU/WebGPU/Texture.mm:1795
&gt; +        // &quot;set resolved.mipLevelCount to texture.[[descriptor]].mipLevelCount â resolved.baseMipLevel.&quot;

non-ascii chars in comment

&gt; Source/WebGPU/WebGPU/Texture.mm:1841
&gt; +            // &quot;Set resolved.arrayLayerCount to texture.[[descriptor]].size.depthOrArrayLayers â baseArrayLayer.&quot;

non-ascii

&gt; Source/WebGPU/WebGPU/Texture.mm:2031
&gt; +    std::optional&lt;MTLPixelFormat&gt; pixelFormat = MTLPixelFormatInvalid;

Either:
  std::optional&lt;MTLPixelFormat&gt; pixelFormat;
or:
  MTLPixelFormat pixelFormat = MTLPixelFormatInvalid;

not both?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856696</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-30 23:09:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/91087004&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856726</commentid>
    <comment_count>10</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2022-03-31 01:27:09 -0700</bug_when>
    <thetext>Committed r292145 (249052@trunk): &lt;https://commits.webkit.org/249052@trunk&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455611</attachid>
            <date>2022-03-23 23:19:14 -0700</date>
            <delta_ts>2022-03-24 15:58:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238311-20220323231913.patch</filename>
            <type>text/plain</type>
            <size>36704</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IDNlZGYwMzI3ZWEzZDkwZmE1
YjU1OGRkNTg5Y2ZhYzJhYTUwZWI0MWUuLjE5NmIxZDNhNmE1NDIwNmM4NmQzODM4Y2ZkYWQ4ZjFk
ZjNlMjYzMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMjItMDMtMjMgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBJbXBs
ZW1lbnQgVGV4dHVyZTo6Y3JlYXRlVmlldygpIGFjY29yZGluZyB0byB0aGUgc3BlYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MzExCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBs
ZW1lbnRzIHRleHR1cmUgdmlld3MsIHdoaWNoIGFyZSB0aGUgb2JqZWN0cyB0aGF0IGdldCBib3Vu
ZCB0byBwaXBlbGluZXMgKHJhdGhlcgorICAgICAgICB0aGFuIHRleHR1cmVzIHRoZW1zZWx2ZXMp
LiBJdCBsaW5rcyB0byB0aGUgc3BlYyB3aGVyZSByZWxldmFudCwgYW5kIHF1b3RlcyB0aGUgc3Bl
YyBpbiBjb21tZW50cworICAgICAgICB3aGVyZSByZWxldmFudC4KKworICAgICAgICBUZXN0OiBh
cGkvdmFsaWRhdGlvbi9jcmVhdGVWaWV3LnNwZWMudHMKKworICAgICAgICAqIFdlYkdQVS9CdWZm
ZXIubW06CisgICAgICAgIChXZWJHUFU6OkJ1ZmZlcjo6bWFwQXN5bmMpOgorICAgICAgICAoV2Vi
R1BVOjpCdWZmZXI6OnVubWFwKToKKyAgICAgICAgKiBXZWJHUFUvQ29tbWFuZEVuY29kZXIubW06
CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9CdWZmZXIpOgor
ICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6Y2xlYXJCdWZmZXIpOgorICAgICAgICAo
V2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6ZmluaXNoKToKKyAgICAgICAgKiBXZWJHUFUvUXVldWUu
bW06CisgICAgICAgIChXZWJHUFU6OlF1ZXVlOjpzdWJtaXQpOgorICAgICAgICAqIFdlYkdQVS9T
YW1wbGVyLm1tOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVNhbXBsZXIpOgorICAg
ICAgICAqIFdlYkdQVS9UZXh0dXJlLmg6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OmNyZWF0
ZSk6CisgICAgICAgICogV2ViR1BVL1RleHR1cmUubW06CisgICAgICAgIChXZWJHUFU6OmZlYXR1
cmVSZXF1aXJlbWVudEZvckZvcm1hdCk6CisgICAgICAgIChXZWJHUFU6OnN0ZW5jaWxPbmx5QXNw
ZWN0Rm9ybWF0KToKKyAgICAgICAgKFdlYkdQVTo6ZGVwdGhPbmx5QXNwZWN0Rm9ybWF0KToKKyAg
ICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkdQVTo6
VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OnJlc29sdmVUZXh0
dXJlVmlld0Rlc2NyaXB0b3JEZWZhdWx0cyBjb25zdCk6CisgICAgICAgIChXZWJHUFU6OlRleHR1
cmU6OmFycmF5TGF5ZXJDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OnZh
bGlkYXRlQ3JlYXRlVmlldyBjb25zdCk6CisgICAgICAgIChXZWJHUFU6OmNvbXB1dGVSZW5kZXJF
eHRlbnQpOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlOjpjcmVhdGVWaWV3KToKKyAgICAgICAg
KiBXZWJHUFUvVGV4dHVyZVZpZXcuaDoKKyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZVZpZXc6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmVWaWV3OjpkZXNjcmlwdG9yIGNvbnN0KToK
KyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZVZpZXc6OnJlbmRlckV4dGVudCBjb25zdCk6CisgICAg
ICAgICogV2ViR1BVL1RleHR1cmVWaWV3Lm1tOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlVmll
dzo6VGV4dHVyZVZpZXcpOgorCiAyMDIyLTAzLTIzICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhm
aWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gRml4IHRoZSBub24tbWFjT1MgYnVp
bGQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0J1ZmZlci5tbSBiL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL0J1ZmZlci5tbQppbmRleCBmYmIyZjQ0ZGY5ZTUzNmNlNWNmZWRlMTFmNzg1
ZGM4Y2RhMWZiZGM1Li4zYjkyMjAwMzE4ZGM1MTdkMmEwZWI2ZWMzOTllYTU1NDFjNmE1MTY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIubW0KKysrIGIvU291cmNlL1dl
YkdQVS9XZWJHUFUvQnVmZmVyLm1tCkBAIC0yOTEsNyArMjkxLDcgQEAgdm9pZCBCdWZmZXI6Om1h
cEFzeW5jKFdHUFVNYXBNb2RlRmxhZ3MgbW9kZSwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUs
IENvbXBsZXQKICAgICAvLyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUg
dW5zYXRpc2ZpZWQ6IgogICAgIGlmICghdmFsaWRhdGVNYXBBc3luYyhtb2RlLCBvZmZzZXQsIHJh
bmdlU2l6ZSkpIHsKICAgICAgICAgLy8gIlJlY29yZCBhIHZhbGlkYXRpb24gZXJyb3Igb24gdGhl
IGN1cnJlbnQgc2NvcGUuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVy
cm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFW
YWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogCiAgICAgICAgIC8vICJS
ZXR1cm4gYSBwcm9taXNlIHJlamVjdGVkIHdpdGggYW4gT3BlcmF0aW9uRXJyb3Igb24gdGhlIERl
dmljZSB0aW1lbGluZS4iCiAgICAgICAgIGNhbGxiYWNrKFdHUFVCdWZmZXJNYXBBc3luY1N0YXR1
c19FcnJvcik7CkBAIC0zNjUsNyArMzY1LDcgQEAgdm9pZCBCdWZmZXI6OnVubWFwKCkKICAgICAv
LyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgcmVxdWlyZW1lbnRzIGFyZSB1bm1ldCIKICAgICBp
ZiAoIXZhbGlkYXRlVW5tYXAoKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxpZGF0aW9u
IGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25F
cnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVB
VmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29k
ZXIubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rlci5tbQppbmRleCBhZTRi
YWM2MDg1YjRjNWYyZWU0Y2Q5YzdjM2EzZTBiMDNkNzZkNzkyLi45Njk4YzhhMDk5ZmZkNmMwOTM3
ODQzOTRhODEyYzE4MmYwZWI3ZDViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9D
b21tYW5kRW5jb2Rlci5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9Db21tYW5kRW5jb2Rl
ci5tbQpAQCAtMTQ5LDcgKzE0OSw3IEBAIHZvaWQgQ29tbWFuZEVuY29kZXI6OmNvcHlCdWZmZXJU
b0J1ZmZlcihjb25zdCBCdWZmZXImIHNvdXJjZSwgdWludDY0X3Qgc291cmNlT2ZmCiAgICAgLy8g
IklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkCiAgICAg
aWYgKCF2YWxpZGF0ZUNvcHlCdWZmZXJUb0J1ZmZlcihzb3VyY2UsIHNvdXJjZU9mZnNldCwgZGVz
dGluYXRpb24sIGRlc3RpbmF0aW9uT2Zmc2V0LCBzaXplKSkgewogICAgICAgICAvLyAiZ2VuZXJh
dGUgYSB2YWxpZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVy
YXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2Rl
dmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjIwLDcgKzIyMCw3IEBAIHZvaWQgQ29tbWFu
ZEVuY29kZXI6OmNsZWFyQnVmZmVyKGNvbnN0IEJ1ZmZlciYgYnVmZmVyLCB1aW50NjRfdCBvZmZz
ZXQsIHVpbnQ2NF90CiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlIHVuc2F0aXNmaWVkIgogICAgIGlmICghdmFsaWRhdGVDbGVhckJ1ZmZlcihidWZmZXIsIG9m
ZnNldCwgc2l6ZSkpIHsKICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvciBh
bmQgc3RvcC4iCi0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZh
bGlkYXRpb24gZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRp
b25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTI2Miw3ICsyNjIsNyBAQCBSZWZQdHI8Q29tbWFuZEJ1ZmZlcj4gQ29tbWFuZEVuY29k
ZXI6OmZpbmlzaChjb25zdCBXR1BVQ29tbWFuZEJ1ZmZlckRlc2NyaXB0b3ImCiAgICAgLy8gIklm
IHZhbGlkYXRpb25TdWNjZWVkZWQgaXMgZmFsc2UsIHRoZW46IgogICAgIGlmICh2YWxpZGF0aW9u
RmFpbGVkKSB7CiAgICAgICAgIC8vICJHZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IuIgotICAg
ICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1
cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlk
YXRpb24gZmFpbHVyZS4iX3MpOwogCiAgICAgICAgIC8vIEZJWE1FOiAiUmV0dXJuIGEgbmV3IGlu
dmFsaWQgR1BVQ29tbWFuZEJ1ZmZlci4iCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9RdWV1ZS5tbQppbmRleCBiN2JkNTdjZjVhNDI2ZWMyNmU2ZjliMWUyOWQ5OWZkZWFkZjcwNWM0
Li4wZDFiMzlhODRmNjQyMzU3OWE5ZWMwM2I1YWEyNDFiZGU2MzFkNjYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViR1BVL1dlYkdQVS9RdWV1ZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9R
dWV1ZS5tbQpAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgUXVldWU6OnN1Ym1pdChWZWN0b3I8c3Rk
OjpyZWZlcmVuY2Vfd3JhcHBlcjxjb25zdCBDb21tYW5kQnVmZmVyPj4mJiBjb21tYW5kCiAgICAg
Ly8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVuc2F0aXNmaWVkIgog
ICAgIGlmICghdmFsaWRhdGVTdWJtaXQoKSkgewogICAgICAgICAvLyAiZ2VuZXJhdGUgYSB2YWxp
ZGF0aW9uIGVycm9yIGFuZCBzdG9wLiIKLSAgICAgICAgbV9kZXZpY2UuZ2VuZXJhdGVBVmFsaWRh
dGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLmdlbmVy
YXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIu
bW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLm1tCmluZGV4IDJmN2Y3MjdmMTdkOTcz
ZDBhNDljZTM0ZWVmYWM3MTM4NTczMzc2YjYuLjBhNWY2ZmViYzBhNmNkYTM1MzhkOWQzMzAwOTJh
M2U0YTk5YzVhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIubW0K
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxlci5tbQpAQCAtMTM2LDcgKzEzNiw3IEBA
IFJlZlB0cjxTYW1wbGVyPiBEZXZpY2U6OmNyZWF0ZVNhbXBsZXIoY29uc3QgV0dQVVNhbXBsZXJE
ZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogICAgIC8vICJJZiB2YWxpZGF0aW5nIEdQVVNhbXBsZXJE
ZXNjcmlwdG9yKHRoaXMsIGRlc2NyaXB0b3IpIHJldHVybnMgZmFsc2U6IgogICAgIGlmICghdmFs
aWRhdGVDcmVhdGVTYW1wbGVyKCp0aGlzLCBkZXNjcmlwdG9yKSkgewogICAgICAgICAvLyAiR2Vu
ZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yLiIKLSAgICAgICAgZ2VuZXJhdGVBVmFsaWRhdGlvbkVy
cm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIGdlbmVyYXRlQVZhbGlkYXRpb25F
cnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAKICAgICAgICAgLy8gIkNyZWF0ZSBhIG5l
dyBpbnZhbGlkIEdQVVNhbXBsZXIgYW5kIHJldHVybiB0aGUgcmVzdWx0LiIKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0xNDUsMzIgKzE0NSwzMiBAQCBSZWZQdHI8U2FtcGxlcj4gRGV2aWNl
OjpjcmVhdGVTYW1wbGVyKGNvbnN0IFdHUFVTYW1wbGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
ICAgICBNVExTYW1wbGVyRGVzY3JpcHRvciAqc2FtcGxlckRlc2NyaXB0b3IgPSBbTVRMU2FtcGxl
ckRlc2NyaXB0b3IgbmV3XTsKIAogICAgIGlmIChhdXRvIGFkZHJlc3NNb2RlID0gV2ViR1BVOjph
ZGRyZXNzTW9kZShkZXNjcmlwdG9yLmFkZHJlc3NNb2RlVSkpCi0gICAgICAgIHNhbXBsZXJEZXNj
cmlwdG9yLnJBZGRyZXNzTW9kZSA9IGFkZHJlc3NNb2RlLnZhbHVlKCk7CisgICAgICAgIHNhbXBs
ZXJEZXNjcmlwdG9yLnJBZGRyZXNzTW9kZSA9ICphZGRyZXNzTW9kZTsKICAgICBlbHNlCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGF1dG8gYWRkcmVzc01vZGUgPSBXZWJHUFU6
OmFkZHJlc3NNb2RlKGRlc2NyaXB0b3IuYWRkcmVzc01vZGVWKSkKLSAgICAgICAgc2FtcGxlckRl
c2NyaXB0b3Iuc0FkZHJlc3NNb2RlID0gYWRkcmVzc01vZGUudmFsdWUoKTsKKyAgICAgICAgc2Ft
cGxlckRlc2NyaXB0b3Iuc0FkZHJlc3NNb2RlID0gKmFkZHJlc3NNb2RlOwogICAgIGVsc2UKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoYXV0byBhZGRyZXNzTW9kZSA9IFdlYkdQ
VTo6YWRkcmVzc01vZGUoZGVzY3JpcHRvci5hZGRyZXNzTW9kZVcpKQotICAgICAgICBzYW1wbGVy
RGVzY3JpcHRvci50QWRkcmVzc01vZGUgPSBhZGRyZXNzTW9kZS52YWx1ZSgpOworICAgICAgICBz
YW1wbGVyRGVzY3JpcHRvci50QWRkcmVzc01vZGUgPSAqYWRkcmVzc01vZGU7CiAgICAgZWxzZQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIG1pbk1hZ0ZpbHRlciA9IFdl
YkdQVTo6bWluTWFnRmlsdGVyKGRlc2NyaXB0b3IubWFnRmlsdGVyKSkKLSAgICAgICAgc2FtcGxl
ckRlc2NyaXB0b3IubWFnRmlsdGVyID0gbWluTWFnRmlsdGVyLnZhbHVlKCk7CisgICAgICAgIHNh
bXBsZXJEZXNjcmlwdG9yLm1hZ0ZpbHRlciA9ICptaW5NYWdGaWx0ZXI7CiAgICAgZWxzZQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIG1pbk1hZ0ZpbHRlciA9IFdlYkdQ
VTo6bWluTWFnRmlsdGVyKGRlc2NyaXB0b3IubWluRmlsdGVyKSkKLSAgICAgICAgc2FtcGxlckRl
c2NyaXB0b3IubWluRmlsdGVyID0gbWluTWFnRmlsdGVyLnZhbHVlKCk7CisgICAgICAgIHNhbXBs
ZXJEZXNjcmlwdG9yLm1pbkZpbHRlciA9ICptaW5NYWdGaWx0ZXI7CiAgICAgZWxzZQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIG1pcEZpbHRlciA9IFdlYkdQVTo6bWlw
RmlsdGVyKGRlc2NyaXB0b3IubWlwbWFwRmlsdGVyKSkKLSAgICAgICAgc2FtcGxlckRlc2NyaXB0
b3IubWlwRmlsdGVyID0gbWlwRmlsdGVyLnZhbHVlKCk7CisgICAgICAgIHNhbXBsZXJEZXNjcmlw
dG9yLm1pcEZpbHRlciA9ICptaXBGaWx0ZXI7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIApAQCAtMTc5LDcgKzE3OSw3IEBAIFJlZlB0cjxTYW1wbGVyPiBEZXZpY2U6OmNyZWF0
ZVNhbXBsZXIoY29uc3QgV0dQVVNhbXBsZXJEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogICAgIHNh
bXBsZXJEZXNjcmlwdG9yLmxvZE1heENsYW1wID0gZGVzY3JpcHRvci5sb2RNYXhDbGFtcDsKIAog
ICAgIGlmIChhdXRvIGNvbXBhcmVGdW5jdGlvbiA9IFdlYkdQVTo6Y29tcGFyZUZ1bmN0aW9uKGRl
c2NyaXB0b3IuY29tcGFyZSkpCi0gICAgICAgIHNhbXBsZXJEZXNjcmlwdG9yLmNvbXBhcmVGdW5j
dGlvbiA9IGNvbXBhcmVGdW5jdGlvbi52YWx1ZSgpOworICAgICAgICBzYW1wbGVyRGVzY3JpcHRv
ci5jb21wYXJlRnVuY3Rpb24gPSAqY29tcGFyZUZ1bmN0aW9uOwogICAgIGVsc2UKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1
cmUuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaAppbmRleCA5YTU5NzhkNzM5MTJj
OTkxZTRiNDNiY2VkMjc5ZDExZDNlYmI3NDA1Li5iOGE5OTI0MTc0NTI1MjY1MTk1MjIxZmZiNDVh
ZmEzNTQ0ZTQ3YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLmgK
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5oCkBAIC0zNSwxNCArMzUsMTUgQEAg
c3RydWN0IFdHUFVUZXh0dXJlSW1wbCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCitjbGFzcyBE
ZXZpY2U7CiBjbGFzcyBUZXh0dXJlVmlldzsKIAogY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBXR1BV
VGV4dHVyZUltcGwsIHB1YmxpYyBSZWZDb3VudGVkPFRleHR1cmU+IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFRleHR1cmU+IGNyZWF0ZShp
ZDxNVExUZXh0dXJlPiB0ZXh0dXJlLCBjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IpCisgICAgc3RhdGljIFJlZjxUZXh0dXJlPiBjcmVhdGUoaWQ8TVRMVGV4dHVyZT4gdGV4
dHVyZSwgY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBEZXZpY2UmIGRl
dmljZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHR1cmUodGV4dHVy
ZSwgZGVzY3JpcHRvcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0dXJlKHRl
eHR1cmUsIGRlc2NyaXB0b3IsIGRldmljZSkpOwogICAgIH0KIAogICAgIH5UZXh0dXJlKCk7CkBA
IC01NSwxMSArNTYsMTcgQEAgcHVibGljOgogICAgIGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRv
ciYgZGVzY3JpcHRvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRvcjsgfQogCiBwcml2YXRl
OgotICAgIFRleHR1cmUoaWQ8TVRMVGV4dHVyZT4sIGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRv
ciYpOworICAgIFRleHR1cmUoaWQ8TVRMVGV4dHVyZT4sIGNvbnN0IFdHUFVUZXh0dXJlRGVzY3Jp
cHRvciYsIERldmljZSYpOworCisgICAgc3RkOjpvcHRpb25hbDxXR1BVVGV4dHVyZVZpZXdEZXNj
cmlwdG9yPiByZXNvbHZlVGV4dHVyZVZpZXdEZXNjcmlwdG9yRGVmYXVsdHMoY29uc3QgV0dQVVRl
eHR1cmVWaWV3RGVzY3JpcHRvciYpIGNvbnN0OworICAgIHVpbnQzMl90IGFycmF5TGF5ZXJDb3Vu
dCgpIGNvbnN0OworICAgIGJvb2wgdmFsaWRhdGVDcmVhdGVWaWV3KGNvbnN0IFdHUFVUZXh0dXJl
Vmlld0Rlc2NyaXB0b3ImKSBjb25zdDsKIAogICAgIGNvbnN0IGlkPE1UTFRleHR1cmU+IG1fdGV4
dHVyZSB7IG5pbCB9OwogCiAgICAgY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yIG1fZGVzY3Jp
cHRvciB7IH07IC8vICJUaGUgR1BVVGV4dHVyZURlc2NyaXB0b3IgZGVzY3JpYmluZyB0aGlzIHRl
eHR1cmUuIgorCisgICAgY29uc3QgUmVmPERldmljZT4gbV9kZXZpY2U7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUu
bW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tCmluZGV4IDliNTk0OWQzNmIxNzcw
NDFlY2Y4OTZlYTJhYzI3NDNjNzM1NDgyYWQuLmQyOWQwYWU3N2FmZTRmNjBhNTFhMjZiZGU4MzMz
NTdmMTVkNmVkOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0K
KysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5tbQpAQCAtMzYsNiArMzYsMTAgQEAg
bmFtZXNwYWNlIFdlYkdQVSB7CiBzdGF0aWMgc3RkOjpvcHRpb25hbDxXR1BVRmVhdHVyZU5hbWU+
IGZlYXR1cmVSZXF1aXJlbWVudEZvckZvcm1hdChXR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQpCiB7
CiAgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRo
MjRVbm9ybVN0ZW5jaWw4OiAvLyBGSVhNRTogVGhpcyBoYXMgdG8gYmUgZ3VhcmRlZCBieSBNVExE
ZXZpY2UuZGVwdGgyNFN0ZW5jaWw4UGl4ZWxGb3JtYXRTdXBwb3J0ZWQKKyAgICAgICAgcmV0dXJu
IFdHUFVGZWF0dXJlTmFtZV9EZXB0aDI0VW5vcm1TdGVuY2lsODsKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0RlcHRoMzJGbG9hdFN0ZW5jaWw4OgorICAgICAgICByZXR1cm4gV0dQVUZlYXR1
cmVOYW1lX0RlcHRoMzJGbG9hdFN0ZW5jaWw4OwogICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
QkMxUkdCQVVub3JtOgogICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMxUkdCQVVub3JtU3Jn
YjoKICAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDMlJHQkFVbm9ybToKQEAgLTEzMiw5ICsx
MzYsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxXR1BVRmVhdHVyZU5hbWU+IGZlYXR1cmVSZXF1
aXJlbWVudEZvckZvcm1hdChXR1BVVGV4dHVyZUZvcgogICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfRGVwdGgxNlVub3JtOgogICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgyNFBsdXM6
CiAgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDI0UGx1c1N0ZW5jaWw4OgotICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgyNFVub3JtU3RlbmNpbDg6CiAgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9EZXB0aDMyRmxvYXQ6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9E
ZXB0aDMyRmxvYXRTdGVuY2lsODoKICAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0ZvcmNlMzI6
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQpAQCAtMTI5OSw2ICsxMzAxLDIz
OCBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxNVExQaXhlbEZvcm1hdD4gcGl4ZWxGb3JtYXQoV0dQ
VVRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdAogICAgIH0KIH0KIAorc3RhdGljIHN0ZDo6b3B0
aW9uYWw8TVRMUGl4ZWxGb3JtYXQ+IHN0ZW5jaWxPbmx5QXNwZWN0Rm9ybWF0KFdHUFVUZXh0dXJl
Rm9ybWF0IHRleHR1cmVGb3JtYXQpCit7CisgICAgc3dpdGNoICh0ZXh0dXJlRm9ybWF0KSB7Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9VbmRlZmluZWQ6CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9SOFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjhTbm9ybToKKyAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1I4VWludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X1I4U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1IxNlVpbnQ6CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9SMTZTaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
UjE2RmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzhVbm9ybToKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X1JHOFNub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
Ukc4VWludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHOFNpbnQ6CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9SMzJGbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1Iz
MlVpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMzJTaW50OgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfUkcxNlVpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzE2
U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMTZGbG9hdDoKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X1JHQkE4VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9S
R0JBOFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkE4U25vcm06Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBOFVpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9SR0JBOFNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CR1JBOFVub3Jt
OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkdSQThVbm9ybVNyZ2I6CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9SR0IxMEEyVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9SRzExQjEwVWZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCOUU1VWZsb2F0
OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkczMkZsb2F0OgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfUkczMlVpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzMyU2lu
dDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkExNlVpbnQ6CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9SR0JBMTZTaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdC
QTE2RmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMzJGbG9hdDoKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkEzMlVpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9SR0JBMzJTaW50OgorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfU3RlbmNpbDg6CisgICAgICAgIHJldHVybiBwaXhlbEZvcm1hdCh0
ZXh0dXJlRm9ybWF0KTsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMTZVbm9ybToK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMjRQbHVzOgorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgyNFBsdXNTdGVu
Y2lsODoKKyAgICAgICAgQVNTRVJUKHBpeGVsRm9ybWF0KHRleHR1cmVGb3JtYXQpID09IE1UTFBp
eGVsRm9ybWF0RGVwdGgzMkZsb2F0X1N0ZW5jaWw4KTsKKyAgICAgICAgcmV0dXJuIE1UTFBpeGVs
Rm9ybWF0WDMyX1N0ZW5jaWw4OworI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FU
QUxZU1QpCisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDI0VW5vcm1TdGVuY2lsODoK
KyAgICAgICAgcmV0dXJuIE1UTFBpeGVsRm9ybWF0WDI0X1N0ZW5jaWw4OworI2Vsc2UKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMjRVbm9ybVN0ZW5jaWw4OgorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworI2VuZGlmCisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0
aDMyRmxvYXQ6CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9EZXB0aDMyRmxvYXRTdGVuY2lsODoKKyAgICAgICAgcmV0dXJuIE1UTFBpeGVs
Rm9ybWF0WDMyX1N0ZW5jaWw4OworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMxUkdCQVVu
b3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMxUkdCQVVub3JtU3JnYjoKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDMlJHQkFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X0JDMlJHQkFVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzNS
R0JBVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzNSR0JBVW5vcm1TcmdiOgor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM0UlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfQkM0UlNub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM1UkdVbm9y
bToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNVJHU25vcm06CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9CQzZIUkdCVWZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
QkM2SFJHQkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM3UkdCQVVub3JtOgor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM3UkdCQVVub3JtU3JnYjoKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9FVEMyUkdCOFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4
QTFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4QTFVbm9ybVNyZ2I6
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCQThVbm9ybToKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0VUQzJSR0JBOFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X0VBQ1IxMVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRUFDUjExU25v
cm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FQUNSRzExVW5vcm06CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9FQUNSRzExU25vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9BU1RDNHg0VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNHg0VW5vcm1T
cmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NFVub3JtOgorICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X0FTVEM1eDVVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1eDVV
bm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng1VW5vcm06CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng1VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfQVNUQzZ4NlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNU
QzZ4NlVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDVVbm9ybToK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDVVbm9ybVNyZ2I6CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg2VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9BU1RDOHg2VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4OFVu
b3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4OFVub3JtU3JnYjoKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg1VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9BU1RDMTB4NVVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FT
VEMxMHg2VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NlVub3JtU3Jn
YjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg4VW5vcm06CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4OFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X0FTVEMxMHgxMFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEw
eDEwVW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEwVW5vcm06
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTBVbm9ybVNyZ2I6CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTJVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X0FTVEMxMngxMlVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0Zv
cmNlMzI6CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorfQorCitzdGF0aWMg
c3RkOjpvcHRpb25hbDxNVExQaXhlbEZvcm1hdD4gZGVwdGhPbmx5QXNwZWN0Rm9ybWF0KFdHUFVU
ZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQpCit7CisgICAgc3dpdGNoICh0ZXh0dXJlRm9ybWF0
KSB7CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9VbmRlZmluZWQ6CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9SOFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjhTbm9y
bToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1I4VWludDoKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X1I4U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1IxNlVpbnQ6Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMTZTaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfUjE2RmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzhVbm9ybToKKyAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHOFNub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfUkc4VWludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHOFNpbnQ6CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMzJGbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X1IzMlVpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMzJTaW50OgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfUkcxNlVpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9SRzE2U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMTZGbG9hdDoKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkE4VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9SR0JBOFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkE4U25v
cm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBOFVpbnQ6CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9SR0JBOFNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CR1JB
OFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkdSQThVbm9ybVNyZ2I6CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0IxMEEyVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9SRzExQjEwVWZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCOUU1
VWZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkczMkZsb2F0OgorICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfUkczMlVpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9S
RzMyU2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkExNlVpbnQ6CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMTZTaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfUkdCQTE2RmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMzJGbG9hdDoK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkEzMlVpbnQ6CisgICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9SR0JBMzJTaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfU3RlbmNp
bDg6CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9EZXB0aDE2VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDI0UGx1
czoKKyAgICAgICAgcmV0dXJuIHBpeGVsRm9ybWF0KHRleHR1cmVGb3JtYXQpOworICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfRGVwdGgyNFBsdXNTdGVuY2lsODoKKyAgICAgICAgQVNTRVJUKHBp
eGVsRm9ybWF0KHRleHR1cmVGb3JtYXQpID09IE1UTFBpeGVsRm9ybWF0RGVwdGgzMkZsb2F0X1N0
ZW5jaWw4KTsKKyAgICAgICAgcmV0dXJuIE1UTFBpeGVsRm9ybWF0RGVwdGgzMkZsb2F0OworICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgyNFVub3JtU3RlbmNpbDg6CisgICAgICAgIC8v
IFRoaXMgaXMgYSBiaXQgc3VycHJpc2luZywgYnV0IGl0IHNob3VsZCBiZSBjb3JyZWN0LgorICAg
ICAgICAvLyBXaGVuIHVzaW5nIHRoZSB2aWV3IGFzIGEgcmVuZGVyIHRhcmdldCwgd2UnbGwgYmlu
ZCBpdCB0byBNVExSZW5kZXJQYXNzRGVzY3JpcHRvci5kZXB0aEF0dGFjaG1lbnQsIHdoaWNoIHdp
bGwgaWdub3JlIHRoZSBzdGVuY2lsIGJpdHMuCisgICAgICAgIC8vIFdoZW4gYXR0YWNoaW5nIHRo
ZSB2aWV3IGFzIGEgc2hhZGVyIHJlc291cmNlIHZpZXcsIG9ubHkgdGhlIGRlcHRoIGFzcGVjdCBp
cyB2aXNpYmxlIGFueXdheS4KKyAgICAgICAgLy8gV2hlbiBjb3B5aW5nIHRvL2Zyb20gdGhlIHRl
eHR1cmUsIHdlIGNhbiB1c2UgTVRMQmxpdE9wdGlvbi5NVExCbGl0T3B0aW9uRGVwdGhGcm9tRGVw
dGhTdGVuY2lsIHRvIGlnbm9yZSB0aGUgc3RlbmNpbCBiaXRzLgorICAgICAgICByZXR1cm4gcGl4
ZWxGb3JtYXQodGV4dHVyZUZvcm1hdCk7CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0
aDMyRmxvYXQ6CisgICAgICAgIHJldHVybiBwaXhlbEZvcm1hdCh0ZXh0dXJlRm9ybWF0KTsKKyAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMzJGbG9hdFN0ZW5jaWw4OgorICAgICAgICBy
ZXR1cm4gTVRMUGl4ZWxGb3JtYXREZXB0aDMyRmxvYXQ7CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9CQzFSR0JBVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzFSR0JBVW5v
cm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMyUkdCQVVub3JtOgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfQkMyUkdCQVVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0JDM1JHQkFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDM1JH
QkFVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzRSVW5vcm06CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzRSU25vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9CQzVSR1Vub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM1UkdTbm9ybToK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNkhSR0JVZmxvYXQ6CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9CQzZIUkdCRmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9C
QzdSR0JBVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzdSR0JBVW5vcm1Tcmdi
OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQjhVbm9ybToKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfRVRDMlJHQjhBMVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJH
QjhBMVVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0JBOFVub3Jt
OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQkE4VW5vcm1TcmdiOgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfRUFDUjExVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9FQUNSMTFTbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VBQ1JHMTFVbm9y
bToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VBQ1JHMTFTbm9ybToKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0FTVEM0eDRVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0FTVEM0eDRVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNXg0VW5v
cm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNXg0VW5vcm1TcmdiOgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfQVNUQzV4NVVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM2
eDVVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM2eDVVbm9ybVNyZ2I6Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng2VW5vcm06CisgICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9BU1RDNng2VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
QVNUQzh4NVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4NVVub3JtU3Jn
YjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDZVbm9ybToKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0FTVEM4eDZVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9BU1RDOHg4VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg4VW5v
cm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDVVbm9ybToKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg1VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfQVNUQzEweDZVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FT
VEMxMHg2VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDhVbm9y
bToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg4VW5vcm1TcmdiOgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDEwVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9BU1RDMTB4MTBVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9B
U1RDMTJ4MTBVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMngxMFVub3Jt
U3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMngxMlVub3JtOgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEyVW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfRm9yY2UzMjoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9
Cit9CisKIHN0YXRpYyBNVExTdG9yYWdlTW9kZSBzdG9yYWdlTW9kZShib29sIGRldmljZUhhc1Vu
aWZpZWRNZW1vcnkpCiB7CiAgICAgaWYgKGRldmljZUhhc1VuaWZpZWRNZW1vcnkpCkBAIC0xMzcx
LDcgKzE2MDUsNyBAQCBSZWZQdHI8VGV4dHVyZT4gRGV2aWNlOjpjcmVhdGVUZXh0dXJlKGNvbnN0
IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKICAgICB9CiAKICAgICBpZiAoYXV0
byBwaXhlbEZvcm1hdCA9IFdlYkdQVTo6cGl4ZWxGb3JtYXQoZGVzY3JpcHRvci5mb3JtYXQpKQot
ICAgICAgICB0ZXh0dXJlRGVzY3JpcHRvci5waXhlbEZvcm1hdCA9IHBpeGVsRm9ybWF0LnZhbHVl
KCk7CisgICAgICAgIHRleHR1cmVEZXNjcmlwdG9yLnBpeGVsRm9ybWF0ID0gKnBpeGVsRm9ybWF0
OwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTEzOTQsMjEgKzE2Mjgs
MzQ4IEBAIFJlZlB0cjxUZXh0dXJlPiBEZXZpY2U6OmNyZWF0ZVRleHR1cmUoY29uc3QgV0dQVVRl
eHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogICAgIC8vICJTZXQgdC5bW2Rlc2NyaXB0b3Jd
XSB0byBkZXNjcmlwdG9yLiIKICAgICAvLyAiUmV0dXJuIHQuIgogCi0gICAgcmV0dXJuIFRleHR1
cmU6OmNyZWF0ZSh0ZXh0dXJlLCBkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4gVGV4dHVyZTo6Y3Jl
YXRlKHRleHR1cmUsIGRlc2NyaXB0b3IsICp0aGlzKTsKIH0KIAotVGV4dHVyZTo6VGV4dHVyZShp
ZDxNVExUZXh0dXJlPiB0ZXh0dXJlLCBjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IpCitUZXh0dXJlOjpUZXh0dXJlKGlkPE1UTFRleHR1cmU+IHRleHR1cmUsIGNvbnN0IFdH
UFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgRGV2aWNlJiBkZXZpY2UpCiAgICAgOiBt
X3RleHR1cmUodGV4dHVyZSkKICAgICAsIG1fZGVzY3JpcHRvcihkZXNjcmlwdG9yKQorICAgICwg
bV9kZXZpY2UoZGV2aWNlKQogewogfQogCiBUZXh0dXJlOjp+VGV4dHVyZSgpID0gZGVmYXVsdDsK
IAotUmVmUHRyPFRleHR1cmVWaWV3PiBUZXh0dXJlOjpjcmVhdGVWaWV3KGNvbnN0IFdHUFVUZXh0
dXJlVmlld0Rlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitzdGQ6Om9wdGlvbmFsPFdHUFVUZXh0dXJl
Vmlld0Rlc2NyaXB0b3I+IFRleHR1cmU6OnJlc29sdmVUZXh0dXJlVmlld0Rlc2NyaXB0b3JEZWZh
dWx0cyhjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAor
eworICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2Fic3RyYWN0LW9wZGVm
LXJlc29sdmluZy1ncHV0ZXh0dXJldmlld2Rlc2NyaXB0b3ItZGVmYXVsdHMKKworICAgIC8vICJM
ZXQgcmVzb2x2ZWQgYmUgYSBjb3B5IG9mIGRlc2NyaXB0b3IuIgorICAgIFdHUFVUZXh0dXJlVmll
d0Rlc2NyaXB0b3IgcmVzb2x2ZWQgPSBkZXNjcmlwdG9yOworCisgICAgLy8gIklmIHJlc29sdmVk
LmZvcm1hdCBpcyB1bmRlZmluZWQiCisgICAgaWYgKHJlc29sdmVkLmZvcm1hdCA9PSBXR1BVVGV4
dHVyZUZvcm1hdF9VbmRlZmluZWQpIHsKKyAgICAgICAgLy8gInNldCByZXNvbHZlZC5mb3JtYXQg
dG8gdGV4dHVyZS5bW2Rlc2NyaXB0b3JdXS5mb3JtYXQuIgorICAgICAgICByZXNvbHZlZC5mb3Jt
YXQgPSBtX2Rlc2NyaXB0b3IuZm9ybWF0OworICAgIH0KKworICAgIC8vICJJZiByZXNvbHZlZC5t
aXBMZXZlbENvdW50IGlzIHVuZGVmaW5lZCIKKyAgICBpZiAocmVzb2x2ZWQubWlwTGV2ZWxDb3Vu
dCA9PSBXR1BVX01JUF9MRVZFTF9DT1VOVF9VTkRFRklORUQpIHsKKyAgICAgICAgLy8gInNldCBy
ZXNvbHZlZC5taXBMZXZlbENvdW50IHRvIHRleHR1cmUuW1tkZXNjcmlwdG9yXV0ubWlwTGV2ZWxD
b3VudCDiiJIgcmVzb2x2ZWQuYmFzZU1pcExldmVsLiIKKyAgICAgICAgLy8gRklYTUU6IFVzZSBj
aGVja2VkIGFyaXRobWV0aWMuCisgICAgICAgIHJlc29sdmVkLm1pcExldmVsQ291bnQgPSBtX2Rl
c2NyaXB0b3IubWlwTGV2ZWxDb3VudCAtIHJlc29sdmVkLmJhc2VNaXBMZXZlbDsKKyAgICB9CisK
KyAgICAvLyAiSWYgcmVzb2x2ZWQuZGltZW5zaW9uIGlzIHVuZGVmaW5lZCIKKyAgICBpZiAocmVz
b2x2ZWQuZGltZW5zaW9uID09IFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl9VbmRlZmluZWQpIHsK
KyAgICAgICAgLy8gImFuZCB0ZXh0dXJlLltbZGVzY3JpcHRvcl1dLmRpbWVuc2lvbiBpczoiCisg
ICAgICAgIHN3aXRjaCAobV9kZXNjcmlwdG9yLmRpbWVuc2lvbikgeworICAgICAgICBjYXNlIFdH
UFVUZXh0dXJlRGltZW5zaW9uXzFEOgorICAgICAgICAgICAgLy8gIlNldCByZXNvbHZlZC5kaW1l
bnNpb24gdG8gIjFkIi4iCisgICAgICAgICAgICByZXNvbHZlZC5kaW1lbnNpb24gPSBXR1BVVGV4
dHVyZVZpZXdEaW1lbnNpb25fMUQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBX
R1BVVGV4dHVyZURpbWVuc2lvbl8yRDoKKyAgICAgICAgICAgIC8vICJTZXQgcmVzb2x2ZWQuZGlt
ZW5zaW9uIHRvICIyZCIuIgorICAgICAgICAgICAgcmVzb2x2ZWQuZGltZW5zaW9uID0gV0dQVVRl
eHR1cmVWaWV3RGltZW5zaW9uXzJEOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
V0dQVVRleHR1cmVEaW1lbnNpb25fM0Q6CisgICAgICAgICAgICAvLyAiU2V0IHJlc29sdmVkLmRp
bWVuc2lvbiB0byAiM2QiLiIKKyAgICAgICAgICAgIHJlc29sdmVkLmRpbWVuc2lvbiA9IFdHUFVU
ZXh0dXJlVmlld0RpbWVuc2lvbl8zRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IFdHUFVUZXh0dXJlRGltZW5zaW9uX0ZvcmNlMzI6CisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gIklmIHJlc29sdmVkLmFycmF5TGF5
ZXJDb3VudCBpcyB1bmRlZmluZWQiCisgICAgaWYgKHJlc29sdmVkLmFycmF5TGF5ZXJDb3VudCA9
PSBXR1BVX0FSUkFZX0xBWUVSX0NPVU5UX1VOREVGSU5FRCkgeworICAgICAgICAvLyAiYW5kIHJl
c29sdmVkLmRpbWVuc2lvbiBpczoiCisgICAgICAgIHN3aXRjaCAocmVzb2x2ZWQuZGltZW5zaW9u
KSB7CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX1VuZGVmaW5lZDoKKyAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fMUQ6CisgICAg
ICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uXzJEOgorICAgICAgICBjYXNlIFdHUFVU
ZXh0dXJlVmlld0RpbWVuc2lvbl8zRDoKKyAgICAgICAgICAgIC8vICJTZXQgcmVzb2x2ZWQuYXJy
YXlMYXllckNvdW50IHRvIDEuIgorICAgICAgICAgICAgcmVzb2x2ZWQuYXJyYXlMYXllckNvdW50
ID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0Rp
bWVuc2lvbl9DdWJlOgorICAgICAgICAgICAgLy8gIlNldCByZXNvbHZlZC5hcnJheUxheWVyQ291
bnQgdG8gNi4iCisgICAgICAgICAgICByZXNvbHZlZC5hcnJheUxheWVyQ291bnQgPSA2OworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uXzJE
QXJyYXk6CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX0N1YmVBcnJheToK
KyAgICAgICAgICAgIC8vICJTZXQgcmVzb2x2ZWQuYXJyYXlMYXllckNvdW50IHRvIHRleHR1cmUu
W1tkZXNjcmlwdG9yXV0uc2l6ZS5kZXB0aE9yQXJyYXlMYXllcnMg4oiSIGJhc2VBcnJheUxheWVy
LiIKKyAgICAgICAgICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljCisgICAgICAg
ICAgICByZXNvbHZlZC5hcnJheUxheWVyQ291bnQgPSBtX2Rlc2NyaXB0b3Iuc2l6ZS5kZXB0aE9y
QXJyYXlMYXllcnMgLSByZXNvbHZlZC5iYXNlQXJyYXlMYXllcjsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl9Gb3JjZTMyOgorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vICJS
ZXR1cm4gcmVzb2x2ZWQuIgorICAgIHJldHVybiByZXNvbHZlZDsKK30KKwordWludDMyX3QgVGV4
dHVyZTo6YXJyYXlMYXllckNvdW50KCkgY29uc3QKK3sKKyAgICAvLyBodHRwczovL2dwdXdlYi5n
aXRodWIuaW8vZ3B1d2ViLyNhYnN0cmFjdC1vcGRlZi1hcnJheS1sYXllci1jb3VudAorCisgICAg
Ly8gIklmIHRleHR1cmUuW1tkZXNjcmlwdG9yXV0uZGltZW5zaW9uIGlzOiIKKyAgICBzd2l0Y2gg
KG1fZGVzY3JpcHRvci5kaW1lbnNpb24pIHsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRGltZW5zaW9u
XzFEOgorICAgICAgICAvLyAiUmV0dXJuIDEuIgorICAgICAgICByZXR1cm4gMTsKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRGltZW5zaW9uXzJEOgorICAgICAgICAvLyAiUmV0dXJuIHRleHR1cmUuW1tk
ZXNjcmlwdG9yXV0uc2l6ZS5kZXB0aE9yQXJyYXlMYXllcnMuIgorICAgICAgICByZXR1cm4gbV9k
ZXNjcmlwdG9yLnNpemUuZGVwdGhPckFycmF5TGF5ZXJzOworICAgIGNhc2UgV0dQVVRleHR1cmVE
aW1lbnNpb25fM0Q6CisgICAgICAgIC8vICJSZXR1cm4gMS4iCisgICAgICAgIHJldHVybiAxOwor
ICAgIGNhc2UgV0dQVVRleHR1cmVEaW1lbnNpb25fRm9yY2UzMjoKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KK30KKworYm9vbCBUZXh0dXJl
Ojp2YWxpZGF0ZUNyZWF0ZVZpZXcoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYgZGVz
Y3JpcHRvcikgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogInRoaXMgaXMgdmFsaWQiCisKKyAgICAv
LyAiSWYgdGhlIGRlc2NyaXB0b3IuYXNwZWN0IGlzIgorICAgIHN3aXRjaCAoZGVzY3JpcHRvci5h
c3BlY3QpIHsKKyAgICBjYXNlIFdHUFVUZXh0dXJlQXNwZWN0X0FsbDoKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBXR1BVVGV4dHVyZUFzcGVjdF9TdGVuY2lsT25seToKKyAgICAgICAgLy8gInRo
aXMuW1tkZXNjcmlwdG9yXV0uZm9ybWF0IG11c3QgYmUgYSBkZXB0aC1vci1zdGVuY2lsIGZvcm1h
dCB3aGljaCBoYXMgYSBzdGVuY2lsIGFzcGVjdC4iCisgICAgICAgIGlmICghc3RlbmNpbE9ubHlB
c3BlY3RGb3JtYXQobV9kZXNjcmlwdG9yLmZvcm1hdCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0dQVVRleHR1cmVBc3BlY3RfRGVwdGhPbmx5
OgorICAgICAgICAvLyAidGhpcy5bW2Rlc2NyaXB0b3JdXS5mb3JtYXQgbXVzdCBiZSBhIGRlcHRo
LW9yLXN0ZW5jaWwgZm9ybWF0IHdoaWNoIGhhcyBhIGRlcHRoIGFzcGVjdC4iCisgICAgICAgIGlm
ICghZGVwdGhPbmx5QXNwZWN0Rm9ybWF0KG1fZGVzY3JpcHRvci5mb3JtYXQpKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdHUFVUZXh0dXJlQXNw
ZWN0X0ZvcmNlMzI6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLyAiZGVz
Y3JpcHRvci5taXBMZXZlbENvdW50IG11c3QgYmUgPiAwLiIKKyAgICBpZiAoIWRlc2NyaXB0b3Iu
bWlwTGV2ZWxDb3VudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gImRlc2NyaXB0
b3IuYmFzZU1pcExldmVsICsgZGVzY3JpcHRvci5taXBMZXZlbENvdW50IG11c3QgYmUg4omkIHRo
aXMuW1tkZXNjcmlwdG9yXV0ubWlwTGV2ZWxDb3VudC4iCisgICAgLy8gRklYTUU6IFVzZSBjaGVj
a2VkIGFyaXRobWV0aWMuCisgICAgaWYgKGRlc2NyaXB0b3IuYmFzZU1pcExldmVsICsgZGVzY3Jp
cHRvci5taXBMZXZlbENvdW50ID4gbV9kZXNjcmlwdG9yLm1pcExldmVsQ291bnQpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIC8vICJkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCBtdXN0
IGJlID4gMC4iCisgICAgaWYgKCFkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgLy8gImRlc2NyaXB0b3IuYmFzZUFycmF5TGF5ZXIgKyBkZXNj
cmlwdG9yLmFycmF5TGF5ZXJDb3VudCBtdXN0IGJlIOKJpCB0aGUgYXJyYXkgbGF5ZXIgY291bnQg
b2YgdGhpcy4iCisgICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMuCisgICAgaWYg
KGRlc2NyaXB0b3IuYmFzZUFycmF5TGF5ZXIgKyBkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCA+
IGFycmF5TGF5ZXJDb3VudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBGSVhN
RTogImRlc2NyaXB0b3IuZm9ybWF0IG11c3QgYmUgZXF1YWwgdG8gZWl0aGVyIHRoaXMuW1tkZXNj
cmlwdG9yXV0uZm9ybWF0IG9yIG9uZSBvZiB0aGUgZm9ybWF0cyBpbiB0aGlzLltbZGVzY3JpcHRv
cl1dLnZpZXdGb3JtYXRzLiIKKyAgICBpZiAoZGVzY3JpcHRvci5mb3JtYXQgIT0gbV9kZXNjcmlw
dG9yLmZvcm1hdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gIklmIGRlc2NyaXB0
b3IuZGltZW5zaW9uIGlzOiIKKyAgICBzd2l0Y2ggKGRlc2NyaXB0b3IuZGltZW5zaW9uKSB7Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fVW5kZWZpbmVkOgorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fMUQ6CisgICAgICAg
IC8vICJ0aGlzLltbZGVzY3JpcHRvcl1dLmRpbWVuc2lvbiBtdXN0IGJlICIxZCIuIgorICAgICAg
ICBpZiAobV9kZXNjcmlwdG9yLmRpbWVuc2lvbiAhPSBXR1BVVGV4dHVyZURpbWVuc2lvbl8xRCkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAvLyAiZGVzY3JpcHRvci5hcnJh
eUxheWVyQ291bnQgbXVzdCBiZSAxLiIKKyAgICAgICAgaWYgKGRlc2NyaXB0b3IuYXJyYXlMYXll
ckNvdW50ICE9IDEpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uXzJEOgorICAgICAgICAvLyAidGhpcy5b
W2Rlc2NyaXB0b3JdXS5kaW1lbnNpb24gbXVzdCBiZSAiMmQiLiIKKyAgICAgICAgaWYgKG1fZGVz
Y3JpcHRvci5kaW1lbnNpb24gIT0gV0dQVVRleHR1cmVEaW1lbnNpb25fMkQpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gImRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50
IG11c3QgYmUgMS4iCisgICAgICAgIGlmIChkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCAhPSAx
KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdH
UFVUZXh0dXJlVmlld0RpbWVuc2lvbl8yREFycmF5OgorICAgICAgICAvLyAidGhpcy5bW2Rlc2Ny
aXB0b3JdXS5kaW1lbnNpb24gbXVzdCBiZSAiMmQiLiIKKyAgICAgICAgaWYgKG1fZGVzY3JpcHRv
ci5kaW1lbnNpb24gIT0gV0dQVVRleHR1cmVEaW1lbnNpb25fMkQpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5z
aW9uX0N1YmU6CisgICAgICAgIC8vICJ0aGlzLltbZGVzY3JpcHRvcl1dLmRpbWVuc2lvbiBtdXN0
IGJlICIyZCIuIgorICAgICAgICBpZiAobV9kZXNjcmlwdG9yLmRpbWVuc2lvbiAhPSBXR1BVVGV4
dHVyZURpbWVuc2lvbl8yRCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAv
LyAiZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgbXVzdCBiZSA2LiIKKyAgICAgICAgaWYgKGRl
c2NyaXB0b3IuYXJyYXlMYXllckNvdW50ICE9IDYpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgLy8gInRoaXMuW1tkZXNjcmlwdG9yXV0uc2l6ZS53aWR0aCBtdXN0IGJlIHRo
aXMuW1tkZXNjcmlwdG9yXV0uc2l6ZS5oZWlnaHQuIgorICAgICAgICBpZiAobV9kZXNjcmlwdG9y
LnNpemUud2lkdGggIT0gbV9kZXNjcmlwdG9yLnNpemUuaGVpZ2h0KQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVu
c2lvbl9DdWJlQXJyYXk6CisgICAgICAgIC8vICJ0aGlzLltbZGVzY3JpcHRvcl1dLmRpbWVuc2lv
biBtdXN0IGJlICIyZCIuIgorICAgICAgICBpZiAobV9kZXNjcmlwdG9yLmRpbWVuc2lvbiAhPSBX
R1BVVGV4dHVyZURpbWVuc2lvbl8yRCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICAvLyAiZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgbXVzdCBiZSBhIG11bHRpcGxlIG9m
IDYuIgorICAgICAgICBpZiAoZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgJSA2KQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIC8vICJ0aGlzLltbZGVzY3JpcHRvcl1dLnNp
emUud2lkdGggbXVzdCBiZSB0aGlzLltbZGVzY3JpcHRvcl1dLnNpemUuaGVpZ2h0LiIKKyAgICAg
ICAgaWYgKG1fZGVzY3JpcHRvci5zaXplLndpZHRoICE9IG1fZGVzY3JpcHRvci5zaXplLmhlaWdo
dCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBX
R1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fM0Q6CisgICAgICAgIC8vICJ0aGlzLltbZGVzY3JpcHRv
cl1dLmRpbWVuc2lvbiBtdXN0IGJlICIzZCIuIgorICAgICAgICBpZiAobV9kZXNjcmlwdG9yLmRp
bWVuc2lvbiAhPSBXR1BVVGV4dHVyZURpbWVuc2lvbl8zRCkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICAvLyAiZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgbXVzdCBiZSAx
LiIKKyAgICAgICAgaWYgKGRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50ICE9IDEpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0dQVVRleHR1cmVW
aWV3RGltZW5zaW9uX0ZvcmNlMzI6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIFdHUFVFeHRlbnQzRCBjb21wdXRlUmVuZGVyRXh0
ZW50KGNvbnN0IFdHUFVFeHRlbnQzRCYgYmFzZVNpemUsIHVpbnQzMl90IG1pcExldmVsKQogewot
ICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gVGV4dHVyZVZpZXc6OmNy
ZWF0ZShuaWwpOworICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2Fic3Ry
YWN0LW9wZGVmLWNvbXB1dGUtcmVuZGVyLWV4dGVudAorCisgICAgLy8gIkxldCBleHRlbnQgYmUg
YSBuZXcgR1BVRXh0ZW50M0REaWN0IG9iamVjdC4iCisgICAgV0dQVUV4dGVudDNEIGV4dGVudCB7
IH07CisKKyAgICAvLyAiU2V0IGV4dGVudC53aWR0aCB0byBtYXgoMSwgYmFzZVNpemUud2lkdGgg
4omrIG1pcExldmVsKS4iCisgICAgZXh0ZW50LndpZHRoID0gc3RkOjptYXgoc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KDEpLCBiYXNlU2l6ZS53aWR0aCA+PiBtaXBMZXZlbCk7CisKKyAgICAvLyAiU2V0
IGV4dGVudC5oZWlnaHQgdG8gbWF4KDEsIGJhc2VTaXplLmhlaWdodCDiiasgbWlwTGV2ZWwpLiIK
KyAgICBleHRlbnQuaGVpZ2h0ID0gc3RkOjptYXgoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KDEpLCBi
YXNlU2l6ZS5oZWlnaHQgPj4gbWlwTGV2ZWwpOworCisgICAgLy8gIlNldCBleHRlbnQuZGVwdGhP
ckFycmF5TGF5ZXJzIHRvIDEuIgorICAgIGV4dGVudC5kZXB0aE9yQXJyYXlMYXllcnMgPSAxOwor
CisgICAgLy8gIlJldHVybiBleHRlbnQuIgorICAgIHJldHVybiBleHRlbnQ7Cit9CisKK1JlZlB0
cjxUZXh0dXJlVmlldz4gVGV4dHVyZTo6Y3JlYXRlVmlldyhjb25zdCBXR1BVVGV4dHVyZVZpZXdE
ZXNjcmlwdG9yJiBpbnB1dERlc2NyaXB0b3IpCit7CisgICAgaWYgKGlucHV0RGVzY3JpcHRvci5u
ZXh0SW5DaGFpbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBodHRwczovL2dw
dXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1dGV4dHVyZS1jcmVhdGV2aWV3CisKKyAgICAv
LyAiU2V0IGRlc2NyaXB0b3IgdG8gdGhlIHJlc3VsdCBvZiByZXNvbHZpbmcgR1BVVGV4dHVyZVZp
ZXdEZXNjcmlwdG9yIGRlZmF1bHRzIHdpdGggZGVzY3JpcHRvci4iCisgICAgYXV0byBkZXNjcmlw
dG9yID0gcmVzb2x2ZVRleHR1cmVWaWV3RGVzY3JpcHRvckRlZmF1bHRzKGlucHV0RGVzY3JpcHRv
cik7CisgICAgaWYgKCFkZXNjcmlwdG9yKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IC8vICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyByZXF1aXJlbWVudHMgYXJlIHVubWV0OiIKKyAg
ICBpZiAoIXZhbGlkYXRlQ3JlYXRlVmlldygqZGVzY3JpcHRvcikpIHsKKyAgICAgICAgLy8gIkdl
bmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvci4iCisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFW
YWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOworCisgICAgICAgIC8vIEZJ
WE1FOiAiUmV0dXJuIGEgbmV3IGludmFsaWQgR1BVVGV4dHVyZVZpZXcuIgorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPE1UTFBpeGVsRm9ybWF0PiBw
aXhlbEZvcm1hdCA9IE1UTFBpeGVsRm9ybWF0SW52YWxpZDsKKyAgICBpZiAoIXBpeGVsRm9ybWF0
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoaXNEZXB0aE9yU3RlbmNpbEZvcm1h
dChkZXNjcmlwdG9yLT5mb3JtYXQpKSB7CisgICAgICAgIHN3aXRjaCAoZGVzY3JpcHRvci0+YXNw
ZWN0KSB7CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVBc3BlY3RfQWxsOgorICAgICAgICAgICAg
cGl4ZWxGb3JtYXQgPSBXZWJHUFU6OnBpeGVsRm9ybWF0KGRlc2NyaXB0b3ItPmZvcm1hdCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXR1BVVGV4dHVyZUFzcGVjdF9TdGVuY2ls
T25seToKKyAgICAgICAgICAgIHBpeGVsRm9ybWF0ID0gc3RlbmNpbE9ubHlBc3BlY3RGb3JtYXQo
ZGVzY3JpcHRvci0+Zm9ybWF0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdH
UFVUZXh0dXJlQXNwZWN0X0RlcHRoT25seToKKyAgICAgICAgICAgIHBpeGVsRm9ybWF0ID0gZGVw
dGhPbmx5QXNwZWN0Rm9ybWF0KGRlc2NyaXB0b3ItPmZvcm1hdCk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBXR1BVVGV4dHVyZUFzcGVjdF9Gb3JjZTMyOgorICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKCFwaXhlbEZvcm1hdCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQVNTRVJUKCpwaXhlbEZvcm1hdCAhPSBNVExQ
aXhlbEZvcm1hdEludmFsaWQpOworCisgICAgTVRMVGV4dHVyZVR5cGUgdGV4dHVyZVR5cGU7Cisg
ICAgc3dpdGNoIChkZXNjcmlwdG9yLT5kaW1lbnNpb24pIHsKKyAgICBjYXNlIFdHUFVUZXh0dXJl
Vmlld0RpbWVuc2lvbl9VbmRlZmluZWQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lv
bl8xRDoKKyAgICAgICAgaWYgKGRlc2NyaXB0b3ItPmFycmF5TGF5ZXJDb3VudCA9PSAxKQorICAg
ICAgICAgICAgdGV4dHVyZVR5cGUgPSBNVExUZXh0dXJlVHlwZTFEOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICB0ZXh0dXJlVHlwZSA9IE1UTFRleHR1cmVUeXBlMURBcnJheTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fMkQ6CisgICAgICAgIGlm
IChtX2Rlc2NyaXB0b3Iuc2FtcGxlQ291bnQgPT0gMSkKKyAgICAgICAgICAgIHRleHR1cmVUeXBl
ID0gTVRMVGV4dHVyZVR5cGUyRDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdGV4dHVyZVR5
cGUgPSBNVExUZXh0dXJlVHlwZTJETXVsdGlzYW1wbGU7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uXzJEQXJyYXk6CisgICAgICAgIGlmIChtX2Rlc2Ny
aXB0b3Iuc2FtcGxlQ291bnQgPT0gMSkKKyAgICAgICAgICAgIHRleHR1cmVUeXBlID0gTVRMVGV4
dHVyZVR5cGUyREFycmF5OworICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXh0dXJlVHlwZSA9
IE1UTFRleHR1cmVUeXBlMkRNdWx0aXNhbXBsZUFycmF5OworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl9DdWJlOgorICAgICAgICB0ZXh0dXJlVHlwZSA9
IE1UTFRleHR1cmVUeXBlQ3ViZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXR1BVVGV4dHVy
ZVZpZXdEaW1lbnNpb25fQ3ViZUFycmF5OgorICAgICAgICB0ZXh0dXJlVHlwZSA9IE1UTFRleHR1
cmVUeXBlQ3ViZUFycmF5OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdHUFVUZXh0dXJlVmll
d0RpbWVuc2lvbl8zRDoKKyAgICAgICAgdGV4dHVyZVR5cGUgPSBNVExUZXh0dXJlVHlwZTNEOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl9Gb3JjZTMy
OgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRvIGxldmVscyA9IE5T
TWFrZVJhbmdlKGRlc2NyaXB0b3ItPmJhc2VNaXBMZXZlbCwgZGVzY3JpcHRvci0+bWlwTGV2ZWxD
b3VudCk7CisKKyAgICBhdXRvIHNsaWNlcyA9IE5TTWFrZVJhbmdlKGRlc2NyaXB0b3ItPmJhc2VB
cnJheUxheWVyLCBkZXNjcmlwdG9yLT5hcnJheUxheWVyQ291bnQpOworCisgICAgaWQ8TVRMVGV4
dHVyZT4gdGV4dHVyZSA9IFttX3RleHR1cmUgbmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6
KnBpeGVsRm9ybWF0IHRleHR1cmVUeXBlOnRleHR1cmVUeXBlIGxldmVsczpsZXZlbHMgc2xpY2Vz
OnNsaWNlc107CisgICAgaWYgKCF0ZXh0dXJlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHRleHR1cmUubGFiZWwgPSBmcm9tQVBJKGRlc2NyaXB0b3ItPmxhYmVsKTsKKworICAgIC8v
ICJMZXQgdmlldyBiZSBhIG5ldyBHUFVUZXh0dXJlVmlldyBvYmplY3QuIgorICAgIC8vICJTZXQg
dmlldy5bW3RleHR1cmVdXSB0byB0aGlzLiIKKyAgICAvLyAiU2V0IHZpZXcuW1tkZXNjcmlwdG9y
XV0gdG8gZGVzY3JpcHRvci4iCisKKyAgICAvLyAiSWYgdGhpcy5bW2Rlc2NyaXB0b3JdXS51c2Fn
ZSBjb250YWlucyBSRU5ERVJfQVRUQUNITUVOVDoiCisgICAgc3RkOjpvcHRpb25hbDxXR1BVRXh0
ZW50M0Q+IHJlbmRlckV4dGVudDsKKyAgICBpZiAgKG1fZGVzY3JpcHRvci51c2FnZSAmIFdHUFVU
ZXh0dXJlVXNhZ2VfUmVuZGVyQXR0YWNobWVudCkgeworICAgICAgICAvLyAiTGV0IHJlbmRlckV4
dGVudCBiZSBjb21wdXRlIHJlbmRlciBleHRlbnQodGhpcy5bW2Rlc2NyaXB0b3JdXS5zaXplLCBk
ZXNjcmlwdG9yLmJhc2VNaXBMZXZlbCkuIgorICAgICAgICAvLyAiU2V0IHZpZXcuW1tyZW5kZXJF
eHRlbnRdXSB0byByZW5kZXJFeHRlbnQuIgorICAgICAgICByZW5kZXJFeHRlbnQgPSBjb21wdXRl
UmVuZGVyRXh0ZW50KG1fZGVzY3JpcHRvci5zaXplLCBkZXNjcmlwdG9yLT5iYXNlTWlwTGV2ZWwp
OworICAgIH0KKworICAgIC8vICJSZXR1cm4gdmlldy4iCisgICAgcmV0dXJuIFRleHR1cmVWaWV3
OjpjcmVhdGUodGV4dHVyZSwgKmRlc2NyaXB0b3IsIHJlbmRlckV4dGVudCk7CiB9CiAKIHZvaWQg
VGV4dHVyZTo6ZGVzdHJveSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0
dXJlVmlldy5oIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcuaAppbmRleCA3MTEy
NDE4YThjOWQ3YzM1YWQ0NjcwNjExNWM3MWU5YjE4ZGYyZTFlLi5iMDViNGIwM2I4ODYyMDM4ZGVm
ZjQ5NzMwNjNhYWU0Mjg5M2FhY2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9U
ZXh0dXJlVmlldy5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVWaWV3LmgKQEAg
LTM0LDEyICszNCwxNCBAQCBzdHJ1Y3QgV0dQVVRleHR1cmVWaWV3SW1wbCB7CiAKIG5hbWVzcGFj
ZSBXZWJHUFUgewogCitjbGFzcyBUZXh0dXJlOworCiBjbGFzcyBUZXh0dXJlVmlldyA6IHB1Ymxp
YyBXR1BVVGV4dHVyZVZpZXdJbXBsLCBwdWJsaWMgUmVmQ291bnRlZDxUZXh0dXJlVmlldz4gewog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8VGV4
dHVyZVZpZXc+IGNyZWF0ZShpZDxNVExUZXh0dXJlPiB0ZXh0dXJlKQorICAgIHN0YXRpYyBSZWY8
VGV4dHVyZVZpZXc+IGNyZWF0ZShpZDxNVExUZXh0dXJlPiB0ZXh0dXJlLCBjb25zdCBXR1BVVGV4
dHVyZVZpZXdEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdHUFVF
eHRlbnQzRD4mIHJlbmRlckV4dGVudCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFRleHR1cmVWaWV3KHRleHR1cmUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
VGV4dHVyZVZpZXcodGV4dHVyZSwgZGVzY3JpcHRvciwgcmVuZGVyRXh0ZW50KSk7CiAgICAgfQog
CiAgICAgflRleHR1cmVWaWV3KCk7CkBAIC00NywxMSArNDksMTYgQEAgcHVibGljOgogICAgIHZv
aWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSgpIGNv
bnN0IHsgcmV0dXJuIG1fdGV4dHVyZTsgfQorICAgIGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IoKSBjb25zdCB7IHJldHVybiBtX2Rlc2NyaXB0b3I7IH0KKyAgICBj
b25zdCBzdGQ6Om9wdGlvbmFsPFdHUFVFeHRlbnQzRD4mIHJlbmRlckV4dGVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVuZGVyRXh0ZW50OyB9CiAKIHByaXZhdGU6Ci0gICAgVGV4dHVyZVZpZXcoaWQ8
TVRMVGV4dHVyZT4pOworICAgIFRleHR1cmVWaWV3KGlkPE1UTFRleHR1cmU+LCBjb25zdCBXR1BV
VGV4dHVyZVZpZXdEZXNjcmlwdG9yJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXR1BVRXh0ZW50M0Q+
Jik7CiAKICAgICBjb25zdCBpZDxNVExUZXh0dXJlPiBtX3RleHR1cmUgeyBuaWwgfTsKKworICAg
IGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IgbV9kZXNjcmlwdG9yOworICAgIGNvbnN0
IHN0ZDo6b3B0aW9uYWw8V0dQVUV4dGVudDNEPiBtX3JlbmRlckV4dGVudDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVy
ZVZpZXcubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5tbQppbmRleCBhYTdk
Y2VkMWJlMzZlZWM3NWY2OTkwZDY3NjE1YzY1Y2QwY2FiNWQzLi5jNzJlMWU2ZWViMmM5NjRiNWIy
ZGI1MzEyNTA0ZjNlN2JlNjUxNDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9U
ZXh0dXJlVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5tbQpA
QCAtMzAsOCArMzAsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkdQVSB7CiAKLVRleHR1cmVWaWV3OjpU
ZXh0dXJlVmlldyhpZDxNVExUZXh0dXJlPiB0ZXh0dXJlKQorVGV4dHVyZVZpZXc6OlRleHR1cmVW
aWV3KGlkPE1UTFRleHR1cmU+IHRleHR1cmUsIGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0
b3ImIGRlc2NyaXB0b3IsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V0dQVUV4dGVudDNEPiYgcmVuZGVy
RXh0ZW50KQogICAgIDogbV90ZXh0dXJlKHRleHR1cmUpCisgICAgLCBtX2Rlc2NyaXB0b3IoZGVz
Y3JpcHRvcikKKyAgICAsIG1fcmVuZGVyRXh0ZW50KHJlbmRlckV4dGVudCkKIHsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455696</attachid>
            <date>2022-03-24 15:58:56 -0700</date>
            <delta_ts>2022-03-26 21:38:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238311-20220324155856.patch</filename>
            <type>text/plain</type>
            <size>36771</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxODE2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IDdmOGVjM2VjN2M3ZWRmMTM5
ZDY3NTM3ZDk5MjYxYjY4NGUyYmQ0M2UuLjVlMWRmOWJhYWFhNThjNWFhNTFlZDY5YjZmNmRiYzI5
NDA2YWQ3MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMjItMDMtMjQgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBJbXBs
ZW1lbnQgVGV4dHVyZTo6Y3JlYXRlVmlldygpIGFjY29yZGluZyB0byB0aGUgc3BlYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MzExCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBs
ZW1lbnRzIHRleHR1cmUgdmlld3MsIHdoaWNoIGFyZSB0aGUgb2JqZWN0cyB0aGF0IGdldCBib3Vu
ZCB0byBwaXBlbGluZXMgKHJhdGhlcgorICAgICAgICB0aGFuIHRleHR1cmVzIHRoZW1zZWx2ZXMp
LiBJdCBsaW5rcyB0byB0aGUgc3BlYyB3aGVyZSByZWxldmFudCwgYW5kIHF1b3RlcyB0aGUgc3Bl
YyBpbiBjb21tZW50cworICAgICAgICB3aGVyZSByZWxldmFudC4KKworICAgICAgICBUZXN0OiBh
cGkvdmFsaWRhdGlvbi9jcmVhdGVWaWV3LnNwZWMudHMKKworICAgICAgICAqIFdlYkdQVS9CdWZm
ZXIubW06CisgICAgICAgIChXZWJHUFU6OkJ1ZmZlcjo6bWFwQXN5bmMpOgorICAgICAgICAoV2Vi
R1BVOjpCdWZmZXI6OnVubWFwKToKKyAgICAgICAgKiBXZWJHUFUvQ29tbWFuZEVuY29kZXIubW06
CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9CdWZmZXIpOgor
ICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6Y2xlYXJCdWZmZXIpOgorICAgICAgICAo
V2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6ZmluaXNoKToKKyAgICAgICAgKiBXZWJHUFUvUXVldWUu
bW06CisgICAgICAgIChXZWJHUFU6OlF1ZXVlOjpzdWJtaXQpOgorICAgICAgICAqIFdlYkdQVS9T
YW1wbGVyLm1tOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVNhbXBsZXIpOgorICAg
ICAgICAqIFdlYkdQVS9UZXh0dXJlLmg6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OmNyZWF0
ZSk6CisgICAgICAgICogV2ViR1BVL1RleHR1cmUubW06CisgICAgICAgIChXZWJHUFU6OmZlYXR1
cmVSZXF1aXJlbWVudEZvckZvcm1hdCk6CisgICAgICAgIChXZWJHUFU6OnN0ZW5jaWxPbmx5QXNw
ZWN0Rm9ybWF0KToKKyAgICAgICAgKFdlYkdQVTo6ZGVwdGhPbmx5QXNwZWN0Rm9ybWF0KToKKyAg
ICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkdQVTo6
VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OnJlc29sdmVUZXh0
dXJlVmlld0Rlc2NyaXB0b3JEZWZhdWx0cyBjb25zdCk6CisgICAgICAgIChXZWJHUFU6OlRleHR1
cmU6OmFycmF5TGF5ZXJDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OnZh
bGlkYXRlQ3JlYXRlVmlldyBjb25zdCk6CisgICAgICAgIChXZWJHUFU6OmNvbXB1dGVSZW5kZXJF
eHRlbnQpOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlOjpjcmVhdGVWaWV3KToKKyAgICAgICAg
KiBXZWJHUFUvVGV4dHVyZVZpZXcuaDoKKyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZVZpZXc6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmVWaWV3OjpkZXNjcmlwdG9yIGNvbnN0KToK
KyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZVZpZXc6OnJlbmRlckV4dGVudCBjb25zdCk6CisgICAg
ICAgICogV2ViR1BVL1RleHR1cmVWaWV3Lm1tOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlVmll
dzo6VGV4dHVyZVZpZXcpOgorCiAyMDIyLTAzLTI0ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhm
aWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gRml4IHRoZSB3YXRjaE9TIGJ1aWxk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9CdWZmZXIubW0gYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9CdWZmZXIubW0KaW5kZXggZmJiMmY0NGRmOWU1MzZjZTVjZmVkZTExZjc4NWRj
OGNkYTFmYmRjNS4uM2I5MjIwMDMxOGRjNTE3ZDJhMGViNmVjMzk5ZWE1NTQxYzZhNTE2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQnVmZmVyLm1tCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL0J1ZmZlci5tbQpAQCAtMjkxLDcgKzI5MSw3IEBAIHZvaWQgQnVmZmVyOjptYXBB
c3luYyhXR1BVTWFwTW9kZUZsYWdzIG1vZGUsIHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplLCBD
b21wbGV0CiAgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIHVu
c2F0aXNmaWVkOiIKICAgICBpZiAoIXZhbGlkYXRlTWFwQXN5bmMobW9kZSwgb2Zmc2V0LCByYW5n
ZVNpemUpKSB7CiAgICAgICAgIC8vICJSZWNvcmQgYSB2YWxpZGF0aW9uIGVycm9yIG9uIHRoZSBj
dXJyZW50IHNjb3BlLiIKLSAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJv
cigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFs
aWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKIAogICAgICAgICAvLyAiUmV0
dXJuIGEgcHJvbWlzZSByZWplY3RlZCB3aXRoIGFuIE9wZXJhdGlvbkVycm9yIG9uIHRoZSBEZXZp
Y2UgdGltZWxpbmUuIgogICAgICAgICBjYWxsYmFjayhXR1BVQnVmZmVyTWFwQXN5bmNTdGF0dXNf
RXJyb3IpOwpAQCAtMzY1LDcgKzM2NSw3IEBAIHZvaWQgQnVmZmVyOjp1bm1hcCgpCiAgICAgLy8g
IklmIGFueSBvZiB0aGUgZm9sbG93aW5nIHJlcXVpcmVtZW50cyBhcmUgdW5tZXQiCiAgICAgaWYg
KCF2YWxpZGF0ZVVubWFwKCkpIHsKICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRhdGlvbiBl
cnJvciBhbmQgc3RvcC4iCi0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZh
bGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL0NvbW1hbmRFbmNvZGVy
Lm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIubW0KaW5kZXggYWU0YmFj
NjA4NWI0YzVmMmVlNGNkOWM3YzNhM2UwYjAzZDc2ZDc5Mi4uOTY5OGM4YTA5OWZmZDZjMDkzNzg0
Mzk0YTgxMmMxODJmMGViN2Q1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29t
bWFuZEVuY29kZXIubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvQ29tbWFuZEVuY29kZXIu
bW0KQEAgLTE0OSw3ICsxNDksNyBAQCB2b2lkIENvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9C
dWZmZXIoY29uc3QgQnVmZmVyJiBzb3VyY2UsIHVpbnQ2NF90IHNvdXJjZU9mZgogICAgIC8vICJJ
ZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB1bnNhdGlzZmllZAogICAgIGlm
ICghdmFsaWRhdGVDb3B5QnVmZmVyVG9CdWZmZXIoc291cmNlLCBzb3VyY2VPZmZzZXQsIGRlc3Rp
bmF0aW9uLCBkZXN0aW5hdGlvbk9mZnNldCwgc2l6ZSkpIHsKICAgICAgICAgLy8gImdlbmVyYXRl
IGEgdmFsaWRhdGlvbiBlcnJvciBhbmQgc3RvcC4iCi0gICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0
ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iKTsKKyAgICAgICAgbV9kZXZp
Y2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIyMCw3ICsyMjAsNyBAQCB2b2lkIENvbW1hbmRF
bmNvZGVyOjpjbGVhckJ1ZmZlcihjb25zdCBCdWZmZXImIGJ1ZmZlciwgdWludDY0X3Qgb2Zmc2V0
LCB1aW50NjRfdAogICAgIC8vICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZSB1bnNhdGlzZmllZCIKICAgICBpZiAoIXZhbGlkYXRlQ2xlYXJCdWZmZXIoYnVmZmVyLCBvZmZz
ZXQsIHNpemUpKSB7CiAgICAgICAgIC8vICJnZW5lcmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IgYW5k
IHN0b3AuIgotICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxp
ZGF0aW9uIGZhaWx1cmUuIik7CisgICAgICAgIG1fZGV2aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9u
RXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0yNjIsNyArMjYyLDcgQEAgUmVmUHRyPENvbW1hbmRCdWZmZXI+IENvbW1hbmRFbmNvZGVy
OjpmaW5pc2goY29uc3QgV0dQVUNvbW1hbmRCdWZmZXJEZXNjcmlwdG9yJgogICAgIC8vICJJZiB2
YWxpZGF0aW9uU3VjY2VlZGVkIGlzIGZhbHNlLCB0aGVuOiIKICAgICBpZiAodmFsaWRhdGlvbkZh
aWxlZCkgewogICAgICAgICAvLyAiR2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yLiIKLSAgICAg
ICAgbV9kZXZpY2UtPmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJl
LiIpOworICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxpZGF0
aW9uIGZhaWx1cmUuIl9zKTsKIAogICAgICAgICAvLyBGSVhNRTogIlJldHVybiBhIG5ldyBpbnZh
bGlkIEdQVUNvbW1hbmRCdWZmZXIuIgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1F1ZXVlLm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUv
UXVldWUubW0KaW5kZXggYjdiZDU3Y2Y1YTQyNmVjMjZlNmY5YjFlMjlkOTlmZGVhZGY3MDVjNC4u
MGQxYjM5YTg0ZjY0MjM1NzlhOWVjMDNiNWFhMjQxYmRlNjMxZDY2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvUXVldWUubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvUXVl
dWUubW0KQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFF1ZXVlOjpzdWJtaXQoVmVjdG9yPHN0ZDo6
cmVmZXJlbmNlX3dyYXBwZXI8Y29uc3QgQ29tbWFuZEJ1ZmZlcj4+JiYgY29tbWFuZAogICAgIC8v
ICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSB1bnNhdGlzZmllZCIKICAg
ICBpZiAoIXZhbGlkYXRlU3VibWl0KCkpIHsKICAgICAgICAgLy8gImdlbmVyYXRlIGEgdmFsaWRh
dGlvbiBlcnJvciBhbmQgc3RvcC4iCi0gICAgICAgIG1fZGV2aWNlLmdlbmVyYXRlQVZhbGlkYXRp
b25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBtX2RldmljZS5nZW5lcmF0
ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLm1t
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxlci5tbQppbmRleCAyZjdmNzI3ZjE3ZDk3M2Qw
YTQ5Y2UzNGVlZmFjNzEzODU3MzM3NmI2Li4wYTVmNmZlYmMwYTZjZGEzNTM4ZDlkMzMwMDkyYTNl
NGE5OWM1YTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLm1tCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIubW0KQEAgLTEzNiw3ICsxMzYsNyBAQCBS
ZWZQdHI8U2FtcGxlcj4gRGV2aWNlOjpjcmVhdGVTYW1wbGVyKGNvbnN0IFdHUFVTYW1wbGVyRGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikKICAgICAvLyAiSWYgdmFsaWRhdGluZyBHUFVTYW1wbGVyRGVz
Y3JpcHRvcih0aGlzLCBkZXNjcmlwdG9yKSByZXR1cm5zIGZhbHNlOiIKICAgICBpZiAoIXZhbGlk
YXRlQ3JlYXRlU2FtcGxlcigqdGhpcywgZGVzY3JpcHRvcikpIHsKICAgICAgICAgLy8gIkdlbmVy
YXRlIGEgdmFsaWRhdGlvbiBlcnJvci4iCi0gICAgICAgIGdlbmVyYXRlQVZhbGlkYXRpb25FcnJv
cigiVmFsaWRhdGlvbiBmYWlsdXJlLiIpOworICAgICAgICBnZW5lcmF0ZUFWYWxpZGF0aW9uRXJy
b3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwogCiAgICAgICAgIC8vICJDcmVhdGUgYSBuZXcg
aW52YWxpZCBHUFVTYW1wbGVyIGFuZCByZXR1cm4gdGhlIHJlc3VsdC4iCiAgICAgICAgIHJldHVy
biBudWxscHRyOwpAQCAtMTQ1LDMyICsxNDUsMzIgQEAgUmVmUHRyPFNhbXBsZXI+IERldmljZTo6
Y3JlYXRlU2FtcGxlcihjb25zdCBXR1BVU2FtcGxlckRlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiAg
ICAgTVRMU2FtcGxlckRlc2NyaXB0b3IgKnNhbXBsZXJEZXNjcmlwdG9yID0gW01UTFNhbXBsZXJE
ZXNjcmlwdG9yIG5ld107CiAKICAgICBpZiAoYXV0byBhZGRyZXNzTW9kZSA9IFdlYkdQVTo6YWRk
cmVzc01vZGUoZGVzY3JpcHRvci5hZGRyZXNzTW9kZVUpKQotICAgICAgICBzYW1wbGVyRGVzY3Jp
cHRvci5yQWRkcmVzc01vZGUgPSBhZGRyZXNzTW9kZS52YWx1ZSgpOworICAgICAgICBzYW1wbGVy
RGVzY3JpcHRvci5yQWRkcmVzc01vZGUgPSAqYWRkcmVzc01vZGU7CiAgICAgZWxzZQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIGFkZHJlc3NNb2RlID0gV2ViR1BVOjph
ZGRyZXNzTW9kZShkZXNjcmlwdG9yLmFkZHJlc3NNb2RlVikpCi0gICAgICAgIHNhbXBsZXJEZXNj
cmlwdG9yLnNBZGRyZXNzTW9kZSA9IGFkZHJlc3NNb2RlLnZhbHVlKCk7CisgICAgICAgIHNhbXBs
ZXJEZXNjcmlwdG9yLnNBZGRyZXNzTW9kZSA9ICphZGRyZXNzTW9kZTsKICAgICBlbHNlCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGF1dG8gYWRkcmVzc01vZGUgPSBXZWJHUFU6
OmFkZHJlc3NNb2RlKGRlc2NyaXB0b3IuYWRkcmVzc01vZGVXKSkKLSAgICAgICAgc2FtcGxlckRl
c2NyaXB0b3IudEFkZHJlc3NNb2RlID0gYWRkcmVzc01vZGUudmFsdWUoKTsKKyAgICAgICAgc2Ft
cGxlckRlc2NyaXB0b3IudEFkZHJlc3NNb2RlID0gKmFkZHJlc3NNb2RlOwogICAgIGVsc2UKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoYXV0byBtaW5NYWdGaWx0ZXIgPSBXZWJH
UFU6Om1pbk1hZ0ZpbHRlcihkZXNjcmlwdG9yLm1hZ0ZpbHRlcikpCi0gICAgICAgIHNhbXBsZXJE
ZXNjcmlwdG9yLm1hZ0ZpbHRlciA9IG1pbk1hZ0ZpbHRlci52YWx1ZSgpOworICAgICAgICBzYW1w
bGVyRGVzY3JpcHRvci5tYWdGaWx0ZXIgPSAqbWluTWFnRmlsdGVyOwogICAgIGVsc2UKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoYXV0byBtaW5NYWdGaWx0ZXIgPSBXZWJHUFU6
Om1pbk1hZ0ZpbHRlcihkZXNjcmlwdG9yLm1pbkZpbHRlcikpCi0gICAgICAgIHNhbXBsZXJEZXNj
cmlwdG9yLm1pbkZpbHRlciA9IG1pbk1hZ0ZpbHRlci52YWx1ZSgpOworICAgICAgICBzYW1wbGVy
RGVzY3JpcHRvci5taW5GaWx0ZXIgPSAqbWluTWFnRmlsdGVyOwogICAgIGVsc2UKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoYXV0byBtaXBGaWx0ZXIgPSBXZWJHUFU6Om1pcEZp
bHRlcihkZXNjcmlwdG9yLm1pcG1hcEZpbHRlcikpCi0gICAgICAgIHNhbXBsZXJEZXNjcmlwdG9y
Lm1pcEZpbHRlciA9IG1pcEZpbHRlci52YWx1ZSgpOworICAgICAgICBzYW1wbGVyRGVzY3JpcHRv
ci5taXBGaWx0ZXIgPSAqbWlwRmlsdGVyOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKQEAgLTE3OSw3ICsxNzksNyBAQCBSZWZQdHI8U2FtcGxlcj4gRGV2aWNlOjpjcmVhdGVT
YW1wbGVyKGNvbnN0IFdHUFVTYW1wbGVyRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKICAgICBzYW1w
bGVyRGVzY3JpcHRvci5sb2RNYXhDbGFtcCA9IGRlc2NyaXB0b3IubG9kTWF4Q2xhbXA7CiAKICAg
ICBpZiAoYXV0byBjb21wYXJlRnVuY3Rpb24gPSBXZWJHUFU6OmNvbXBhcmVGdW5jdGlvbihkZXNj
cmlwdG9yLmNvbXBhcmUpKQotICAgICAgICBzYW1wbGVyRGVzY3JpcHRvci5jb21wYXJlRnVuY3Rp
b24gPSBjb21wYXJlRnVuY3Rpb24udmFsdWUoKTsKKyAgICAgICAgc2FtcGxlckRlc2NyaXB0b3Iu
Y29tcGFyZUZ1bmN0aW9uID0gKmNvbXBhcmVGdW5jdGlvbjsKICAgICBlbHNlCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJl
LmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLmgKaW5kZXggOWE1OTc4ZDczOTEyYzk5
MWU0YjQzYmNlZDI3OWQxMWQzZWJiNzQwNS4uYjhhOTkyNDE3NDUyNTI2NTE5NTIyMWZmYjQ1YWZh
MzU0NGU0N2JjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5oCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaApAQCAtMzUsMTQgKzM1LDE1IEBAIHN0
cnVjdCBXR1BVVGV4dHVyZUltcGwgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAorY2xhc3MgRGV2
aWNlOwogY2xhc3MgVGV4dHVyZVZpZXc7CiAKIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgV0dQVVRl
eHR1cmVJbXBsLCBwdWJsaWMgUmVmQ291bnRlZDxUZXh0dXJlPiB7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxUZXh0dXJlPiBjcmVhdGUoaWQ8
TVRMVGV4dHVyZT4gdGV4dHVyZSwgY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQorICAgIHN0YXRpYyBSZWY8VGV4dHVyZT4gY3JlYXRlKGlkPE1UTFRleHR1cmU+IHRleHR1
cmUsIGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgRGV2aWNlJiBkZXZp
Y2UpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0dXJlKHRleHR1cmUs
IGRlc2NyaXB0b3IpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dHVyZSh0ZXh0
dXJlLCBkZXNjcmlwdG9yLCBkZXZpY2UpKTsKICAgICB9CiAKICAgICB+VGV4dHVyZSgpOwpAQCAt
NTUsMTEgKzU2LDE3IEBAIHB1YmxpYzoKICAgICBjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IoKSBjb25zdCB7IHJldHVybiBtX2Rlc2NyaXB0b3I7IH0KIAogcHJpdmF0ZToK
LSAgICBUZXh0dXJlKGlkPE1UTFRleHR1cmU+LCBjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3Im
KTsKKyAgICBUZXh0dXJlKGlkPE1UTFRleHR1cmU+LCBjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0
b3ImLCBEZXZpY2UmKTsKKworICAgIHN0ZDo6b3B0aW9uYWw8V0dQVVRleHR1cmVWaWV3RGVzY3Jp
cHRvcj4gcmVzb2x2ZVRleHR1cmVWaWV3RGVzY3JpcHRvckRlZmF1bHRzKGNvbnN0IFdHUFVUZXh0
dXJlVmlld0Rlc2NyaXB0b3ImKSBjb25zdDsKKyAgICB1aW50MzJfdCBhcnJheUxheWVyQ291bnQo
KSBjb25zdDsKKyAgICBib29sIHZhbGlkYXRlQ3JlYXRlVmlldyhjb25zdCBXR1BVVGV4dHVyZVZp
ZXdEZXNjcmlwdG9yJikgY29uc3Q7CiAKICAgICBjb25zdCBpZDxNVExUZXh0dXJlPiBtX3RleHR1
cmUgeyBuaWwgfTsKIAogICAgIGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciBtX2Rlc2NyaXB0
b3IgeyB9OyAvLyAiVGhlIEdQVVRleHR1cmVEZXNjcmlwdG9yIGRlc2NyaWJpbmcgdGhpcyB0ZXh0
dXJlLiIKKworICAgIGNvbnN0IFJlZjxEZXZpY2U+IG1fZGV2aWNlOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1t
IGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5tbQppbmRleCA4ZjU0ZmNkN2MxODgzOTNm
ZDZjYjVhNDY3ZDllNDQ2NjY5Nzc5MmIyLi4yNGZkNDM0M2YzMzNmOWMxYmYxYjdlODZkMjUwYzA3
NjEyNzg1NmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tCisr
KyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0KQEAgLTM2LDYgKzM2LDEwIEBAIG5h
bWVzcGFjZSBXZWJHUFUgewogc3RhdGljIHN0ZDo6b3B0aW9uYWw8V0dQVUZlYXR1cmVOYW1lPiBm
ZWF0dXJlUmVxdWlyZW1lbnRGb3JGb3JtYXQoV0dQVVRleHR1cmVGb3JtYXQgZm9ybWF0KQogewog
ICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDI0
VW5vcm1TdGVuY2lsODogLy8gRklYTUU6IFRoaXMgaGFzIHRvIGJlIGd1YXJkZWQgYnkgTVRMRGV2
aWNlLmRlcHRoMjRTdGVuY2lsOFBpeGVsRm9ybWF0U3VwcG9ydGVkCisgICAgICAgIHJldHVybiBX
R1BVRmVhdHVyZU5hbWVfRGVwdGgyNFVub3JtU3RlbmNpbDg7CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9EZXB0aDMyRmxvYXRTdGVuY2lsODoKKyAgICAgICAgcmV0dXJuIFdHUFVGZWF0dXJl
TmFtZV9EZXB0aDMyRmxvYXRTdGVuY2lsODsKICAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JD
MVJHQkFVbm9ybToKICAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDMVJHQkFVbm9ybVNyZ2I6
CiAgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzJSR0JBVW5vcm06CkBAIC0xMzIsOSArMTM2
LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V0dQVUZlYXR1cmVOYW1lPiBmZWF0dXJlUmVxdWly
ZW1lbnRGb3JGb3JtYXQoV0dQVVRleHR1cmVGb3IKICAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0RlcHRoMTZVbm9ybToKICAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMjRQbHVzOgog
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgyNFBsdXNTdGVuY2lsODoKLSAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMjRVbm9ybVN0ZW5jaWw4OgogICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfRGVwdGgzMkZsb2F0OgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVw
dGgzMkZsb2F0U3RlbmNpbDg6CiAgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9Gb3JjZTMyOgog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KQEAgLTEyOTksNiArMTMwMSwyMzgg
QEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TVRMUGl4ZWxGb3JtYXQ+IHBpeGVsRm9ybWF0KFdHUFVU
ZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQKICAgICB9CiB9CiAKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPE1UTFBpeGVsRm9ybWF0PiBzdGVuY2lsT25seUFzcGVjdEZvcm1hdChXR1BVVGV4dHVyZUZv
cm1hdCB0ZXh0dXJlRm9ybWF0KQoreworICAgIHN3aXRjaCAodGV4dHVyZUZvcm1hdCkgeworICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfVW5kZWZpbmVkOgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfUjhVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1I4U25vcm06CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SOFVpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9SOFNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMTZVaW50OgorICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfUjE2U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1Ix
NkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkc4VW5vcm06CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9SRzhTbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JH
OFVpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzhTaW50OgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfUjMyRmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMzJV
aW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjMyU2ludDoKKyAgICBjYXNlIFdHUFVU
ZXh0dXJlRm9ybWF0X1JHMTZVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkcxNlNp
bnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzE2RmxvYXQ6CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9SR0JBOFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdC
QThVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBOFNub3JtOgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQThVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfUkdCQThTaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkdSQThVbm9ybToK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JHUkE4VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfUkdCMTBBMlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
UkcxMUIxMFVmbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQjlFNVVmbG9hdDoK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMzJGbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X1JHMzJVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkczMlNpbnQ6
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMTZVaW50OgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfUkdCQTE2U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkEx
NkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQTMyRmxvYXQ6CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMzJVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfUkdCQTMyU2ludDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X1N0ZW5jaWw4OgorICAgICAgICByZXR1cm4gcGl4ZWxGb3JtYXQodGV4
dHVyZUZvcm1hdCk7CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDE2VW5vcm06Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDI0UGx1czoKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMjRQbHVzU3RlbmNp
bDg6CisgICAgICAgIEFTU0VSVChwaXhlbEZvcm1hdCh0ZXh0dXJlRm9ybWF0KSA9PSBNVExQaXhl
bEZvcm1hdERlcHRoMzJGbG9hdF9TdGVuY2lsOCk7CisgICAgICAgIHJldHVybiBNVExQaXhlbEZv
cm1hdFgzMl9TdGVuY2lsODsKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFM
WVNUKQorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgyNFVub3JtU3RlbmNpbDg6Cisg
ICAgICAgIHJldHVybiBNVExQaXhlbEZvcm1hdFgyNF9TdGVuY2lsODsKKyNlbHNlCisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDI0VW5vcm1TdGVuY2lsODoKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyNlbmRpZgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgz
MkZsb2F0OgorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfRGVwdGgzMkZsb2F0U3RlbmNpbDg6CisgICAgICAgIHJldHVybiBNVExQaXhlbEZv
cm1hdFgzMl9TdGVuY2lsODsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDMVJHQkFVbm9y
bToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDMVJHQkFVbm9ybVNyZ2I6CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzJSR0JBVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9CQzJSR0JBVW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMzUkdC
QVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMzUkdCQVVub3JtU3JnYjoKKyAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNFJVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X0JDNFJTbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNVJHVW5vcm06
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzVSR1Nub3JtOgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfQkM2SFJHQlVmbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JD
NkhSR0JGbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDN1JHQkFVbm9ybToKKyAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDN1JHQkFVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9FVEMyUkdCOFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
RVRDMlJHQjhVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOEEx
VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOEExVW5vcm1TcmdiOgor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQkE4VW5vcm06CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9FVEMyUkdCQThVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9FQUNSMTFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VBQ1IxMVNub3Jt
OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRUFDUkcxMVVub3JtOgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfRUFDUkcxMVNub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
QVNUQzR4NFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzR4NFVub3JtU3Jn
YjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1eDRVbm9ybToKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0FTVEM1eDRVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9BU1RDNXg1VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNXg1VW5v
cm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4NVVub3JtOgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4NVVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0FTVEM2eDZVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM2
eDZVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg1VW5vcm06Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg1VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfQVNUQzh4NlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
QVNUQzh4NlVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDhVbm9y
bToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDhVbm9ybVNyZ2I6CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfQVNUQzEweDVVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RD
MTB4NlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDZVbm9ybVNyZ2I6
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4OFVub3JtOgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfQVNUQzEweDhVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9BU1RDMTB4MTBVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHgx
MFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMngxMFVub3JtOgor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEwVW5vcm1TcmdiOgorICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEyVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9BU1RDMTJ4MTJVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9Gb3Jj
ZTMyOgorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KK30KKworc3RhdGljIHN0
ZDo6b3B0aW9uYWw8TVRMUGl4ZWxGb3JtYXQ+IGRlcHRoT25seUFzcGVjdEZvcm1hdChXR1BVVGV4
dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KQoreworICAgIHN3aXRjaCAodGV4dHVyZUZvcm1hdCkg
eworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfVW5kZWZpbmVkOgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfUjhVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1I4U25vcm06
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SOFVpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9SOFNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMTZVaW50OgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjE2U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X1IxNkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkc4VW5vcm06CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzhTbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X1JHOFVpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzhTaW50OgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfUjMyRmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9SMzJVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjMyU2ludDoKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X1JHMTZVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
UkcxNlNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzE2RmxvYXQ6CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBOFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfUkdCQThVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBOFNub3Jt
OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQThVaW50OgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfUkdCQThTaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkdSQThV
bm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JHUkE4VW5vcm1TcmdiOgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCMTBBMlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfUkcxMUIxMFVmbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQjlFNVVm
bG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMzJGbG9hdDoKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X1JHMzJVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkcz
MlNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMTZVaW50OgorICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfUkdCQTE2U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X1JHQkExNkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQTMyRmxvYXQ6Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMzJVaW50OgorICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfUkdCQTMyU2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1N0ZW5jaWw4
OgorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfRGVwdGgxNlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgyNFBsdXM6
CisgICAgICAgIHJldHVybiBwaXhlbEZvcm1hdCh0ZXh0dXJlRm9ybWF0KTsKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0RlcHRoMjRQbHVzU3RlbmNpbDg6CisgICAgICAgIEFTU0VSVChwaXhl
bEZvcm1hdCh0ZXh0dXJlRm9ybWF0KSA9PSBNVExQaXhlbEZvcm1hdERlcHRoMzJGbG9hdF9TdGVu
Y2lsOCk7CisgICAgICAgIHJldHVybiBNVExQaXhlbEZvcm1hdERlcHRoMzJGbG9hdDsKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMjRVbm9ybVN0ZW5jaWw4OgorICAgICAgICAvLyBU
aGlzIGlzIGEgYml0IHN1cnByaXNpbmcsIGJ1dCBpdCBzaG91bGQgYmUgY29ycmVjdC4KKyAgICAg
ICAgLy8gV2hlbiB1c2luZyB0aGUgdmlldyBhcyBhIHJlbmRlciB0YXJnZXQsIHdlJ2xsIGJpbmQg
aXQgdG8gTVRMUmVuZGVyUGFzc0Rlc2NyaXB0b3IuZGVwdGhBdHRhY2htZW50LCB3aGljaCB3aWxs
IGlnbm9yZSB0aGUgc3RlbmNpbCBiaXRzLgorICAgICAgICAvLyBXaGVuIGF0dGFjaGluZyB0aGUg
dmlldyBhcyBhIHNoYWRlciByZXNvdXJjZSB2aWV3LCBvbmx5IHRoZSBkZXB0aCBhc3BlY3QgaXMg
dmlzaWJsZSBhbnl3YXkuCisgICAgICAgIC8vIFdoZW4gY29weWluZyB0by9mcm9tIHRoZSB0ZXh0
dXJlLCB3ZSBjYW4gdXNlIE1UTEJsaXRPcHRpb24uTVRMQmxpdE9wdGlvbkRlcHRoRnJvbURlcHRo
U3RlbmNpbCB0byBpZ25vcmUgdGhlIHN0ZW5jaWwgYml0cy4KKyAgICAgICAgcmV0dXJuIHBpeGVs
Rm9ybWF0KHRleHR1cmVGb3JtYXQpOworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgz
MkZsb2F0OgorICAgICAgICByZXR1cm4gcGl4ZWxGb3JtYXQodGV4dHVyZUZvcm1hdCk7CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDMyRmxvYXRTdGVuY2lsODoKKyAgICAgICAgcmV0
dXJuIE1UTFBpeGVsRm9ybWF0RGVwdGgzMkZsb2F0OworICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfQkMxUkdCQVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMxUkdCQVVub3Jt
U3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDMlJHQkFVbm9ybToKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0JDMlJHQkFVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9CQzNSR0JBVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzNSR0JB
VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM0UlVub3JtOgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfQkM0UlNub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfQkM1UkdVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNVJHU25vcm06Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzZIUkdCVWZsb2F0OgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfQkM2SFJHQkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM3
UkdCQVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM3UkdCQVVub3JtU3JnYjoK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4VW5vcm06CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9FVEMyUkdCOFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X0VUQzJSR0I4QTFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4
QTFVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCQThVbm9ybToK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0JBOFVub3JtU3JnYjoKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0VBQ1IxMVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfRUFDUjExU25vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FQUNSRzExVW5vcm06
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FQUNSRzExU25vcm06CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDNHg0VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9B
U1RDNHg0VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NFVub3Jt
OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NFVub3JtU3JnYjoKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1eDVVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X0FTVEM1eDVVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng1
VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng1VW5vcm1TcmdiOgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4NlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfQVNUQzZ4NlVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FT
VEM4eDVVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDVVbm9ybVNyZ2I6
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg2VW5vcm06CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDOHg2VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfQVNUQzh4OFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4OFVub3Jt
U3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg1VW5vcm06CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NVVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0FTVEMxMHg2VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RD
MTB4NlVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg4VW5vcm06
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4OFVub3JtU3JnYjoKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHgxMFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfQVNUQzEweDEwVW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNU
QzEyeDEwVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTBVbm9ybVNy
Z2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTJVbm9ybToKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMngxMlVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0ZvcmNlMzI6CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQor
fQorCiBzdGF0aWMgTVRMU3RvcmFnZU1vZGUgc3RvcmFnZU1vZGUoYm9vbCBkZXZpY2VIYXNVbmlm
aWVkTWVtb3J5KQogewogICAgIGlmIChkZXZpY2VIYXNVbmlmaWVkTWVtb3J5KQpAQCAtMTM3NSw3
ICsxNjA5LDcgQEAgUmVmUHRyPFRleHR1cmU+IERldmljZTo6Y3JlYXRlVGV4dHVyZShjb25zdCBX
R1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiAgICAgfQogCiAgICAgaWYgKGF1dG8g
cGl4ZWxGb3JtYXQgPSBXZWJHUFU6OnBpeGVsRm9ybWF0KGRlc2NyaXB0b3IuZm9ybWF0KSkKLSAg
ICAgICAgdGV4dHVyZURlc2NyaXB0b3IucGl4ZWxGb3JtYXQgPSBwaXhlbEZvcm1hdC52YWx1ZSgp
OworICAgICAgICB0ZXh0dXJlRGVzY3JpcHRvci5waXhlbEZvcm1hdCA9ICpwaXhlbEZvcm1hdDsK
ICAgICBlbHNlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xMzk4LDIxICsxNjMyLDM1
MiBAQCBSZWZQdHI8VGV4dHVyZT4gRGV2aWNlOjpjcmVhdGVUZXh0dXJlKGNvbnN0IFdHUFVUZXh0
dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKICAgICAvLyAiU2V0IHQuW1tkZXNjcmlwdG9yXV0g
dG8gZGVzY3JpcHRvci4iCiAgICAgLy8gIlJldHVybiB0LiIKIAotICAgIHJldHVybiBUZXh0dXJl
OjpjcmVhdGUodGV4dHVyZSwgZGVzY3JpcHRvcik7CisgICAgcmV0dXJuIFRleHR1cmU6OmNyZWF0
ZSh0ZXh0dXJlLCBkZXNjcmlwdG9yLCAqdGhpcyk7CiB9CiAKLVRleHR1cmU6OlRleHR1cmUoaWQ8
TVRMVGV4dHVyZT4gdGV4dHVyZSwgY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKQorVGV4dHVyZTo6VGV4dHVyZShpZDxNVExUZXh0dXJlPiB0ZXh0dXJlLCBjb25zdCBXR1BV
VGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIERldmljZSYgZGV2aWNlKQogICAgIDogbV90
ZXh0dXJlKHRleHR1cmUpCiAgICAgLCBtX2Rlc2NyaXB0b3IoZGVzY3JpcHRvcikKKyAgICAsIG1f
ZGV2aWNlKGRldmljZSkKIHsKIH0KIAogVGV4dHVyZTo6flRleHR1cmUoKSA9IGRlZmF1bHQ7CiAK
LVJlZlB0cjxUZXh0dXJlVmlldz4gVGV4dHVyZTo6Y3JlYXRlVmlldyhjb25zdCBXR1BVVGV4dHVy
ZVZpZXdEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorc3RkOjpvcHRpb25hbDxXR1BVVGV4dHVyZVZp
ZXdEZXNjcmlwdG9yPiBUZXh0dXJlOjpyZXNvbHZlVGV4dHVyZVZpZXdEZXNjcmlwdG9yRGVmYXVs
dHMoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKK3sK
KyAgICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNhYnN0cmFjdC1vcGRlZi1y
ZXNvbHZpbmctZ3B1dGV4dHVyZXZpZXdkZXNjcmlwdG9yLWRlZmF1bHRzCisKKyAgICAvLyAiTGV0
IHJlc29sdmVkIGJlIGEgY29weSBvZiBkZXNjcmlwdG9yLiIKKyAgICBXR1BVVGV4dHVyZVZpZXdE
ZXNjcmlwdG9yIHJlc29sdmVkID0gZGVzY3JpcHRvcjsKKworICAgIC8vICJJZiByZXNvbHZlZC5m
b3JtYXQgaXMgdW5kZWZpbmVkIgorICAgIGlmIChyZXNvbHZlZC5mb3JtYXQgPT0gV0dQVVRleHR1
cmVGb3JtYXRfVW5kZWZpbmVkKSB7CisgICAgICAgIC8vICJzZXQgcmVzb2x2ZWQuZm9ybWF0IHRv
IHRleHR1cmUuW1tkZXNjcmlwdG9yXV0uZm9ybWF0LiIKKyAgICAgICAgcmVzb2x2ZWQuZm9ybWF0
ID0gbV9kZXNjcmlwdG9yLmZvcm1hdDsKKyAgICB9CisKKyAgICAvLyAiSWYgcmVzb2x2ZWQubWlw
TGV2ZWxDb3VudCBpcyB1bmRlZmluZWQiCisgICAgaWYgKHJlc29sdmVkLm1pcExldmVsQ291bnQg
PT0gV0dQVV9NSVBfTEVWRUxfQ09VTlRfVU5ERUZJTkVEKSB7CisgICAgICAgIC8vICJzZXQgcmVz
b2x2ZWQubWlwTGV2ZWxDb3VudCB0byB0ZXh0dXJlLltbZGVzY3JpcHRvcl1dLm1pcExldmVsQ291
bnQg4oiSIHJlc29sdmVkLmJhc2VNaXBMZXZlbC4iCisgICAgICAgIC8vIEZJWE1FOiBVc2UgY2hl
Y2tlZCBhcml0aG1ldGljLgorICAgICAgICByZXNvbHZlZC5taXBMZXZlbENvdW50ID0gbV9kZXNj
cmlwdG9yLm1pcExldmVsQ291bnQgLSByZXNvbHZlZC5iYXNlTWlwTGV2ZWw7CisgICAgfQorCisg
ICAgLy8gIklmIHJlc29sdmVkLmRpbWVuc2lvbiBpcyB1bmRlZmluZWQiCisgICAgaWYgKHJlc29s
dmVkLmRpbWVuc2lvbiA9PSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fVW5kZWZpbmVkKSB7Cisg
ICAgICAgIC8vICJhbmQgdGV4dHVyZS5bW2Rlc2NyaXB0b3JdXS5kaW1lbnNpb24gaXM6IgorICAg
ICAgICBzd2l0Y2ggKG1fZGVzY3JpcHRvci5kaW1lbnNpb24pIHsKKyAgICAgICAgY2FzZSBXR1BV
VGV4dHVyZURpbWVuc2lvbl8xRDoKKyAgICAgICAgICAgIC8vICJTZXQgcmVzb2x2ZWQuZGltZW5z
aW9uIHRvICIxZCIuIgorICAgICAgICAgICAgcmVzb2x2ZWQuZGltZW5zaW9uID0gV0dQVVRleHR1
cmVWaWV3RGltZW5zaW9uXzFEOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0dQ
VVRleHR1cmVEaW1lbnNpb25fMkQ6CisgICAgICAgICAgICAvLyAiU2V0IHJlc29sdmVkLmRpbWVu
c2lvbiB0byAiMmQiLiIKKyAgICAgICAgICAgIHJlc29sdmVkLmRpbWVuc2lvbiA9IFdHUFVUZXh0
dXJlVmlld0RpbWVuc2lvbl8yRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdH
UFVUZXh0dXJlRGltZW5zaW9uXzNEOgorICAgICAgICAgICAgLy8gIlNldCByZXNvbHZlZC5kaW1l
bnNpb24gdG8gIjNkIi4iCisgICAgICAgICAgICByZXNvbHZlZC5kaW1lbnNpb24gPSBXR1BVVGV4
dHVyZVZpZXdEaW1lbnNpb25fM0Q7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBX
R1BVVGV4dHVyZURpbWVuc2lvbl9Gb3JjZTMyOgorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vICJJZiByZXNvbHZlZC5hcnJheUxheWVy
Q291bnQgaXMgdW5kZWZpbmVkIgorICAgIGlmIChyZXNvbHZlZC5hcnJheUxheWVyQ291bnQgPT0g
V0dQVV9BUlJBWV9MQVlFUl9DT1VOVF9VTkRFRklORUQpIHsKKyAgICAgICAgLy8gImFuZCByZXNv
bHZlZC5kaW1lbnNpb24gaXM6IgorICAgICAgICBzd2l0Y2ggKHJlc29sdmVkLmRpbWVuc2lvbikg
eworICAgICAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl9VbmRlZmluZWQ6CisgICAg
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uXzFEOgorICAgICAg
ICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl8yRDoKKyAgICAgICAgY2FzZSBXR1BVVGV4
dHVyZVZpZXdEaW1lbnNpb25fM0Q6CisgICAgICAgICAgICAvLyAiU2V0IHJlc29sdmVkLmFycmF5
TGF5ZXJDb3VudCB0byAxLiIKKyAgICAgICAgICAgIHJlc29sdmVkLmFycmF5TGF5ZXJDb3VudCA9
IDE7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1l
bnNpb25fQ3ViZToKKyAgICAgICAgICAgIC8vICJTZXQgcmVzb2x2ZWQuYXJyYXlMYXllckNvdW50
IHRvIDYuIgorICAgICAgICAgICAgcmVzb2x2ZWQuYXJyYXlMYXllckNvdW50ID0gNjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl8yREFy
cmF5OgorICAgICAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl9DdWJlQXJyYXk6Cisg
ICAgICAgICAgICAvLyAiU2V0IHJlc29sdmVkLmFycmF5TGF5ZXJDb3VudCB0byB0ZXh0dXJlLltb
ZGVzY3JpcHRvcl1dLnNpemUuZGVwdGhPckFycmF5TGF5ZXJzIOKIkiBiYXNlQXJyYXlMYXllci4i
CisgICAgICAgICAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRpYworICAgICAgICAg
ICAgcmVzb2x2ZWQuYXJyYXlMYXllckNvdW50ID0gbV9kZXNjcmlwdG9yLnNpemUuZGVwdGhPckFy
cmF5TGF5ZXJzIC0gcmVzb2x2ZWQuYmFzZUFycmF5TGF5ZXI7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fRm9yY2UzMjoKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyAiUmV0
dXJuIHJlc29sdmVkLiIKKyAgICByZXR1cm4gcmVzb2x2ZWQ7Cit9CisKK3VpbnQzMl90IFRleHR1
cmU6OmFycmF5TGF5ZXJDb3VudCgpIGNvbnN0Cit7CisgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0
aHViLmlvL2dwdXdlYi8jYWJzdHJhY3Qtb3BkZWYtYXJyYXktbGF5ZXItY291bnQKKworICAgIC8v
ICJJZiB0ZXh0dXJlLltbZGVzY3JpcHRvcl1dLmRpbWVuc2lvbiBpczoiCisgICAgc3dpdGNoICht
X2Rlc2NyaXB0b3IuZGltZW5zaW9uKSB7CisgICAgY2FzZSBXR1BVVGV4dHVyZURpbWVuc2lvbl8x
RDoKKyAgICAgICAgLy8gIlJldHVybiAxLiIKKyAgICAgICAgcmV0dXJuIDE7CisgICAgY2FzZSBX
R1BVVGV4dHVyZURpbWVuc2lvbl8yRDoKKyAgICAgICAgLy8gIlJldHVybiB0ZXh0dXJlLltbZGVz
Y3JpcHRvcl1dLnNpemUuZGVwdGhPckFycmF5TGF5ZXJzLiIKKyAgICAgICAgcmV0dXJuIG1fZGVz
Y3JpcHRvci5zaXplLmRlcHRoT3JBcnJheUxheWVyczsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRGlt
ZW5zaW9uXzNEOgorICAgICAgICAvLyAiUmV0dXJuIDEuIgorICAgICAgICByZXR1cm4gMTsKKyAg
ICBjYXNlIFdHUFVUZXh0dXJlRGltZW5zaW9uX0ZvcmNlMzI6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9Cit9CisKK2Jvb2wgVGV4dHVyZTo6
dmFsaWRhdGVDcmVhdGVWaWV3KGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IpIGNvbnN0Cit7CisgICAgLy8gRklYTUU6ICJ0aGlzIGlzIHZhbGlkIgorCisgICAgLy8g
IklmIHRoZSBkZXNjcmlwdG9yLmFzcGVjdCBpcyIKKyAgICBzd2l0Y2ggKGRlc2NyaXB0b3IuYXNw
ZWN0KSB7CisgICAgY2FzZSBXR1BVVGV4dHVyZUFzcGVjdF9BbGw6CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgV0dQVVRleHR1cmVBc3BlY3RfU3RlbmNpbE9ubHk6CisgICAgICAgIC8vICJ0aGlz
LltbZGVzY3JpcHRvcl1dLmZvcm1hdCBtdXN0IGJlIGEgZGVwdGgtb3Itc3RlbmNpbCBmb3JtYXQg
d2hpY2ggaGFzIGEgc3RlbmNpbCBhc3BlY3QuIgorICAgICAgICBpZiAoIXN0ZW5jaWxPbmx5QXNw
ZWN0Rm9ybWF0KG1fZGVzY3JpcHRvci5mb3JtYXQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdHUFVUZXh0dXJlQXNwZWN0X0RlcHRoT25seToK
KyAgICAgICAgLy8gInRoaXMuW1tkZXNjcmlwdG9yXV0uZm9ybWF0IG11c3QgYmUgYSBkZXB0aC1v
ci1zdGVuY2lsIGZvcm1hdCB3aGljaCBoYXMgYSBkZXB0aCBhc3BlY3QuIgorICAgICAgICBpZiAo
IWRlcHRoT25seUFzcGVjdEZvcm1hdChtX2Rlc2NyaXB0b3IuZm9ybWF0KSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXR1BVVGV4dHVyZUFzcGVj
dF9Gb3JjZTMyOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gImRlc2Ny
aXB0b3IubWlwTGV2ZWxDb3VudCBtdXN0IGJlID4gMC4iCisgICAgaWYgKCFkZXNjcmlwdG9yLm1p
cExldmVsQ291bnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vICJkZXNjcmlwdG9y
LmJhc2VNaXBMZXZlbCArIGRlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCBtdXN0IGJlIOKJpCB0aGlz
LltbZGVzY3JpcHRvcl1dLm1pcExldmVsQ291bnQuIgorICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tl
ZCBhcml0aG1ldGljLgorICAgIGlmIChkZXNjcmlwdG9yLmJhc2VNaXBMZXZlbCArIGRlc2NyaXB0
b3IubWlwTGV2ZWxDb3VudCA+IG1fZGVzY3JpcHRvci5taXBMZXZlbENvdW50KQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICAvLyAiZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgbXVzdCBi
ZSA+IDAuIgorICAgIGlmICghZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIC8vICJkZXNjcmlwdG9yLmJhc2VBcnJheUxheWVyICsgZGVzY3Jp
cHRvci5hcnJheUxheWVyQ291bnQgbXVzdCBiZSDiiaQgdGhlIGFycmF5IGxheWVyIGNvdW50IG9m
IHRoaXMuIgorICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljLgorICAgIGlmIChk
ZXNjcmlwdG9yLmJhc2VBcnJheUxheWVyICsgZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgPiBh
cnJheUxheWVyQ291bnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6
ICJkZXNjcmlwdG9yLmZvcm1hdCBtdXN0IGJlIGVxdWFsIHRvIGVpdGhlciB0aGlzLltbZGVzY3Jp
cHRvcl1dLmZvcm1hdCBvciBvbmUgb2YgdGhlIGZvcm1hdHMgaW4gdGhpcy5bW2Rlc2NyaXB0b3Jd
XS52aWV3Rm9ybWF0cy4iCisgICAgaWYgKGRlc2NyaXB0b3IuZm9ybWF0ICE9IG1fZGVzY3JpcHRv
ci5mb3JtYXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vICJJZiBkZXNjcmlwdG9y
LmRpbWVuc2lvbiBpczoiCisgICAgc3dpdGNoIChkZXNjcmlwdG9yLmRpbWVuc2lvbikgeworICAg
IGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX1VuZGVmaW5lZDoKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uXzFEOgorICAgICAgICAv
LyAidGhpcy5bW2Rlc2NyaXB0b3JdXS5kaW1lbnNpb24gbXVzdCBiZSAiMWQiLiIKKyAgICAgICAg
aWYgKG1fZGVzY3JpcHRvci5kaW1lbnNpb24gIT0gV0dQVVRleHR1cmVEaW1lbnNpb25fMUQpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gImRlc2NyaXB0b3IuYXJyYXlM
YXllckNvdW50IG11c3QgYmUgMS4iCisgICAgICAgIGlmIChkZXNjcmlwdG9yLmFycmF5TGF5ZXJD
b3VudCAhPSAxKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl8yRDoKKyAgICAgICAgLy8gInRoaXMuW1tk
ZXNjcmlwdG9yXV0uZGltZW5zaW9uIG11c3QgYmUgIjJkIi4iCisgICAgICAgIGlmIChtX2Rlc2Ny
aXB0b3IuZGltZW5zaW9uICE9IFdHUFVUZXh0dXJlRGltZW5zaW9uXzJEKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIC8vICJkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCBt
dXN0IGJlIDEuIgorICAgICAgICBpZiAoZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgIT0gMSkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXR1BV
VGV4dHVyZVZpZXdEaW1lbnNpb25fMkRBcnJheToKKyAgICAgICAgLy8gInRoaXMuW1tkZXNjcmlw
dG9yXV0uZGltZW5zaW9uIG11c3QgYmUgIjJkIi4iCisgICAgICAgIGlmIChtX2Rlc2NyaXB0b3Iu
ZGltZW5zaW9uICE9IFdHUFVUZXh0dXJlRGltZW5zaW9uXzJEKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lv
bl9DdWJlOgorICAgICAgICAvLyAidGhpcy5bW2Rlc2NyaXB0b3JdXS5kaW1lbnNpb24gbXVzdCBi
ZSAiMmQiLiIKKyAgICAgICAgaWYgKG1fZGVzY3JpcHRvci5kaW1lbnNpb24gIT0gV0dQVVRleHR1
cmVEaW1lbnNpb25fMkQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8g
ImRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50IG11c3QgYmUgNi4iCisgICAgICAgIGlmIChkZXNj
cmlwdG9yLmFycmF5TGF5ZXJDb3VudCAhPSA2KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgICAgIC8vICJ0aGlzLltbZGVzY3JpcHRvcl1dLnNpemUud2lkdGggbXVzdCBiZSB0aGlz
LltbZGVzY3JpcHRvcl1dLnNpemUuaGVpZ2h0LiIKKyAgICAgICAgaWYgKG1fZGVzY3JpcHRvci5z
aXplLndpZHRoICE9IG1fZGVzY3JpcHRvci5zaXplLmhlaWdodCkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNp
b25fQ3ViZUFycmF5OgorICAgICAgICAvLyAidGhpcy5bW2Rlc2NyaXB0b3JdXS5kaW1lbnNpb24g
bXVzdCBiZSAiMmQiLiIKKyAgICAgICAgaWYgKG1fZGVzY3JpcHRvci5kaW1lbnNpb24gIT0gV0dQ
VVRleHR1cmVEaW1lbnNpb25fMkQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgLy8gImRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50IG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2
LiIKKyAgICAgICAgaWYgKGRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50ICUgNikKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAvLyAidGhpcy5bW2Rlc2NyaXB0b3JdXS5zaXpl
LndpZHRoIG11c3QgYmUgdGhpcy5bW2Rlc2NyaXB0b3JdXS5zaXplLmhlaWdodC4iCisgICAgICAg
IGlmIChtX2Rlc2NyaXB0b3Iuc2l6ZS53aWR0aCAhPSBtX2Rlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0dQ
VVRleHR1cmVWaWV3RGltZW5zaW9uXzNEOgorICAgICAgICAvLyAidGhpcy5bW2Rlc2NyaXB0b3Jd
XS5kaW1lbnNpb24gbXVzdCBiZSAiM2QiLiIKKyAgICAgICAgaWYgKG1fZGVzY3JpcHRvci5kaW1l
bnNpb24gIT0gV0dQVVRleHR1cmVEaW1lbnNpb25fM0QpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgLy8gImRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50IG11c3QgYmUgMS4i
CisgICAgICAgIGlmIChkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCAhPSAxKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdHUFVUZXh0dXJlVmll
d0RpbWVuc2lvbl9Gb3JjZTMyOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBXR1BVRXh0ZW50M0QgY29tcHV0ZVJlbmRlckV4dGVu
dChjb25zdCBXR1BVRXh0ZW50M0QmIGJhc2VTaXplLCB1aW50MzJfdCBtaXBMZXZlbCkKK3sKKyAg
ICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNhYnN0cmFjdC1vcGRlZi1jb21w
dXRlLXJlbmRlci1leHRlbnQKKworICAgIC8vICJMZXQgZXh0ZW50IGJlIGEgbmV3IEdQVUV4dGVu
dDNERGljdCBvYmplY3QuIgorICAgIFdHUFVFeHRlbnQzRCBleHRlbnQgeyB9OworCisgICAgLy8g
IlNldCBleHRlbnQud2lkdGggdG8gbWF4KDEsIGJhc2VTaXplLndpZHRoIOKJqyBtaXBMZXZlbCku
IgorICAgIGV4dGVudC53aWR0aCA9IHN0ZDo6bWF4KHN0YXRpY19jYXN0PHVpbnQzMl90PigxKSwg
YmFzZVNpemUud2lkdGggPj4gbWlwTGV2ZWwpOworCisgICAgLy8gIlNldCBleHRlbnQuaGVpZ2h0
IHRvIG1heCgxLCBiYXNlU2l6ZS5oZWlnaHQg4omrIG1pcExldmVsKS4iCisgICAgZXh0ZW50Lmhl
aWdodCA9IHN0ZDo6bWF4KHN0YXRpY19jYXN0PHVpbnQzMl90PigxKSwgYmFzZVNpemUuaGVpZ2h0
ID4+IG1pcExldmVsKTsKKworICAgIC8vICJTZXQgZXh0ZW50LmRlcHRoT3JBcnJheUxheWVycyB0
byAxLiIKKyAgICBleHRlbnQuZGVwdGhPckFycmF5TGF5ZXJzID0gMTsKKworICAgIC8vICJSZXR1
cm4gZXh0ZW50LiIKKyAgICByZXR1cm4gZXh0ZW50OworfQorCitSZWZQdHI8VGV4dHVyZVZpZXc+
IFRleHR1cmU6OmNyZWF0ZVZpZXcoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYgaW5w
dXREZXNjcmlwdG9yKQogewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1
cm4gVGV4dHVyZVZpZXc6OmNyZWF0ZShuaWwpOworICAgIGlmIChpbnB1dERlc2NyaXB0b3IubmV4
dEluQ2hhaW4pCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gaHR0cHM6Ly9ncHV3
ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdXRleHR1cmUtY3JlYXRldmlldworCisgICAgLy8g
IlNldCBkZXNjcmlwdG9yIHRvIHRoZSByZXN1bHQgb2YgcmVzb2x2aW5nIEdQVVRleHR1cmVWaWV3
RGVzY3JpcHRvciBkZWZhdWx0cyB3aXRoIGRlc2NyaXB0b3IuIgorICAgIGF1dG8gZGVzY3JpcHRv
ciA9IHJlc29sdmVUZXh0dXJlVmlld0Rlc2NyaXB0b3JEZWZhdWx0cyhpbnB1dERlc2NyaXB0b3Ip
OworICAgIGlmICghZGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAv
LyAiSWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgcmVxdWlyZW1lbnRzIGFyZSB1bm1ldDoiCisgICAg
aWYgKCF2YWxpZGF0ZUNyZWF0ZVZpZXcoKmRlc2NyaXB0b3IpKSB7CisgICAgICAgIC8vICJHZW5l
cmF0ZSBhIHZhbGlkYXRpb24gZXJyb3IuIgorICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFs
aWRhdGlvbkVycm9yKCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKKworICAgICAgICAvLyBGSVhN
RTogIlJldHVybiBhIG5ldyBpbnZhbGlkIEdQVVRleHR1cmVWaWV3LiIKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxNVExQaXhlbEZvcm1hdD4gcGl4
ZWxGb3JtYXQgPSBNVExQaXhlbEZvcm1hdEludmFsaWQ7CisgICAgaWYgKCFwaXhlbEZvcm1hdCkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgaWYgKGlzRGVwdGhPclN0ZW5jaWxGb3JtYXQo
ZGVzY3JpcHRvci0+Zm9ybWF0KSkgeworICAgICAgICBzd2l0Y2ggKGRlc2NyaXB0b3ItPmFzcGVj
dCkgeworICAgICAgICBjYXNlIFdHUFVUZXh0dXJlQXNwZWN0X0FsbDoKKyAgICAgICAgICAgIHBp
eGVsRm9ybWF0ID0gV2ViR1BVOjpwaXhlbEZvcm1hdChkZXNjcmlwdG9yLT5mb3JtYXQpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVBc3BlY3RfU3RlbmNpbE9u
bHk6CisgICAgICAgICAgICBwaXhlbEZvcm1hdCA9IHN0ZW5jaWxPbmx5QXNwZWN0Rm9ybWF0KGRl
c2NyaXB0b3ItPmZvcm1hdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXR1BV
VGV4dHVyZUFzcGVjdF9EZXB0aE9ubHk6CisgICAgICAgICAgICBwaXhlbEZvcm1hdCA9IGRlcHRo
T25seUFzcGVjdEZvcm1hdChkZXNjcmlwdG9yLT5mb3JtYXQpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVBc3BlY3RfRm9yY2UzMjoKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOworICAgICAgICB9CisgICAgfQorICAgIGlmICghcGl4ZWxGb3JtYXQpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIEFTU0VSVCgqcGl4ZWxGb3JtYXQgIT0gTVRMUGl4
ZWxGb3JtYXRJbnZhbGlkKTsKKworICAgIE1UTFRleHR1cmVUeXBlIHRleHR1cmVUeXBlOworICAg
IHN3aXRjaCAoZGVzY3JpcHRvci0+ZGltZW5zaW9uKSB7CisgICAgY2FzZSBXR1BVVGV4dHVyZVZp
ZXdEaW1lbnNpb25fVW5kZWZpbmVkOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25f
MUQ6CisgICAgICAgIGlmIChkZXNjcmlwdG9yLT5hcnJheUxheWVyQ291bnQgPT0gMSkKKyAgICAg
ICAgICAgIHRleHR1cmVUeXBlID0gTVRMVGV4dHVyZVR5cGUxRDsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgdGV4dHVyZVR5cGUgPSBNVExUZXh0dXJlVHlwZTFEQXJyYXk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uXzJEOgorICAgICAgICBpZiAo
bV9kZXNjcmlwdG9yLnNhbXBsZUNvdW50ID4gMSkKKyAgICAgICAgICAgIHRleHR1cmVUeXBlID0g
TVRMVGV4dHVyZVR5cGUyRE11bHRpc2FtcGxlOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0
ZXh0dXJlVHlwZSA9IE1UTFRleHR1cmVUeXBlMkQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
V0dQVVRleHR1cmVWaWV3RGltZW5zaW9uXzJEQXJyYXk6CisgICAgICAgIGlmIChtX2Rlc2NyaXB0
b3Iuc2FtcGxlQ291bnQgPiAxKSB7CisjaWYgUExBVEZPUk0oV0FUQ0hPUykKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworI2Vsc2UKKyAgICAgICAgICAgIHRleHR1cmVUeXBlID0gTVRMVGV4
dHVyZVR5cGUyRE11bHRpc2FtcGxlQXJyYXk7CisjZW5kaWYKKyAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICB0ZXh0dXJlVHlwZSA9IE1UTFRleHR1cmVUeXBlMkRBcnJheTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fQ3ViZToKKyAgICAgICAgdGV4
dHVyZVR5cGUgPSBNVExUZXh0dXJlVHlwZUN1YmU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
V0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX0N1YmVBcnJheToKKyAgICAgICAgdGV4dHVyZVR5cGUg
PSBNVExUZXh0dXJlVHlwZUN1YmVBcnJheTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXR1BV
VGV4dHVyZVZpZXdEaW1lbnNpb25fM0Q6CisgICAgICAgIHRleHR1cmVUeXBlID0gTVRMVGV4dHVy
ZVR5cGUzRDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNp
b25fRm9yY2UzMjoKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgYXV0byBs
ZXZlbHMgPSBOU01ha2VSYW5nZShkZXNjcmlwdG9yLT5iYXNlTWlwTGV2ZWwsIGRlc2NyaXB0b3It
Pm1pcExldmVsQ291bnQpOworCisgICAgYXV0byBzbGljZXMgPSBOU01ha2VSYW5nZShkZXNjcmlw
dG9yLT5iYXNlQXJyYXlMYXllciwgZGVzY3JpcHRvci0+YXJyYXlMYXllckNvdW50KTsKKworICAg
IGlkPE1UTFRleHR1cmU+IHRleHR1cmUgPSBbbV90ZXh0dXJlIG5ld1RleHR1cmVWaWV3V2l0aFBp
eGVsRm9ybWF0OipwaXhlbEZvcm1hdCB0ZXh0dXJlVHlwZTp0ZXh0dXJlVHlwZSBsZXZlbHM6bGV2
ZWxzIHNsaWNlczpzbGljZXNdOworICAgIGlmICghdGV4dHVyZSkKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisKKyAgICB0ZXh0dXJlLmxhYmVsID0gZnJvbUFQSShkZXNjcmlwdG9yLT5sYWJlbCk7
CisKKyAgICAvLyAiTGV0IHZpZXcgYmUgYSBuZXcgR1BVVGV4dHVyZVZpZXcgb2JqZWN0LiIKKyAg
ICAvLyAiU2V0IHZpZXcuW1t0ZXh0dXJlXV0gdG8gdGhpcy4iCisgICAgLy8gIlNldCB2aWV3Lltb
ZGVzY3JpcHRvcl1dIHRvIGRlc2NyaXB0b3IuIgorCisgICAgLy8gIklmIHRoaXMuW1tkZXNjcmlw
dG9yXV0udXNhZ2UgY29udGFpbnMgUkVOREVSX0FUVEFDSE1FTlQ6IgorICAgIHN0ZDo6b3B0aW9u
YWw8V0dQVUV4dGVudDNEPiByZW5kZXJFeHRlbnQ7CisgICAgaWYgIChtX2Rlc2NyaXB0b3IudXNh
Z2UgJiBXR1BVVGV4dHVyZVVzYWdlX1JlbmRlckF0dGFjaG1lbnQpIHsKKyAgICAgICAgLy8gIkxl
dCByZW5kZXJFeHRlbnQgYmUgY29tcHV0ZSByZW5kZXIgZXh0ZW50KHRoaXMuW1tkZXNjcmlwdG9y
XV0uc2l6ZSwgZGVzY3JpcHRvci5iYXNlTWlwTGV2ZWwpLiIKKyAgICAgICAgLy8gIlNldCB2aWV3
LltbcmVuZGVyRXh0ZW50XV0gdG8gcmVuZGVyRXh0ZW50LiIKKyAgICAgICAgcmVuZGVyRXh0ZW50
ID0gY29tcHV0ZVJlbmRlckV4dGVudChtX2Rlc2NyaXB0b3Iuc2l6ZSwgZGVzY3JpcHRvci0+YmFz
ZU1pcExldmVsKTsKKyAgICB9CisKKyAgICAvLyAiUmV0dXJuIHZpZXcuIgorICAgIHJldHVybiBU
ZXh0dXJlVmlldzo6Y3JlYXRlKHRleHR1cmUsICpkZXNjcmlwdG9yLCByZW5kZXJFeHRlbnQpOwog
fQogCiB2b2lkIFRleHR1cmU6OmRlc3Ryb3koKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9X
ZWJHUFUvVGV4dHVyZVZpZXcuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVWaWV3LmgK
aW5kZXggNzExMjQxOGE4YzlkN2MzNWFkNDY3MDYxMTVjNzFlOWIxOGRmMmUxZS4uYjA1YjRiMDNi
ODg2MjAzOGRlZmY0OTczMDYzYWFlNDI4OTNhYWNjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvVGV4dHVyZVZpZXcuaAorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJl
Vmlldy5oCkBAIC0zNCwxMiArMzQsMTQgQEAgc3RydWN0IFdHUFVUZXh0dXJlVmlld0ltcGwgewog
CiBuYW1lc3BhY2UgV2ViR1BVIHsKIAorY2xhc3MgVGV4dHVyZTsKKwogY2xhc3MgVGV4dHVyZVZp
ZXcgOiBwdWJsaWMgV0dQVVRleHR1cmVWaWV3SW1wbCwgcHVibGljIFJlZkNvdW50ZWQ8VGV4dHVy
ZVZpZXc+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUmVmPFRleHR1cmVWaWV3PiBjcmVhdGUoaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSkKKyAgICBz
dGF0aWMgUmVmPFRleHR1cmVWaWV3PiBjcmVhdGUoaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSwgY29u
c3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgY29uc3Qgc3RkOjpvcHRp
b25hbDxXR1BVRXh0ZW50M0Q+JiByZW5kZXJFeHRlbnQpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBUZXh0dXJlVmlldyh0ZXh0dXJlKSk7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZigqbmV3IFRleHR1cmVWaWV3KHRleHR1cmUsIGRlc2NyaXB0b3IsIHJlbmRlckV4dGVudCkp
OwogICAgIH0KIAogICAgIH5UZXh0dXJlVmlldygpOwpAQCAtNDcsMTEgKzQ5LDE2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldExhYmVsKFN0cmluZyYmKTsKIAogICAgIGlkPE1UTFRleHR1cmU+IHRl
eHR1cmUoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmU7IH0KKyAgICBjb25zdCBXR1BVVGV4dHVy
ZVZpZXdEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZXNjcmlwdG9y
OyB9CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxXR1BVRXh0ZW50M0Q+JiByZW5kZXJFeHRlbnQo
KSBjb25zdCB7IHJldHVybiBtX3JlbmRlckV4dGVudDsgfQogCiBwcml2YXRlOgotICAgIFRleHR1
cmVWaWV3KGlkPE1UTFRleHR1cmU+KTsKKyAgICBUZXh0dXJlVmlldyhpZDxNVExUZXh0dXJlPiwg
Y29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V0dQ
VUV4dGVudDNEPiYpOwogCiAgICAgY29uc3QgaWQ8TVRMVGV4dHVyZT4gbV90ZXh0dXJlIHsgbmls
IH07CisKKyAgICBjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yIG1fZGVzY3JpcHRvcjsK
KyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFdHUFVFeHRlbnQzRD4gbV9yZW5kZXJFeHRlbnQ7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1RleHR1cmVWaWV3Lm1tIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcubW0K
aW5kZXggYWE3ZGNlZDFiZTM2ZWVjNzVmNjk5MGQ2NzYxNWM2NWNkMGNhYjVkMy4uYzcyZTFlNmVl
YjJjOTY0YjViMmRiNTMxMjUwNGYzZTdiZTY1MTQyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvVGV4dHVyZVZpZXcubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVy
ZVZpZXcubW0KQEAgLTMwLDggKzMwLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCi1UZXh0
dXJlVmlldzo6VGV4dHVyZVZpZXcoaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSkKK1RleHR1cmVWaWV3
OjpUZXh0dXJlVmlldyhpZDxNVExUZXh0dXJlPiB0ZXh0dXJlLCBjb25zdCBXR1BVVGV4dHVyZVZp
ZXdEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdHUFVFeHRlbnQz
RD4mIHJlbmRlckV4dGVudCkKICAgICA6IG1fdGV4dHVyZSh0ZXh0dXJlKQorICAgICwgbV9kZXNj
cmlwdG9yKGRlc2NyaXB0b3IpCisgICAgLCBtX3JlbmRlckV4dGVudChyZW5kZXJFeHRlbnQpCiB7
CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455863</attachid>
            <date>2022-03-26 21:38:55 -0700</date>
            <delta_ts>2022-03-27 11:17:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238311-20220326213854.patch</filename>
            <type>text/plain</type>
            <size>32912</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxOTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IGM1NjEwYTBlNzRjOGQwYjAx
ZTc4YTI3ZTg2N2FmMGIyOTQ3YzdlMzUuLjFhOTc2NTExY2VlMTJmNzYyNmNlNWIzODM1ZGVhYmRi
MGFkMGQyYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMjItMDMtMjYgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBJbXBs
ZW1lbnQgVGV4dHVyZTo6Y3JlYXRlVmlldygpIGFjY29yZGluZyB0byB0aGUgc3BlYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MzExCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBs
ZW1lbnRzIHRleHR1cmUgdmlld3MsIHdoaWNoIGFyZSB0aGUgb2JqZWN0cyB0aGF0IGdldCBib3Vu
ZCB0byBwaXBlbGluZXMgKHJhdGhlcgorICAgICAgICB0aGFuIHRleHR1cmVzIHRoZW1zZWx2ZXMp
LiBJdCBsaW5rcyB0byB0aGUgc3BlYyB3aGVyZSByZWxldmFudCwgYW5kIHF1b3RlcyB0aGUgc3Bl
YyBpbiBjb21tZW50cworICAgICAgICB3aGVyZSByZWxldmFudC4KKworICAgICAgICBUZXN0OiBh
cGkvdmFsaWRhdGlvbi9jcmVhdGVWaWV3LnNwZWMudHMKKworICAgICAgICAqIFdlYkdQVS9CdWZm
ZXIubW06CisgICAgICAgIChXZWJHUFU6OkJ1ZmZlcjo6bWFwQXN5bmMpOgorICAgICAgICAoV2Vi
R1BVOjpCdWZmZXI6OnVubWFwKToKKyAgICAgICAgKiBXZWJHUFUvQ29tbWFuZEVuY29kZXIubW06
CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9CdWZmZXIpOgor
ICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6Y2xlYXJCdWZmZXIpOgorICAgICAgICAo
V2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6ZmluaXNoKToKKyAgICAgICAgKiBXZWJHUFUvUXVldWUu
bW06CisgICAgICAgIChXZWJHUFU6OlF1ZXVlOjpzdWJtaXQpOgorICAgICAgICAqIFdlYkdQVS9T
YW1wbGVyLm1tOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVNhbXBsZXIpOgorICAg
ICAgICAqIFdlYkdQVS9UZXh0dXJlLmg6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OmNyZWF0
ZSk6CisgICAgICAgICogV2ViR1BVL1RleHR1cmUubW06CisgICAgICAgIChXZWJHUFU6OmZlYXR1
cmVSZXF1aXJlbWVudEZvckZvcm1hdCk6CisgICAgICAgIChXZWJHUFU6OnN0ZW5jaWxPbmx5QXNw
ZWN0Rm9ybWF0KToKKyAgICAgICAgKFdlYkdQVTo6ZGVwdGhPbmx5QXNwZWN0Rm9ybWF0KToKKyAg
ICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkdQVTo6
VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OnJlc29sdmVUZXh0
dXJlVmlld0Rlc2NyaXB0b3JEZWZhdWx0cyBjb25zdCk6CisgICAgICAgIChXZWJHUFU6OlRleHR1
cmU6OmFycmF5TGF5ZXJDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OnZh
bGlkYXRlQ3JlYXRlVmlldyBjb25zdCk6CisgICAgICAgIChXZWJHUFU6OmNvbXB1dGVSZW5kZXJF
eHRlbnQpOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlOjpjcmVhdGVWaWV3KToKKyAgICAgICAg
KiBXZWJHUFUvVGV4dHVyZVZpZXcuaDoKKyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZVZpZXc6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmVWaWV3OjpkZXNjcmlwdG9yIGNvbnN0KToK
KyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZVZpZXc6OnJlbmRlckV4dGVudCBjb25zdCk6CisgICAg
ICAgICogV2ViR1BVL1RleHR1cmVWaWV3Lm1tOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlVmll
dzo6VGV4dHVyZVZpZXcpOgorCiAyMDIyLTAzLTI1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhm
aWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gUmVtb3ZlIGRlZmF1bHQ6IGZyb20g
c3dpdGNoIHN0YXRlbWVudHMsIGluIGZhdm9yIG9mIGV4aGF1c3RpdmVseSBsaXN0aW5nIGFsbCBj
YXNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxlci5tbSBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIubW0KaW5kZXggODI3MzkwNDk5NGNiNzA5ZjA5NGUyNDU4
Nzk5YWNlYzY3NzU4OWI3Mi4uMGE1ZjZmZWJjMGE2Y2RhMzUzOGQ5ZDMzMDA5MmEzZTRhOTljNWE5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLm1tCkBAIC0xNDUsMzIgKzE0NSwzMiBAQCBSZWZQdHI8
U2FtcGxlcj4gRGV2aWNlOjpjcmVhdGVTYW1wbGVyKGNvbnN0IFdHUFVTYW1wbGVyRGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKICAgICBNVExTYW1wbGVyRGVzY3JpcHRvciAqc2FtcGxlckRlc2NyaXB0
b3IgPSBbTVRMU2FtcGxlckRlc2NyaXB0b3IgbmV3XTsKIAogICAgIGlmIChhdXRvIGFkZHJlc3NN
b2RlID0gV2ViR1BVOjphZGRyZXNzTW9kZShkZXNjcmlwdG9yLmFkZHJlc3NNb2RlVSkpCi0gICAg
ICAgIHNhbXBsZXJEZXNjcmlwdG9yLnJBZGRyZXNzTW9kZSA9IGFkZHJlc3NNb2RlLnZhbHVlKCk7
CisgICAgICAgIHNhbXBsZXJEZXNjcmlwdG9yLnJBZGRyZXNzTW9kZSA9ICphZGRyZXNzTW9kZTsK
ICAgICBlbHNlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGF1dG8gYWRkcmVz
c01vZGUgPSBXZWJHUFU6OmFkZHJlc3NNb2RlKGRlc2NyaXB0b3IuYWRkcmVzc01vZGVWKSkKLSAg
ICAgICAgc2FtcGxlckRlc2NyaXB0b3Iuc0FkZHJlc3NNb2RlID0gYWRkcmVzc01vZGUudmFsdWUo
KTsKKyAgICAgICAgc2FtcGxlckRlc2NyaXB0b3Iuc0FkZHJlc3NNb2RlID0gKmFkZHJlc3NNb2Rl
OwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoYXV0byBhZGRy
ZXNzTW9kZSA9IFdlYkdQVTo6YWRkcmVzc01vZGUoZGVzY3JpcHRvci5hZGRyZXNzTW9kZVcpKQot
ICAgICAgICBzYW1wbGVyRGVzY3JpcHRvci50QWRkcmVzc01vZGUgPSBhZGRyZXNzTW9kZS52YWx1
ZSgpOworICAgICAgICBzYW1wbGVyRGVzY3JpcHRvci50QWRkcmVzc01vZGUgPSAqYWRkcmVzc01v
ZGU7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIG1p
bk1hZ0ZpbHRlciA9IFdlYkdQVTo6bWluTWFnRmlsdGVyKGRlc2NyaXB0b3IubWFnRmlsdGVyKSkK
LSAgICAgICAgc2FtcGxlckRlc2NyaXB0b3IubWFnRmlsdGVyID0gbWluTWFnRmlsdGVyLnZhbHVl
KCk7CisgICAgICAgIHNhbXBsZXJEZXNjcmlwdG9yLm1hZ0ZpbHRlciA9ICptaW5NYWdGaWx0ZXI7
CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIG1pbk1h
Z0ZpbHRlciA9IFdlYkdQVTo6bWluTWFnRmlsdGVyKGRlc2NyaXB0b3IubWluRmlsdGVyKSkKLSAg
ICAgICAgc2FtcGxlckRlc2NyaXB0b3IubWluRmlsdGVyID0gbWluTWFnRmlsdGVyLnZhbHVlKCk7
CisgICAgICAgIHNhbXBsZXJEZXNjcmlwdG9yLm1pbkZpbHRlciA9ICptaW5NYWdGaWx0ZXI7CiAg
ICAgZWxzZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIG1pcEZpbHRl
ciA9IFdlYkdQVTo6bWlwRmlsdGVyKGRlc2NyaXB0b3IubWlwbWFwRmlsdGVyKSkKLSAgICAgICAg
c2FtcGxlckRlc2NyaXB0b3IubWlwRmlsdGVyID0gbWlwRmlsdGVyLnZhbHVlKCk7CisgICAgICAg
IHNhbXBsZXJEZXNjcmlwdG9yLm1pcEZpbHRlciA9ICptaXBGaWx0ZXI7CiAgICAgZWxzZQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTc5LDcgKzE3OSw3IEBAIFJlZlB0cjxTYW1wbGVy
PiBEZXZpY2U6OmNyZWF0ZVNhbXBsZXIoY29uc3QgV0dQVVNhbXBsZXJEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQogICAgIHNhbXBsZXJEZXNjcmlwdG9yLmxvZE1heENsYW1wID0gZGVzY3JpcHRvci5s
b2RNYXhDbGFtcDsKIAogICAgIGlmIChhdXRvIGNvbXBhcmVGdW5jdGlvbiA9IFdlYkdQVTo6Y29t
cGFyZUZ1bmN0aW9uKGRlc2NyaXB0b3IuY29tcGFyZSkpCi0gICAgICAgIHNhbXBsZXJEZXNjcmlw
dG9yLmNvbXBhcmVGdW5jdGlvbiA9IGNvbXBhcmVGdW5jdGlvbi52YWx1ZSgpOworICAgICAgICBz
YW1wbGVyRGVzY3JpcHRvci5jb21wYXJlRnVuY3Rpb24gPSAqY29tcGFyZUZ1bmN0aW9uOwogICAg
IGVsc2UKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1RleHR1cmUuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaAppbmRl
eCA5YTU5NzhkNzM5MTJjOTkxZTRiNDNiY2VkMjc5ZDExZDNlYmI3NDA1Li5iOGE5OTI0MTc0NTI1
MjY1MTk1MjIxZmZiNDVhZmEzNTQ0ZTQ3YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9UZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5oCkBAIC0z
NSwxNCArMzUsMTUgQEAgc3RydWN0IFdHUFVUZXh0dXJlSW1wbCB7CiAKIG5hbWVzcGFjZSBXZWJH
UFUgewogCitjbGFzcyBEZXZpY2U7CiBjbGFzcyBUZXh0dXJlVmlldzsKIAogY2xhc3MgVGV4dHVy
ZSA6IHB1YmxpYyBXR1BVVGV4dHVyZUltcGwsIHB1YmxpYyBSZWZDb3VudGVkPFRleHR1cmU+IHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFRl
eHR1cmU+IGNyZWF0ZShpZDxNVExUZXh0dXJlPiB0ZXh0dXJlLCBjb25zdCBXR1BVVGV4dHVyZURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCisgICAgc3RhdGljIFJlZjxUZXh0dXJlPiBjcmVhdGUoaWQ8
TVRMVGV4dHVyZT4gdGV4dHVyZSwgY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yLCBEZXZpY2UmIGRldmljZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFRleHR1cmUodGV4dHVyZSwgZGVzY3JpcHRvcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBUZXh0dXJlKHRleHR1cmUsIGRlc2NyaXB0b3IsIGRldmljZSkpOwogICAgIH0KIAogICAg
IH5UZXh0dXJlKCk7CkBAIC01NSwxMSArNTYsMTcgQEAgcHVibGljOgogICAgIGNvbnN0IFdHUFVU
ZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRv
cjsgfQogCiBwcml2YXRlOgotICAgIFRleHR1cmUoaWQ8TVRMVGV4dHVyZT4sIGNvbnN0IFdHUFVU
ZXh0dXJlRGVzY3JpcHRvciYpOworICAgIFRleHR1cmUoaWQ8TVRMVGV4dHVyZT4sIGNvbnN0IFdH
UFVUZXh0dXJlRGVzY3JpcHRvciYsIERldmljZSYpOworCisgICAgc3RkOjpvcHRpb25hbDxXR1BV
VGV4dHVyZVZpZXdEZXNjcmlwdG9yPiByZXNvbHZlVGV4dHVyZVZpZXdEZXNjcmlwdG9yRGVmYXVs
dHMoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYpIGNvbnN0OworICAgIHVpbnQzMl90
IGFycmF5TGF5ZXJDb3VudCgpIGNvbnN0OworICAgIGJvb2wgdmFsaWRhdGVDcmVhdGVWaWV3KGNv
bnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImKSBjb25zdDsKIAogICAgIGNvbnN0IGlkPE1U
TFRleHR1cmU+IG1fdGV4dHVyZSB7IG5pbCB9OwogCiAgICAgY29uc3QgV0dQVVRleHR1cmVEZXNj
cmlwdG9yIG1fZGVzY3JpcHRvciB7IH07IC8vICJUaGUgR1BVVGV4dHVyZURlc2NyaXB0b3IgZGVz
Y3JpYmluZyB0aGlzIHRleHR1cmUuIgorCisgICAgY29uc3QgUmVmPERldmljZT4gbV9kZXZpY2U7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1RleHR1cmUubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tCmluZGV4
IDhmNTRmY2Q3YzE4ODM5M2ZkNmNiNWE0NjdkOWU0NDY2Njk3NzkyYjIuLjI0ZmQ0MzQzZjMzM2Y5
YzFiZjFiN2U4NmQyNTBjMDc2MTI3ODU2ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2Vi
R1BVL1RleHR1cmUubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5tbQpAQCAt
MzYsNiArMzYsMTAgQEAgbmFtZXNwYWNlIFdlYkdQVSB7CiBzdGF0aWMgc3RkOjpvcHRpb25hbDxX
R1BVRmVhdHVyZU5hbWU+IGZlYXR1cmVSZXF1aXJlbWVudEZvckZvcm1hdChXR1BVVGV4dHVyZUZv
cm1hdCBmb3JtYXQpCiB7CiAgICAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0RlcHRoMjRVbm9ybVN0ZW5jaWw4OiAvLyBGSVhNRTogVGhpcyBoYXMgdG8gYmUg
Z3VhcmRlZCBieSBNVExEZXZpY2UuZGVwdGgyNFN0ZW5jaWw4UGl4ZWxGb3JtYXRTdXBwb3J0ZWQK
KyAgICAgICAgcmV0dXJuIFdHUFVGZWF0dXJlTmFtZV9EZXB0aDI0VW5vcm1TdGVuY2lsODsKKyAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMzJGbG9hdFN0ZW5jaWw4OgorICAgICAgICBy
ZXR1cm4gV0dQVUZlYXR1cmVOYW1lX0RlcHRoMzJGbG9hdFN0ZW5jaWw4OwogICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfQkMxUkdCQVVub3JtOgogICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
QkMxUkdCQVVub3JtU3JnYjoKICAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDMlJHQkFVbm9y
bToKQEAgLTEzMiw5ICsxMzYsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxXR1BVRmVhdHVyZU5h
bWU+IGZlYXR1cmVSZXF1aXJlbWVudEZvckZvcm1hdChXR1BVVGV4dHVyZUZvcgogICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfRGVwdGgxNlVub3JtOgogICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfRGVwdGgyNFBsdXM6CiAgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDI0UGx1c1N0
ZW5jaWw4OgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgyNFVub3JtU3RlbmNpbDg6
CiAgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDMyRmxvYXQ6Ci0gICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9EZXB0aDMyRmxvYXRTdGVuY2lsODoKICAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X0ZvcmNlMzI6CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQpAQCAt
MTI5OSw2ICsxMzAxLDIzOCBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxNVExQaXhlbEZvcm1hdD4g
cGl4ZWxGb3JtYXQoV0dQVVRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdAogICAgIH0KIH0KIAor
c3RhdGljIHN0ZDo6b3B0aW9uYWw8TVRMUGl4ZWxGb3JtYXQ+IHN0ZW5jaWxPbmx5QXNwZWN0Rm9y
bWF0KFdHUFVUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQpCit7CisgICAgc3dpdGNoICh0ZXh0
dXJlRm9ybWF0KSB7CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9VbmRlZmluZWQ6CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SOFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfUjhTbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1I4VWludDoKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X1I4U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1Ix
NlVpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMTZTaW50OgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfUjE2RmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzhV
bm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHOFNub3JtOgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfUkc4VWludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHOFNp
bnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMzJGbG9hdDoKKyAgICBjYXNlIFdHUFVU
ZXh0dXJlRm9ybWF0X1IzMlVpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMzJTaW50
OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkcxNlVpbnQ6CisgICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9SRzE2U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMTZGbG9h
dDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkE4VW5vcm06CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9SR0JBOFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X1JHQkE4U25vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBOFVpbnQ6CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBOFNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9CR1JBOFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkdSQThVbm9ybVNy
Z2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0IxMEEyVW5vcm06CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9SRzExQjEwVWZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfUkdCOUU1VWZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkczMkZsb2F0Ogor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkczMlVpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9SRzMyU2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkExNlVpbnQ6
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMTZTaW50OgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfUkdCQTE2RmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JB
MzJGbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkEzMlVpbnQ6CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMzJTaW50OgorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfU3RlbmNpbDg6CisgICAgICAgIHJldHVy
biBwaXhlbEZvcm1hdCh0ZXh0dXJlRm9ybWF0KTsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0RlcHRoMTZVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMjRQbHVzOgor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
RGVwdGgyNFBsdXNTdGVuY2lsODoKKyAgICAgICAgQVNTRVJUKHBpeGVsRm9ybWF0KHRleHR1cmVG
b3JtYXQpID09IE1UTFBpeGVsRm9ybWF0RGVwdGgzMkZsb2F0X1N0ZW5jaWw4KTsKKyAgICAgICAg
cmV0dXJuIE1UTFBpeGVsRm9ybWF0WDMyX1N0ZW5jaWw4OworI2lmIFBMQVRGT1JNKE1BQykgfHwg
UExBVEZPUk0oTUFDQ0FUQUxZU1QpCisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDI0
VW5vcm1TdGVuY2lsODoKKyAgICAgICAgcmV0dXJuIE1UTFBpeGVsRm9ybWF0WDI0X1N0ZW5jaWw4
OworI2Vsc2UKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMjRVbm9ybVN0ZW5jaWw4
OgorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworI2VuZGlmCisgICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9EZXB0aDMyRmxvYXQ6CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDMyRmxvYXRTdGVuY2lsODoKKyAgICAgICAg
cmV0dXJuIE1UTFBpeGVsRm9ybWF0WDMyX1N0ZW5jaWw4OworICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfQkMxUkdCQVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMxUkdCQVVu
b3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDMlJHQkFVbm9ybToKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDMlJHQkFVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9CQzNSR0JBVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzNS
R0JBVW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM0UlVub3JtOgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM0UlNub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfQkM1UkdVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNVJHU25vcm06
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzZIUkdCVWZsb2F0OgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfQkM2SFJHQkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
QkM3UkdCQVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM3UkdCQVVub3JtU3Jn
YjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4VW5vcm06CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X0VUQzJSR0I4QTFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJS
R0I4QTFVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCQThVbm9y
bToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0JBOFVub3JtU3JnYjoKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VBQ1IxMVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfRUFDUjExU25vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FQUNSRzExVW5v
cm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FQUNSRzExU25vcm06CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9BU1RDNHg0VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9BU1RDNHg0VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NFVu
b3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NFVub3JtU3JnYjoKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1eDVVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X0FTVEM1eDVVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RD
Nng1VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng1VW5vcm1TcmdiOgor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4NlVub3JtOgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfQVNUQzZ4NlVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0FTVEM4eDVVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDVVbm9ybVNy
Z2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg2VW5vcm06CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg2VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfQVNUQzh4OFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4OFVu
b3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg1VW5vcm06CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NVVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVU
ZXh0dXJlRm9ybWF0X0FTVEMxMHg2VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9B
U1RDMTB4NlVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg4VW5v
cm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4OFVub3JtU3JnYjoKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHgxMFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfQVNUQzEweDEwVW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
QVNUQzEyeDEwVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTBVbm9y
bVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTJVbm9ybToKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMngxMlVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVU
ZXh0dXJlRm9ybWF0X0ZvcmNlMzI6CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
fQorfQorCitzdGF0aWMgc3RkOjpvcHRpb25hbDxNVExQaXhlbEZvcm1hdD4gZGVwdGhPbmx5QXNw
ZWN0Rm9ybWF0KFdHUFVUZXh0dXJlRm9ybWF0IHRleHR1cmVGb3JtYXQpCit7CisgICAgc3dpdGNo
ICh0ZXh0dXJlRm9ybWF0KSB7CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9VbmRlZmluZWQ6
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SOFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfUjhTbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1I4VWludDoKKyAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1I4U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X1IxNlVpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMTZTaW50OgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfUjE2RmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9SRzhVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHOFNub3JtOgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfUkc4VWludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X1JHOFNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMzJGbG9hdDoKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X1IzMlVpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9S
MzJTaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkcxNlVpbnQ6CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9SRzE2U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JH
MTZGbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkE4VW5vcm06CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBOFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X1JHQkE4U25vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBOFVpbnQ6
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBOFNpbnQ6CisgICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9CR1JBOFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkdSQThV
bm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0IxMEEyVW5vcm06CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzExQjEwVWZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfUkdCOUU1VWZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkczMkZs
b2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkczMlVpbnQ6CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9SRzMyU2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkEx
NlVpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMTZTaW50OgorICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfUkdCQTE2RmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9SR0JBMzJGbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkEzMlVpbnQ6Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMzJTaW50OgorICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfU3RlbmNpbDg6CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDE2VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9EZXB0aDI0UGx1czoKKyAgICAgICAgcmV0dXJuIHBpeGVsRm9ybWF0KHRleHR1cmVGb3Jt
YXQpOworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgyNFBsdXNTdGVuY2lsODoKKyAg
ICAgICAgQVNTRVJUKHBpeGVsRm9ybWF0KHRleHR1cmVGb3JtYXQpID09IE1UTFBpeGVsRm9ybWF0
RGVwdGgzMkZsb2F0X1N0ZW5jaWw4KTsKKyAgICAgICAgcmV0dXJuIE1UTFBpeGVsRm9ybWF0RGVw
dGgzMkZsb2F0OworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgyNFVub3JtU3RlbmNp
bDg6CisgICAgICAgIC8vIFRoaXMgaXMgYSBiaXQgc3VycHJpc2luZywgYnV0IGl0IHNob3VsZCBi
ZSBjb3JyZWN0LgorICAgICAgICAvLyBXaGVuIHVzaW5nIHRoZSB2aWV3IGFzIGEgcmVuZGVyIHRh
cmdldCwgd2UnbGwgYmluZCBpdCB0byBNVExSZW5kZXJQYXNzRGVzY3JpcHRvci5kZXB0aEF0dGFj
aG1lbnQsIHdoaWNoIHdpbGwgaWdub3JlIHRoZSBzdGVuY2lsIGJpdHMuCisgICAgICAgIC8vIFdo
ZW4gYXR0YWNoaW5nIHRoZSB2aWV3IGFzIGEgc2hhZGVyIHJlc291cmNlIHZpZXcsIG9ubHkgdGhl
IGRlcHRoIGFzcGVjdCBpcyB2aXNpYmxlIGFueXdheS4KKyAgICAgICAgLy8gV2hlbiBjb3B5aW5n
IHRvL2Zyb20gdGhlIHRleHR1cmUsIHdlIGNhbiB1c2UgTVRMQmxpdE9wdGlvbi5NVExCbGl0T3B0
aW9uRGVwdGhGcm9tRGVwdGhTdGVuY2lsIHRvIGlnbm9yZSB0aGUgc3RlbmNpbCBiaXRzLgorICAg
ICAgICByZXR1cm4gcGl4ZWxGb3JtYXQodGV4dHVyZUZvcm1hdCk7CisgICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9EZXB0aDMyRmxvYXQ6CisgICAgICAgIHJldHVybiBwaXhlbEZvcm1hdCh0ZXh0
dXJlRm9ybWF0KTsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMzJGbG9hdFN0ZW5j
aWw4OgorICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXREZXB0aDMyRmxvYXQ7CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzFSR0JBVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9CQzFSR0JBVW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMyUkdC
QVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMyUkdCQVVub3JtU3JnYjoKKyAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDM1JHQkFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0JDM1JHQkFVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9C
QzRSVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzRSU25vcm06CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzVSR1Vub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfQkM1UkdTbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNkhSR0JVZmxvYXQ6
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzZIUkdCRmxvYXQ6CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9CQzdSR0JBVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9C
QzdSR0JBVW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQjhVbm9y
bToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4VW5vcm1TcmdiOgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQjhBMVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfRVRDMlJHQjhBMVVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0VUQzJSR0JBOFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQkE4VW5v
cm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRUFDUjExVW5vcm06CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9FQUNSMTFTbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X0VBQ1JHMTFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VBQ1JHMTFTbm9y
bToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM0eDRVbm9ybToKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0FTVEM0eDRVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9BU1RDNXg0VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNXg0VW5v
cm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NVVub3JtOgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NVVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0FTVEM2eDVVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM2
eDVVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng2VW5vcm06Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng2VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfQVNUQzh4NVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
QVNUQzh4NVVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDZVbm9y
bToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDZVbm9ybVNyZ2I6CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg4VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9BU1RDOHg4VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEw
eDVVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg1VW5vcm1TcmdiOgor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDZVbm9ybToKKyAgICBjYXNlIFdHUFVU
ZXh0dXJlRm9ybWF0X0FTVEMxMHg2VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfQVNUQzEweDhVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg4VW5v
cm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDEwVW5vcm06CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4MTBVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTBVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0FTVEMxMngxMFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMngx
MlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEyVW5vcm1TcmdiOgor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRm9yY2UzMjoKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICB9Cit9CisKIHN0YXRpYyBNVExTdG9yYWdlTW9kZSBzdG9yYWdlTW9kZShi
b29sIGRldmljZUhhc1VuaWZpZWRNZW1vcnkpCiB7CiAgICAgaWYgKGRldmljZUhhc1VuaWZpZWRN
ZW1vcnkpCkBAIC0xMzc1LDcgKzE2MDksNyBAQCBSZWZQdHI8VGV4dHVyZT4gRGV2aWNlOjpjcmVh
dGVUZXh0dXJlKGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKICAgICB9
CiAKICAgICBpZiAoYXV0byBwaXhlbEZvcm1hdCA9IFdlYkdQVTo6cGl4ZWxGb3JtYXQoZGVzY3Jp
cHRvci5mb3JtYXQpKQotICAgICAgICB0ZXh0dXJlRGVzY3JpcHRvci5waXhlbEZvcm1hdCA9IHBp
eGVsRm9ybWF0LnZhbHVlKCk7CisgICAgICAgIHRleHR1cmVEZXNjcmlwdG9yLnBpeGVsRm9ybWF0
ID0gKnBpeGVsRm9ybWF0OwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAg
LTEzOTgsMjEgKzE2MzIsMzUyIEBAIFJlZlB0cjxUZXh0dXJlPiBEZXZpY2U6OmNyZWF0ZVRleHR1
cmUoY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogICAgIC8vICJTZXQg
dC5bW2Rlc2NyaXB0b3JdXSB0byBkZXNjcmlwdG9yLiIKICAgICAvLyAiUmV0dXJuIHQuIgogCi0g
ICAgcmV0dXJuIFRleHR1cmU6OmNyZWF0ZSh0ZXh0dXJlLCBkZXNjcmlwdG9yKTsKKyAgICByZXR1
cm4gVGV4dHVyZTo6Y3JlYXRlKHRleHR1cmUsIGRlc2NyaXB0b3IsICp0aGlzKTsKIH0KIAotVGV4
dHVyZTo6VGV4dHVyZShpZDxNVExUZXh0dXJlPiB0ZXh0dXJlLCBjb25zdCBXR1BVVGV4dHVyZURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCitUZXh0dXJlOjpUZXh0dXJlKGlkPE1UTFRleHR1cmU+IHRl
eHR1cmUsIGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgRGV2aWNlJiBk
ZXZpY2UpCiAgICAgOiBtX3RleHR1cmUodGV4dHVyZSkKICAgICAsIG1fZGVzY3JpcHRvcihkZXNj
cmlwdG9yKQorICAgICwgbV9kZXZpY2UoZGV2aWNlKQogewogfQogCiBUZXh0dXJlOjp+VGV4dHVy
ZSgpID0gZGVmYXVsdDsKIAotUmVmUHRyPFRleHR1cmVWaWV3PiBUZXh0dXJlOjpjcmVhdGVWaWV3
KGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitzdGQ6Om9wdGlv
bmFsPFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3I+IFRleHR1cmU6OnJlc29sdmVUZXh0dXJlVmll
d0Rlc2NyaXB0b3JEZWZhdWx0cyhjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKSBjb25zdAoreworICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIv
I2Fic3RyYWN0LW9wZGVmLXJlc29sdmluZy1ncHV0ZXh0dXJldmlld2Rlc2NyaXB0b3ItZGVmYXVs
dHMKKworICAgIC8vICJMZXQgcmVzb2x2ZWQgYmUgYSBjb3B5IG9mIGRlc2NyaXB0b3IuIgorICAg
IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IgcmVzb2x2ZWQgPSBkZXNjcmlwdG9yOworCisgICAg
Ly8gIklmIHJlc29sdmVkLmZvcm1hdCBpcyB1bmRlZmluZWQiCisgICAgaWYgKHJlc29sdmVkLmZv
cm1hdCA9PSBXR1BVVGV4dHVyZUZvcm1hdF9VbmRlZmluZWQpIHsKKyAgICAgICAgLy8gInNldCBy
ZXNvbHZlZC5mb3JtYXQgdG8gdGV4dHVyZS5bW2Rlc2NyaXB0b3JdXS5mb3JtYXQuIgorICAgICAg
ICByZXNvbHZlZC5mb3JtYXQgPSBtX2Rlc2NyaXB0b3IuZm9ybWF0OworICAgIH0KKworICAgIC8v
ICJJZiByZXNvbHZlZC5taXBMZXZlbENvdW50IGlzIHVuZGVmaW5lZCIKKyAgICBpZiAocmVzb2x2
ZWQubWlwTGV2ZWxDb3VudCA9PSBXR1BVX01JUF9MRVZFTF9DT1VOVF9VTkRFRklORUQpIHsKKyAg
ICAgICAgLy8gInNldCByZXNvbHZlZC5taXBMZXZlbENvdW50IHRvIHRleHR1cmUuW1tkZXNjcmlw
dG9yXV0ubWlwTGV2ZWxDb3VudCDiiJIgcmVzb2x2ZWQuYmFzZU1pcExldmVsLiIKKyAgICAgICAg
Ly8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMuCisgICAgICAgIHJlc29sdmVkLm1pcExl
dmVsQ291bnQgPSBtX2Rlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCAtIHJlc29sdmVkLmJhc2VNaXBM
ZXZlbDsKKyAgICB9CisKKyAgICAvLyAiSWYgcmVzb2x2ZWQuZGltZW5zaW9uIGlzIHVuZGVmaW5l
ZCIKKyAgICBpZiAocmVzb2x2ZWQuZGltZW5zaW9uID09IFdHUFVUZXh0dXJlVmlld0RpbWVuc2lv
bl9VbmRlZmluZWQpIHsKKyAgICAgICAgLy8gImFuZCB0ZXh0dXJlLltbZGVzY3JpcHRvcl1dLmRp
bWVuc2lvbiBpczoiCisgICAgICAgIHN3aXRjaCAobV9kZXNjcmlwdG9yLmRpbWVuc2lvbikgewor
ICAgICAgICBjYXNlIFdHUFVUZXh0dXJlRGltZW5zaW9uXzFEOgorICAgICAgICAgICAgLy8gIlNl
dCByZXNvbHZlZC5kaW1lbnNpb24gdG8gIjFkIi4iCisgICAgICAgICAgICByZXNvbHZlZC5kaW1l
bnNpb24gPSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fMUQ7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBXR1BVVGV4dHVyZURpbWVuc2lvbl8yRDoKKyAgICAgICAgICAgIC8vICJT
ZXQgcmVzb2x2ZWQuZGltZW5zaW9uIHRvICIyZCIuIgorICAgICAgICAgICAgcmVzb2x2ZWQuZGlt
ZW5zaW9uID0gV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uXzJEOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVEaW1lbnNpb25fM0Q6CisgICAgICAgICAgICAvLyAi
U2V0IHJlc29sdmVkLmRpbWVuc2lvbiB0byAiM2QiLiIKKyAgICAgICAgICAgIHJlc29sdmVkLmRp
bWVuc2lvbiA9IFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl8zRDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFdHUFVUZXh0dXJlRGltZW5zaW9uX0ZvcmNlMzI6CisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gIklmIHJl
c29sdmVkLmFycmF5TGF5ZXJDb3VudCBpcyB1bmRlZmluZWQiCisgICAgaWYgKHJlc29sdmVkLmFy
cmF5TGF5ZXJDb3VudCA9PSBXR1BVX0FSUkFZX0xBWUVSX0NPVU5UX1VOREVGSU5FRCkgeworICAg
ICAgICAvLyAiYW5kIHJlc29sdmVkLmRpbWVuc2lvbiBpczoiCisgICAgICAgIHN3aXRjaCAocmVz
b2x2ZWQuZGltZW5zaW9uKSB7CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9u
X1VuZGVmaW5lZDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1l
bnNpb25fMUQ6CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uXzJEOgorICAg
ICAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl8zRDoKKyAgICAgICAgICAgIC8vICJT
ZXQgcmVzb2x2ZWQuYXJyYXlMYXllckNvdW50IHRvIDEuIgorICAgICAgICAgICAgcmVzb2x2ZWQu
YXJyYXlMYXllckNvdW50ID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdH
UFVUZXh0dXJlVmlld0RpbWVuc2lvbl9DdWJlOgorICAgICAgICAgICAgLy8gIlNldCByZXNvbHZl
ZC5hcnJheUxheWVyQ291bnQgdG8gNi4iCisgICAgICAgICAgICByZXNvbHZlZC5hcnJheUxheWVy
Q291bnQgPSA2OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVW
aWV3RGltZW5zaW9uXzJEQXJyYXk6CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5z
aW9uX0N1YmVBcnJheToKKyAgICAgICAgICAgIC8vICJTZXQgcmVzb2x2ZWQuYXJyYXlMYXllckNv
dW50IHRvIHRleHR1cmUuW1tkZXNjcmlwdG9yXV0uc2l6ZS5kZXB0aE9yQXJyYXlMYXllcnMg4oiS
IGJhc2VBcnJheUxheWVyLiIKKyAgICAgICAgICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0
aG1ldGljCisgICAgICAgICAgICByZXNvbHZlZC5hcnJheUxheWVyQ291bnQgPSBtX2Rlc2NyaXB0
b3Iuc2l6ZS5kZXB0aE9yQXJyYXlMYXllcnMgLSByZXNvbHZlZC5iYXNlQXJyYXlMYXllcjsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl9G
b3JjZTMyOgorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgfQorICAg
IH0KKworICAgIC8vICJSZXR1cm4gcmVzb2x2ZWQuIgorICAgIHJldHVybiByZXNvbHZlZDsKK30K
KwordWludDMyX3QgVGV4dHVyZTo6YXJyYXlMYXllckNvdW50KCkgY29uc3QKK3sKKyAgICAvLyBo
dHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNhYnN0cmFjdC1vcGRlZi1hcnJheS1sYXll
ci1jb3VudAorCisgICAgLy8gIklmIHRleHR1cmUuW1tkZXNjcmlwdG9yXV0uZGltZW5zaW9uIGlz
OiIKKyAgICBzd2l0Y2ggKG1fZGVzY3JpcHRvci5kaW1lbnNpb24pIHsKKyAgICBjYXNlIFdHUFVU
ZXh0dXJlRGltZW5zaW9uXzFEOgorICAgICAgICAvLyAiUmV0dXJuIDEuIgorICAgICAgICByZXR1
cm4gMTsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRGltZW5zaW9uXzJEOgorICAgICAgICAvLyAiUmV0
dXJuIHRleHR1cmUuW1tkZXNjcmlwdG9yXV0uc2l6ZS5kZXB0aE9yQXJyYXlMYXllcnMuIgorICAg
ICAgICByZXR1cm4gbV9kZXNjcmlwdG9yLnNpemUuZGVwdGhPckFycmF5TGF5ZXJzOworICAgIGNh
c2UgV0dQVVRleHR1cmVEaW1lbnNpb25fM0Q6CisgICAgICAgIC8vICJSZXR1cm4gMS4iCisgICAg
ICAgIHJldHVybiAxOworICAgIGNhc2UgV0dQVVRleHR1cmVEaW1lbnNpb25fRm9yY2UzMjoKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KK30K
KworYm9vbCBUZXh0dXJlOjp2YWxpZGF0ZUNyZWF0ZVZpZXcoY29uc3QgV0dQVVRleHR1cmVWaWV3
RGVzY3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKK3sKKyAgICAvLyBGSVhNRTogInRoaXMgaXMg
dmFsaWQiCisKKyAgICAvLyAiSWYgdGhlIGRlc2NyaXB0b3IuYXNwZWN0IGlzIgorICAgIHN3aXRj
aCAoZGVzY3JpcHRvci5hc3BlY3QpIHsKKyAgICBjYXNlIFdHUFVUZXh0dXJlQXNwZWN0X0FsbDoK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXR1BVVGV4dHVyZUFzcGVjdF9TdGVuY2lsT25seToK
KyAgICAgICAgLy8gInRoaXMuW1tkZXNjcmlwdG9yXV0uZm9ybWF0IG11c3QgYmUgYSBkZXB0aC1v
ci1zdGVuY2lsIGZvcm1hdCB3aGljaCBoYXMgYSBzdGVuY2lsIGFzcGVjdC4iCisgICAgICAgIGlm
ICghc3RlbmNpbE9ubHlBc3BlY3RGb3JtYXQobV9kZXNjcmlwdG9yLmZvcm1hdCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0dQVVRleHR1cmVB
c3BlY3RfRGVwdGhPbmx5OgorICAgICAgICAvLyAidGhpcy5bW2Rlc2NyaXB0b3JdXS5mb3JtYXQg
bXVzdCBiZSBhIGRlcHRoLW9yLXN0ZW5jaWwgZm9ybWF0IHdoaWNoIGhhcyBhIGRlcHRoIGFzcGVj
dC4iCisgICAgICAgIGlmICghZGVwdGhPbmx5QXNwZWN0Rm9ybWF0KG1fZGVzY3JpcHRvci5mb3Jt
YXQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFdHUFVUZXh0dXJlQXNwZWN0X0ZvcmNlMzI6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisKKyAgICAvLyAiZGVzY3JpcHRvci5taXBMZXZlbENvdW50IG11c3QgYmUgPiAwLiIKKyAgICBp
ZiAoIWRlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgLy8gImRlc2NyaXB0b3IuYmFzZU1pcExldmVsICsgZGVzY3JpcHRvci5taXBMZXZlbENvdW50
IG11c3QgYmUg4omkIHRoaXMuW1tkZXNjcmlwdG9yXV0ubWlwTGV2ZWxDb3VudC4iCisgICAgLy8g
RklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMuCisgICAgaWYgKGRlc2NyaXB0b3IuYmFzZU1p
cExldmVsICsgZGVzY3JpcHRvci5taXBMZXZlbENvdW50ID4gbV9kZXNjcmlwdG9yLm1pcExldmVs
Q291bnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vICJkZXNjcmlwdG9yLmFycmF5
TGF5ZXJDb3VudCBtdXN0IGJlID4gMC4iCisgICAgaWYgKCFkZXNjcmlwdG9yLmFycmF5TGF5ZXJD
b3VudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gImRlc2NyaXB0b3IuYmFzZUFy
cmF5TGF5ZXIgKyBkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCBtdXN0IGJlIOKJpCB0aGUgYXJy
YXkgbGF5ZXIgY291bnQgb2YgdGhpcy4iCisgICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRo
bWV0aWMuCisgICAgaWYgKGRlc2NyaXB0b3IuYmFzZUFycmF5TGF5ZXIgKyBkZXNjcmlwdG9yLmFy
cmF5TGF5ZXJDb3VudCA+IGFycmF5TGF5ZXJDb3VudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAvLyBGSVhNRTogImRlc2NyaXB0b3IuZm9ybWF0IG11c3QgYmUgZXF1YWwgdG8gZWl0
aGVyIHRoaXMuW1tkZXNjcmlwdG9yXV0uZm9ybWF0IG9yIG9uZSBvZiB0aGUgZm9ybWF0cyBpbiB0
aGlzLltbZGVzY3JpcHRvcl1dLnZpZXdGb3JtYXRzLiIKKyAgICBpZiAoZGVzY3JpcHRvci5mb3Jt
YXQgIT0gbV9kZXNjcmlwdG9yLmZvcm1hdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
Ly8gIklmIGRlc2NyaXB0b3IuZGltZW5zaW9uIGlzOiIKKyAgICBzd2l0Y2ggKGRlc2NyaXB0b3Iu
ZGltZW5zaW9uKSB7CisgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fVW5kZWZpbmVk
OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNp
b25fMUQ6CisgICAgICAgIC8vICJ0aGlzLltbZGVzY3JpcHRvcl1dLmRpbWVuc2lvbiBtdXN0IGJl
ICIxZCIuIgorICAgICAgICBpZiAobV9kZXNjcmlwdG9yLmRpbWVuc2lvbiAhPSBXR1BVVGV4dHVy
ZURpbWVuc2lvbl8xRCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAvLyAi
ZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgbXVzdCBiZSAxLiIKKyAgICAgICAgaWYgKGRlc2Ny
aXB0b3IuYXJyYXlMYXllckNvdW50ICE9IDEpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uXzJEOgorICAg
ICAgICAvLyAidGhpcy5bW2Rlc2NyaXB0b3JdXS5kaW1lbnNpb24gbXVzdCBiZSAiMmQiLiIKKyAg
ICAgICAgaWYgKG1fZGVzY3JpcHRvci5kaW1lbnNpb24gIT0gV0dQVVRleHR1cmVEaW1lbnNpb25f
MkQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gImRlc2NyaXB0b3Iu
YXJyYXlMYXllckNvdW50IG11c3QgYmUgMS4iCisgICAgICAgIGlmIChkZXNjcmlwdG9yLmFycmF5
TGF5ZXJDb3VudCAhPSAxKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl8yREFycmF5OgorICAgICAgICAv
LyAidGhpcy5bW2Rlc2NyaXB0b3JdXS5kaW1lbnNpb24gbXVzdCBiZSAiMmQiLiIKKyAgICAgICAg
aWYgKG1fZGVzY3JpcHRvci5kaW1lbnNpb24gIT0gV0dQVVRleHR1cmVEaW1lbnNpb25fMkQpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0dQVVRl
eHR1cmVWaWV3RGltZW5zaW9uX0N1YmU6CisgICAgICAgIC8vICJ0aGlzLltbZGVzY3JpcHRvcl1d
LmRpbWVuc2lvbiBtdXN0IGJlICIyZCIuIgorICAgICAgICBpZiAobV9kZXNjcmlwdG9yLmRpbWVu
c2lvbiAhPSBXR1BVVGV4dHVyZURpbWVuc2lvbl8yRCkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgICAgICAvLyAiZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgbXVzdCBiZSA2LiIK
KyAgICAgICAgaWYgKGRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50ICE9IDYpCisgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gInRoaXMuW1tkZXNjcmlwdG9yXV0uc2l6ZS53
aWR0aCBtdXN0IGJlIHRoaXMuW1tkZXNjcmlwdG9yXV0uc2l6ZS5oZWlnaHQuIgorICAgICAgICBp
ZiAobV9kZXNjcmlwdG9yLnNpemUud2lkdGggIT0gbV9kZXNjcmlwdG9yLnNpemUuaGVpZ2h0KQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdHUFVU
ZXh0dXJlVmlld0RpbWVuc2lvbl9DdWJlQXJyYXk6CisgICAgICAgIC8vICJ0aGlzLltbZGVzY3Jp
cHRvcl1dLmRpbWVuc2lvbiBtdXN0IGJlICIyZCIuIgorICAgICAgICBpZiAobV9kZXNjcmlwdG9y
LmRpbWVuc2lvbiAhPSBXR1BVVGV4dHVyZURpbWVuc2lvbl8yRCkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgICAgICAvLyAiZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgbXVzdCBi
ZSBhIG11bHRpcGxlIG9mIDYuIgorICAgICAgICBpZiAoZGVzY3JpcHRvci5hcnJheUxheWVyQ291
bnQgJSA2KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIC8vICJ0aGlzLltb
ZGVzY3JpcHRvcl1dLnNpemUud2lkdGggbXVzdCBiZSB0aGlzLltbZGVzY3JpcHRvcl1dLnNpemUu
aGVpZ2h0LiIKKyAgICAgICAgaWYgKG1fZGVzY3JpcHRvci5zaXplLndpZHRoICE9IG1fZGVzY3Jp
cHRvci5zaXplLmhlaWdodCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fM0Q6CisgICAgICAgIC8vICJ0
aGlzLltbZGVzY3JpcHRvcl1dLmRpbWVuc2lvbiBtdXN0IGJlICIzZCIuIgorICAgICAgICBpZiAo
bV9kZXNjcmlwdG9yLmRpbWVuc2lvbiAhPSBXR1BVVGV4dHVyZURpbWVuc2lvbl8zRCkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAvLyAiZGVzY3JpcHRvci5hcnJheUxheWVy
Q291bnQgbXVzdCBiZSAxLiIKKyAgICAgICAgaWYgKGRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50
ICE9IDEpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX0ZvcmNlMzI6CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIFdHUFVFeHRlbnQzRCBj
b21wdXRlUmVuZGVyRXh0ZW50KGNvbnN0IFdHUFVFeHRlbnQzRCYgYmFzZVNpemUsIHVpbnQzMl90
IG1pcExldmVsKQoreworICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2Fi
c3RyYWN0LW9wZGVmLWNvbXB1dGUtcmVuZGVyLWV4dGVudAorCisgICAgLy8gIkxldCBleHRlbnQg
YmUgYSBuZXcgR1BVRXh0ZW50M0REaWN0IG9iamVjdC4iCisgICAgV0dQVUV4dGVudDNEIGV4dGVu
dCB7IH07CisKKyAgICAvLyAiU2V0IGV4dGVudC53aWR0aCB0byBtYXgoMSwgYmFzZVNpemUud2lk
dGgg4omrIG1pcExldmVsKS4iCisgICAgZXh0ZW50LndpZHRoID0gc3RkOjptYXgoc3RhdGljX2Nh
c3Q8dWludDMyX3Q+KDEpLCBiYXNlU2l6ZS53aWR0aCA+PiBtaXBMZXZlbCk7CisKKyAgICAvLyAi
U2V0IGV4dGVudC5oZWlnaHQgdG8gbWF4KDEsIGJhc2VTaXplLmhlaWdodCDiiasgbWlwTGV2ZWwp
LiIKKyAgICBleHRlbnQuaGVpZ2h0ID0gc3RkOjptYXgoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KDEp
LCBiYXNlU2l6ZS5oZWlnaHQgPj4gbWlwTGV2ZWwpOworCisgICAgLy8gIlNldCBleHRlbnQuZGVw
dGhPckFycmF5TGF5ZXJzIHRvIDEuIgorICAgIGV4dGVudC5kZXB0aE9yQXJyYXlMYXllcnMgPSAx
OworCisgICAgLy8gIlJldHVybiBleHRlbnQuIgorICAgIHJldHVybiBleHRlbnQ7Cit9CisKK1Jl
ZlB0cjxUZXh0dXJlVmlldz4gVGV4dHVyZTo6Y3JlYXRlVmlldyhjb25zdCBXR1BVVGV4dHVyZVZp
ZXdEZXNjcmlwdG9yJiBpbnB1dERlc2NyaXB0b3IpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2Ny
aXB0b3IpOwotICAgIHJldHVybiBUZXh0dXJlVmlldzo6Y3JlYXRlKG5pbCk7CisgICAgaWYgKGlu
cHV0RGVzY3JpcHRvci5uZXh0SW5DaGFpbikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1dGV4dHVyZS1jcmVh
dGV2aWV3CisKKyAgICAvLyAiU2V0IGRlc2NyaXB0b3IgdG8gdGhlIHJlc3VsdCBvZiByZXNvbHZp
bmcgR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yIGRlZmF1bHRzIHdpdGggZGVzY3JpcHRvci4iCisg
ICAgYXV0byBkZXNjcmlwdG9yID0gcmVzb2x2ZVRleHR1cmVWaWV3RGVzY3JpcHRvckRlZmF1bHRz
KGlucHV0RGVzY3JpcHRvcik7CisgICAgaWYgKCFkZXNjcmlwdG9yKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIC8vICJJZiBhbnkgb2YgdGhlIGZvbGxvd2luZyByZXF1aXJlbWVudHMg
YXJlIHVubWV0OiIKKyAgICBpZiAoIXZhbGlkYXRlQ3JlYXRlVmlldygqZGVzY3JpcHRvcikpIHsK
KyAgICAgICAgLy8gIkdlbmVyYXRlIGEgdmFsaWRhdGlvbiBlcnJvci4iCisgICAgICAgIG1fZGV2
aWNlLT5nZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24gZmFpbHVyZS4iX3MpOwor
CisgICAgICAgIC8vIEZJWE1FOiAiUmV0dXJuIGEgbmV3IGludmFsaWQgR1BVVGV4dHVyZVZpZXcu
IgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBzdGQ6Om9wdGlvbmFsPE1U
TFBpeGVsRm9ybWF0PiBwaXhlbEZvcm1hdCA9IE1UTFBpeGVsRm9ybWF0SW52YWxpZDsKKyAgICBp
ZiAoIXBpeGVsRm9ybWF0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBpZiAoaXNEZXB0
aE9yU3RlbmNpbEZvcm1hdChkZXNjcmlwdG9yLT5mb3JtYXQpKSB7CisgICAgICAgIHN3aXRjaCAo
ZGVzY3JpcHRvci0+YXNwZWN0KSB7CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVBc3BlY3RfQWxs
OgorICAgICAgICAgICAgcGl4ZWxGb3JtYXQgPSBXZWJHUFU6OnBpeGVsRm9ybWF0KGRlc2NyaXB0
b3ItPmZvcm1hdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXR1BVVGV4dHVy
ZUFzcGVjdF9TdGVuY2lsT25seToKKyAgICAgICAgICAgIHBpeGVsRm9ybWF0ID0gc3RlbmNpbE9u
bHlBc3BlY3RGb3JtYXQoZGVzY3JpcHRvci0+Zm9ybWF0KTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFdHUFVUZXh0dXJlQXNwZWN0X0RlcHRoT25seToKKyAgICAgICAgICAgIHBp
eGVsRm9ybWF0ID0gZGVwdGhPbmx5QXNwZWN0Rm9ybWF0KGRlc2NyaXB0b3ItPmZvcm1hdCk7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXR1BVVGV4dHVyZUFzcGVjdF9Gb3JjZTMy
OgorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYg
KCFwaXhlbEZvcm1hdCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQVNTRVJUKCpwaXhl
bEZvcm1hdCAhPSBNVExQaXhlbEZvcm1hdEludmFsaWQpOworCisgICAgTVRMVGV4dHVyZVR5cGUg
dGV4dHVyZVR5cGU7CisgICAgc3dpdGNoIChkZXNjcmlwdG9yLT5kaW1lbnNpb24pIHsKKyAgICBj
YXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl9VbmRlZmluZWQ6CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBjYXNlIFdHUFVUZXh0
dXJlVmlld0RpbWVuc2lvbl8xRDoKKyAgICAgICAgaWYgKGRlc2NyaXB0b3ItPmFycmF5TGF5ZXJD
b3VudCA9PSAxKQorICAgICAgICAgICAgdGV4dHVyZVR5cGUgPSBNVExUZXh0dXJlVHlwZTFEOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXh0dXJlVHlwZSA9IE1UTFRleHR1cmVUeXBlMURB
cnJheTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25f
MkQ6CisgICAgICAgIGlmIChtX2Rlc2NyaXB0b3Iuc2FtcGxlQ291bnQgPiAxKQorICAgICAgICAg
ICAgdGV4dHVyZVR5cGUgPSBNVExUZXh0dXJlVHlwZTJETXVsdGlzYW1wbGU7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHRleHR1cmVUeXBlID0gTVRMVGV4dHVyZVR5cGUyRDsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fMkRBcnJheToKKyAgICAg
ICAgaWYgKG1fZGVzY3JpcHRvci5zYW1wbGVDb3VudCA+IDEpIHsKKyNpZiBQTEFURk9STShXQVRD
SE9TKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisjZWxzZQorICAgICAgICAgICAgdGV4
dHVyZVR5cGUgPSBNVExUZXh0dXJlVHlwZTJETXVsdGlzYW1wbGVBcnJheTsKKyNlbmRpZgorICAg
ICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRleHR1cmVUeXBlID0gTVRMVGV4dHVyZVR5cGUyREFy
cmF5OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl9D
dWJlOgorICAgICAgICB0ZXh0dXJlVHlwZSA9IE1UTFRleHR1cmVUeXBlQ3ViZTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fQ3ViZUFycmF5OgorICAg
ICAgICB0ZXh0dXJlVHlwZSA9IE1UTFRleHR1cmVUeXBlQ3ViZUFycmF5OworICAgICAgICBicmVh
azsKKyAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl8zRDoKKyAgICAgICAgdGV4dHVy
ZVR5cGUgPSBNVExUZXh0dXJlVHlwZTNEOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdHUFVU
ZXh0dXJlVmlld0RpbWVuc2lvbl9Gb3JjZTMyOgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICB9CisKKyAgICBhdXRvIGxldmVscyA9IE5TTWFrZVJhbmdlKGRlc2NyaXB0b3ItPmJhc2VNaXBM
ZXZlbCwgZGVzY3JpcHRvci0+bWlwTGV2ZWxDb3VudCk7CisKKyAgICBhdXRvIHNsaWNlcyA9IE5T
TWFrZVJhbmdlKGRlc2NyaXB0b3ItPmJhc2VBcnJheUxheWVyLCBkZXNjcmlwdG9yLT5hcnJheUxh
eWVyQ291bnQpOworCisgICAgaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSA9IFttX3RleHR1cmUgbmV3
VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6KnBpeGVsRm9ybWF0IHRleHR1cmVUeXBlOnRleHR1
cmVUeXBlIGxldmVsczpsZXZlbHMgc2xpY2VzOnNsaWNlc107CisgICAgaWYgKCF0ZXh0dXJlKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHRleHR1cmUubGFiZWwgPSBmcm9tQVBJKGRl
c2NyaXB0b3ItPmxhYmVsKTsKKworICAgIC8vICJMZXQgdmlldyBiZSBhIG5ldyBHUFVUZXh0dXJl
VmlldyBvYmplY3QuIgorICAgIC8vICJTZXQgdmlldy5bW3RleHR1cmVdXSB0byB0aGlzLiIKKyAg
ICAvLyAiU2V0IHZpZXcuW1tkZXNjcmlwdG9yXV0gdG8gZGVzY3JpcHRvci4iCisKKyAgICAvLyAi
SWYgdGhpcy5bW2Rlc2NyaXB0b3JdXS51c2FnZSBjb250YWlucyBSRU5ERVJfQVRUQUNITUVOVDoi
CisgICAgc3RkOjpvcHRpb25hbDxXR1BVRXh0ZW50M0Q+IHJlbmRlckV4dGVudDsKKyAgICBpZiAg
KG1fZGVzY3JpcHRvci51c2FnZSAmIFdHUFVUZXh0dXJlVXNhZ2VfUmVuZGVyQXR0YWNobWVudCkg
eworICAgICAgICAvLyAiTGV0IHJlbmRlckV4dGVudCBiZSBjb21wdXRlIHJlbmRlciBleHRlbnQo
dGhpcy5bW2Rlc2NyaXB0b3JdXS5zaXplLCBkZXNjcmlwdG9yLmJhc2VNaXBMZXZlbCkuIgorICAg
ICAgICAvLyAiU2V0IHZpZXcuW1tyZW5kZXJFeHRlbnRdXSB0byByZW5kZXJFeHRlbnQuIgorICAg
ICAgICByZW5kZXJFeHRlbnQgPSBjb21wdXRlUmVuZGVyRXh0ZW50KG1fZGVzY3JpcHRvci5zaXpl
LCBkZXNjcmlwdG9yLT5iYXNlTWlwTGV2ZWwpOworICAgIH0KKworICAgIC8vICJSZXR1cm4gdmll
dy4iCisgICAgcmV0dXJuIFRleHR1cmVWaWV3OjpjcmVhdGUodGV4dHVyZSwgKmRlc2NyaXB0b3Is
IHJlbmRlckV4dGVudCk7CiB9CiAKIHZvaWQgVGV4dHVyZTo6ZGVzdHJveSgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5oIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvVGV4dHVyZVZpZXcuaAppbmRleCA3MTEyNDE4YThjOWQ3YzM1YWQ0NjcwNjExNWM3MWU5YjE4
ZGYyZTFlLi5iMDViNGIwM2I4ODYyMDM4ZGVmZjQ5NzMwNjNhYWU0Mjg5M2FhY2NkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5oCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1RleHR1cmVWaWV3LmgKQEAgLTM0LDEyICszNCwxNCBAQCBzdHJ1Y3QgV0dQVVRl
eHR1cmVWaWV3SW1wbCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCitjbGFzcyBUZXh0dXJlOwor
CiBjbGFzcyBUZXh0dXJlVmlldyA6IHB1YmxpYyBXR1BVVGV4dHVyZVZpZXdJbXBsLCBwdWJsaWMg
UmVmQ291bnRlZDxUZXh0dXJlVmlldz4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8VGV4dHVyZVZpZXc+IGNyZWF0ZShpZDxNVExUZXh0dXJl
PiB0ZXh0dXJlKQorICAgIHN0YXRpYyBSZWY8VGV4dHVyZVZpZXc+IGNyZWF0ZShpZDxNVExUZXh0
dXJlPiB0ZXh0dXJlLCBjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
LCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdHUFVFeHRlbnQzRD4mIHJlbmRlckV4dGVudCkKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHR1cmVWaWV3KHRleHR1cmUpKTsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVGV4dHVyZVZpZXcodGV4dHVyZSwgZGVzY3JpcHRv
ciwgcmVuZGVyRXh0ZW50KSk7CiAgICAgfQogCiAgICAgflRleHR1cmVWaWV3KCk7CkBAIC00Nywx
MSArNDksMTYgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAg
aWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZTsgfQorICAg
IGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGRlc2NyaXB0b3IoKSBjb25zdCB7IHJl
dHVybiBtX2Rlc2NyaXB0b3I7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFdHUFVFeHRlbnQz
RD4mIHJlbmRlckV4dGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyRXh0ZW50OyB9CiAKIHBy
aXZhdGU6Ci0gICAgVGV4dHVyZVZpZXcoaWQ8TVRMVGV4dHVyZT4pOworICAgIFRleHR1cmVWaWV3
KGlkPE1UTFRleHR1cmU+LCBjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJiwgY29uc3Qg
c3RkOjpvcHRpb25hbDxXR1BVRXh0ZW50M0Q+Jik7CiAKICAgICBjb25zdCBpZDxNVExUZXh0dXJl
PiBtX3RleHR1cmUgeyBuaWwgfTsKKworICAgIGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0
b3IgbV9kZXNjcmlwdG9yOworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V0dQVUV4dGVudDNEPiBt
X3JlbmRlckV4dGVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQ
VS9UZXh0dXJlVmlldy5tbQppbmRleCBhYTdkY2VkMWJlMzZlZWM3NWY2OTkwZDY3NjE1YzY1Y2Qw
Y2FiNWQzLi5jNzJlMWU2ZWViMmM5NjRiNWIyZGI1MzEyNTA0ZjNlN2JlNjUxNDJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
R1BVL1dlYkdQVS9UZXh0dXJlVmlldy5tbQpAQCAtMzAsOCArMzAsMTAgQEAKIAogbmFtZXNwYWNl
IFdlYkdQVSB7CiAKLVRleHR1cmVWaWV3OjpUZXh0dXJlVmlldyhpZDxNVExUZXh0dXJlPiB0ZXh0
dXJlKQorVGV4dHVyZVZpZXc6OlRleHR1cmVWaWV3KGlkPE1UTFRleHR1cmU+IHRleHR1cmUsIGNv
bnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V0dQVUV4dGVudDNEPiYgcmVuZGVyRXh0ZW50KQogICAgIDogbV90ZXh0dXJlKHRleHR1
cmUpCisgICAgLCBtX2Rlc2NyaXB0b3IoZGVzY3JpcHRvcikKKyAgICAsIG1fcmVuZGVyRXh0ZW50
KHJlbmRlckV4dGVudCkKIHsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455866</attachid>
            <date>2022-03-27 11:17:06 -0700</date>
            <delta_ts>2022-03-27 18:47:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238311-20220327111705.patch</filename>
            <type>text/plain</type>
            <size>53017</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxOTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IGM1NjEwYTBlNzRjOGQwYjAx
ZTc4YTI3ZTg2N2FmMGIyOTQ3YzdlMzUuLjcxNDlmOWVhY2ZjODczNjZjMzlhYWExNGM4MWY1OGNl
NzYwNmZkZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJHUFUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMjItMDMtMjcgIE15bGVzIEMu
IE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViR1BVXSBJbXBs
ZW1lbnQgVGV4dHVyZTo6Y3JlYXRlVmlldygpIGFjY29yZGluZyB0byB0aGUgc3BlYworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MzExCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbXBs
ZW1lbnRzIHRleHR1cmUgdmlld3MsIHdoaWNoIGFyZSB0aGUgb2JqZWN0cyB0aGF0IGdldCBib3Vu
ZCB0byBwaXBlbGluZXMgKHJhdGhlcgorICAgICAgICB0aGFuIHRleHR1cmVzIHRoZW1zZWx2ZXMp
LiBJdCBsaW5rcyB0byB0aGUgc3BlYyB3aGVyZSByZWxldmFudCwgYW5kIHF1b3RlcyB0aGUgc3Bl
YyBpbiBjb21tZW50cworICAgICAgICB3aGVyZSByZWxldmFudC4KKworICAgICAgICBUZXN0OiBh
cGkvdmFsaWRhdGlvbi9jcmVhdGVWaWV3LnNwZWMudHMKKworICAgICAgICAqIFdlYkdQVS9CdWZm
ZXIubW06CisgICAgICAgIChXZWJHUFU6OkJ1ZmZlcjo6bWFwQXN5bmMpOgorICAgICAgICAoV2Vi
R1BVOjpCdWZmZXI6OnVubWFwKToKKyAgICAgICAgKiBXZWJHUFUvQ29tbWFuZEVuY29kZXIubW06
CisgICAgICAgIChXZWJHUFU6OkNvbW1hbmRFbmNvZGVyOjpjb3B5QnVmZmVyVG9CdWZmZXIpOgor
ICAgICAgICAoV2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6Y2xlYXJCdWZmZXIpOgorICAgICAgICAo
V2ViR1BVOjpDb21tYW5kRW5jb2Rlcjo6ZmluaXNoKToKKyAgICAgICAgKiBXZWJHUFUvUXVldWUu
bW06CisgICAgICAgIChXZWJHUFU6OlF1ZXVlOjpzdWJtaXQpOgorICAgICAgICAqIFdlYkdQVS9T
YW1wbGVyLm1tOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVNhbXBsZXIpOgorICAg
ICAgICAqIFdlYkdQVS9UZXh0dXJlLmg6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OmNyZWF0
ZSk6CisgICAgICAgICogV2ViR1BVL1RleHR1cmUubW06CisgICAgICAgIChXZWJHUFU6OmZlYXR1
cmVSZXF1aXJlbWVudEZvckZvcm1hdCk6CisgICAgICAgIChXZWJHUFU6OnN0ZW5jaWxPbmx5QXNw
ZWN0Rm9ybWF0KToKKyAgICAgICAgKFdlYkdQVTo6ZGVwdGhPbmx5QXNwZWN0Rm9ybWF0KToKKyAg
ICAgICAgKFdlYkdQVTo6RGV2aWNlOjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkdQVTo6
VGV4dHVyZTo6VGV4dHVyZSk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OnJlc29sdmVUZXh0
dXJlVmlld0Rlc2NyaXB0b3JEZWZhdWx0cyBjb25zdCk6CisgICAgICAgIChXZWJHUFU6OlRleHR1
cmU6OmFycmF5TGF5ZXJDb3VudCBjb25zdCk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OnZh
bGlkYXRlQ3JlYXRlVmlldyBjb25zdCk6CisgICAgICAgIChXZWJHUFU6OmNvbXB1dGVSZW5kZXJF
eHRlbnQpOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlOjpjcmVhdGVWaWV3KToKKyAgICAgICAg
KiBXZWJHUFUvVGV4dHVyZVZpZXcuaDoKKyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZVZpZXc6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmVWaWV3OjpkZXNjcmlwdG9yIGNvbnN0KToK
KyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZVZpZXc6OnJlbmRlckV4dGVudCBjb25zdCk6CisgICAg
ICAgICogV2ViR1BVL1RleHR1cmVWaWV3Lm1tOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlVmll
dzo6VGV4dHVyZVZpZXcpOgorCiAyMDIyLTAzLTI1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhm
aWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkdQVV0gUmVtb3ZlIGRlZmF1bHQ6IGZyb20g
c3dpdGNoIHN0YXRlbWVudHMsIGluIGZhdm9yIG9mIGV4aGF1c3RpdmVseSBsaXN0aW5nIGFsbCBj
YXNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxlci5tbSBiL1NvdXJj
ZS9XZWJHUFUvV2ViR1BVL1NhbXBsZXIubW0KaW5kZXggODI3MzkwNDk5NGNiNzA5ZjA5NGUyNDU4
Nzk5YWNlYzY3NzU4OWI3Mi4uMGE1ZjZmZWJjMGE2Y2RhMzUzOGQ5ZDMzMDA5MmEzZTRhOTljNWE5
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvU2FtcGxlci5tbQorKysgYi9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9TYW1wbGVyLm1tCkBAIC0xNDUsMzIgKzE0NSwzMiBAQCBSZWZQdHI8
U2FtcGxlcj4gRGV2aWNlOjpjcmVhdGVTYW1wbGVyKGNvbnN0IFdHUFVTYW1wbGVyRGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKICAgICBNVExTYW1wbGVyRGVzY3JpcHRvciAqc2FtcGxlckRlc2NyaXB0
b3IgPSBbTVRMU2FtcGxlckRlc2NyaXB0b3IgbmV3XTsKIAogICAgIGlmIChhdXRvIGFkZHJlc3NN
b2RlID0gV2ViR1BVOjphZGRyZXNzTW9kZShkZXNjcmlwdG9yLmFkZHJlc3NNb2RlVSkpCi0gICAg
ICAgIHNhbXBsZXJEZXNjcmlwdG9yLnJBZGRyZXNzTW9kZSA9IGFkZHJlc3NNb2RlLnZhbHVlKCk7
CisgICAgICAgIHNhbXBsZXJEZXNjcmlwdG9yLnJBZGRyZXNzTW9kZSA9ICphZGRyZXNzTW9kZTsK
ICAgICBlbHNlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKGF1dG8gYWRkcmVz
c01vZGUgPSBXZWJHUFU6OmFkZHJlc3NNb2RlKGRlc2NyaXB0b3IuYWRkcmVzc01vZGVWKSkKLSAg
ICAgICAgc2FtcGxlckRlc2NyaXB0b3Iuc0FkZHJlc3NNb2RlID0gYWRkcmVzc01vZGUudmFsdWUo
KTsKKyAgICAgICAgc2FtcGxlckRlc2NyaXB0b3Iuc0FkZHJlc3NNb2RlID0gKmFkZHJlc3NNb2Rl
OwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAoYXV0byBhZGRy
ZXNzTW9kZSA9IFdlYkdQVTo6YWRkcmVzc01vZGUoZGVzY3JpcHRvci5hZGRyZXNzTW9kZVcpKQot
ICAgICAgICBzYW1wbGVyRGVzY3JpcHRvci50QWRkcmVzc01vZGUgPSBhZGRyZXNzTW9kZS52YWx1
ZSgpOworICAgICAgICBzYW1wbGVyRGVzY3JpcHRvci50QWRkcmVzc01vZGUgPSAqYWRkcmVzc01v
ZGU7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIG1p
bk1hZ0ZpbHRlciA9IFdlYkdQVTo6bWluTWFnRmlsdGVyKGRlc2NyaXB0b3IubWFnRmlsdGVyKSkK
LSAgICAgICAgc2FtcGxlckRlc2NyaXB0b3IubWFnRmlsdGVyID0gbWluTWFnRmlsdGVyLnZhbHVl
KCk7CisgICAgICAgIHNhbXBsZXJEZXNjcmlwdG9yLm1hZ0ZpbHRlciA9ICptaW5NYWdGaWx0ZXI7
CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIG1pbk1h
Z0ZpbHRlciA9IFdlYkdQVTo6bWluTWFnRmlsdGVyKGRlc2NyaXB0b3IubWluRmlsdGVyKSkKLSAg
ICAgICAgc2FtcGxlckRlc2NyaXB0b3IubWluRmlsdGVyID0gbWluTWFnRmlsdGVyLnZhbHVlKCk7
CisgICAgICAgIHNhbXBsZXJEZXNjcmlwdG9yLm1pbkZpbHRlciA9ICptaW5NYWdGaWx0ZXI7CiAg
ICAgZWxzZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmIChhdXRvIG1pcEZpbHRl
ciA9IFdlYkdQVTo6bWlwRmlsdGVyKGRlc2NyaXB0b3IubWlwbWFwRmlsdGVyKSkKLSAgICAgICAg
c2FtcGxlckRlc2NyaXB0b3IubWlwRmlsdGVyID0gbWlwRmlsdGVyLnZhbHVlKCk7CisgICAgICAg
IHNhbXBsZXJEZXNjcmlwdG9yLm1pcEZpbHRlciA9ICptaXBGaWx0ZXI7CiAgICAgZWxzZQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTc5LDcgKzE3OSw3IEBAIFJlZlB0cjxTYW1wbGVy
PiBEZXZpY2U6OmNyZWF0ZVNhbXBsZXIoY29uc3QgV0dQVVNhbXBsZXJEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yKQogICAgIHNhbXBsZXJEZXNjcmlwdG9yLmxvZE1heENsYW1wID0gZGVzY3JpcHRvci5s
b2RNYXhDbGFtcDsKIAogICAgIGlmIChhdXRvIGNvbXBhcmVGdW5jdGlvbiA9IFdlYkdQVTo6Y29t
cGFyZUZ1bmN0aW9uKGRlc2NyaXB0b3IuY29tcGFyZSkpCi0gICAgICAgIHNhbXBsZXJEZXNjcmlw
dG9yLmNvbXBhcmVGdW5jdGlvbiA9IGNvbXBhcmVGdW5jdGlvbi52YWx1ZSgpOworICAgICAgICBz
YW1wbGVyRGVzY3JpcHRvci5jb21wYXJlRnVuY3Rpb24gPSAqY29tcGFyZUZ1bmN0aW9uOwogICAg
IGVsc2UKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1RleHR1cmUuaCBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUuaAppbmRl
eCA5YTU5NzhkNzM5MTJjOTkxZTRiNDNiY2VkMjc5ZDExZDNlYmI3NDA1Li4xNTExMjljMTA1N2Vi
OWU1NTFiMWNhNzlhY2JhNzI4YWJmZWU4ZTQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9UZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5oCkBAIC0z
NSwxNCArMzUsMTUgQEAgc3RydWN0IFdHUFVUZXh0dXJlSW1wbCB7CiAKIG5hbWVzcGFjZSBXZWJH
UFUgewogCitjbGFzcyBEZXZpY2U7CiBjbGFzcyBUZXh0dXJlVmlldzsKIAogY2xhc3MgVGV4dHVy
ZSA6IHB1YmxpYyBXR1BVVGV4dHVyZUltcGwsIHB1YmxpYyBSZWZDb3VudGVkPFRleHR1cmU+IHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFRl
eHR1cmU+IGNyZWF0ZShpZDxNVExUZXh0dXJlPiB0ZXh0dXJlLCBjb25zdCBXR1BVVGV4dHVyZURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCisgICAgc3RhdGljIFJlZjxUZXh0dXJlPiBjcmVhdGUoaWQ8
TVRMVGV4dHVyZT4gdGV4dHVyZSwgY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yLCBEZXZpY2UmIGRldmljZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFRleHR1cmUodGV4dHVyZSwgZGVzY3JpcHRvcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBUZXh0dXJlKHRleHR1cmUsIGRlc2NyaXB0b3IsIGRldmljZSkpOwogICAgIH0KIAogICAg
IH5UZXh0dXJlKCk7CkBAIC01MSwxNSArNTIsMjcgQEAgcHVibGljOgogICAgIHZvaWQgZGVzdHJv
eSgpOwogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCisgICAgc3RhdGljIHVpbnQzMl90
IHRleGVsQmxvY2tXaWR0aChXR1BVVGV4dHVyZUZvcm1hdCk7CisgICAgc3RhdGljIHVpbnQzMl90
IHRleGVsQmxvY2tIZWlnaHQoV0dQVVRleHR1cmVGb3JtYXQpOworICAgIHN0YXRpYyBib29sIGNv
bnRhaW5zRGVwdGhBc3BlY3QoV0dQVVRleHR1cmVGb3JtYXQpOworICAgIHN0YXRpYyBib29sIGNv
bnRhaW5zU3RlbmNpbEFzcGVjdChXR1BVVGV4dHVyZUZvcm1hdCk7CisgICAgc3RhdGljIGJvb2wg
aXNEZXB0aE9yU3RlbmNpbEZvcm1hdChXR1BVVGV4dHVyZUZvcm1hdCk7CisKICAgICBpZDxNVExU
ZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlOyB9CiAgICAgY29uc3Qg
V0dQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZXNj
cmlwdG9yOyB9CiAKIHByaXZhdGU6Ci0gICAgVGV4dHVyZShpZDxNVExUZXh0dXJlPiwgY29uc3Qg
V0dQVVRleHR1cmVEZXNjcmlwdG9yJik7CisgICAgVGV4dHVyZShpZDxNVExUZXh0dXJlPiwgY29u
c3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yJiwgRGV2aWNlJik7CisKKyAgICBzdGQ6Om9wdGlvbmFs
PFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3I+IHJlc29sdmVUZXh0dXJlVmlld0Rlc2NyaXB0b3JE
ZWZhdWx0cyhjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJikgY29uc3Q7CisgICAgdWlu
dDMyX3QgYXJyYXlMYXllckNvdW50KCkgY29uc3Q7CisgICAgYm9vbCB2YWxpZGF0ZUNyZWF0ZVZp
ZXcoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYpIGNvbnN0OwogCiAgICAgY29uc3Qg
aWQ8TVRMVGV4dHVyZT4gbV90ZXh0dXJlIHsgbmlsIH07CiAKICAgICBjb25zdCBXR1BVVGV4dHVy
ZURlc2NyaXB0b3IgbV9kZXNjcmlwdG9yIHsgfTsgLy8gIlRoZSBHUFVUZXh0dXJlRGVzY3JpcHRv
ciBkZXNjcmliaW5nIHRoaXMgdGV4dHVyZS4iCisKKyAgICBjb25zdCBSZWY8RGV2aWNlPiBtX2Rl
dmljZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvVGV4dHVyZS5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0K
aW5kZXggOGY1NGZjZDdjMTg4MzkzZmQ2Y2I1YTQ2N2Q5ZTQ0NjY2OTc3OTJiMi4uODg2ZGI4ZWQ0
NmFiNzU1NjMzMWMwYzZhYjg4MmM5OTU3M2IzYjM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQ
VS9XZWJHUFUvVGV4dHVyZS5tbQorKysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1t
CkBAIC0zNiw2ICszNiwxMCBAQCBuYW1lc3BhY2UgV2ViR1BVIHsKIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFdHUFVGZWF0dXJlTmFtZT4gZmVhdHVyZVJlcXVpcmVtZW50Rm9yRm9ybWF0KFdHUFVUZXh0
dXJlRm9ybWF0IGZvcm1hdCkKIHsKICAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfRGVwdGgyNFVub3JtU3RlbmNpbDg6IC8vIEZJWE1FOiBUaGlzIGhhcyB0
byBiZSBndWFyZGVkIGJ5IE1UTERldmljZS5kZXB0aDI0U3RlbmNpbDhQaXhlbEZvcm1hdFN1cHBv
cnRlZAorICAgICAgICByZXR1cm4gV0dQVUZlYXR1cmVOYW1lX0RlcHRoMjRVbm9ybVN0ZW5jaWw4
OworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgzMkZsb2F0U3RlbmNpbDg6CisgICAg
ICAgIHJldHVybiBXR1BVRmVhdHVyZU5hbWVfRGVwdGgzMkZsb2F0U3RlbmNpbDg7CiAgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzFSR0JBVW5vcm06CiAgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9CQzFSR0JBVW5vcm1TcmdiOgogICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMyUkdC
QVVub3JtOgpAQCAtMTMyLDkgKzEzNiw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFdHUFVGZWF0
dXJlTmFtZT4gZmVhdHVyZVJlcXVpcmVtZW50Rm9yRm9ybWF0KFdHUFVUZXh0dXJlRm9yCiAgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDE2VW5vcm06CiAgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9EZXB0aDI0UGx1czoKICAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMjRQ
bHVzU3RlbmNpbDg6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDI0VW5vcm1TdGVu
Y2lsODoKICAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMzJGbG9hdDoKLSAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMzJGbG9hdFN0ZW5jaWw4OgogICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfRm9yY2UzMjoKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CkBAIC0yNDcsMTE0ICsyNDksNyBAQCBzdGF0aWMgYm9vbCBpc0NvbXByZXNzZWRGb3JtYXQoV0dQ
VVRleHR1cmVGb3JtYXQgZm9ybWF0KQogICAgIH0KIH0KIAotc3RhdGljIGJvb2wgaXNEZXB0aE9y
U3RlbmNpbEZvcm1hdChXR1BVVGV4dHVyZUZvcm1hdCBmb3JtYXQpCi17Ci0gICAgLy8gaHR0cHM6
Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZGVwdGgtZm9ybWF0cwotICAgIC8vICJBIGRlcHRo
LW9yLXN0ZW5jaWwgZm9ybWF0IGlzIGFueSBmb3JtYXQgd2l0aCBkZXB0aCBhbmQvb3Igc3RlbmNp
bCBhc3BlY3RzLiIKLSAgICBzd2l0Y2ggKGZvcm1hdCkgewotICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfU3RlbmNpbDg6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDE2VW5vcm06
Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDI0UGx1czoKLSAgICBjYXNlIFdHUFVU
ZXh0dXJlRm9ybWF0X0RlcHRoMjRQbHVzU3RlbmNpbDg6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9EZXB0aDI0VW5vcm1TdGVuY2lsODoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0Rl
cHRoMzJGbG9hdDoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMzJGbG9hdFN0ZW5j
aWw4OgotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1Vu
ZGVmaW5lZDoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1I4VW5vcm06Ci0gICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9SOFNub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjhV
aW50OgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjhTaW50OgotICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfUjE2VWludDoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1IxNlNpbnQ6
Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMTZGbG9hdDoKLSAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X1JHOFVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkc4U25vcm06
Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzhVaW50OgotICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfUkc4U2ludDoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1IzMkZsb2F0Ogot
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjMyVWludDoKLSAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X1IzMlNpbnQ6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzE2VWludDoKLSAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMTZTaW50OgotICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfUkcxNkZsb2F0OgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQThVbm9ybToK
LSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkE4VW5vcm1TcmdiOgotICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfUkdCQThTbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JH
QkE4VWludDoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkE4U2ludDoKLSAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0JHUkE4VW5vcm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9CR1JBOFVub3JtU3JnYjoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQjEwQTJVbm9y
bToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMTFCMTBVZmxvYXQ6Ci0gICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9SR0I5RTVVZmxvYXQ6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9SRzMyRmxvYXQ6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzMyVWludDoKLSAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMzJTaW50OgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfUkdCQTE2VWludDoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkExNlNpbnQ6Ci0g
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMTZGbG9hdDoKLSAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X1JHQkEzMkZsb2F0OgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQTMy
VWludDoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkEzMlNpbnQ6Ci0gICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9CQzFSR0JBVW5vcm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9CQzFSR0JBVW5vcm1TcmdiOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMyUkdCQVVu
b3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMyUkdCQVVub3JtU3JnYjoKLSAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDM1JHQkFVbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X0JDM1JHQkFVbm9ybVNyZ2I6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzRS
VW5vcm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzRSU25vcm06Ci0gICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9CQzVSR1Vub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
QkM1UkdTbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNkhSR0JVZmxvYXQ6Ci0g
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzZIUkdCRmxvYXQ6Ci0gICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9CQzdSR0JBVW5vcm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzdS
R0JBVW5vcm1TcmdiOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQjhVbm9ybToK
LSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4VW5vcm1TcmdiOgotICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQjhBMVVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfRVRDMlJHQjhBMVVub3JtU3JnYjoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VU
QzJSR0JBOFVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQkE4VW5vcm1T
cmdiOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRUFDUjExVW5vcm06Ci0gICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9FQUNSMTFTbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0VBQ1JHMTFVbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VBQ1JHMTFTbm9ybToK
LSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM0eDRVbm9ybToKLSAgICBjYXNlIFdHUFVU
ZXh0dXJlRm9ybWF0X0FTVEM0eDRVbm9ybVNyZ2I6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9BU1RDNXg0VW5vcm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNXg0VW5vcm1T
cmdiOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NVVub3JtOgotICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NVVub3JtU3JnYjoKLSAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X0FTVEM2eDVVbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM2eDVV
bm9ybVNyZ2I6Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng2VW5vcm06Ci0gICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng2VW5vcm1TcmdiOgotICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfQVNUQzh4NVVub3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNU
Qzh4NVVub3JtU3JnYjoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDZVbm9ybToK
LSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDZVbm9ybVNyZ2I6Ci0gICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg4VW5vcm06Ci0gICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9BU1RDOHg4VW5vcm1TcmdiOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDVV
bm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg1VW5vcm1TcmdiOgotICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDZVbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0FTVEMxMHg2VW5vcm1TcmdiOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
QVNUQzEweDhVbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg4VW5vcm1T
cmdiOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDEwVW5vcm06Ci0gICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4MTBVbm9ybVNyZ2I6Ci0gICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9BU1RDMTJ4MTBVbm9ybToKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FT
VEMxMngxMFVub3JtU3JnYjoKLSAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMngxMlVu
b3JtOgotICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEyVW5vcm1TcmdiOgotICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRm9yY2UzMjoKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KLX0KLQotc3RhdGljIHVpbnQzMl90IHRleGVsQmxvY2tXaWR0aChXR1BVVGV4dHVyZUZv
cm1hdCBmb3JtYXQpCit1aW50MzJfdCBUZXh0dXJlOjp0ZXhlbEJsb2NrV2lkdGgoV0dQVVRleHR1
cmVGb3JtYXQgZm9ybWF0KQogewogICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3
ZWIvI3RleGVsLWJsb2NrLXdpZHRoCiAgICAgc3dpdGNoIChmb3JtYXQpIHsKQEAgLTQ2OCw3ICsz
NjMsNyBAQCBzdGF0aWMgdWludDMyX3QgdGV4ZWxCbG9ja1dpZHRoKFdHUFVUZXh0dXJlRm9ybWF0
IGZvcm1hdCkKICAgICB9CiB9CiAKLXN0YXRpYyB1aW50MzJfdCB0ZXhlbEJsb2NrSGVpZ2h0KFdH
UFVUZXh0dXJlRm9ybWF0IGZvcm1hdCkKK3VpbnQzMl90IFRleHR1cmU6OnRleGVsQmxvY2tIZWln
aHQoV0dQVVRleHR1cmVGb3JtYXQgZm9ybWF0KQogewogICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdp
dGh1Yi5pby9ncHV3ZWIvI3RleGVsLWJsb2NrLWhlaWdodAogICAgIHN3aXRjaCAoZm9ybWF0KSB7
CkBAIC05NzgsNyArODczLDcgQEAgYm9vbCBEZXZpY2U6OnZhbGlkYXRlQ3JlYXRlVGV4dHVyZShj
b25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICAgICAgLy8gImRlc2NyaXB0b3IuZm9ybWF0IG11c3Qgbm90IGJlIGEg
Y29tcHJlc3NlZCBmb3JtYXQgb3IgZGVwdGgtb3Itc3RlbmNpbCBmb3JtYXQuIgotICAgICAgICBp
ZiAoaXNDb21wcmVzc2VkRm9ybWF0KGRlc2NyaXB0b3IuZm9ybWF0KSB8fCBpc0RlcHRoT3JTdGVu
Y2lsRm9ybWF0KGRlc2NyaXB0b3IuZm9ybWF0KSkKKyAgICAgICAgaWYgKGlzQ29tcHJlc3NlZEZv
cm1hdChkZXNjcmlwdG9yLmZvcm1hdCkgfHwgVGV4dHVyZTo6aXNEZXB0aE9yU3RlbmNpbEZvcm1h
dChkZXNjcmlwdG9yLmZvcm1hdCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgV0dQVVRleHR1cmVEaW1lbnNpb25fMkQ6CkBAIC0xMDAwLDcgKzg5
NSw3IEBAIGJvb2wgRGV2aWNlOjp2YWxpZGF0ZUNyZWF0ZVRleHR1cmUoY29uc3QgV0dQVVRleHR1
cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgICAgIC8vICJkZXNjcmlwdG9yLmZvcm1hdCBtdXN0IG5vdCBiZSBhIGNvbXByZXNzZWQgZm9y
bWF0IG9yIGRlcHRoLW9yLXN0ZW5jaWwgZm9ybWF0LiIKLSAgICAgICAgaWYgKGlzQ29tcHJlc3Nl
ZEZvcm1hdChkZXNjcmlwdG9yLmZvcm1hdCkgfHwgaXNEZXB0aE9yU3RlbmNpbEZvcm1hdChkZXNj
cmlwdG9yLmZvcm1hdCkpCisgICAgICAgIGlmIChpc0NvbXByZXNzZWRGb3JtYXQoZGVzY3JpcHRv
ci5mb3JtYXQpIHx8IFRleHR1cmU6OmlzRGVwdGhPclN0ZW5jaWxGb3JtYXQoZGVzY3JpcHRvci5m
b3JtYXQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIFdHUFVUZXh0dXJlRGltZW5zaW9uX0ZvcmNlMzI6CkBAIC0xMDA4LDExICs5MDMsMTEgQEAg
Ym9vbCBEZXZpY2U6OnZhbGlkYXRlQ3JlYXRlVGV4dHVyZShjb25zdCBXR1BVVGV4dHVyZURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCiAgICAgfQogCiAgICAgLy8gImRlc2NyaXB0b3Iuc2l6ZS53aWR0
aCBtdXN0IGJlIG11bHRpcGxlIG9mIHRleGVsIGJsb2NrIHdpZHRoLiIKLSAgICBpZiAoZGVzY3Jp
cHRvci5zaXplLndpZHRoICUgdGV4ZWxCbG9ja1dpZHRoKGRlc2NyaXB0b3IuZm9ybWF0KSkKKyAg
ICBpZiAoZGVzY3JpcHRvci5zaXplLndpZHRoICUgVGV4dHVyZTo6dGV4ZWxCbG9ja1dpZHRoKGRl
c2NyaXB0b3IuZm9ybWF0KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gImRlc2Ny
aXB0b3Iuc2l6ZS5oZWlnaHQgbXVzdCBiZSBtdWx0aXBsZSBvZiB0ZXhlbCBibG9jayBoZWlnaHQu
IgotICAgIGlmIChkZXNjcmlwdG9yLnNpemUuaGVpZ2h0ICUgdGV4ZWxCbG9ja0hlaWdodChkZXNj
cmlwdG9yLmZvcm1hdCkpCisgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQgJSBUZXh0dXJl
Ojp0ZXhlbEJsb2NrSGVpZ2h0KGRlc2NyaXB0b3IuZm9ybWF0KSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgLy8gIklmIGRlc2NyaXB0b3Iuc2FtcGxlQ291bnQgPiAxOiIKQEAgLTEyOTIs
NiArMTE4Nyw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1UTFBpeGVsRm9ybWF0PiBwaXhlbEZv
cm1hdChXR1BVVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0CiAgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9CQzZIUkdCRmxvYXQ6CiAgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzdSR0JB
VW5vcm06CiAgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzdSR0JBVW5vcm1TcmdiOgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
ICNlbmRpZgogICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRm9yY2UzMjoKQEAgLTEyOTksNTQg
KzExOTUsNTE2IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPE1UTFBpeGVsRm9ybWF0PiBwaXhlbEZv
cm1hdChXR1BVVGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0CiAgICAgfQogfQogCi1zdGF0aWMg
TVRMU3RvcmFnZU1vZGUgc3RvcmFnZU1vZGUoYm9vbCBkZXZpY2VIYXNVbmlmaWVkTWVtb3J5KQor
Ym9vbCBUZXh0dXJlOjpjb250YWluc0RlcHRoQXNwZWN0KFdHUFVUZXh0dXJlRm9ybWF0IHRleHR1
cmVGb3JtYXQpCiB7Ci0gICAgaWYgKGRldmljZUhhc1VuaWZpZWRNZW1vcnkpCi0gICAgICAgIHJl
dHVybiBNVExTdG9yYWdlTW9kZVNoYXJlZDsKLSNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JN
KE1BQ0NBVEFMWVNUKQotICAgIHJldHVybiBNVExTdG9yYWdlTW9kZU1hbmFnZWQ7Ci0jZWxzZQot
ICAgIHJldHVybiBNVExTdG9yYWdlTW9kZVByaXZhdGU7Ci0jZW5kaWYKKyAgICBzd2l0Y2ggKHRl
eHR1cmVGb3JtYXQpIHsKKyAgICAvLyBOb3JtYWwgZm9ybWF0czoKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X1VuZGVmaW5lZDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1I4VW5vcm06
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SOFNub3JtOgorICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfUjhVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjhTaW50OgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjE2VWludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X1IxNlNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMTZGbG9hdDoKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHOFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfUkc4U25vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzhVaW50OgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfUkc4U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X1IzMkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjMyVWludDoKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X1IzMlNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9S
RzE2VWludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMTZTaW50OgorICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfUkcxNkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
UkdCQThVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkE4VW5vcm1TcmdiOgor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQThTbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X1JHQkE4VWludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkE4U2lu
dDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JHUkE4VW5vcm06CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9CR1JBOFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X1JHQjEwQTJVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMTFCMTBVZmxvYXQ6
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0I5RTVVZmxvYXQ6CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9SRzMyRmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzMy
VWludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMzJTaW50OgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfUkdCQTE2VWludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JH
QkExNlNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMTZGbG9hdDoKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkEzMkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfUkdCQTMyVWludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkEzMlNpbnQ6
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBEZXB0aC1zdGVuY2lsIGZvcm1hdHM6Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9TdGVuY2lsODoKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgxNlVub3JtOgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfRGVwdGgyNFBsdXM6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9E
ZXB0aDI0UGx1c1N0ZW5jaWw4OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgyNFVu
b3JtU3RlbmNpbDg6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDMyRmxvYXQ6Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDMyRmxvYXRTdGVuY2lsODoKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgLy8gQ29tcHJlc3NlZCBmb3JtYXRzOgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfQkMxUkdCQVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMx
UkdCQVVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDMlJHQkFVbm9ybToK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDMlJHQkFVbm9ybVNyZ2I6CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9CQzNSR0JBVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9CQzNSR0JBVW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM0UlVub3Jt
OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM0UlNub3JtOgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfQkM1UkdVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNVJH
U25vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzZIUkdCVWZsb2F0OgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfQkM2SFJHQkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfQkM3UkdCQVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM3UkdCQVVu
b3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4VW5vcm06CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVU
ZXh0dXJlRm9ybWF0X0VUQzJSR0I4QTFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0VUQzJSR0I4QTFVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdC
QThVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0JBOFVub3JtU3JnYjoK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VBQ1IxMVVub3JtOgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfRUFDUjExU25vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FQUNS
RzExVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FQUNSRzExU25vcm06CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNHg0VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9BU1RDNHg0VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNU
QzV4NFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NFVub3JtU3JnYjoK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1eDVVbm9ybToKKyAgICBjYXNlIFdHUFVU
ZXh0dXJlRm9ybWF0X0FTVEM1eDVVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9BU1RDNng1VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng1VW5vcm1T
cmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4NlVub3JtOgorICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4NlVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X0FTVEM4eDVVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDVV
bm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg2VW5vcm06CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg2VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfQVNUQzh4OFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNU
Qzh4OFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg1VW5vcm06
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NVVub3JtU3JnYjoKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg2VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9BU1RDMTB4NlVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMx
MHg4VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4OFVub3JtU3JnYjoK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHgxMFVub3JtOgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfQVNUQzEweDEwVW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfQVNUQzEyeDEwVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4
MTBVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTJVbm9ybToK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMngxMlVub3JtU3JnYjoKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0ZvcmNlMzI6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CiB9CiAKLVJlZlB0cjxUZXh0dXJlPiBEZXZpY2U6OmNyZWF0ZVRleHR1cmUoY29uc3QgV0dQVVRl
eHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBUZXh0dXJlOjpjb250YWluc1N0ZW5j
aWxBc3BlY3QoV0dQVVRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdCkKIHsKLSAgICBpZiAoZGVz
Y3JpcHRvci5uZXh0SW5DaGFpbikKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0KLSAgICAvLyBo
dHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNkb20tZ3B1ZGV2aWNlLWNyZWF0ZXRleHR1
cmUKLQotICAgIC8vICJJZiBkZXNjcmlwdG9yLmZvcm1hdCBpcyBhIEdQVVRleHR1cmVGb3JtYXQg
dGhhdCByZXF1aXJlcyBhIGZlYXR1cmUgKHNlZSDCp+KArzI1LjEgVGV4dHVyZSBGb3JtYXQgQ2Fw
YWJpbGl0aWVzKQotICAgIGlmIChmZWF0dXJlUmVxdWlyZW1lbnRGb3JGb3JtYXQoZGVzY3JpcHRv
ci5mb3JtYXQpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiAiYnV0IHRoaXMuW1tkZXZpY2VdXS5bW2Zl
YXR1cmVzXV0gZG9lcyBub3QgY29udGFpbiB0aGUgZmVhdHVyZSwgdGhyb3cgYSBUeXBlRXJyb3Iu
IgotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICAvLyAiSWYgYW55IG9mIHRo
ZSBmb2xsb3dpbmcgcmVxdWlyZW1lbnRzIGFyZSB1bm1ldDoiCi0gICAgaWYgKCF2YWxpZGF0ZUNy
ZWF0ZVRleHR1cmUoZGVzY3JpcHRvcikpIHsKLSAgICAgICAgLy8gIkdlbmVyYXRlIGEgdmFsaWRh
dGlvbiBlcnJvci4iCi0gICAgICAgIGdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlv
biBmYWlsdXJlLiJfcyk7Ci0gICAgICAgIC8vIEZJWE1FOiAiUmV0dXJuIGEgbmV3IGludmFsaWQg
R1BVVGV4dHVyZS4iCi0gICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0KLQotICAgIE1UTFRl
eHR1cmVEZXNjcmlwdG9yICp0ZXh0dXJlRGVzY3JpcHRvciA9IFtNVExUZXh0dXJlRGVzY3JpcHRv
ciBuZXddOwotCi0gICAgdGV4dHVyZURlc2NyaXB0b3IudXNhZ2UgPSB1c2FnZShkZXNjcmlwdG9y
LnVzYWdlKTsKLQotICAgIHN3aXRjaCAoZGVzY3JpcHRvci5kaW1lbnNpb24pIHsKLSAgICBjYXNl
IFdHUFVUZXh0dXJlRGltZW5zaW9uXzFEOgotICAgICAgICB0ZXh0dXJlRGVzY3JpcHRvci53aWR0
aCA9IGRlc2NyaXB0b3Iuc2l6ZS53aWR0aDsKLSAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS5k
ZXB0aE9yQXJyYXlMYXllcnMgPiAxKSB7Ci0gICAgICAgICAgICB0ZXh0dXJlRGVzY3JpcHRvci50
ZXh0dXJlVHlwZSA9IE1UTFRleHR1cmVUeXBlMURBcnJheTsKLSAgICAgICAgICAgIHRleHR1cmVE
ZXNjcmlwdG9yLmFycmF5TGVuZ3RoID0gZGVzY3JpcHRvci5zaXplLmRlcHRoT3JBcnJheUxheWVy
czsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB0ZXh0dXJlRGVzY3JpcHRvci50ZXh0dXJl
VHlwZSA9IE1UTFRleHR1cmVUeXBlMUQ7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgV0dQVVRl
eHR1cmVEaW1lbnNpb25fMkQ6Ci0gICAgICAgIHRleHR1cmVEZXNjcmlwdG9yLndpZHRoID0gZGVz
Y3JpcHRvci5zaXplLndpZHRoOwotICAgICAgICB0ZXh0dXJlRGVzY3JpcHRvci5oZWlnaHQgPSBk
ZXNjcmlwdG9yLnNpemUuaGVpZ2h0OworICAgIHN3aXRjaCAodGV4dHVyZUZvcm1hdCkgeworICAg
IC8vIE5vcm1hbCBmb3JtYXRzOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfVW5kZWZpbmVk
OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjhVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X1I4U25vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SOFVpbnQ6Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SOFNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9SMTZVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjE2U2ludDoKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X1IxNkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfUkc4VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzhTbm9ybToKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHOFVpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9SRzhTaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjMyRmxvYXQ6CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9SMzJVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
UjMyU2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMTZVaW50OgorICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfUkcxNlNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9S
RzE2RmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBOFVub3JtOgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQThVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9SR0JBOFNub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQThVaW50
OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQThTaW50OgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfQkdSQThVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JHUkE4
VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCMTBBMlVub3JtOgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkcxMUIxMFVmbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X1JHQjlFNVVmbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMzJG
bG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMzJVaW50OgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfUkczMlNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JB
MTZVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQTE2U2ludDoKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X1JHQkExNkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfUkdCQTMyRmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMzJVaW50Ogor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQTMyU2ludDoKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIC8vIERlcHRoLXN0ZW5jaWwgZm9ybWF0czoKKyAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X1N0ZW5jaWw4OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0RlcHRoMTZVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRo
MjRQbHVzOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9EZXB0aDI0UGx1c1N0ZW5jaWw4OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgy
NFVub3JtU3RlbmNpbDg6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfRGVwdGgzMkZsb2F0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9EZXB0aDMyRmxvYXRTdGVuY2lsODoKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgLy8gQ29tcHJlc3NlZCBmb3JtYXRzOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfQkMxUkdCQVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMxUkdCQVVub3Jt
U3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDMlJHQkFVbm9ybToKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0JDMlJHQkFVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9CQzNSR0JBVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzNSR0JB
VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM0UlVub3JtOgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfQkM0UlNub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfQkM1UkdVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNVJHU25vcm06Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzZIUkdCVWZsb2F0OgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfQkM2SFJHQkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM3
UkdCQVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM3UkdCQVVub3JtU3JnYjoK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4VW5vcm06CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9FVEMyUkdCOFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X0VUQzJSR0I4QTFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4
QTFVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCQThVbm9ybToK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0JBOFVub3JtU3JnYjoKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0VBQ1IxMVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfRUFDUjExU25vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FQUNSRzExVW5vcm06
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FQUNSRzExU25vcm06CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDNHg0VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9B
U1RDNHg0VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NFVub3Jt
OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NFVub3JtU3JnYjoKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1eDVVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X0FTVEM1eDVVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng1
VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng1VW5vcm1TcmdiOgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4NlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfQVNUQzZ4NlVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FT
VEM4eDVVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDVVbm9ybVNyZ2I6
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg2VW5vcm06CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDOHg2VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfQVNUQzh4OFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4OFVub3Jt
U3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg1VW5vcm06CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NVVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0FTVEMxMHg2VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RD
MTB4NlVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg4VW5vcm06
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4OFVub3JtU3JnYjoKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHgxMFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfQVNUQzEweDEwVW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNU
QzEyeDEwVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTBVbm9ybVNy
Z2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTJVbm9ybToKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMngxMlVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0ZvcmNlMzI6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jv
b2wgVGV4dHVyZTo6aXNEZXB0aE9yU3RlbmNpbEZvcm1hdChXR1BVVGV4dHVyZUZvcm1hdCBmb3Jt
YXQpCit7CisgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZGVwdGgtZm9y
bWF0cworICAgIC8vICJBIGRlcHRoLW9yLXN0ZW5jaWwgZm9ybWF0IGlzIGFueSBmb3JtYXQgd2l0
aCBkZXB0aCBhbmQvb3Igc3RlbmNpbCBhc3BlY3RzLiIKKyAgICByZXR1cm4gY29udGFpbnNEZXB0
aEFzcGVjdChmb3JtYXQpIHx8IGNvbnRhaW5zU3RlbmNpbEFzcGVjdChmb3JtYXQpOworfQorCitz
dGF0aWMgc3RkOjpvcHRpb25hbDxNVExQaXhlbEZvcm1hdD4gZGVwdGhPbmx5QXNwZWN0TWV0YWxG
b3JtYXQoV0dQVVRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKHRl
eHR1cmVGb3JtYXQpIHsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1VuZGVmaW5lZDoKKyAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1I4VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9SOFNub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjhVaW50OgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfUjhTaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
UjE2VWludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1IxNlNpbnQ6CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9SMTZGbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JH
OFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkc4U25vcm06CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9SRzhVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkc4
U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1IzMkZsb2F0OgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfUjMyVWludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1IzMlNp
bnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzE2VWludDoKKyAgICBjYXNlIFdHUFVU
ZXh0dXJlRm9ybWF0X1JHMTZTaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkcxNkZs
b2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQThVbm9ybToKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X1JHQkE4VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfUkdCQThTbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkE4VWludDoKKyAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkE4U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X0JHUkE4VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CR1JBOFVub3Jt
U3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQjEwQTJVbm9ybToKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X1JHMTFCMTBVZmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9SR0I5RTVVZmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzMyRmxvYXQ6
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzMyVWludDoKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X1JHMzJTaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQTE2VWlu
dDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkExNlNpbnQ6CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9SR0JBMTZGbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JH
QkEzMkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQTMyVWludDoKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkEzMlNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9TdGVuY2lsODoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0RlcHRoMTZVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0RlcHRoMjRQbHVzOgorICAgICAgICByZXR1cm4gcGl4ZWxGb3JtYXQodGV4dHVyZUZvcm1hdCk7
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDI0UGx1c1N0ZW5jaWw4OgorICAgICAg
ICBBU1NFUlQocGl4ZWxGb3JtYXQodGV4dHVyZUZvcm1hdCkgPT0gTVRMUGl4ZWxGb3JtYXREZXB0
aDMyRmxvYXRfU3RlbmNpbDgpOworICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXREZXB0aDMy
RmxvYXQ7CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDI0VW5vcm1TdGVuY2lsODoK
KyAgICAgICAgLy8gVGhpcyBpcyBhIGJpdCBzdXJwcmlzaW5nLCBidXQgaXQgc2hvdWxkIGJlIGNv
cnJlY3QuCisgICAgICAgIC8vIFdoZW4gdXNpbmcgdGhlIHZpZXcgYXMgYSByZW5kZXIgdGFyZ2V0
LCB3ZSdsbCBiaW5kIGl0IHRvIE1UTFJlbmRlclBhc3NEZXNjcmlwdG9yLmRlcHRoQXR0YWNobWVu
dCwgd2hpY2ggd2lsbCBpZ25vcmUgdGhlIHN0ZW5jaWwgYml0cy4KKyAgICAgICAgLy8gV2hlbiBh
dHRhY2hpbmcgdGhlIHZpZXcgYXMgYSBzaGFkZXIgcmVzb3VyY2Ugdmlldywgb25seSB0aGUgZGVw
dGggYXNwZWN0IGlzIHZpc2libGUgYW55d2F5LgorICAgICAgICAvLyBXaGVuIGNvcHlpbmcgdG8v
ZnJvbSB0aGUgdGV4dHVyZSwgd2UgY2FuIHVzZSBNVExCbGl0T3B0aW9uLk1UTEJsaXRPcHRpb25E
ZXB0aEZyb21EZXB0aFN0ZW5jaWwgdG8gaWdub3JlIHRoZSBzdGVuY2lsIGJpdHMuCisgICAgICAg
IHJldHVybiBwaXhlbEZvcm1hdCh0ZXh0dXJlRm9ybWF0KTsKKyAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X0RlcHRoMzJGbG9hdDoKKyAgICAgICAgcmV0dXJuIHBpeGVsRm9ybWF0KHRleHR1cmVG
b3JtYXQpOworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgzMkZsb2F0U3RlbmNpbDg6
CisgICAgICAgIHJldHVybiBNVExQaXhlbEZvcm1hdERlcHRoMzJGbG9hdDsKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0JDMVJHQkFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0JDMVJHQkFVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzJSR0JBVW5v
cm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzJSR0JBVW5vcm1TcmdiOgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfQkMzUkdCQVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfQkMzUkdCQVVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNFJV
bm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNFJTbm9ybToKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0JDNVJHVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9C
QzVSR1Nub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM2SFJHQlVmbG9hdDoKKyAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNkhSR0JGbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0JDN1JHQkFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDN1JH
QkFVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOFVub3JtOgor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQjhVbm9ybVNyZ2I6CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOEExVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9FVEMyUkdCOEExVW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRD
MlJHQkE4VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCQThVbm9ybVNy
Z2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FQUNSMTFVbm9ybToKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0VBQ1IxMVNub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
RUFDUkcxMVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRUFDUkcxMVNub3JtOgor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzR4NFVub3JtOgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfQVNUQzR4NFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0FTVEM1eDRVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1eDRVbm9ybVNy
Z2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNXg1VW5vcm06CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9BU1RDNXg1VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfQVNUQzZ4NVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4NVVu
b3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM2eDZVbm9ybToKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM2eDZVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9BU1RDOHg1VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RD
OHg1VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4NlVub3JtOgor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4NlVub3JtU3JnYjoKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0FTVEM4eDhVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0FTVEM4eDhVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NVVu
b3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDVVbm9ybVNyZ2I6CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfQVNUQzEweDZVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9B
U1RDMTB4OFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDhVbm9ybVNy
Z2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4MTBVbm9ybToKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHgxMFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0FTVEMxMngxMFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNU
QzEyeDEwVW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEyVW5v
cm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTJVbm9ybVNyZ2I6CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9Gb3JjZTMyOgorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIH0KK30KKworc3RhdGljIHN0ZDo6b3B0aW9uYWw8TVRMUGl4ZWxGb3JtYXQ+IHN0
ZW5jaWxPbmx5QXNwZWN0TWV0YWxGb3JtYXQoV0dQVVRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1h
dCkKK3sKKyAgICBzd2l0Y2ggKHRleHR1cmVGb3JtYXQpIHsKKyAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X1VuZGVmaW5lZDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1I4VW5vcm06Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SOFNub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfUjhVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjhTaW50OgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfUjE2VWludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X1IxNlNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMTZGbG9hdDoKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X1JHOFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
Ukc4U25vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzhVaW50OgorICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfUkc4U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1Iz
MkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjMyVWludDoKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X1IzMlNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzE2
VWludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMTZTaW50OgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfUkcxNkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdC
QThVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkE4VW5vcm1TcmdiOgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQThTbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X1JHQkE4VWludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkE4U2ludDoK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JHUkE4VW5vcm06CisgICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9CR1JBOFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JH
QjEwQTJVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMTFCMTBVZmxvYXQ6Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0I5RTVVZmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9SRzMyRmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzMyVWlu
dDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMzJTaW50OgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfUkdCQTE2VWludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkEx
NlNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMTZGbG9hdDoKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X1JHQkEzMkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfUkdCQTMyVWludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkEzMlNpbnQ6Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9T
dGVuY2lsODoKKyAgICAgICAgcmV0dXJuIHBpeGVsRm9ybWF0KHRleHR1cmVGb3JtYXQpOworICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgxNlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfRGVwdGgyNFBsdXM6CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDI0UGx1c1N0ZW5jaWw4OgorICAgICAgICBBU1NF
UlQocGl4ZWxGb3JtYXQodGV4dHVyZUZvcm1hdCkgPT0gTVRMUGl4ZWxGb3JtYXREZXB0aDMyRmxv
YXRfU3RlbmNpbDgpOworICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXRYMzJfU3RlbmNpbDg7
CisjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0RlcHRoMjRVbm9ybVN0ZW5jaWw4OgorICAgICAgICByZXR1cm4gTVRM
UGl4ZWxGb3JtYXRYMjRfU3RlbmNpbDg7CisjZWxzZQorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfRGVwdGgyNFVub3JtU3RlbmNpbDg6CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisj
ZW5kaWYKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMzJGbG9hdDoKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMzJG
bG9hdFN0ZW5jaWw4OgorICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXRYMzJfU3RlbmNpbDg7
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzFSR0JBVW5vcm06CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9CQzFSR0JBVW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfQkMyUkdCQVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMyUkdCQVVub3Jt
U3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDM1JHQkFVbm9ybToKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0JDM1JHQkFVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9CQzRSVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzRSU25vcm06
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzVSR1Vub3JtOgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfQkM1UkdTbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNkhS
R0JVZmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzZIUkdCRmxvYXQ6CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzdSR0JBVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9CQzdSR0JBVW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRD
MlJHQjhVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4VW5vcm1Tcmdi
OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQjhBMVVub3JtOgorICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQjhBMVVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0VUQzJSR0JBOFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRD
MlJHQkE4VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRUFDUjExVW5vcm06
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FQUNSMTFTbm9ybToKKyAgICBjYXNlIFdHUFVU
ZXh0dXJlRm9ybWF0X0VBQ1JHMTFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VB
Q1JHMTFTbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM0eDRVbm9ybToKKyAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM0eDRVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDNXg0VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9B
U1RDNXg0VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NVVub3Jt
OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NVVub3JtU3JnYjoKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM2eDVVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X0FTVEM2eDVVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng2
VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng2VW5vcm1TcmdiOgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4NVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfQVNUQzh4NVVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FT
VEM4eDZVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDZVbm9ybVNyZ2I6
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg4VW5vcm06CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDOHg4VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfQVNUQzEweDVVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg1VW5v
cm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDZVbm9ybToKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg2VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfQVNUQzEweDhVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FT
VEMxMHg4VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDEwVW5v
cm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4MTBVbm9ybVNyZ2I6CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTBVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0FTVEMxMngxMFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0FTVEMxMngxMlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEyVW5v
cm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRm9yY2UzMjoKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9Cit9CisKK3N0YXRpYyBNVExTdG9yYWdlTW9kZSBzdG9y
YWdlTW9kZShib29sIGRldmljZUhhc1VuaWZpZWRNZW1vcnkpCit7CisgICAgaWYgKGRldmljZUhh
c1VuaWZpZWRNZW1vcnkpCisgICAgICAgIHJldHVybiBNVExTdG9yYWdlTW9kZVNoYXJlZDsKKyNp
ZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorICAgIHJldHVybiBNVExT
dG9yYWdlTW9kZU1hbmFnZWQ7CisjZWxzZQorICAgIHJldHVybiBNVExTdG9yYWdlTW9kZVByaXZh
dGU7CisjZW5kaWYKK30KKworUmVmUHRyPFRleHR1cmU+IERldmljZTo6Y3JlYXRlVGV4dHVyZShj
b25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgaWYgKGRlc2Ny
aXB0b3IubmV4dEluQ2hhaW4pCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gaHR0
cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jZG9tLWdwdWRldmljZS1jcmVhdGV0ZXh0dXJl
CisKKyAgICAvLyAiSWYgZGVzY3JpcHRvci5mb3JtYXQgaXMgYSBHUFVUZXh0dXJlRm9ybWF0IHRo
YXQgcmVxdWlyZXMgYSBmZWF0dXJlIChzZWUgwqfigK8yNS4xIFRleHR1cmUgRm9ybWF0IENhcGFi
aWxpdGllcykKKyAgICBpZiAoZmVhdHVyZVJlcXVpcmVtZW50Rm9yRm9ybWF0KGRlc2NyaXB0b3Iu
Zm9ybWF0KSkgeworICAgICAgICAvLyBGSVhNRTogImJ1dCB0aGlzLltbZGV2aWNlXV0uW1tmZWF0
dXJlc11dIGRvZXMgbm90IGNvbnRhaW4gdGhlIGZlYXR1cmUsIHRocm93IGEgVHlwZUVycm9yLiIK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorCisgICAgLy8gIklmIGFueSBvZiB0aGUg
Zm9sbG93aW5nIHJlcXVpcmVtZW50cyBhcmUgdW5tZXQ6IgorICAgIGlmICghdmFsaWRhdGVDcmVh
dGVUZXh0dXJlKGRlc2NyaXB0b3IpKSB7CisgICAgICAgIC8vICJHZW5lcmF0ZSBhIHZhbGlkYXRp
b24gZXJyb3IuIgorICAgICAgICBnZW5lcmF0ZUFWYWxpZGF0aW9uRXJyb3IoIlZhbGlkYXRpb24g
ZmFpbHVyZS4iX3MpOworICAgICAgICAvLyBGSVhNRTogIlJldHVybiBhIG5ldyBpbnZhbGlkIEdQ
VVRleHR1cmUuIgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBNVExUZXh0
dXJlRGVzY3JpcHRvciAqdGV4dHVyZURlc2NyaXB0b3IgPSBbTVRMVGV4dHVyZURlc2NyaXB0b3Ig
bmV3XTsKKworICAgIHRleHR1cmVEZXNjcmlwdG9yLnVzYWdlID0gdXNhZ2UoZGVzY3JpcHRvci51
c2FnZSk7CisKKyAgICBzd2l0Y2ggKGRlc2NyaXB0b3IuZGltZW5zaW9uKSB7CisgICAgY2FzZSBX
R1BVVGV4dHVyZURpbWVuc2lvbl8xRDoKKyAgICAgICAgdGV4dHVyZURlc2NyaXB0b3Iud2lkdGgg
PSBkZXNjcmlwdG9yLnNpemUud2lkdGg7CisgICAgICAgIGlmIChkZXNjcmlwdG9yLnNpemUuZGVw
dGhPckFycmF5TGF5ZXJzID4gMSkgeworICAgICAgICAgICAgdGV4dHVyZURlc2NyaXB0b3IudGV4
dHVyZVR5cGUgPSBNVExUZXh0dXJlVHlwZTFEQXJyYXk7CisgICAgICAgICAgICB0ZXh0dXJlRGVz
Y3JpcHRvci5hcnJheUxlbmd0aCA9IGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aE9yQXJyYXlMYXllcnM7
CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGV4dHVyZURlc2NyaXB0b3IudGV4dHVyZVR5
cGUgPSBNVExUZXh0dXJlVHlwZTFEOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRGltZW5zaW9uXzJEOgorICAgICAgICB0ZXh0dXJlRGVzY3JpcHRvci53aWR0aCA9IGRlc2Ny
aXB0b3Iuc2l6ZS53aWR0aDsKKyAgICAgICAgdGV4dHVyZURlc2NyaXB0b3IuaGVpZ2h0ID0gZGVz
Y3JpcHRvci5zaXplLmhlaWdodDsKICAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aE9y
QXJyYXlMYXllcnMgPiAxKSB7CiAgICAgICAgICAgICB0ZXh0dXJlRGVzY3JpcHRvci5hcnJheUxl
bmd0aCA9IGRlc2NyaXB0b3Iuc2l6ZS5kZXB0aE9yQXJyYXlMYXllcnM7CiAgICAgICAgICAgICBp
ZiAoZGVzY3JpcHRvci5zYW1wbGVDb3VudCA+IDEpIHsKQEAgLTEzNzUsNyArMTczMyw3IEBAIFJl
ZlB0cjxUZXh0dXJlPiBEZXZpY2U6OmNyZWF0ZVRleHR1cmUoY29uc3QgV0dQVVRleHR1cmVEZXNj
cmlwdG9yJiBkZXNjcmlwdG9yKQogICAgIH0KIAogICAgIGlmIChhdXRvIHBpeGVsRm9ybWF0ID0g
V2ViR1BVOjpwaXhlbEZvcm1hdChkZXNjcmlwdG9yLmZvcm1hdCkpCi0gICAgICAgIHRleHR1cmVE
ZXNjcmlwdG9yLnBpeGVsRm9ybWF0ID0gcGl4ZWxGb3JtYXQudmFsdWUoKTsKKyAgICAgICAgdGV4
dHVyZURlc2NyaXB0b3IucGl4ZWxGb3JtYXQgPSAqcGl4ZWxGb3JtYXQ7CiAgICAgZWxzZQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIApAQCAtMTM5OCwyMSArMTc1NiwzNTAgQEAgUmVmUHRyPFRl
eHR1cmU+IERldmljZTo6Y3JlYXRlVGV4dHVyZShjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3Im
IGRlc2NyaXB0b3IpCiAgICAgLy8gIlNldCB0LltbZGVzY3JpcHRvcl1dIHRvIGRlc2NyaXB0b3Iu
IgogICAgIC8vICJSZXR1cm4gdC4iCiAKLSAgICByZXR1cm4gVGV4dHVyZTo6Y3JlYXRlKHRleHR1
cmUsIGRlc2NyaXB0b3IpOworICAgIHJldHVybiBUZXh0dXJlOjpjcmVhdGUodGV4dHVyZSwgZGVz
Y3JpcHRvciwgKnRoaXMpOwogfQogCi1UZXh0dXJlOjpUZXh0dXJlKGlkPE1UTFRleHR1cmU+IHRl
eHR1cmUsIGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK1RleHR1cmU6
OlRleHR1cmUoaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSwgY29uc3QgV0dQVVRleHR1cmVEZXNjcmlw
dG9yJiBkZXNjcmlwdG9yLCBEZXZpY2UmIGRldmljZSkKICAgICA6IG1fdGV4dHVyZSh0ZXh0dXJl
KQogICAgICwgbV9kZXNjcmlwdG9yKGRlc2NyaXB0b3IpCisgICAgLCBtX2RldmljZShkZXZpY2Up
CiB7CiB9CiAKIFRleHR1cmU6On5UZXh0dXJlKCkgPSBkZWZhdWx0OwogCi1SZWZQdHI8VGV4dHVy
ZVZpZXc+IFRleHR1cmU6OmNyZWF0ZVZpZXcoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKK3N0ZDo6b3B0aW9uYWw8V0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvcj4g
VGV4dHVyZTo6cmVzb2x2ZVRleHR1cmVWaWV3RGVzY3JpcHRvckRlZmF1bHRzKGNvbnN0IFdHUFVU
ZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0Cit7CisgICAgLy8gaHR0cHM6
Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jYWJzdHJhY3Qtb3BkZWYtcmVzb2x2aW5nLWdwdXRl
eHR1cmV2aWV3ZGVzY3JpcHRvci1kZWZhdWx0cworCisgICAgLy8gIkxldCByZXNvbHZlZCBiZSBh
IGNvcHkgb2YgZGVzY3JpcHRvci4iCisgICAgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciByZXNv
bHZlZCA9IGRlc2NyaXB0b3I7CisKKyAgICAvLyAiSWYgcmVzb2x2ZWQuZm9ybWF0IGlzIHVuZGVm
aW5lZCIKKyAgICBpZiAocmVzb2x2ZWQuZm9ybWF0ID09IFdHUFVUZXh0dXJlRm9ybWF0X1VuZGVm
aW5lZCkgeworICAgICAgICAvLyAic2V0IHJlc29sdmVkLmZvcm1hdCB0byB0ZXh0dXJlLltbZGVz
Y3JpcHRvcl1dLmZvcm1hdC4iCisgICAgICAgIHJlc29sdmVkLmZvcm1hdCA9IG1fZGVzY3JpcHRv
ci5mb3JtYXQ7CisgICAgfQorCisgICAgLy8gIklmIHJlc29sdmVkLm1pcExldmVsQ291bnQgaXMg
dW5kZWZpbmVkIgorICAgIGlmIChyZXNvbHZlZC5taXBMZXZlbENvdW50ID09IFdHUFVfTUlQX0xF
VkVMX0NPVU5UX1VOREVGSU5FRCkgeworICAgICAgICAvLyAic2V0IHJlc29sdmVkLm1pcExldmVs
Q291bnQgdG8gdGV4dHVyZS5bW2Rlc2NyaXB0b3JdXS5taXBMZXZlbENvdW50IOKIkiByZXNvbHZl
ZC5iYXNlTWlwTGV2ZWwuIgorICAgICAgICAvLyBGSVhNRTogVXNlIGNoZWNrZWQgYXJpdGhtZXRp
Yy4KKyAgICAgICAgcmVzb2x2ZWQubWlwTGV2ZWxDb3VudCA9IG1fZGVzY3JpcHRvci5taXBMZXZl
bENvdW50IC0gcmVzb2x2ZWQuYmFzZU1pcExldmVsOworICAgIH0KKworICAgIC8vICJJZiByZXNv
bHZlZC5kaW1lbnNpb24gaXMgdW5kZWZpbmVkIgorICAgIGlmIChyZXNvbHZlZC5kaW1lbnNpb24g
PT0gV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX1VuZGVmaW5lZCkgeworICAgICAgICAvLyAiYW5k
IHRleHR1cmUuW1tkZXNjcmlwdG9yXV0uZGltZW5zaW9uIGlzOiIKKyAgICAgICAgc3dpdGNoICht
X2Rlc2NyaXB0b3IuZGltZW5zaW9uKSB7CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVEaW1lbnNp
b25fMUQ6CisgICAgICAgICAgICAvLyAiU2V0IHJlc29sdmVkLmRpbWVuc2lvbiB0byAiMWQiLiIK
KyAgICAgICAgICAgIHJlc29sdmVkLmRpbWVuc2lvbiA9IFdHUFVUZXh0dXJlVmlld0RpbWVuc2lv
bl8xRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdHUFVUZXh0dXJlRGltZW5z
aW9uXzJEOgorICAgICAgICAgICAgLy8gIlNldCByZXNvbHZlZC5kaW1lbnNpb24gdG8gIjJkIi4i
CisgICAgICAgICAgICByZXNvbHZlZC5kaW1lbnNpb24gPSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNp
b25fMkQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXR1BVVGV4dHVyZURpbWVu
c2lvbl8zRDoKKyAgICAgICAgICAgIC8vICJTZXQgcmVzb2x2ZWQuZGltZW5zaW9uIHRvICIzZCIu
IgorICAgICAgICAgICAgcmVzb2x2ZWQuZGltZW5zaW9uID0gV0dQVVRleHR1cmVWaWV3RGltZW5z
aW9uXzNEOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVEaW1l
bnNpb25fRm9yY2UzMjoKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICAvLyAiSWYgcmVzb2x2ZWQuYXJyYXlMYXllckNvdW50IGlzIHVuZGVm
aW5lZCIKKyAgICBpZiAocmVzb2x2ZWQuYXJyYXlMYXllckNvdW50ID09IFdHUFVfQVJSQVlfTEFZ
RVJfQ09VTlRfVU5ERUZJTkVEKSB7CisgICAgICAgIC8vICJhbmQgcmVzb2x2ZWQuZGltZW5zaW9u
IGlzOiIKKyAgICAgICAgc3dpdGNoIChyZXNvbHZlZC5kaW1lbnNpb24pIHsKKyAgICAgICAgY2Fz
ZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fVW5kZWZpbmVkOgorICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAg
ICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl8xRDoKKyAgICAgICAgY2FzZSBXR1BVVGV4
dHVyZVZpZXdEaW1lbnNpb25fMkQ6CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5z
aW9uXzNEOgorICAgICAgICAgICAgLy8gIlNldCByZXNvbHZlZC5hcnJheUxheWVyQ291bnQgdG8g
MS4iCisgICAgICAgICAgICByZXNvbHZlZC5hcnJheUxheWVyQ291bnQgPSAxOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX0N1YmU6Cisg
ICAgICAgICAgICAvLyAiU2V0IHJlc29sdmVkLmFycmF5TGF5ZXJDb3VudCB0byA2LiIKKyAgICAg
ICAgICAgIHJlc29sdmVkLmFycmF5TGF5ZXJDb3VudCA9IDY7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fMkRBcnJheToKKyAgICAgICAg
Y2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fQ3ViZUFycmF5OgorICAgICAgICAgICAgLy8g
IlNldCByZXNvbHZlZC5hcnJheUxheWVyQ291bnQgdG8gdGV4dHVyZS5bW2Rlc2NyaXB0b3JdXS5z
aXplLmRlcHRoT3JBcnJheUxheWVycyDiiJIgYmFzZUFycmF5TGF5ZXIuIgorICAgICAgICAgICAg
Ly8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMKKyAgICAgICAgICAgIHJlc29sdmVkLmFy
cmF5TGF5ZXJDb3VudCA9IG1fZGVzY3JpcHRvci5zaXplLmRlcHRoT3JBcnJheUxheWVycyAtIHJl
c29sdmVkLmJhc2VBcnJheUxheWVyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
V0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX0ZvcmNlMzI6CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gIlJldHVybiByZXNvbHZlZC4i
CisgICAgcmV0dXJuIHJlc29sdmVkOworfQorCit1aW50MzJfdCBUZXh0dXJlOjphcnJheUxheWVy
Q291bnQoKSBjb25zdAoreworICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIv
I2Fic3RyYWN0LW9wZGVmLWFycmF5LWxheWVyLWNvdW50CisKKyAgICAvLyAiSWYgdGV4dHVyZS5b
W2Rlc2NyaXB0b3JdXS5kaW1lbnNpb24gaXM6IgorICAgIHN3aXRjaCAobV9kZXNjcmlwdG9yLmRp
bWVuc2lvbikgeworICAgIGNhc2UgV0dQVVRleHR1cmVEaW1lbnNpb25fMUQ6CisgICAgICAgIC8v
ICJSZXR1cm4gMS4iCisgICAgICAgIHJldHVybiAxOworICAgIGNhc2UgV0dQVVRleHR1cmVEaW1l
bnNpb25fMkQ6CisgICAgICAgIC8vICJSZXR1cm4gdGV4dHVyZS5bW2Rlc2NyaXB0b3JdXS5zaXpl
LmRlcHRoT3JBcnJheUxheWVycy4iCisgICAgICAgIHJldHVybiBtX2Rlc2NyaXB0b3Iuc2l6ZS5k
ZXB0aE9yQXJyYXlMYXllcnM7CisgICAgY2FzZSBXR1BVVGV4dHVyZURpbWVuc2lvbl8zRDoKKyAg
ICAgICAgLy8gIlJldHVybiAxLiIKKyAgICAgICAgcmV0dXJuIDE7CisgICAgY2FzZSBXR1BVVGV4
dHVyZURpbWVuc2lvbl9Gb3JjZTMyOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIDE7CisgICAgfQorfQorCitib29sIFRleHR1cmU6OnZhbGlkYXRlQ3JlYXRl
Vmlldyhjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAog
ewotICAgIFVOVVNFRF9QQVJBTShkZXNjcmlwdG9yKTsKLSAgICByZXR1cm4gVGV4dHVyZVZpZXc6
OmNyZWF0ZShuaWwpOworICAgIC8vIEZJWE1FOiAidGhpcyBpcyB2YWxpZCIKKworICAgIC8vICJJ
ZiB0aGUgZGVzY3JpcHRvci5hc3BlY3QgaXMiCisgICAgc3dpdGNoIChkZXNjcmlwdG9yLmFzcGVj
dCkgeworICAgIGNhc2UgV0dQVVRleHR1cmVBc3BlY3RfQWxsOgorICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFdHUFVUZXh0dXJlQXNwZWN0X1N0ZW5jaWxPbmx5OgorICAgICAgICAvLyAidGhpcy5b
W2Rlc2NyaXB0b3JdXS5mb3JtYXQgbXVzdCBiZSBhIGRlcHRoLW9yLXN0ZW5jaWwgZm9ybWF0IHdo
aWNoIGhhcyBhIHN0ZW5jaWwgYXNwZWN0LiIKKyAgICAgICAgaWYgKCFjb250YWluc1N0ZW5jaWxB
c3BlY3QobV9kZXNjcmlwdG9yLmZvcm1hdCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgV0dQVVRleHR1cmVBc3BlY3RfRGVwdGhPbmx5OgorICAg
ICAgICAvLyAidGhpcy5bW2Rlc2NyaXB0b3JdXS5mb3JtYXQgbXVzdCBiZSBhIGRlcHRoLW9yLXN0
ZW5jaWwgZm9ybWF0IHdoaWNoIGhhcyBhIGRlcHRoIGFzcGVjdC4iCisgICAgICAgIGlmICghY29u
dGFpbnNEZXB0aEFzcGVjdChtX2Rlc2NyaXB0b3IuZm9ybWF0KSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXR1BVVGV4dHVyZUFzcGVjdF9Gb3Jj
ZTMyOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gImRlc2NyaXB0b3Iu
bWlwTGV2ZWxDb3VudCBtdXN0IGJlID4gMC4iCisgICAgaWYgKCFkZXNjcmlwdG9yLm1pcExldmVs
Q291bnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vICJkZXNjcmlwdG9yLmJhc2VN
aXBMZXZlbCArIGRlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCBtdXN0IGJlIOKJpCB0aGlzLltbZGVz
Y3JpcHRvcl1dLm1pcExldmVsQ291bnQuIgorICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0
aG1ldGljLgorICAgIGlmIChkZXNjcmlwdG9yLmJhc2VNaXBMZXZlbCArIGRlc2NyaXB0b3IubWlw
TGV2ZWxDb3VudCA+IG1fZGVzY3JpcHRvci5taXBMZXZlbENvdW50KQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAvLyAiZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgbXVzdCBiZSA+IDAu
IgorICAgIGlmICghZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIC8vICJkZXNjcmlwdG9yLmJhc2VBcnJheUxheWVyICsgZGVzY3JpcHRvci5h
cnJheUxheWVyQ291bnQgbXVzdCBiZSDiiaQgdGhlIGFycmF5IGxheWVyIGNvdW50IG9mIHRoaXMu
IgorICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljLgorICAgIGlmIChkZXNjcmlw
dG9yLmJhc2VBcnJheUxheWVyICsgZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgPiBhcnJheUxh
eWVyQ291bnQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6ICJkZXNj
cmlwdG9yLmZvcm1hdCBtdXN0IGJlIGVxdWFsIHRvIGVpdGhlciB0aGlzLltbZGVzY3JpcHRvcl1d
LmZvcm1hdCBvciBvbmUgb2YgdGhlIGZvcm1hdHMgaW4gdGhpcy5bW2Rlc2NyaXB0b3JdXS52aWV3
Rm9ybWF0cy4iCisgICAgaWYgKGRlc2NyaXB0b3IuZm9ybWF0ICE9IG1fZGVzY3JpcHRvci5mb3Jt
YXQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vICJJZiBkZXNjcmlwdG9yLmRpbWVu
c2lvbiBpczoiCisgICAgc3dpdGNoIChkZXNjcmlwdG9yLmRpbWVuc2lvbikgeworICAgIGNhc2Ug
V0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX1VuZGVmaW5lZDoKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uXzFEOgorICAgICAgICAvLyAidGhp
cy5bW2Rlc2NyaXB0b3JdXS5kaW1lbnNpb24gbXVzdCBiZSAiMWQiLiIKKyAgICAgICAgaWYgKG1f
ZGVzY3JpcHRvci5kaW1lbnNpb24gIT0gV0dQVVRleHR1cmVEaW1lbnNpb25fMUQpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gImRlc2NyaXB0b3IuYXJyYXlMYXllckNv
dW50IG11c3QgYmUgMS4iCisgICAgICAgIGlmIChkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCAh
PSAxKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl8yRDoKKyAgICAgICAgLy8gInRoaXMuW1tkZXNjcmlw
dG9yXV0uZGltZW5zaW9uIG11c3QgYmUgIjJkIi4iCisgICAgICAgIGlmIChtX2Rlc2NyaXB0b3Iu
ZGltZW5zaW9uICE9IFdHUFVUZXh0dXJlRGltZW5zaW9uXzJEKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgICAgIC8vICJkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCBtdXN0IGJl
IDEuIgorICAgICAgICBpZiAoZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgIT0gMSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXR1BVVGV4dHVy
ZVZpZXdEaW1lbnNpb25fMkRBcnJheToKKyAgICAgICAgLy8gInRoaXMuW1tkZXNjcmlwdG9yXV0u
ZGltZW5zaW9uIG11c3QgYmUgIjJkIi4iCisgICAgICAgIGlmIChtX2Rlc2NyaXB0b3IuZGltZW5z
aW9uICE9IFdHUFVUZXh0dXJlRGltZW5zaW9uXzJEKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl9DdWJl
OgorICAgICAgICAvLyAidGhpcy5bW2Rlc2NyaXB0b3JdXS5kaW1lbnNpb24gbXVzdCBiZSAiMmQi
LiIKKyAgICAgICAgaWYgKG1fZGVzY3JpcHRvci5kaW1lbnNpb24gIT0gV0dQVVRleHR1cmVEaW1l
bnNpb25fMkQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gImRlc2Ny
aXB0b3IuYXJyYXlMYXllckNvdW50IG11c3QgYmUgNi4iCisgICAgICAgIGlmIChkZXNjcmlwdG9y
LmFycmF5TGF5ZXJDb3VudCAhPSA2KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
ICAgIC8vICJ0aGlzLltbZGVzY3JpcHRvcl1dLnNpemUud2lkdGggbXVzdCBiZSB0aGlzLltbZGVz
Y3JpcHRvcl1dLnNpemUuaGVpZ2h0LiIKKyAgICAgICAgaWYgKG1fZGVzY3JpcHRvci5zaXplLndp
ZHRoICE9IG1fZGVzY3JpcHRvci5zaXplLmhlaWdodCkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fQ3Vi
ZUFycmF5OgorICAgICAgICAvLyAidGhpcy5bW2Rlc2NyaXB0b3JdXS5kaW1lbnNpb24gbXVzdCBi
ZSAiMmQiLiIKKyAgICAgICAgaWYgKG1fZGVzY3JpcHRvci5kaW1lbnNpb24gIT0gV0dQVVRleHR1
cmVEaW1lbnNpb25fMkQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8g
ImRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50IG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2LiIKKyAg
ICAgICAgaWYgKGRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50ICUgNikKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICAvLyAidGhpcy5bW2Rlc2NyaXB0b3JdXS5zaXplLndpZHRo
IG11c3QgYmUgdGhpcy5bW2Rlc2NyaXB0b3JdXS5zaXplLmhlaWdodC4iCisgICAgICAgIGlmICht
X2Rlc2NyaXB0b3Iuc2l6ZS53aWR0aCAhPSBtX2Rlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0dQVVRleHR1
cmVWaWV3RGltZW5zaW9uXzNEOgorICAgICAgICAvLyAidGhpcy5bW2Rlc2NyaXB0b3JdXS5kaW1l
bnNpb24gbXVzdCBiZSAiM2QiLiIKKyAgICAgICAgaWYgKG1fZGVzY3JpcHRvci5kaW1lbnNpb24g
IT0gV0dQVVRleHR1cmVEaW1lbnNpb25fM0QpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAgICAgLy8gImRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50IG11c3QgYmUgMS4iCisgICAg
ICAgIGlmIChkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCAhPSAxKQorICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVu
c2lvbl9Gb3JjZTMyOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJu
IHRydWU7Cit9CisKK3N0YXRpYyBXR1BVRXh0ZW50M0QgY29tcHV0ZVJlbmRlckV4dGVudChjb25z
dCBXR1BVRXh0ZW50M0QmIGJhc2VTaXplLCB1aW50MzJfdCBtaXBMZXZlbCkKK3sKKyAgICAvLyBo
dHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNhYnN0cmFjdC1vcGRlZi1jb21wdXRlLXJl
bmRlci1leHRlbnQKKworICAgIC8vICJMZXQgZXh0ZW50IGJlIGEgbmV3IEdQVUV4dGVudDNERGlj
dCBvYmplY3QuIgorICAgIFdHUFVFeHRlbnQzRCBleHRlbnQgeyB9OworCisgICAgLy8gIlNldCBl
eHRlbnQud2lkdGggdG8gbWF4KDEsIGJhc2VTaXplLndpZHRoIOKJqyBtaXBMZXZlbCkuIgorICAg
IGV4dGVudC53aWR0aCA9IHN0ZDo6bWF4KHN0YXRpY19jYXN0PHVpbnQzMl90PigxKSwgYmFzZVNp
emUud2lkdGggPj4gbWlwTGV2ZWwpOworCisgICAgLy8gIlNldCBleHRlbnQuaGVpZ2h0IHRvIG1h
eCgxLCBiYXNlU2l6ZS5oZWlnaHQg4omrIG1pcExldmVsKS4iCisgICAgZXh0ZW50LmhlaWdodCA9
IHN0ZDo6bWF4KHN0YXRpY19jYXN0PHVpbnQzMl90PigxKSwgYmFzZVNpemUuaGVpZ2h0ID4+IG1p
cExldmVsKTsKKworICAgIC8vICJTZXQgZXh0ZW50LmRlcHRoT3JBcnJheUxheWVycyB0byAxLiIK
KyAgICBleHRlbnQuZGVwdGhPckFycmF5TGF5ZXJzID0gMTsKKworICAgIC8vICJSZXR1cm4gZXh0
ZW50LiIKKyAgICByZXR1cm4gZXh0ZW50OworfQorCitSZWZQdHI8VGV4dHVyZVZpZXc+IFRleHR1
cmU6OmNyZWF0ZVZpZXcoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYgaW5wdXREZXNj
cmlwdG9yKQoreworICAgIGlmIChpbnB1dERlc2NyaXB0b3IubmV4dEluQ2hhaW4pCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdl
Yi8jZG9tLWdwdXRleHR1cmUtY3JlYXRldmlldworCisgICAgLy8gIlNldCBkZXNjcmlwdG9yIHRv
IHRoZSByZXN1bHQgb2YgcmVzb2x2aW5nIEdQVVRleHR1cmVWaWV3RGVzY3JpcHRvciBkZWZhdWx0
cyB3aXRoIGRlc2NyaXB0b3IuIgorICAgIGF1dG8gZGVzY3JpcHRvciA9IHJlc29sdmVUZXh0dXJl
Vmlld0Rlc2NyaXB0b3JEZWZhdWx0cyhpbnB1dERlc2NyaXB0b3IpOworICAgIGlmICghZGVzY3Jp
cHRvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyAiSWYgYW55IG9mIHRoZSBm
b2xsb3dpbmcgcmVxdWlyZW1lbnRzIGFyZSB1bm1ldDoiCisgICAgaWYgKCF2YWxpZGF0ZUNyZWF0
ZVZpZXcoKmRlc2NyaXB0b3IpKSB7CisgICAgICAgIC8vICJHZW5lcmF0ZSBhIHZhbGlkYXRpb24g
ZXJyb3IuIgorICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9yKCJWYWxp
ZGF0aW9uIGZhaWx1cmUuIl9zKTsKKworICAgICAgICAvLyBGSVhNRTogIlJldHVybiBhIG5ldyBp
bnZhbGlkIEdQVVRleHR1cmVWaWV3LiIKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQor
CisgICAgc3RkOjpvcHRpb25hbDxNVExQaXhlbEZvcm1hdD4gcGl4ZWxGb3JtYXQgPSBNVExQaXhl
bEZvcm1hdEludmFsaWQ7CisgICAgaWYgKGlzRGVwdGhPclN0ZW5jaWxGb3JtYXQoZGVzY3JpcHRv
ci0+Zm9ybWF0KSkgeworICAgICAgICBzd2l0Y2ggKGRlc2NyaXB0b3ItPmFzcGVjdCkgeworICAg
ICAgICBjYXNlIFdHUFVUZXh0dXJlQXNwZWN0X0FsbDoKKyAgICAgICAgICAgIHBpeGVsRm9ybWF0
ID0gV2ViR1BVOjpwaXhlbEZvcm1hdChkZXNjcmlwdG9yLT5mb3JtYXQpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVBc3BlY3RfU3RlbmNpbE9ubHk6CisgICAg
ICAgICAgICBwaXhlbEZvcm1hdCA9IHN0ZW5jaWxPbmx5QXNwZWN0TWV0YWxGb3JtYXQoZGVzY3Jp
cHRvci0+Zm9ybWF0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdHUFVUZXh0
dXJlQXNwZWN0X0RlcHRoT25seToKKyAgICAgICAgICAgIHBpeGVsRm9ybWF0ID0gZGVwdGhPbmx5
QXNwZWN0TWV0YWxGb3JtYXQoZGVzY3JpcHRvci0+Zm9ybWF0KTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlIFdHUFVUZXh0dXJlQXNwZWN0X0ZvcmNlMzI6CisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIXBpeGVsRm9ybWF0KQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBBU1NFUlQoKnBpeGVsRm9ybWF0ICE9IE1UTFBp
eGVsRm9ybWF0SW52YWxpZCk7CisKKyAgICBNVExUZXh0dXJlVHlwZSB0ZXh0dXJlVHlwZTsKKyAg
ICBzd2l0Y2ggKGRlc2NyaXB0b3ItPmRpbWVuc2lvbikgeworICAgIGNhc2UgV0dQVVRleHR1cmVW
aWV3RGltZW5zaW9uX1VuZGVmaW5lZDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9u
XzFEOgorICAgICAgICBpZiAoZGVzY3JpcHRvci0+YXJyYXlMYXllckNvdW50ID09IDEpCisgICAg
ICAgICAgICB0ZXh0dXJlVHlwZSA9IE1UTFRleHR1cmVUeXBlMUQ7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHRleHR1cmVUeXBlID0gTVRMVGV4dHVyZVR5cGUxREFycmF5OworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl8yRDoKKyAgICAgICAgaWYg
KG1fZGVzY3JpcHRvci5zYW1wbGVDb3VudCA+IDEpCisgICAgICAgICAgICB0ZXh0dXJlVHlwZSA9
IE1UTFRleHR1cmVUeXBlMkRNdWx0aXNhbXBsZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
dGV4dHVyZVR5cGUgPSBNVExUZXh0dXJlVHlwZTJEOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl8yREFycmF5OgorICAgICAgICBpZiAobV9kZXNjcmlw
dG9yLnNhbXBsZUNvdW50ID4gMSkgeworI2lmIFBMQVRGT1JNKFdBVENIT1MpCisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKyNlbHNlCisgICAgICAgICAgICB0ZXh0dXJlVHlwZSA9IE1UTFRl
eHR1cmVUeXBlMkRNdWx0aXNhbXBsZUFycmF5OworI2VuZGlmCisgICAgICAgIH0gZWxzZQorICAg
ICAgICAgICAgdGV4dHVyZVR5cGUgPSBNVExUZXh0dXJlVHlwZTJEQXJyYXk7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX0N1YmU6CisgICAgICAgIHRl
eHR1cmVUeXBlID0gTVRMVGV4dHVyZVR5cGVDdWJlOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl9DdWJlQXJyYXk6CisgICAgICAgIHRleHR1cmVUeXBl
ID0gTVRMVGV4dHVyZVR5cGVDdWJlQXJyYXk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0dQ
VVRleHR1cmVWaWV3RGltZW5zaW9uXzNEOgorICAgICAgICB0ZXh0dXJlVHlwZSA9IE1UTFRleHR1
cmVUeXBlM0Q7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5z
aW9uX0ZvcmNlMzI6CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIGF1dG8g
bGV2ZWxzID0gTlNNYWtlUmFuZ2UoZGVzY3JpcHRvci0+YmFzZU1pcExldmVsLCBkZXNjcmlwdG9y
LT5taXBMZXZlbENvdW50KTsKKworICAgIGF1dG8gc2xpY2VzID0gTlNNYWtlUmFuZ2UoZGVzY3Jp
cHRvci0+YmFzZUFycmF5TGF5ZXIsIGRlc2NyaXB0b3ItPmFycmF5TGF5ZXJDb3VudCk7CisKKyAg
ICBpZDxNVExUZXh0dXJlPiB0ZXh0dXJlID0gW21fdGV4dHVyZSBuZXdUZXh0dXJlVmlld1dpdGhQ
aXhlbEZvcm1hdDoqcGl4ZWxGb3JtYXQgdGV4dHVyZVR5cGU6dGV4dHVyZVR5cGUgbGV2ZWxzOmxl
dmVscyBzbGljZXM6c2xpY2VzXTsKKyAgICBpZiAoIXRleHR1cmUpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgdGV4dHVyZS5sYWJlbCA9IGZyb21BUEkoZGVzY3JpcHRvci0+bGFiZWwp
OworCisgICAgLy8gIkxldCB2aWV3IGJlIGEgbmV3IEdQVVRleHR1cmVWaWV3IG9iamVjdC4iCisg
ICAgLy8gIlNldCB2aWV3LltbdGV4dHVyZV1dIHRvIHRoaXMuIgorICAgIC8vICJTZXQgdmlldy5b
W2Rlc2NyaXB0b3JdXSB0byBkZXNjcmlwdG9yLiIKKworICAgIC8vICJJZiB0aGlzLltbZGVzY3Jp
cHRvcl1dLnVzYWdlIGNvbnRhaW5zIFJFTkRFUl9BVFRBQ0hNRU5UOiIKKyAgICBzdGQ6Om9wdGlv
bmFsPFdHUFVFeHRlbnQzRD4gcmVuZGVyRXh0ZW50OworICAgIGlmICAobV9kZXNjcmlwdG9yLnVz
YWdlICYgV0dQVVRleHR1cmVVc2FnZV9SZW5kZXJBdHRhY2htZW50KSB7CisgICAgICAgIC8vICJM
ZXQgcmVuZGVyRXh0ZW50IGJlIGNvbXB1dGUgcmVuZGVyIGV4dGVudCh0aGlzLltbZGVzY3JpcHRv
cl1dLnNpemUsIGRlc2NyaXB0b3IuYmFzZU1pcExldmVsKS4iCisgICAgICAgIC8vICJTZXQgdmll
dy5bW3JlbmRlckV4dGVudF1dIHRvIHJlbmRlckV4dGVudC4iCisgICAgICAgIHJlbmRlckV4dGVu
dCA9IGNvbXB1dGVSZW5kZXJFeHRlbnQobV9kZXNjcmlwdG9yLnNpemUsIGRlc2NyaXB0b3ItPmJh
c2VNaXBMZXZlbCk7CisgICAgfQorCisgICAgLy8gIlJldHVybiB2aWV3LiIKKyAgICByZXR1cm4g
VGV4dHVyZVZpZXc6OmNyZWF0ZSh0ZXh0dXJlLCAqZGVzY3JpcHRvciwgcmVuZGVyRXh0ZW50KTsK
IH0KIAogdm9pZCBUZXh0dXJlOjpkZXN0cm95KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUv
V2ViR1BVL1RleHR1cmVWaWV3LmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5o
CmluZGV4IDcxMTI0MThhOGM5ZDdjMzVhZDQ2NzA2MTE1YzcxZTliMThkZjJlMWUuLmIwNWI0YjAz
Yjg4NjIwMzhkZWZmNDk3MzA2M2FhZTQyODkzYWFjY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1RleHR1cmVWaWV3LmgKKysrIGIvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVy
ZVZpZXcuaApAQCAtMzQsMTIgKzM0LDE0IEBAIHN0cnVjdCBXR1BVVGV4dHVyZVZpZXdJbXBsIHsK
IAogbmFtZXNwYWNlIFdlYkdQVSB7CiAKK2NsYXNzIFRleHR1cmU7CisKIGNsYXNzIFRleHR1cmVW
aWV3IDogcHVibGljIFdHUFVUZXh0dXJlVmlld0ltcGwsIHB1YmxpYyBSZWZDb3VudGVkPFRleHR1
cmVWaWV3PiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxUZXh0dXJlVmlldz4gY3JlYXRlKGlkPE1UTFRleHR1cmU+IHRleHR1cmUpCisgICAg
c3RhdGljIFJlZjxUZXh0dXJlVmlldz4gY3JlYXRlKGlkPE1UTFRleHR1cmU+IHRleHR1cmUsIGNv
bnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGRlc2NyaXB0b3IsIGNvbnN0IHN0ZDo6b3B0
aW9uYWw8V0dQVUV4dGVudDNEPiYgcmVuZGVyRXh0ZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgVGV4dHVyZVZpZXcodGV4dHVyZSkpOworICAgICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBUZXh0dXJlVmlldyh0ZXh0dXJlLCBkZXNjcmlwdG9yLCByZW5kZXJFeHRlbnQp
KTsKICAgICB9CiAKICAgICB+VGV4dHVyZVZpZXcoKTsKQEAgLTQ3LDExICs0OSwxNiBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzZXRMYWJlbChTdHJpbmcmJik7CiAKICAgICBpZDxNVExUZXh0dXJlPiB0
ZXh0dXJlKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlOyB9CisgICAgY29uc3QgV0dQVVRleHR1
cmVWaWV3RGVzY3JpcHRvciYgZGVzY3JpcHRvcigpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRv
cjsgfQorICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V0dQVUV4dGVudDNEPiYgcmVuZGVyRXh0ZW50
KCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJFeHRlbnQ7IH0KIAogcHJpdmF0ZToKLSAgICBUZXh0
dXJlVmlldyhpZDxNVExUZXh0dXJlPik7CisgICAgVGV4dHVyZVZpZXcoaWQ8TVRMVGV4dHVyZT4s
IGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdH
UFVFeHRlbnQzRD4mKTsKIAogICAgIGNvbnN0IGlkPE1UTFRleHR1cmU+IG1fdGV4dHVyZSB7IG5p
bCB9OworCisgICAgY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciBtX2Rlc2NyaXB0b3I7
CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxXR1BVRXh0ZW50M0Q+IG1fcmVuZGVyRXh0ZW50Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViR1BVCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dl
YkdQVS9UZXh0dXJlVmlldy5tbSBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVWaWV3Lm1t
CmluZGV4IGFhN2RjZWQxYmUzNmVlYzc1ZjY5OTBkNjc2MTVjNjVjZDBjYWI1ZDMuLmM3MmUxZTZl
ZWIyYzk2NGI1YjJkYjUzMTI1MDRmM2U3YmU2NTE0MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1RleHR1cmVWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1
cmVWaWV3Lm1tCkBAIC0zMCw4ICszMCwxMCBAQAogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotVGV4
dHVyZVZpZXc6OlRleHR1cmVWaWV3KGlkPE1UTFRleHR1cmU+IHRleHR1cmUpCitUZXh0dXJlVmll
dzo6VGV4dHVyZVZpZXcoaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSwgY29uc3QgV0dQVVRleHR1cmVW
aWV3RGVzY3JpcHRvciYgZGVzY3JpcHRvciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXR1BVRXh0ZW50
M0Q+JiByZW5kZXJFeHRlbnQpCiAgICAgOiBtX3RleHR1cmUodGV4dHVyZSkKKyAgICAsIG1fZGVz
Y3JpcHRvcihkZXNjcmlwdG9yKQorICAgICwgbV9yZW5kZXJFeHRlbnQocmVuZGVyRXh0ZW50KQog
ewogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455874</attachid>
            <date>2022-03-27 18:47:11 -0700</date>
            <delta_ts>2022-03-27 22:04:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>28800</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IDE4MTI4ODgxYWMwMzUxZTRlNmQ0MjZiYTAxNjU2ZmZjNTk1YjdmMTEKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTdW4gTWFyIDI3
IDE4OjQ2OjM5IDIwMjIgLTA3MDAKCiAgICBQYXJ0IDIKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IDNlYmVhYjFjNDI0
My4uYzMxYTk4MDU0OGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIyLTAzLTI3ICBN
eWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQ
VV0gSW1wbGVtZW50IFRleHR1cmU6OmNyZWF0ZVZpZXcoKSBhY2NvcmRpbmcgdG8gdGhlIHNwZWMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODMxMQor
CisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0ZXh0dXJlIHZpZXdzLCB3aGljaCBhcmUg
dGhlIG9iamVjdHMgdGhhdCBnZXQgYm91bmQgdG8gcGlwZWxpbmVzIChyYXRoZXIKKyAgICAgICAg
dGhhbiB0ZXh0dXJlcyB0aGVtc2VsdmVzKS4gSXQgbGlua3MgdG8gdGhlIHNwZWMgd2hlcmUgcmVs
ZXZhbnQsIGFuZCBxdW90ZXMgdGhlIHNwZWMgaW4gY29tbWVudHMKKyAgICAgICAgd2hlcmUgcmVs
ZXZhbnQuCisKKyAgICAgICAgVGVzdDogYXBpL3ZhbGlkYXRpb24vY3JlYXRlVmlldy5zcGVjLnRz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJH
UFUvVGV4dHVyZS5oOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlOjpjcmVhdGUpOgorICAgICAg
ICAqIFdlYkdQVS9UZXh0dXJlLm1tOgorICAgICAgICAoV2ViR1BVOjpkZXB0aE9ubHlBc3BlY3RN
ZXRhbEZvcm1hdCk6CisgICAgICAgIChXZWJHUFU6OnN0ZW5jaWxPbmx5QXNwZWN0TWV0YWxGb3Jt
YXQpOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAo
V2ViR1BVOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZTo6cmVz
b2x2ZVRleHR1cmVWaWV3RGVzY3JpcHRvckRlZmF1bHRzIGNvbnN0KToKKyAgICAgICAgKFdlYkdQ
VTo6VGV4dHVyZTo6YXJyYXlMYXllckNvdW50IGNvbnN0KToKKyAgICAgICAgKFdlYkdQVTo6VGV4
dHVyZTo6dmFsaWRhdGVDcmVhdGVWaWV3IGNvbnN0KToKKyAgICAgICAgKFdlYkdQVTo6Y29tcHV0
ZVJlbmRlckV4dGVudCk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OmNyZWF0ZVZpZXcpOgor
ICAgICAgICAqIFdlYkdQVS9UZXh0dXJlVmlldy5oOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJl
Vmlldzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZVZpZXc6OmRlc2NyaXB0b3Ig
Y29uc3QpOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlVmlldzo6cmVuZGVyRXh0ZW50IGNvbnN0
KToKKyAgICAgICAgKiBXZWJHUFUvVGV4dHVyZVZpZXcubW06CisgICAgICAgIChXZWJHUFU6OlRl
eHR1cmVWaWV3OjpUZXh0dXJlVmlldyk6CisKIDIwMjItMDMtMjcgIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBSZWZhY3RvciBpc0Rl
cHRoT3JTdGVuY2lsRm9ybWF0KCkgZm9yIHVwY29taW5nIGRhdGEgdHJhbnNmZXIgcGF0Y2hlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5oIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvVGV4dHVyZS5oCmluZGV4IDEwMGJjNjQ3YzZhNy4uNTZmYjA5NmUxMjYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvVGV4dHVyZS5oCkBAIC0zNSwxNCArMzUsMTUgQEAgc3RydWN0IFdHUFVUZXh0dXJl
SW1wbCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCitjbGFzcyBEZXZpY2U7CiBjbGFzcyBUZXh0
dXJlVmlldzsKIAogY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBXR1BVVGV4dHVyZUltcGwsIHB1Ymxp
YyBSZWZDb3VudGVkPFRleHR1cmU+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFRleHR1cmU+IGNyZWF0ZShpZDxNVExUZXh0dXJlPiB0ZXh0
dXJlLCBjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCisgICAgc3RhdGlj
IFJlZjxUZXh0dXJlPiBjcmVhdGUoaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSwgY29uc3QgV0dQVVRl
eHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBEZXZpY2UmIGRldmljZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHR1cmUodGV4dHVyZSwgZGVzY3JpcHRvcikpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0dXJlKHRleHR1cmUsIGRlc2NyaXB0b3Is
IGRldmljZSkpOwogICAgIH0KIAogICAgIH5UZXh0dXJlKCk7CkBAIC02MSwxMSArNjIsMTcgQEAg
cHVibGljOgogICAgIGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcigpIGNv
bnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRvcjsgfQogCiBwcml2YXRlOgotICAgIFRleHR1cmUoaWQ8
TVRMVGV4dHVyZT4sIGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYpOworICAgIFRleHR1cmUo
aWQ8TVRMVGV4dHVyZT4sIGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYsIERldmljZSYpOwor
CisgICAgc3RkOjpvcHRpb25hbDxXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yPiByZXNvbHZlVGV4
dHVyZVZpZXdEZXNjcmlwdG9yRGVmYXVsdHMoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRv
ciYpIGNvbnN0OworICAgIHVpbnQzMl90IGFycmF5TGF5ZXJDb3VudCgpIGNvbnN0OworICAgIGJv
b2wgdmFsaWRhdGVDcmVhdGVWaWV3KGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImKSBj
b25zdDsKIAogICAgIGNvbnN0IGlkPE1UTFRleHR1cmU+IG1fdGV4dHVyZSB7IG5pbCB9OwogCiAg
ICAgY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yIG1fZGVzY3JpcHRvciB7IH07IC8vICJUaGUg
R1BVVGV4dHVyZURlc2NyaXB0b3IgZGVzY3JpYmluZyB0aGlzIHRleHR1cmUuIgorCisgICAgY29u
c3QgUmVmPERldmljZT4gbV9kZXZpY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0gYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9UZXh0dXJlLm1tCmluZGV4IGJlOTI3YWM2ZmRhOS4uNjNlZmE4Yjk5ZjU1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1RleHR1cmUubW0KQEAgLTE0MzksNiArMTQzOSwyMzggQEAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8TVRMUGl4ZWxGb3JtYXQ+IHBpeGVsRm9ybWF0KFdHUFVUZXh0dXJlRm9ybWF0IHRl
eHR1cmVGb3JtYXQKICAgICB9CiB9CiAKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE1UTFBpeGVsRm9y
bWF0PiBkZXB0aE9ubHlBc3BlY3RNZXRhbEZvcm1hdChXR1BVVGV4dHVyZUZvcm1hdCB0ZXh0dXJl
Rm9ybWF0KQoreworICAgIHN3aXRjaCAodGV4dHVyZUZvcm1hdCkgeworICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfVW5kZWZpbmVkOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjhVbm9y
bToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1I4U25vcm06CisgICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9SOFVpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SOFNpbnQ6Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMTZVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfUjE2U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1IxNkZsb2F0OgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkc4VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9SRzhTbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHOFVpbnQ6CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzhTaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfUjMyRmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMzJVaW50OgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfUjMyU2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X1JHMTZVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkcxNlNpbnQ6CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzE2RmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9SR0JBOFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQThVbm9ybVNyZ2I6
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBOFNub3JtOgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfUkdCQThVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQThT
aW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkdSQThVbm9ybToKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0JHUkE4VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfUkdCMTBBMlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkcxMUIxMFVmbG9h
dDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQjlFNVVmbG9hdDoKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X1JHMzJGbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JH
MzJVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkczMlNpbnQ6CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9SR0JBMTZVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
UkdCQTE2U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkExNkZsb2F0OgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQTMyRmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9SR0JBMzJVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQTMyU2lu
dDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1N0ZW5jaWw4OgorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgxNlVub3JtOgor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgyNFBsdXM6CisgICAgICAgIHJldHVybiBw
aXhlbEZvcm1hdCh0ZXh0dXJlRm9ybWF0KTsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0Rl
cHRoMjRQbHVzU3RlbmNpbDg6CisgICAgICAgIEFTU0VSVChwaXhlbEZvcm1hdCh0ZXh0dXJlRm9y
bWF0KSA9PSBNVExQaXhlbEZvcm1hdERlcHRoMzJGbG9hdF9TdGVuY2lsOCk7CisgICAgICAgIHJl
dHVybiBNVExQaXhlbEZvcm1hdERlcHRoMzJGbG9hdDsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X0RlcHRoMjRVbm9ybVN0ZW5jaWw4OgorICAgICAgICAvLyBUaGlzIGlzIGEgYml0IHN1cnBy
aXNpbmcsIGJ1dCBpdCBzaG91bGQgYmUgY29ycmVjdC4KKyAgICAgICAgLy8gV2hlbiB1c2luZyB0
aGUgdmlldyBhcyBhIHJlbmRlciB0YXJnZXQsIHdlJ2xsIGJpbmQgaXQgdG8gTVRMUmVuZGVyUGFz
c0Rlc2NyaXB0b3IuZGVwdGhBdHRhY2htZW50LCB3aGljaCB3aWxsIGlnbm9yZSB0aGUgc3RlbmNp
bCBiaXRzLgorICAgICAgICAvLyBXaGVuIGF0dGFjaGluZyB0aGUgdmlldyBhcyBhIHNoYWRlciBy
ZXNvdXJjZSB2aWV3LCBvbmx5IHRoZSBkZXB0aCBhc3BlY3QgaXMgdmlzaWJsZSBhbnl3YXkuCisg
ICAgICAgIC8vIFdoZW4gY29weWluZyB0by9mcm9tIHRoZSB0ZXh0dXJlLCB3ZSBjYW4gdXNlIE1U
TEJsaXRPcHRpb24uTVRMQmxpdE9wdGlvbkRlcHRoRnJvbURlcHRoU3RlbmNpbCB0byBpZ25vcmUg
dGhlIHN0ZW5jaWwgYml0cy4KKyAgICAgICAgcmV0dXJuIHBpeGVsRm9ybWF0KHRleHR1cmVGb3Jt
YXQpOworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgzMkZsb2F0OgorICAgICAgICBy
ZXR1cm4gcGl4ZWxGb3JtYXQodGV4dHVyZUZvcm1hdCk7CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9EZXB0aDMyRmxvYXRTdGVuY2lsODoKKyAgICAgICAgcmV0dXJuIE1UTFBpeGVsRm9ybWF0
RGVwdGgzMkZsb2F0OworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMxUkdCQVVub3JtOgor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMxUkdCQVVub3JtU3JnYjoKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0JDMlJHQkFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0JDMlJHQkFVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzNSR0JBVW5v
cm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzNSR0JBVW5vcm1TcmdiOgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfQkM0UlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfQkM0UlNub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM1UkdVbm9ybToKKyAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNVJHU25vcm06CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9CQzZIUkdCVWZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM2SFJH
QkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM3UkdCQVVub3JtOgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfQkM3UkdCQVVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0VUQzJSR0I4VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMy
UkdCOFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4QTFVbm9y
bToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4QTFVbm9ybVNyZ2I6CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCQThVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0VUQzJSR0JBOFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0VBQ1IxMVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRUFDUjExU25vcm06Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FQUNSRzExVW5vcm06CisgICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9FQUNSRzExU25vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RD
NHg0VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNHg0VW5vcm1TcmdiOgor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NFVub3JtOgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfQVNUQzV4NFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0FTVEM1eDVVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1eDVVbm9ybVNy
Z2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng1VW5vcm06CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9BU1RDNng1VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfQVNUQzZ4NlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4NlVu
b3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDVVbm9ybToKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDVVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9BU1RDOHg2VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RD
OHg2VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4OFVub3JtOgor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4OFVub3JtU3JnYjoKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg1VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9BU1RDMTB4NVVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg2
VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NlVub3JtU3JnYjoKKyAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg4VW5vcm06CisgICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9BU1RDMTB4OFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0FTVEMxMHgxMFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDEwVW5v
cm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEwVW5vcm06CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTBVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTJVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0FTVEMxMngxMlVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0ZvcmNlMzI6
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorfQorCitzdGF0aWMgc3RkOjpv
cHRpb25hbDxNVExQaXhlbEZvcm1hdD4gc3RlbmNpbE9ubHlBc3BlY3RNZXRhbEZvcm1hdChXR1BV
VGV4dHVyZUZvcm1hdCB0ZXh0dXJlRm9ybWF0KQoreworICAgIHN3aXRjaCAodGV4dHVyZUZvcm1h
dCkgeworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfVW5kZWZpbmVkOgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfUjhVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1I4U25v
cm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SOFVpbnQ6CisgICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9SOFNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMTZVaW50Ogor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjE2U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X1IxNkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkc4VW5vcm06Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzhTbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X1JHOFVpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzhTaW50OgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjMyRmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9SMzJVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjMyU2ludDoKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMTZVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfUkcxNlNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzE2RmxvYXQ6CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBOFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfUkdCQThVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBOFNu
b3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQThVaW50OgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfUkdCQThTaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkdS
QThVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JHUkE4VW5vcm1TcmdiOgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCMTBBMlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfUkcxMUIxMFVmbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQjlF
NVVmbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMzJGbG9hdDoKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X1JHMzJVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
UkczMlNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMTZVaW50OgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQTE2U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X1JHQkExNkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQTMyRmxvYXQ6
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMzJVaW50OgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfUkdCQTMyU2ludDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1N0ZW5jaWw4OgorICAgICAgICByZXR1cm4gcGl4ZWxG
b3JtYXQodGV4dHVyZUZvcm1hdCk7CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDE2
VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDI0UGx1czoKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMjRQ
bHVzU3RlbmNpbDg6CisgICAgICAgIEFTU0VSVChwaXhlbEZvcm1hdCh0ZXh0dXJlRm9ybWF0KSA9
PSBNVExQaXhlbEZvcm1hdERlcHRoMzJGbG9hdF9TdGVuY2lsOCk7CisgICAgICAgIHJldHVybiBN
VExQaXhlbEZvcm1hdFgzMl9TdGVuY2lsODsKKyNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JN
KE1BQ0NBVEFMWVNUKQorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgyNFVub3JtU3Rl
bmNpbDg6CisgICAgICAgIHJldHVybiBNVExQaXhlbEZvcm1hdFgyNF9TdGVuY2lsODsKKyNlbHNl
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDI0VW5vcm1TdGVuY2lsODoKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyNlbmRpZgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfRGVwdGgzMkZsb2F0OgorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfRGVwdGgzMkZsb2F0U3RlbmNpbDg6CisgICAgICAgIHJldHVybiBN
VExQaXhlbEZvcm1hdFgzMl9TdGVuY2lsODsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JD
MVJHQkFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDMVJHQkFVbm9ybVNyZ2I6
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzJSR0JBVW5vcm06CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9CQzJSR0JBVW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfQkMzUkdCQVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMzUkdCQVVub3Jt
U3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNFJVbm9ybToKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0JDNFJTbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JD
NVJHVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzVSR1Nub3JtOgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfQkM2SFJHQlVmbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X0JDNkhSR0JGbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDN1JHQkFV
bm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDN1JHQkFVbm9ybVNyZ2I6CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfRVRDMlJHQjhVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9F
VEMyUkdCOEExVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOEExVW5v
cm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQkE4VW5vcm06CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCQThVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9FQUNSMTFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VB
Q1IxMVNub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRUFDUkcxMVVub3JtOgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRUFDUkcxMVNub3JtOgorICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfQVNUQzR4NFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzR4
NFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1eDRVbm9ybToKKyAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1eDRVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDNXg1VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9B
U1RDNXg1VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4NVVub3Jt
OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4NVVub3JtU3JnYjoKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM2eDZVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X0FTVEM2eDZVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg1
VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg1VW5vcm1TcmdiOgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4NlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfQVNUQzh4NlVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FT
VEM4eDhVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDhVbm9ybVNyZ2I6
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NVVub3JtOgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfQVNUQzEweDVVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9BU1RDMTB4NlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDZV
bm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4OFVub3JtOgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDhVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDMTB4MTBVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X0FTVEMxMHgxMFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMngx
MFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEwVW5vcm1TcmdiOgor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEyVW5vcm06CisgICAgY2FzZSBXR1BV
VGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTJVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9Gb3JjZTMyOgorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KK30KKwog
c3RhdGljIE1UTFN0b3JhZ2VNb2RlIHN0b3JhZ2VNb2RlKGJvb2wgZGV2aWNlSGFzVW5pZmllZE1l
bW9yeSkKIHsKICAgICBpZiAoZGV2aWNlSGFzVW5pZmllZE1lbW9yeSkKQEAgLTE1MzgsMjEgKzE3
NzAsMzUzIEBAIFJlZlB0cjxUZXh0dXJlPiBEZXZpY2U6OmNyZWF0ZVRleHR1cmUoY29uc3QgV0dQ
VVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogICAgIC8vICJTZXQgdC5bW2Rlc2NyaXB0
b3JdXSB0byBkZXNjcmlwdG9yLiIKICAgICAvLyAiUmV0dXJuIHQuIgogCi0gICAgcmV0dXJuIFRl
eHR1cmU6OmNyZWF0ZSh0ZXh0dXJlLCBkZXNjcmlwdG9yKTsKKyAgICByZXR1cm4gVGV4dHVyZTo6
Y3JlYXRlKHRleHR1cmUsIGRlc2NyaXB0b3IsICp0aGlzKTsKIH0KIAotVGV4dHVyZTo6VGV4dHVy
ZShpZDxNVExUZXh0dXJlPiB0ZXh0dXJlLCBjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRl
c2NyaXB0b3IpCitUZXh0dXJlOjpUZXh0dXJlKGlkPE1UTFRleHR1cmU+IHRleHR1cmUsIGNvbnN0
IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvciwgRGV2aWNlJiBkZXZpY2UpCiAgICAg
OiBtX3RleHR1cmUodGV4dHVyZSkKICAgICAsIG1fZGVzY3JpcHRvcihkZXNjcmlwdG9yKQorICAg
ICwgbV9kZXZpY2UoZGV2aWNlKQogewogfQogCiBUZXh0dXJlOjp+VGV4dHVyZSgpID0gZGVmYXVs
dDsKIAotUmVmUHRyPFRleHR1cmVWaWV3PiBUZXh0dXJlOjpjcmVhdGVWaWV3KGNvbnN0IFdHUFVU
ZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCitzdGQ6Om9wdGlvbmFsPFdHUFVUZXh0
dXJlVmlld0Rlc2NyaXB0b3I+IFRleHR1cmU6OnJlc29sdmVUZXh0dXJlVmlld0Rlc2NyaXB0b3JE
ZWZhdWx0cyhjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25z
dAoreworICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2Fic3RyYWN0LW9w
ZGVmLXJlc29sdmluZy1ncHV0ZXh0dXJldmlld2Rlc2NyaXB0b3ItZGVmYXVsdHMKKworICAgIC8v
ICJMZXQgcmVzb2x2ZWQgYmUgYSBjb3B5IG9mIGRlc2NyaXB0b3IuIgorICAgIFdHUFVUZXh0dXJl
Vmlld0Rlc2NyaXB0b3IgcmVzb2x2ZWQgPSBkZXNjcmlwdG9yOworCisgICAgLy8gIklmIHJlc29s
dmVkLmZvcm1hdCBpcyB1bmRlZmluZWQiCisgICAgaWYgKHJlc29sdmVkLmZvcm1hdCA9PSBXR1BV
VGV4dHVyZUZvcm1hdF9VbmRlZmluZWQpIHsKKyAgICAgICAgLy8gInNldCByZXNvbHZlZC5mb3Jt
YXQgdG8gdGV4dHVyZS5bW2Rlc2NyaXB0b3JdXS5mb3JtYXQuIgorICAgICAgICByZXNvbHZlZC5m
b3JtYXQgPSBtX2Rlc2NyaXB0b3IuZm9ybWF0OworICAgIH0KKworICAgIC8vICJJZiByZXNvbHZl
ZC5taXBMZXZlbENvdW50IGlzIHVuZGVmaW5lZCIKKyAgICBpZiAocmVzb2x2ZWQubWlwTGV2ZWxD
b3VudCA9PSBXR1BVX01JUF9MRVZFTF9DT1VOVF9VTkRFRklORUQpIHsKKyAgICAgICAgLy8gInNl
dCByZXNvbHZlZC5taXBMZXZlbENvdW50IHRvIHRleHR1cmUuW1tkZXNjcmlwdG9yXV0ubWlwTGV2
ZWxDb3VudCDiiJIgcmVzb2x2ZWQuYmFzZU1pcExldmVsLiIKKyAgICAgICAgLy8gRklYTUU6IFVz
ZSBjaGVja2VkIGFyaXRobWV0aWMuCisgICAgICAgIHJlc29sdmVkLm1pcExldmVsQ291bnQgPSBt
X2Rlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCAtIHJlc29sdmVkLmJhc2VNaXBMZXZlbDsKKyAgICB9
CisKKyAgICAvLyAiSWYgcmVzb2x2ZWQuZGltZW5zaW9uIGlzIHVuZGVmaW5lZCIKKyAgICBpZiAo
cmVzb2x2ZWQuZGltZW5zaW9uID09IFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl9VbmRlZmluZWQp
IHsKKyAgICAgICAgLy8gImFuZCB0ZXh0dXJlLltbZGVzY3JpcHRvcl1dLmRpbWVuc2lvbiBpczoi
CisgICAgICAgIHN3aXRjaCAobV9kZXNjcmlwdG9yLmRpbWVuc2lvbikgeworICAgICAgICBjYXNl
IFdHUFVUZXh0dXJlRGltZW5zaW9uXzFEOgorICAgICAgICAgICAgLy8gIlNldCByZXNvbHZlZC5k
aW1lbnNpb24gdG8gIjFkIi4iCisgICAgICAgICAgICByZXNvbHZlZC5kaW1lbnNpb24gPSBXR1BV
VGV4dHVyZVZpZXdEaW1lbnNpb25fMUQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBXR1BVVGV4dHVyZURpbWVuc2lvbl8yRDoKKyAgICAgICAgICAgIC8vICJTZXQgcmVzb2x2ZWQu
ZGltZW5zaW9uIHRvICIyZCIuIgorICAgICAgICAgICAgcmVzb2x2ZWQuZGltZW5zaW9uID0gV0dQ
VVRleHR1cmVWaWV3RGltZW5zaW9uXzJEOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgV0dQVVRleHR1cmVEaW1lbnNpb25fM0Q6CisgICAgICAgICAgICAvLyAiU2V0IHJlc29sdmVk
LmRpbWVuc2lvbiB0byAiM2QiLiIKKyAgICAgICAgICAgIHJlc29sdmVkLmRpbWVuc2lvbiA9IFdH
UFVUZXh0dXJlVmlld0RpbWVuc2lvbl8zRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIFdHUFVUZXh0dXJlRGltZW5zaW9uX0ZvcmNlMzI6CisgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICAvLyAiSWYgcmVzb2x2ZWQuYXJyYXlMYXllckNvdW50IGlzIHVuZGVmaW5l
ZCIKKyAgICBpZiAocmVzb2x2ZWQuYXJyYXlMYXllckNvdW50ID09IFdHUFVfQVJSQVlfTEFZRVJf
Q09VTlRfVU5ERUZJTkVEKSB7CisgICAgICAgIC8vICJhbmQgcmVzb2x2ZWQuZGltZW5zaW9uIGlz
OiIKKyAgICAgICAgc3dpdGNoIChyZXNvbHZlZC5kaW1lbnNpb24pIHsKKyAgICAgICAgY2FzZSBX
R1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fVW5kZWZpbmVkOgorICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBj
YXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl8xRDoKKyAgICAgICAgY2FzZSBXR1BVVGV4dHVy
ZVZpZXdEaW1lbnNpb25fMkQ6CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9u
XzNEOgorICAgICAgICAgICAgLy8gIlNldCByZXNvbHZlZC5hcnJheUxheWVyQ291bnQgdG8gMS4i
CisgICAgICAgICAgICByZXNvbHZlZC5hcnJheUxheWVyQ291bnQgPSAxOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX0N1YmU6CisgICAg
ICAgICAgICAvLyAiU2V0IHJlc29sdmVkLmFycmF5TGF5ZXJDb3VudCB0byA2LiIKKyAgICAgICAg
ICAgIHJlc29sdmVkLmFycmF5TGF5ZXJDb3VudCA9IDY7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fMkRBcnJheToKKyAgICAgICAgY2Fz
ZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fQ3ViZUFycmF5OgorICAgICAgICAgICAgLy8gIlNl
dCByZXNvbHZlZC5hcnJheUxheWVyQ291bnQgdG8gdGV4dHVyZS5bW2Rlc2NyaXB0b3JdXS5zaXpl
LmRlcHRoT3JBcnJheUxheWVycyDiiJIgYmFzZUFycmF5TGF5ZXIuIgorICAgICAgICAgICAgLy8g
RklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMKKyAgICAgICAgICAgIHJlc29sdmVkLmFycmF5
TGF5ZXJDb3VudCA9IG1fZGVzY3JpcHRvci5zaXplLmRlcHRoT3JBcnJheUxheWVycyAtIHJlc29s
dmVkLmJhc2VBcnJheUxheWVyOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0dQ
VVRleHR1cmVWaWV3RGltZW5zaW9uX0ZvcmNlMzI6CisgICAgICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICAvLyAiUmV0dXJuIHJlc29sdmVkLiIKKyAgICByZXR1cm4gcmVzb2x2ZWQ7Cit9
CisKK3VpbnQzMl90IFRleHR1cmU6OmFycmF5TGF5ZXJDb3VudCgpIGNvbnN0Cit7CisgICAgLy8g
aHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dwdXdlYi8jYWJzdHJhY3Qtb3BkZWYtYXJyYXktbGF5
ZXItY291bnQKKworICAgIC8vICJJZiB0ZXh0dXJlLltbZGVzY3JpcHRvcl1dLmRpbWVuc2lvbiBp
czoiCisgICAgc3dpdGNoIChtX2Rlc2NyaXB0b3IuZGltZW5zaW9uKSB7CisgICAgY2FzZSBXR1BV
VGV4dHVyZURpbWVuc2lvbl8xRDoKKyAgICAgICAgLy8gIlJldHVybiAxLiIKKyAgICAgICAgcmV0
dXJuIDE7CisgICAgY2FzZSBXR1BVVGV4dHVyZURpbWVuc2lvbl8yRDoKKyAgICAgICAgLy8gIlJl
dHVybiB0ZXh0dXJlLltbZGVzY3JpcHRvcl1dLnNpemUuZGVwdGhPckFycmF5TGF5ZXJzLiIKKyAg
ICAgICAgcmV0dXJuIG1fZGVzY3JpcHRvci5zaXplLmRlcHRoT3JBcnJheUxheWVyczsKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRGltZW5zaW9uXzNEOgorICAgICAgICAvLyAiUmV0dXJuIDEuIgorICAg
ICAgICByZXR1cm4gMTsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRGltZW5zaW9uX0ZvcmNlMzI6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9Cit9
CisKK2Jvb2wgVGV4dHVyZTo6dmFsaWRhdGVDcmVhdGVWaWV3KGNvbnN0IFdHUFVUZXh0dXJlVmll
d0Rlc2NyaXB0b3ImIGRlc2NyaXB0b3IpIGNvbnN0CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2Ny
aXB0b3IpOwotICAgIHJldHVybiBUZXh0dXJlVmlldzo6Y3JlYXRlKG5pbCk7CisgICAgLy8gRklY
TUU6ICJ0aGlzIGlzIHZhbGlkIgorCisgICAgLy8gIklmIHRoZSBkZXNjcmlwdG9yLmFzcGVjdCBp
cyIKKyAgICBzd2l0Y2ggKGRlc2NyaXB0b3IuYXNwZWN0KSB7CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUFzcGVjdF9BbGw6CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0dQVVRleHR1cmVBc3BlY3Rf
U3RlbmNpbE9ubHk6CisgICAgICAgIC8vICJ0aGlzLltbZGVzY3JpcHRvcl1dLmZvcm1hdCBtdXN0
IGJlIGEgZGVwdGgtb3Itc3RlbmNpbCBmb3JtYXQgd2hpY2ggaGFzIGEgc3RlbmNpbCBhc3BlY3Qu
IgorICAgICAgICBpZiAoIWNvbnRhaW5zU3RlbmNpbEFzcGVjdChtX2Rlc2NyaXB0b3IuZm9ybWF0
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBX
R1BVVGV4dHVyZUFzcGVjdF9EZXB0aE9ubHk6CisgICAgICAgIC8vICJ0aGlzLltbZGVzY3JpcHRv
cl1dLmZvcm1hdCBtdXN0IGJlIGEgZGVwdGgtb3Itc3RlbmNpbCBmb3JtYXQgd2hpY2ggaGFzIGEg
ZGVwdGggYXNwZWN0LiIKKyAgICAgICAgaWYgKCFjb250YWluc0RlcHRoQXNwZWN0KG1fZGVzY3Jp
cHRvci5mb3JtYXQpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFdHUFVUZXh0dXJlQXNwZWN0X0ZvcmNlMzI6CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9CisKKyAgICAvLyAiZGVzY3JpcHRvci5taXBMZXZlbENvdW50IG11c3QgYmUgPiAw
LiIKKyAgICBpZiAoIWRlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgLy8gImRlc2NyaXB0b3IuYmFzZU1pcExldmVsICsgZGVzY3JpcHRvci5taXBM
ZXZlbENvdW50IG11c3QgYmUg4omkIHRoaXMuW1tkZXNjcmlwdG9yXV0ubWlwTGV2ZWxDb3VudC4i
CisgICAgLy8gRklYTUU6IFVzZSBjaGVja2VkIGFyaXRobWV0aWMuCisgICAgaWYgKGRlc2NyaXB0
b3IuYmFzZU1pcExldmVsICsgZGVzY3JpcHRvci5taXBMZXZlbENvdW50ID4gbV9kZXNjcmlwdG9y
Lm1pcExldmVsQ291bnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vICJkZXNjcmlw
dG9yLmFycmF5TGF5ZXJDb3VudCBtdXN0IGJlID4gMC4iCisgICAgaWYgKCFkZXNjcmlwdG9yLmFy
cmF5TGF5ZXJDb3VudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gImRlc2NyaXB0
b3IuYmFzZUFycmF5TGF5ZXIgKyBkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCBtdXN0IGJlIOKJ
pCB0aGUgYXJyYXkgbGF5ZXIgY291bnQgb2YgdGhpcy4iCisgICAgLy8gRklYTUU6IFVzZSBjaGVj
a2VkIGFyaXRobWV0aWMuCisgICAgaWYgKGRlc2NyaXB0b3IuYmFzZUFycmF5TGF5ZXIgKyBkZXNj
cmlwdG9yLmFycmF5TGF5ZXJDb3VudCA+IGFycmF5TGF5ZXJDb3VudCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICAvLyBGSVhNRTogImRlc2NyaXB0b3IuZm9ybWF0IG11c3QgYmUgZXF1
YWwgdG8gZWl0aGVyIHRoaXMuW1tkZXNjcmlwdG9yXV0uZm9ybWF0IG9yIG9uZSBvZiB0aGUgZm9y
bWF0cyBpbiB0aGlzLltbZGVzY3JpcHRvcl1dLnZpZXdGb3JtYXRzLiIKKyAgICBpZiAoZGVzY3Jp
cHRvci5mb3JtYXQgIT0gbV9kZXNjcmlwdG9yLmZvcm1hdCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgLy8gIklmIGRlc2NyaXB0b3IuZGltZW5zaW9uIGlzOiIKKyAgICBzd2l0Y2ggKGRl
c2NyaXB0b3IuZGltZW5zaW9uKSB7CisgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25f
VW5kZWZpbmVkOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY2FzZSBXR1BVVGV4dHVyZVZp
ZXdEaW1lbnNpb25fMUQ6CisgICAgICAgIC8vICJ0aGlzLltbZGVzY3JpcHRvcl1dLmRpbWVuc2lv
biBtdXN0IGJlICIxZCIuIgorICAgICAgICBpZiAobV9kZXNjcmlwdG9yLmRpbWVuc2lvbiAhPSBX
R1BVVGV4dHVyZURpbWVuc2lvbl8xRCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICAvLyAiZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgbXVzdCBiZSAxLiIKKyAgICAgICAg
aWYgKGRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50ICE9IDEpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9u
XzJEOgorICAgICAgICAvLyAidGhpcy5bW2Rlc2NyaXB0b3JdXS5kaW1lbnNpb24gbXVzdCBiZSAi
MmQiLiIKKyAgICAgICAgaWYgKG1fZGVzY3JpcHRvci5kaW1lbnNpb24gIT0gV0dQVVRleHR1cmVE
aW1lbnNpb25fMkQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gImRl
c2NyaXB0b3IuYXJyYXlMYXllckNvdW50IG11c3QgYmUgMS4iCisgICAgICAgIGlmIChkZXNjcmlw
dG9yLmFycmF5TGF5ZXJDb3VudCAhPSAxKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl8yREFycmF5Ogor
ICAgICAgICAvLyAidGhpcy5bW2Rlc2NyaXB0b3JdXS5kaW1lbnNpb24gbXVzdCBiZSAiMmQiLiIK
KyAgICAgICAgaWYgKG1fZGVzY3JpcHRvci5kaW1lbnNpb24gIT0gV0dQVVRleHR1cmVEaW1lbnNp
b25fMkQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX0N1YmU6CisgICAgICAgIC8vICJ0aGlzLltbZGVz
Y3JpcHRvcl1dLmRpbWVuc2lvbiBtdXN0IGJlICIyZCIuIgorICAgICAgICBpZiAobV9kZXNjcmlw
dG9yLmRpbWVuc2lvbiAhPSBXR1BVVGV4dHVyZURpbWVuc2lvbl8yRCkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgICAgICAvLyAiZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgbXVz
dCBiZSA2LiIKKyAgICAgICAgaWYgKGRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50ICE9IDYpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gInRoaXMuW1tkZXNjcmlwdG9y
XV0uc2l6ZS53aWR0aCBtdXN0IGJlIHRoaXMuW1tkZXNjcmlwdG9yXV0uc2l6ZS5oZWlnaHQuIgor
ICAgICAgICBpZiAobV9kZXNjcmlwdG9yLnNpemUud2lkdGggIT0gbV9kZXNjcmlwdG9yLnNpemUu
aGVpZ2h0KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl9DdWJlQXJyYXk6CisgICAgICAgIC8vICJ0aGlz
LltbZGVzY3JpcHRvcl1dLmRpbWVuc2lvbiBtdXN0IGJlICIyZCIuIgorICAgICAgICBpZiAobV9k
ZXNjcmlwdG9yLmRpbWVuc2lvbiAhPSBXR1BVVGV4dHVyZURpbWVuc2lvbl8yRCkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAvLyAiZGVzY3JpcHRvci5hcnJheUxheWVyQ291
bnQgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDYuIgorICAgICAgICBpZiAoZGVzY3JpcHRvci5hcnJh
eUxheWVyQ291bnQgJSA2KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIC8v
ICJ0aGlzLltbZGVzY3JpcHRvcl1dLnNpemUud2lkdGggbXVzdCBiZSB0aGlzLltbZGVzY3JpcHRv
cl1dLnNpemUuaGVpZ2h0LiIKKyAgICAgICAgaWYgKG1fZGVzY3JpcHRvci5zaXplLndpZHRoICE9
IG1fZGVzY3JpcHRvci5zaXplLmhlaWdodCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fM0Q6CisgICAg
ICAgIC8vICJ0aGlzLltbZGVzY3JpcHRvcl1dLmRpbWVuc2lvbiBtdXN0IGJlICIzZCIuIgorICAg
ICAgICBpZiAobV9kZXNjcmlwdG9yLmRpbWVuc2lvbiAhPSBXR1BVVGV4dHVyZURpbWVuc2lvbl8z
RCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAvLyAiZGVzY3JpcHRvci5h
cnJheUxheWVyQ291bnQgbXVzdCBiZSAxLiIKKyAgICAgICAgaWYgKGRlc2NyaXB0b3IuYXJyYXlM
YXllckNvdW50ICE9IDEpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX0ZvcmNlMzI6CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAg
cmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBXR1BVRXh0ZW50M0QgY29tcHV0ZVJlbmRlckV4dGVu
dChjb25zdCBXR1BVRXh0ZW50M0QmIGJhc2VTaXplLCB1aW50MzJfdCBtaXBMZXZlbCkKK3sKKyAg
ICAvLyBodHRwczovL2dwdXdlYi5naXRodWIuaW8vZ3B1d2ViLyNhYnN0cmFjdC1vcGRlZi1jb21w
dXRlLXJlbmRlci1leHRlbnQKKworICAgIC8vICJMZXQgZXh0ZW50IGJlIGEgbmV3IEdQVUV4dGVu
dDNERGljdCBvYmplY3QuIgorICAgIFdHUFVFeHRlbnQzRCBleHRlbnQgeyB9OworCisgICAgLy8g
IlNldCBleHRlbnQud2lkdGggdG8gbWF4KDEsIGJhc2VTaXplLndpZHRoIOKJqyBtaXBMZXZlbCku
IgorICAgIGV4dGVudC53aWR0aCA9IHN0ZDo6bWF4KHN0YXRpY19jYXN0PHVpbnQzMl90PigxKSwg
YmFzZVNpemUud2lkdGggPj4gbWlwTGV2ZWwpOworCisgICAgLy8gIlNldCBleHRlbnQuaGVpZ2h0
IHRvIG1heCgxLCBiYXNlU2l6ZS5oZWlnaHQg4omrIG1pcExldmVsKS4iCisgICAgZXh0ZW50Lmhl
aWdodCA9IHN0ZDo6bWF4KHN0YXRpY19jYXN0PHVpbnQzMl90PigxKSwgYmFzZVNpemUuaGVpZ2h0
ID4+IG1pcExldmVsKTsKKworICAgIC8vICJTZXQgZXh0ZW50LmRlcHRoT3JBcnJheUxheWVycyB0
byAxLiIKKyAgICBleHRlbnQuZGVwdGhPckFycmF5TGF5ZXJzID0gMTsKKworICAgIC8vICJSZXR1
cm4gZXh0ZW50LiIKKyAgICByZXR1cm4gZXh0ZW50OworfQorCitSZWZQdHI8VGV4dHVyZVZpZXc+
IFRleHR1cmU6OmNyZWF0ZVZpZXcoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYgaW5w
dXREZXNjcmlwdG9yKQoreworICAgIGlmIChpbnB1dERlc2NyaXB0b3IubmV4dEluQ2hhaW4pCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlv
L2dwdXdlYi8jZG9tLWdwdXRleHR1cmUtY3JlYXRldmlldworCisgICAgLy8gIlNldCBkZXNjcmlw
dG9yIHRvIHRoZSByZXN1bHQgb2YgcmVzb2x2aW5nIEdQVVRleHR1cmVWaWV3RGVzY3JpcHRvciBk
ZWZhdWx0cyB3aXRoIGRlc2NyaXB0b3IuIgorICAgIGF1dG8gZGVzY3JpcHRvciA9IHJlc29sdmVU
ZXh0dXJlVmlld0Rlc2NyaXB0b3JEZWZhdWx0cyhpbnB1dERlc2NyaXB0b3IpOworICAgIGlmICgh
ZGVzY3JpcHRvcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyAiSWYgYW55IG9m
IHRoZSBmb2xsb3dpbmcgcmVxdWlyZW1lbnRzIGFyZSB1bm1ldDoiCisgICAgaWYgKCF2YWxpZGF0
ZUNyZWF0ZVZpZXcoKmRlc2NyaXB0b3IpKSB7CisgICAgICAgIC8vICJHZW5lcmF0ZSBhIHZhbGlk
YXRpb24gZXJyb3IuIgorICAgICAgICBtX2RldmljZS0+Z2VuZXJhdGVBVmFsaWRhdGlvbkVycm9y
KCJWYWxpZGF0aW9uIGZhaWx1cmUuIl9zKTsKKworICAgICAgICAvLyBGSVhNRTogIlJldHVybiBh
IG5ldyBpbnZhbGlkIEdQVVRleHR1cmVWaWV3LiIKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorCisgICAgc3RkOjpvcHRpb25hbDxNVExQaXhlbEZvcm1hdD4gcGl4ZWxGb3JtYXQgPSBN
VExQaXhlbEZvcm1hdEludmFsaWQ7CisgICAgaWYgKGlzRGVwdGhPclN0ZW5jaWxGb3JtYXQoZGVz
Y3JpcHRvci0+Zm9ybWF0KSkgeworICAgICAgICBzd2l0Y2ggKGRlc2NyaXB0b3ItPmFzcGVjdCkg
eworICAgICAgICBjYXNlIFdHUFVUZXh0dXJlQXNwZWN0X0FsbDoKKyAgICAgICAgICAgIHBpeGVs
Rm9ybWF0ID0gV2ViR1BVOjpwaXhlbEZvcm1hdChkZXNjcmlwdG9yLT5mb3JtYXQpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVBc3BlY3RfU3RlbmNpbE9ubHk6
CisgICAgICAgICAgICBwaXhlbEZvcm1hdCA9IHN0ZW5jaWxPbmx5QXNwZWN0TWV0YWxGb3JtYXQo
ZGVzY3JpcHRvci0+Zm9ybWF0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdH
UFVUZXh0dXJlQXNwZWN0X0RlcHRoT25seToKKyAgICAgICAgICAgIHBpeGVsRm9ybWF0ID0gZGVw
dGhPbmx5QXNwZWN0TWV0YWxGb3JtYXQoZGVzY3JpcHRvci0+Zm9ybWF0KTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFdHUFVUZXh0dXJlQXNwZWN0X0ZvcmNlMzI6CisgICAgICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIXBpeGVsRm9y
bWF0KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBBU1NFUlQoKnBpeGVsRm9ybWF0ICE9
IE1UTFBpeGVsRm9ybWF0SW52YWxpZCk7CisKKyAgICBNVExUZXh0dXJlVHlwZSB0ZXh0dXJlVHlw
ZTsKKyAgICBzd2l0Y2ggKGRlc2NyaXB0b3ItPmRpbWVuc2lvbikgeworICAgIGNhc2UgV0dQVVRl
eHR1cmVWaWV3RGltZW5zaW9uX1VuZGVmaW5lZDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGlt
ZW5zaW9uXzFEOgorICAgICAgICBpZiAoZGVzY3JpcHRvci0+YXJyYXlMYXllckNvdW50ID09IDEp
CisgICAgICAgICAgICB0ZXh0dXJlVHlwZSA9IE1UTFRleHR1cmVUeXBlMUQ7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHRleHR1cmVUeXBlID0gTVRMVGV4dHVyZVR5cGUxREFycmF5OworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl8yRDoKKyAgICAg
ICAgaWYgKG1fZGVzY3JpcHRvci5zYW1wbGVDb3VudCA+IDEpCisgICAgICAgICAgICB0ZXh0dXJl
VHlwZSA9IE1UTFRleHR1cmVUeXBlMkRNdWx0aXNhbXBsZTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgdGV4dHVyZVR5cGUgPSBNVExUZXh0dXJlVHlwZTJEOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl8yREFycmF5OgorICAgICAgICBpZiAobV9k
ZXNjcmlwdG9yLnNhbXBsZUNvdW50ID4gMSkgeworI2lmIFBMQVRGT1JNKFdBVENIT1MpCisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyNlbHNlCisgICAgICAgICAgICB0ZXh0dXJlVHlwZSA9
IE1UTFRleHR1cmVUeXBlMkRNdWx0aXNhbXBsZUFycmF5OworI2VuZGlmCisgICAgICAgIH0gZWxz
ZQorICAgICAgICAgICAgdGV4dHVyZVR5cGUgPSBNVExUZXh0dXJlVHlwZTJEQXJyYXk7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX0N1YmU6CisgICAg
ICAgIHRleHR1cmVUeXBlID0gTVRMVGV4dHVyZVR5cGVDdWJlOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl9DdWJlQXJyYXk6CisgICAgICAgIHRleHR1
cmVUeXBlID0gTVRMVGV4dHVyZVR5cGVDdWJlQXJyYXk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uXzNEOgorICAgICAgICB0ZXh0dXJlVHlwZSA9IE1U
TFRleHR1cmVUeXBlM0Q7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3
RGltZW5zaW9uX0ZvcmNlMzI6CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAg
IGF1dG8gbGV2ZWxzID0gTlNNYWtlUmFuZ2UoZGVzY3JpcHRvci0+YmFzZU1pcExldmVsLCBkZXNj
cmlwdG9yLT5taXBMZXZlbENvdW50KTsKKworICAgIGF1dG8gc2xpY2VzID0gTlNNYWtlUmFuZ2Uo
ZGVzY3JpcHRvci0+YmFzZUFycmF5TGF5ZXIsIGRlc2NyaXB0b3ItPmFycmF5TGF5ZXJDb3VudCk7
CisKKyAgICBpZDxNVExUZXh0dXJlPiB0ZXh0dXJlID0gW21fdGV4dHVyZSBuZXdUZXh0dXJlVmll
d1dpdGhQaXhlbEZvcm1hdDoqcGl4ZWxGb3JtYXQgdGV4dHVyZVR5cGU6dGV4dHVyZVR5cGUgbGV2
ZWxzOmxldmVscyBzbGljZXM6c2xpY2VzXTsKKyAgICBpZiAoIXRleHR1cmUpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgdGV4dHVyZS5sYWJlbCA9IGZyb21BUEkoZGVzY3JpcHRvci0+
bGFiZWwpOworCisgICAgLy8gIkxldCB2aWV3IGJlIGEgbmV3IEdQVVRleHR1cmVWaWV3IG9iamVj
dC4iCisgICAgLy8gIlNldCB2aWV3LltbdGV4dHVyZV1dIHRvIHRoaXMuIgorICAgIC8vICJTZXQg
dmlldy5bW2Rlc2NyaXB0b3JdXSB0byBkZXNjcmlwdG9yLiIKKworICAgIC8vICJJZiB0aGlzLltb
ZGVzY3JpcHRvcl1dLnVzYWdlIGNvbnRhaW5zIFJFTkRFUl9BVFRBQ0hNRU5UOiIKKyAgICBzdGQ6
Om9wdGlvbmFsPFdHUFVFeHRlbnQzRD4gcmVuZGVyRXh0ZW50OworICAgIGlmICAobV9kZXNjcmlw
dG9yLnVzYWdlICYgV0dQVVRleHR1cmVVc2FnZV9SZW5kZXJBdHRhY2htZW50KSB7CisgICAgICAg
IC8vICJMZXQgcmVuZGVyRXh0ZW50IGJlIGNvbXB1dGUgcmVuZGVyIGV4dGVudCh0aGlzLltbZGVz
Y3JpcHRvcl1dLnNpemUsIGRlc2NyaXB0b3IuYmFzZU1pcExldmVsKS4iCisgICAgICAgIC8vICJT
ZXQgdmlldy5bW3JlbmRlckV4dGVudF1dIHRvIHJlbmRlckV4dGVudC4iCisgICAgICAgIHJlbmRl
ckV4dGVudCA9IGNvbXB1dGVSZW5kZXJFeHRlbnQobV9kZXNjcmlwdG9yLnNpemUsIGRlc2NyaXB0
b3ItPmJhc2VNaXBMZXZlbCk7CisgICAgfQorCisgICAgLy8gIlJldHVybiB2aWV3LiIKKyAgICBy
ZXR1cm4gVGV4dHVyZVZpZXc6OmNyZWF0ZSh0ZXh0dXJlLCAqZGVzY3JpcHRvciwgcmVuZGVyRXh0
ZW50KTsKIH0KIAogdm9pZCBUZXh0dXJlOjpkZXN0cm95KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJHUFUvV2ViR1BVL1RleHR1cmVWaWV3LmggYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJl
Vmlldy5oCmluZGV4IDcxMTI0MThhOGM5ZC4uYjA1YjRiMDNiODg2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5oCisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BV
L1RleHR1cmVWaWV3LmgKQEAgLTM0LDEyICszNCwxNCBAQCBzdHJ1Y3QgV0dQVVRleHR1cmVWaWV3
SW1wbCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCitjbGFzcyBUZXh0dXJlOworCiBjbGFzcyBU
ZXh0dXJlVmlldyA6IHB1YmxpYyBXR1BVVGV4dHVyZVZpZXdJbXBsLCBwdWJsaWMgUmVmQ291bnRl
ZDxUZXh0dXJlVmlldz4gewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8VGV4dHVyZVZpZXc+IGNyZWF0ZShpZDxNVExUZXh0dXJlPiB0ZXh0dXJl
KQorICAgIHN0YXRpYyBSZWY8VGV4dHVyZVZpZXc+IGNyZWF0ZShpZDxNVExUZXh0dXJlPiB0ZXh0
dXJlLCBjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBjb25zdCBz
dGQ6Om9wdGlvbmFsPFdHUFVFeHRlbnQzRD4mIHJlbmRlckV4dGVudCkKICAgICB7Ci0gICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFRleHR1cmVWaWV3KHRleHR1cmUpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgVGV4dHVyZVZpZXcodGV4dHVyZSwgZGVzY3JpcHRvciwgcmVuZGVy
RXh0ZW50KSk7CiAgICAgfQogCiAgICAgflRleHR1cmVWaWV3KCk7CkBAIC00NywxMSArNDksMTYg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0TGFiZWwoU3RyaW5nJiYpOwogCiAgICAgaWQ8TVRMVGV4
dHVyZT4gdGV4dHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZTsgfQorICAgIGNvbnN0IFdH
UFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGRlc2NyaXB0b3IoKSBjb25zdCB7IHJldHVybiBtX2Rl
c2NyaXB0b3I7IH0KKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFsPFdHUFVFeHRlbnQzRD4mIHJlbmRl
ckV4dGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyRXh0ZW50OyB9CiAKIHByaXZhdGU6Ci0g
ICAgVGV4dHVyZVZpZXcoaWQ8TVRMVGV4dHVyZT4pOworICAgIFRleHR1cmVWaWV3KGlkPE1UTFRl
eHR1cmU+LCBjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJiwgY29uc3Qgc3RkOjpvcHRp
b25hbDxXR1BVRXh0ZW50M0Q+Jik7CiAKICAgICBjb25zdCBpZDxNVExUZXh0dXJlPiBtX3RleHR1
cmUgeyBuaWwgfTsKKworICAgIGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IgbV9kZXNj
cmlwdG9yOworICAgIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V0dQVUV4dGVudDNEPiBtX3JlbmRlckV4
dGVudDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkdQVQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcubW0gYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJl
Vmlldy5tbQppbmRleCBhYTdkY2VkMWJlMzYuLmM3MmUxZTZlZWIyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcubW0KKysrIGIvU291cmNlL1dlYkdQVS9XZWJH
UFUvVGV4dHVyZVZpZXcubW0KQEAgLTMwLDggKzMwLDEwIEBACiAKIG5hbWVzcGFjZSBXZWJHUFUg
ewogCi1UZXh0dXJlVmlldzo6VGV4dHVyZVZpZXcoaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSkKK1Rl
eHR1cmVWaWV3OjpUZXh0dXJlVmlldyhpZDxNVExUZXh0dXJlPiB0ZXh0dXJlLCBjb25zdCBXR1BV
VGV4dHVyZVZpZXdEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFdH
UFVFeHRlbnQzRD4mIHJlbmRlckV4dGVudCkKICAgICA6IG1fdGV4dHVyZSh0ZXh0dXJlKQorICAg
ICwgbV9kZXNjcmlwdG9yKGRlc2NyaXB0b3IpCisgICAgLCBtX3JlbmRlckV4dGVudChyZW5kZXJF
eHRlbnQpCiB7CiB9CiAK
</data>
<flag name="commit-queue"
          id="483992"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455887</attachid>
            <date>2022-03-27 22:04:36 -0700</date>
            <delta_ts>2022-03-30 00:27:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.diff</filename>
            <type>text/plain</type>
            <size>28540</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">Y29tbWl0IGY0M2Y2OWQ5MTAzNTMxMmY4YzIxZjNjNzFlMzAyNTQxMTU0MGQ3MzYKQXV0aG9yOiBN
eWxlcyBDLiBNYXhmaWVsZCA8bW1heGZpZWxkQGFwcGxlLmNvbT4KRGF0ZTogICBTdW4gTWFyIDI3
IDIyOjA0OjA0IDIwMjIgLTA3MDAKCiAgICBQYXJ0IDIKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
R1BVL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCmluZGV4IDNlYmVhYjFjNDI0
My4uYzMxYTk4MDU0OGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViR1BVL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDIyLTAzLTI3ICBN
eWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgW1dlYkdQ
VV0gSW1wbGVtZW50IFRleHR1cmU6OmNyZWF0ZVZpZXcoKSBhY2NvcmRpbmcgdG8gdGhlIHNwZWMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODMxMQor
CisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0ZXh0dXJlIHZpZXdzLCB3aGljaCBhcmUg
dGhlIG9iamVjdHMgdGhhdCBnZXQgYm91bmQgdG8gcGlwZWxpbmVzIChyYXRoZXIKKyAgICAgICAg
dGhhbiB0ZXh0dXJlcyB0aGVtc2VsdmVzKS4gSXQgbGlua3MgdG8gdGhlIHNwZWMgd2hlcmUgcmVs
ZXZhbnQsIGFuZCBxdW90ZXMgdGhlIHNwZWMgaW4gY29tbWVudHMKKyAgICAgICAgd2hlcmUgcmVs
ZXZhbnQuCisKKyAgICAgICAgVGVzdDogYXBpL3ZhbGlkYXRpb24vY3JlYXRlVmlldy5zcGVjLnRz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJH
UFUvVGV4dHVyZS5oOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlOjpjcmVhdGUpOgorICAgICAg
ICAqIFdlYkdQVS9UZXh0dXJlLm1tOgorICAgICAgICAoV2ViR1BVOjpkZXB0aE9ubHlBc3BlY3RN
ZXRhbEZvcm1hdCk6CisgICAgICAgIChXZWJHUFU6OnN0ZW5jaWxPbmx5QXNwZWN0TWV0YWxGb3Jt
YXQpOgorICAgICAgICAoV2ViR1BVOjpEZXZpY2U6OmNyZWF0ZVRleHR1cmUpOgorICAgICAgICAo
V2ViR1BVOjpUZXh0dXJlOjpUZXh0dXJlKToKKyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZTo6cmVz
b2x2ZVRleHR1cmVWaWV3RGVzY3JpcHRvckRlZmF1bHRzIGNvbnN0KToKKyAgICAgICAgKFdlYkdQ
VTo6VGV4dHVyZTo6YXJyYXlMYXllckNvdW50IGNvbnN0KToKKyAgICAgICAgKFdlYkdQVTo6VGV4
dHVyZTo6dmFsaWRhdGVDcmVhdGVWaWV3IGNvbnN0KToKKyAgICAgICAgKFdlYkdQVTo6Y29tcHV0
ZVJlbmRlckV4dGVudCk6CisgICAgICAgIChXZWJHUFU6OlRleHR1cmU6OmNyZWF0ZVZpZXcpOgor
ICAgICAgICAqIFdlYkdQVS9UZXh0dXJlVmlldy5oOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJl
Vmlldzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkdQVTo6VGV4dHVyZVZpZXc6OmRlc2NyaXB0b3Ig
Y29uc3QpOgorICAgICAgICAoV2ViR1BVOjpUZXh0dXJlVmlldzo6cmVuZGVyRXh0ZW50IGNvbnN0
KToKKyAgICAgICAgKiBXZWJHUFUvVGV4dHVyZVZpZXcubW06CisgICAgICAgIChXZWJHUFU6OlRl
eHR1cmVWaWV3OjpUZXh0dXJlVmlldyk6CisKIDIwMjItMDMtMjcgIE15bGVzIEMuIE1heGZpZWxk
ICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViR1BVXSBSZWZhY3RvciBpc0Rl
cHRoT3JTdGVuY2lsRm9ybWF0KCkgZm9yIHVwY29taW5nIGRhdGEgdHJhbnNmZXIgcGF0Y2hlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZS5oIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvVGV4dHVyZS5oCmluZGV4IDEwMGJjNjQ3YzZhNy4uNTZmYjA5NmUxMjYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkdQ
VS9XZWJHUFUvVGV4dHVyZS5oCkBAIC0zNSwxNCArMzUsMTUgQEAgc3RydWN0IFdHUFVUZXh0dXJl
SW1wbCB7CiAKIG5hbWVzcGFjZSBXZWJHUFUgewogCitjbGFzcyBEZXZpY2U7CiBjbGFzcyBUZXh0
dXJlVmlldzsKIAogY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBXR1BVVGV4dHVyZUltcGwsIHB1Ymxp
YyBSZWZDb3VudGVkPFRleHR1cmU+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFRleHR1cmU+IGNyZWF0ZShpZDxNVExUZXh0dXJlPiB0ZXh0
dXJlLCBjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCisgICAgc3RhdGlj
IFJlZjxUZXh0dXJlPiBjcmVhdGUoaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSwgY29uc3QgV0dQVVRl
eHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBEZXZpY2UmIGRldmljZSkKICAgICB7Ci0gICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHR1cmUodGV4dHVyZSwgZGVzY3JpcHRvcikpOwor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0dXJlKHRleHR1cmUsIGRlc2NyaXB0b3Is
IGRldmljZSkpOwogICAgIH0KIAogICAgIH5UZXh0dXJlKCk7CkBAIC02MSwxMSArNjIsMTcgQEAg
cHVibGljOgogICAgIGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcigpIGNv
bnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRvcjsgfQogCiBwcml2YXRlOgotICAgIFRleHR1cmUoaWQ8
TVRMVGV4dHVyZT4sIGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYpOworICAgIFRleHR1cmUo
aWQ8TVRMVGV4dHVyZT4sIGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYsIERldmljZSYpOwor
CisgICAgc3RkOjpvcHRpb25hbDxXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yPiByZXNvbHZlVGV4
dHVyZVZpZXdEZXNjcmlwdG9yRGVmYXVsdHMoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRv
ciYpIGNvbnN0OworICAgIHVpbnQzMl90IGFycmF5TGF5ZXJDb3VudCgpIGNvbnN0OworICAgIGJv
b2wgdmFsaWRhdGVDcmVhdGVWaWV3KGNvbnN0IFdHUFVUZXh0dXJlVmlld0Rlc2NyaXB0b3ImKSBj
b25zdDsKIAogICAgIGNvbnN0IGlkPE1UTFRleHR1cmU+IG1fdGV4dHVyZSB7IG5pbCB9OwogCiAg
ICAgY29uc3QgV0dQVVRleHR1cmVEZXNjcmlwdG9yIG1fZGVzY3JpcHRvciB7IH07IC8vICJUaGUg
R1BVVGV4dHVyZURlc2NyaXB0b3IgZGVzY3JpYmluZyB0aGlzIHRleHR1cmUuIgorCisgICAgY29u
c3QgUmVmPERldmljZT4gbV9kZXZpY2U7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJHUFUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmUubW0gYi9Tb3VyY2UvV2ViR1BV
L1dlYkdQVS9UZXh0dXJlLm1tCmluZGV4IGJlOTI3YWM2ZmRhOS4uMTIwMWQ5MTQ2MzdiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlLm1tCisrKyBiL1NvdXJjZS9XZWJH
UFUvV2ViR1BVL1RleHR1cmUubW0KQEAgLTE0MzksNiArMTQzOSwyMzMgQEAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8TVRMUGl4ZWxGb3JtYXQ+IHBpeGVsRm9ybWF0KFdHUFVUZXh0dXJlRm9ybWF0IHRl
eHR1cmVGb3JtYXQKICAgICB9CiB9CiAKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPE1UTFBpeGVsRm9y
bWF0PiBkZXB0aE9ubHlBc3BlY3RNZXRhbEZvcm1hdChXR1BVVGV4dHVyZUZvcm1hdCB0ZXh0dXJl
Rm9ybWF0KQoreworICAgIHN3aXRjaCAodGV4dHVyZUZvcm1hdCkgeworICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfVW5kZWZpbmVkOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjhVbm9y
bToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1I4U25vcm06CisgICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9SOFVpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SOFNpbnQ6Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMTZVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfUjE2U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1IxNkZsb2F0OgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkc4VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9SRzhTbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHOFVpbnQ6CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzhTaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfUjMyRmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMzJVaW50OgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfUjMyU2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X1JHMTZVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkcxNlNpbnQ6CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzE2RmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9SR0JBOFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQThVbm9ybVNyZ2I6
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBOFNub3JtOgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfUkdCQThVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQThT
aW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkdSQThVbm9ybToKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0JHUkE4VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfUkdCMTBBMlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkcxMUIxMFVmbG9h
dDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQjlFNVVmbG9hdDoKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X1JHMzJGbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JH
MzJVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkczMlNpbnQ6CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9SR0JBMTZVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
UkdCQTE2U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkExNkZsb2F0OgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQTMyRmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9SR0JBMzJVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQTMyU2lu
dDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1N0ZW5jaWw4OgorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgxNlVub3JtOgor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVwdGgyNFBsdXM6CisgICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9EZXB0aDI0UGx1c1N0ZW5jaWw4OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfRGVwdGgyNFVub3JtU3RlbmNpbDg6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0
aDMyRmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9EZXB0aDMyRmxvYXRTdGVuY2ls
ODoKKyAgICAgICAgLy8gVGhpcyBpcyBhIGJpdCBzdXJwcmlzaW5nLCBidXQgaXQgc2hvdWxkIGJl
IGNvcnJlY3QuCisgICAgICAgIC8vIFdoZW4gdXNpbmcgdGhlIHZpZXcgYXMgYSByZW5kZXIgdGFy
Z2V0LCB3ZSdsbCBiaW5kIGl0IHRvIE1UTFJlbmRlclBhc3NEZXNjcmlwdG9yLmRlcHRoQXR0YWNo
bWVudCwgd2hpY2ggd2lsbCBpZ25vcmUgdGhlIHN0ZW5jaWwgYml0cy4KKyAgICAgICAgLy8gV2hl
biBhdHRhY2hpbmcgdGhlIHZpZXcgYXMgYSBzaGFkZXIgcmVzb3VyY2Ugdmlldywgb25seSB0aGUg
ZGVwdGggYXNwZWN0IGlzIHZpc2libGUgYW55d2F5LgorICAgICAgICAvLyBXaGVuIGNvcHlpbmcg
dG8vZnJvbSB0aGUgdGV4dHVyZSwgd2UgY2FuIHVzZSBNVExCbGl0T3B0aW9uLk1UTEJsaXRPcHRp
b25EZXB0aEZyb21EZXB0aFN0ZW5jaWwgdG8gaWdub3JlIHRoZSBzdGVuY2lsIGJpdHMuCisgICAg
ICAgIHJldHVybiBwaXhlbEZvcm1hdCh0ZXh0dXJlRm9ybWF0KTsKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0JDMVJHQkFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDMVJH
QkFVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzJSR0JBVW5vcm06Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzJSR0JBVW5vcm1TcmdiOgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfQkMzUkdCQVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
QkMzUkdCQVVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNFJVbm9ybToK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNFJTbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0JDNVJHVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzVSR1Nu
b3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkM2SFJHQlVmbG9hdDoKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0JDNkhSR0JGbG9hdDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X0JDN1JHQkFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDN1JHQkFVbm9y
bVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCOFVub3JtOgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQjhVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9FVEMyUkdCOEExVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9F
VEMyUkdCOEExVW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQkE4
VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FVEMyUkdCQThVbm9ybVNyZ2I6Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FQUNSMTFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0VBQ1IxMVNub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRUFDUkcx
MVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRUFDUkcxMVNub3JtOgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzR4NFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfQVNUQzR4NFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1
eDRVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM1eDRVbm9ybVNyZ2I6Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNXg1VW5vcm06CisgICAgY2FzZSBXR1BVVGV4
dHVyZUZvcm1hdF9BU1RDNXg1VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
QVNUQzZ4NVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzZ4NVVub3JtU3Jn
YjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM2eDZVbm9ybToKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0FTVEM2eDZVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9BU1RDOHg1VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg1VW5v
cm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4NlVub3JtOgorICAgIGNh
c2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4NlVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0FTVEM4eDhVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4
eDhVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NVVub3JtOgor
ICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDVVbm9ybVNyZ2I6CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4NlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfQVNUQzEweDZVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4
OFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDhVbm9ybVNyZ2I6Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4MTBVbm9ybToKKyAgICBjYXNlIFdHUFVU
ZXh0dXJlRm9ybWF0X0FTVEMxMHgxMFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X0FTVEMxMngxMFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEw
VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEyVW5vcm06Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTJVbm9ybVNyZ2I6CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9Gb3JjZTMyOgorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIH0KK30KKworc3RhdGljIHN0ZDo6b3B0aW9uYWw8TVRMUGl4ZWxGb3JtYXQ+IHN0ZW5jaWxP
bmx5QXNwZWN0TWV0YWxGb3JtYXQoV0dQVVRleHR1cmVGb3JtYXQgdGV4dHVyZUZvcm1hdCkKK3sK
KyAgICBzd2l0Y2ggKHRleHR1cmVGb3JtYXQpIHsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X1VuZGVmaW5lZDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1I4VW5vcm06CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9SOFNub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRf
UjhVaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjhTaW50OgorICAgIGNhc2UgV0dQ
VVRleHR1cmVGb3JtYXRfUjE2VWludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1IxNlNp
bnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SMTZGbG9hdDoKKyAgICBjYXNlIFdHUFVU
ZXh0dXJlRm9ybWF0X1JHOFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkc4U25v
cm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzhVaW50OgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfUkc4U2ludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1IzMkZsb2F0
OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUjMyVWludDoKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X1IzMlNpbnQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzE2VWludDoK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMTZTaW50OgorICAgIGNhc2UgV0dQVVRleHR1
cmVGb3JtYXRfUkcxNkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdCQThVbm9y
bToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkE4VW5vcm1TcmdiOgorICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfUkdCQThTbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0
X1JHQkE4VWludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkE4U2ludDoKKyAgICBj
YXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JHUkE4VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9CR1JBOFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQjEwQTJV
bm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMTFCMTBVZmxvYXQ6CisgICAgY2Fz
ZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0I5RTVVZmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZv
cm1hdF9SRzMyRmxvYXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SRzMyVWludDoKKyAg
ICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHMzJTaW50OgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfUkdCQTE2VWludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkExNlNpbnQ6
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9SR0JBMTZGbG9hdDoKKyAgICBjYXNlIFdHUFVU
ZXh0dXJlRm9ybWF0X1JHQkEzMkZsb2F0OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfUkdC
QTMyVWludDoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X1JHQkEzMlNpbnQ6CisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9TdGVuY2ls
ODoKKyAgICAgICAgcmV0dXJuIHBpeGVsRm9ybWF0KHRleHR1cmVGb3JtYXQpOworICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfRGVwdGgxNlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfRGVwdGgyNFBsdXM6CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9EZXB0aDI0UGx1c1N0ZW5jaWw4OgorICAgICAgICBBU1NFUlQocGl4
ZWxGb3JtYXQodGV4dHVyZUZvcm1hdCkgPT0gTVRMUGl4ZWxGb3JtYXREZXB0aDMyRmxvYXRfU3Rl
bmNpbDgpOworICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXRYMzJfU3RlbmNpbDg7CisjaWYg
UExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUNDQVRBTFlTVCkKKyAgICBjYXNlIFdHUFVUZXh0
dXJlRm9ybWF0X0RlcHRoMjRVbm9ybVN0ZW5jaWw4OgorICAgICAgICByZXR1cm4gTVRMUGl4ZWxG
b3JtYXRYMjRfU3RlbmNpbDg7CisjZWxzZQorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRGVw
dGgyNFVub3JtU3RlbmNpbDg6CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisjZW5kaWYK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMzJGbG9hdDoKKyAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0RlcHRoMzJGbG9hdFN0
ZW5jaWw4OgorICAgICAgICByZXR1cm4gTVRMUGl4ZWxGb3JtYXRYMzJfU3RlbmNpbDg7CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzFSR0JBVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9CQzFSR0JBVW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMy
UkdCQVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQkMyUkdCQVVub3JtU3JnYjoK
KyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDM1JHQkFVbm9ybToKKyAgICBjYXNlIFdHUFVU
ZXh0dXJlRm9ybWF0X0JDM1JHQkFVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9CQzRSVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzRSU25vcm06CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzVSR1Vub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfQkM1UkdTbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0JDNkhSR0JVZmxv
YXQ6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9CQzZIUkdCRmxvYXQ6CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9CQzdSR0JBVW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1h
dF9CQzdSR0JBVW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQjhV
bm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VUQzJSR0I4VW5vcm1TcmdiOgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQjhBMVVub3JtOgorICAgIGNhc2UgV0dQVVRl
eHR1cmVGb3JtYXRfRVRDMlJHQjhBMVVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X0VUQzJSR0JBOFVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRVRDMlJHQkE4
VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRUFDUjExVW5vcm06CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9FQUNSMTFTbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJl
Rm9ybWF0X0VBQ1JHMTFVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0VBQ1JHMTFT
bm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM0eDRVbm9ybToKKyAgICBjYXNl
IFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM0eDRVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9BU1RDNXg0VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNXg0
VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NVVub3JtOgorICAg
IGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzV4NVVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVU
ZXh0dXJlRm9ybWF0X0FTVEM2eDVVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FT
VEM2eDVVbm9ybVNyZ2I6CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng2VW5vcm06
CisgICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDNng2VW5vcm1TcmdiOgorICAgIGNhc2Ug
V0dQVVRleHR1cmVGb3JtYXRfQVNUQzh4NVVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3Jt
YXRfQVNUQzh4NVVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDZV
bm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEM4eDZVbm9ybVNyZ2I6CisgICAg
Y2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDOHg4VW5vcm06CisgICAgY2FzZSBXR1BVVGV4dHVy
ZUZvcm1hdF9BU1RDOHg4VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNU
QzEweDVVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg1VW5vcm1Tcmdi
OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDZVbm9ybToKKyAgICBjYXNlIFdH
UFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg2VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVG
b3JtYXRfQVNUQzEweDhVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMxMHg4
VW5vcm1TcmdiOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEweDEwVW5vcm06Cisg
ICAgY2FzZSBXR1BVVGV4dHVyZUZvcm1hdF9BU1RDMTB4MTBVbm9ybVNyZ2I6CisgICAgY2FzZSBX
R1BVVGV4dHVyZUZvcm1hdF9BU1RDMTJ4MTBVbm9ybToKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9y
bWF0X0FTVEMxMngxMFVub3JtU3JnYjoKKyAgICBjYXNlIFdHUFVUZXh0dXJlRm9ybWF0X0FTVEMx
MngxMlVub3JtOgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfQVNUQzEyeDEyVW5vcm1Tcmdi
OgorICAgIGNhc2UgV0dQVVRleHR1cmVGb3JtYXRfRm9yY2UzMjoKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICB9Cit9CisKIHN0YXRpYyBNVExTdG9yYWdlTW9kZSBzdG9yYWdlTW9k
ZShib29sIGRldmljZUhhc1VuaWZpZWRNZW1vcnkpCiB7CiAgICAgaWYgKGRldmljZUhhc1VuaWZp
ZWRNZW1vcnkpCkBAIC0xNTM4LDIxICsxNzY1LDM1MyBAQCBSZWZQdHI8VGV4dHVyZT4gRGV2aWNl
OjpjcmVhdGVUZXh0dXJlKGNvbnN0IFdHUFVUZXh0dXJlRGVzY3JpcHRvciYgZGVzY3JpcHRvcikK
ICAgICAvLyAiU2V0IHQuW1tkZXNjcmlwdG9yXV0gdG8gZGVzY3JpcHRvci4iCiAgICAgLy8gIlJl
dHVybiB0LiIKIAotICAgIHJldHVybiBUZXh0dXJlOjpjcmVhdGUodGV4dHVyZSwgZGVzY3JpcHRv
cik7CisgICAgcmV0dXJuIFRleHR1cmU6OmNyZWF0ZSh0ZXh0dXJlLCBkZXNjcmlwdG9yLCAqdGhp
cyk7CiB9CiAKLVRleHR1cmU6OlRleHR1cmUoaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSwgY29uc3Qg
V0dQVVRleHR1cmVEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorVGV4dHVyZTo6VGV4dHVyZShpZDxN
VExUZXh0dXJlPiB0ZXh0dXJlLCBjb25zdCBXR1BVVGV4dHVyZURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IsIERldmljZSYgZGV2aWNlKQogICAgIDogbV90ZXh0dXJlKHRleHR1cmUpCiAgICAgLCBtX2Rl
c2NyaXB0b3IoZGVzY3JpcHRvcikKKyAgICAsIG1fZGV2aWNlKGRldmljZSkKIHsKIH0KIAogVGV4
dHVyZTo6flRleHR1cmUoKSA9IGRlZmF1bHQ7CiAKLVJlZlB0cjxUZXh0dXJlVmlldz4gVGV4dHVy
ZTo6Y3JlYXRlVmlldyhjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJiBkZXNjcmlwdG9y
KQorc3RkOjpvcHRpb25hbDxXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yPiBUZXh0dXJlOjpyZXNv
bHZlVGV4dHVyZVZpZXdEZXNjcmlwdG9yRGVmYXVsdHMoY29uc3QgV0dQVVRleHR1cmVWaWV3RGVz
Y3JpcHRvciYgZGVzY3JpcHRvcikgY29uc3QKK3sKKyAgICAvLyBodHRwczovL2dwdXdlYi5naXRo
dWIuaW8vZ3B1d2ViLyNhYnN0cmFjdC1vcGRlZi1yZXNvbHZpbmctZ3B1dGV4dHVyZXZpZXdkZXNj
cmlwdG9yLWRlZmF1bHRzCisKKyAgICAvLyAiTGV0IHJlc29sdmVkIGJlIGEgY29weSBvZiBkZXNj
cmlwdG9yLiIKKyAgICBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yIHJlc29sdmVkID0gZGVzY3Jp
cHRvcjsKKworICAgIC8vICJJZiByZXNvbHZlZC5mb3JtYXQgaXMgdW5kZWZpbmVkIgorICAgIGlm
IChyZXNvbHZlZC5mb3JtYXQgPT0gV0dQVVRleHR1cmVGb3JtYXRfVW5kZWZpbmVkKSB7CisgICAg
ICAgIC8vICJzZXQgcmVzb2x2ZWQuZm9ybWF0IHRvIHRleHR1cmUuW1tkZXNjcmlwdG9yXV0uZm9y
bWF0LiIKKyAgICAgICAgcmVzb2x2ZWQuZm9ybWF0ID0gbV9kZXNjcmlwdG9yLmZvcm1hdDsKKyAg
ICB9CisKKyAgICAvLyAiSWYgcmVzb2x2ZWQubWlwTGV2ZWxDb3VudCBpcyB1bmRlZmluZWQiCisg
ICAgaWYgKHJlc29sdmVkLm1pcExldmVsQ291bnQgPT0gV0dQVV9NSVBfTEVWRUxfQ09VTlRfVU5E
RUZJTkVEKSB7CisgICAgICAgIC8vICJzZXQgcmVzb2x2ZWQubWlwTGV2ZWxDb3VudCB0byB0ZXh0
dXJlLltbZGVzY3JpcHRvcl1dLm1pcExldmVsQ291bnQg4oiSIHJlc29sdmVkLmJhc2VNaXBMZXZl
bC4iCisgICAgICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljLgorICAgICAgICBy
ZXNvbHZlZC5taXBMZXZlbENvdW50ID0gbV9kZXNjcmlwdG9yLm1pcExldmVsQ291bnQgLSByZXNv
bHZlZC5iYXNlTWlwTGV2ZWw7CisgICAgfQorCisgICAgLy8gIklmIHJlc29sdmVkLmRpbWVuc2lv
biBpcyB1bmRlZmluZWQiCisgICAgaWYgKHJlc29sdmVkLmRpbWVuc2lvbiA9PSBXR1BVVGV4dHVy
ZVZpZXdEaW1lbnNpb25fVW5kZWZpbmVkKSB7CisgICAgICAgIC8vICJhbmQgdGV4dHVyZS5bW2Rl
c2NyaXB0b3JdXS5kaW1lbnNpb24gaXM6IgorICAgICAgICBzd2l0Y2ggKG1fZGVzY3JpcHRvci5k
aW1lbnNpb24pIHsKKyAgICAgICAgY2FzZSBXR1BVVGV4dHVyZURpbWVuc2lvbl8xRDoKKyAgICAg
ICAgICAgIC8vICJTZXQgcmVzb2x2ZWQuZGltZW5zaW9uIHRvICIxZCIuIgorICAgICAgICAgICAg
cmVzb2x2ZWQuZGltZW5zaW9uID0gV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uXzFEOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVEaW1lbnNpb25fMkQ6CisgICAg
ICAgICAgICAvLyAiU2V0IHJlc29sdmVkLmRpbWVuc2lvbiB0byAiMmQiLiIKKyAgICAgICAgICAg
IHJlc29sdmVkLmRpbWVuc2lvbiA9IFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl8yRDsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdHUFVUZXh0dXJlRGltZW5zaW9uXzNEOgorICAg
ICAgICAgICAgLy8gIlNldCByZXNvbHZlZC5kaW1lbnNpb24gdG8gIjNkIi4iCisgICAgICAgICAg
ICByZXNvbHZlZC5kaW1lbnNpb24gPSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fM0Q7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXR1BVVGV4dHVyZURpbWVuc2lvbl9Gb3JjZTMy
OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gIklmIHJlc29sdmVkLmFy
cmF5TGF5ZXJDb3VudCBpcyB1bmRlZmluZWQiCisgICAgaWYgKHJlc29sdmVkLmFycmF5TGF5ZXJD
b3VudCA9PSBXR1BVX0FSUkFZX0xBWUVSX0NPVU5UX1VOREVGSU5FRCkgeworICAgICAgICAvLyAi
YW5kIHJlc29sdmVkLmRpbWVuc2lvbiBpczoiCisgICAgICAgIHN3aXRjaCAocmVzb2x2ZWQuZGlt
ZW5zaW9uKSB7CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX1VuZGVmaW5l
ZDoKKyAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fMUQ6
CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uXzJEOgorICAgICAgICBjYXNl
IFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl8zRDoKKyAgICAgICAgICAgIC8vICJTZXQgcmVzb2x2
ZWQuYXJyYXlMYXllckNvdW50IHRvIDEuIgorICAgICAgICAgICAgcmVzb2x2ZWQuYXJyYXlMYXll
ckNvdW50ID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdHUFVUZXh0dXJl
Vmlld0RpbWVuc2lvbl9DdWJlOgorICAgICAgICAgICAgLy8gIlNldCByZXNvbHZlZC5hcnJheUxh
eWVyQ291bnQgdG8gNi4iCisgICAgICAgICAgICByZXNvbHZlZC5hcnJheUxheWVyQ291bnQgPSA2
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5z
aW9uXzJEQXJyYXk6CisgICAgICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5zaW9uX0N1YmVB
cnJheToKKyAgICAgICAgICAgIC8vICJTZXQgcmVzb2x2ZWQuYXJyYXlMYXllckNvdW50IHRvIHRl
eHR1cmUuW1tkZXNjcmlwdG9yXV0uc2l6ZS5kZXB0aE9yQXJyYXlMYXllcnMg4oiSIGJhc2VBcnJh
eUxheWVyLiIKKyAgICAgICAgICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljCisg
ICAgICAgICAgICByZXNvbHZlZC5hcnJheUxheWVyQ291bnQgPSBtX2Rlc2NyaXB0b3Iuc2l6ZS5k
ZXB0aE9yQXJyYXlMYXllcnMgLSByZXNvbHZlZC5iYXNlQXJyYXlMYXllcjsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl9Gb3JjZTMyOgor
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gIlJldHVybiByZXNvbHZlZC4i
CisgICAgcmV0dXJuIHJlc29sdmVkOworfQorCit1aW50MzJfdCBUZXh0dXJlOjphcnJheUxheWVy
Q291bnQoKSBjb25zdAoreworICAgIC8vIGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIv
I2Fic3RyYWN0LW9wZGVmLWFycmF5LWxheWVyLWNvdW50CisKKyAgICAvLyAiSWYgdGV4dHVyZS5b
W2Rlc2NyaXB0b3JdXS5kaW1lbnNpb24gaXM6IgorICAgIHN3aXRjaCAobV9kZXNjcmlwdG9yLmRp
bWVuc2lvbikgeworICAgIGNhc2UgV0dQVVRleHR1cmVEaW1lbnNpb25fMUQ6CisgICAgICAgIC8v
ICJSZXR1cm4gMS4iCisgICAgICAgIHJldHVybiAxOworICAgIGNhc2UgV0dQVVRleHR1cmVEaW1l
bnNpb25fMkQ6CisgICAgICAgIC8vICJSZXR1cm4gdGV4dHVyZS5bW2Rlc2NyaXB0b3JdXS5zaXpl
LmRlcHRoT3JBcnJheUxheWVycy4iCisgICAgICAgIHJldHVybiBtX2Rlc2NyaXB0b3Iuc2l6ZS5k
ZXB0aE9yQXJyYXlMYXllcnM7CisgICAgY2FzZSBXR1BVVGV4dHVyZURpbWVuc2lvbl8zRDoKKyAg
ICAgICAgLy8gIlJldHVybiAxLiIKKyAgICAgICAgcmV0dXJuIDE7CisgICAgY2FzZSBXR1BVVGV4
dHVyZURpbWVuc2lvbl9Gb3JjZTMyOgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIDE7CisgICAgfQorfQorCitib29sIFRleHR1cmU6OnZhbGlkYXRlQ3JlYXRl
Vmlldyhjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKSBjb25zdAor
eworICAgIC8vIEZJWE1FOiAidGhpcyBpcyB2YWxpZCIKKworICAgIC8vICJJZiB0aGUgZGVzY3Jp
cHRvci5hc3BlY3QgaXMiCisgICAgc3dpdGNoIChkZXNjcmlwdG9yLmFzcGVjdCkgeworICAgIGNh
c2UgV0dQVVRleHR1cmVBc3BlY3RfQWxsOgorICAgICAgICBicmVhazsKKyAgICBjYXNlIFdHUFVU
ZXh0dXJlQXNwZWN0X1N0ZW5jaWxPbmx5OgorICAgICAgICAvLyAidGhpcy5bW2Rlc2NyaXB0b3Jd
XS5mb3JtYXQgbXVzdCBiZSBhIGRlcHRoLW9yLXN0ZW5jaWwgZm9ybWF0IHdoaWNoIGhhcyBhIHN0
ZW5jaWwgYXNwZWN0LiIKKyAgICAgICAgaWYgKCFjb250YWluc1N0ZW5jaWxBc3BlY3QobV9kZXNj
cmlwdG9yLmZvcm1hdCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgV0dQVVRleHR1cmVBc3BlY3RfRGVwdGhPbmx5OgorICAgICAgICAvLyAidGhp
cy5bW2Rlc2NyaXB0b3JdXS5mb3JtYXQgbXVzdCBiZSBhIGRlcHRoLW9yLXN0ZW5jaWwgZm9ybWF0
IHdoaWNoIGhhcyBhIGRlcHRoIGFzcGVjdC4iCisgICAgICAgIGlmICghY29udGFpbnNEZXB0aEFz
cGVjdChtX2Rlc2NyaXB0b3IuZm9ybWF0KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBXR1BVVGV4dHVyZUFzcGVjdF9Gb3JjZTMyOgorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gImRlc2NyaXB0b3IubWlwTGV2ZWxDb3Vu
dCBtdXN0IGJlID4gMC4iCisgICAgaWYgKCFkZXNjcmlwdG9yLm1pcExldmVsQ291bnQpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIC8vICJkZXNjcmlwdG9yLmJhc2VNaXBMZXZlbCArIGRl
c2NyaXB0b3IubWlwTGV2ZWxDb3VudCBtdXN0IGJlIOKJpCB0aGlzLltbZGVzY3JpcHRvcl1dLm1p
cExldmVsQ291bnQuIgorICAgIC8vIEZJWE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljLgorICAg
IGlmIChkZXNjcmlwdG9yLmJhc2VNaXBMZXZlbCArIGRlc2NyaXB0b3IubWlwTGV2ZWxDb3VudCA+
IG1fZGVzY3JpcHRvci5taXBMZXZlbENvdW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICAvLyAiZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgbXVzdCBiZSA+IDAuIgorICAgIGlmICgh
ZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IC8vICJkZXNjcmlwdG9yLmJhc2VBcnJheUxheWVyICsgZGVzY3JpcHRvci5hcnJheUxheWVyQ291
bnQgbXVzdCBiZSDiiaQgdGhlIGFycmF5IGxheWVyIGNvdW50IG9mIHRoaXMuIgorICAgIC8vIEZJ
WE1FOiBVc2UgY2hlY2tlZCBhcml0aG1ldGljLgorICAgIGlmIChkZXNjcmlwdG9yLmJhc2VBcnJh
eUxheWVyICsgZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgPiBhcnJheUxheWVyQ291bnQoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gRklYTUU6ICJkZXNjcmlwdG9yLmZvcm1h
dCBtdXN0IGJlIGVxdWFsIHRvIGVpdGhlciB0aGlzLltbZGVzY3JpcHRvcl1dLmZvcm1hdCBvciBv
bmUgb2YgdGhlIGZvcm1hdHMgaW4gdGhpcy5bW2Rlc2NyaXB0b3JdXS52aWV3Rm9ybWF0cy4iCisg
ICAgaWYgKGRlc2NyaXB0b3IuZm9ybWF0ICE9IG1fZGVzY3JpcHRvci5mb3JtYXQpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIC8vICJJZiBkZXNjcmlwdG9yLmRpbWVuc2lvbiBpczoiCisg
ICAgc3dpdGNoIChkZXNjcmlwdG9yLmRpbWVuc2lvbikgeworICAgIGNhc2UgV0dQVVRleHR1cmVW
aWV3RGltZW5zaW9uX1VuZGVmaW5lZDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2Ug
V0dQVVRleHR1cmVWaWV3RGltZW5zaW9uXzFEOgorICAgICAgICAvLyAidGhpcy5bW2Rlc2NyaXB0
b3JdXS5kaW1lbnNpb24gbXVzdCBiZSAiMWQiLiIKKyAgICAgICAgaWYgKG1fZGVzY3JpcHRvci5k
aW1lbnNpb24gIT0gV0dQVVRleHR1cmVEaW1lbnNpb25fMUQpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgLy8gImRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50IG11c3QgYmUg
MS4iCisgICAgICAgIGlmIChkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCAhPSAxKQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdHUFVUZXh0dXJl
Vmlld0RpbWVuc2lvbl8yRDoKKyAgICAgICAgLy8gInRoaXMuW1tkZXNjcmlwdG9yXV0uZGltZW5z
aW9uIG11c3QgYmUgIjJkIi4iCisgICAgICAgIGlmIChtX2Rlc2NyaXB0b3IuZGltZW5zaW9uICE9
IFdHUFVUZXh0dXJlRGltZW5zaW9uXzJEKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIC8vICJkZXNjcmlwdG9yLmFycmF5TGF5ZXJDb3VudCBtdXN0IGJlIDEuIgorICAgICAg
ICBpZiAoZGVzY3JpcHRvci5hcnJheUxheWVyQ291bnQgIT0gMSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNp
b25fMkRBcnJheToKKyAgICAgICAgLy8gInRoaXMuW1tkZXNjcmlwdG9yXV0uZGltZW5zaW9uIG11
c3QgYmUgIjJkIi4iCisgICAgICAgIGlmIChtX2Rlc2NyaXB0b3IuZGltZW5zaW9uICE9IFdHUFVU
ZXh0dXJlRGltZW5zaW9uXzJEKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl9DdWJlOgorICAgICAgICAv
LyAidGhpcy5bW2Rlc2NyaXB0b3JdXS5kaW1lbnNpb24gbXVzdCBiZSAiMmQiLiIKKyAgICAgICAg
aWYgKG1fZGVzY3JpcHRvci5kaW1lbnNpb24gIT0gV0dQVVRleHR1cmVEaW1lbnNpb25fMkQpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gImRlc2NyaXB0b3IuYXJyYXlM
YXllckNvdW50IG11c3QgYmUgNi4iCisgICAgICAgIGlmIChkZXNjcmlwdG9yLmFycmF5TGF5ZXJD
b3VudCAhPSA2KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIC8vICJ0aGlz
LltbZGVzY3JpcHRvcl1dLnNpemUud2lkdGggbXVzdCBiZSB0aGlzLltbZGVzY3JpcHRvcl1dLnNp
emUuaGVpZ2h0LiIKKyAgICAgICAgaWYgKG1fZGVzY3JpcHRvci5zaXplLndpZHRoICE9IG1fZGVz
Y3JpcHRvci5zaXplLmhlaWdodCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25fQ3ViZUFycmF5OgorICAg
ICAgICAvLyAidGhpcy5bW2Rlc2NyaXB0b3JdXS5kaW1lbnNpb24gbXVzdCBiZSAiMmQiLiIKKyAg
ICAgICAgaWYgKG1fZGVzY3JpcHRvci5kaW1lbnNpb24gIT0gV0dQVVRleHR1cmVEaW1lbnNpb25f
MkQpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8gImRlc2NyaXB0b3Iu
YXJyYXlMYXllckNvdW50IG11c3QgYmUgYSBtdWx0aXBsZSBvZiA2LiIKKyAgICAgICAgaWYgKGRl
c2NyaXB0b3IuYXJyYXlMYXllckNvdW50ICUgNikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgICAgICAvLyAidGhpcy5bW2Rlc2NyaXB0b3JdXS5zaXplLndpZHRoIG11c3QgYmUgdGhp
cy5bW2Rlc2NyaXB0b3JdXS5zaXplLmhlaWdodC4iCisgICAgICAgIGlmIChtX2Rlc2NyaXB0b3Iu
c2l6ZS53aWR0aCAhPSBtX2Rlc2NyaXB0b3Iuc2l6ZS5oZWlnaHQpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV0dQVVRleHR1cmVWaWV3RGltZW5z
aW9uXzNEOgorICAgICAgICAvLyAidGhpcy5bW2Rlc2NyaXB0b3JdXS5kaW1lbnNpb24gbXVzdCBi
ZSAiM2QiLiIKKyAgICAgICAgaWYgKG1fZGVzY3JpcHRvci5kaW1lbnNpb24gIT0gV0dQVVRleHR1
cmVEaW1lbnNpb25fM0QpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgLy8g
ImRlc2NyaXB0b3IuYXJyYXlMYXllckNvdW50IG11c3QgYmUgMS4iCisgICAgICAgIGlmIChkZXNj
cmlwdG9yLmFycmF5TGF5ZXJDb3VudCAhPSAxKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl9Gb3JjZTMy
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgV0dQVUV4dGVudDNEIGNvbXB1
dGVSZW5kZXJFeHRlbnQoY29uc3QgV0dQVUV4dGVudDNEJiBiYXNlU2l6ZSwgdWludDMyX3QgbWlw
TGV2ZWwpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGRlc2NyaXB0b3IpOwotICAgIHJldHVybiBUZXh0
dXJlVmlldzo6Y3JlYXRlKG5pbCk7CisgICAgLy8gaHR0cHM6Ly9ncHV3ZWIuZ2l0aHViLmlvL2dw
dXdlYi8jYWJzdHJhY3Qtb3BkZWYtY29tcHV0ZS1yZW5kZXItZXh0ZW50CisKKyAgICAvLyAiTGV0
IGV4dGVudCBiZSBhIG5ldyBHUFVFeHRlbnQzRERpY3Qgb2JqZWN0LiIKKyAgICBXR1BVRXh0ZW50
M0QgZXh0ZW50IHsgfTsKKworICAgIC8vICJTZXQgZXh0ZW50LndpZHRoIHRvIG1heCgxLCBiYXNl
U2l6ZS53aWR0aCDiiasgbWlwTGV2ZWwpLiIKKyAgICBleHRlbnQud2lkdGggPSBzdGQ6Om1heChz
dGF0aWNfY2FzdDx1aW50MzJfdD4oMSksIGJhc2VTaXplLndpZHRoID4+IG1pcExldmVsKTsKKwor
ICAgIC8vICJTZXQgZXh0ZW50LmhlaWdodCB0byBtYXgoMSwgYmFzZVNpemUuaGVpZ2h0IOKJqyBt
aXBMZXZlbCkuIgorICAgIGV4dGVudC5oZWlnaHQgPSBzdGQ6Om1heChzdGF0aWNfY2FzdDx1aW50
MzJfdD4oMSksIGJhc2VTaXplLmhlaWdodCA+PiBtaXBMZXZlbCk7CisKKyAgICAvLyAiU2V0IGV4
dGVudC5kZXB0aE9yQXJyYXlMYXllcnMgdG8gMS4iCisgICAgZXh0ZW50LmRlcHRoT3JBcnJheUxh
eWVycyA9IDE7CisKKyAgICAvLyAiUmV0dXJuIGV4dGVudC4iCisgICAgcmV0dXJuIGV4dGVudDsK
K30KKworUmVmUHRyPFRleHR1cmVWaWV3PiBUZXh0dXJlOjpjcmVhdGVWaWV3KGNvbnN0IFdHUFVU
ZXh0dXJlVmlld0Rlc2NyaXB0b3ImIGlucHV0RGVzY3JpcHRvcikKK3sKKyAgICBpZiAoaW5wdXRE
ZXNjcmlwdG9yLm5leHRJbkNoYWluKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIC8v
IGh0dHBzOi8vZ3B1d2ViLmdpdGh1Yi5pby9ncHV3ZWIvI2RvbS1ncHV0ZXh0dXJlLWNyZWF0ZXZp
ZXcKKworICAgIC8vICJTZXQgZGVzY3JpcHRvciB0byB0aGUgcmVzdWx0IG9mIHJlc29sdmluZyBH
UFVUZXh0dXJlVmlld0Rlc2NyaXB0b3IgZGVmYXVsdHMgd2l0aCBkZXNjcmlwdG9yLiIKKyAgICBh
dXRvIGRlc2NyaXB0b3IgPSByZXNvbHZlVGV4dHVyZVZpZXdEZXNjcmlwdG9yRGVmYXVsdHMoaW5w
dXREZXNjcmlwdG9yKTsKKyAgICBpZiAoIWRlc2NyaXB0b3IpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgLy8gIklmIGFueSBvZiB0aGUgZm9sbG93aW5nIHJlcXVpcmVtZW50cyBhcmUg
dW5tZXQ6IgorICAgIGlmICghdmFsaWRhdGVDcmVhdGVWaWV3KCpkZXNjcmlwdG9yKSkgeworICAg
ICAgICAvLyAiR2VuZXJhdGUgYSB2YWxpZGF0aW9uIGVycm9yLiIKKyAgICAgICAgbV9kZXZpY2Ut
PmdlbmVyYXRlQVZhbGlkYXRpb25FcnJvcigiVmFsaWRhdGlvbiBmYWlsdXJlLiJfcyk7CisKKyAg
ICAgICAgLy8gRklYTUU6ICJSZXR1cm4gYSBuZXcgaW52YWxpZCBHUFVUZXh0dXJlVmlldy4iCisg
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIHN0ZDo6b3B0aW9uYWw8TVRMUGl4
ZWxGb3JtYXQ+IHBpeGVsRm9ybWF0ID0gTVRMUGl4ZWxGb3JtYXRJbnZhbGlkOworICAgIGlmIChp
c0RlcHRoT3JTdGVuY2lsRm9ybWF0KGRlc2NyaXB0b3ItPmZvcm1hdCkpIHsKKyAgICAgICAgc3dp
dGNoIChkZXNjcmlwdG9yLT5hc3BlY3QpIHsKKyAgICAgICAgY2FzZSBXR1BVVGV4dHVyZUFzcGVj
dF9BbGw6CisgICAgICAgICAgICBwaXhlbEZvcm1hdCA9IFdlYkdQVTo6cGl4ZWxGb3JtYXQoZGVz
Y3JpcHRvci0+Zm9ybWF0KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdHUFVU
ZXh0dXJlQXNwZWN0X1N0ZW5jaWxPbmx5OgorICAgICAgICAgICAgcGl4ZWxGb3JtYXQgPSBzdGVu
Y2lsT25seUFzcGVjdE1ldGFsRm9ybWF0KGRlc2NyaXB0b3ItPmZvcm1hdCk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBXR1BVVGV4dHVyZUFzcGVjdF9EZXB0aE9ubHk6CisgICAg
ICAgICAgICBwaXhlbEZvcm1hdCA9IGRlcHRoT25seUFzcGVjdE1ldGFsRm9ybWF0KGRlc2NyaXB0
b3ItPmZvcm1hdCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXR1BVVGV4dHVy
ZUFzcGVjdF9Gb3JjZTMyOgorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0K
KyAgICB9CisgICAgaWYgKCFwaXhlbEZvcm1hdCkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgQVNTRVJUKCpwaXhlbEZvcm1hdCAhPSBNVExQaXhlbEZvcm1hdEludmFsaWQpOworCisgICAg
TVRMVGV4dHVyZVR5cGUgdGV4dHVyZVR5cGU7CisgICAgc3dpdGNoIChkZXNjcmlwdG9yLT5kaW1l
bnNpb24pIHsKKyAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl9VbmRlZmluZWQ6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl8xRDoKKyAgICAgICAgaWYgKGRlc2NyaXB0
b3ItPmFycmF5TGF5ZXJDb3VudCA9PSAxKQorICAgICAgICAgICAgdGV4dHVyZVR5cGUgPSBNVExU
ZXh0dXJlVHlwZTFEOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0ZXh0dXJlVHlwZSA9IE1U
TFRleHR1cmVUeXBlMURBcnJheTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXR1BVVGV4dHVy
ZVZpZXdEaW1lbnNpb25fMkQ6CisgICAgICAgIGlmIChtX2Rlc2NyaXB0b3Iuc2FtcGxlQ291bnQg
PiAxKQorICAgICAgICAgICAgdGV4dHVyZVR5cGUgPSBNVExUZXh0dXJlVHlwZTJETXVsdGlzYW1w
bGU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRleHR1cmVUeXBlID0gTVRMVGV4dHVyZVR5
cGUyRDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25f
MkRBcnJheToKKyAgICAgICAgaWYgKG1fZGVzY3JpcHRvci5zYW1wbGVDb3VudCA+IDEpIHsKKyNp
ZiBQTEFURk9STShXQVRDSE9TKQorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisjZWxzZQor
ICAgICAgICAgICAgdGV4dHVyZVR5cGUgPSBNVExUZXh0dXJlVHlwZTJETXVsdGlzYW1wbGVBcnJh
eTsKKyNlbmRpZgorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRleHR1cmVUeXBlID0gTVRM
VGV4dHVyZVR5cGUyREFycmF5OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdHUFVUZXh0dXJl
Vmlld0RpbWVuc2lvbl9DdWJlOgorICAgICAgICB0ZXh0dXJlVHlwZSA9IE1UTFRleHR1cmVUeXBl
Q3ViZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXR1BVVGV4dHVyZVZpZXdEaW1lbnNpb25f
Q3ViZUFycmF5OgorICAgICAgICB0ZXh0dXJlVHlwZSA9IE1UTFRleHR1cmVUeXBlQ3ViZUFycmF5
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl8zRDoK
KyAgICAgICAgdGV4dHVyZVR5cGUgPSBNVExUZXh0dXJlVHlwZTNEOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFdHUFVUZXh0dXJlVmlld0RpbWVuc2lvbl9Gb3JjZTMyOgorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKyAgICB9CisKKyAgICBhdXRvIGxldmVscyA9IE5TTWFrZVJhbmdlKGRlc2Ny
aXB0b3ItPmJhc2VNaXBMZXZlbCwgZGVzY3JpcHRvci0+bWlwTGV2ZWxDb3VudCk7CisKKyAgICBh
dXRvIHNsaWNlcyA9IE5TTWFrZVJhbmdlKGRlc2NyaXB0b3ItPmJhc2VBcnJheUxheWVyLCBkZXNj
cmlwdG9yLT5hcnJheUxheWVyQ291bnQpOworCisgICAgaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSA9
IFttX3RleHR1cmUgbmV3VGV4dHVyZVZpZXdXaXRoUGl4ZWxGb3JtYXQ6KnBpeGVsRm9ybWF0IHRl
eHR1cmVUeXBlOnRleHR1cmVUeXBlIGxldmVsczpsZXZlbHMgc2xpY2VzOnNsaWNlc107CisgICAg
aWYgKCF0ZXh0dXJlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHRleHR1cmUubGFi
ZWwgPSBmcm9tQVBJKGRlc2NyaXB0b3ItPmxhYmVsKTsKKworICAgIC8vICJMZXQgdmlldyBiZSBh
IG5ldyBHUFVUZXh0dXJlVmlldyBvYmplY3QuIgorICAgIC8vICJTZXQgdmlldy5bW3RleHR1cmVd
XSB0byB0aGlzLiIKKyAgICAvLyAiU2V0IHZpZXcuW1tkZXNjcmlwdG9yXV0gdG8gZGVzY3JpcHRv
ci4iCisKKyAgICAvLyAiSWYgdGhpcy5bW2Rlc2NyaXB0b3JdXS51c2FnZSBjb250YWlucyBSRU5E
RVJfQVRUQUNITUVOVDoiCisgICAgc3RkOjpvcHRpb25hbDxXR1BVRXh0ZW50M0Q+IHJlbmRlckV4
dGVudDsKKyAgICBpZiAgKG1fZGVzY3JpcHRvci51c2FnZSAmIFdHUFVUZXh0dXJlVXNhZ2VfUmVu
ZGVyQXR0YWNobWVudCkgeworICAgICAgICAvLyAiTGV0IHJlbmRlckV4dGVudCBiZSBjb21wdXRl
IHJlbmRlciBleHRlbnQodGhpcy5bW2Rlc2NyaXB0b3JdXS5zaXplLCBkZXNjcmlwdG9yLmJhc2VN
aXBMZXZlbCkuIgorICAgICAgICAvLyAiU2V0IHZpZXcuW1tyZW5kZXJFeHRlbnRdXSB0byByZW5k
ZXJFeHRlbnQuIgorICAgICAgICByZW5kZXJFeHRlbnQgPSBjb21wdXRlUmVuZGVyRXh0ZW50KG1f
ZGVzY3JpcHRvci5zaXplLCBkZXNjcmlwdG9yLT5iYXNlTWlwTGV2ZWwpOworICAgIH0KKworICAg
IC8vICJSZXR1cm4gdmlldy4iCisgICAgcmV0dXJuIFRleHR1cmVWaWV3OjpjcmVhdGUodGV4dHVy
ZSwgKmRlc2NyaXB0b3IsIHJlbmRlckV4dGVudCk7CiB9CiAKIHZvaWQgVGV4dHVyZTo6ZGVzdHJv
eSgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5oIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcuaAppbmRleCA3MTEyNDE4YThjOWQuLmIwNWI0
YjAzYjg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcuaAor
KysgYi9Tb3VyY2UvV2ViR1BVL1dlYkdQVS9UZXh0dXJlVmlldy5oCkBAIC0zNCwxMiArMzQsMTQg
QEAgc3RydWN0IFdHUFVUZXh0dXJlVmlld0ltcGwgewogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAor
Y2xhc3MgVGV4dHVyZTsKKwogY2xhc3MgVGV4dHVyZVZpZXcgOiBwdWJsaWMgV0dQVVRleHR1cmVW
aWV3SW1wbCwgcHVibGljIFJlZkNvdW50ZWQ8VGV4dHVyZVZpZXc+IHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFRleHR1cmVWaWV3PiBjcmVh
dGUoaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSkKKyAgICBzdGF0aWMgUmVmPFRleHR1cmVWaWV3PiBj
cmVhdGUoaWQ8TVRMVGV4dHVyZT4gdGV4dHVyZSwgY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3Jp
cHRvciYgZGVzY3JpcHRvciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXR1BVRXh0ZW50M0Q+JiByZW5k
ZXJFeHRlbnQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBUZXh0dXJlVmll
dyh0ZXh0dXJlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHR1cmVWaWV3KHRl
eHR1cmUsIGRlc2NyaXB0b3IsIHJlbmRlckV4dGVudCkpOwogICAgIH0KIAogICAgIH5UZXh0dXJl
VmlldygpOwpAQCAtNDcsMTEgKzQ5LDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldExhYmVsKFN0
cmluZyYmKTsKIAogICAgIGlkPE1UTFRleHR1cmU+IHRleHR1cmUoKSBjb25zdCB7IHJldHVybiBt
X3RleHR1cmU7IH0KKyAgICBjb25zdCBXR1BVVGV4dHVyZVZpZXdEZXNjcmlwdG9yJiBkZXNjcmlw
dG9yKCkgY29uc3QgeyByZXR1cm4gbV9kZXNjcmlwdG9yOyB9CisgICAgY29uc3Qgc3RkOjpvcHRp
b25hbDxXR1BVRXh0ZW50M0Q+JiByZW5kZXJFeHRlbnQoKSBjb25zdCB7IHJldHVybiBtX3JlbmRl
ckV4dGVudDsgfQogCiBwcml2YXRlOgotICAgIFRleHR1cmVWaWV3KGlkPE1UTFRleHR1cmU+KTsK
KyAgICBUZXh0dXJlVmlldyhpZDxNVExUZXh0dXJlPiwgY29uc3QgV0dQVVRleHR1cmVWaWV3RGVz
Y3JpcHRvciYsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8V0dQVUV4dGVudDNEPiYpOwogCiAgICAgY29u
c3QgaWQ8TVRMVGV4dHVyZT4gbV90ZXh0dXJlIHsgbmlsIH07CisKKyAgICBjb25zdCBXR1BVVGV4
dHVyZVZpZXdEZXNjcmlwdG9yIG1fZGVzY3JpcHRvcjsKKyAgICBjb25zdCBzdGQ6Om9wdGlvbmFs
PFdHUFVFeHRlbnQzRD4gbV9yZW5kZXJFeHRlbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJH
UFUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVWaWV3Lm1tIGIvU291
cmNlL1dlYkdQVS9XZWJHUFUvVGV4dHVyZVZpZXcubW0KaW5kZXggYWE3ZGNlZDFiZTM2Li5jNzJl
MWU2ZWViMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJHUFUvV2ViR1BVL1RleHR1cmVWaWV3Lm1tCkBAIC0zMCw4ICszMCwx
MCBAQAogCiBuYW1lc3BhY2UgV2ViR1BVIHsKIAotVGV4dHVyZVZpZXc6OlRleHR1cmVWaWV3KGlk
PE1UTFRleHR1cmU+IHRleHR1cmUpCitUZXh0dXJlVmlldzo6VGV4dHVyZVZpZXcoaWQ8TVRMVGV4
dHVyZT4gdGV4dHVyZSwgY29uc3QgV0dQVVRleHR1cmVWaWV3RGVzY3JpcHRvciYgZGVzY3JpcHRv
ciwgY29uc3Qgc3RkOjpvcHRpb25hbDxXR1BVRXh0ZW50M0Q+JiByZW5kZXJFeHRlbnQpCiAgICAg
OiBtX3RleHR1cmUodGV4dHVyZSkKKyAgICAsIG1fZGVzY3JpcHRvcihkZXNjcmlwdG9yKQorICAg
ICwgbV9yZW5kZXJFeHRlbnQocmVuZGVyRXh0ZW50KQogewogfQogCg==
</data>
<flag name="review"
          id="484006"
          type_id="1"
          status="+"
          setter="kkinnunen"
    />
    <flag name="commit-queue"
          id="484008"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>