<?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>74456</bug_id>
          
          <creation_ts>2011-12-13 15:32:07 -0800</creation_ts>
          <short_desc>[V8][Chromium] Reenable dedicated worker layout tests</short_desc>
          <delta_ts>2012-05-22 18:24:24 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>66511</blocked>
    
    <blocked>74449</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dmitry Lomov">dslomov</reporter>
          <assigned_to name="Dmitry Lomov">dslomov</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>levin</cc>
    
    <cc>li.yin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>520414</commentid>
    <comment_count>0</comment_count>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-12-13 15:32:07 -0800</bug_when>
    <thetext>Now that dedicated workers run in-process, DumpRenderTree supports them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520431</commentid>
    <comment_count>1</comment_count>
      <attachid>119100</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-12-13 15:41:53 -0800</bug_when>
    <thetext>Created attachment 119100
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520436</commentid>
    <comment_count>2</comment_count>
      <attachid>119100</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2011-12-13 15:47:26 -0800</bug_when>
    <thetext>Comment on attachment 119100
Fix

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

&gt; LayoutTests/ChangeLog:11
&gt; +        * platform/chromium/fast/workers/worker-script-error-expected.txt: Added.

It would be great to explain why we have Chromium specific results (in the ChangeLog).

&gt; LayoutTests/platform/chromium/test_expectations.txt:157
&gt; +WONTFIX SKIP : fast/workers/worker-crash-with-invalid-location.html = TEXT

I don&apos;t understand this last line.

&gt; LayoutTests/platform/chromium/test_expectations.txt:165
&gt; +WONTFIX SKIP : fast/workers/worker-multi-port.html = CRASH

Odd that we crash when we don&apos;t support it. That doesn&apos;t seem great.

&gt; LayoutTests/platform/chromium/test_expectations.txt:169
&gt; +

extra blank line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520443</commentid>
    <comment_count>3</comment_count>
      <attachid>119100</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-12-13 15:52:04 -0800</bug_when>
    <thetext>Comment on attachment 119100
Fix

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

&gt;&gt; LayoutTests/platform/chromium/test_expectations.txt:157
&gt;&gt; +WONTFIX SKIP : fast/workers/worker-crash-with-invalid-location.html = TEXT
&gt; 
&gt; I don&apos;t understand this last line.

This test tests shared workers.

&gt;&gt; LayoutTests/platform/chromium/test_expectations.txt:165
&gt;&gt; +WONTFIX SKIP : fast/workers/worker-multi-port.html = CRASH
&gt; 
&gt; Odd that we crash when we don&apos;t support it. That doesn&apos;t seem great.

I&apos;ll have a bug opened to fix this (and replace WONTFIX with bug ref.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520451</commentid>
    <comment_count>4</comment_count>
      <attachid>119101</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-12-13 15:59:13 -0800</bug_when>
    <thetext>Created attachment 119101
CR feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520475</commentid>
    <comment_count>5</comment_count>
      <attachid>119101</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-13 16:38:28 -0800</bug_when>
    <thetext>Comment on attachment 119101
CR feedback

Attachment 119101 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10871027

New failing tests:
fast/workers/worker-script-error.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520509</commentid>
    <comment_count>6</comment_count>
      <attachid>119115</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-12-13 17:14:05 -0800</bug_when>
    <thetext>Created attachment 119115
worker-script-error ignored

Filed https://bugs.webkit.org/show_bug.cgi?id=74466</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520516</commentid>
    <comment_count>7</comment_count>
      <attachid>119117</attachid>
    <who name="Dmitry Lomov">dslomov</who>
    <bug_when>2011-12-13 17:18:47 -0800</bug_when>
    <thetext>Created attachment 119117
Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520520</commentid>
    <comment_count>8</comment_count>
      <attachid>119117</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-13 17:28:33 -0800</bug_when>
    <thetext>Comment on attachment 119117
Rebased

Rejecting attachment 119117 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 1

ERROR: /mnt/git/webkit-commit-queue/LayoutTests/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).

Full output: http://queues.webkit.org/results/10874040</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520597</commentid>
    <comment_count>9</comment_count>
      <attachid>119117</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-13 18:56:31 -0800</bug_when>
    <thetext>Comment on attachment 119117
Rebased

Clearing flags on attachment: 119117

Committed r102729: &lt;http://trac.webkit.org/changeset/102729&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>520598</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-13 18:56:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631028</commentid>
    <comment_count>11</comment_count>
    <who name="Li Yin">li.yin</who>
    <bug_when>2012-05-22 18:19:55 -0700</bug_when>
    <thetext>I found all the shared workers tests were skipped on chromium.
In the file “LayoutTests/platform/chromium/test_exceptions.txt”, there is a note “// test_shell does not support shared workers”.

So, I have some questions about that:
1.How does chromium test the shared worker feature?
2.If test shell does not support it, why not fix it? Or maybe somebody be doing that?

Thanks very much in advance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>631032</commentid>
    <comment_count>12</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2012-05-22 18:24:24 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; I found all the shared workers tests were skipped on chromium.
&gt; In the file “LayoutTests/platform/chromium/test_exceptions.txt”, there is a note “// test_shell does not support shared workers”.
&gt; 
&gt; So, I have some questions about that:
&gt; 1.How does chromium test the shared worker feature?

I don&apos;t understand the question. Perhaps you are asking how chromium test shared workers. If so, search the chromium code for the name of one of of the shared worker test files to find the answer. (Basically it runs the test in the browser and simulates the necessary bits of the layout test controller.)

&gt; 2.If test shell does not support it, why not fix it? 

Shared workers are separate processes in chromium. They need to be accessible across processes at the very least due to the fact that they are shared and a single domain may occur in different renderer processes.

Now, the question remains should they always be in a separate process. So far the answer has been yes due to various reason with jam@chromium.org being the strongest advocate of this.


&gt; Or maybe somebody be doing that?

Nope.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119100</attachid>
            <date>2011-12-13 15:41:53 -0800</date>
            <delta_ts>2011-12-13 15:59:13 -0800</delta_ts>
            <desc>Fix</desc>
            <filename>74456.patch</filename>
            <type>text/plain</type>
            <size>7600</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlNDcwNzRiLi4yYzNhNDMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTIt
MTMgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0NTYKKyAgICAgICAgW1Y4XVtDaHJv
bWl1bV0gUmVlbmFibGUgZGVkaWNhdGVkIHdvcmtlciBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9mYXN0L3dvcmtlcnMvdXNlLW1hY2hpbmUtc3RhY2stZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnN0cnVjdG9y
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC93
b3JrZXJzL3dvcmtlci1sb2NhdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL2Zhc3Qvd29ya2Vycy93b3JrZXItc2NyaXB0LWVycm9yLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlv
bnMudHh0OgorCiAyMDExLTEyLTEzICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkIENocm9taXVtIGV4cGVjdGF0aW9ucyB1cGRhdGUuIEV4cGFu
ZCBhIGNvdXBsZSBvZiBleGlzdGluZyBzdXBwcmVzc2lvbnMuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3dvcmtlcnMvdXNlLW1hY2hpbmUtc3RhY2stZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC93b3JrZXJzL3Vz
ZS1tYWNoaW5lLXN0YWNrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi43NTUwMWY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vZmFzdC93b3JrZXJzL3VzZS1tYWNoaW5lLXN0YWNrLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDQgQEAKK1Rlc3Qgd29ya2VyIHRocmVhZCBzdGFjayB1c2FnZS4gU2hvdWxkIG5vdCBj
cmFzaC4KKworUEFTUyAoUmFuZ2VFcnJvcjogTWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVk
ZWQpCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qvd29y
a2Vycy93b3JrZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vZmFzdC93b3JrZXJzL3dvcmtlci1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI5Yjg0MwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qvd29ya2Vycy93b3JrZXIt
Y29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3QgV29ya2VyIGNv
bnN0cnVjdG9yIGZ1bmN0aW9uYWxpdHkuIFNob3VsZCBwcmludCBhIHNlcmllcyBvZiBQQVNTIG1l
c3NhZ2VzLCBmb2xsb3dlZCB3aXRoIERPTkUuCisKK1BBU1M6IHRvU3RyaW5nIGV4Y2VwdGlvbiBw
cm9wYWdhdGVkIGNvcnJlY3RseS4KK1BBU1M6IHRyeWluZyB0byBjcmVhdGUgd29ya2VycyByZWN1
cnNpdmVseSByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24gKFJhbmdlRXJyb3I6IE1heGltdW0gY2Fs
bCBzdGFjayBzaXplIGV4Y2VlZGVkKQorUEFTUzogaW52b2tpbmcgV29ya2VyIGNvbnN0cnVjdG9y
IHdpdGhvdXQgYXJndW1lbnRzIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoVHlwZUVycm9yOiBO
b3QgZW5vdWdoIGFyZ3VtZW50cykKK1BBU1M6IGludm9raW5nIFdvcmtlciBjb25zdHJ1Y3RvciB3
aXRoIGVtcHR5IHNjcmlwdCBVUkwgcmVzdWx0ZWQgaW4gYW4gZXhjZXB0aW9uIChFcnJvcjogU1lO
VEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMikKK1BBU1M6IGludm9raW5nIFdvcmtlciBjb25zdHJ1
Y3RvciB3aXRoIGludmFsaWQgc2NyaXB0IFVSTCByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24gKEVy
cm9yOiBTWU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyKQorUEFTUzogb25lcnJvciBpbnZva2Vk
IGZvciBhIHNjcmlwdCB0aGF0IGNvdWxkIG5vdCBiZSBsb2FkZWQuCitQQVNTOiBTdWNjZXNzZnVs
bHkgY3JlYXRlZCB3b3JrZXIuCitET05FCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2Zhc3Qvd29ya2Vycy93b3JrZXItbG9jYXRpb24tZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC93b3JrZXJzL3dvcmtlci1sb2NhdGlv
bi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ3ZGQ0
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qv
d29ya2Vycy93b3JrZXItbG9jYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1Rl
c3QgV29ya2VyTG9jYXRpb24gcHJvcGVydGllcy4KKworV29ya2VyTG9jYXRpb246IGZ1bmN0aW9u
IFdvcmtlckxvY2F0aW9uKCkgeyBbbmF0aXZlIGNvZGVdIH0KK3R5cGVvZiBsb2NhdGlvbjogb2Jq
ZWN0Citsb2NhdGlvbjogZmlsZTo8Li4uPi9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1j
b21tb24uanMKK2xvY2F0aW9uLmhyZWY6IGZpbGU6PC4uLj4vZmFzdC93b3JrZXJzL3Jlc291cmNl
cy93b3JrZXItY29tbW9uLmpzCitsb2NhdGlvbi5wcm90b2NvbDogZmlsZToKK2xvY2F0aW9uLmhv
c3Q6IAorbG9jYXRpb24uaG9zdG5hbWU6IAorbG9jYXRpb24ucG9ydDogCitsb2NhdGlvbi5wYXRo
bmFtZTogPC4uLj4vZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItY29tbW9uLmpzCitsb2Nh
dGlvbi5zZWFyY2g6IAorbG9jYXRpb24uaGFzaDogCitET05FCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qvd29ya2Vycy93b3JrZXItc2NyaXB0LWVycm9y
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qvd29ya2Vy
cy93b3JrZXItc2NyaXB0LWVycm9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5lODMxZDA4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC93b3JrZXJzL3dvcmtlci1zY3JpcHQtZXJyb3ItZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTUgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMDogVW5jYXVnaHQg
UmVmZXJlbmNlRXJyb3I6IGZvbyBpcyBub3QgZGVmaW5lZAorVGVzdCBXb3JrZXIgc2NyaXB0IGVy
cm9yIGhhbmRsaW5nIGZ1bmN0aW9uYWxpdHkuIFNob3VsZCBwcmludCBhIHNlcmllcyBvZiBQQVNT
IG1lc3NhZ2VzLCBmb2xsb3dlZCB3aXRoIERPTkUuCisKK1BBU1M6IG9uZXJyb3IgaW52b2tlZCBm
b3IgYSBzY3JpcHQgdGhhdCBoYXMgaW52YWxpZCBzeW50YXguCitQQVNTOiBvbmVycm9yIGludm9r
ZWQgZm9yIGEgc2NyaXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJvciAnVW5jYXVnaHQgUmVmZXJlbmNl
RXJyb3I6IGZvbyBpcyBub3QgZGVmaW5lZCcgYXQgbGluZSAxLgorUEFTUzogZXZlbnQgbGlzdGVu
ZXIgaW52b2tlZCBmb3IgYSBzY3JpcHQgdGhhdCBoYXMgc2NyaXB0IGVycm9yICdVbmNhdWdodCBS
ZWZlcmVuY2VFcnJvcjogZm9vIGlzIG5vdCBkZWZpbmVkJyBhdCBsaW5lIDEuCitQQVNTOiBvbmVy
cm9yIGludm9rZWQgZm9yIGEgc2NyaXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJvciAnVW5jYXVnaHQg
UmVmZXJlbmNlRXJyb3I6IGZvbyBpcyBub3QgZGVmaW5lZCcgYXQgbGluZSA3LgorUEFTUzogb25l
cnJvciBpbnZva2VkIGZvciBhIHNjcmlwdCB0aGF0IGhhcyBzY3JpcHQgZXJyb3IgJ1VuY2F1Z2h0
IFJlZmVyZW5jZUVycm9yOiBiYXIgaXMgbm90IGRlZmluZWQnIGF0IGxpbmUgMy4KK21lc3NhZ2Ug
ZnJvbSB3b3JrZXI6ICJQQVNTOiBvbmVycm9yIGluIHdvcmtlciBjb250ZXh0IGludm9rZWQgZm9y
IGEgc2NyaXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJvciAnVW5jYXVnaHQgUmVmZXJlbmNlRXJyb3I6
IGZvbyBpcyBub3QgZGVmaW5lZCcgYXQgbGluZSAxMCBpbiB3b3JrZXItc2NyaXB0LWVycm9yLWJ1
YmJsZWQuanMiLgorUEFTUzogb25lcnJvciBpbnZva2VkIGZvciBhIHNjcmlwdCB0aGF0IGhhcyBz
Y3JpcHQgZXJyb3IgJ1VuY2F1Z2h0IFJlZmVyZW5jZUVycm9yOiBmb28gaXMgbm90IGRlZmluZWQn
IGF0IGxpbmUgMTAuCitQQVNTOiBvbmVycm9yIGludm9rZWQgZm9yIGEgc2NyaXB0IHRoYXQgaGFz
IHNjcmlwdCBlcnJvciAnVW5jYXVnaHQgUmVmZXJlbmNlRXJyb3I6IGZvbyBpcyBub3QgZGVmaW5l
ZCcgYXQgbGluZSAxMC4KK1BBU1M6IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBXb3JrZXJHbG9iYWxT
Y29wZS5vbmVycm9yOiBvbmVycm9yIGludm9rZWQgZm9yIGEgc2NyaXB0IHRoYXQgaGFzIHNjcmlw
dCBlcnJvciAnVW5jYXVnaHQgUmVmZXJlbmNlRXJyb3I6IGZvbyBpcyBub3QgZGVmaW5lZCcgYXQg
bGluZSA3LgorUEFTUzogb25lcnJvciBpbnZva2VkIGZvciBhbiBleGNlcHRpb24gaW4gc2V0VGlt
ZW91dCBjYWxsYmFjay4KK0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IGFlOTY3NTQuLmE3ZWJkMWIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50
eHQKQEAgLTEzNiw4ICsxMzYsNDMgQEAgV09OVEZJWCBTS0lQIDogZmFzdC9wcm9maWxlciA9IEZB
SUwgVElNRU9VVAogLy8gaXMgaW1wbGVtZW50ZWQuCiBXT05URklYIFNLSVAgOiBzdG9yYWdlL2Rv
bXN0b3JhZ2UvbG9jYWxzdG9yYWdlL3N0b3JhZ2V0cmFja2VyID0gUEFTUyBUSU1FT1VUIEZBSUwK
IAotLy8gV2UgdXNlIHdvcmtlcl91aXRlc3RzIHRvIHJ1biB3b3JrZXJzIHRlc3RzLiBEb24ndCBy
dW4gdGhlbSBpbiB0ZXN0X3NoZWxsLgotV09OVEZJWCBTS0lQIDogZmFzdC93b3JrZXJzID0gUEFT
UyBUSU1FT1VUIEZBSUwKKy8vIHRlc3Rfc2hlbGwgZG9lcyBub3Qgc3VwcG9ydCBzaGFyZWQgd29y
a2VycworV09OVEZJWCBTS0lQIDogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItY29udGV4dC1n
Yy5odG1sID0gVElNRU9VVAorV09OVEZJWCBTS0lQIDogZmFzdC93b3JrZXJzL3NoYXJlZC13b3Jr
ZXItZXZlbnQtbGlzdGVuZXIuaHRtbCA9IFRJTUVPVVQKK1dPTlRGSVggU0tJUCA6IGZhc3Qvd29y
a2Vycy9zaGFyZWQtd29ya2VyLWV4Y2VwdGlvbi5odG1sID0gVElNRU9VVAorV09OVEZJWCBTS0lQ
IDogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItZnJhbWUtbGlmZWN5Y2xlLmh0bWwgPSBUSU1F
T1VUCitXT05URklYIFNLSVAgOiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1nYy5odG1sID0g
VElNRU9VVAorV09OVEZJWCBTS0lQIDogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItaW4taWZy
YW1lLmh0bWwgPSBUSU1FT1VUCitXT05URklYIFNLSVAgOiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdv
cmtlci1saWZlY3ljbGUuaHRtbCA9IFRJTUVPVVQKK1dPTlRGSVggU0tJUCA6IGZhc3Qvd29ya2Vy
cy9zaGFyZWQtd29ya2VyLWxvYWQtZXJyb3IuaHRtbCA9IFRJTUVPVVQKK1dPTlRGSVggU0tJUCA6
IGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWxvY2F0aW9uLmh0bWwgPSBUSU1FT1VUCitXT05U
RklYIFNLSVAgOiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYXZpZ2F0b3IuaHRtbCA9IFRJ
TUVPVVQKK1dPTlRGSVggU0tJUCA6IGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXJlcGxhY2Ut
Z2xvYmFsLWNvbnN0cnVjdG9yLmh0bWwgPSBUSU1FT1VUCitXT05URklYIFNLSVAgOiBmYXN0L3dv
cmtlcnMvc2hhcmVkLXdvcmtlci1yZXBsYWNlLXNlbGYuaHRtbCA9IFRJTUVPVVQKK1dPTlRGSVgg
U0tJUCA6IGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXNoYXJlZC5odG1sID0gVElNRU9VVAor
V09OVEZJWCBTS0lQIDogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItY29uc3RydWN0b3IuaHRt
bCA9IFRFWFQKK1dPTlRGSVggU0tJUCA6IGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUu
aHRtbCA9IFRFWFQKK1dPTlRGSVggU0tJUCA6IGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXNj
cmlwdC1lcnJvci5odG1sID0gVEVYVAorV09OVEZJWCBTS0lQIDogZmFzdC93b3JrZXJzL3NoYXJl
ZC13b3JrZXItc2ltcGxlLmh0bWwgPSBUSU1FT1VUCitXT05URklYIFNLSVAgOiBmYXN0L3dvcmtl
cnMvd29ya2VyLWNyYXNoLXdpdGgtaW52YWxpZC1sb2NhdGlvbi5odG1sID0gVEVYVAorCisvLyB0
ZXN0X3NoZWxsIGRvZXMgbm90IHN1cHBvcnQgbWVzc2FnZSBwb3J0cworV09OVEZJWCBTS0lQIDog
ZmFzdC93b3JrZXJzL3Rlcm1pbmF0aW9uLXdpdGgtcG9ydC1tZXNzYWdlcy5odG1sID0gQ1JBU0gK
K1dPTlRGSVggU0tJUCA6IGZhc3Qvd29ya2Vycy93b3JrZXItY2xvbmVwb3J0Lmh0bWwgPSBDUkFT
SAorV09OVEZJWCBTS0lQIDogZmFzdC93b3JrZXJzL3dvcmtlci1jb250ZXh0LW11bHRpLXBvcnQu
aHRtbCA9IENSQVNICitXT05URklYIFNLSVAgOiBmYXN0L3dvcmtlcnMvd29ya2VyLW1lc3NhZ2Vw
b3J0LWdjLmh0bWwgPSBDUkFTSAorV09OVEZJWCBTS0lQIDogZmFzdC93b3JrZXJzL3dvcmtlci1t
ZXNzYWdlcG9ydC5odG1sID0gQ1JBU0gKK1dPTlRGSVggU0tJUCA6IGZhc3Qvd29ya2Vycy93b3Jr
ZXItbXVsdGktcG9ydC5odG1sID0gQ1JBU0gKKworQlVHV0s3NDQ0OSBTS0lQIDogZmFzdC93b3Jr
ZXJzL3N0b3JhZ2UgPSBDUkFTSCBUSU1FT1VUCisKKworQlVHV0s3NDQ0OSBTS0lQIDogZmFzdC93
b3JrZXJzL2RlZGljYXRlZC13b3JrZXItbGlmZWN5Y2xlLmh0bWwgPSBUSU1FT1VUCitCVUdXSzc0
NDQ5IFNLSVAgOiBmYXN0L3dvcmtlcnMvd29ya2VyLWNsb3NlLW1vcmUuaHRtbCA9IFRJTUVPVVQK
K0JVR1dLNzQ0NDkgU0tJUCA6IGZhc3Qvd29ya2Vycy93b3JrZXItbGlmZWN5Y2xlLmh0bWwgPSBU
SU1FT1VUCisKKworLy8gdGVzdF9zaGVsbCBkb2VzIG5vdCBzdXBwb3J0IHdvcmtlcnMKIFdPTlRG
SVggU0tJUCA6IGZhc3QvZmlsZXMvd29ya2VycyA9IFBBU1MgVElNRU9VVCBGQUlMCiBXT05URklY
IFNLSVAgOiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2VycyA9IFBBU1MgVElNRU9VVCBGQUlMCiBXT05U
RklYIFNLSVAgOiBmYXN0L2NhbnZhcy93ZWJnbC93b3JrZXItZGF0YS12aWV3LXRlc3QuaHRtbCA9
IFBBU1MgVElNRU9VVCBGQUlMCg==
</data>
<flag name="review"
          id="118998"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119101</attachid>
            <date>2011-12-13 15:59:13 -0800</date>
            <delta_ts>2011-12-13 17:14:05 -0800</delta_ts>
            <desc>CR feedback</desc>
            <filename>74456.patch</filename>
            <type>text/plain</type>
            <size>7720</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlNDcwNzRiLi41YTc3YzIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTIt
MTMgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0NTYKKyAgICAgICAgW1Y4XVtDaHJv
bWl1bV0gUmVlbmFibGUgZGVkaWNhdGVkIHdvcmtlciBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAg
Q2hyb21pdW0tc3BlY2lmaWMgcmVzdWx0cyBhcmUgY2F1c2VkIGJ5IGV4Y2VwdGlvbiBtZXNzYWdl
IHRleHQgZGlmZmVyZW5jZXMgYmV0d2VlbiBKU0MgYW5kIFY4LgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC93
b3JrZXJzL3VzZS1tYWNoaW5lLXN0YWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vZmFzdC93b3JrZXJzL3dvcmtlci1jb25zdHJ1Y3Rvci1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3Qvd29ya2Vycy93
b3JrZXItbG9jYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9mYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoK
KwogMjAxMS0xMi0xMyAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCBDaHJvbWl1bSBleHBlY3RhdGlvbnMgdXBkYXRlLiBFeHBhbmQgYSBjb3Vw
bGUgb2YgZXhpc3Rpbmcgc3VwcHJlc3Npb25zLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZmFzdC93b3JrZXJzL3VzZS1tYWNoaW5lLXN0YWNrLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qvd29ya2Vycy91c2UtbWFjaGlu
ZS1zdGFjay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
NzU1MDFmNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L2Zhc3Qvd29ya2Vycy91c2UtbWFjaGluZS1zdGFjay1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0
IEBACitUZXN0IHdvcmtlciB0aHJlYWQgc3RhY2sgdXNhZ2UuIFNob3VsZCBub3QgY3Jhc2guCisK
K1BBU1MgKFJhbmdlRXJyb3I6IE1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkKQorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3dvcmtlcnMvd29y
a2VyLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2Zhc3Qvd29ya2Vycy93b3JrZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyOWI4NDMKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnN0cnVj
dG9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitUZXN0IFdvcmtlciBjb25zdHJ1Y3Rv
ciBmdW5jdGlvbmFsaXR5LiBTaG91bGQgcHJpbnQgYSBzZXJpZXMgb2YgUEFTUyBtZXNzYWdlcywg
Zm9sbG93ZWQgd2l0aCBET05FLgorCitQQVNTOiB0b1N0cmluZyBleGNlcHRpb24gcHJvcGFnYXRl
ZCBjb3JyZWN0bHkuCitQQVNTOiB0cnlpbmcgdG8gY3JlYXRlIHdvcmtlcnMgcmVjdXJzaXZlbHkg
cmVzdWx0ZWQgaW4gYW4gZXhjZXB0aW9uIChSYW5nZUVycm9yOiBNYXhpbXVtIGNhbGwgc3RhY2sg
c2l6ZSBleGNlZWRlZCkKK1BBU1M6IGludm9raW5nIFdvcmtlciBjb25zdHJ1Y3RvciB3aXRob3V0
IGFyZ3VtZW50cyByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24gKFR5cGVFcnJvcjogTm90IGVub3Vn
aCBhcmd1bWVudHMpCitQQVNTOiBpbnZva2luZyBXb3JrZXIgY29uc3RydWN0b3Igd2l0aCBlbXB0
eSBzY3JpcHQgVVJMIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoRXJyb3I6IFNZTlRBWF9FUlI6
IERPTSBFeGNlcHRpb24gMTIpCitQQVNTOiBpbnZva2luZyBXb3JrZXIgY29uc3RydWN0b3Igd2l0
aCBpbnZhbGlkIHNjcmlwdCBVUkwgcmVzdWx0ZWQgaW4gYW4gZXhjZXB0aW9uIChFcnJvcjogU1lO
VEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMikKK1BBU1M6IG9uZXJyb3IgaW52b2tlZCBmb3IgYSBz
Y3JpcHQgdGhhdCBjb3VsZCBub3QgYmUgbG9hZGVkLgorUEFTUzogU3VjY2Vzc2Z1bGx5IGNyZWF0
ZWQgd29ya2VyLgorRE9ORQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9mYXN0L3dvcmtlcnMvd29ya2VyLWxvY2F0aW9uLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qvd29ya2Vycy93b3JrZXItbG9jYXRpb24tZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0N2RkNDYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3dvcmtlcnMv
d29ya2VyLWxvY2F0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUZXN0IFdvcmtl
ckxvY2F0aW9uIHByb3BlcnRpZXMuCisKK1dvcmtlckxvY2F0aW9uOiBmdW5jdGlvbiBXb3JrZXJM
b2NhdGlvbigpIHsgW25hdGl2ZSBjb2RlXSB9Cit0eXBlb2YgbG9jYXRpb246IG9iamVjdAorbG9j
YXRpb246IGZpbGU6PC4uLj4vZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItY29tbW9uLmpz
Citsb2NhdGlvbi5ocmVmOiBmaWxlOjwuLi4+L2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2Vy
LWNvbW1vbi5qcworbG9jYXRpb24ucHJvdG9jb2w6IGZpbGU6Citsb2NhdGlvbi5ob3N0OiAKK2xv
Y2F0aW9uLmhvc3RuYW1lOiAKK2xvY2F0aW9uLnBvcnQ6IAorbG9jYXRpb24ucGF0aG5hbWU6IDwu
Li4+L2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWNvbW1vbi5qcworbG9jYXRpb24uc2Vh
cmNoOiAKK2xvY2F0aW9uLmhhc2g6IAorRE9ORQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3dvcmtlcnMvd29ya2Vy
LXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uZTgzMWQwOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2Zhc3Qvd29ya2Vycy93b3JrZXItc2NyaXB0LWVycm9yLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDE1IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTA6IFVuY2F1Z2h0IFJlZmVyZW5j
ZUVycm9yOiBmb28gaXMgbm90IGRlZmluZWQKK1Rlc3QgV29ya2VyIHNjcmlwdCBlcnJvciBoYW5k
bGluZyBmdW5jdGlvbmFsaXR5LiBTaG91bGQgcHJpbnQgYSBzZXJpZXMgb2YgUEFTUyBtZXNzYWdl
cywgZm9sbG93ZWQgd2l0aCBET05FLgorCitQQVNTOiBvbmVycm9yIGludm9rZWQgZm9yIGEgc2Ny
aXB0IHRoYXQgaGFzIGludmFsaWQgc3ludGF4LgorUEFTUzogb25lcnJvciBpbnZva2VkIGZvciBh
IHNjcmlwdCB0aGF0IGhhcyBzY3JpcHQgZXJyb3IgJ1VuY2F1Z2h0IFJlZmVyZW5jZUVycm9yOiBm
b28gaXMgbm90IGRlZmluZWQnIGF0IGxpbmUgMS4KK1BBU1M6IGV2ZW50IGxpc3RlbmVyIGludm9r
ZWQgZm9yIGEgc2NyaXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJvciAnVW5jYXVnaHQgUmVmZXJlbmNl
RXJyb3I6IGZvbyBpcyBub3QgZGVmaW5lZCcgYXQgbGluZSAxLgorUEFTUzogb25lcnJvciBpbnZv
a2VkIGZvciBhIHNjcmlwdCB0aGF0IGhhcyBzY3JpcHQgZXJyb3IgJ1VuY2F1Z2h0IFJlZmVyZW5j
ZUVycm9yOiBmb28gaXMgbm90IGRlZmluZWQnIGF0IGxpbmUgNy4KK1BBU1M6IG9uZXJyb3IgaW52
b2tlZCBmb3IgYSBzY3JpcHQgdGhhdCBoYXMgc2NyaXB0IGVycm9yICdVbmNhdWdodCBSZWZlcmVu
Y2VFcnJvcjogYmFyIGlzIG5vdCBkZWZpbmVkJyBhdCBsaW5lIDMuCittZXNzYWdlIGZyb20gd29y
a2VyOiAiUEFTUzogb25lcnJvciBpbiB3b3JrZXIgY29udGV4dCBpbnZva2VkIGZvciBhIHNjcmlw
dCB0aGF0IGhhcyBzY3JpcHQgZXJyb3IgJ1VuY2F1Z2h0IFJlZmVyZW5jZUVycm9yOiBmb28gaXMg
bm90IGRlZmluZWQnIGF0IGxpbmUgMTAgaW4gd29ya2VyLXNjcmlwdC1lcnJvci1idWJibGVkLmpz
Ii4KK1BBU1M6IG9uZXJyb3IgaW52b2tlZCBmb3IgYSBzY3JpcHQgdGhhdCBoYXMgc2NyaXB0IGVy
cm9yICdVbmNhdWdodCBSZWZlcmVuY2VFcnJvcjogZm9vIGlzIG5vdCBkZWZpbmVkJyBhdCBsaW5l
IDEwLgorUEFTUzogb25lcnJvciBpbnZva2VkIGZvciBhIHNjcmlwdCB0aGF0IGhhcyBzY3JpcHQg
ZXJyb3IgJ1VuY2F1Z2h0IFJlZmVyZW5jZUVycm9yOiBmb28gaXMgbm90IGRlZmluZWQnIGF0IGxp
bmUgMTAuCitQQVNTOiBtZXNzYWdlIHJlY2VpdmVkIGZyb20gV29ya2VyR2xvYmFsU2NvcGUub25l
cnJvcjogb25lcnJvciBpbnZva2VkIGZvciBhIHNjcmlwdCB0aGF0IGhhcyBzY3JpcHQgZXJyb3Ig
J1VuY2F1Z2h0IFJlZmVyZW5jZUVycm9yOiBmb28gaXMgbm90IGRlZmluZWQnIGF0IGxpbmUgNy4K
K1BBU1M6IG9uZXJyb3IgaW52b2tlZCBmb3IgYW4gZXhjZXB0aW9uIGluIHNldFRpbWVvdXQgY2Fs
bGJhY2suCitET05FCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCBhZTk2NzU0Li5hMjJjODUwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0x
MzYsOCArMTM2LDQxIEBAIFdPTlRGSVggU0tJUCA6IGZhc3QvcHJvZmlsZXIgPSBGQUlMIFRJTUVP
VVQKIC8vIGlzIGltcGxlbWVudGVkLgogV09OVEZJWCBTS0lQIDogc3RvcmFnZS9kb21zdG9yYWdl
L2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJhY2tlciA9IFBBU1MgVElNRU9VVCBGQUlMCiAKLS8vIFdl
IHVzZSB3b3JrZXJfdWl0ZXN0cyB0byBydW4gd29ya2VycyB0ZXN0cy4gRG9uJ3QgcnVuIHRoZW0g
aW4gdGVzdF9zaGVsbC4KLVdPTlRGSVggU0tJUCA6IGZhc3Qvd29ya2VycyA9IFBBU1MgVElNRU9V
VCBGQUlMCisvLyB0ZXN0X3NoZWxsIGRvZXMgbm90IHN1cHBvcnQgc2hhcmVkIHdvcmtlcnMKK1dP
TlRGSVggU0tJUCA6IGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnRleHQtZ2MuaHRtbCA9
IFRJTUVPVVQKK1dPTlRGSVggU0tJUCA6IGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWV2ZW50
LWxpc3RlbmVyLmh0bWwgPSBUSU1FT1VUCitXT05URklYIFNLSVAgOiBmYXN0L3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1leGNlcHRpb24uaHRtbCA9IFRJTUVPVVQKK1dPTlRGSVggU0tJUCA6IGZhc3Qv
d29ya2Vycy9zaGFyZWQtd29ya2VyLWZyYW1lLWxpZmVjeWNsZS5odG1sID0gVElNRU9VVAorV09O
VEZJWCBTS0lQIDogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItZ2MuaHRtbCA9IFRJTUVPVVQK
K1dPTlRGSVggU0tJUCA6IGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWluLWlmcmFtZS5odG1s
ID0gVElNRU9VVAorV09OVEZJWCBTS0lQIDogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItbGlm
ZWN5Y2xlLmh0bWwgPSBUSU1FT1VUCitXT05URklYIFNLSVAgOiBmYXN0L3dvcmtlcnMvc2hhcmVk
LXdvcmtlci1sb2FkLWVycm9yLmh0bWwgPSBUSU1FT1VUCitXT05URklYIFNLSVAgOiBmYXN0L3dv
cmtlcnMvc2hhcmVkLXdvcmtlci1sb2NhdGlvbi5odG1sID0gVElNRU9VVAorV09OVEZJWCBTS0lQ
IDogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItbmF2aWdhdG9yLmh0bWwgPSBUSU1FT1VUCitX
T05URklYIFNLSVAgOiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1yZXBsYWNlLWdsb2JhbC1j
b25zdHJ1Y3Rvci5odG1sID0gVElNRU9VVAorV09OVEZJWCBTS0lQIDogZmFzdC93b3JrZXJzL3No
YXJlZC13b3JrZXItcmVwbGFjZS1zZWxmLmh0bWwgPSBUSU1FT1VUCitXT05URklYIFNLSVAgOiBm
YXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1zaGFyZWQuaHRtbCA9IFRJTUVPVVQKK1dPTlRGSVgg
U0tJUCA6IGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNvbnN0cnVjdG9yLmh0bWwgPSBURVhU
CitXT05URklYIFNLSVAgOiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYW1lLmh0bWwgPSBU
RVhUCitXT05URklYIFNLSVAgOiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1zY3JpcHQtZXJy
b3IuaHRtbCA9IFRFWFQKK1dPTlRGSVggU0tJUCA6IGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2Vy
LXNpbXBsZS5odG1sID0gVElNRU9VVAorV09OVEZJWCBTS0lQIDogZmFzdC93b3JrZXJzL3dvcmtl
ci1jcmFzaC13aXRoLWludmFsaWQtbG9jYXRpb24uaHRtbCA9IFRFWFQKKworLy8gdGVzdF9zaGVs
bCBkb2VzIG5vdCBzdXBwb3J0IG1lc3NhZ2UgcG9ydHMKK0JVR1dLNzQ0NTkgU0tJUCA6IGZhc3Qv
d29ya2Vycy90ZXJtaW5hdGlvbi13aXRoLXBvcnQtbWVzc2FnZXMuaHRtbCA9IENSQVNICitCVUdX
Szc0NDU5IFNLSVAgOiBmYXN0L3dvcmtlcnMvd29ya2VyLWNsb25lcG9ydC5odG1sID0gQ1JBU0gK
K0JVR1dLNzQ0NTkgU0tJUCA6IGZhc3Qvd29ya2Vycy93b3JrZXItY29udGV4dC1tdWx0aS1wb3J0
Lmh0bWwgPSBDUkFTSAorQlVHV0s3NDQ1OSBTS0lQIDogZmFzdC93b3JrZXJzL3dvcmtlci1tZXNz
YWdlcG9ydC1nYy5odG1sID0gQ1JBU0gKK0JVR1dLNzQ0NTkgU0tJUCA6IGZhc3Qvd29ya2Vycy93
b3JrZXItbWVzc2FnZXBvcnQuaHRtbCA9IENSQVNICitCVUdXSzc0NDU5IFNLSVAgOiBmYXN0L3dv
cmtlcnMvd29ya2VyLW11bHRpLXBvcnQuaHRtbCA9IENSQVNICisKK0JVR1dLNzQ0NDkgU0tJUCA6
IGZhc3Qvd29ya2Vycy9zdG9yYWdlID0gQ1JBU0ggVElNRU9VVAorCitCVUdXSzc0NDQ5IFNLSVAg
OiBmYXN0L3dvcmtlcnMvZGVkaWNhdGVkLXdvcmtlci1saWZlY3ljbGUuaHRtbCA9IFRJTUVPVVQK
K0JVR1dLNzQ0NDkgU0tJUCA6IGZhc3Qvd29ya2Vycy93b3JrZXItY2xvc2UtbW9yZS5odG1sID0g
VElNRU9VVAorQlVHV0s3NDQ0OSBTS0lQIDogZmFzdC93b3JrZXJzL3dvcmtlci1saWZlY3ljbGUu
aHRtbCA9IFRJTUVPVVQKKworLy8gdGVzdF9zaGVsbCBkb2VzIG5vdCBzdXBwb3J0IHdvcmtlcnMK
IFdPTlRGSVggU0tJUCA6IGZhc3QvZmlsZXMvd29ya2VycyA9IFBBU1MgVElNRU9VVCBGQUlMCiBX
T05URklYIFNLSVAgOiBmYXN0L2ZpbGVzeXN0ZW0vd29ya2VycyA9IFBBU1MgVElNRU9VVCBGQUlM
CiBXT05URklYIFNLSVAgOiBmYXN0L2NhbnZhcy93ZWJnbC93b3JrZXItZGF0YS12aWV3LXRlc3Qu
aHRtbCA9IFBBU1MgVElNRU9VVCBGQUlMCg==
</data>
<flag name="review"
          id="119004"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="119005"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119115</attachid>
            <date>2011-12-13 17:14:05 -0800</date>
            <delta_ts>2011-12-13 17:18:47 -0800</delta_ts>
            <desc>worker-script-error ignored</desc>
            <filename>74456.patch</filename>
            <type>text/plain</type>
            <size>591615</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA4ZmNhZTg4Li4yMzVmYzZj
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDE3ICsxLDMgQEAK
LTIwMTEtMTItMTMgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29t
PgotCi0gICAgICAgIFtRdF0gR2V0IHJpZCBvZiBsYXllcmluZyB2aW9sYXRpb25zIGluIGluY2x1
ZGVzCi0KLSAgICAgICAgV2ViS2l0L3F0L0FQSSBhbmQgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0
IHNob3VsZCBub3QgYmUgaW5jbHVkZWQKLSAgICAgICAgaW4gdGhlIHdlYmNvcmUucHJmLCBidXQg
cmF0aGVyIGluIGVhY2ggdGFyZ2V0IHRoYXQgc3BlY2lmaWNseSBuZWVkcwotICAgICAgICBoZWFk
ZXJzIGluIHRoZXNlIGxvY2F0aW9uLiBXZSB1c2VkIHRvIGluY2x1ZGUgdGhlbSBkaXJlY3RseSBp
biB3ZWJjb3JlCi0gICAgICAgIHNpbmNlIHdlIGhhZCBsYXllcmluZyB2aW9sYXRpb25zIGJldHdl
ZW4gV2ViQ29yZSBhbmQgV2ViS2l0LCBidXQgbm93Ci0gICAgICAgIHRoYXQgdGhleSBhcmUgZ29u
ZSB0aGVyZSdzIG5vIHJlYXNvbiB0byBkbyB0aGF0LgotCi0gICAgICAgIFJldmlld2VkIGJ5IFNp
bW9uIEhhdXNtYW5uLgotCi0gICAgICAgICogU291cmNlL2FwaS5wcmk6Ci0KIDIwMTEtMTItMTIg
IEFuZHkgV2luZ28gIDx3aW5nb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFNpbXBsaWZ5IGF1dG90
b29scyBjb25maWd1cmUuYWMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlNDcwNzRiLi5mY2Y0ODY2IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDEy
OSArMSwxNiBAQAotMjAxMS0xMi0xMyAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+
CisyMDExLTEyLTEzICBEbWl0cnkgTG9tb3YgIDxkc2xvbW92QGdvb2dsZS5jb20+CiAKLSAgICAg
ICAgVW5yZXZpZXdlZCBDaHJvbWl1bSBleHBlY3RhdGlvbnMgdXBkYXRlLiBFeHBhbmQgYSBjb3Vw
bGUgb2YgZXhpc3Rpbmcgc3VwcHJlc3Npb25zLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0NTYKKyAgICAgICAgW1Y4XVtDaHJvbWl1bV0gUmVlbmFi
bGUgZGVkaWNhdGVkIHdvcmtlciBsYXlvdXQgdGVzdHMuCiAKLSAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6Ci0KLTIwMTEtMTItMTMgIE9saXZlciBIdW50
ICA8b2xpdmVyQGFwcGxlLmNvbT4KLQotICAgICAgICBBcmd1bWVudHMgb2JqZWN0IGRvZXNuJ3Qg
aGFuZGxlIG11dGF0aW9uIG9mIGxlbmd0aCBwcm9wZXJ0eSBjb3JyZWN0bHkKLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NDU0Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgR2F2aW4gQmFycmFjbG91Z2guCi0KLSAgICAgICAgQWRkIHRlc3RzIG9mIG11dGF0
ZWQgYXJndW1lbnRzLmxlbmd0aAotCi0gICAgICAgICogZmFzdC9qcy9hcmd1bWVudHMtZXhwZWN0
ZWQudHh0OgotICAgICAgICAqIGZhc3QvanMvc2NyaXB0LXRlc3RzL2FyZ3VtZW50cy5qczoKLSAg
ICAgICAgKGFyZ3VtZW50TGVuZ3RoSXM1KToKLSAgICAgICAgKGR1cGxpY2F0ZUFyZ3VtZW50QW5k
UmV0dXJuTGFzdF9jYWxsKToKLSAgICAgICAgKGR1cGxpY2F0ZUFyZ3VtZW50QW5kUmV0dXJuRmly
c3RfY2FsbCk6Ci0gICAgICAgIChkdXBsaWNhdGVBcmd1bWVudEFuZFJldHVybkxhc3RfYXBwbHkp
OgotICAgICAgICAoZHVwbGljYXRlQXJndW1lbnRBbmRSZXR1cm5GaXJzdF9hcHBseSk6Ci0KLTIw
MTEtMTItMTMgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+Ci0KLSAgICAg
ICAgV2ViIEluc3BlY3RvcjogTmV0d29yayBpdGVtIHZpZXcgZG9lcyBub3QgY29ycmVjdGx5IGRl
Y29kZSAiKyIgaW4gcmVxdWVzdCBwYXJhbWV0ZXJzLgotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0MjIKLQotICAgICAgICBSZXZpZXdlZCBieSBQYXZl
bCBGZWxkbWFuLgotCi0gICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXF1
ZXN0LXBhcmFtZXRlcnMtZGVjb2RpbmctZXhwZWN0ZWQudHh0OiBBZGRlZC4KLSAgICAgICAgKiBo
dHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3JlcXVlc3QtcGFyYW1ldGVycy1kZWNvZGluZy5o
dG1sOiBBZGRlZC4KLQotMjAxMS0xMi0wOSAgWmhlbnlhbyBNbyAgPHptb0Bnb29nbGUuY29tPgot
Ci0gICAgICAgIEltcGxlbWVudCBHTEVTMiBDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKCkgYmVoYXZp
b3IKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0MjI4
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSdXNzZWxsLgotCi0gICAgICAgICogZmFz
dC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQtZXhwZWN0ZWQudHh0
OgotICAgICAgICAqIGZhc3QvY2FudmFzL3dlYmdsL2ZyYW1lYnVmZmVyLW9iamVjdC1hdHRhY2ht
ZW50Lmh0bWw6IHN5bmMgd2l0aCBraHJvbm9zIHNpZGUsIHRoZSB3aG9sZSBmaWxlCi0gICAgICAg
ICogZmFzdC9jYW52YXMvd2ViZ2wvcmVzb3VyY2VzL3dlYmdsLXRlc3QuanM6IHN5bmNlZCB3aXRo
IGtocm9ub3Mgc2lkZSwgdHdvIGxpc3RlZCBmdW5jdGlvbnMKLSAgICAgICAgKHNob3VsZEdlbmVy
YXRlR0xFcnJvcik6Ci0gICAgICAgIChnbEVycm9yU2hvdWxkQmUpOgotICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDogTWFyayBmcmFtZWJ1ZmZlci1vYmpl
Y3QtKi5odG1sIGFzIGZhaWxpbmcgZHVlIHRvIG1lc2EgbGliIGJ1Zy4KLQotMjAxMS0xMi0xMiAg
Um9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+Ci0KLSAgICAgICAgQ1NTIDIuMSBmYWls
dXJlOiBlb2YtMDAyLmh0bSBmYWlscwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzQzMDkKLQotICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24u
Ci0KLSAgICAgICAgKiBjc3MyLjEvMjAxMTAzMjMvZW9mLTAwMi1leHBlY3RlZC5odG1sOiBBZGRl
ZC4KLSAgICAgICAgKiBjc3MyLjEvMjAxMTAzMjMvZW9mLTAwMi5odG06IEFkZGVkLgotCi0yMDEx
LTEyLTEzICBNaWtlIFJlZWQgIDxyZWVkQGdvb2dsZS5jb20+Ci0KLSAgICAgICAgW3NraWFdIG5l
ZWQgbmV3IGJhc2VsaW5lcyB3aGVuIFNLSUFfVEVYVCBpcyBlbmFibGVkCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQwOAotCi0gICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWS4gdW5yZXZpZXdlZCwgdXBkYXRlIGV4cGVjdGF0aW9ucwotCi0gICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0OgotCi0yMDExLTEyLTEz
ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KLQotICAgICAgICBVbnJl
dmlld2VkLCBza2lwIDQgbmV3IGZhaWxpbmcgdGVzdHMgb24gR1RLLgotCi0gICAgICAgICogcGxh
dGZvcm0vZ3RrL1NraXBwZWQ6CisgICAgICAgIENocm9taXVtLXNwZWNpZmljIHJlc3VsdHMgYXJl
IGNhdXNlZCBieSBleGNlcHRpb24gbWVzc2FnZSB0ZXh0IGRpZmZlcmVuY2VzIGJldHdlZW4gSlND
IGFuZCBWOC4KIAotMjAxMS0xMi0xMyAgT2xpdmVyIFZhcmdhICA8dm9saXZlckBpbmYudS1zemVn
ZWQuaHU+Ci0KLSAgICAgICAgW1F0XSBBZGQgUXQgcGxhdGZvcm0gc3BlY2lmaWMgZXhwZWN0ZWQg
cmVzdWx0IGFmdGVyIHIxMDI2MDIuCi0KLSAgICAgICAgVW5yZXZpZXdlZCBnYXJkZW5pbmcuCi0K
LSAgICAgICAgKiBwbGF0Zm9ybS9xdC9odHRwL3Rlc3RzL2NhY2hlL2NhbmNlbC1kdXJpbmctcmV2
YWxpZGF0aW9uLXN1Y2NlZWRlZC1leHBlY3RlZC5wbmc6IEFkZGVkLgotICAgICAgICAqIHBsYXRm
b3JtL3F0L2h0dHAvdGVzdHMvY2FjaGUvY2FuY2VsLWR1cmluZy1yZXZhbGlkYXRpb24tc3VjY2Vl
ZGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCi0KLTIwMTEtMTItMTMgIFZzZXZvbG9kIFZsYXNvdiAg
PHZzZXZpa0BjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHNjcmlw
dHMgbmF2aWdhdG9yIHNpZGViYXIgdG8gc2NyaXB0cyBwYW5lbC4KLSAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMDg2Ci0KLSAgICAgICAgUmV2aWV3ZWQg
YnkgUGF2ZWwgRmVsZG1hbi4KLQotICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRz
LXBhbmVsLmh0bWw6Ci0gICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtc29ydGlu
Zy5odG1sOgotCi0yMDExLTEyLTEzICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGNocm9taXVt
Lm9yZz4KLQotICAgICAgICBVbnJldmlld2VkIENocm9taXVtIHRlc3QgZXhwZWN0YXRpb25zIHVw
ZGF0ZS4gQ2hhbmdlZCBleHBlY3RhdGlvbiBvZgotICAgICAgICBlZGl0aW5nL3NwZWxsaW5nL2dy
YW1tZXItcGFzdGUuaHRtbC4KLQotICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dDoKLQotMjAxMS0xMi0xMyAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBj
aHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCBDaHJvbWl1bSB0ZXN0IGV4cGVjdGF0
aW9ucyB1cGRhdGUuCi0KLSAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0
aW9ucy50eHQ6Ci0KLTIwMTEtMTItMTMgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAZ29vZ2xl
LmNvbT4KLQotICAgICAgICBBc3luY2hyb25vdXMgdGV4dCBjaGVja2luZyBzaG91bGQgY2hlY2sg
dGhlIGdyYW1tYXIuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD01NjM2OAotCi0gICAgICAgIFJldmlld2VkIGJ5IEhhamltZSBNb3JpdGEuCi0KLSAgICAg
ICAgRnJvbSByMTAyNTUzLCB3ZSBoYWQgY2FwYWJpbGl0eSBvZiBncmFtbWFyIGNoZWNraW5nIGZv
ciBhc3luY2hyb25vdXMgdGV4dCBjaGVja2luZy4KLSAgICAgICAgVGhpcyBwYXRjaCBhZGRzIGEg
dGVzdCBmb3IgaXQuCi0KLSAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXItcGFzdGUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KLSAgICAgICAgKiBlZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXIt
cGFzdGUuaHRtbDogQWRkZWQuCi0gICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0OgotICAgICAgICAqIHBsYXRmb3JtL2d0ay9Ta2lwcGVkOgotICAgICAgICAq
IHBsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQ6Ci0gICAgICAgICogcGxhdGZvcm0vcXQvU2tp
cHBlZDoKLQotMjAxMS0xMi0xMiAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5v
cmc+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCBDaHJvbWl1bSB0ZXN0IGV4cGVjdGF0aW9ucyB1cGRh
dGUuCi0gICAgICAgIENsZWFuIG91dCBwYXNzaW5nIHRlc3RzIGZyb20gdGVzdF9leHBlY3RhdGlv
bnMudHh0LgorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL2Zhc3Qvd29ya2Vycy91c2UtbWFjaGluZS1zdGFjay1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3Qvd29ya2Vycy93
b3JrZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9mYXN0L3dvcmtlcnMvd29ya2VyLWxvY2F0aW9uLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC93b3JrZXJzL3dvcmtlci1zY3Jp
cHQtZXJyb3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KICAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CiAKIDIwMTEtMTItMTIgIEtlbm5ldGggUnVzc2VsbCAg
PGtickBnb29nbGUuY29tPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMi4xLzIwMTEwMzIz
L2VvZi0wMDItZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2NzczIuMS8yMDExMDMyMy9lb2Yt
MDAyLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkOWM3NDEu
LjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMi4xLzIwMTEwMzIzL2VvZi0wMDItZXhwZWN0
ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBV
QkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0
bWw0L3N0cmljdC5kdGQiPgotPGh0bWw+Ci0gICAgPGhlYWQ+Ci0gICAgICAgIDx0aXRsZT5DU1Mg
VGVzdDogUmVmZXJlbmNlIFJlc3VsdDwvdGl0bGU+Ci0gICAgICAgIDxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyI+Ci0gICAgICAgICAgICBkaXYKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBj
b2xvcjogcmdiKDAsIDEyOCwgMCkKLSAgICAgICAgICAgIH0KLSAgICAgICAgPC9zdHlsZT4KLSAg
ICA8L2hlYWQ+Ci0gICAgPGJvZHk+Ci0gICAgICAgIDxwPlRlc3QgcGFzc2VzIGlmIHRoZSAiRmls
bGVyIFRleHQiIGJlbG93IGlzIGdyZWVuLjwvcD4KLSAgICAgICAgPGRpdj5GaWxsZXIgVGV4dDwv
ZGl2PgotICAgIDwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9jc3MyLjEvMjAxMTAzMjMvZW9mLTAwMi5odG0gYi9MYXlv
dXRUZXN0cy9jc3MyLjEvMjAxMTAzMjMvZW9mLTAwMi5odG0KZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDU4NmU2ZGQuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMi4xLzIwMTEw
MzIzL2VvZi0wMDIuaHRtCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotPCFET0NUWVBF
IGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEvL0VOIiAiaHR0cDovL3d3dy53My5v
cmcvVFIvaHRtbDQvc3RyaWN0LmR0ZCI+Ci08aHRtbD4KLSAgICA8aGVhZD4KLSAgICAgICAgPHRp
dGxlPkNTUyBUZXN0OiBQYXJzaW5nIHVuZXhwZWN0ZWQgZW5kIG9mIGZ1bmN0aW9uPC90aXRsZT4K
LSAgICAgICAgPGxpbmsgcmVsPSJhdXRob3IiIHRpdGxlPSJNaWNyb3NvZnQiIGhyZWY9Imh0dHA6
Ly93d3cubWljcm9zb2Z0LmNvbS8iPgotICAgICAgICA8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0
dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL3N5bmRhdGEuaHRtbCNwYXJzaW5nLWVycm9ycyI+Ci0g
ICAgICAgIDxtZXRhIG5hbWU9ImZsYWdzIiBjb250ZW50PSJpbnZhbGlkIj4KLSAgICAgICAgPG1l
dGEgbmFtZT0iYXNzZXJ0IiBjb250ZW50PSJVc2VyIGFnZW50cyBjbG9zZSBhbGwgb3BlbiBwYXJl
bnRoZXNlcyBhdCB0aGUgZW5kIG9mIHRoZSBzdHlsZSBzaGVldC4iPgotICAgICAgICA8c3R5bGUg
dHlwZT0idGV4dC9jc3MiPgotICAgICAgICAgICAgZGl2Ci0gICAgICAgICAgICB7Ci0gICAgICAg
ICAgICAgICAgY29sb3I6IHJnYigwLCAxMjgsIDAKLSAgICAgICAgPC9zdHlsZT4KLSAgICA8L2hl
YWQ+Ci0gICAgPGJvZHk+Ci0gICAgICAgIDxwPlRlc3QgcGFzc2VzIGlmIHRoZSAiRmlsbGVyIFRl
eHQiIGJlbG93IGlzIGdyZWVuLjwvcD4KLSAgICAgICAgPGRpdj5GaWxsZXIgVGV4dDwvZGl2Pgot
ICAgIDwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXItcGFzdGUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9ncmFtbWFyLXBhc3RlLWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTg4NDU4NS4uMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXItcGFzdGUtZXhwZWN0ZWQudHh0
CisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotR3JhbW1hciBjaGVja2luZyBmb3IgcGFz
dGVkIHRleHQuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLVBBU1MgRElWIGhhcyBhIG1hcmtl
ciBvbiAnWW91IGhhcyB0aGUgcmlnaHQuJwotUEFTUyBESVYgaGFzIGEgbWFya2VyIG9uICdJIGhh
dmUgYTxiPm4ga2k8L2I+d2kuIEkgaGF2ZSBubyBpZGVhLicKLVBBU1MgRElWIGhhcyBhIG1hcmtl
ciBvbiAnSSBoYXZlIGFuIGdyYXBlLiBJIGhhdmUgYW4gbXVzY2F0LiBJIGRvbid0IGtub3cuJwot
UEFTUyBJTlBVVCBoYXMgYSBtYXJrZXIgb24gJ1lvdSBoYXMgdGhlIHJpZ2h0LicKLVBBU1MgSU5Q
VVQgaGFzIGEgbWFya2VyIG9uICdJIGhhdmUgYTxiPm4ga2k8L2I+d2kuIEkgaGF2ZSBubyBpZGVh
LicKLVBBU1MgSU5QVVQgaGFzIGEgbWFya2VyIG9uICdJIGhhdmUgYW4gZ3JhcGUuIEkgaGF2ZSBh
biBtdXNjYXQuIEkgZG9uJ3Qga25vdy4nCi1QQVNTIFRFWFRBUkVBIGhhcyBhIG1hcmtlciBvbiAn
WW91IGhhcyB0aGUgcmlnaHQuJwotUEFTUyBURVhUQVJFQSBoYXMgYSBtYXJrZXIgb24gJ0kgaGF2
ZSBhPGI+biBraTwvYj53aS4gSSBoYXZlIG5vIGlkZWEuJwotUEFTUyBURVhUQVJFQSBoYXMgYSBt
YXJrZXIgb24gJ0kgaGF2ZSBhbiBncmFwZS4gSSBoYXZlIGFuIG11c2NhdC4gSSBkb24ndCBrbm93
LicKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9zcGVsbGluZy9ncmFtbWFyLXBh
c3RlLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXItcGFzdGUuaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTZiNWQ1ZS4uMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXItcGFzdGUuaHRtbAorKysgL2Rldi9u
dWxsCkBAIC0xLDE2MSArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvanMtdGVzdC1zZWxlY3Rpb24tc2hhcmVkLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5
PgotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLTxz
Y3JpcHQ+Ci1kZXNjcmlwdGlvbignR3JhbW1hciBjaGVja2luZyBmb3IgcGFzdGVkIHRleHQuJyk7
Ci0KLWxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKLQotdmFyIHRlc3RSb290
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci1kb2N1bWVudC5ib2R5Lmluc2VydEJl
Zm9yZSh0ZXN0Um9vdCwgZG9jdW1lbnQuYm9keS5maXJzdENoaWxkKTsKLQotdmFyIHRlc3RUZXh0
QXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRleHRhcmVhIik7Ci10ZXN0Um9vdC5hcHBl
bmRDaGlsZCh0ZXN0VGV4dEFyZWEpOwotCi12YXIgdGVzdElucHV0ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiaW5wdXQiKTsKLXRlc3RJbnB1dC5zZXRBdHRyaWJ1dGUoInR5cGUiLCAidGV4dCIp
OwotdGVzdFJvb3QuYXBwZW5kQ2hpbGQodGVzdElucHV0KTsKLQotdmFyIHRlc3RFZGl0YWJsZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotdGVzdEVkaXRhYmxlLnNldEF0dHJpYnV0
ZSgiY29udGVudEVkaXRhYmxlIiwgInRydWUiKTsKLXRlc3RSb290LmFwcGVuZENoaWxkKHRlc3RF
ZGl0YWJsZSk7Ci0KLXZhciB0ZXN0U291cmNlUGxhaW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTsKLXRlc3RTb3VyY2VQbGFpbi5pbm5lckhUTUwgPSAiWW91IGhhcyB0aGUgcmlnaHQu
IjsKLXRlc3RSb290LmFwcGVuZENoaWxkKHRlc3RTb3VyY2VQbGFpbik7Ci0KLXZhciB0ZXN0U291
cmNlRGVjb3JhdGVkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci10ZXN0U291cmNl
RGVjb3JhdGVkLmlubmVySFRNTCA9ICJJIGhhdmUgYTxiPm4ga2k8L2I+d2kuIEkgaGF2ZSBubyBp
ZGVhLiI7Ci10ZXN0Um9vdC5hcHBlbmRDaGlsZCh0ZXN0U291cmNlRGVjb3JhdGVkKTsKLQotdmFy
IHRlc3RTb3VyY2VNdWx0aSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwotdGVzdFNv
dXJjZU11bHRpLmlubmVySFRNTCA9ICJJIGhhdmUgYW4gZ3JhcGUuIEkgaGF2ZSBhbiBtdXNjYXQu
IEkgZG9uJ3Qga25vdy4iOwotdGVzdFJvb3QuYXBwZW5kQ2hpbGQodGVzdFNvdXJjZU11bHRpKTsK
LQotdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTsKLQotdmFyIHRlc3RzID0gW107Ci0K
LWZ1bmN0aW9uIGRvbmUoKQotewotICAgIHZhciBuZXh0ID0gdGVzdHMuc2hpZnQoKTsKLSAgICBp
ZiAobmV4dCkKLSAgICAgICAgcmV0dXJuIHdpbmRvdy5zZXRUaW1lb3V0KG5leHQsIDApOwotICAg
IHRlc3RSb290LnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0KLSAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChmYWxzZSk7Ci0gICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOwotfQotCi1mdW5jdGlvbiBmaW5kRmlyc3RU
ZXh0Tm9kZShub2RlKQotewotICAgIGZ1bmN0aW9uIGl0ZXJUb0ZpbmRGaXJzdFRleHROb2RlKG5v
ZGUpCi0gICAgewotICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIFRleHQpCi0gICAgICAgICAg
ICByZXR1cm4gbm9kZTsKLQotICAgICAgICB2YXIgY2hpbGROb2RlcyA9IG5vZGUuY2hpbGROb2Rl
czsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZE5vZGVzLmxlbmd0aDsgKytpKSB7
Ci0gICAgICAgICAgICB2YXIgbiA9IGl0ZXJUb0ZpbmRGaXJzdFRleHROb2RlKGNoaWxkTm9kZXNb
aV0pOwotICAgICAgICAgICAgaWYgKG4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIG47Ci0gICAg
ICAgIH0KLQotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0KLQotICAgIGlmIChub2RlIGlu
c3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgSFRNTFRleHRBcmVh
RWxlbWVudCkKLSAgICAgICAgcmV0dXJuIGl0ZXJUb0ZpbmRGaXJzdFRleHROb2RlKGludGVybmFs
cy5zaGFkb3dSb290KG5vZGUpKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBpdGVyVG9GaW5k
Rmlyc3RUZXh0Tm9kZShub2RlKTsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5TWFya2VyKG5vZGUsIGV4
cGVjdGVkTWFya2VkLCBuZWVkc0ZvY3VzKQotewotICAgIGlmICh0cnVlKSB7Ci0gICAgICAgIGlm
IChub2RlIGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgSFRN
TFRleHRBcmVhRWxlbWVudCkgewotICAgICAgICAgICAgbm9kZS5mb2N1cygpOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgc2VsLnNlbGVjdEFsbENoaWxkcmVuKG5vZGUpOwotICAgICAg
ICB9Ci0gICAgfQotCi0gICAgdmFyIHRleHROb2RlID0gZmluZEZpcnN0VGV4dE5vZGUobm9kZSk7
Ci0gICAgdmFyIG51bSA9IGludGVybmFscy5tYXJrZXJDb3VudEZvck5vZGUodGV4dE5vZGUsICJn
cmFtbWFyIik7Ci0gICAgaWYgKG51bSAhPSBleHBlY3RlZE1hcmtlZC5sZW5ndGgpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bTsgKytpKSB7Ci0gICAg
ICAgIHZhciByYW5nZSA9IGludGVybmFscy5tYXJrZXJSYW5nZUZvck5vZGUodGV4dE5vZGUsICJn
cmFtbWFyIiwgaSk7Ci0gICAgICAgIGlmIChyYW5nZS50b1N0cmluZygpICE9IGV4cGVjdGVkTWFy
a2VkW2ldKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0
cnVlOwotfQotCi1mdW5jdGlvbiBwYXN0ZUFuZFZlcmlmeShzb3VyY2UsIGRlc3QsIGV4cGVjdGVk
TWFya2VkKQotewotICAgIHNlbC5zZWxlY3RBbGxDaGlsZHJlbihzb3VyY2UpOwotICAgIGRvY3Vt
ZW50LmV4ZWNDb21tYW5kKCJDb3B5Iik7Ci0gICAgaWYgKGRlc3QgaW5zdGFuY2VvZiBIVE1MSW5w
dXRFbGVtZW50IHx8IGRlc3QgaW5zdGFuY2VvZiBIVE1MVGV4dEFyZWFFbGVtZW50KSB7Ci0gICAg
ICAgIGRlc3QudmFsdWUgPSAiIjsKLSAgICAgICAgZGVzdC5mb2N1cygpOwotICAgIH0gZWxzZSB7
Ci0gICAgICAgIGRlc3QuaW5uZXJIVE1MID0gIiI7Ci0gICAgICAgIHNlbC5zZWxlY3RBbGxDaGls
ZHJlbihkZXN0KTsKLSAgICB9Ci0gICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlBhc3RlIik7Ci0K
LSAgICB2YXIgbnJldHJ5ID0gMTA7Ci0gICAgdmFyIG5zbGVlcCA9IDQ7Ci0gICAgZnVuY3Rpb24g
dHJpYWwoKSB7IAotICAgICAgICB2YXIgdmVyaWZpZWQgPSB2ZXJpZnlNYXJrZXIoZGVzdCwgZXhw
ZWN0ZWRNYXJrZWQpOwotICAgICAgICBpZiAodmVyaWZpZWQpIHsKLSAgICAgICAgICAgIHRlc3RQ
YXNzZWQoZGVzdC50YWdOYW1lICsgIiBoYXMgYSBtYXJrZXIgb24gJyIgKyBzb3VyY2UuaW5uZXJI
VE1MICsgIiciKTsKLSAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQotCi0gICAgICAgIG5yZXRyeS0tOwotICAgICAgICBpZiAoMCA9PSBucmV0cnkpIHsK
LSAgICAgICAgICAgIHRlc3RGYWlsZWQoZGVzdC50YWdOYW1lICsgIiBzaG91bGQgaGF2ZSBhIG1h
cmtlciBvbiBmb3IgJyIgKyBzb3VyY2UuaW5uZXJIVE1MICsgIiciKTsKLSAgICAgICAgICAgIGRv
bmUoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
bnNsZWVwICo9IDI7Ci0gICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KHRyaWFsLCBuc2xlZXApOwot
ICAgIH07Ci0gICAgdHJpYWwoKTsKLX07Ci0KLWlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKLSAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNr
aW5nRW5hYmxlZCh0cnVlKTsKLX0KLQotdGVzdHMucHVzaChmdW5jdGlvbigpIHsgcGFzdGVBbmRW
ZXJpZnkodGVzdFNvdXJjZVBsYWluLCB0ZXN0RWRpdGFibGUsIFsiaGFzIl0pOyB9KTsKLXRlc3Rz
LnB1c2goZnVuY3Rpb24oKSB7IHBhc3RlQW5kVmVyaWZ5KHRlc3RTb3VyY2VEZWNvcmF0ZWQsIHRl
c3RFZGl0YWJsZSwgWyJhIl0pOyB9KTsgLy8gQ2hlY2tzIG9ubHkgJ2EnLgotdGVzdHMucHVzaChm
dW5jdGlvbigpIHsgcGFzdGVBbmRWZXJpZnkodGVzdFNvdXJjZU11bHRpLCB0ZXN0RWRpdGFibGUs
IFsiYW4iLCAiYW4iXSk7IH0pOwotCi10ZXN0cy5wdXNoKGZ1bmN0aW9uKCkgeyBwYXN0ZUFuZFZl
cmlmeSh0ZXN0U291cmNlUGxhaW4sIHRlc3RJbnB1dCwgWyJoYXMiXSk7IH0pOwotdGVzdHMucHVz
aChmdW5jdGlvbigpIHsgcGFzdGVBbmRWZXJpZnkodGVzdFNvdXJjZURlY29yYXRlZCwgdGVzdElu
cHV0LCBbImFuIl0pOyB9KTsKLXRlc3RzLnB1c2goZnVuY3Rpb24oKSB7IHBhc3RlQW5kVmVyaWZ5
KHRlc3RTb3VyY2VNdWx0aSwgdGVzdElucHV0LCBbImFuIiwgImFuIl0pOyB9KTsKLQotdGVzdHMu
cHVzaChmdW5jdGlvbigpIHsgcGFzdGVBbmRWZXJpZnkodGVzdFNvdXJjZVBsYWluLCB0ZXN0VGV4
dEFyZWEsIFsiaGFzIl0pOyB9KTsKLXRlc3RzLnB1c2goZnVuY3Rpb24oKSB7IHBhc3RlQW5kVmVy
aWZ5KHRlc3RTb3VyY2VEZWNvcmF0ZWQsIHRlc3RUZXh0QXJlYSwgWyJhbiJdKTsgfSk7Ci10ZXN0
cy5wdXNoKGZ1bmN0aW9uKCkgeyBwYXN0ZUFuZFZlcmlmeSh0ZXN0U291cmNlTXVsdGksIHRlc3RU
ZXh0QXJlYSwgWyJhbiIsICJhbiJdKTsgfSk7Ci0KLWRvbmUoKTsKLQotdmFyIHN1Y2Nlc3NmdWxs
eVBhcnNlZCA9IHRydWU7Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0
LWF0dGFjaG1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wv
ZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQtZXhwZWN0ZWQudHh0CmluZGV4IGVjNGU5YmYu
LjliMTQzMmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2ZyYW1l
YnVmZmVyLW9iamVjdC1hdHRhY2htZW50LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC1leHBlY3RlZC50
eHQKQEAgLTIsOCArMiw2IEBAIFRlc3QgZnJhbWVidWZmZXIgb2JqZWN0IGF0dGFjaG1lbnQgYmVo
YXZpb3JzCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAotCi1EaW1lbnNpb25zIDAgeCAw
CiBDcmVhdGUgcmVuZGVyYnVmZmVycwogUEFTUyBnbCA9IGNyZWF0ZTNEQ29udGV4dCgpIGlzIG5v
bi1udWxsLgogUEFTUyBjb2xvckJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGlzIG5v
bi1udWxsLgpAQCAtMTcsNTA1ICsxNSw5MyBAQCBQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2
YWx1ZTogTk9fRVJST1IgOgogQXR0YWNoIGRlcHRoIHVzaW5nIERFUFRIX0FUVEFDSE1FTlQKIFBB
U1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KIFBBU1MgZ2V0RXJy
b3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5jaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSByZXR1cm5lZCAzNjA1NAotUEFTUyBnZXRFcnJvciB3
YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OIDogCi1QQVNT
IGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJ
T04gOiAKIEF0dGFjaCBkZXB0aCB1c2luZyBTVEVOQ0lMX0FUVEFDSE1FTlQKIFBBU1MgZmJvID0g
Z2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KIFBBU1MgZ2V0RXJyb3Igd2FzIGV4
cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KGdsLkZSQU1FQlVGRkVSKSByZXR1cm5lZCAzNjA1NAorUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKGdsLkZSQU1FQlVGRkVSKSBpcyBnbC5GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRAogUEFT
UyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFU
SU9OIDogCiBQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJV
RkZFUl9PUEVSQVRJT04gOiAKIEF0dGFjaCBkZXB0aCB1c2luZyBERVBUSF9TVEVOQ0lMX0FUVEFD
SE1FTlQKIFBBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KIFBB
U1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5jaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSByZXR1cm5lZCAzNjA1NAorUEFTUyBn
bC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSBpcyBnbC5GUkFNRUJVRkZF
Ul9VTlNVUFBPUlRFRAogUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURf
RlJBTUVCVUZGRVJfT1BFUkFUSU9OIDogCiBQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1
ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gOiAKIEF0dGFjaCBzdGVuY2lsIHVzaW5n
IFNURU5DSUxfQVRUQUNITUVOVAogUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlz
IG5vbi1udWxsLgogUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDog
Ci1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHJldHVybmVk
IDM2MDU0Ci1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJV
RkZFUl9PUEVSQVRJT04gOiAKLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZB
TElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiA6IAogQXR0YWNoIHN0ZW5jaWwgdXNpbmcgREVQVEhf
QVRUQUNITUVOVAogUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxs
LgogUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGds
LmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHJldHVybmVkIDM2MDU0CitQ
QVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIGlzIGdsLkZSQU1F
QlVGRkVSX1VOU1VQUE9SVEVECiBQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5W
QUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gOiAKIFBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVk
IHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiA6IAogQXR0YWNoIHN0ZW5jaWwg
dXNpbmcgREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UCiBQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1l
YnVmZmVyKCkgaXMgbm9uLW51bGwuCiBQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTog
Tk9fRVJST1IgOiAKLVBBU1MgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZF
UikgcmV0dXJuZWQgMzYwNTQKK1BBU1MgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFN
RUJVRkZFUikgaXMgZ2wuRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQKIFBBU1MgZ2V0RXJyb3Igd2Fz
IGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiA6IAogUEFTUyBn
ZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9O
IDogCiBBdHRhY2ggZGVwdGhTdGVuY2lsIHVzaW5nIERFUFRIX1NURU5DSUxfQVRUQUNITUVOVAog
UEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgogUEFTUyBnZXRF
cnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGdsLmNoZWNrRnJhbWVi
dWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHJldHVybmVkIDM2MDU0Ci1QQVNTIGdldEVycm9y
IHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gOiAKLVBB
U1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJB
VElPTiA6IAogQXR0YWNoIGRlcHRoU3RlbmNpbCB1c2luZyBERVBUSF9BVFRBQ0hNRU5UCiBQQVNT
IGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCiBQQVNTIGdldEVycm9y
IHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKLVBBU1MgZ2wuY2hlY2tGcmFtZWJ1ZmZl
clN0YXR1cyhnbC5GUkFNRUJVRkZFUikgcmV0dXJuZWQgMzYwNTQKK1BBU1MgZ2wuY2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgaXMgZ2wuRlJBTUVCVUZGRVJfVU5TVVBQT1JU
RUQKIFBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVS
X09QRVJBVElPTiA6IAogUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURf
RlJBTUVCVUZGRVJfT1BFUkFUSU9OIDogCiBBdHRhY2ggZGVwdGhTdGVuY2lsIHVzaW5nIFNURU5D
SUxfQVRUQUNITUVOVAogUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1u
dWxsLgogUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNT
IGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHJldHVybmVkIDM2MDU0
CitQQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIGlzIGdsLkZS
QU1FQlVGRkVSX1VOU1VQUE9SVEVECiBQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTog
SU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gOiAKIFBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVj
dGVkIHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiA6IAogQXR0YWNoIGRlcHRo
LCB0aGVuIHN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QKIFBBU1MgZmJvID0gZ2wuY3JlYXRlRnJh
bWVidWZmZXIoKSBpcyBub24tbnVsbC4KIFBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVl
OiBOT19FUlJPUiA6IAogUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9S
IDogCi1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHJldHVy
bmVkIDM2MDU0CitQQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIp
IGlzIGdsLkZSQU1FQlVGRkVSX1VOU1VQUE9SVEVECiBBdHRhY2ggc3RlbmNpbCwgdGhlbiBkZXB0
aCwgY2F1c2luZyBjb25mbGljdAogUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlz
IG5vbi1udWxsLgogUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDog
CiBQQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKLVBBU1MgZ2wu
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgcmV0dXJuZWQgMzYwNTQKK1BB
U1MgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgaXMgZ2wuRlJBTUVC
VUZGRVJfVU5TVVBQT1JURUQKIEF0dGFjaCBkZXB0aCwgdGhlbiBkZXB0aFN0ZW5jaWwsIGNhdXNp
bmcgY29uZmxpY3QKIFBBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVs
bC4KIFBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAogUEFTUyBn
ZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGdsLmNoZWNrRnJh
bWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHJldHVybmVkIDM2MDU0CitQQVNTIGdsLmNo
ZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIGlzIGdsLkZSQU1FQlVGRkVSX1VO
U1VQUE9SVEVECiBBdHRhY2ggZGVwdGhTdGVuY2lsLCB0aGVuIGRlcHRoLCBjYXVzaW5nIGNvbmZs
aWN0CiBQQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCiBQQVNT
IGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKIFBBU1MgZ2V0RXJyb3Ig
d2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKGdsLkZSQU1FQlVGRkVSKSByZXR1cm5lZCAzNjA1NAorUEFTUyBnbC5jaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSBpcyBnbC5GUkFNRUJVRkZFUl9VTlNVUFBPUlRF
RAogQXR0YWNoIHN0ZW5jaWwsIHRoZW4gZGVwdGhTdGVuY2lsLCBjYXVzaW5nIGNvbmZsaWN0CiBQ
QVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCiBQQVNTIGdldEVy
cm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKIFBBU1MgZ2V0RXJyb3Igd2FzIGV4
cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KGdsLkZSQU1FQlVGRkVSKSByZXR1cm5lZCAzNjA1NAorUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKGdsLkZSQU1FQlVGRkVSKSBpcyBnbC5GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRAogQXR0
YWNoIGRlcHRoU3RlbmNpbCwgdGhlbiBzdGVuY2lsLCBjYXVzaW5nIGNvbmZsaWN0CiBQQVNTIGZi
byA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCiBQQVNTIGdldEVycm9yIHdh
cyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKIFBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVk
IHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZS
QU1FQlVGRkVSKSByZXR1cm5lZCAzNjA1NAorUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KGdsLkZSQU1FQlVGRkVSKSBpcyBnbC5GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRAogQXR0YWNoIGNv
bG9yIHJlbmRlcmJ1ZmZlciB3aXRoIGludGVybmFsZm9ybWF0ID09IFJHQkE0CiBQQVNTIGNvbG9y
QnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCkgaXMgbm9uLW51bGwuCiBQQVNTIGdldEVy
cm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKIFBBU1MgZmJvID0gZ2wuY3JlYXRl
RnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KIFBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZh
bHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1F
QlVGRkVSKSByZXR1cm5lZCAzNjA1NAotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6
IElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OIDogCi1QQVNTIGdldEVycm9yIHdhcyBleHBl
Y3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gOiAKIEF0dGFjaCBjb2xv
ciByZW5kZXJidWZmZXIgd2l0aCBpbnRlcm5hbGZvcm1hdCA9PSBSR0I1X0ExCiBQQVNTIGNvbG9y
QnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCkgaXMgbm9uLW51bGwuCiBQQVNTIGdldEVy
cm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKIFBBU1MgZmJvID0gZ2wuY3JlYXRl
RnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KIFBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZh
bHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1F
QlVGRkVSKSByZXR1cm5lZCAzNjA1NAotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6
IElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OIDogCi1QQVNTIGdldEVycm9yIHdhcyBleHBl
Y3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gOiAKIEF0dGFjaCBjb2xv
ciByZW5kZXJidWZmZXIgd2l0aCBpbnRlcm5hbGZvcm1hdCA9PSBSR0I1NjUKIFBBU1MgY29sb3JC
dWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSBpcyBub24tbnVsbC4KIFBBU1MgZ2V0RXJy
b3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAogUEFTUyBmYm8gPSBnbC5jcmVhdGVG
cmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgogUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFs
dWU6IE5PX0VSUk9SIDogCi1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVC
VUZGRVIpIHJldHVybmVkIDM2MDU0Ci1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTog
SU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gOiAKLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVj
dGVkIHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiA6IAotQ3JlYXRlIGFuZCBh
dHRhY2ggZGVwdGhTdGVuY2lsIHJlbmRlcmJ1ZmZlcgotUEFTUyBkZXB0aFN0ZW5jaWxCdWZmZXIg
PSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSBpcyBub24tbnVsbC4KLVBBU1MgZ2V0RXJyb3Igd2Fz
IGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5nZXRSZW5kZXJidWZmZXJQYXJh
bWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfV0lEVEgpIGlzIHdpZHRoCi1Q
QVNTIGdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRF
UkJVRkZFUl9IRUlHSFQpIGlzIGhlaWdodAotUEFTUyBnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0
ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUKSBpcyBn
bC5ERVBUSF9TVEVOQ0lMCi1QQVNTIGdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5E
RVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9SRURfU0laRSkgaXMgMAotUEFTUyBnbC5nZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfR1JFRU5f
U0laRSkgaXMgMAotUEFTUyBnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVG
RkVSLCBnbC5SRU5ERVJCVUZGRVJfQkxVRV9TSVpFKSBpcyAwCi1QQVNTIGdsLmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9BTFBIQV9TSVpF
KSBpcyAwCi1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKLVBB
U1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KLVBBU1MgZ2V0RXJy
b3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5jaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSByZXR1cm5lZCAzNjA1NAotUEFTUyBnZXRFcnJvciB3
YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OIDogCi1QQVNT
IGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJ
T04gOiAKLQotRGltZW5zaW9ucyAwIHggMgotQ3JlYXRlIHJlbmRlcmJ1ZmZlcnMKLVBBU1MgZ2wg
PSBjcmVhdGUzRENvbnRleHQoKSBpcyBub24tbnVsbC4KLVBBU1MgY29sb3JCdWZmZXIgPSBnbC5j
cmVhdGVSZW5kZXJidWZmZXIoKSBpcyBub24tbnVsbC4KLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVj
dGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBkZXB0aEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRl
cmJ1ZmZlcigpIGlzIG5vbi1udWxsLgotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6
IE5PX0VSUk9SIDogCi1QQVNTIHN0ZW5jaWxCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIo
KSBpcyBub24tbnVsbC4KLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJP
UiA6IAotUEFTUyBkZXB0aFN0ZW5jaWxCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSBp
cyBub24tbnVsbC4KLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6
IAotQXR0YWNoIGRlcHRoIHVzaW5nIERFUFRIX0FUVEFDSE1FTlQKLVBBU1MgZmJvID0gZ2wuY3Jl
YXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVk
IHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZS
QU1FQlVGRkVSKSByZXR1cm5lZCAzNjA1NAotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFs
dWU6IElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OIDogCi1QQVNTIGdldEVycm9yIHdhcyBl
eHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gOiAKLUF0dGFjaCBk
ZXB0aCB1c2luZyBTVEVOQ0lMX0FUVEFDSE1FTlQKLVBBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVi
dWZmZXIoKSBpcyBub24tbnVsbC4KLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBO
T19FUlJPUiA6IAotUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVS
KSByZXR1cm5lZCAzNjA1NAotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFM
SURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OIDogCi1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2
YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gOiAKLUF0dGFjaCBkZXB0aCB1c2lu
ZyBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQKLVBBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZm
ZXIoKSBpcyBub24tbnVsbC4KLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19F
UlJPUiA6IAotUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSBy
ZXR1cm5lZCAzNjA1NAotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURf
RlJBTUVCVUZGRVJfT1BFUkFUSU9OIDogCi1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1
ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gOiAKLUF0dGFjaCBzdGVuY2lsIHVzaW5n
IFNURU5DSUxfQVRUQUNITUVOVAotUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlz
IG5vbi1udWxsLgotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDog
Ci1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHJldHVybmVk
IDM2MDU0Ci1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJV
RkZFUl9PUEVSQVRJT04gOiAKLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZB
TElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiA6IAotQXR0YWNoIHN0ZW5jaWwgdXNpbmcgREVQVEhf
QVRUQUNITUVOVAotUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxs
LgotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGds
LmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHJldHVybmVkIDM2MDU0Ci1Q
QVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVS
QVRJT04gOiAKLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX0ZSQU1F
QlVGRkVSX09QRVJBVElPTiA6IAotQXR0YWNoIHN0ZW5jaWwgdXNpbmcgREVQVEhfU1RFTkNJTF9B
VFRBQ0hNRU5UCi1QQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwu
Ci1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKLVBBU1MgZ2wu
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgcmV0dXJuZWQgMzYwNTQKLVBB
U1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJB
VElPTiA6IAotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfRlJBTUVC
VUZGRVJfT1BFUkFUSU9OIDogCi1BdHRhY2ggZGVwdGhTdGVuY2lsIHVzaW5nIERFUFRIX1NURU5D
SUxfQVRUQUNITUVOVAotUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1u
dWxsLgotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNT
IGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHJldHVybmVkIDM2MDU0
Ci1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9P
UEVSQVRJT04gOiAKLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX0ZS
QU1FQlVGRkVSX09QRVJBVElPTiA6IAotQXR0YWNoIGRlcHRoU3RlbmNpbCB1c2luZyBERVBUSF9B
VFRBQ0hNRU5UCi1QQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwu
Ci1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKLVBBU1MgZ2wu
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgcmV0dXJuZWQgMzYwNTQKLVBB
U1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJB
VElPTiA6IAotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfRlJBTUVC
VUZGRVJfT1BFUkFUSU9OIDogCi1BdHRhY2ggZGVwdGhTdGVuY2lsIHVzaW5nIFNURU5DSUxfQVRU
QUNITUVOVAotUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgot
UEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGdsLmNo
ZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHJldHVybmVkIDM2MDU0Ci1QQVNT
IGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJ
T04gOiAKLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVG
RkVSX09QRVJBVElPTiA6IAotQXR0YWNoIGRlcHRoLCB0aGVuIHN0ZW5jaWwsIGNhdXNpbmcgY29u
ZmxpY3QKLVBBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KLVBB
U1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnZXRFcnJv
ciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGdsLmNoZWNrRnJhbWVidWZm
ZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHJldHVybmVkIDM2MDU0Ci1BdHRhY2ggc3RlbmNpbCwg
dGhlbiBkZXB0aCwgY2F1c2luZyBjb25mbGljdAotUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1
ZmZlcigpIGlzIG5vbi1udWxsLgotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5P
X0VSUk9SIDogCi1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAK
LVBBU1MgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgcmV0dXJuZWQg
MzYwNTQKLUF0dGFjaCBkZXB0aCwgdGhlbiBkZXB0aFN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QK
LVBBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KLVBBU1MgZ2V0
RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnZXRFcnJvciB3YXMg
ZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0
dXMoZ2wuRlJBTUVCVUZGRVIpIHJldHVybmVkIDM2MDU0Ci1BdHRhY2ggZGVwdGhTdGVuY2lsLCB0
aGVuIGRlcHRoLCBjYXVzaW5nIGNvbmZsaWN0Ci1QQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVm
ZmVyKCkgaXMgbm9uLW51bGwuCi1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9f
RVJST1IgOiAKLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAot
UEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSByZXR1cm5lZCAz
NjA1NAotQXR0YWNoIHN0ZW5jaWwsIHRoZW4gZGVwdGhTdGVuY2lsLCBjYXVzaW5nIGNvbmZsaWN0
Ci1QQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCi1QQVNTIGdl
dEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKLVBBU1MgZ2V0RXJyb3Igd2Fz
IGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3Rh
dHVzKGdsLkZSQU1FQlVGRkVSKSByZXR1cm5lZCAzNjA1NAotQXR0YWNoIGRlcHRoU3RlbmNpbCwg
dGhlbiBzdGVuY2lsLCBjYXVzaW5nIGNvbmZsaWN0Ci1QQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1l
YnVmZmVyKCkgaXMgbm9uLW51bGwuCi1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTog
Tk9fRVJST1IgOiAKLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6
IAotUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSByZXR1cm5l
ZCAzNjA1NAotQXR0YWNoIGNvbG9yIHJlbmRlcmJ1ZmZlciB3aXRoIGludGVybmFsZm9ybWF0ID09
IFJHQkE0Ci1QQVNTIGNvbG9yQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCkgaXMgbm9u
LW51bGwuCi1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKLVBB
U1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KLVBBU1MgZ2V0RXJy
b3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5jaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSByZXR1cm5lZCAzNjA1NAotUEFTUyBnZXRFcnJvciB3
YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OIDogCi1QQVNT
IGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJ
T04gOiAKLUF0dGFjaCBjb2xvciByZW5kZXJidWZmZXIgd2l0aCBpbnRlcm5hbGZvcm1hdCA9PSBS
R0I1X0ExCi1QQVNTIGNvbG9yQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCkgaXMgbm9u
LW51bGwuCi1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKLVBB
U1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KLVBBU1MgZ2V0RXJy
b3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5jaGVja0ZyYW1lYnVm
ZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSByZXR1cm5lZCAzNjA1NAotUEFTUyBnZXRFcnJvciB3
YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OIDogCi1QQVNT
IGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJ
T04gOiAKLUF0dGFjaCBjb2xvciByZW5kZXJidWZmZXIgd2l0aCBpbnRlcm5hbGZvcm1hdCA9PSBS
R0I1NjUKLVBBU1MgY29sb3JCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSBpcyBub24t
bnVsbC4KLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFT
UyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgotUEFTUyBnZXRFcnJv
ciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGdsLmNoZWNrRnJhbWVidWZm
ZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHJldHVybmVkIDM2MDU0Ci1QQVNTIGdldEVycm9yIHdh
cyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gOiAKLVBBU1Mg
Z2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElP
TiA6IAotQ3JlYXRlIGFuZCBhdHRhY2ggZGVwdGhTdGVuY2lsIHJlbmRlcmJ1ZmZlcgotUEFTUyBk
ZXB0aFN0ZW5jaWxCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSBpcyBub24tbnVsbC4K
LVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5n
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJf
V0lEVEgpIGlzIHdpZHRoCi1QQVNTIGdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5E
RVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVQpIGlzIGdsLkRFUFRIX1NU
RU5DSUwKLVBBU1MgZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwg
Z2wuUkVOREVSQlVGRkVSX1JFRF9TSVpFKSBpcyAwCi1QQVNTIGdsLmdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9HUkVFTl9TSVpFKSBpcyAw
Ci1QQVNTIGdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJF
TkRFUkJVRkZFUl9CTFVFX1NJWkUpIGlzIDAKLVBBU1MgZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1l
dGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0FMUEhBX1NJWkUpIGlzIDAKLVBB
U1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBmYm8gPSBn
bC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgotUEFTUyBnZXRFcnJvciB3YXMgZXhw
ZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMo
Z2wuRlJBTUVCVUZGRVIpIHJldHVybmVkIDM2MDU0Ci1QQVNTIGdldEVycm9yIHdhcyBleHBlY3Rl
ZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gOiAKLVBBU1MgZ2V0RXJyb3Ig
d2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiA6IAotCi1E
aW1lbnNpb25zIDIgeCAwCi1DcmVhdGUgcmVuZGVyYnVmZmVycwotUEFTUyBnbCA9IGNyZWF0ZTNE
Q29udGV4dCgpIGlzIG5vbi1udWxsLgotUEFTUyBjb2xvckJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRl
cmJ1ZmZlcigpIGlzIG5vbi1udWxsLgotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6
IE5PX0VSUk9SIDogCi1QQVNTIGRlcHRoQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCkg
aXMgbm9uLW51bGwuCi1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1Ig
OiAKLVBBU1Mgc3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGlzIG5vbi1u
dWxsLgotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNT
IGRlcHRoU3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGlzIG5vbi1udWxs
LgotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1BdHRhY2gg
ZGVwdGggdXNpbmcgREVQVEhfQVRUQUNITUVOVAotUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1
ZmZlcigpIGlzIG5vbi1udWxsLgotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5P
X0VSUk9SIDogCi1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIp
IHJldHVybmVkIDM2MDU0Ci1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJ
RF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gOiAKLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZh
bHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiA6IAotQXR0YWNoIGRlcHRoIHVzaW5n
IFNURU5DSUxfQVRUQUNITUVOVAotUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlz
IG5vbi1udWxsLgotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDog
Ci1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHJldHVybmVk
IDM2MDU0Ci1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJV
RkZFUl9PUEVSQVRJT04gOiAKLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZB
TElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiA6IAotQXR0YWNoIGRlcHRoIHVzaW5nIERFUFRIX1NU
RU5DSUxfQVRUQUNITUVOVAotUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5v
bi1udWxsLgotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1Q
QVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHJldHVybmVkIDM2
MDU0Ci1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZF
Ul9PUEVSQVRJT04gOiAKLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElE
X0ZSQU1FQlVGRkVSX09QRVJBVElPTiA6IAotQXR0YWNoIHN0ZW5jaWwgdXNpbmcgU1RFTkNJTF9B
VFRBQ0hNRU5UCi1QQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwu
Ci1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKLVBBU1MgZ2wu
Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgcmV0dXJuZWQgMzYwNTQKLVBB
U1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJB
VElPTiA6IAotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfRlJBTUVC
VUZGRVJfT1BFUkFUSU9OIDogCi1BdHRhY2ggc3RlbmNpbCB1c2luZyBERVBUSF9BVFRBQ0hNRU5U
Ci1QQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCi1QQVNTIGdl
dEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKLVBBU1MgZ2wuY2hlY2tGcmFt
ZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgcmV0dXJuZWQgMzYwNTQKLVBBU1MgZ2V0RXJy
b3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiA6IAot
UEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfRlJBTUVCVUZGRVJfT1BF
UkFUSU9OIDogCi1BdHRhY2ggc3RlbmNpbCB1c2luZyBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQK
LVBBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KLVBBU1MgZ2V0
RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5jaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSByZXR1cm5lZCAzNjA1NAotUEFTUyBnZXRFcnJv
ciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OIDogCi1Q
QVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVS
QVRJT04gOiAKLUF0dGFjaCBkZXB0aFN0ZW5jaWwgdXNpbmcgREVQVEhfU1RFTkNJTF9BVFRBQ0hN
RU5UCi1QQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCi1QQVNT
IGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKLVBBU1MgZ2wuY2hlY2tG
cmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgcmV0dXJuZWQgMzYwNTQKLVBBU1MgZ2V0
RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiA6
IAotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfRlJBTUVCVUZGRVJf
T1BFUkFUSU9OIDogCi1BdHRhY2ggZGVwdGhTdGVuY2lsIHVzaW5nIERFUFRIX0FUVEFDSE1FTlQK
LVBBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KLVBBU1MgZ2V0
RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5jaGVja0ZyYW1l
YnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSByZXR1cm5lZCAzNjA1NAotUEFTUyBnZXRFcnJv
ciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OIDogCi1Q
QVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVS
QVRJT04gOiAKLUF0dGFjaCBkZXB0aFN0ZW5jaWwgdXNpbmcgU1RFTkNJTF9BVFRBQ0hNRU5UCi1Q
QVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCi1QQVNTIGdldEVy
cm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKLVBBU1MgZ2wuY2hlY2tGcmFtZWJ1
ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgcmV0dXJuZWQgMzYwNTQKLVBBU1MgZ2V0RXJyb3Ig
d2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiA6IAotUEFT
UyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFU
SU9OIDogCi1BdHRhY2ggZGVwdGgsIHRoZW4gc3RlbmNpbCwgY2F1c2luZyBjb25mbGljdAotUEFT
UyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgotUEFTUyBnZXRFcnJv
ciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGdldEVycm9yIHdhcyBleHBl
Y3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKLVBBU1MgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhn
bC5GUkFNRUJVRkZFUikgcmV0dXJuZWQgMzYwNTQKLUF0dGFjaCBzdGVuY2lsLCB0aGVuIGRlcHRo
LCBjYXVzaW5nIGNvbmZsaWN0Ci1QQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMg
bm9uLW51bGwuCi1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAK
LVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5j
aGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSByZXR1cm5lZCAzNjA1NAotQXR0
YWNoIGRlcHRoLCB0aGVuIGRlcHRoU3RlbmNpbCwgY2F1c2luZyBjb25mbGljdAotUEFTUyBmYm8g
PSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgotUEFTUyBnZXRFcnJvciB3YXMg
ZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2
YWx1ZTogTk9fRVJST1IgOiAKLVBBU1MgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFN
RUJVRkZFUikgcmV0dXJuZWQgMzYwNTQKLUF0dGFjaCBkZXB0aFN0ZW5jaWwsIHRoZW4gZGVwdGgs
IGNhdXNpbmcgY29uZmxpY3QKLVBBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBu
b24tbnVsbC4KLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAot
UEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGdsLmNo
ZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHJldHVybmVkIDM2MDU0Ci1BdHRh
Y2ggc3RlbmNpbCwgdGhlbiBkZXB0aFN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QKLVBBU1MgZmJv
ID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KLVBBU1MgZ2V0RXJyb3Igd2Fz
IGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQg
dmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJB
TUVCVUZGRVIpIHJldHVybmVkIDM2MDU0Ci1BdHRhY2ggZGVwdGhTdGVuY2lsLCB0aGVuIHN0ZW5j
aWwsIGNhdXNpbmcgY29uZmxpY3QKLVBBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBp
cyBub24tbnVsbC4KLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6
IAotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGds
LmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHJldHVybmVkIDM2MDU0Ci1B
dHRhY2ggY29sb3IgcmVuZGVyYnVmZmVyIHdpdGggaW50ZXJuYWxmb3JtYXQgPT0gUkdCQTQKLVBB
U1MgY29sb3JCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSBpcyBub24tbnVsbC4KLVBB
U1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBmYm8gPSBn
bC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgotUEFTUyBnZXRFcnJvciB3YXMgZXhw
ZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMo
Z2wuRlJBTUVCVUZGRVIpIHJldHVybmVkIDM2MDU0Ci1QQVNTIGdldEVycm9yIHdhcyBleHBlY3Rl
ZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gOiAKLVBBU1MgZ2V0RXJyb3Ig
d2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiA6IAotQXR0
YWNoIGNvbG9yIHJlbmRlcmJ1ZmZlciB3aXRoIGludGVybmFsZm9ybWF0ID09IFJHQjVfQTEKLVBB
U1MgY29sb3JCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSBpcyBub24tbnVsbC4KLVBB
U1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBmYm8gPSBn
bC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgotUEFTUyBnZXRFcnJvciB3YXMgZXhw
ZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMo
Z2wuRlJBTUVCVUZGRVIpIHJldHVybmVkIDM2MDU0Ci1QQVNTIGdldEVycm9yIHdhcyBleHBlY3Rl
ZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gOiAKLVBBU1MgZ2V0RXJyb3Ig
d2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiA6IAotQXR0
YWNoIGNvbG9yIHJlbmRlcmJ1ZmZlciB3aXRoIGludGVybmFsZm9ybWF0ID09IFJHQjU2NQotUEFT
UyBjb2xvckJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGlzIG5vbi1udWxsLgotUEFT
UyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGZibyA9IGds
LmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCi1QQVNTIGdldEVycm9yIHdhcyBleHBl
Y3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKLVBBU1MgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhn
bC5GUkFNRUJVRkZFUikgcmV0dXJuZWQgMzYwNTQKLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVk
IHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiA6IAotUEFTUyBnZXRFcnJvciB3
YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OIDogCi1DcmVh
dGUgYW5kIGF0dGFjaCBkZXB0aFN0ZW5jaWwgcmVuZGVyYnVmZmVyCi1QQVNTIGRlcHRoU3RlbmNp
bEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGlzIG5vbi1udWxsLgotUEFTUyBnZXRF
cnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGdsLmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9IRUlHSFQpIGlz
IGhlaWdodAotUEFTUyBnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVS
LCBnbC5SRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUKSBpcyBnbC5ERVBUSF9TVEVOQ0lMCi1Q
QVNTIGdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRF
UkJVRkZFUl9SRURfU0laRSkgaXMgMAotUEFTUyBnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIo
Z2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfR1JFRU5fU0laRSkgaXMgMAotUEFTUyBn
bC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZG
RVJfQkxVRV9TSVpFKSBpcyAwCi1QQVNTIGdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5S
RU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9BTFBIQV9TSVpFKSBpcyAwCi1QQVNTIGdldEVy
cm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKLVBBU1MgZmJvID0gZ2wuY3JlYXRl
RnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZh
bHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1F
QlVGRkVSKSByZXR1cm5lZCAzNjA1NAotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6
IElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OIDogCi1QQVNTIGdldEVycm9yIHdhcyBleHBl
Y3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gOiAKLQotRGltZW5zaW9u
cyAyIHggMgotQ3JlYXRlIHJlbmRlcmJ1ZmZlcnMKLVBBU1MgZ2wgPSBjcmVhdGUzRENvbnRleHQo
KSBpcyBub24tbnVsbC4KLVBBU1MgY29sb3JCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIo
KSBpcyBub24tbnVsbC4KLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJP
UiA6IAotUEFTUyBkZXB0aEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGlzIG5vbi1u
dWxsLgotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNT
IHN0ZW5jaWxCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSBpcyBub24tbnVsbC4KLVBB
U1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBkZXB0aFN0
ZW5jaWxCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSBpcyBub24tbnVsbC4KLVBBU1Mg
Z2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotQXR0YWNoIGRlcHRoIHVz
aW5nIERFUFRIX0FUVEFDSE1FTlQKLVBBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBp
cyBub24tbnVsbC4KLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6
IAotUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSByZXR1cm5l
ZCAzNjA1MwotQXR0YWNoIGRlcHRoIHVzaW5nIFNURU5DSUxfQVRUQUNITUVOVAotUEFTUyBmYm8g
PSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgotUEFTUyBnZXRFcnJvciB3YXMg
ZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0
dXMoZ2wuRlJBTUVCVUZGRVIpIHJldHVybmVkIDM2MDU0Ci1QQVNTIGdldEVycm9yIHdhcyBleHBl
Y3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gOiAKLVBBU1MgZ2V0RXJy
b3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiA6IAot
QXR0YWNoIGRlcHRoIHVzaW5nIERFUFRIX1NURU5DSUxfQVRUQUNITUVOVAotUEFTUyBmYm8gPSBn
bC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgotUEFTUyBnZXRFcnJvciB3YXMgZXhw
ZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMo
Z2wuRlJBTUVCVUZGRVIpIHJldHVybmVkIDM2MDU0Ci1QQVNTIGdldEVycm9yIHdhcyBleHBlY3Rl
ZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gOiAKLVBBU1MgZ2V0RXJyb3Ig
d2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiA6IAotQXR0
YWNoIHN0ZW5jaWwgdXNpbmcgU1RFTkNJTF9BVFRBQ0hNRU5UCi1QQVNTIGZibyA9IGdsLmNyZWF0
ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCi1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2
YWx1ZTogTk9fRVJST1IgOiAKLVBBU1MgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFN
RUJVRkZFUikgcmV0dXJuZWQgMzYwNjEKLUF0dGFjaCBzdGVuY2lsIHVzaW5nIERFUFRIX0FUVEFD
SE1FTlQKLVBBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KLVBB
U1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5jaGVj
a0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSByZXR1cm5lZCAzNjA1NAotUEFTUyBn
ZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9O
IDogCi1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZF
Ul9PUEVSQVRJT04gOiAKLUF0dGFjaCBzdGVuY2lsIHVzaW5nIERFUFRIX1NURU5DSUxfQVRUQUNI
TUVOVAotUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgotUEFT
UyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGdsLmNoZWNr
RnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHJldHVybmVkIDM2MDU0Ci1QQVNTIGdl
dEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04g
OiAKLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVS
X09QRVJBVElPTiA6IAotQXR0YWNoIGRlcHRoU3RlbmNpbCB1c2luZyBERVBUSF9TVEVOQ0lMX0FU
VEFDSE1FTlQKLVBBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4K
LVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5j
aGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSByZXR1cm5lZCAzNjA1MwotQXR0
YWNoIGRlcHRoU3RlbmNpbCB1c2luZyBERVBUSF9BVFRBQ0hNRU5UCi1QQVNTIGZibyA9IGdsLmNy
ZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCi1QQVNTIGdldEVycm9yIHdhcyBleHBlY3Rl
ZCB2YWx1ZTogTk9fRVJST1IgOiAKLVBBU1MgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5G
UkFNRUJVRkZFUikgcmV0dXJuZWQgMzYwNTQKLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZh
bHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiA6IAotUEFTUyBnZXRFcnJvciB3YXMg
ZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OIDogCi1BdHRhY2gg
ZGVwdGhTdGVuY2lsIHVzaW5nIFNURU5DSUxfQVRUQUNITUVOVAotUEFTUyBmYm8gPSBnbC5jcmVh
dGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQg
dmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJB
TUVCVUZGRVIpIHJldHVybmVkIDM2MDU0Ci1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1
ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gOiAKLVBBU1MgZ2V0RXJyb3Igd2FzIGV4
cGVjdGVkIHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiA6IAotQXR0YWNoIGRl
cHRoLCB0aGVuIHN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QKLVBBU1MgZmJvID0gZ2wuY3JlYXRl
RnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZh
bHVlOiBOT19FUlJPUiA6IAotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VS
Uk9SIDogCi1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHJl
dHVybmVkIDM2MDYxCi1BdHRhY2ggc3RlbmNpbCwgdGhlbiBkZXB0aCwgY2F1c2luZyBjb25mbGlj
dAotUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgotUEFTUyBn
ZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGdldEVycm9yIHdh
cyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKLVBBU1MgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0
YXR1cyhnbC5GUkFNRUJVRkZFUikgcmV0dXJuZWQgMzYwNjEKLUF0dGFjaCBkZXB0aCwgdGhlbiBk
ZXB0aFN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QKLVBBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVi
dWZmZXIoKSBpcyBub24tbnVsbC4KLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBO
T19FUlJPUiA6IAotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDog
Ci1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHJldHVybmVk
IDM2MDYxCi1BdHRhY2ggZGVwdGhTdGVuY2lsLCB0aGVuIGRlcHRoLCBjYXVzaW5nIGNvbmZsaWN0
Ci1QQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCi1QQVNTIGdl
dEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKLVBBU1MgZ2V0RXJyb3Igd2Fz
IGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3Rh
dHVzKGdsLkZSQU1FQlVGRkVSKSByZXR1cm5lZCAzNjA2MQotQXR0YWNoIHN0ZW5jaWwsIHRoZW4g
ZGVwdGhTdGVuY2lsLCBjYXVzaW5nIGNvbmZsaWN0Ci1QQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1l
YnVmZmVyKCkgaXMgbm9uLW51bGwuCi1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTog
Tk9fRVJST1IgOiAKLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6
IAotUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSByZXR1cm5l
ZCAzNjA2MQotQXR0YWNoIGRlcHRoU3RlbmNpbCwgdGhlbiBzdGVuY2lsLCBjYXVzaW5nIGNvbmZs
aWN0Ci1QQVNTIGZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9uLW51bGwuCi1QQVNT
IGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKLVBBU1MgZ2V0RXJyb3Ig
d2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKGdsLkZSQU1FQlVGRkVSKSByZXR1cm5lZCAzNjA2MQotQXR0YWNoIGNvbG9yIHJlbmRl
cmJ1ZmZlciB3aXRoIGludGVybmFsZm9ybWF0ID09IFJHQkE0Ci1QQVNTIGNvbG9yQnVmZmVyID0g
Z2wuY3JlYXRlUmVuZGVyYnVmZmVyKCkgaXMgbm9uLW51bGwuCi1QQVNTIGdldEVycm9yIHdhcyBl
eHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKLVBBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZm
ZXIoKSBpcyBub24tbnVsbC4KLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19F
UlJPUiA6IAotUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSBy
ZXR1cm5lZCAzNjA1MwotQXR0YWNoIGNvbG9yIHJlbmRlcmJ1ZmZlciB3aXRoIGludGVybmFsZm9y
bWF0ID09IFJHQjVfQTEKLVBBU1MgY29sb3JCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIo
KSBpcyBub24tbnVsbC4KLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJP
UiA6IAotUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgotUEFT
UyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGdsLmNoZWNr
RnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHJldHVybmVkIDM2MDUzCi1BdHRhY2gg
Y29sb3IgcmVuZGVyYnVmZmVyIHdpdGggaW50ZXJuYWxmb3JtYXQgPT0gUkdCNTY1Ci1QQVNTIGNv
bG9yQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCkgaXMgbm9uLW51bGwuCi1QQVNTIGdl
dEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKLVBBU1MgZmJvID0gZ2wuY3Jl
YXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVk
IHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZS
QU1FQlVGRkVSKSByZXR1cm5lZCAzNjA1MwogQ3JlYXRlIGFuZCBhdHRhY2ggZGVwdGhTdGVuY2ls
IHJlbmRlcmJ1ZmZlcgogUEFTUyBkZXB0aFN0ZW5jaWxCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJi
dWZmZXIoKSBpcyBub24tbnVsbC4KIFBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBO
T19FUlJPUiA6IApAQCAtNTMxLDgxICsxMTcsNiBAQCBQQVNTIGdsLmdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJFTkRFUkJVRkZFUl9TVEVOQ0lMX1NJWkUpCiBQ
QVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKIFBBU1MgZmJvID0g
Z2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KIFBBU1MgZ2V0RXJyb3Igd2FzIGV4
cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVz
KGdsLkZSQU1FQlVGRkVSKSByZXR1cm5lZCAzNjA1MwotUEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFt
ZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgotUEFTUyBjb2xvckJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRl
cmJ1ZmZlcigpIGlzIG5vbi1udWxsLgotUEFTUyBkZXB0aEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRl
cmJ1ZmZlcigpIGlzIG5vbi1udWxsLgotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6
IE5PX0VSUk9SIDogCi0KLUF0dGFjaG1lbnRzIG9mIGRpZmZlcmVudCBzaXplcyBzaG91bGQgYmUg
RlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TIChPcGVuR0wgRVMgMi4wIDQuNC41KQot
UEFTUyBmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIGlzIG5vbi1udWxsLgotUEFTUyBjb2xv
ckJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGlzIG5vbi1udWxsLgotUEFTUyBkZXB0
aEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIGlzIG5vbi1udWxsLgotUEFTUyBnZXRF
cnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGdsLmNoZWNrRnJhbWVi
dWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHNob3VsZCBiZSBGUkFNRUJVRkZFUl9DT01QTEVU
RSB3YXMgRlJBTUVCVUZGRVJfQ09NUExFVEUKLVBBU1MgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1
cyhnbC5GUkFNRUJVRkZFUikgc2hvdWxkIGJlIEZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5T
SU9OUyB3YXMgRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TIG9yIEZSQU1FQlVGRkVS
X1VOU1VQUE9SVEVECi1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZG
RVIpIHNob3VsZCBiZSBGUkFNRUJVRkZFUl9DT01QTEVURSB3YXMgRlJBTUVCVUZGRVJfQ09NUExF
VEUKLVBBU1MgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJVRkZFUikgc2hvdWxk
IGJlIEZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OUyB3YXMgRlJBTUVCVUZGRVJfSU5D
T01QTEVURV9ESU1FTlNJT05TIG9yIEZSQU1FQlVGRkVSX1VOU1VQUE9SVEVECi1QQVNTIGdsLmNo
ZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHNob3VsZCBiZSBGUkFNRUJVRkZF
Ul9DT01QTEVURSB3YXMgRlJBTUVCVUZGRVJfQ09NUExFVEUKLVBBU1MgZ2V0RXJyb3Igd2FzIGV4
cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFs
dWU6IE5PX0VSUk9SIDogCi1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVC
VUZGRVIpIHNob3VsZCBiZSBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlMgd2FzIEZS
QU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OUyBvciBGUkFNRUJVRkZFUl9VTlNVUFBPUlRF
RAotUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSBzaG91bGQg
YmUgRlJBTUVCVUZGRVJfQ09NUExFVEUgd2FzIEZSQU1FQlVGRkVSX0NPTVBMRVRFCi1QQVNTIGdl
dEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogTk9fRVJST1IgOiAKLVBBU1MgZmJvID0gZ2wuY3Jl
YXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KLVBBU1MgY29sb3JCdWZmZXIgPSBnbC5jcmVh
dGVSZW5kZXJidWZmZXIoKSBpcyBub24tbnVsbC4KLVBBU1MgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0
YXR1cyhnbC5GUkFNRUJVRkZFUikgc2hvdWxkIGJlIEZSQU1FQlVGRkVSX0NPTVBMRVRFIHdhcyBG
UkFNRUJVRkZFUl9DT01QTEVURQotCi1Xcm9uZyBzdG9yYWdlIHR5cGUgZm9yIHR5cGUgb2YgYXR0
YWNobWVudCBiZSBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQgKE9wZW5HTCBFUyAy
LjAgNC40LjUpCi1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIp
IHNob3VsZCBiZSBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQgd2FzIEZSQU1FQlVG
RkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVCBvciBGUkFNRUJVRkZFUl9VTlNVUFBPUlRFRAotUEFT
UyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSBzaG91bGQgYmUgRlJB
TUVCVUZGRVJfQ09NUExFVEUgd2FzIEZSQU1FQlVGRkVSX0NPTVBMRVRFCi0KLTAgc2l6ZSBhdHRh
Y2htZW50IHNob3VsZCBiZSBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQgKE9wZW5H
TCBFUyAyLjAgNC40LjUpCi1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVC
VUZGRVIpIHNob3VsZCBiZSBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQgd2FzIEZS
QU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVOVCBvciBGUkFNRUJVRkZFUl9VTlNVUFBPUlRF
RAotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi0KLU5vIGF0
dGFjaG1lbnRzIHNob3VsZCBiZSBJTkNPTVBMRVRFX0ZSQU1FQlVGRkVSX01JU1NJTkdfQVRUQUNI
TUVOVCAoT3BlbkdMIEVTIDIuMCA0LjQuNSkKLVBBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZm
ZXIoKSBpcyBub24tbnVsbC4KLVBBU1MgZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFN
RUJVRkZFUikgc2hvdWxkIGJlIEZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hN
RU5UIHdhcyBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVCBvciBGUkFN
RUJVRkZFUl9VTlNVUFBPUlRFRAotUEFTUyBjb2xvckJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1
ZmZlcigpIGlzIG5vbi1udWxsLgotUEFTUyBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZS
QU1FQlVGRkVSKSBzaG91bGQgYmUgRlJBTUVCVUZGRVJfQ09NUExFVEUgd2FzIEZSQU1FQlVGRkVS
X0NPTVBMRVRFCi1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIp
IHNob3VsZCBiZSBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVCB3YXMg
RlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlQgb3IgRlJBTUVCVUZGRVJf
VU5TVVBQT1JURUQKLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6
IAotCi1UZXN0IGRyYXdpbmcgb3IgcmVhZGluZyBmcm9tIGFuIGluY29tcGxldGUgZnJhbWVidWZm
ZXIKLVBBU1MgZmJvID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSBpcyBub24tbnVsbC4KLVBBU1Mg
Y29sb3JCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSBpcyBub24tbnVsbC4KLVBBU1Mg
ZGVwdGhCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSBpcyBub24tbnVsbC4KLVBBU1Mg
Z2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnbC5jaGVja0Zy
YW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSBzaG91bGQgYmUgRlJBTUVCVUZGRVJfQ09N
UExFVEUgd2FzIEZSQU1FQlVGRkVSX0NPTVBMRVRFCi1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJT
dGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHNob3VsZCBiZSBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJ
TUVOU0lPTlMgd2FzIEZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OUyBvciBGUkFNRUJV
RkZFUl9VTlNVUFBPUlRFRAotCi1EcmF3aW5nIG9yIHJlYWRpbmcgZnJvbSBhbiBpbmNvbXBsZXRl
IGZyYW1lYnVmZmVyIHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElP
TgotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IE5PX0VSUk9SIDogCi1QQVNTIGdl
dEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04g
OiBkcmF3QXJyYXlzIHdpdGggaW5jb21wbGV0ZSBmcmFtZWJ1ZmZlcgotUEFTUyBnZXRFcnJvciB3
YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OIDogcmVhZFBp
eGVscyBmcm9tIGluY29tcGxldGUgZnJhbWVidWZmZXIKLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVj
dGVkIHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiA6IGNvcHlUZXhJbWFnZTJE
IGZyb20gaW5jb21wbGV0ZSBmcmFtZWJ1ZmZlcgotUEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQg
dmFsdWU6IElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OIDogY29weVRleFN1YkltYWdlMkQg
ZnJvbSBpbmNvbXBsZXRlIGZyYW1lYnVmZmVyCi1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2
YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04gOiBjbGVhciB3aXRoIGluY29tcGxl
dGUgZnJhbWVidWZmZXIKLVBBU1MgZmJvMiA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkgaXMgbm9u
LW51bGwuCi1QQVNTIGdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpIHNo
b3VsZCBiZSBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVCB3YXMgRlJB
TUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlQgb3IgRlJBTUVCVUZGRVJfVU5T
VVBQT1JURUQKLQotRHJhd2luZyBvciByZWFkaW5nIGZyb20gYW4gaW5jb21wbGV0ZSBmcmFtZWJ1
ZmZlciBzaG91bGQgZ2VuZXJhdGUgSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04KLVBBU1Mg
Z2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBOT19FUlJPUiA6IAotUEFTUyBnZXRFcnJvciB3
YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OIDogZHJhd0Fy
cmF5cyB3aXRoIGluY29tcGxldGUgZnJhbWVidWZmZXIKLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVj
dGVkIHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiA6IHJlYWRQaXhlbHMgZnJv
bSBpbmNvbXBsZXRlIGZyYW1lYnVmZmVyCi1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1
ZTogSU5WQUxJRF9PUEVSQVRJT04gOiBjb3B5VGV4SW1hZ2UyRCBmcm9tIGluY29tcGxldGUgZnJh
bWVidWZmZXIKLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX09QRVJB
VElPTiA6IGNvcHlUZXhTdWJJbWFnZTJEIGZyb20gaW5jb21wbGV0ZSBmcmFtZWJ1ZmZlcgotUEFT
UyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFU
SU9OIDogY2xlYXIgd2l0aCBpbmNvbXBsZXRlIGZyYW1lYnVmZmVyCi1QQVNTIGNvbG9yQnVmZmVy
ID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCkgaXMgbm9uLW51bGwuCi0KLURyYXdpbmcgb3IgcmVh
ZGluZyBmcm9tIGFuIGluY29tcGxldGUgZnJhbWVidWZmZXIgc2hvdWxkIGdlbmVyYXRlIElOVkFM
SURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OCi1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1
ZTogTk9fRVJST1IgOiAKLVBBU1MgZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElE
X0ZSQU1FQlVGRkVSX09QRVJBVElPTiA6IGRyYXdBcnJheXMgd2l0aCBpbmNvbXBsZXRlIGZyYW1l
YnVmZmVyCi1QQVNTIGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJV
RkZFUl9PUEVSQVRJT04gOiByZWFkUGl4ZWxzIGZyb20gaW5jb21wbGV0ZSBmcmFtZWJ1ZmZlcgot
UEFTUyBnZXRFcnJvciB3YXMgZXhwZWN0ZWQgdmFsdWU6IElOVkFMSURfRlJBTUVCVUZGRVJfT1BF
UkFUSU9OIDogY29weVRleEltYWdlMkQgZnJvbSBpbmNvbXBsZXRlIGZyYW1lYnVmZmVyCi1QQVNT
IGdldEVycm9yIHdhcyBleHBlY3RlZCB2YWx1ZTogSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJ
T04gOiBjb3B5VGV4U3ViSW1hZ2UyRCBmcm9tIGluY29tcGxldGUgZnJhbWVidWZmZXIKLVBBU1Mg
Z2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElP
TiA6IGNsZWFyIHdpdGggaW5jb21wbGV0ZSBmcmFtZWJ1ZmZlcgogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9m
YXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9jYW52YXMvd2ViZ2wvZnJhbWVidWZmZXItb2JqZWN0LWF0dGFjaG1lbnQu
aHRtbAppbmRleCAwMjQyNTA2Li41ZjRmZTk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL2ZyYW1lYnVmZmVyLW9iamVjdC1hdHRhY2htZW50
Lmh0bWwKQEAgLTEsNjMgKzEsNDAgQEAKLTwhRE9DVFlQRSBodG1sPgogPGh0bWw+CiA8aGVhZD4K
LTxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJnbC10
ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2ViZ2wtdGVzdC11dGls
cy5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KIDxkaXYgaWQ9ImRlc2NyaXB0aW9uIj48
L2Rpdj4KIDxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgogCiA8c2NyaXB0PgotdmFyIHd0dSA9IFdl
YkdMVGVzdFV0aWxzOworCiB2YXIgZ2w7CiB2YXIgZmJvOwogdmFyIGRlcHRoQnVmZmVyOwogdmFy
IHN0ZW5jaWxCdWZmZXI7CiB2YXIgZGVwdGhTdGVuY2lsQnVmZmVyOwogdmFyIGNvbG9yQnVmZmVy
OwotdmFyIHdpZHRoOwotdmFyIGhlaWdodDsKLQotY29uc3QgQUxMT1dfQ09NUExFVEUgICAgICAg
ICAgICAgID0gMHgwMTsKLWNvbnN0IEFMTE9XX1VOU1VQUE9SVEVEICAgICAgICAgICA9IDB4MDI7
Ci1jb25zdCBBTExPV19JTkNPTVBMRVRFX0FUVEFDSE1FTlQgPSAweDA0OwotCi1mdW5jdGlvbiBj
aGVja0ZyYW1lYnVmZmVyRm9yQWxsb3dlZFN0YXR1c2VzKGFsbG93ZWRTdGF0dXNlcykKLXsKLSAg
ICAvLyBJZiB0aGUgZnJhbWVidWZmZXIgaXMgaW4gYW4gZXJyb3Igc3RhdGUgZm9yIG11bHRpcGxl
IHJlYXNvbnMsCi0gICAgLy8gd2UgY2FuJ3QgZ3VhcmFudGVlIHdoaWNoIG9uZSB3aWxsIGJlIHJl
cG9ydGVkLgotICAgIHZhciBzdGF0dXMgPSBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZS
QU1FQlVGRkVSKTsKLSAgICB2YXIgc3RhdHVzQWxsb3dlZCA9ICgoYWxsb3dlZFN0YXR1c2VzICYg
QUxMT1dfQ09NUExFVEUpICYmIChzdGF0dXMgPT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpKSB8
fAotICAgICAgICAgICAgICAgICAgICAgICAgKChhbGxvd2VkU3RhdHVzZXMgJiBBTExPV19VTlNV
UFBPUlRFRCkgJiYgKHN0YXR1cyA9PSBnbC5GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRCkpIHx8Ci0g
ICAgICAgICAgICAgICAgICAgICAgICAoKGFsbG93ZWRTdGF0dXNlcyAmIEFMTE9XX0lOQ09NUExF
VEVfQVRUQUNITUVOVCkgJiYgKHN0YXR1cyA9PSBnbC5GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FU
VEFDSE1FTlQpKTsKLSAgICB2YXIgbXNnID0gImdsLmNoZWNrRnJhbWVidWZmZXJTdGF0dXMoZ2wu
RlJBTUVCVUZGRVIpIHJldHVybmVkICIgKyBzdGF0dXM7Ci0gICAgaWYgKHN0YXR1c0FsbG93ZWQp
Ci0gICAgICAgIHRlc3RQYXNzZWQobXNnKTsKLSAgICBlbHNlCi0gICAgICAgIHRlc3RGYWlsZWQo
bXNnKTsKLX0KK3ZhciB3aWR0aCA9IDI7Cit2YXIgaGVpZ2h0ID0gMjsKIAotZnVuY3Rpb24gdGVz
dEF0dGFjaG1lbnQoYXR0YWNobWVudCwgYnVmZmVyLCBhbGxvd2VkU3RhdHVzZXMpCitmdW5jdGlv
biB0ZXN0QXR0YWNobWVudChhdHRhY2htZW50LCBidWZmZXIsIGlzQ29uZmxpY3RlZCkKIHsKICAg
ICBzaG91bGRCZU5vbk51bGwoImZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkiKTsKICAgICBn
bC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7CiAgICAgZ2wuZnJhbWVidWZm
ZXJSZW5kZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5S
RU5ERVJCVUZGRVIsIGNvbG9yQnVmZmVyKTsKICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZl
cihnbC5GUkFNRUJVRkZFUiwgYXR0YWNobWVudCwgZ2wuUkVOREVSQlVGRkVSLCBidWZmZXIpOwog
ICAgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOwotICAgIGNoZWNrRnJhbWVidWZm
ZXJGb3JBbGxvd2VkU3RhdHVzZXMoYWxsb3dlZFN0YXR1c2VzKTsKLSAgICBpZiAoKGFsbG93ZWRT
dGF0dXNlcyAmIEFMTE9XX0NPTVBMRVRFKSA9PSAwKSB7CisgICAgaWYgKGlzQ29uZmxpY3RlZCkg
eworICAgICAgICBzaG91bGRCZSgiZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyhnbC5GUkFNRUJV
RkZFUikiLCAiZ2wuRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQiKTsKICAgICAgICAgZ2wuY2xlYXIo
Z2wuQ09MT1JfQlVGRkVSX0JJVCk7CiAgICAgICAgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5W
QUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04pOwogICAgICAgICBnbC5yZWFkUGl4ZWxzKDAsIDAs
IHdpZHRoLCBoZWlnaHQsIGdsLlJHQkEsIGdsLlVOU0lHTkVEX0JZVEUsIG5ldyBVaW50OEFycmF5
KHdpZHRoICogaGVpZ2h0ICogNCkpOwogICAgICAgICBnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLklO
VkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OKTsKICAgICB9Ci0gICAgZ2wuZGVsZXRlRnJhbWVi
dWZmZXIoZmJvKTsKIH0KIAotZnVuY3Rpb24gdGVzdEF0dGFjaG1lbnRzKGF0dGFjaG1lbnQwLCBi
dWZmZXIwLCBhdHRhY2htZW50MSwgYnVmZmVyMSwgYWxsb3dlZFN0YXR1c2VzKQorZnVuY3Rpb24g
dGVzdEF0dGFjaG1lbnRzKGF0dGFjaG1lbnQwLCBidWZmZXIwLCBhdHRhY2htZW50MSwgYnVmZmVy
MSwgaXNDb25mbGljdGVkKQogewogICAgIHNob3VsZEJlTm9uTnVsbCgiZmJvID0gZ2wuY3JlYXRl
RnJhbWVidWZmZXIoKSIpOwogICAgIGdsLmJpbmRGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUiwg
ZmJvKTsKQEAgLTY2LDM0NyArNDMsMTAyIEBAIGZ1bmN0aW9uIHRlc3RBdHRhY2htZW50cyhhdHRh
Y2htZW50MCwgYnVmZmVyMCwgYXR0YWNobWVudDEsIGJ1ZmZlcjEsIGFsbG93ZWRTdGF0CiAgICAg
Z2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CiAgICAgZ2wuZnJhbWVidWZmZXJSZW5k
ZXJidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGF0dGFjaG1lbnQxLCBnbC5SRU5ERVJCVUZGRVIsIGJ1
ZmZlcjEpOwogICAgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOwotICAgIGNoZWNr
RnJhbWVidWZmZXJGb3JBbGxvd2VkU3RhdHVzZXMoYWxsb3dlZFN0YXR1c2VzKTsKLSAgICBnbC5k
ZWxldGVGcmFtZWJ1ZmZlcihmYm8pOworICAgIGlmIChpc0NvbmZsaWN0ZWQpCisgICAgICAgIHNo
b3VsZEJlKCJnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSIsICJnbC5G
UkFNRUJVRkZFUl9VTlNVUFBPUlRFRCIpOwogfQogCi1mdW5jdGlvbiB0ZXN0Q29sb3JSZW5kZXJi
dWZmZXIoaW50ZXJuYWxmb3JtYXQsIGFsbG93ZWRTdGF0dXNlcykKK2Z1bmN0aW9uIHRlc3RDb2xv
clJlbmRlcmJ1ZmZlcihpbnRlcm5hbGZvcm1hdCkKIHsKICAgICBzaG91bGRCZU5vbk51bGwoImNv
bG9yQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCkiKTsKICAgICBnbC5iaW5kUmVuZGVy
YnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgY29sb3JCdWZmZXIpOwogICAgIGdsLnJlbmRlcmJ1ZmZl
clN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCk7
CiAgICAgZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7Ci0gICAgdGVzdEF0dGFjaG1l
bnQoZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGNvbG9yQnVmZmVyLCBhbGxvd2VkU3RhdHVzZXMpOwor
ICAgIHRlc3RBdHRhY2htZW50KGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBjb2xvckJ1ZmZlciwgZmFs
c2UpOwogfQogCi1mdW5jdGlvbiB0ZXN0RGVwdGhTdGVuY2lsUmVuZGVyYnVmZmVyKGFsbG93ZWRT
dGF0dXNlcykKK2Z1bmN0aW9uIHRlc3REZXB0aFN0ZW5jaWxSZW5kZXJidWZmZXIoKQogewogICAg
IHNob3VsZEJlTm9uTnVsbCgiZGVwdGhTdGVuY2lsQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVm
ZmVyKCkiKTsKICAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhT
dGVuY2lsQnVmZmVyKTsKICAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZF
UiwgZ2wuREVQVEhfU1RFTkNJTCwgd2lkdGgsIGhlaWdodCk7CiAgICAgZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUik7Ci0KLSAgICAvLyBPcGVuR0wgaXRzZWxmIGRvZXNuJ3Qgc2VlbSB0
byBndWFyYW50ZWUgdGhhdCBlLmcuIGEgMiB4IDAKLSAgICAvLyByZW5kZXJidWZmZXIgd2lsbCBy
ZXBvcnQgMiBmb3IgaXRzIHdpZHRoIHdoZW4gcXVlcmllZC4KLSAgICBpZiAoIShoZWlnaHQgPT0g
MCAmJiB3aWR0aCA+IDApKQotICAgICAgICBzaG91bGRCZSgiZ2wuZ2V0UmVuZGVyYnVmZmVyUGFy
YW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX1dJRFRIKSIsICJ3aWR0aCIp
OwotICAgIGlmICghKHdpZHRoID09IDAgJiYgaGVpZ2h0ID4gMCkpCi0gICAgICAgIHNob3VsZEJl
KCJnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJC
VUZGRVJfSEVJR0hUKSIsICJoZWlnaHQiKTsKKyAgICBzaG91bGRCZSgiZ2wuZ2V0UmVuZGVyYnVm
ZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX1dJRFRIKSIsICJ3
aWR0aCIpOworICAgIHNob3VsZEJlKCJnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVO
REVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfSEVJR0hUKSIsICJoZWlnaHQiKTsKICAgICBzaG91
bGRCZSgiZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVO
REVSQlVGRkVSX0lOVEVSTkFMX0ZPUk1BVCkiLCAiZ2wuREVQVEhfU1RFTkNJTCIpOwogICAgIHNo
b3VsZEJlKCJnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5S
RU5ERVJCVUZGRVJfUkVEX1NJWkUpIiwgIjAiKTsKICAgICBzaG91bGRCZSgiZ2wuZ2V0UmVuZGVy
YnVmZmVyUGFyYW1ldGVyKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0dSRUVOX1NJ
WkUpIiwgIjAiKTsKICAgICBzaG91bGRCZSgiZ2wuZ2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyKGds
LlJFTkRFUkJVRkZFUiwgZ2wuUkVOREVSQlVGRkVSX0JMVUVfU0laRSkiLCAiMCIpOwogICAgIHNo
b3VsZEJlKCJnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5S
RU5ERVJCVUZGRVJfQUxQSEFfU0laRSkiLCAiMCIpOwotICAgIC8vIEF2b2lkIHZlcmlmeWluZyB0
aGVzZSBmb3IgemVyby1zaXplZCByZW5kZXJidWZmZXJzIGZvciB0aGUgdGltZQotICAgIC8vIGJl
aW5nIHNpbmNlIGl0IGFwcGVhcnMgdGhhdCBldmVuIE9wZW5HTCBkb2Vzbid0IGd1YXJhbnRlZSB0
aGVtLgotICAgIGlmICh3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCkgewotICAgICAgICBzaG91bGRC
ZVRydWUoImdsLmdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcihnbC5SRU5ERVJCVUZGRVIsIGdsLlJF
TkRFUkJVRkZFUl9ERVBUSF9TSVpFKSA+IDAiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJnbC5n
ZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJf
U1RFTkNJTF9TSVpFKSA+IDAiKTsKLSAgICB9CisgICAgc2hvdWxkQmVUcnVlKCJnbC5nZXRSZW5k
ZXJidWZmZXJQYXJhbWV0ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfREVQVEhf
U0laRSkgPiAwIik7CisgICAgc2hvdWxkQmVUcnVlKCJnbC5nZXRSZW5kZXJidWZmZXJQYXJhbWV0
ZXIoZ2wuUkVOREVSQlVGRkVSLCBnbC5SRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFKSA+IDAiKTsK
ICAgICBnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKLSAgICB0ZXN0QXR0YWNobWVu
dChnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGRlcHRoU3RlbmNpbEJ1ZmZlciwgYWxsb3dl
ZFN0YXR1c2VzKTsKKyAgICB0ZXN0QXR0YWNobWVudChnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1F
TlQsIGRlcHRoU3RlbmNpbEJ1ZmZlciwgZmFsc2UpOwogfQogCiBkZXNjcmlwdGlvbigiVGVzdCBm
cmFtZWJ1ZmZlciBvYmplY3QgYXR0YWNobWVudCBiZWhhdmlvcnMiKTsKIAotZm9yICh3aWR0aCA9
IDA7IHdpZHRoIDw9IDI7IHdpZHRoICs9IDIpCi17Ci0gICAgZm9yIChoZWlnaHQgPSAwOyBoZWln
aHQgPD0gMjsgaGVpZ2h0ICs9IDIpCi0gICAgewotICAgICAgICBkZWJ1ZygiIik7Ci0gICAgICAg
IGRlYnVnKCJEaW1lbnNpb25zICIgKyB3aWR0aCArICIgeCAiICsgaGVpZ2h0KTsKLQotICAgICAg
ICBkZWJ1ZygiQ3JlYXRlIHJlbmRlcmJ1ZmZlcnMiKTsKLSAgICAgICAgc2hvdWxkQmVOb25OdWxs
KCJnbCA9IGNyZWF0ZTNEQ29udGV4dCgpIik7Ci0gICAgICAgIHNob3VsZEJlTm9uTnVsbCgiY29s
b3JCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSIpOwotICAgICAgICBnbC5iaW5kUmVu
ZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgY29sb3JCdWZmZXIpOwotICAgICAgICBnbC5yZW5k
ZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkdCQTQsIHdpZHRoLCBoZWlnaHQp
OwotICAgICAgICBnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKLSAgICAgICAgc2hv
dWxkQmVOb25OdWxsKCJkZXB0aEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIik7Ci0g
ICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBkZXB0aEJ1ZmZlcik7
Ci0gICAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5ERVBU
SF9DT01QT05FTlQxNiwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICAgIGdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IpOwotICAgICAgICBzaG91bGRCZU5vbk51bGwoInN0ZW5jaWxCdWZmZXIg
PSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSIpOwotICAgICAgICBnbC5iaW5kUmVuZGVyYnVmZmVy
KGdsLlJFTkRFUkJVRkZFUiwgc3RlbmNpbEJ1ZmZlcik7Ci0gICAgICAgIGdsLnJlbmRlcmJ1ZmZl
clN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5TVEVOQ0lMX0lOREVYOCwgd2lkdGgsIGhlaWdo
dCk7Ci0gICAgICAgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOwotICAgICAgICBz
aG91bGRCZU5vbk51bGwoImRlcHRoU3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZl
cigpIik7Ci0gICAgICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBkZXB0
aFN0ZW5jaWxCdWZmZXIpOwotICAgICAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRF
UkJVRkZFUiwgZ2wuREVQVEhfU1RFTkNJTCwgd2lkdGgsIGhlaWdodCk7Ci0gICAgICAgIGdsRXJy
b3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOwotCi0gICAgICAgIHZhciBhbGxvd2VkU3RhdHVz
Rm9yR29vZENhc2UKLSAgICAgICAgICAgID0gKHdpZHRoID09IDAgfHwgaGVpZ2h0ID09IDApID8g
QUxMT1dfSU5DT01QTEVURV9BVFRBQ0hNRU5UIDogQUxMT1dfQ09NUExFVEU7Ci0KLSAgICAgICAg
Ly8gc29tZSBjYXNlcyBpbnZvbHZpbmcgc3RlbmNpbCBzZWVtIHRvIGJlIGltcGxlbWVudGF0aW9u
LWRlcGVuZGVudAotICAgICAgICB2YXIgYWxsb3dlZFN0YXR1c0ZvckltcGxEZXBlbmRlbnRDYXNl
ID0gYWxsb3dlZFN0YXR1c0Zvckdvb2RDYXNlIHwgQUxMT1dfVU5TVVBQT1JURUQ7Ci0KLSAgICAg
ICAgZGVidWcoIkF0dGFjaCBkZXB0aCB1c2luZyBERVBUSF9BVFRBQ0hNRU5UIik7Ci0gICAgICAg
IHRlc3RBdHRhY2htZW50KGdsLkRFUFRIX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCBhbGxvd2Vk
U3RhdHVzRm9yR29vZENhc2UpOwotICAgICAgICBkZWJ1ZygiQXR0YWNoIGRlcHRoIHVzaW5nIFNU
RU5DSUxfQVRUQUNITUVOVCIpOwotICAgICAgICB0ZXN0QXR0YWNobWVudChnbC5TVEVOQ0lMX0FU
VEFDSE1FTlQsIGRlcHRoQnVmZmVyLCBBTExPV19JTkNPTVBMRVRFX0FUVEFDSE1FTlQpOwotICAg
ICAgICBkZWJ1ZygiQXR0YWNoIGRlcHRoIHVzaW5nIERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCIp
OwotICAgICAgICB0ZXN0QXR0YWNobWVudChnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGRl
cHRoQnVmZmVyLCBBTExPV19JTkNPTVBMRVRFX0FUVEFDSE1FTlQpOwotICAgICAgICBkZWJ1Zygi
QXR0YWNoIHN0ZW5jaWwgdXNpbmcgU1RFTkNJTF9BVFRBQ0hNRU5UIik7Ci0gICAgICAgIHRlc3RB
dHRhY2htZW50KGdsLlNURU5DSUxfQVRUQUNITUVOVCwgc3RlbmNpbEJ1ZmZlciwgYWxsb3dlZFN0
YXR1c0ZvckltcGxEZXBlbmRlbnRDYXNlKTsKLSAgICAgICAgZGVidWcoIkF0dGFjaCBzdGVuY2ls
IHVzaW5nIERFUFRIX0FUVEFDSE1FTlQiKTsKLSAgICAgICAgdGVzdEF0dGFjaG1lbnQoZ2wuREVQ
VEhfQVRUQUNITUVOVCwgc3RlbmNpbEJ1ZmZlciwgQUxMT1dfSU5DT01QTEVURV9BVFRBQ0hNRU5U
KTsKLSAgICAgICAgZGVidWcoIkF0dGFjaCBzdGVuY2lsIHVzaW5nIERFUFRIX1NURU5DSUxfQVRU
QUNITUVOVCIpOwotICAgICAgICB0ZXN0QXR0YWNobWVudChnbC5ERVBUSF9TVEVOQ0lMX0FUVEFD
SE1FTlQsIHN0ZW5jaWxCdWZmZXIsIEFMTE9XX0lOQ09NUExFVEVfQVRUQUNITUVOVCk7Ci0gICAg
ICAgIGRlYnVnKCJBdHRhY2ggZGVwdGhTdGVuY2lsIHVzaW5nIERFUFRIX1NURU5DSUxfQVRUQUNI
TUVOVCIpOwotICAgICAgICB0ZXN0QXR0YWNobWVudChnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1F
TlQsIGRlcHRoU3RlbmNpbEJ1ZmZlciwgYWxsb3dlZFN0YXR1c0Zvckdvb2RDYXNlKTsKLSAgICAg
ICAgZGVidWcoIkF0dGFjaCBkZXB0aFN0ZW5jaWwgdXNpbmcgREVQVEhfQVRUQUNITUVOVCIpOwot
ICAgICAgICB0ZXN0QXR0YWNobWVudChnbC5ERVBUSF9BVFRBQ0hNRU5ULCBkZXB0aFN0ZW5jaWxC
dWZmZXIsIEFMTE9XX0lOQ09NUExFVEVfQVRUQUNITUVOVCk7Ci0gICAgICAgIGRlYnVnKCJBdHRh
Y2ggZGVwdGhTdGVuY2lsIHVzaW5nIFNURU5DSUxfQVRUQUNITUVOVCIpOwotICAgICAgICB0ZXN0
QXR0YWNobWVudChnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIGRlcHRoU3RlbmNpbEJ1ZmZlciwgQUxM
T1dfSU5DT01QTEVURV9BVFRBQ0hNRU5UKTsKLQotICAgICAgICB2YXIgYWxsb3dlZFN0YXR1c0Zv
ckNvbmZsaWN0ZWRBdHRhY2htZW50Ci0gICAgICAgICAgICA9ICh3aWR0aCA9PSAwIHx8IGhlaWdo
dCA9PSAwKSA/IEFMTE9XX1VOU1VQUE9SVEVEIHwgQUxMT1dfSU5DT01QTEVURV9BVFRBQ0hNRU5U
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEFMTE9XX1VOU1VQ
UE9SVEVEOwotCi0gICAgICAgIGRlYnVnKCJBdHRhY2ggZGVwdGgsIHRoZW4gc3RlbmNpbCwgY2F1
c2luZyBjb25mbGljdCIpOwotICAgICAgICB0ZXN0QXR0YWNobWVudHMoZ2wuREVQVEhfQVRUQUNI
TUVOVCwgZGVwdGhCdWZmZXIsIGdsLlNURU5DSUxfQVRUQUNITUVOVCwgc3RlbmNpbEJ1ZmZlciwg
YWxsb3dlZFN0YXR1c0ZvckNvbmZsaWN0ZWRBdHRhY2htZW50KTsKLSAgICAgICAgZGVidWcoIkF0
dGFjaCBzdGVuY2lsLCB0aGVuIGRlcHRoLCBjYXVzaW5nIGNvbmZsaWN0Iik7Ci0gICAgICAgIHRl
c3RBdHRhY2htZW50cyhnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIHN0ZW5jaWxCdWZmZXIsIGdsLkRF
UFRIX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCBhbGxvd2VkU3RhdHVzRm9yQ29uZmxpY3RlZEF0
dGFjaG1lbnQpOwotICAgICAgICBkZWJ1ZygiQXR0YWNoIGRlcHRoLCB0aGVuIGRlcHRoU3RlbmNp
bCwgY2F1c2luZyBjb25mbGljdCIpOwotICAgICAgICB0ZXN0QXR0YWNobWVudHMoZ2wuREVQVEhf
QVRUQUNITUVOVCwgZGVwdGhCdWZmZXIsIGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZGVw
dGhTdGVuY2lsQnVmZmVyLCBhbGxvd2VkU3RhdHVzRm9yQ29uZmxpY3RlZEF0dGFjaG1lbnQpOwot
ICAgICAgICBkZWJ1ZygiQXR0YWNoIGRlcHRoU3RlbmNpbCwgdGhlbiBkZXB0aCwgY2F1c2luZyBj
b25mbGljdCIpOwotICAgICAgICB0ZXN0QXR0YWNobWVudHMoZ2wuREVQVEhfU1RFTkNJTF9BVFRB
Q0hNRU5ULCBkZXB0aFN0ZW5jaWxCdWZmZXIsIGdsLkRFUFRIX0FUVEFDSE1FTlQsIGRlcHRoQnVm
ZmVyLCBhbGxvd2VkU3RhdHVzRm9yQ29uZmxpY3RlZEF0dGFjaG1lbnQpOwotICAgICAgICBkZWJ1
ZygiQXR0YWNoIHN0ZW5jaWwsIHRoZW4gZGVwdGhTdGVuY2lsLCBjYXVzaW5nIGNvbmZsaWN0Iik7
Ci0gICAgICAgIHRlc3RBdHRhY2htZW50cyhnbC5ERVBUSF9BVFRBQ0hNRU5ULCBkZXB0aEJ1ZmZl
ciwgZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBkZXB0aFN0ZW5jaWxCdWZmZXIsIGFsbG93
ZWRTdGF0dXNGb3JDb25mbGljdGVkQXR0YWNobWVudCk7Ci0gICAgICAgIGRlYnVnKCJBdHRhY2gg
ZGVwdGhTdGVuY2lsLCB0aGVuIHN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QiKTsKLSAgICAgICAg
dGVzdEF0dGFjaG1lbnRzKGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhTdGVuY2ls
QnVmZmVyLCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIHN0ZW5jaWxCdWZmZXIsIGFsbG93ZWRTdGF0
dXNGb3JDb25mbGljdGVkQXR0YWNobWVudCk7Ci0KLSAgICAgICAgZGVidWcoIkF0dGFjaCBjb2xv
ciByZW5kZXJidWZmZXIgd2l0aCBpbnRlcm5hbGZvcm1hdCA9PSBSR0JBNCIpOwotICAgICAgICB0
ZXN0Q29sb3JSZW5kZXJidWZmZXIoZ2wuUkdCQTQsIGFsbG93ZWRTdGF0dXNGb3JHb29kQ2FzZSk7
Ci0KLSAgICAgICAgZGVidWcoIkF0dGFjaCBjb2xvciByZW5kZXJidWZmZXIgd2l0aCBpbnRlcm5h
bGZvcm1hdCA9PSBSR0I1X0ExIik7Ci0gICAgICAgIHRlc3RDb2xvclJlbmRlcmJ1ZmZlcihnbC5S
R0I1X0ExLCBhbGxvd2VkU3RhdHVzRm9yR29vZENhc2UpOwotCi0gICAgICAgIGRlYnVnKCJBdHRh
Y2ggY29sb3IgcmVuZGVyYnVmZmVyIHdpdGggaW50ZXJuYWxmb3JtYXQgPT0gUkdCNTY1Iik7Ci0g
ICAgICAgIHRlc3RDb2xvclJlbmRlcmJ1ZmZlcihnbC5SR0I1NjUsIGFsbG93ZWRTdGF0dXNGb3JH
b29kQ2FzZSk7Ci0KLSAgICAgICAgZGVidWcoIkNyZWF0ZSBhbmQgYXR0YWNoIGRlcHRoU3RlbmNp
bCByZW5kZXJidWZmZXIiKTsKLSAgICAgICAgdGVzdERlcHRoU3RlbmNpbFJlbmRlcmJ1ZmZlcihh
bGxvd2VkU3RhdHVzRm9yR29vZENhc2UpOwotICAgIH0KLX0KLQotLy8gRGV0ZXJtaW5lIGlmIHdl
IGNhbiBhdHRhY2ggYm90aCBjb2xvciBhbmQgZGVwdGggb3IgY29sb3IgYW5kIGRlcHRoX3N0ZW5j
aWwKLXZhciBkZXB0aEZvcm1hdDsKLXZhciBkZXB0aEF0dGFjaG1lbnQ7Ci0KLWZ1bmN0aW9uIGNo
ZWNrVmFsaWRDb2xvckRlcHRoQ29tYmluYXRpb24oKSB7Ci0gICAgc2hvdWxkQmVOb25OdWxsKCJm
Ym8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIik7Ci0gICAgZ2wuYmluZEZyYW1lYnVmZmVyKGds
LkZSQU1FQlVGRkVSLCBmYm8pOwotICAgIHNob3VsZEJlTm9uTnVsbCgiY29sb3JCdWZmZXIgPSBn
bC5jcmVhdGVSZW5kZXJidWZmZXIoKSIpOwotICAgIGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVO
REVSQlVGRkVSLCBjb2xvckJ1ZmZlcik7Ci0gICAgZ2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIo
Ci0gICAgICAgIGdsLkZSQU1FQlVGRkVSLCBnbC5DT0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVS
QlVGRkVSLCBjb2xvckJ1ZmZlcik7Ci0gICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5E
RVJCVUZGRVIsIGdsLlJHQkE0LCAxNiwgMTYpOwotCi0gICAgc2hvdWxkQmVOb25OdWxsKCJkZXB0
aEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIik7Ci0gICAgZ2wuYmluZFJlbmRlcmJ1
ZmZlcihnbC5SRU5ERVJCVUZGRVIsIGRlcHRoQnVmZmVyKTsKLQotICAgIHJldHVybiB0cnlEZXB0
aChnbC5ERVBUSF9DT01QT05FTlQxNiwgZ2wuREVQVEhfQVRUQUNITUVOVCkgfHwgdHJ5RGVwdGgo
Z2wuREVQVEhfU1RFTkNJTCwgZ2wuREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKTsKLQotICAgIGZ1
bmN0aW9uIHRyeURlcHRoKHRyeV9mb3JtYXQsIHRyeV9hdHRhY2htZW50KSB7Ci0gICAgICAgIGlm
IChkZXB0aEF0dGFjaG1lbnQpIHsKLSAgICAgICAgICAgIC8vIElmIHdlJ3ZlIHRyaWVkIG9uY2Ug
dW5hdHRhY2ggdGhlIG9sZCBvbmUuCi0gICAgICAgICAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1
ZmZlcigKLSAgICAgICAgICAgICAgICBnbC5GUkFNRUJVRkZFUiwgZGVwdGhBdHRhY2htZW50LCBn
bC5SRU5ERVJCVUZGRVIsIG51bGwpOwotICAgICAgICB9Ci0gICAgICAgIGRlcHRoRm9ybWF0ID0g
dHJ5X2Zvcm1hdDsKLSAgICAgICAgZGVwdGhBdHRhY2htZW50ID0gdHJ5X2F0dGFjaG1lbnQ7Ci0g
ICAgICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKAotICAgICAgICAgICAgZ2wuRlJBTUVC
VUZGRVIsIGRlcHRoQXR0YWNobWVudCwgZ2wuUkVOREVSQlVGRkVSLCBkZXB0aEJ1ZmZlcik7Ci0g
ICAgICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBkZXB0aEZvcm1h
dCwgMTYsIDE2KTsKLSAgICAgICAgZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7Ci0g
ICAgICAgIHJldHVybiBnbC5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKGdsLkZSQU1FQlVGRkVSKSA9
PSBnbC5GUkFNRUJVRkZFUl9DT01QTEVURTsKLSAgICB9Ci19Ci0KLWlmIChjaGVja1ZhbGlkQ29s
b3JEZXB0aENvbWJpbmF0aW9uKCkpIHsKLSAgICB0ZXN0RnJhbWVidWZmZXJJbmNvbXBsZXRlRGlt
ZW5zaW9ucygpOwotICAgIHRlc3RGcmFtZWJ1ZmZlckluY29tcGxldGVBdHRhY2htZW50KCk7Ci0g
ICAgdGVzdEZyYW1lYnVmZmVySW5jb21wbGV0ZU1pc3NpbmdBdHRhY2htZW50KCk7Ci0gICAgdGVz
dFVzaW5nSW5jb21wbGV0ZUZyYW1lYnVmZmVyKCk7Ci19Ci0KLWZ1bmN0aW9uIGNoZWNrRnJhbWVi
dWZmZXIoZXhwZWN0ZWQpIHsKLSAgICB2YXIgYWN0dWFsID0gZ2wuY2hlY2tGcmFtZWJ1ZmZlclN0
YXR1cyhnbC5GUkFNRUJVRkZFUik7Ci0gICAgdmFyIG1zZyA9ICJnbC5jaGVja0ZyYW1lYnVmZmVy
U3RhdHVzKGdsLkZSQU1FQlVGRkVSKSBzaG91bGQgYmUgIiArIHd0dS5nbEVudW1Ub1N0cmluZyhn
bCwgZXhwZWN0ZWQpICsgIiB3YXMgIiArIHd0dS5nbEVudW1Ub1N0cmluZyhnbCwgYWN0dWFsKTsK
LSAgICBpZiAoZXhwZWN0ZWQgIT0gZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpIHsKLSAgICAgICAg
bXNnICs9ICIgb3IgRlJBTUVCVUZGRVJfVU5TVVBQT1JURUQiOwotICAgIH0KLSAgICBpZiAoYWN0
dWFsID09IGV4cGVjdGVkIHx8Ci0gICAgICAgIChleHBlY3RlZCAhPSBnbC5GUkFNRUJVRkZFUl9D
T01QTEVURSAmJgotICAgICAgICAgYWN0dWFsID09IGdsLkZSQU1CVUZGRVJfVU5TVVBQT1JURUQp
KSB7Ci0gICAgICAgIHRlc3RQYXNzZWQobXNnKTsKLSAgICB9IGVsc2UgewotICAgICAgICB0ZXN0
RmFpbGVkKG1zZyk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiB0ZXN0VXNpbmdJbmNvbXBsZXRlRnJh
bWVidWZmZXIoKSB7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJUZXN0IGRyYXdpbmcgb3Ig
cmVhZGluZyBmcm9tIGFuIGluY29tcGxldGUgZnJhbWVidWZmZXIiKTsKLSAgICB2YXIgcHJvZ3Jh
bSA9IHd0dS5zZXR1cFRleHR1cmVkUXVhZChnbCk7Ci0gICAgdmFyIHRleCA9IGdsLmNyZWF0ZVRl
eHR1cmUoKTsKLSAgICB3dHUuZmlsbFRleHR1cmUoZ2wsIHRleCwgMSwgMSwgWzAsMjU1LDAsMjU1
XSk7Ci0KLSAgICBzaG91bGRCZU5vbk51bGwoImZibyA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCki
KTsKLSAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVIsIGZibyk7Ci0gICAgc2hv
dWxkQmVOb25OdWxsKCJjb2xvckJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIik7Ci0g
ICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIGNvbG9yQnVmZmVyKTsKLSAg
ICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcigKLSAgICAgICAgZ2wuRlJBTUVCVUZGRVIsIGds
LkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJCVUZGRVIsIGNvbG9yQnVmZmVyKTsKLSAgICBn
bC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkdCQTQsIDE2LCAxNik7
Ci0KLSAgICBzaG91bGRCZU5vbk51bGwoImRlcHRoQnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVm
ZmVyKCkiKTsKLSAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhC
dWZmZXIpOwotICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyKAotICAgICAgICBnbC5GUkFN
RUJVRkZFUiwgZGVwdGhBdHRhY2htZW50LCBnbC5SRU5ERVJCVUZGRVIsIGRlcHRoQnVmZmVyKTsK
LSAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhGb3JtYXQs
IDE2LCAxNik7Ci0gICAgZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7Ci0gICAgY2hl
Y2tGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUl9DT01QTEVURSk7Ci0KLSAgICAvLyBXZSBwaWNr
IHRoaXMgY29tYmluYXRpb24gYmVjYXVzZSBpdCB3b3JrcyBvbiBkZXNrdG9wIE9wZW5HTCBidXQg
c2hvdWxkIG5vdCB3b3JrIG9uIE9wZW5HTCBFUyAyLjAKLSAgICBnbC5yZW5kZXJidWZmZXJTdG9y
YWdlKGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhGb3JtYXQsIDMyLCAxNik7Ci0gICAgY2hlY2tGcmFt
ZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lPTlMpOwotICAgIGRlYnVn
KCIiKTsKLSAgICBkZWJ1ZygiRHJhd2luZyBvciByZWFkaW5nIGZyb20gYW4gaW5jb21wbGV0ZSBm
cmFtZWJ1ZmZlciBzaG91bGQgZ2VuZXJhdGUgSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04i
KTsKLSAgICB0ZXN0UmVuZGVyaW5nQW5kUmVhZGluZygpOwotCi0gICAgc2hvdWxkQmVOb25OdWxs
KCJmYm8yID0gZ2wuY3JlYXRlRnJhbWVidWZmZXIoKSIpOwotICAgIGdsLmJpbmRGcmFtZWJ1ZmZl
cihnbC5GUkFNRUJVRkZFUiwgZmJvMik7Ci0gICAgY2hlY2tGcmFtZWJ1ZmZlcihnbC5GUkFNRUJV
RkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVCk7Ci0gICAgZGVidWcoIiIpOwotICAg
IGRlYnVnKCJEcmF3aW5nIG9yIHJlYWRpbmcgZnJvbSBhbiBpbmNvbXBsZXRlIGZyYW1lYnVmZmVy
IHNob3VsZCBnZW5lcmF0ZSBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiIpOwotICAgIHRl
c3RSZW5kZXJpbmdBbmRSZWFkaW5nKCk7Ci0KLSAgICBzaG91bGRCZU5vbk51bGwoImNvbG9yQnVm
ZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCkiKTsKLSAgICBnbC5iaW5kUmVuZGVyYnVmZmVy
KGdsLlJFTkRFUkJVRkZFUiwgY29sb3JCdWZmZXIpOwotICAgIGdsLmZyYW1lYnVmZmVyUmVuZGVy
YnVmZmVyKAotICAgICAgICBnbC5GUkFNRUJVRkZFUiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGds
LlJFTkRFUkJVRkZFUiwgY29sb3JCdWZmZXIpOwotICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2Uo
Z2wuUkVOREVSQlVGRkVSLCBnbC5SR0JBNCwgMCwgMCk7Ci0gICAgZGVidWcoIiIpOwotICAgIGRl
YnVnKCJEcmF3aW5nIG9yIHJlYWRpbmcgZnJvbSBhbiBpbmNvbXBsZXRlIGZyYW1lYnVmZmVyIHNo
b3VsZCBnZW5lcmF0ZSBJTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiIpOwotICAgIHRlc3RS
ZW5kZXJpbmdBbmRSZWFkaW5nKCk7Ci0KLSAgICBmdW5jdGlvbiB0ZXN0UmVuZGVyaW5nQW5kUmVh
ZGluZygpIHsKLSAgICAgICAgZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7Ci0gICAg
ICAgIHd0dS5kcmF3UXVhZChnbCk7Ci0gICAgICAgIGdsRXJyb3JTaG91bGRCZShnbCwgZ2wuSU5W
QUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT04sICJkcmF3QXJyYXlzIHdpdGggaW5jb21wbGV0ZSBm
cmFtZWJ1ZmZlciIpOwotICAgICAgICBnbC5yZWFkUGl4ZWxzKDAsIDAsIDEsIDEsIGdsLlJHQkEs
IGdsLlVOU0lHTkVEX0JZVEUsIG5ldyBVaW50OEFycmF5KDQpKTsKLSAgICAgICAgZ2xFcnJvclNo
b3VsZEJlKGdsLCBnbC5JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiwgInJlYWRQaXhlbHMg
ZnJvbSBpbmNvbXBsZXRlIGZyYW1lYnVmZmVyIik7Ci0gICAgICAgIC8vIGNvcHlUZXhJbWFnZSBh
bmQgY29weVRleFN1YkltYWdlIGNhbiBiZSBlaXRoZXIgSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVS
QVRJT04gYmVjYXVzZQotICAgICAgICAvLyB0aGUgZnJhbWVidWZmZXIgaXMgaW52YWxpZCBPUiBJ
TlZBTElEX09QRVJBVElPTiBiZWNhdXNlIGluIHRoZSBjYXNlIG9mIG5vIGF0dGFjaG1lbnRzCi0g
ICAgICAgIC8vIHRoZSBmcmFtZWJ1ZmZlciBpcyBub3Qgb2YgYSBjb21wYXRpYmxlIHR5cGUuCi0g
ICAgICAgIGdsLmNvcHlUZXhTdWJJbWFnZTJEKGdsLlRFWFRVUkVfMkQsIDAsIDAsIDAsIDAsIDAs
IDEsIDEpOwotICAgICAgICBnbEVycm9yU2hvdWxkQmUoZ2wsIFtnbC5JTlZBTElEX0ZSQU1FQlVG
RkVSX09QRVJBVElPTiwgZ2wuSU5WQUxJRF9PUEVSQVRJT05dLCAiY29weVRleEltYWdlMkQgZnJv
bSBpbmNvbXBsZXRlIGZyYW1lYnVmZmVyIik7Ci0gICAgICAgIGdsLmNvcHlUZXhJbWFnZTJEKGds
LlRFWFRVUkVfMkQsIDAsIGdsLlJHQkEsIDAsIDAsIDEsIDEsIDApOwotICAgICAgICBnbEVycm9y
U2hvdWxkQmUoZ2wsIFtnbC5JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiwgZ2wuSU5WQUxJ
RF9PUEVSQVRJT05dLCAiY29weVRleFN1YkltYWdlMkQgZnJvbSBpbmNvbXBsZXRlIGZyYW1lYnVm
ZmVyIik7Ci0gICAgICAgIGdsLmNsZWFyKGdsLkNPTE9SX0JVRkZFUl9CSVQgfCBnbC5ERVBUSF9C
VUZGRVJfQklUKTsKLSAgICAgICAgZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5JTlZBTElEX0ZSQU1F
QlVGRkVSX09QRVJBVElPTiwgImNsZWFyIHdpdGggaW5jb21wbGV0ZSBmcmFtZWJ1ZmZlciIpOwot
ICAgIH0KLX0KLQotZnVuY3Rpb24gdGVzdEZyYW1lYnVmZmVySW5jb21wbGV0ZUF0dGFjaG1lbnQo
KSB7Ci0gICAgc2hvdWxkQmVOb25OdWxsKCJmYm8gPSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIik7
Ci0gICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZSQU1FQlVGRkVSLCBmYm8pOwotICAgIHNob3Vs
ZEJlTm9uTnVsbCgiY29sb3JCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSIpOwotICAg
IGdsLmJpbmRSZW5kZXJidWZmZXIoZ2wuUkVOREVSQlVGRkVSLCBjb2xvckJ1ZmZlcik7Ci0gICAg
Z2wuZnJhbWVidWZmZXJSZW5kZXJidWZmZXIoCi0gICAgICAgIGdsLkZSQU1FQlVGRkVSLCBnbC5D
T0xPUl9BVFRBQ0hNRU5UMCwgZ2wuUkVOREVSQlVGRkVSLCBjb2xvckJ1ZmZlcik7Ci0gICAgZ2wu
cmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE0LCAxNiwgMTYpOwot
ICAgIGNoZWNrRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpOwotCi0gICAgZGVi
dWcoIiIpOwotICAgIGRlYnVnKCJXcm9uZyBzdG9yYWdlIHR5cGUgZm9yIHR5cGUgb2YgYXR0YWNo
bWVudCBiZSBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQgKE9wZW5HTCBFUyAyLjAg
NC40LjUpIik7Ci0gICAgZ2wucmVuZGVyYnVmZmVyU3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGRl
cHRoRm9ybWF0LCAxNiwgMTYpOwotICAgIGNoZWNrRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVJf
SU5DT01QTEVURV9BVFRBQ0hNRU5UKTsKLQotICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wu
UkVOREVSQlVGRkVSLCBnbC5SR0JBNCwgMTYsIDE2KTsKLSAgICBjaGVja0ZyYW1lYnVmZmVyKGds
LkZSQU1FQlVGRkVSX0NPTVBMRVRFKTsKLQotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiMCBz
aXplIGF0dGFjaG1lbnQgc2hvdWxkIGJlIEZSQU1FQlVGRkVSX0lOQ09NUExFVEVfQVRUQUNITUVO
VCAoT3BlbkdMIEVTIDIuMCA0LjQuNSkiKTsKLSAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGds
LlJFTkRFUkJVRkZFUiwgZ2wuUkdCQTQsIDAsIDApOwotICAgIGNoZWNrRnJhbWVidWZmZXIoZ2wu
RlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UKTsKLQotICAgIGdsRXJyb3JTaG91bGRC
ZShnbCwgZ2wuTk9fRVJST1IpOwotfQotCi1mdW5jdGlvbiB0ZXN0RnJhbWVidWZmZXJJbmNvbXBs
ZXRlTWlzc2luZ0F0dGFjaG1lbnQoKSB7Ci0gICAgZGVidWcoIiIpOwotICAgIGRlYnVnKCJObyBh
dHRhY2htZW50cyBzaG91bGQgYmUgSU5DT01QTEVURV9GUkFNRUJVRkZFUl9NSVNTSU5HX0FUVEFD
SE1FTlQgKE9wZW5HTCBFUyAyLjAgNC40LjUpIik7Ci0gICAgc2hvdWxkQmVOb25OdWxsKCJmYm8g
PSBnbC5jcmVhdGVGcmFtZWJ1ZmZlcigpIik7Ci0gICAgZ2wuYmluZEZyYW1lYnVmZmVyKGdsLkZS
QU1FQlVGRkVSLCBmYm8pOwotICAgIGNoZWNrRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZGRVJfSU5D
T01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlQpOwotCi0gICAgc2hvdWxkQmVOb25OdWxsKCJjb2xv
ckJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIik7Ci0gICAgZ2wuYmluZFJlbmRlcmJ1
ZmZlcihnbC5SRU5ERVJCVUZGRVIsIGNvbG9yQnVmZmVyKTsKLSAgICBnbC5mcmFtZWJ1ZmZlclJl
bmRlcmJ1ZmZlcigKLSAgICAgICAgZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQw
LCBnbC5SRU5ERVJCVUZGRVIsIGNvbG9yQnVmZmVyKTsKLSAgICBnbC5yZW5kZXJidWZmZXJTdG9y
YWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuUkdCQTQsIDE2LCAxNik7Ci0gICAgY2hlY2tGcmFtZWJ1
ZmZlcihnbC5GUkFNRUJVRkZFUl9DT01QTEVURSk7Ci0KLSAgICBnbC5mcmFtZWJ1ZmZlclJlbmRl
cmJ1ZmZlcigKLSAgICAgICAgZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBn
bC5SRU5ERVJCVUZGRVIsIG51bGwpOwotICAgIGNoZWNrRnJhbWVidWZmZXIoZ2wuRlJBTUVCVUZG
RVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlQpOwotCi0gICAgZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUik7Ci19Ci0KLWZ1bmN0aW9uIHRlc3RGcmFtZWJ1ZmZlckluY29tcGxl
dGVEaW1lbnNpb25zKCkgewotICAgIGRlYnVnKCIiKTsKLSAgICBkZWJ1ZygiQXR0YWNobWVudHMg
b2YgZGlmZmVyZW50IHNpemVzIHNob3VsZCBiZSBGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVO
U0lPTlMgKE9wZW5HTCBFUyAyLjAgNC40LjUpIik7Ci0KLSAgICBzaG91bGRCZU5vbk51bGwoImZi
byA9IGdsLmNyZWF0ZUZyYW1lYnVmZmVyKCkiKTsKLSAgICBnbC5iaW5kRnJhbWVidWZmZXIoZ2wu
RlJBTUVCVUZGRVIsIGZibyk7Ci0gICAgc2hvdWxkQmVOb25OdWxsKCJjb2xvckJ1ZmZlciA9IGds
LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIik7Ci0gICAgZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5E
RVJCVUZGRVIsIGNvbG9yQnVmZmVyKTsKLSAgICBnbC5mcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlcigK
LSAgICAgICAgZ2wuRlJBTUVCVUZGRVIsIGdsLkNPTE9SX0FUVEFDSE1FTlQwLCBnbC5SRU5ERVJC
VUZGRVIsIGNvbG9yQnVmZmVyKTsKLSAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRF
UkJVRkZFUiwgZ2wuUkdCQTQsIDE2LCAxNik7Ci0KLSAgICBzaG91bGRCZU5vbk51bGwoImRlcHRo
QnVmZmVyID0gZ2wuY3JlYXRlUmVuZGVyYnVmZmVyKCkiKTsKLSAgICBnbC5iaW5kUmVuZGVyYnVm
ZmVyKGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhCdWZmZXIpOwotICAgIGdsLmZyYW1lYnVmZmVyUmVu
ZGVyYnVmZmVyKAotICAgICAgICBnbC5GUkFNRUJVRkZFUiwgZGVwdGhBdHRhY2htZW50LCBnbC5S
RU5ERVJCVUZGRVIsIGRlcHRoQnVmZmVyKTsKLSAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGds
LlJFTkRFUkJVRkZFUiwgZGVwdGhGb3JtYXQsIDE2LCAxNik7Ci0gICAgZ2xFcnJvclNob3VsZEJl
KGdsLCBnbC5OT19FUlJPUik7Ci0gICAgY2hlY2tGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUl9D
T01QTEVURSk7Ci0KLSAgICBnbC5yZW5kZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwg
ZGVwdGhGb3JtYXQsIDMyLCAxNik7Ci0gICAgY2hlY2tGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZF
Ul9JTkNPTVBMRVRFX0RJTUVOU0lPTlMpOwotICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wu
UkVOREVSQlVGRkVSLCBkZXB0aEZvcm1hdCwgMTYsIDE2KTsKLSAgICBjaGVja0ZyYW1lYnVmZmVy
KGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFKTsKLSAgICBnbC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJF
TkRFUkJVRkZFUiwgY29sb3JCdWZmZXIpOwotICAgIGdsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wu
UkVOREVSQlVGRkVSLCBnbC5SR0JBNCwgMTYsIDMyKTsKLSAgICBjaGVja0ZyYW1lYnVmZmVyKGds
LkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OUyk7Ci0gICAgZ2wucmVuZGVyYnVmZmVy
U3RvcmFnZShnbC5SRU5ERVJCVUZGRVIsIGdsLlJHQkE0LCAxNiwgMTYpOwotICAgIGNoZWNrRnJh
bWVidWZmZXIoZ2wuRlJBTUVCVUZGRVJfQ09NUExFVEUpOwotICAgIGdsRXJyb3JTaG91bGRCZShn
bCwgZ2wuTk9fRVJST1IpOwotCi0gICAgdmFyIHRleCA9IGdsLmNyZWF0ZVRleHR1cmUoKTsKLSAg
ICBnbC5iaW5kVGV4dHVyZShnbC5URVhUVVJFXzJELCB0ZXgpOwotICAgIGdsLnRleEltYWdlMkQo
Z2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMTYsIDE2LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05F
RF9CWVRFLCBudWxsKTsKLSAgICBnbC5mcmFtZWJ1ZmZlclRleHR1cmUyRChnbC5GUkFNRUJVRkZF
UiwgZ2wuQ09MT1JfQVRUQUNITUVOVDAsIGdsLlRFWFRVUkVfMkQsIHRleCwgMCk7Ci0gICAgZ2xF
cnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7Ci0gICAgaWYgKGdsLmNoZWNrRnJhbWVidWZm
ZXJTdGF0dXMoZ2wuRlJBTUVCVUZGRVIpICE9IGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFKSB7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBnbC50ZXhJbWFnZTJEKGdsLlRFWFRVUkVfMkQs
IDAsIGdsLlJHQkEsIDMyLCAxNiwgMCwgZ2wuUkdCQSwgZ2wuVU5TSUdORURfQllURSwgbnVsbCk7
Ci0gICAgY2hlY2tGcmFtZWJ1ZmZlcihnbC5GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RJTUVOU0lP
TlMpOwotICAgIGdsLnRleEltYWdlMkQoZ2wuVEVYVFVSRV8yRCwgMCwgZ2wuUkdCQSwgMTYsIDE2
LCAwLCBnbC5SR0JBLCBnbC5VTlNJR05FRF9CWVRFLCBudWxsKTsKLSAgICBjaGVja0ZyYW1lYnVm
ZmVyKGdsLkZSQU1FQlVGRkVSX0NPTVBMRVRFKTsKLQotICAgIGdsRXJyb3JTaG91bGRCZShnbCwg
Z2wuTk9fRVJST1IpOwotfQotCi1zdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOworZGVidWcoIkNy
ZWF0ZSByZW5kZXJidWZmZXJzIik7CitzaG91bGRCZU5vbk51bGwoImdsID0gY3JlYXRlM0RDb250
ZXh0KCkiKTsKK3Nob3VsZEJlTm9uTnVsbCgiY29sb3JCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJi
dWZmZXIoKSIpOworZ2wuYmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIGNvbG9yQnVm
ZmVyKTsKK2dsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5SR0JBNCwg
d2lkdGgsIGhlaWdodCk7CitnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKK3Nob3Vs
ZEJlTm9uTnVsbCgiZGVwdGhCdWZmZXIgPSBnbC5jcmVhdGVSZW5kZXJidWZmZXIoKSIpOworZ2wu
YmluZFJlbmRlcmJ1ZmZlcihnbC5SRU5ERVJCVUZGRVIsIGRlcHRoQnVmZmVyKTsKK2dsLnJlbmRl
cmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5ERVBUSF9DT01QT05FTlQxNiwgd2lk
dGgsIGhlaWdodCk7CitnbEVycm9yU2hvdWxkQmUoZ2wsIGdsLk5PX0VSUk9SKTsKK3Nob3VsZEJl
Tm9uTnVsbCgic3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIik7CitnbC5i
aW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgc3RlbmNpbEJ1ZmZlcik7CitnbC5yZW5k
ZXJidWZmZXJTdG9yYWdlKGdsLlJFTkRFUkJVRkZFUiwgZ2wuU1RFTkNJTF9JTkRFWDgsIHdpZHRo
LCBoZWlnaHQpOworZ2xFcnJvclNob3VsZEJlKGdsLCBnbC5OT19FUlJPUik7CitzaG91bGRCZU5v
bk51bGwoImRlcHRoU3RlbmNpbEJ1ZmZlciA9IGdsLmNyZWF0ZVJlbmRlcmJ1ZmZlcigpIik7Citn
bC5iaW5kUmVuZGVyYnVmZmVyKGdsLlJFTkRFUkJVRkZFUiwgZGVwdGhTdGVuY2lsQnVmZmVyKTsK
K2dsLnJlbmRlcmJ1ZmZlclN0b3JhZ2UoZ2wuUkVOREVSQlVGRkVSLCBnbC5ERVBUSF9TVEVOQ0lM
LCB3aWR0aCwgaGVpZ2h0KTsKK2dsRXJyb3JTaG91bGRCZShnbCwgZ2wuTk9fRVJST1IpOworCitk
ZWJ1ZygiQXR0YWNoIGRlcHRoIHVzaW5nIERFUFRIX0FUVEFDSE1FTlQiKTsKK3Rlc3RBdHRhY2ht
ZW50KGdsLkRFUFRIX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCBmYWxzZSk7CitkZWJ1ZygiQXR0
YWNoIGRlcHRoIHVzaW5nIFNURU5DSUxfQVRUQUNITUVOVCIpOwordGVzdEF0dGFjaG1lbnQoZ2wu
U1RFTkNJTF9BVFRBQ0hNRU5ULCBkZXB0aEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIGRl
cHRoIHVzaW5nIERFUFRIX1NURU5DSUxfQVRUQUNITUVOVCIpOwordGVzdEF0dGFjaG1lbnQoZ2wu
REVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5ULCBkZXB0aEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0
YWNoIHN0ZW5jaWwgdXNpbmcgU1RFTkNJTF9BVFRBQ0hNRU5UIik7Cit0ZXN0QXR0YWNobWVudChn
bC5TVEVOQ0lMX0FUVEFDSE1FTlQsIHN0ZW5jaWxCdWZmZXIsIGZhbHNlKTsKK2RlYnVnKCJBdHRh
Y2ggc3RlbmNpbCB1c2luZyBERVBUSF9BVFRBQ0hNRU5UIik7Cit0ZXN0QXR0YWNobWVudChnbC5E
RVBUSF9BVFRBQ0hNRU5ULCBzdGVuY2lsQnVmZmVyLCB0cnVlKTsKK2RlYnVnKCJBdHRhY2ggc3Rl
bmNpbCB1c2luZyBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQiKTsKK3Rlc3RBdHRhY2htZW50KGds
LkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgc3RlbmNpbEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1Zygi
QXR0YWNoIGRlcHRoU3RlbmNpbCB1c2luZyBERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQiKTsKK3Rl
c3RBdHRhY2htZW50KGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhTdGVuY2lsQnVm
ZmVyLCBmYWxzZSk7CitkZWJ1ZygiQXR0YWNoIGRlcHRoU3RlbmNpbCB1c2luZyBERVBUSF9BVFRB
Q0hNRU5UIik7Cit0ZXN0QXR0YWNobWVudChnbC5ERVBUSF9BVFRBQ0hNRU5ULCBkZXB0aFN0ZW5j
aWxCdWZmZXIsIHRydWUpOworZGVidWcoIkF0dGFjaCBkZXB0aFN0ZW5jaWwgdXNpbmcgU1RFTkNJ
TF9BVFRBQ0hNRU5UIik7Cit0ZXN0QXR0YWNobWVudChnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIGRl
cHRoU3RlbmNpbEJ1ZmZlciwgdHJ1ZSk7CisKK2RlYnVnKCJBdHRhY2ggZGVwdGgsIHRoZW4gc3Rl
bmNpbCwgY2F1c2luZyBjb25mbGljdCIpOwordGVzdEF0dGFjaG1lbnRzKGdsLkRFUFRIX0FUVEFD
SE1FTlQsIGRlcHRoQnVmZmVyLCBnbC5TVEVOQ0lMX0FUVEFDSE1FTlQsIHN0ZW5jaWxCdWZmZXIs
IHRydWUpOworZGVidWcoIkF0dGFjaCBzdGVuY2lsLCB0aGVuIGRlcHRoLCBjYXVzaW5nIGNvbmZs
aWN0Iik7Cit0ZXN0QXR0YWNobWVudHMoZ2wuU1RFTkNJTF9BVFRBQ0hNRU5ULCBzdGVuY2lsQnVm
ZmVyLCBnbC5ERVBUSF9BVFRBQ0hNRU5ULCBkZXB0aEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0
YWNoIGRlcHRoLCB0aGVuIGRlcHRoU3RlbmNpbCwgY2F1c2luZyBjb25mbGljdCIpOwordGVzdEF0
dGFjaG1lbnRzKGdsLkRFUFRIX0FUVEFDSE1FTlQsIGRlcHRoQnVmZmVyLCBnbC5ERVBUSF9TVEVO
Q0lMX0FUVEFDSE1FTlQsIGRlcHRoU3RlbmNpbEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNo
IGRlcHRoU3RlbmNpbCwgdGhlbiBkZXB0aCwgY2F1c2luZyBjb25mbGljdCIpOwordGVzdEF0dGFj
aG1lbnRzKGdsLkRFUFRIX1NURU5DSUxfQVRUQUNITUVOVCwgZGVwdGhTdGVuY2lsQnVmZmVyLCBn
bC5ERVBUSF9BVFRBQ0hNRU5ULCBkZXB0aEJ1ZmZlciwgdHJ1ZSk7CitkZWJ1ZygiQXR0YWNoIHN0
ZW5jaWwsIHRoZW4gZGVwdGhTdGVuY2lsLCBjYXVzaW5nIGNvbmZsaWN0Iik7Cit0ZXN0QXR0YWNo
bWVudHMoZ2wuREVQVEhfQVRUQUNITUVOVCwgZGVwdGhCdWZmZXIsIGdsLkRFUFRIX1NURU5DSUxf
QVRUQUNITUVOVCwgZGVwdGhTdGVuY2lsQnVmZmVyLCB0cnVlKTsKK2RlYnVnKCJBdHRhY2ggZGVw
dGhTdGVuY2lsLCB0aGVuIHN0ZW5jaWwsIGNhdXNpbmcgY29uZmxpY3QiKTsKK3Rlc3RBdHRhY2ht
ZW50cyhnbC5ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlQsIGRlcHRoU3RlbmNpbEJ1ZmZlciwgZ2wu
U1RFTkNJTF9BVFRBQ0hNRU5ULCBzdGVuY2lsQnVmZmVyLCB0cnVlKTsKKworZGVidWcoIkF0dGFj
aCBjb2xvciByZW5kZXJidWZmZXIgd2l0aCBpbnRlcm5hbGZvcm1hdCA9PSBSR0JBNCIpOwordGVz
dENvbG9yUmVuZGVyYnVmZmVyKGdsLlJHQkE0KTsKKworZGVidWcoIkF0dGFjaCBjb2xvciByZW5k
ZXJidWZmZXIgd2l0aCBpbnRlcm5hbGZvcm1hdCA9PSBSR0I1X0ExIik7Cit0ZXN0Q29sb3JSZW5k
ZXJidWZmZXIoZ2wuUkdCNV9BMSk7CisKK2RlYnVnKCJBdHRhY2ggY29sb3IgcmVuZGVyYnVmZmVy
IHdpdGggaW50ZXJuYWxmb3JtYXQgPT0gUkdCNTY1Iik7Cit0ZXN0Q29sb3JSZW5kZXJidWZmZXIo
Z2wuUkdCNTY1KTsKKworZGVidWcoIkNyZWF0ZSBhbmQgYXR0YWNoIGRlcHRoU3RlbmNpbCByZW5k
ZXJidWZmZXIiKTsKK3Rlc3REZXB0aFN0ZW5jaWxSZW5kZXJidWZmZXIoKTsKIDwvc2NyaXB0Pgog
CiA8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2NhbnZhcy93ZWJnbC9yZXNvdXJjZXMv
d2ViZ2wtdGVzdC5qcyBiL0xheW91dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy93
ZWJnbC10ZXN0LmpzCmluZGV4IGJlMjU3YzEuLjc4ZjliYWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC10ZXN0LmpzCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvY2FudmFzL3dlYmdsL3Jlc291cmNlcy93ZWJnbC10ZXN0LmpzCkBAIC0xMjMs
MTEgKzEyMyw3IEBAIGZ1bmN0aW9uIGdldEdMRXJyb3JBc1N0cmluZyhjdHgsIGVycikgewogICBy
ZXR1cm4gIjB4IiArIGVyci50b1N0cmluZygxNik7CiB9CiAKLS8vIFBhc3MgdW5kZWZpbmVkIGZv
ciBnbEVycm9yIHRvIHRlc3QgdGhhdCBpdCBhdCBsZWFzdCB0aHJvd3Mgc29tZSBlcnJvcgotZnVu
Y3Rpb24gc2hvdWxkR2VuZXJhdGVHTEVycm9yKGN0eCwgZ2xFcnJvcnMsIGV2YWxTdHIpIHsKLSAg
aWYgKCFnbEVycm9ycy5sZW5ndGgpIHsKLSAgICBnbEVycm9ycyA9IFtnbEVycm9yc107Ci0gIH0K
K2Z1bmN0aW9uIHNob3VsZEdlbmVyYXRlR0xFcnJvcihjdHgsIGdsRXJyb3IsIGV2YWxTdHIpIHsK
ICAgdmFyIGV4Y2VwdGlvbjsKICAgdHJ5IHsKICAgICBldmFsKGV2YWxTdHIpOwpAQCAtMTM4LDE0
ICsxMzQsMTAgQEAgZnVuY3Rpb24gc2hvdWxkR2VuZXJhdGVHTEVycm9yKGN0eCwgZ2xFcnJvcnMs
IGV2YWxTdHIpIHsKICAgICB0ZXN0RmFpbGVkKGV2YWxTdHIgKyAiIHRocmV3IGV4Y2VwdGlvbiAi
ICsgZXhjZXB0aW9uKTsKICAgfSBlbHNlIHsKICAgICB2YXIgZXJyID0gY3R4LmdldEVycm9yKCk7
Ci0gICAgaWYgKGdsRXJyb3JzLmluZGV4T2YoZXJyKSA8IDApIHsKLSAgICAgIHZhciBlcnJTdHJz
ID0gW107Ci0gICAgICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgZ2xFcnJvcnMubGVuZ3RoOyArK2lp
KSB7Ci0gICAgICAgIGVyclN0cnMucHVzaChnZXRHTEVycm9yQXNTdHJpbmcoY3R4LCBnbEVycm9y
c1tpaV0pKTsKLSAgICAgIH0KLSAgICAgIHRlc3RGYWlsZWQoZXZhbFN0ciArICIgZXhwZWN0ZWQ6
ICIgKyBlcnJTdHJzLmpvaW4oIiBvciAiKSArICIuIFdhcyAiICsgZ2V0R0xFcnJvckFzU3RyaW5n
KGN0eCwgZXJyKSArICIuIik7CisgICAgaWYgKGVyciAhPSBnbEVycm9yKSB7CisgICAgICB0ZXN0
RmFpbGVkKGV2YWxTdHIgKyAiIGV4cGVjdGVkOiAiICsgZ2V0R0xFcnJvckFzU3RyaW5nKGN0eCwg
Z2xFcnJvcikgKyAiLiBXYXMgIiArIGdldEdMRXJyb3JBc1N0cmluZyhjdHgsIGVycikgKyAiLiIp
OwogICAgIH0gZWxzZSB7Ci0gICAgICB0ZXN0UGFzc2VkKGV2YWxTdHIgKyAiIGdlbmVyYXRlZCBl
eHBlY3RlZCBHTCBlcnJvcjogIiArIGdldEdMRXJyb3JBc1N0cmluZyhjdHgsIGVycikgKyAiLiIp
OworICAgICAgdGVzdFBhc3NlZChldmFsU3RyICsgIiBnZW5lcmF0ZWQgZXhwZWN0ZWQgR0wgZXJy
b3I6ICIgKyBnZXRHTEVycm9yQXNTdHJpbmcoY3R4LCBnbEVycm9yKSArICIuIik7CiAgICAgfQog
ICB9CiB9CkBAIC0xNTMsMzMgKzE0NSwxOCBAQCBmdW5jdGlvbiBzaG91bGRHZW5lcmF0ZUdMRXJy
b3IoY3R4LCBnbEVycm9ycywgZXZhbFN0cikgewogLyoqCiAgKiBUZXN0cyB0aGF0IHRoZSBmaXJz
dCBlcnJvciBHTCByZXR1cm5zIGlzIHRoZSBzcGVjaWZpZWQgZXJyb3IuCiAgKiBAcGFyYW0geyFX
ZWJHTENvbnRleHR9IGdsIFRoZSBXZWJHTENvbnRleHQgdG8gdXNlLgotICogQHBhcmFtIHtudW1i
ZXJ8IUFycmF5LjxudW1iZXI+fSBnbEVycm9yIFRoZSBleHBlY3RlZCBnbAotICogICAgICAgIGVy
cm9yLiBNdWx0aXBsZSBlcnJvcnMgY2FuIGJlIHBhc3NlZCBpbiB1c2luZyBhbgotICogICAgICAg
IGFycmF5LgorICogQHBhcmFtIHtudW1iZXJ9IGdsRXJyb3IgVGhlIGV4cGVjdGVkIGdsIGVycm9y
LgogICogQHBhcmFtIHtzdHJpbmd9IG9wdF9tc2cgT3B0aW9uYWwgYWRkaXRpb25hbCBtZXNzYWdl
LgogICovCi1mdW5jdGlvbiBnbEVycm9yU2hvdWxkQmUoZ2wsIGdsRXJyb3JzLCBvcHRfbXNnKSB7
Ci0gIGlmICghZ2xFcnJvcnMubGVuZ3RoKSB7Ci0gICAgZ2xFcnJvcnMgPSBbZ2xFcnJvcnNdOwot
ICB9CitmdW5jdGlvbiBnbEVycm9yU2hvdWxkQmUoZ2wsIGdsRXJyb3IsIG9wdF9tc2cpIHsKICAg
b3B0X21zZyA9IG9wdF9tc2cgfHwgIiI7CiAgIHZhciBlcnIgPSBnbC5nZXRFcnJvcigpOwotICB2
YXIgbmR4ID0gZ2xFcnJvcnMuaW5kZXhPZihlcnIpOwotICBpZiAobmR4IDwgMCkgewotICAgIGlm
IChnbEVycm9ycy5sZW5ndGggPT0gMSkgewotICAgICAgdGVzdEZhaWxlZCgiZ2V0RXJyb3IgZXhw
ZWN0ZWQ6ICIgKyBnZXRHTEVycm9yQXNTdHJpbmcoZ2wsIGdsRXJyb3JzWzBdKSArCi0gICAgICAg
ICAgICAgICAgICIuIFdhcyAiICsgZ2V0R0xFcnJvckFzU3RyaW5nKGdsLCBlcnIpICsgIiA6ICIg
KyBvcHRfbXNnKTsKLSAgICB9IGVsc2UgewotICAgICAgdmFyIGVycnMgPSBbXTsKLSAgICAgIGZv
ciAodmFyIGlpID0gMDsgaWkgPCBnbEVycm9ycy5sZW5ndGg7ICsraWkpIHsKLSAgICAgICAgZXJy
cy5wdXNoKGdldEdMRXJyb3JBc1N0cmluZyhnbCwgZ2xFcnJvcnNbaWldKSk7Ci0gICAgICB9Ci0g
ICAgICB0ZXN0RmFpbGVkKCJnZXRFcnJvciBleHBlY3RlZCBvbmUgb2Y6IFsiICsgZXJycy5qb2lu
KCIsICIpICsKLSAgICAgICAgICAgICAgICAgIl0uIFdhcyAiICsgZ2V0R0xFcnJvckFzU3RyaW5n
KGdsLCBlcnIpICsgIiA6ICIgKyBvcHRfbXNnKTsKLSAgICB9CisgIGlmIChlcnIgIT0gZ2xFcnJv
cikgeworICAgIHRlc3RGYWlsZWQoImdldEVycm9yIGV4cGVjdGVkOiAiICsgZ2V0R0xFcnJvckFz
U3RyaW5nKGdsLCBnbEVycm9yKSArCisgICAgICAgICAgICAgICAiLiBXYXMgIiArIGdldEdMRXJy
b3JBc1N0cmluZyhnbCwgZXJyKSArICIgOiAiICsgb3B0X21zZyk7CiAgIH0gZWxzZSB7CiAgICAg
dGVzdFBhc3NlZCgiZ2V0RXJyb3Igd2FzIGV4cGVjdGVkIHZhbHVlOiAiICsKLSAgICAgICAgICAg
ICAgICBnZXRHTEVycm9yQXNTdHJpbmcoZ2wsIGVycikgKyAiIDogIiArIG9wdF9tc2cpOworICAg
ICAgICAgICAgICAgIGdldEdMRXJyb3JBc1N0cmluZyhnbCwgZ2xFcnJvcikgKyAiIDogIiArIG9w
dF9tc2cpOwogICB9CiB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zY3Jp
cHQtdGVzdHMvd2VidGltaW5nLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3Rz
L3dlYnRpbWluZy5qcwppbmRleCA1MDZkZDkwLi4wYjU4YmNhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9mYXN0L2RvbS9zY3JpcHQtdGVzdHMvd2VidGltaW5nLmpzCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy93ZWJ0aW1pbmcuanMKQEAgLTYsNyArNiw3IEBAIHZhciB0
aW1pbmcgPSBwZXJmb3JtYW5jZS50aW1pbmcgfHwge307CiAKIC8vIEdldCB0aGUgb3JkZXIgb2Yg
bWFnbml0dWRlIGNvcnJlY3Qgd2l0aG91dCBhIGNoYW5jZSBmb3IgZmxha2luZXNzLgogdmFyIG9u
ZUhvdXJNaWxsaXNlY29uZHMgPSA2MCAqIDYwICogMTAwMDsKLXZhciBjdXJyZW50VVRDID0gMDsg
IC8vIEZJWE1FOiBVc2UgcGVyZm9ybWFuY2Uubm93KCkgd2hlbiBhdmFpbGFibGUuCit2YXIgY3Vy
cmVudFVUQyA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7CiB2YXIgb25lSG91ckFnb1VUQyA9IGN1
cnJlbnRVVEMgLSBvbmVIb3VyTWlsbGlzZWNvbmRzOwogCiBmdW5jdGlvbiBzbGVlcEZpZnR5TWls
bGlzZWNvbmRzKCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9hcmd1bWVudHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9hcmd1bWVudHMtZXhwZWN0ZWQudHh0
CmluZGV4IDhmOTViMDYuLjY2NGJiM2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvanMv
YXJndW1lbnRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL2FyZ3VtZW50
cy1leHBlY3RlZC50eHQKQEAgLTE4LDEzICsxOCw2IEBAIFBBU1MgYWNjZXNzXzIoMSwgMiwgMywg
NCwgNSkgaXMgMgogUEFTUyBhY2Nlc3NfMygxLCAyLCAzLCA0LCA1KSBpcyAzCiBQQVNTIGFjY2Vz
c180KDEsIDIsIDMsIDQsIDUpIGlzIDQKIFBBU1MgYWNjZXNzXzUoMSwgMiwgMywgNCwgNSkgaXMg
NQotUEFTUyBhcmd1bWVudExlbmd0aElzNSgpIGlzIDUKLVBBU1MgYXJndW1lbnRMZW5ndGhJczUo
MSwyLDMsNCw1KSBpcyA1Ci1QQVNTIGFyZ3VtZW50TGVuZ3RoSXM1KDEsMiwzLDQsNSw2LDcsOCw5
LDEwKSBpcyA1Ci1QQVNTIGR1cGxpY2F0ZUFyZ3VtZW50QW5kUmV0dXJuTGFzdF9jYWxsKDEpIGlz
IDEKLVBBU1MgZHVwbGljYXRlQXJndW1lbnRBbmRSZXR1cm5GaXJzdF9jYWxsKDEpIGlzIDEKLVBB
U1MgZHVwbGljYXRlQXJndW1lbnRBbmRSZXR1cm5MYXN0X2FwcGx5KDEpIGlzIDEKLVBBU1MgZHVw
bGljYXRlQXJndW1lbnRBbmRSZXR1cm5GaXJzdF9hcHBseSgxKSBpcyAxCiBQQVNTIHRlYXJfb2Zm
X2VxdWFsX2FjY2Vzc18xKDEsIDIsIDMpIGlzIDEKIFBBU1MgdGVhcl9vZmZfZXF1YWxfYWNjZXNz
XzIoMSwgMiwgMykgaXMgMgogUEFTUyB0ZWFyX29mZl9lcXVhbF9hY2Nlc3NfMygxLCAyLCAzKSBp
cyAzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9hcmd1bWVu
dHMuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9hcmd1bWVudHMuanMKaW5k
ZXggNzkwZTE0OC4uZThmNDI5ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3Jp
cHQtdGVzdHMvYXJndW1lbnRzLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRl
c3RzL2FyZ3VtZW50cy5qcwpAQCAtMjcsMzEgKzI3LDYgQEAgZnVuY3Rpb24gYWNjZXNzXzUoYSwg
YiwgYykKICAgICByZXR1cm4gYXJndW1lbnRzWzRdOwogfQogCi1mdW5jdGlvbiBhcmd1bWVudExl
bmd0aElzNSgpIHsKLSAgICBhcmd1bWVudHMubGVuZ3RoID0gNTsKLSAgICByZXR1cm4gYXJndW1l
bnRzLmxlbmd0aDsKLX0KLQotZnVuY3Rpb24gZHVwbGljYXRlQXJndW1lbnRBbmRSZXR1cm5MYXN0
X2NhbGwoYSkgewotICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmNhbGwoYXJndW1lbnRzLCBhKTsK
LSAgICByZXR1cm4gYXJndW1lbnRzWzFdOwotfQotCi1mdW5jdGlvbiBkdXBsaWNhdGVBcmd1bWVu
dEFuZFJldHVybkZpcnN0X2NhbGwoYSkgewotICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmNhbGwo
YXJndW1lbnRzLCBhKTsKLSAgICByZXR1cm4gYXJndW1lbnRzWzBdOwotfQotCi1mdW5jdGlvbiBk
dXBsaWNhdGVBcmd1bWVudEFuZFJldHVybkxhc3RfYXBwbHkoYSkgewotICAgIEFycmF5LnByb3Rv
dHlwZS5wdXNoLmFwcGx5KGFyZ3VtZW50cywgYXJndW1lbnRzKTsKLSAgICByZXR1cm4gYXJndW1l
bnRzWzFdOwotfQotCi1mdW5jdGlvbiBkdXBsaWNhdGVBcmd1bWVudEFuZFJldHVybkZpcnN0X2Fw
cGx5KGEpIHsKLSAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShhcmd1bWVudHMsIGFyZ3Vt
ZW50cyk7Ci0gICAgcmV0dXJuIGFyZ3VtZW50c1swXTsKLX0KLQogc2hvdWxkQmUoImFjY2Vzc18x
KDEsIDIsIDMpIiwgIjEiKTsKIHNob3VsZEJlKCJhY2Nlc3NfMigxLCAyLCAzKSIsICIyIik7CiBz
aG91bGRCZSgiYWNjZXNzXzMoMSwgMiwgMykiLCAiMyIpOwpAQCAtNzAsMTQgKzQ1LDYgQEAgc2hv
dWxkQmUoImFjY2Vzc18zKDEsIDIsIDMsIDQsIDUpIiwgIjMiKTsKIHNob3VsZEJlKCJhY2Nlc3Nf
NCgxLCAyLCAzLCA0LCA1KSIsICI0Iik7CiBzaG91bGRCZSgiYWNjZXNzXzUoMSwgMiwgMywgNCwg
NSkiLCAiNSIpOwogCi1zaG91bGRCZSgiYXJndW1lbnRMZW5ndGhJczUoKSIsICI1Iik7Ci1zaG91
bGRCZSgiYXJndW1lbnRMZW5ndGhJczUoMSwyLDMsNCw1KSIsICI1Iik7Ci1zaG91bGRCZSgiYXJn
dW1lbnRMZW5ndGhJczUoMSwyLDMsNCw1LDYsNyw4LDksMTApIiwgIjUiKTsKLXNob3VsZEJlKCJk
dXBsaWNhdGVBcmd1bWVudEFuZFJldHVybkxhc3RfY2FsbCgxKSIsICIxIik7Ci1zaG91bGRCZSgi
ZHVwbGljYXRlQXJndW1lbnRBbmRSZXR1cm5GaXJzdF9jYWxsKDEpIiwgIjEiKTsKLXNob3VsZEJl
KCJkdXBsaWNhdGVBcmd1bWVudEFuZFJldHVybkxhc3RfYXBwbHkoMSkiLCAiMSIpOwotc2hvdWxk
QmUoImR1cGxpY2F0ZUFyZ3VtZW50QW5kUmV0dXJuRmlyc3RfYXBwbHkoMSkiLCAiMSIpOwotCiBm
dW5jdGlvbiBmKGEsIGIsIGMpCiB7CiAgICAgcmV0dXJuIGFyZ3VtZW50czsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVxdWVzdC1wYXJhbWV0
ZXJzLWRlY29kaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL25ldHdvcmsvcmVxdWVzdC1wYXJhbWV0ZXJzLWRlY29kaW5nLWV4cGVjdGVkLnR4dApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGI3MDY2Zi4uMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3JlcXVlc3QtcGFyYW1ldGVycy1kZWNv
ZGluZy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLVRlc3RzIGhv
dyByZXF1ZXN0IGhlYWRlcnMgYXJlIGRlY29kZWQgaW4gbmV0d29yayBpdGVtIHZpZXcuCi0KLUJ1
ZyA3NDQyMgotT3JpZ2luYWwgdmFsdWU6IFRlc3QrJTIxJTQwJTIzJTI0JTI1JTVFJTI2KiUyOCUy
OV8lMkIrcGFyYW1ldGVycy4KLURlY29kZWQgdmFsdWU6IFRlc3QgIUAjJCVeJiooKV8rIHBhcmFt
ZXRlcnMuCi0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25l
dHdvcmsvcmVxdWVzdC1wYXJhbWV0ZXJzLWRlY29kaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9uZXR3b3JrL3JlcXVlc3QtcGFyYW1ldGVycy1kZWNvZGluZy5odG1s
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOWI0ZmYxLi4wMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvcmVxdWVzdC1wYXJhbWV0ZXJz
LWRlY29kaW5nLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi08aHRtbD4KLTxo
ZWFkPgotPHNjcmlwdCBzcmM9Ii4uL2luc3BlY3Rvci10ZXN0LmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQ+Ci0KLWZ1bmN0aW9uIHRlc3QoKQotewotICAgIHZhciB2YWx1ZSA9ICJUZXN0KyUyMSU0MCUy
MyUyNCUyNSU1RSUyNiolMjglMjlfJTJCK3BhcmFtZXRlcnMuIjsKLSAgICB2YXIgcGFyYW1ldGVy
RWxlbWVudCA9IFdlYkluc3BlY3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3LnByb3RvdHlwZS5fZm9y
bWF0UGFyYW1ldGVyKHZhbHVlLCAiIiwgdHJ1ZSk7Ci0gICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIk9yaWdpbmFsIHZhbHVlOiAiICsgdmFsdWUpOwotICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJEZWNvZGVkIHZhbHVlOiAiICsgcGFyYW1ldGVyRWxlbWVudC50ZXh0Q29udGVudCk7Ci0g
ICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKLX0KLTwvc2NyaXB0PgotPC9oZWFkPgot
PGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotIDxwPlRlc3RzIGhvdyByZXF1ZXN0IGhlYWRlcnMg
YXJlIGRlY29kZWQgaW4gbmV0d29yayBpdGVtIHZpZXcuPC9wPgotPGEgaHJlZj0iaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMjA1Ij5CdWcgNzQ0MjI8L2E+Ci08L2Jv
ZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
c2NyaXB0cy1wYW5lbC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Njcmlw
dHMtcGFuZWwuaHRtbAppbmRleCA1MDY3NWI2Li5jNzRiMTg0IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLmh0bWwKQEAgLTE5LDEyICsxOSwx
NiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICB9CiAgICAgZnVuY3Rpb24gY3JlYXRlVUlTb3VjZUNv
ZGUodXJsKQogICAgIHsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IG5ldyBXZWJJbnNwZWN0
b3IuVUlTb3VyY2VDb2RlKDAsIHVybCwgZmFsc2UsIG51bGwsIG51bGwpOwotICAgICAgICB1aVNv
dXJjZUNvZGUucmVxdWVzdENvbnRlbnQgPSBmdW5jdGlvbihjYWxsYmFjaykKLSAgICAgICAgewot
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNvdXJjZSByZXF1ZXN0ZWQgZm9y
ICIgKyB1cmwpOwotICAgICAgICAgICAgY2FsbGJhY2soIiIpOworICAgICAgICB2YXIgdWlTb3Vy
Y2VDb2RlID0geworICAgICAgICAgICAgdXJsOiB1cmwsCisgICAgICAgICAgICByZXF1ZXN0Q29u
dGVudDogZnVuY3Rpb24oY2FsbGJhY2spCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNvdXJjZSByZXF1ZXN0ZWQgZm9yICIgKyB1cmwpOwor
ICAgICAgICAgICAgICAgIGNhbGxiYWNrKCIiKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICBtZXNzYWdlczogW10KICAgICAgICAgfTsKKyAgICAgICAgdWlTb3VyY2VDb2RlLl9fcHJvdG9f
XyA9IFdlYkluc3BlY3Rvci5PYmplY3QucHJvdG90eXBlOwogICAgICAgICByZXR1cm4gdWlTb3Vy
Y2VDb2RlOwogICAgIH0KIApAQCAtMTM2LDcgKzE0MCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAg
ICAgICAgICAgdmFyIG5leHRJZCA9IDA7CiAgICAgICAgICAgICBmdW5jdGlvbiBhZGRPcHRpb24o
dXJsLCBpc0NvbnRlbnRTY3JpcHQpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcGFu
ZWwuX2FkZE9wdGlvblRvRmlsZXNTZWxlY3QobmV3IFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUo
bmV4dElkKyssIHVybCwgaXNDb250ZW50U2NyaXB0LCBudWxsLCBudWxsKSk7CisgICAgICAgICAg
ICAgICAgcGFuZWwuX2FkZE9wdGlvblRvRmlsZXNTZWxlY3QoeyBpZDogbmV4dElkKyssIHVybDog
dXJsLCBpc0NvbnRlbnRTY3JpcHQ6IGlzQ29udGVudFNjcmlwdCB9KTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIGFkZE9wdGlvbihyb290VVJMICsgImZvby9iYXIvc2NyaXB0LmpzIiwgZmFs
c2UpOwogICAgICAgICAgICAgYWRkT3B0aW9uKHJvb3RVUkwgKyAiZm9vL2Jhci9jb250ZW50U2Ny
aXB0Mi5qcz9hPTEiLCB0cnVlKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9zY3JpcHRzLXNvcnRpbmcuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9zY3JpcHRzLXNvcnRpbmcuaHRtbAppbmRleCA5MzNiYWMwLi4zNzVkYjg5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1zb3J0aW5nLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtc29ydGluZy5odG1s
CkBAIC01Nyw3ICs1Nyw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgZnVuY3Rpb24gYWRkT3B0
aW9uKHVybCwgaXNDb250ZW50U2NyaXB0KQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBh
bmVscy5zY3JpcHRzLl9hZGRPcHRpb25Ub0ZpbGVzU2VsZWN0KG5ldyBXZWJJbnNwZWN0b3IuVUlT
b3VyY2VDb2RlKG5leHRJZCsrLCB1cmwsIGlzQ29udGVudFNjcmlwdCwgbnVsbCwgbnVsbCkpOwor
ICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuX2FkZE9wdGlvblRvRmlsZXNTZWxl
Y3QoeyBpZDogbmV4dElkKyssIHVybDogdXJsLCBpc0NvbnRlbnRTY3JpcHQ6IGlzQ29udGVudFNj
cmlwdCB9KTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBkdW1wU2NyaXB0c0xpc3QoKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC93b3JrZXJzL3VzZS1tYWNo
aW5lLXN0YWNrLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zh
c3Qvd29ya2Vycy91c2UtbWFjaGluZS1zdGFjay1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNzU1MDFmNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qvd29ya2Vycy91c2UtbWFjaGluZS1zdGFjay1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUZXN0IHdvcmtlciB0aHJlYWQgc3RhY2sgdXNhZ2Uu
IFNob3VsZCBub3QgY3Jhc2guCisKK1BBU1MgKFJhbmdlRXJyb3I6IE1heGltdW0gY2FsbCBzdGFj
ayBzaXplIGV4Y2VlZGVkKQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9mYXN0L3dvcmtlcnMvd29ya2VyLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qvd29ya2Vycy93b3JrZXItY29uc3RydWN0b3It
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyOWI4NDMK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3dv
cmtlcnMvd29ya2VyLWNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACitU
ZXN0IFdvcmtlciBjb25zdHJ1Y3RvciBmdW5jdGlvbmFsaXR5LiBTaG91bGQgcHJpbnQgYSBzZXJp
ZXMgb2YgUEFTUyBtZXNzYWdlcywgZm9sbG93ZWQgd2l0aCBET05FLgorCitQQVNTOiB0b1N0cmlu
ZyBleGNlcHRpb24gcHJvcGFnYXRlZCBjb3JyZWN0bHkuCitQQVNTOiB0cnlpbmcgdG8gY3JlYXRl
IHdvcmtlcnMgcmVjdXJzaXZlbHkgcmVzdWx0ZWQgaW4gYW4gZXhjZXB0aW9uIChSYW5nZUVycm9y
OiBNYXhpbXVtIGNhbGwgc3RhY2sgc2l6ZSBleGNlZWRlZCkKK1BBU1M6IGludm9raW5nIFdvcmtl
ciBjb25zdHJ1Y3RvciB3aXRob3V0IGFyZ3VtZW50cyByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24g
KFR5cGVFcnJvcjogTm90IGVub3VnaCBhcmd1bWVudHMpCitQQVNTOiBpbnZva2luZyBXb3JrZXIg
Y29uc3RydWN0b3Igd2l0aCBlbXB0eSBzY3JpcHQgVVJMIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlv
biAoRXJyb3I6IFNZTlRBWF9FUlI6IERPTSBFeGNlcHRpb24gMTIpCitQQVNTOiBpbnZva2luZyBX
b3JrZXIgY29uc3RydWN0b3Igd2l0aCBpbnZhbGlkIHNjcmlwdCBVUkwgcmVzdWx0ZWQgaW4gYW4g
ZXhjZXB0aW9uIChFcnJvcjogU1lOVEFYX0VSUjogRE9NIEV4Y2VwdGlvbiAxMikKK1BBU1M6IG9u
ZXJyb3IgaW52b2tlZCBmb3IgYSBzY3JpcHQgdGhhdCBjb3VsZCBub3QgYmUgbG9hZGVkLgorUEFT
UzogU3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgd29ya2VyLgorRE9ORQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3dvcmtlcnMvd29ya2VyLWxvY2F0aW9uLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qvd29ya2Vycy93
b3JrZXItbG9jYXRpb24tZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLmE0N2RkNDYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9mYXN0L3dvcmtlcnMvd29ya2VyLWxvY2F0aW9uLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDE1IEBACitUZXN0IFdvcmtlckxvY2F0aW9uIHByb3BlcnRpZXMuCisKK1dvcmtlckxvY2F0
aW9uOiBmdW5jdGlvbiBXb3JrZXJMb2NhdGlvbigpIHsgW25hdGl2ZSBjb2RlXSB9Cit0eXBlb2Yg
bG9jYXRpb246IG9iamVjdAorbG9jYXRpb246IGZpbGU6PC4uLj4vZmFzdC93b3JrZXJzL3Jlc291
cmNlcy93b3JrZXItY29tbW9uLmpzCitsb2NhdGlvbi5ocmVmOiBmaWxlOjwuLi4+L2Zhc3Qvd29y
a2Vycy9yZXNvdXJjZXMvd29ya2VyLWNvbW1vbi5qcworbG9jYXRpb24ucHJvdG9jb2w6IGZpbGU6
Citsb2NhdGlvbi5ob3N0OiAKK2xvY2F0aW9uLmhvc3RuYW1lOiAKK2xvY2F0aW9uLnBvcnQ6IAor
bG9jYXRpb24ucGF0aG5hbWU6IDwuLi4+L2Zhc3Qvd29ya2Vycy9yZXNvdXJjZXMvd29ya2VyLWNv
bW1vbi5qcworbG9jYXRpb24uc2VhcmNoOiAKK2xvY2F0aW9uLmhhc2g6IAorRE9ORQorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3dvcmtlcnMvd29ya2Vy
LXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9mYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTgzMWQwOAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qvd29ya2Vycy93b3JrZXItc2NyaXB0LWVy
cm9yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUg
MTA6IFVuY2F1Z2h0IFJlZmVyZW5jZUVycm9yOiBmb28gaXMgbm90IGRlZmluZWQKK1Rlc3QgV29y
a2VyIHNjcmlwdCBlcnJvciBoYW5kbGluZyBmdW5jdGlvbmFsaXR5LiBTaG91bGQgcHJpbnQgYSBz
ZXJpZXMgb2YgUEFTUyBtZXNzYWdlcywgZm9sbG93ZWQgd2l0aCBET05FLgorCitQQVNTOiBvbmVy
cm9yIGludm9rZWQgZm9yIGEgc2NyaXB0IHRoYXQgaGFzIGludmFsaWQgc3ludGF4LgorUEFTUzog
b25lcnJvciBpbnZva2VkIGZvciBhIHNjcmlwdCB0aGF0IGhhcyBzY3JpcHQgZXJyb3IgJ1VuY2F1
Z2h0IFJlZmVyZW5jZUVycm9yOiBmb28gaXMgbm90IGRlZmluZWQnIGF0IGxpbmUgMS4KK1BBU1M6
IGV2ZW50IGxpc3RlbmVyIGludm9rZWQgZm9yIGEgc2NyaXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJv
ciAnVW5jYXVnaHQgUmVmZXJlbmNlRXJyb3I6IGZvbyBpcyBub3QgZGVmaW5lZCcgYXQgbGluZSAx
LgorUEFTUzogb25lcnJvciBpbnZva2VkIGZvciBhIHNjcmlwdCB0aGF0IGhhcyBzY3JpcHQgZXJy
b3IgJ1VuY2F1Z2h0IFJlZmVyZW5jZUVycm9yOiBmb28gaXMgbm90IGRlZmluZWQnIGF0IGxpbmUg
Ny4KK1BBU1M6IG9uZXJyb3IgaW52b2tlZCBmb3IgYSBzY3JpcHQgdGhhdCBoYXMgc2NyaXB0IGVy
cm9yICdVbmNhdWdodCBSZWZlcmVuY2VFcnJvcjogYmFyIGlzIG5vdCBkZWZpbmVkJyBhdCBsaW5l
IDMuCittZXNzYWdlIGZyb20gd29ya2VyOiAiUEFTUzogb25lcnJvciBpbiB3b3JrZXIgY29udGV4
dCBpbnZva2VkIGZvciBhIHNjcmlwdCB0aGF0IGhhcyBzY3JpcHQgZXJyb3IgJ1VuY2F1Z2h0IFJl
ZmVyZW5jZUVycm9yOiBmb28gaXMgbm90IGRlZmluZWQnIGF0IGxpbmUgMTAgaW4gd29ya2VyLXNj
cmlwdC1lcnJvci1idWJibGVkLmpzIi4KK1BBU1M6IG9uZXJyb3IgaW52b2tlZCBmb3IgYSBzY3Jp
cHQgdGhhdCBoYXMgc2NyaXB0IGVycm9yICdVbmNhdWdodCBSZWZlcmVuY2VFcnJvcjogZm9vIGlz
IG5vdCBkZWZpbmVkJyBhdCBsaW5lIDEwLgorUEFTUzogb25lcnJvciBpbnZva2VkIGZvciBhIHNj
cmlwdCB0aGF0IGhhcyBzY3JpcHQgZXJyb3IgJ1VuY2F1Z2h0IFJlZmVyZW5jZUVycm9yOiBmb28g
aXMgbm90IGRlZmluZWQnIGF0IGxpbmUgMTAuCitQQVNTOiBtZXNzYWdlIHJlY2VpdmVkIGZyb20g
V29ya2VyR2xvYmFsU2NvcGUub25lcnJvcjogb25lcnJvciBpbnZva2VkIGZvciBhIHNjcmlwdCB0
aGF0IGhhcyBzY3JpcHQgZXJyb3IgJ1VuY2F1Z2h0IFJlZmVyZW5jZUVycm9yOiBmb28gaXMgbm90
IGRlZmluZWQnIGF0IGxpbmUgNy4KK1BBU1M6IG9uZXJyb3IgaW52b2tlZCBmb3IgYW4gZXhjZXB0
aW9uIGluIHNldFRpbWVvdXQgY2FsbGJhY2suCitET05FCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCBhZTk2NzU0Li43
M2I3NDExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0CkBAIC0xMzYsOCArMTM2LDQyIEBAIFdPTlRGSVggU0tJUCA6IGZhc3Qv
cHJvZmlsZXIgPSBGQUlMIFRJTUVPVVQKIC8vIGlzIGltcGxlbWVudGVkLgogV09OVEZJWCBTS0lQ
IDogc3RvcmFnZS9kb21zdG9yYWdlL2xvY2Fsc3RvcmFnZS9zdG9yYWdldHJhY2tlciA9IFBBU1Mg
VElNRU9VVCBGQUlMCiAKLS8vIFdlIHVzZSB3b3JrZXJfdWl0ZXN0cyB0byBydW4gd29ya2VycyB0
ZXN0cy4gRG9uJ3QgcnVuIHRoZW0gaW4gdGVzdF9zaGVsbC4KLVdPTlRGSVggU0tJUCA6IGZhc3Qv
d29ya2VycyA9IFBBU1MgVElNRU9VVCBGQUlMCisvLyB0ZXN0X3NoZWxsIGRvZXMgbm90IHN1cHBv
cnQgc2hhcmVkIHdvcmtlcnMKK1dPTlRGSVggU0tJUCA6IGZhc3Qvd29ya2Vycy9zaGFyZWQtd29y
a2VyLWNvbnRleHQtZ2MuaHRtbCA9IFRJTUVPVVQKK1dPTlRGSVggU0tJUCA6IGZhc3Qvd29ya2Vy
cy9zaGFyZWQtd29ya2VyLWV2ZW50LWxpc3RlbmVyLmh0bWwgPSBUSU1FT1VUCitXT05URklYIFNL
SVAgOiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1leGNlcHRpb24uaHRtbCA9IFRJTUVPVVQK
K1dPTlRGSVggU0tJUCA6IGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWZyYW1lLWxpZmVjeWNs
ZS5odG1sID0gVElNRU9VVAorV09OVEZJWCBTS0lQIDogZmFzdC93b3JrZXJzL3NoYXJlZC13b3Jr
ZXItZ2MuaHRtbCA9IFRJTUVPVVQKK1dPTlRGSVggU0tJUCA6IGZhc3Qvd29ya2Vycy9zaGFyZWQt
d29ya2VyLWluLWlmcmFtZS5odG1sID0gVElNRU9VVAorV09OVEZJWCBTS0lQIDogZmFzdC93b3Jr
ZXJzL3NoYXJlZC13b3JrZXItbGlmZWN5Y2xlLmh0bWwgPSBUSU1FT1VUCitXT05URklYIFNLSVAg
OiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1sb2FkLWVycm9yLmh0bWwgPSBUSU1FT1VUCitX
T05URklYIFNLSVAgOiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1sb2NhdGlvbi5odG1sID0g
VElNRU9VVAorV09OVEZJWCBTS0lQIDogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItbmF2aWdh
dG9yLmh0bWwgPSBUSU1FT1VUCitXT05URklYIFNLSVAgOiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdv
cmtlci1yZXBsYWNlLWdsb2JhbC1jb25zdHJ1Y3Rvci5odG1sID0gVElNRU9VVAorV09OVEZJWCBT
S0lQIDogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItcmVwbGFjZS1zZWxmLmh0bWwgPSBUSU1F
T1VUCitXT05URklYIFNLSVAgOiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1zaGFyZWQuaHRt
bCA9IFRJTUVPVVQKK1dPTlRGSVggU0tJUCA6IGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLWNv
bnN0cnVjdG9yLmh0bWwgPSBURVhUCitXT05URklYIFNLSVAgOiBmYXN0L3dvcmtlcnMvc2hhcmVk
LXdvcmtlci1uYW1lLmh0bWwgPSBURVhUCitXT05URklYIFNLSVAgOiBmYXN0L3dvcmtlcnMvc2hh
cmVkLXdvcmtlci1zY3JpcHQtZXJyb3IuaHRtbCA9IFRFWFQKK1dPTlRGSVggU0tJUCA6IGZhc3Qv
d29ya2Vycy9zaGFyZWQtd29ya2VyLXNpbXBsZS5odG1sID0gVElNRU9VVAorV09OVEZJWCBTS0lQ
IDogZmFzdC93b3JrZXJzL3dvcmtlci1jcmFzaC13aXRoLWludmFsaWQtbG9jYXRpb24uaHRtbCA9
IFRFWFQKKworLy8gdGVzdF9zaGVsbCBkb2VzIG5vdCBzdXBwb3J0IG1lc3NhZ2UgcG9ydHMKK0JV
R1dLNzQ0NTkgU0tJUCA6IGZhc3Qvd29ya2Vycy90ZXJtaW5hdGlvbi13aXRoLXBvcnQtbWVzc2Fn
ZXMuaHRtbCA9IENSQVNICitCVUdXSzc0NDU5IFNLSVAgOiBmYXN0L3dvcmtlcnMvd29ya2VyLWNs
b25lcG9ydC5odG1sID0gQ1JBU0gKK0JVR1dLNzQ0NTkgU0tJUCA6IGZhc3Qvd29ya2Vycy93b3Jr
ZXItY29udGV4dC1tdWx0aS1wb3J0Lmh0bWwgPSBDUkFTSAorQlVHV0s3NDQ1OSBTS0lQIDogZmFz
dC93b3JrZXJzL3dvcmtlci1tZXNzYWdlcG9ydC1nYy5odG1sID0gQ1JBU0gKK0JVR1dLNzQ0NTkg
U0tJUCA6IGZhc3Qvd29ya2Vycy93b3JrZXItbWVzc2FnZXBvcnQuaHRtbCA9IENSQVNICitCVUdX
Szc0NDU5IFNLSVAgOiBmYXN0L3dvcmtlcnMvd29ya2VyLW11bHRpLXBvcnQuaHRtbCA9IENSQVNI
CisKK0JVR1dLNzQ0NDkgU0tJUCA6IGZhc3Qvd29ya2Vycy9zdG9yYWdlID0gQ1JBU0ggVElNRU9V
VAorCitCVUdXSzc0NDQ5IFNLSVAgOiBmYXN0L3dvcmtlcnMvZGVkaWNhdGVkLXdvcmtlci1saWZl
Y3ljbGUuaHRtbCA9IFRJTUVPVVQKK0JVR1dLNzQ0NDkgU0tJUCA6IGZhc3Qvd29ya2Vycy93b3Jr
ZXItY2xvc2UtbW9yZS5odG1sID0gVElNRU9VVAorQlVHV0s3NDQ0OSBTS0lQIDogZmFzdC93b3Jr
ZXJzL3dvcmtlci1saWZlY3ljbGUuaHRtbCA9IFRJTUVPVVQKK0JVR1dLNzQ0NjYgOiBmYXN0L3dv
cmtlcnMvd29ya2VyLXNjcmlwdC1lcnJvci5odG1sID0gUEFTUyBUSU1FT1VUIEZBSUwKKworLy8g
dGVzdF9zaGVsbCBkb2VzIG5vdCBzdXBwb3J0IHdvcmtlcnMKIFdPTlRGSVggU0tJUCA6IGZhc3Qv
ZmlsZXMvd29ya2VycyA9IFBBU1MgVElNRU9VVCBGQUlMCiBXT05URklYIFNLSVAgOiBmYXN0L2Zp
bGVzeXN0ZW0vd29ya2VycyA9IFBBU1MgVElNRU9VVCBGQUlMCiBXT05URklYIFNLSVAgOiBmYXN0
L2NhbnZhcy93ZWJnbC93b3JrZXItZGF0YS12aWV3LXRlc3QuaHRtbCA9IFBBU1MgVElNRU9VVCBG
QUlMCkBAIC02NjgsOCArNzAyLDYgQEAgQlVHV0s1NTU2MCA6IGVkaXRpbmcvaW5wdXQvc2V0dGlu
Zy1pbnB1dC12YWx1ZS1jYW5jZWwtaW1lLWNvbXBvc2l0aW9uLmh0bWwgPSBURVgKIAogLy8gTmV3
IHRlc3QgYWRkZWQgaW4gcjgyMTU5CiBCVUdDUjc3NzA2IDogZWRpdGluZy9zcGVsbGluZy9ncmFt
bWFyLmh0bWwgPSBGQUlMCi0vLyBDaHJvbWl1bSBkb2VzIG5vdCBoYXZlIGEgZ3JhbW1hciBjaGVj
a2VyLgotQlVHV0s3NDM5MyA6IGVkaXRpbmcvc3BlbGxpbmcvZ3JhbW1hci1wYXN0ZS5odG1sID0g
RkFJTCBUSU1FT1VUCiAKIC8vIE5lZWRzIGdyYW1tYXIgY2hlY2tpbmcuCiBCVUdXSzcxNzkyIDog
ZWRpdGluZy9zcGVsbGluZy9tYXJrZXJzLmh0bWwgPSBGQUlMIE1JU1NJTkcKQEAgLTE1NzAsODMg
KzE2MDIsNiBAQCBCVUdDUjk3ODYgOiBmYXN0L2RvbS9XaW5kb3cvZG9tLWFjY2Vzcy1mcm9tLWNs
b3N1cmUtd2luZG93Lmh0bWwgPSBGQUlMCiAKIEJVR0NSOTc5OCBTTE9XIFdJTiBERUJVRyA6IGZh
c3QvZG9tL1dpbmRvdy9zbG93LXVubG9hZC1oYW5kbGVyLmh0bWwgPSBQQVNTCiAKLS8vIFNLSUFf
VEVYVCByZXN1bHRzIC0gZGlmZmVyIG9ubHkgaW4gbG93LWJpdHMgb2Ygc2hhZG93LCBvciBwb3Np
dGlvbmluZwotLy8gd2hlbiBHREkgaW50ZWdyYWxpemVzIGl0cyBwb3NpdGlvbnMgYmVmb3JlIGFw
cGx5aW5nIHRoZSBDVE0KLS8vIHJlYmFzZWxpbmUgd2hlbiBTS0lBX1RFWFQgaXMgb24gYnkgZGVm
YXVsdAotQlVHQ1I5OTUwMCBXSU4gOiBjb21wb3NpdGluZy9nZW9tZXRyeS9maXhlZC1wb3NpdGlv
bi1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbCA9IElNQUdFCi1CVUdDUjk5NTAwIFdJTiA6IGNv
bXBvc2l0aW5nL2dlb21ldHJ5L2ZpeGVkLXBvc2l0aW9uLWlmcmFtZS1jb21wb3NpdGVkLXBhZ2Ut
c2NhbGUuaHRtbCA9IElNQUdFCi1CVUdDUjk5NTAwIFdJTiA6IGNvbXBvc2l0aW5nL2dlb21ldHJ5
L2ZpeGVkLXBvc2l0aW9uLXRyYW5zZm9ybS1jb21wb3NpdGVkLXBhZ2Utc2NhbGUuaHRtbCA9IElN
QUdFCi1CVUdDUjk5NTAwIFdJTiA6IGNvbXBvc2l0aW5nL3NoYWRvd3Mvc2hhZG93LWRyYXdpbmcu
aHRtbCA9IElNQUdFCi1CVUdDUjk5NTAwIFdJTiA6IGZhc3QvYmFja2dyb3VuZHMvYW5pbWF0ZWQt
c3ZnLWFzLW1hc2suaHRtbCA9IElNQUdFCi1CVUdDUjk5NTAwIFdJTiA6IGZhc3QvYm9yZGVycy9i
b3JkZXItYW50aWFsaWFzaW5nLmh0bWwgPSBJTUFHRQotQlVHQ1I5OTUwMCBXSU4gOiBmYXN0L3Jl
ZmxlY3Rpb25zL3JlZmxlY3Rpb24tb3ZlcmZsb3ctaGlkZGVuLmh0bWwgPSBJTUFHRQotQlVHQ1I5
OTUwMCBXSU4gOiBmYXN0L3JlcGFpbnQvcmVmbGVjdGlvbi1yZWRyYXcuaHRtbCA9IElNQUdFCi1C
VUdDUjk5NTAwIFdJTiA6IHByaW50aW5nL3dpZHRoLW92ZXJmbG93Lmh0bWwgPSBJTUFHRQotQlVH
Q1I5OTUwMCBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTM2LXQuc3ZnID0gSU1B
R0UKLUJVR0NSOTk1MDAgV0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS0zNy10LnN2
ZyA9IElNQUdFCi1CVUdDUjk5NTAwIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0t
MzktdC5zdmcgPSBJTUFHRQotQlVHQ1I5OTUwMCBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0
ZS1lbGVtLTQwLXQuc3ZnID0gSU1BR0UKLUJVR0NSOTk1MDAgV0lOIDogc3ZnL1czQy1TVkctMS4x
L2FuaW1hdGUtZWxlbS00MS10LnN2ZyA9IElNQUdFCi1CVUdDUjk5NTAwIFdJTiA6IHN2Zy9XM0Mt
U1ZHLTEuMS9hbmltYXRlLWVsZW0tNDYtdC5zdmcgPSBJTUFHRQotQlVHQ1I5OTUwMCBXSU4gOiBz
dmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTYwLXQuc3ZnID0gSU1BR0UKLUJVR0NSOTk1MDAg
V0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS02MS10LnN2ZyA9IElNQUdFCi1CVUdD
Ujk5NTAwIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tNjItdC5zdmcgPSBJTUFH
RQotQlVHQ1I5OTUwMCBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTYzLXQuc3Zn
ID0gSU1BR0UKLUJVR0NSOTk1MDAgV0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS02
NC10LnN2ZyA9IElNQUdFCi1CVUdDUjk5NTAwIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRl
LWVsZW0tNjUtdC5zdmcgPSBJTUFHRQotQlVHQ1I5OTUwMCBXSU4gOiBzdmcvVzNDLVNWRy0xLjEv
YW5pbWF0ZS1lbGVtLTY2LXQuc3ZnID0gSU1BR0UKLUJVR0NSOTk1MDAgV0lOIDogc3ZnL1czQy1T
VkctMS4xL2FuaW1hdGUtZWxlbS02Ny10LnN2ZyA9IElNQUdFCi1CVUdDUjk5NTAwIFdJTiA6IHN2
Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tNjgtdC5zdmcgPSBJTUFHRQotQlVHQ1I5OTUwMCBX
SU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTY5LXQuc3ZnID0gSU1BR0UKLUJVR0NS
OTk1MDAgV0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUtZWxlbS03MC10LnN2ZyA9IElNQUdF
Ci1CVUdDUjk5NTAwIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9hbmltYXRlLWVsZW0tODEtdC5zdmcg
PSBJTUFHRQotQlVHQ1I5OTUwMCBXSU4gOiBzdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTgy
LXQuc3ZnID0gSU1BR0UKLUJVR0NSOTk1MDAgV0lOIDogc3ZnL1czQy1TVkctMS4xL2FuaW1hdGUt
ZWxlbS04My10LnN2ZyA9IElNQUdFCi1CVUdDUjk5NTAwIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS9w
c2VydmVycy1ncmFkLTA3LWIuc3ZnID0gSU1BR0UKLUJVR0NSOTk1MDAgV0lOIDogc3ZnL1czQy1T
VkctMS4xL3N0cnVjdC1mcmFnLTAyLXQuc3ZnID0gSU1BR0UKLUJVR0NSOTk1MDAgV0lOIDogc3Zn
L1czQy1TVkctMS4xL3RleHQtYWxpZ24tMDQtYi5zdmcgPSBJTUFHRQotQlVHQ1I5OTUwMCBXSU4g
OiBzdmcvVzNDLVNWRy0xLjEvdGV4dC1hbGlnbi0wNS1iLnN2ZyA9IElNQUdFCi1CVUdDUjk5NTAw
IFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS90ZXh0LWFsaWduLTA2LWIuc3ZnID0gSU1BR0UKLUJVR0NS
OTk1MDAgV0lOIDogc3ZnL1czQy1TVkctMS4xL3RleHQtcGF0aC0wMS1iLnN2ZyA9IElNQUdFCi1C
VUdDUjk5NTAwIFdJTiA6IHN2Zy9XM0MtU1ZHLTEuMS90ZXh0LXRleHQtMDUtdC5zdmcgPSBJTUFH
RQotQlVHQ1I5OTUwMCBXSU4gOiBzdmcvYXMtYmFja2dyb3VuZC1pbWFnZS9hbmltYXRlZC1zdmct
YXMtYmFja2dyb3VuZC5odG1sID0gSU1BR0UKLUJVR0NSOTk1MDAgV0lOIDogc3ZnL2FzLWJhY2tn
cm91bmQtaW1hZ2Uvc3ZnLWFzLWJhY2tncm91bmQtNC5odG1sID0gSU1BR0UKLUJVR0NSOTk1MDAg
V0lOIDogc3ZnL2FzLWltYWdlL2FuaW1hdGVkLXN2Zy1hcy1pbWFnZS1zYW1lLWltYWdlLmh0bWwg
PSBJTUFHRQotQlVHQ1I5OTUwMCBXSU4gOiBzdmcvYXMtaW1hZ2UvYW5pbWF0ZWQtc3ZnLWFzLWlt
YWdlLmh0bWwgPSBJTUFHRQotQlVHQ1I5OTUwMCBXSU4gOiBzdmcvYmF0aWsvZmlsdGVycy9mZVRp
bGUuc3ZnID0gSU1BR0UKLUJVR0NSOTk1MDAgV0lOIDogc3ZnL2JhdGlrL2ZpbHRlcnMvZmlsdGVy
UmVnaW9ucy5zdmcgPSBJTUFHRQotQlVHQ1I5OTUwMCBXSU4gOiBzdmcvYmF0aWsvdGV4dC9sb25n
VGV4dE9uUGF0aC5zdmcgPSBJTUFHRQotQlVHQ1I5OTUwMCBXSU4gOiBzdmcvYmF0aWsvdGV4dC90
ZXh0QW5jaG9yLnN2ZyA9IElNQUdFCi1CVUdDUjk5NTAwIFdJTiA6IHN2Zy9iYXRpay90ZXh0L3Rl
eHRGZWF0dXJlcy5zdmcgPSBJTUFHRQotQlVHQ1I5OTUwMCBXSU4gOiBzdmcvYmF0aWsvdGV4dC90
ZXh0TGF5b3V0LnN2ZyA9IElNQUdFCi1CVUdDUjk5NTAwIFdJTiA6IHN2Zy9iYXRpay90ZXh0L3Rl
eHRQQ0RBVEEuc3ZnID0gSU1BR0UKLUJVR0NSOTk1MDAgV0lOIDogc3ZnL2JhdGlrL3RleHQvdGV4
dFByb3BlcnRpZXMuc3ZnID0gSU1BR0UKLUJVR0NSOTk1MDAgV0lOIDogc3ZnL2JhdGlrL3RleHQv
dGV4dFByb3BlcnRpZXMyLnN2ZyA9IElNQUdFCi1CVUdDUjk5NTAwIFdJTiA6IHN2Zy9iYXRpay90
ZXh0L3RleHRTdHlsZXMuc3ZnID0gSU1BR0UKLUJVR0NSOTk1MDAgV0lOIDogc3ZnL2JhdGlrL3Rl
eHQvdmVydGljYWxUZXh0LnN2ZyA9IElNQUdFCi1CVUdDUjk5NTAwIFdJTiA6IHN2Zy9jYXJ0by5u
ZXQvdGV4dGJveC5zdmcgPSBJTUFHRQotQlVHQ1I5OTUwMCBXSU4gOiBzdmcvY2FydG8ubmV0L3dp
bmRvdy5zdmcgPSBJTUFHRQotQlVHQ1I5OTUwMCBXSU4gOiBzdmcvY3NzL2dyb3VwLXdpdGgtc2hh
ZG93LnN2ZyA9IElNQUdFCi1CVUdDUjk5NTAwIFdJTiA6IHN2Zy9jc3MvdGV4dC1zaGFkb3ctbXVs
dGlwbGUueGh0bWwgPSBJTUFHRQotQlVHQ1I5OTUwMCBXSU4gOiBzdmcvY3VzdG9tL2pzLWxhdGUt
Y2xpcFBhdGgtYW5kLW9iamVjdC1jcmVhdGlvbi5zdmcgPSBJTUFHRQotQlVHQ1I5OTUwMCBXSU4g
OiBzdmcvY3VzdG9tL2pzLWxhdGUtY2xpcFBhdGgtY3JlYXRpb24uc3ZnID0gSU1BR0UKLUJVR0NS
OTk1MDAgV0lOIDogc3ZnL2N1c3RvbS9saW5raW5nLWEtMDMtYi12aWV3Qm94LnN2ZyA9IElNQUdF
Ci1CVUdDUjk5NTAwIFdJTiA6IHN2Zy9keW5hbWljLXVwZGF0ZXMvU1ZHVGV4dEVsZW1lbnQtZG9t
LWxlbmd0aEFkanVzdC1hdHRyLmh0bWwgPSBJTUFHRQotQlVHQ1I5OTUwMCBXSU4gOiBzdmcvZHlu
YW1pYy11cGRhdGVzL1NWR1RleHRFbGVtZW50LXN2Z2RvbS1sZW5ndGhBZGp1c3QtcHJvcC5odG1s
ID0gSU1BR0UKLUJVR0NSOTk1MDAgV0lOIDogc3ZnL2hpeGllL21peGVkLzAwOS54bWwgPSBJTUFH
RQotQlVHQ1I5OTUwMCBXSU4gOiBzdmcvdGV4dC9mb3JlaWduT2JqZWN0LXRleHQtY2xpcHBpbmct
YnVnLnhtbCA9IElNQUdFCi1CVUdDUjk5NTAwIFdJTiA6IHN2Zy90ZXh0L3NjYWxpbmctZm9udC13
aXRoLWdlb21ldHJpYy1wcmVjaXNpb24uaHRtbCA9IElNQUdFCi1CVUdDUjk5NTAwIFdJTiA6IHN2
Zy90ZXh0L3RleHQtYWxpZ24tMDEtYi5zdmcgPSBJTUFHRQotQlVHQ1I5OTUwMCBXSU4gOiBzdmcv
dGV4dC90ZXh0LWFsaWduLTA1LWIuc3ZnID0gSU1BR0UKLUJVR0NSOTk1MDAgV0lOIDogc3ZnL3Rl
eHQvdGV4dC1hbGlnbi0wNi1iLnN2ZyA9IElNQUdFCi1CVUdDUjk5NTAwIFdJTiA6IHN2Zy90ZXh0
L3RleHQtcGF0aC0wMS1iLnN2ZyA9IElNQUdFCi1CVUdDUjk5NTAwIFdJTiA6IHN2Zy90ZXh0L3Rl
eHRQYXRoQm91bmRzQnVnLnN2ZyA9IElNQUdFCi1CVUdDUjk5NTAwIFdJTiA6IHN2Zy96b29tL3Bh
Z2Uvem9vbS1jb29yZHMtdmlld2F0dHItMDEtYi5zdmcgPSBJTUFHRQotQlVHQ1I5OTUwMCBXSU4g
OiBzdmcvem9vbS9wYWdlL3pvb20taGl4aWUtbWl4ZWQtMDA4LnhtbCA9IElNQUdFCi1CVUdDUjk5
NTAwIFdJTiA6IHN2Zy96b29tL3BhZ2Uvem9vbS1oaXhpZS1taXhlZC0wMDkueG1sID0gSU1BR0UK
LUJVR0NSOTk1MDAgV0lOIDogc3ZnL3pvb20vdGV4dC96b29tLWNvb3Jkcy12aWV3YXR0ci0wMS1i
LnN2ZyA9IElNQUdFCi1CVUdDUjk5NTAwIFdJTiA6IHN2Zy96b29tL3RleHQvem9vbS1oaXhpZS1t
aXhlZC0wMDkueG1sID0gSU1BR0UKLQogLy8gV2FzIGZsYWt5LiBCZWNhbWUgYSBjb25zaXN0ZW50
IGZhaWx1cmUuCiBCVUdDUjk3OTggV0lOIERFQlVHIDogaHR0cC90ZXN0cy9sb2NhbC9zdHlsZS1h
Y2Nlc3MtYmVmb3JlLXN0eWxlc2hlZXQtbG9hZGVkLmh0bWwgPSBQQVNTIEZBSUwKIEJVR0NSOTc5
OCBXSU4gREVCVUcgOiBodHRwL3Rlc3RzL21pc2MvcmVkaXJlY3Qtd2l0aC1xdW90ZXMucGhwID0g
UEFTUyBUSU1FT1VUCkBAIC0yMzI5LDcgKzIyODQsNiBAQCBCVUdXRUJHTCBXSU4gREVCVUcgOiBm
YXN0L2NhbnZhcy93ZWJnbC90ZXh0dXJlLWNvbXBsZXRlLmh0bWwgPSBQQVNTIFRFWFQKIEJVR1dF
QkdMIDogZmFzdC9jYW52YXMvd2ViZ2wvcmVhZC1waXhlbHMtdGVzdC5odG1sID0gVElNRU9VVAog
CiAvLyBUaGVzZSB0aHJlZSBmYWlsdXJlcyBhcmUgZHVlIHRvIE1lc2EgYnVncwotQlVHV0VCR0wg
OiBmYXN0L2NhbnZhcy93ZWJnbC9mcmFtZWJ1ZmZlci1vYmplY3QtYXR0YWNobWVudC5odG1sID0g
VEVYVAogQlVHV0VCR0wgOiBmYXN0L2NhbnZhcy93ZWJnbC9nbC11bmlmb3JtLWFycmF5cy5odG1s
ID0gVElNRU9VVCBURVhUCiBCVUdXRUJHTCA6IGZhc3QvY2FudmFzL3dlYmdsL3BvaW50LXNpemUu
aHRtbCA9IFRFWFQKIEJVR1dFQkdMIExJTlVYIE1BQyA6IGZhc3QvY2FudmFzL3dlYmdsL2dsLW9i
amVjdC1nZXQtY2FsbHMuaHRtbCA9IFRFWFQKQEAgLTM5MzcsMTcgKzM4OTEsMTYgQEAgQlVHV0s3
Mzk5MSBXSU43IFZJU1RBIFJFTEVBU0UgOiBmYXN0L3RleHQvaW50ZXJuYXRpb25hbC9iaWRpLW5l
dXRyYWwtcnVuLmh0bWwgPQogQlVHV0s3Mzk5MSBXSU43IFZJU1RBIFJFTEVBU0UgOiBmYXN0L3Rl
eHQvaW50ZXJuYXRpb25hbC90aGFpLWxpbmUtYnJlYWtzLmh0bWwgPSBURVhUCiAKIEJVR1dLNzQw
NTAgOiBjb21wb3NpdGluZy9yZWZsZWN0aW9ucy9uZXN0ZWQtcmVmbGVjdGlvbi1vbi1vdmVyZmxv
dy5odG1sID0gSU1BR0UgUEFTUwotQlVHV0s3NDA1MCA6IGNvbXBvc2l0aW5nL3JlZmxlY3Rpb25z
L3JlZmxlY3Rpb24taW4tY29tcG9zaXRlZC5odG1sID0gSU1BR0UgUEFTUwogCiBCVUdXSzc0MDU1
IExFT1BBUkQgOiBmYXN0L2NhbnZhcy9jYW52YXMtbGFyZ2VkcmF3cy5odG1sID0gVElNRU9VVAog
Ci1CVUdXSzc0MTU3IE1BQyA6IGFuaW1hdGlvbnMvY3Jvc3MtZmFkZS1ib3JkZXItaW1hZ2Utc291
cmNlLmh0bWwgPSBJTUFHRStURVhUIElNQUdFIFRFWFQKLUJVR1dLNzQxNTcgTUFDIDogdHJhbnNp
dGlvbnMvY3Jvc3MtZmFkZS1ib3JkZXItaW1hZ2UuaHRtbCA9IElNQUdFK1RFWFQgSU1BR0UKLUJV
R1dLNzQxNTcgTEVPUEFSRCA6IGFuaW1hdGlvbnMvY3Jvc3MtZmFkZS1iYWNrZ3JvdW5kLWltYWdl
Lmh0bWwgPSBJTUFHRStURVhUIElNQUdFCi1CVUdXSzc0MTU3IExFT1BBUkQgOiBhbmltYXRpb25z
L2Nyb3NzLWZhZGUtbGlzdC1zdHlsZS1pbWFnZS5odG1sID0gSU1BR0UrVEVYVCBJTUFHRQotQlVH
V0s3NDE1NyBMRU9QQVJEIDogYW5pbWF0aW9ucy9jcm9zcy1mYWRlLXdlYmtpdC1tYXNrLWJveC1p
bWFnZS5odG1sID0gSU1BR0UrVEVYVCBJTUFHRQotQlVHV0s3NDE1NyBMRU9QQVJEIDogYW5pbWF0
aW9ucy9jcm9zcy1mYWRlLXdlYmtpdC1tYXNrLWltYWdlLmh0bWwgPSBJTUFHRStURVhUIElNQUdF
Ci0KK0JVR1dLNzQxNTcgTUFDIDogYW5pbWF0aW9ucy9jcm9zcy1mYWRlLWJhY2tncm91bmQtaW1h
Z2UuaHRtbCA9IFBBU1MgRkFJTAorQlVHV0s3NDE1NyBNQUMgOiBhbmltYXRpb25zL2Nyb3NzLWZh
ZGUtYm9yZGVyLWltYWdlLXNvdXJjZS5odG1sID0gUEFTUyBGQUlMCitCVUdXSzc0MTU3IE1BQyA6
IGFuaW1hdGlvbnMvY3Jvc3MtZmFkZS1saXN0LXN0eWxlLWltYWdlLmh0bWwgPSBQQVNTIEZBSUwK
K0JVR1dLNzQxNTcgTUFDIDogYW5pbWF0aW9ucy9jcm9zcy1mYWRlLXdlYmtpdC1tYXNrLWJveC1p
bWFnZS5odG1sID0gUEFTUyBGQUlMCitCVUdXSzc0MTU3IE1BQyA6IGFuaW1hdGlvbnMvY3Jvc3Mt
ZmFkZS13ZWJraXQtbWFzay1pbWFnZS5odG1sID0gUEFTUyBGQUlMCitCVUdXSzc0MTU3IE1BQyA6
IHRyYW5zaXRpb25zL2Nyb3NzLWZhZGUtYmFja2dyb3VuZC1pbWFnZS5odG1sID0gUEFTUyBGQUlM
CitCVUdXSzc0MTU3IE1BQyA6IHRyYW5zaXRpb25zL2Nyb3NzLWZhZGUtYm9yZGVyLWltYWdlLmh0
bWwgPSBQQVNTIEZBSUwKIAogQlVHV0s3NDE2NyBXSU4gTElOVVggOiBmYXN0L3JlcGxhY2VkL3dp
ZHRoMTAwcGVyY2VudC10ZXh0YXJlYS5odG1sID0gSU1BR0UKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tp
cHBlZAppbmRleCA4ZTI4NzRkLi4yZjdmNGU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tpcHBlZApA
QCAtMTI4MSw3ICsxMjgxLDYgQEAgaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3Jr
LWRpc2FibGUtY2FjaGUteGhycy5odG1sCiAKICMgdGV4dElucHV0Q29udHJvbGxlci5oYXNHcmFt
bWFyTWFya2VyKCkgaXMgbm90IGltcGxlbWVudGVkLgogZWRpdGluZy9zcGVsbGluZy9ncmFtbWFy
Lmh0bWwKLWVkaXRpbmcvc3BlbGxpbmcvZ3JhbW1hci1wYXN0ZS5odG1sCiAKICMgbGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldFRleHREaXJlY3Rpb24oKSBpcyBub3QgaW1wbGVtZW50ZWQuCiBmYXN0
L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLmh0bWwKQEAgLTE1MDksOCArMTUwOCw2IEBAIHN2Zy9m
aWx0ZXJzL2ZlQ29sb3JNYXRyaXgtc2F0dXJhdGUuc3ZnCiBzdmcvb3ZlcmZsb3cvb3ZlcmZsb3ct
b24taW5uZXItc3ZnLWVsZW1lbnQuc3ZnCiBzdmcvem9vbS9wYWdlL3pvb20taW1nLXByZXNlcnZl
QXNwZWN0UmF0aW8tc3VwcG9ydC0xLmh0bWwKIHN2Zy96b29tL3BhZ2Uvem9vbS1tYXNrLXdpdGgt
cGVyY2VudGFnZXMuc3ZnCi1zdmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTM2LXQuc3ZnCi1z
dmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTQwLXQuc3ZnCiBzdmcvVzNDLVNWRy0xLjEvYW5p
bWF0ZS1lbGVtLTgwLXQuc3ZnCiBzdmcvVzNDLVNWRy0xLjEvZXh0ZW5kLW5hbWVzcGFjZS0wMS1m
LnN2Zwogc3ZnL1czQy1TVkctMS4xL21ldGFkYXRhLWV4YW1wbGUtMDEtYi5zdmcKQEAgLTE1NTgs
NiArMTU1NSw3IEBAIHRhYmxlcy9tb3ppbGxhX2V4cGVjdGVkX2ZhaWx1cmVzL21hcnZpbi9iYWNr
Z3JfcG9zaXRpb24tdGFibGUtY29sdW1uLmh0bWwKIHRhYmxlcy9tb3ppbGxhX2V4cGVjdGVkX2Zh
aWx1cmVzL21hcnZpbi9iYWNrZ3JfcG9zaXRpb24tdGFibGUtcm93LWdyb3VwLmh0bWwKIHRhYmxl
cy9tb3ppbGxhX2V4cGVjdGVkX2ZhaWx1cmVzL21hcnZpbi9iYWNrZ3JfcG9zaXRpb24tdGFibGUt
cm93Lmh0bWwKIAorCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
MzQwOQogZmFzdC9mb3Jtcy9wbGFjZWhvbGRlci1zZXQtYXR0cmlidXRlLmh0bWwKIGZhc3QvZm9y
bXMvc2VhcmNoLXBsYWNlaG9sZGVyLXZhbHVlLWNoYW5nZWQuaHRtbApAQCAtMTYwOCw5ICsxNjA2
LDMgQEAgZmFzdC9ldmVudHMvZG9udC1sb29zZS1sYXN0LWV2ZW50Lmh0bWwKIAogIyBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQyODIKIGVkaXRpbmcvcGFzdGVib2Fy
ZC9lbWFjcy1jdHJsLWstd2l0aC1tb3ZlLmh0bWwKLQotIyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0MDkKLXBsdWdpbnMvbmV0c2NhcGUtcGx1Z2luLXBhZ2UtY2Fj
aGUtd29ya3MuaHRtbAotCi0jIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NDQxMAotaHRtbDVsaWIvcnVubmVyLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGVv
cGFyZC9Ta2lwcGVkCmluZGV4IGRjMjljY2UuLmViN2E4NzQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy1sZW9wYXJkL1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLWxlb3BhcmQvU2tpcHBlZApAQCAtOTYsNyArOTYsNiBAQCBodHRwL3Rlc3RzL21lZGlh
L3ZpZGVvLXNlZWthYmxlLXN0YWxsLmh0bWwKIAogIyBBdmFpbGFibGUgMTAuNiBvciBsYXRlcgog
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLmh0bWwKLWVkaXRpbmcvc3BlbGxpbmcv
Z3JhbW1hci1wYXN0ZS5odG1sCiBmYXN0L2h0bWwvc2V0LXRleHQtZGlyZWN0aW9uLmh0bWwKIAog
IyBEaXNhYmxlIHRlc3RzIHdoaWNoIHN0YXJ0ZWQgZmFpbGluZyBhZnRlciByNjY5NjEKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9Ta2lwcGVkCmluZGV4IDBjYjUzY2UuLmMxZjk4MTMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQv
U2tpcHBlZApAQCAtOTk0LDcgKzk5NCw2IEBAIGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxpbmctaGFz
c3BlbGxpbmdtYXJrZXIuaHRtbAogCiAjIHRleHRJbnB1dENvbnRyb2xsZXIuaGFzR3JhbW1hck1h
cmtlcnMoKSBpcyBub3QgaW1wbGVtZW50ZWQuCiBlZGl0aW5nL3NwZWxsaW5nL2dyYW1tYXIuaHRt
bAotZWRpdGluZy9zcGVsbGluZy9ncmFtbWFyLXBhc3RlLmh0bWwKIAogIyBOZWVkcyBncmFtbWFy
IGNoZWNraW5nLgogZWRpdGluZy9zcGVsbGluZy9tYXJrZXJzLmh0bWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL3F0L2h0dHAvdGVzdHMvY2FjaGUvY2FuY2VsLWR1cmluZy1yZXZh
bGlkYXRpb24tc3VjY2VlZGVkLWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0
L2h0dHAvdGVzdHMvY2FjaGUvY2FuY2VsLWR1cmluZy1yZXZhbGlkYXRpb24tc3VjY2VlZGVkLWV4
cGVjdGVkLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ5YTYwZi4uMDAwMDAw
MApCaW5hcnkgZmlsZXMgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9odHRwL3Rlc3RzL2NhY2hl
L2NhbmNlbC1kdXJpbmctcmV2YWxpZGF0aW9uLXN1Y2NlZWRlZC1leHBlY3RlZC5wbmcgYW5kIC9k
ZXYvbnVsbCBkaWZmZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2h0dHAv
dGVzdHMvY2FjaGUvY2FuY2VsLWR1cmluZy1yZXZhbGlkYXRpb24tc3VjY2VlZGVkLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2h0dHAvdGVzdHMvY2FjaGUvY2FuY2VsLWR1
cmluZy1yZXZhbGlkYXRpb24tc3VjY2VlZGVkLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMGVjYmRkOS4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9xdC9odHRwL3Rlc3RzL2NhY2hlL2NhbmNlbC1kdXJpbmctcmV2YWxpZGF0aW9uLXN1Y2NlZWRl
ZC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1JdCdzIHBvc3NpYmxl
IGZvciBhIHN1Y2Nlc3NmdWwgcmV2YWxpZGF0aW9uIHRvIGNhdXNlIGV2ZW50cyB0byBmaXJlIHN5
bmNocm9ub3VzbHkuIFdlIHNob3VsZG4ndCBjcmFzaCBpZiBvbmUgb2YgdGhvc2UgZXZlbnRzIHN0
b3BzIHRoZSBsb2FkLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcyNzYyLiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA1YTM5M2VhLi41
NDcxOTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0zNSw3ICszNSw2
IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgQVBJL09wYXF1ZUpTU3RyaW5nLmNw
cAogCiAgICAgYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAotICAgIGJ5dGVjb2RlL0RGR0V4aXRQcm9m
aWxlLmNwcAogICAgIGJ5dGVjb2RlL0p1bXBUYWJsZS5jcHAKICAgICBieXRlY29kZS9PcGNvZGUu
Y3BwCiAgICAgYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9n
CmluZGV4IGE0NmIyMjAuLjc0ZGY0N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwx
NjQgKzEsMyBAQAotMjAxMS0xMi0xMyAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgot
Ci0gICAgICAgIEFyZ3VtZW50cyBvYmplY3QgZG9lc24ndCBoYW5kbGUgbXV0YXRpb24gb2YgbGVu
Z3RoIHByb3BlcnR5IGNvcnJlY3RseQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzQ0NTQKLQotICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNs
b3VnaC4KLQotICAgICAgICBDb3JyZWN0IGhhbmRsaW5nIG9mIGFyZ3VtZW50cyBvYmplY3RzIHdp
dGggb3ZlcnJpZGRlbiBsZW5ndGggcHJvcGVydHkKLQotICAgICAgICAqIGludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcDoKLSAgICAgICAgKEpTQzo6bG9hZFZhcmFyZ3MpOgotICAgICAgICAqIHJ1
bnRpbWUvQXJndW1lbnRzLmNwcDoKLSAgICAgICAgKEpTQzo6QXJndW1lbnRzOjpjb3B5VG9Bcmd1
bWVudHMpOgotICAgICAgICAoSlNDOjpBcmd1bWVudHM6OmZpbGxBcmdMaXN0KToKLQotMjAxMS0x
Mi0xMyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgotCi0gICAgICAgIERGRyBHZXRC
eVZhbCBDU0UgcnVsZSBzaG91bGQgbWF0Y2ggUHV0QnlWYWxBbGlhcwotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzOTAKLQotICAgICAgICBSZXZpZXdl
ZCBieSBHZW9mZiBHYXJlbi4KLSAgICAgICAgCi0gICAgICAgIFRpbnkgd2luIG9uIHNvbWUgYmVu
Y2htYXJrcy4gTWF5YmUgYSAwLjIlIHdpbiBvbiBTdW5TcGlkZXIuCi0KLSAgICAgICAgKiBkZmcv
REZHUHJvcGFnYXRvci5jcHA6Ci0gICAgICAgIChKU0M6OkRGRzo6UHJvcGFnYXRvcjo6Z2V0QnlW
YWxMb2FkRWxpbWluYXRpb24pOgotCi0yMDExLTEyLTEzICBBbmR5IFdpbmdvICA8d2luZ29AaWdh
bGlhLmNvbT4KLQotICAgICAgICBGaXggaW50ZXJwcmV0ZXIgZGVidWcgYnVpbGQuCi0gICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQzOQotCi0gICAgICAg
IFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgotCi0gICAgICAgICogYnl0ZWNvZGUvVmFsdWVS
ZWNvdmVyeS5oOiBJbmNsdWRlIHN0ZGlvLmggb24gZGVidWcgYnVpbGRzLgotCi0yMDExLTEyLTEz
ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+Ci0KLSAgICAgICAgREZHIHNob3VsZCBr
bm93IGV4YWN0bHkgd2h5IHJlY29tcGlsYXRpb24gd2FzIHRyaWdnZXJlZAotICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzNjIKLQotICAgICAgICBSZXZp
ZXdlZCBieSBPbGl2ZXIgSHVudC4KLSAgICAgICAgCi0gICAgICAgIEVhY2ggT1NSIGV4aXQgaXMg
bm93IGluZGl2aWR1YWxseSBjb3VudGVkLCBhcyB3ZWxsIGFzIGNvdW50aW5nIHRoZSB0b3RhbCBu
dW1iZXIgCi0gICAgICAgIG9mIE9TUiBleGl0cyB0aGF0IG9jY3VycmVkIGluIGEgY29kZSBibG9j
ay4gSWYgcmVjb21waWxhdGlvbiBpcyB0cmlnZ2VyZWQsIHdlCi0gICAgICAgIGNoZWNrIHRvIHNl
ZSBpZiB0aGVyZSBhcmUgT1NSIGV4aXQgc2l0ZXMgdGhhdCBtYWtlIHVwIGEgc3VmZmljaWVudGx5
IGxhcmdlCi0gICAgICAgIHBvcnRpb24gb2YgdGhlIHRvdGFsIE9TUiBleGl0cyB0aGF0IG9jY3Vy
cmVkLiBGb3IgYW55IHN1Y2ggT1NSIGV4aXQgc2l0ZXMsIHdlCi0gICAgICAgIGFkZCBhIGRlc2Ny
aXB0aW9uIG9mIHRoZSBzaXRlIChieXRlY29kZSBpbmRleCwga2luZCkgdG8gYSBkYXRhIHN0cnVj
dHVyZSBpbiB0aGUKLSAgICAgICAgY29ycmVzcG9uZGluZyBiYXNlbGluZSBDb2RlQmxvY2suIFRo
ZW4sIHdoZW4gd2UgcmVjb21waWxlIHRoZSBjb2RlLCB3ZSBpbW1lZGlhdGVseQotICAgICAgICBr
bm93IHdoaWNoIHNwZWN1bGF0aW9ucyB3b3VsZCBiZSB1bndpc2UgYmFzZWQgb24gdGhlIGZhY3Qg
dGhhdCBwcmV2aW91cyBzdWNoCi0gICAgICAgIHNwZWN1bGF0aW9ucyBwcm92ZWQgdG8gYmUgZnJ1
aXRsZXNzLgotICAgICAgICAKLSAgICAgICAgVGhpcyBtZWFucyAyJSB3aW4gb24gdHdvIG9mIHRo
ZSBTdW5TcGlkZXIgc3RyaW5nIHRlc3RzLCBhIDQlIHdpbiBvbiBWOCdzIGRlbHRhYmx1ZSwKLSAg
ICAgICAgYW5kIDUlIG9uIEtyYWtlbidzIGltYWdpbmctZGFya3Jvb20uIEl0IGlzIG9ubHkgYSBt
aW5vciB3aW4gaW4gdGhlIGF2ZXJhZ2VzLCBsZXNzCi0gICAgICAgIHRoYW4gMC41JS4KLQotICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgotICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06Ci0g
ICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKLSAgICAg
ICAgKiBUYXJnZXQucHJpOgotICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6Ci0gICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6dGFsbHlGcmVxdWVudEV4aXRTaXRlcyk6Ci0gICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmg6Ci0gICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkRnJlcXVl
bnRFeGl0U2l0ZSk6Ci0gICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZXhpdFByb2ZpbGUpOgotICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OnJlb3B0aW1pemUpOgotICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnRhbGx5RnJlcXVlbnRFeGl0U2l0ZXMpOgotICAgICAgICAqIGJ5dGVjb2RlL0RGR0V4aXRQ
cm9maWxlLmNwcDogQWRkZWQuCi0gICAgICAgIChKU0M6OkRGRzo6RXhpdFByb2ZpbGU6OkV4aXRQ
cm9maWxlKToKLSAgICAgICAgKEpTQzo6REZHOjpFeGl0UHJvZmlsZTo6fkV4aXRQcm9maWxlKToK
LSAgICAgICAgKEpTQzo6REZHOjpFeGl0UHJvZmlsZTo6YWRkKToKLSAgICAgICAgKEpTQzo6REZH
OjpRdWVyeWFibGVFeGl0UHJvZmlsZTo6UXVlcnlhYmxlRXhpdFByb2ZpbGUpOgotICAgICAgICAo
SlNDOjpERkc6OlF1ZXJ5YWJsZUV4aXRQcm9maWxlOjp+UXVlcnlhYmxlRXhpdFByb2ZpbGUpOgot
ICAgICAgICAqIGJ5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmg6IEFkZGVkLgotICAgICAgICAoSlND
OjpERkc6OmV4aXRLaW5kVG9TdHJpbmcpOgotICAgICAgICAoSlNDOjpERkc6OmV4aXRLaW5kSXND
b3VudGFibGUpOgotICAgICAgICAoSlNDOjpERkc6OkZyZXF1ZW50RXhpdFNpdGU6OkZyZXF1ZW50
RXhpdFNpdGUpOgotICAgICAgICAoSlNDOjpERkc6OkZyZXF1ZW50RXhpdFNpdGU6Om9wZXJhdG9y
ISk6Ci0gICAgICAgIChKU0M6OkRGRzo6RnJlcXVlbnRFeGl0U2l0ZTo6b3BlcmF0b3I9PSk6Ci0g
ICAgICAgIChKU0M6OkRGRzo6RnJlcXVlbnRFeGl0U2l0ZTo6aGFzaCk6Ci0gICAgICAgIChKU0M6
OkRGRzo6RnJlcXVlbnRFeGl0U2l0ZTo6Ynl0ZWNvZGVPZmZzZXQpOgotICAgICAgICAoSlNDOjpE
Rkc6OkZyZXF1ZW50RXhpdFNpdGU6OmtpbmQpOgotICAgICAgICAoSlNDOjpERkc6OkZyZXF1ZW50
RXhpdFNpdGU6OmlzSGFzaFRhYmxlRGVsZXRlZFZhbHVlKToKLSAgICAgICAgKEpTQzo6REZHOjpG
cmVxdWVudEV4aXRTaXRlSGFzaDo6aGFzaCk6Ci0gICAgICAgIChKU0M6OkRGRzo6RnJlcXVlbnRF
eGl0U2l0ZUhhc2g6OmVxdWFsKToKLSAgICAgICAgKEpTQzo6REZHOjpRdWVyeWFibGVFeGl0UHJv
ZmlsZTo6aGFzRXhpdFNpdGUpOgotICAgICAgICAqIGRmZy9ERkdBc3NlbWJseUhlbHBlcnMuaDoK
LSAgICAgICAgKEpTQzo6REZHOjpBc3NlbWJseUhlbHBlcnM6OmJhc2VsaW5lQ29kZUJsb2NrRm9y
T3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2spOgotICAgICAgICAoSlNDOjpERkc6OkFzc2VtYmx5
SGVscGVyczo6YmFzZWxpbmVDb2RlQmxvY2tGb3IpOgotICAgICAgICAqIGRmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHA6Ci0gICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Om1ha2VTYWZl
KToKLSAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6bWFrZURpdlNhZmUpOgotICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKToKLSAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW50cmluc2ljKToKLSAgICAgICAgKEpTQzo6
REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6Ci0gICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkpOgotICAgICAg
ICAqIGRmZy9ERkdPU1JFeGl0LmNwcDoKLSAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0OjpPU1JF
eGl0KToKLSAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Ojpjb25zaWRlckFkZGluZ0FzRnJlcXVl
bnRFeGl0U2l0ZVNsb3cpOgotICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Lmg6Ci0gICAgICAgIChK
U0M6OkRGRzo6T1NSRXhpdDo6Y29uc2lkZXJBZGRpbmdBc0ZyZXF1ZW50RXhpdFNpdGUpOgotICAg
ICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwOgotICAgICAgICAqIGRmZy9ERkdPU1JF
eGl0Q29tcGlsZXIzMl82NC5jcHA6Ci0gICAgICAgIChKU0M6OkRGRzo6T1NSRXhpdENvbXBpbGVy
Ojpjb21waWxlRXhpdCk6Ci0gICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlcjY0LmNwcDoK
LSAgICAgICAgKEpTQzo6REZHOjpPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KToKLSAgICAg
ICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgotICAgICAgICAoSlNDOjpERkc6OlNwZWN1
bGF0aXZlSklUOjpjb21waWxlUGVlcEhvbGVPYmplY3RFcXVhbGl0eSk6Ci0gICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcyk6Ci0gICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRDaGFyQ29kZUF0KToKLSAgICAgICAgKEpT
Qzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdHJpbmcpOgotICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JCeXRlQXJyYXkp
OgotICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QnlWYWxPbkJ5
dGVBcnJheSk6Ci0gICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRU
eXBlZEFycmF5TGVuZ3RoKToKLSAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldEJ5VmFsT25JbnRUeXBlZEFycmF5KToKLSAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9ySW50VHlwZWRBcnJheSk6Ci0gICAgICAgIChKU0M6
OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uRmxvYXRUeXBlZEFycmF5KToK
LSAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVB1dEJ5VmFsRm9yRmxv
YXRUeXBlZEFycmF5KToKLSAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUluc3RhbmNlT2ZGb3JPYmplY3QpOgotICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklU
Ojpjb21waWxlU29mdE1vZHVsbyk6Ci0gICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVBcml0aE11bCk6Ci0gICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRJbmRleGVkUHJvcGVydHlTdG9yYWdlKToKLSAgICAgICAgKiBkZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaDoKLSAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6c3BlY3VsYXRp
b25DaGVjayk6Ci0gICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OnRlcm1pbmF0ZVNw
ZWN1bGF0aXZlRXhlY3V0aW9uKToKLSAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHA6Ci0gICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJ
bnRJbnRlcm5hbCk6Ci0gICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVEb3VibGUpOgotICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3Bl
Y3VsYXRlQ2VsbCk6Ci0gICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVCb29sZWFuKToKLSAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU9iamVjdEVxdWFsaXR5KToKLSAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KToKLSAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2gpOgotICAgICAgICAoSlNDOjpERkc6OlNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKToKLSAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHA6Ci0gICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJ
bnRJbnRlcm5hbCk6Ci0gICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVEb3VibGUpOgotICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpmaWxsU3Bl
Y3VsYXRlQ2VsbCk6Ci0gICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVCb29sZWFuKToKLSAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU9iamVjdEVxdWFsaXR5KToKLSAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZU9iamVjdE9yT3RoZXJMb2dpY2FsTm90KToKLSAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUxvZ2ljYWxOb3QpOgotICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjplbWl0T2JqZWN0T3JPdGhlckJyYW5jaCk6Ci0gICAgICAgIChKU0M6OkRGRzo6U3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2gpOgotICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZl
SklUOjpjb21waWxlKToKLSAgICAgICAgKiBydW50aW1lL0hldXJpc3RpY3MuY3BwOgotICAgICAg
ICAoSlNDOjpIZXVyaXN0aWNzOjppbml0aWFsaXplSGV1cmlzdGljcyk6Ci0gICAgICAgICogcnVu
dGltZS9IZXVyaXN0aWNzLmg6Ci0KLTIwMTEtMTItMTMgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9m
ZkBhcHBsZS5jb20+Ci0KLSAgICAgICAgQ2xlYW51cCBvZiBTdHJpbmdJbXBsOjplcXVhbCBpbiBy
MTAyNjMxIHBvc3QgY29tbWl0Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NDQyMQotCi0gICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgotCi0g
ICAgICAgICogd3RmL3RleHQvQXRvbWljU3RyaW5nLmg6Ci0gICAgICAgIChXVEY6Om9wZXJhdG9y
PT0pOiBSZW1vdmVkIGNhc3Qgbm8gbG9uZ2VyIG5lZWRlZC4KLSAgICAgICAgKiB3dGYvdGV4dC9T
dHJpbmdJbXBsLmg6Ci0gICAgICAgIChXVEY6OmVxdWFsKTogQ2hhbmdlZCB0ZW1wbGF0ZSB0byBz
ZXZlcmFsIG92ZXJsb2FkZWQgbWV0aG9kcy4KLQogMjAxMS0xMi0xMiAgTWljaGFlbCBTYWJvZmYg
IDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBFbGltaW5hdGUgRHVwbGljYXRlIHdvcmQg
YXQgYSB0aW1lIGVxdWFsIGNvZGUgaW4gU3RyaW5nSW1wbC5jcHAgYW5kIFN0cmluZ0hhc2guaApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCAwZDE5ZWYxLi44
YWUxMmFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAt
ODUsOCArODUsNiBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlT3JpZ2luLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9E
YXRhRm9ybWF0LmggXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJv
ZmlsZS5jcHAgXAotCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmls
ZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvRXZhbENvZGVDYWNoZS5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5jcHAgXApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCAyY2FiZGJmLi41YjUxMmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNzIsOCArNzIsNiBAQAogCQkwRjk2M0IyRDEzRjg1NDAyMDAwMkQ5QjIgLyog
TWV0YUFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY5NjNCMkExM0Y4NTNCRDAwMDJEOUIyIC8qIE1ldGFBbGxvY2F0b3IuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjk2M0IyRjEzRkM2
NkJCMDAwMkQ5QjIgLyogTWV0YUFsbG9jYXRvckhhbmRsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY5NjNCMkUxM0ZDNjZBRTAwMDJEOUIyIC8qIE1l
dGFBbGxvY2F0b3JIYW5kbGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjk2M0IzODEzRkM2RkU5MDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjk2M0IzNjEz
RkM2RkRFMDAwMkQ5QjIgLyogVmFsdWVQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMEZCQzBBRTcxNDk2QzdDNDAwRDRGQkREIC8qIERG
R0V4aXRQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGQkMwQUU0MTQ5NkM3QzEwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5jcHAgKi87
IH07Ci0JCTBGQkMwQUU4MTQ5NkM3QzcwMEQ0RkJERCAvKiBERkdFeGl0UHJvZmlsZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZCQzBBRTUxNDk2QzdD
MTAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZCRDdFNjkxNDQ3OTk5NjAwNDgxMzE1IC8qIENvZGVP
cmlnaW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
QkQ3RTY3MTQ0Nzk5OEYwMDQ4MTMxNSAvKiBDb2RlT3JpZ2luLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZDMDk3NkExNDY4QTZGNzAwQ0YyNDQy
IC8qIERGR09TUkV4aXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGQzA5NzY4MTQ2OEE2RUYwMENGMjQ0MiAvKiBERkdPU1JFeGl0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEZDMDk3NkQxNDY4QUI0
RTAwQ0YyNDQyIC8qIERGR0Fzc2VtYmx5SGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZDMDk3NkMxNDY4QUI0QTAwQ0YyNDQyIC8qIERGR0Fz
c2VtYmx5SGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC04NTMsOCArODUxLDYgQEAKIAkJMEY5NjNCMkIxM0Y4NTNDNzAwMDJEOUIyIC8q
IE1ldGFBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TWV0YUFsbG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGOTYzQjJF
MTNGQzY2QUUwMDAyRDlCMiAvKiBNZXRhQWxsb2NhdG9ySGFuZGxlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGFBbGxvY2F0b3JIYW5kbGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY5NjNCMzYxM0ZDNkZERTAwMDJEOUIyIC8qIFZhbHVlUHJvZmlsZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWYWx1ZVByb2ZpbGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZCQzBBRTQxNDk2QzdDMTAwRDRGQkREIC8qIERGR0V4
aXRQcm9maWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERGR0V4
aXRQcm9maWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMEZCQzBBRTUxNDk2
QzdDMTAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERGR0V4aXRQcm9maWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGQkQ3RTY3MTQ0Nzk5OEYwMDQ4MTMxNSAvKiBDb2RlT3JpZ2luLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVPcmlnaW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEZDMDk3NjgxNDY4QTZFRjAwQ0YyNDQyIC8qIERGR09TUkV4aXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHT1NSRXhpdC5oOyBwYXRoID0gZGZnL0RGR09TUkV4
aXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEZDMDk3NkIxNDY4QUI0QTAwQ0Yy
NDQyIC8qIERGR0Fzc2VtYmx5SGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBERkdBc3NlbWJseUhlbHBlcnMuY3BwOyBwYXRoID0gZGZnL0RGR0Fzc2VtYmx5
SGVscGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNDY0LDggKzI0NjAs
NiBAQAogCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCTBGQkMwQUU0MTQ5NkM3QzEwMEQ0
RkJERCAvKiBERkdFeGl0UHJvZmlsZS5jcHAgKi8sCi0JCQkJMEZCQzBBRTUxNDk2QzdDMTAwRDRG
QkREIC8qIERGR0V4aXRQcm9maWxlLmggKi8sCiAJCQkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMxRjhG
IC8qIERhdGFGb3JtYXQuaCAqLywKIAkJCQkwRjQyNkE0NTE0NjBDQkFCMDAxMzFGOEYgLyogVmFs
dWVSZWNvdmVyeS5oICovLAogCQkJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFs
UmVnaXN0ZXIuaCAqLywKQEAgLTI5ODcsNyArMjk4MSw2IEBACiAJCQkJQTczQkUxN0UxNDg0MjA4
NDAwOTEyMDRCIC8qIFR5cGVkQXJyYXlCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzNCRTE4
MDE0ODQyMEE4MDA5MTIwNEIgLyogSW50ZWdyYWxUeXBlZEFycmF5QmFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODYwQkQ4MDExNDhFQTZGMjAwMTEyQjJGIC8qIEludHJpbnNpYy5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJMEZCQzBBRTgxNDk2QzdDNzAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKQEAgLTM1MjUsNyArMzUxOCw2IEBACiAJCQkJMEYyQzU1NzAxNDczOEYz
NTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTczQkUx
NjgxNDg0MjA1MjAwOTEyMDRCIC8qIEFycmF5QnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3M0JFMTZBMTQ4NDIwNTIwMDkxMjA0QiAvKiBBcnJheUJ1ZmZlclZpZXcuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJMEZCQzBBRTcxNDk2QzdDNDAwRDRGQkREIC8qIERGR0V4aXRQcm9maWxlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1Rhcmdl
dC5wcmkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQppbmRleCA3YTJmOGI0Li4w
OTRlMjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQpAQCAtNTUsNyArNTUsNiBAQCBTT1VS
Q0VTICs9IFwKICAgICBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk0uY3BwIFwKICAgICBhc3Nl
bWJsZXIvTWFjcm9Bc3NlbWJsZXJTSDQuY3BwIFwKICAgICBieXRlY29kZS9Db2RlQmxvY2suY3Bw
IFwKLSAgICBieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5jcHAgXAogICAgIGJ5dGVjb2RlL0p1bXBU
YWJsZS5jcHAgXAogICAgIGJ5dGVjb2RlL09wY29kZS5jcHAgXAogICAgIGJ5dGVjb2RlL1ByZWRp
Y3RlZFR5cGUuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAKaW5kZXggY2JkMzk3MS4uODY1MWJmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKQEAgLTIyNDEsMjggKzIyNDEsNiBAQCBib29sIENvZGVC
bG9jazo6c2hvdWxkT3B0aW1pemVOb3coKQogfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoREZHX0pJ
VCkKLXZvaWQgQ29kZUJsb2NrOjp0YWxseUZyZXF1ZW50RXhpdFNpdGVzKCkKLXsKLSAgICBBU1NF
UlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7Ci0gICAgQVNTRVJUKGFsdGVybmF0
aXZlKCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7Ci0gICAgQVNTRVJU
KCEhbV9kZmdEYXRhKTsKLSAgICAKLSAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2sgPSBhbHRl
cm5hdGl2ZSgpOwotICAgIAotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RmZ0RhdGEt
Pm9zckV4aXQuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgREZHOjpPU1JFeGl0JiBleGl0ID0gbV9k
ZmdEYXRhLT5vc3JFeGl0W2ldOwotICAgICAgICAKLSAgICAgICAgaWYgKCFleGl0LmNvbnNpZGVy
QWRkaW5nQXNGcmVxdWVudEV4aXRTaXRlKHRoaXMsIHByb2ZpbGVkQmxvY2spKQotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIAotI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAg
ICAgICAgZnByaW50ZihzdGRlcnIsICJPU1IgZXhpdCAjJXUgKGJjIyV1LCBAJXUsICVzKSBmb3Ig
Y29kZSBibG9jayAlcCBvY2N1cnJlZCBmcmVxdWVudGx5OyBjb3VudGluZyBhcyBmcmVxdWVudCBl
eGl0IHNpdGUuXG4iLCBpLCBleGl0Lm1fY29kZU9yaWdpbi5ieXRlY29kZUluZGV4LCBleGl0Lm1f
bm9kZUluZGV4LCBERkc6OmV4aXRLaW5kVG9TdHJpbmcoZXhpdC5tX2tpbmQpLCB0aGlzKTsKLSNl
bmRpZgotICAgIH0KLX0KLSNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKLQogI2lmIEVOQUJMRShW
RVJCT1NFX1ZBTFVFX1BST0ZJTEUpCiB2b2lkIENvZGVCbG9jazo6ZHVtcFZhbHVlUHJvZmlsZXMo
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCmluZGV4IGZk
ZmU0MjIuLmEzNjA1YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAjaW5jbHVk
ZSAiQ29tcGFjdEpJVENvZGVNYXAuaCIKICNpbmNsdWRlICJERkdDb2RlQmxvY2tzLmgiCi0jaW5j
bHVkZSAiREZHRXhpdFByb2ZpbGUuaCIKICNpbmNsdWRlICJERkdPU1JFbnRyeS5oIgogI2luY2x1
ZGUgIkRGR09TUkV4aXQuaCIKICNpbmNsdWRlICJFdmFsQ29kZUNhY2hlLmgiCkBAIC03OTcsMTQg
Kzc5Niw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgQVNTRVJUKGhhc0NvZGVPcmln
aW5zKCkpOwogICAgICAgICAgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDb2RlT3JpZ2luQXRDYWxs
UmV0dXJuT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldEZvckNvZGVPcmlnaW4+
KGNvZGVPcmlnaW5zKCkuYmVnaW4oKSwgY29kZU9yaWdpbnMoKS5zaXplKCksIGdldEpJVENvZGUo
KS5vZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS0+Y29kZU9yaWdpbjsKICAgICAgICAg
fQotICAgICAgICAKLSAgICAgICAgYm9vbCBhZGRGcmVxdWVudEV4aXRTaXRlKGNvbnN0IERGRzo6
RnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGdl
dEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7Ci0gICAgICAgICAgICByZXR1cm4g
bV9leGl0UHJvZmlsZS5hZGQoc2l0ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBERkc6OkV4aXRQ
cm9maWxlJiBleGl0UHJvZmlsZSgpIHsgcmV0dXJuIG1fZXhpdFByb2ZpbGU7IH0KICNlbmRpZgog
CiAgICAgICAgIC8vIENvbnN0YW50IFBvb2wKQEAgLTEwNzQsOCArMTA2NSw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIHJlb3B0aW1pemUoKQogICAgICAgICB7CiAgICAgICAgICAg
ICBBU1NFUlQocmVwbGFjZW1lbnQoKSAhPSB0aGlzKTsKLSAgICAgICAgICAgIEFTU0VSVChyZXBs
YWNlbWVudCgpLT5hbHRlcm5hdGl2ZSgpID09IHRoaXMpOwotICAgICAgICAgICAgcmVwbGFjZW1l
bnQoKS0+dGFsbHlGcmVxdWVudEV4aXRTaXRlcygpOwogICAgICAgICAgICAgcmVwbGFjZW1lbnQo
KS0+amV0dGlzb24oKTsKICAgICAgICAgICAgIGNvdW50UmVvcHRpbWl6YXRpb24oKTsKICAgICAg
ICAgICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKQEAgLTExMDQsMTIgKzEwOTMsNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgREZHQ29kZUJs
b2NrczsKICAgICAgICAgCi0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgICAgIHZvaWQgdGFsbHlG
cmVxdWVudEV4aXRTaXRlcygpOwotI2Vsc2UKLSAgICAgICAgdm9pZCB0YWxseUZyZXF1ZW50RXhp
dFNpdGVzKCkgeyB9Ci0jZW5kaWYKLSAgICAgICAgCiAjaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBF
TkFCTEUoT1BDT0RFX1NBTVBMSU5HKQogICAgICAgICB2b2lkIGR1bXAoRXhlY1N0YXRlKiwgY29u
c3QgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImIGJlZ2luLCBWZWN0b3I8SW5z
dHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYpIGNvbnN0OwogCkBAIC0xMjI5LDEwICsxMjEyLDYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH07CiAgICAgICAgIAogICAgICAgICBPd25QdHI8
REZHRGF0YT4gbV9kZmdEYXRhOwotICAgICAgICAKLSAgICAgICAgLy8gVGhpcyBpcyByZWxldmFu
dCB0byBub24tREZHIGNvZGUgYmxvY2tzIHRoYXQgc2VydmUgYXMgdGhlIHByb2ZpbGVkIGNvZGUg
YmxvY2sKLSAgICAgICAgLy8gZm9yIERGRyBjb2RlIGJsb2Nrcy4KLSAgICAgICAgREZHOjpFeGl0
UHJvZmlsZSBtX2V4aXRQcm9maWxlOwogI2VuZGlmCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVS
KQogICAgICAgICBTZWdtZW50ZWRWZWN0b3I8VmFsdWVQcm9maWxlLCA4PiBtX3ZhbHVlUHJvZmls
ZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFBy
b2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxl
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjlmZGMzNy4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuY3BwCisrKyAv
ZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiREZHRXhpdFBy
b2ZpbGUuaCIKLQotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+Ci0KLW5hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgREZHIHsKLQotRXhpdFByb2ZpbGU6OkV4aXRQcm9maWxlKCkgeyB9Ci1FeGl0
UHJvZmlsZTo6fkV4aXRQcm9maWxlKCkgeyB9Ci0KLWJvb2wgRXhpdFByb2ZpbGU6OmFkZChjb25z
dCBGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQotewotICAgIC8vIElmIHdlJ3ZlIG5ldmVyIHNlZW4g
YW55IGZyZXF1ZW50IGV4aXRzIHRoZW4gY3JlYXRlIHRoZSBsaXN0IGFuZCBwdXQgdGhpcyBzaXRl
Ci0gICAgLy8gaW50byBpdC4KLSAgICBpZiAoIW1fZnJlcXVlbnRFeGl0U2l0ZXMpIHsKLSAgICAg
ICAgbV9mcmVxdWVudEV4aXRTaXRlcyA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8RnJlcXVlbnRFeGl0
U2l0ZT4oKSk7Ci0gICAgICAgIG1fZnJlcXVlbnRFeGl0U2l0ZXMtPmFwcGVuZChzaXRlKTsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIAotICAgIC8vIERvbid0IGFkZCBpdCBpZiBp
dCdzIGFscmVhZHkgdGhlcmUuIFRoaXMgaXMgTyhuKSwgYnV0IHRoYXQncyBPSywgYmVjYXVzZSB3
ZQotICAgIC8vIGtub3cgdGhhdCB0aGUgdG90YWwgbnVtYmVyIG9mIHBsYWNlcyB3aGVyZSBjb2Rl
IGV4aXRzIHRlbmRzIHRvIG5vdCBiZSBsYXJnZSwKLSAgICAvLyBhbmQgdGhpcyBjb2RlIGlzIG9u
bHkgdXNlZCB3aGVuIHJlY29tcGlsYXRpb24gaXMgdHJpZ2dlcmVkLgotICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2ZyZXF1ZW50RXhpdFNpdGVzLT5zaXplKCk7ICsraSkgewotICAgICAg
ICBpZiAobV9mcmVxdWVudEV4aXRTaXRlcy0+YXQoaSkgPT0gc2l0ZSkKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgbV9mcmVxdWVudEV4aXRTaXRlcy0+YXBwZW5k
KHNpdGUpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1RdWVyeWFibGVFeGl0UHJvZmlsZTo6UXVl
cnlhYmxlRXhpdFByb2ZpbGUoY29uc3QgRXhpdFByb2ZpbGUmIHByb2ZpbGUpCi17Ci0gICAgaWYg
KCFwcm9maWxlLm1fZnJlcXVlbnRFeGl0U2l0ZXMpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJvZmlsZS5tX2ZyZXF1ZW50RXhpdFNpdGVzLT5z
aXplKCk7ICsraSkKLSAgICAgICAgbV9mcmVxdWVudEV4aXRTaXRlcy5hZGQocHJvZmlsZS5tX2Zy
ZXF1ZW50RXhpdFNpdGVzLT5hdChpKSk7Ci19Ci0KLVF1ZXJ5YWJsZUV4aXRQcm9maWxlOjp+UXVl
cnlhYmxlRXhpdFByb2ZpbGUoKSB7IH0KLQotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE4YjY5YS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvREZHRXhpdFByb2ZpbGUuaAorKysgL2Rldi9udWxsCkBAIC0x
LDE5MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1l
dDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICov
Ci0KLSNpZm5kZWYgREZHRXhpdFByb2ZpbGVfaAotI2RlZmluZSBERkdFeGl0UHJvZmlsZV9oCi0K
LSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+Ci0KLW5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKLQot
ZW51bSBFeGl0S2luZCB7Ci0gICAgRXhpdEtpbmRVbnNldCwKLSAgICBCYWRUeXBlLCAvLyBXZSBl
eGl0ZWQgYmVjYXVzZSBhIHR5cGUgcHJlZGljdGlvbiB3YXMgd3JvbmcuCi0gICAgQmFkQ2FjaGUs
IC8vIFdlIGV4aXRlZCBiZWNhdXNlIGFuIGlubGluZSBjYWNoZSB3YXMgd3JvbmcuCi0gICAgT3Zl
cmZsb3csIC8vIFdlIGV4aXRlZCBiZWNhdXNlIG9mIG92ZXJmbG93LgotICAgIE5lZ2F0aXZlWmVy
bywgLy8gV2UgZXhpdGVkIGJlY2F1c2Ugd2UgZW5jb3VudGVyZWQgbmVnYXRpdmUgemVyby4KLSAg
ICBVbmNvdW50YWJsZSwgLy8gV2UgZXhpdGVkIGZvciBub25lIG9mIHRoZSBhYm92ZSByZWFzb25z
LCBhbmQgd2Ugc2hvdWxkIG5vdCBjb3VudCBpdC4gTW9zdCB1c2VzIG9mIHRoaXMgc2hvdWxkIGJl
IHZpZXdlZCBhcyBhIEZJWE1FLgotfTsKLQotI2lmbmRlZiBOREVCVUcKLWlubGluZSBjb25zdCBj
aGFyKiBleGl0S2luZFRvU3RyaW5nKEV4aXRLaW5kIGtpbmQpCi17Ci0gICAgc3dpdGNoIChraW5k
KSB7Ci0gICAgY2FzZSBFeGl0S2luZFVuc2V0OgotICAgICAgICByZXR1cm4gIlVuc2V0IjsKLSAg
ICBjYXNlIEJhZFR5cGU6Ci0gICAgICAgIHJldHVybiAiQmFkVHlwZSI7Ci0gICAgY2FzZSBCYWRD
YWNoZToKLSAgICAgICAgcmV0dXJuICJCYWRDYWNoZSI7Ci0gICAgY2FzZSBPdmVyZmxvdzoKLSAg
ICAgICAgcmV0dXJuICJPdmVyZmxvdyI7Ci0gICAgY2FzZSBOZWdhdGl2ZVplcm86Ci0gICAgICAg
IHJldHVybiAiTmVnYXRpdmVaZXJvIjsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gIlVu
a25vd24iOwotICAgIH0KLX0KLSNlbmRpZgotCi1pbmxpbmUgYm9vbCBleGl0S2luZElzQ291bnRh
YmxlKEV4aXRLaW5kIGtpbmQpCi17Ci0gICAgc3dpdGNoIChraW5kKSB7Ci0gICAgY2FzZSBFeGl0
S2luZFVuc2V0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBjYXNlIEJhZFR5
cGU6Ci0gICAgY2FzZSBVbmNvdW50YWJsZToKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGRl
ZmF1bHQ6Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLX0KLQotY2xhc3MgRnJlcXVlbnRF
eGl0U2l0ZSB7Ci1wdWJsaWM6Ci0gICAgRnJlcXVlbnRFeGl0U2l0ZSgpCi0gICAgICAgIDogbV9i
eXRlY29kZU9mZnNldCgwKSAvLyAwID0gZW1wdHkgdmFsdWUKLSAgICAgICAgLCBtX2tpbmQoRXhp
dEtpbmRVbnNldCkKLSAgICB7Ci0gICAgfQotICAgIAotICAgIEZyZXF1ZW50RXhpdFNpdGUoV1RG
OjpIYXNoVGFibGVEZWxldGVkVmFsdWVUeXBlKQotICAgICAgICA6IG1fYnl0ZWNvZGVPZmZzZXQo
MSkgLy8gMSA9IGRlbGV0ZWQgdmFsdWUKLSAgICAgICAgLCBtX2tpbmQoRXhpdEtpbmRVbnNldCkK
LSAgICB7Ci0gICAgfQotICAgIAotICAgIGV4cGxpY2l0IEZyZXF1ZW50RXhpdFNpdGUodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQsIEV4aXRLaW5kIGtpbmQpCi0gICAgICAgIDogbV9ieXRlY29kZU9m
ZnNldChieXRlY29kZU9mZnNldCkKLSAgICAgICAgLCBtX2tpbmQoa2luZCkKLSAgICB7Ci0gICAg
ICAgIEFTU0VSVChleGl0S2luZElzQ291bnRhYmxlKGtpbmQpKTsKLSAgICB9Ci0gICAgCi0gICAg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBF
eGl0S2luZFVuc2V0OwotICAgIH0KLSAgICAKLSAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgRnJl
cXVlbnRFeGl0U2l0ZSYgb3RoZXIpIGNvbnN0Ci0gICAgewotICAgICAgICByZXR1cm4gbV9ieXRl
Y29kZU9mZnNldCA9PSBvdGhlci5tX2J5dGVjb2RlT2Zmc2V0Ci0gICAgICAgICAgICAmJiBtX2tp
bmQgPT0gb3RoZXIubV9raW5kOwotICAgIH0KLSAgICAKLSAgICB1bnNpZ25lZCBoYXNoKCkgY29u
c3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBXVEY6OmludEhhc2gobV9ieXRlY29kZU9mZnNldCkg
KyBtX2tpbmQ7Ci0gICAgfQotICAgIAotICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gbV9ieXRlY29kZU9mZnNldDsgfQotICAgIEV4aXRLaW5kIGtpbmQoKSBjb25z
dCB7IHJldHVybiBtX2tpbmQ7IH0KLQotICAgIGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUo
KSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIG1fa2luZCA9PSBFeGl0S2luZFVuc2V0ICYm
IG1fYnl0ZWNvZGVPZmZzZXQ7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHVuc2lnbmVkIG1fYnl0
ZWNvZGVPZmZzZXQ7Ci0gICAgRXhpdEtpbmQgbV9raW5kOwotfTsKLQotc3RydWN0IEZyZXF1ZW50
RXhpdFNpdGVIYXNoIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgaGFzaChjb25zdCBGcmVxdWVudEV4
aXRTaXRlJiBrZXkpIHsgcmV0dXJuIGtleS5oYXNoKCk7IH0KLSAgICBzdGF0aWMgYm9vbCBlcXVh
bChjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBhLCBjb25zdCBGcmVxdWVudEV4aXRTaXRlJiBiKSB7
IHJldHVybiBhID09IGI7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBzYWZlVG9Db21wYXJlVG9F
bXB0eU9yRGVsZXRlZCA9IHRydWU7Ci19OwotCi19IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCi0K
LW5hbWVzcGFjZSBXVEYgewotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdEhh
c2g7Ci10ZW1wbGF0ZTw+IHN0cnVjdCBEZWZhdWx0SGFzaDxKU0M6OkRGRzo6RnJlcXVlbnRFeGl0
U2l0ZT4gewotICAgIHR5cGVkZWYgSlNDOjpERkc6OkZyZXF1ZW50RXhpdFNpdGVIYXNoIEhhc2g7
Ci19OwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgSGFzaFRyYWl0czsKLXRlbXBsYXRl
PD4gc3RydWN0IEhhc2hUcmFpdHM8SlNDOjpERkc6OkZyZXF1ZW50RXhpdFNpdGU+IDogU2ltcGxl
Q2xhc3NIYXNoVHJhaXRzPEpTQzo6REZHOjpGcmVxdWVudEV4aXRTaXRlPiB7IH07Ci0KLX0gLy8g
bmFtZXNwYWNlIFdURgotCi1uYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7Ci0KLWNsYXNz
IFF1ZXJ5YWJsZUV4aXRQcm9maWxlOwotCi1jbGFzcyBFeGl0UHJvZmlsZSB7Ci1wdWJsaWM6Ci0g
ICAgRXhpdFByb2ZpbGUoKTsKLSAgICB+RXhpdFByb2ZpbGUoKTsKLSAgICAKLSAgICAvLyBBZGQg
YSBuZXcgZnJlcXVlbnQgZXhpdCBzaXRlLiBSZXR1cm4gdHJ1ZSBpZiB0aGlzIGlzIGEgbmV3IG9u
ZSwgb3IgZmFsc2UKLSAgICAvLyBpZiB3ZSBhbHJlYWR5IGtuZXcgYWJvdXQgaXQuIFRoaXMgaXMg
YW4gTyhuKSBvcGVyYXRpb24sIGJlY2F1c2UgaXQgZXJycwotICAgIC8vIG9uIHRoZSBzaWRlIG9m
IGtlZXBpbmcgdGhlIGRhdGEgc3RydWN0dXJlIGNvbXBhY3QuIEFsc28sIHRoaXMgd2lsbCBvbmx5
Ci0gICAgLy8gYmUgY2FsbGVkIGEgZml4ZWQgbnVtYmVyIG9mIHRpbWVzIHBlciByZWNvbXBpbGF0
aW9uLiBSZWNvbXBpbGF0aW9uIGlzCi0gICAgLy8gcmFyZSB0byBiZWdpbiB3aXRoLCBhbmQgaW1w
bGllcyBkb2luZyBPKG4pIG9wZXJhdGlvbnMgb24gdGhlIENvZGVCbG9jawotICAgIC8vIGFueXdh
eS4KLSAgICBib29sIGFkZChjb25zdCBGcmVxdWVudEV4aXRTaXRlJik7Ci0gICAgCi1wcml2YXRl
OgotICAgIGZyaWVuZCBjbGFzcyBRdWVyeWFibGVFeGl0UHJvZmlsZTsKLSAgICAKLSAgICBPd25Q
dHI8VmVjdG9yPEZyZXF1ZW50RXhpdFNpdGU+ID4gbV9mcmVxdWVudEV4aXRTaXRlczsKLX07Ci0K
LWNsYXNzIFF1ZXJ5YWJsZUV4aXRQcm9maWxlIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBRdWVy
eWFibGVFeGl0UHJvZmlsZShjb25zdCBFeGl0UHJvZmlsZSYpOwotICAgIH5RdWVyeWFibGVFeGl0
UHJvZmlsZSgpOwotICAgIAotICAgIGJvb2wgaGFzRXhpdFNpdGUoY29uc3QgRnJlcXVlbnRFeGl0
U2l0ZSYgc2l0ZSkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2ZyZXF1ZW50RXhpdFNp
dGVzLmZpbmQoc2l0ZSkgIT0gbV9mcmVxdWVudEV4aXRTaXRlcy5lbmQoKTsKLSAgICB9Ci0gICAg
Ci0gICAgYm9vbCBoYXNFeGl0U2l0ZSh1bnNpZ25lZCBieXRlY29kZUluZGV4LCBFeGl0S2luZCBr
aW5kKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIGhhc0V4aXRTaXRlKEZyZXF1ZW50RXhp
dFNpdGUoYnl0ZWNvZGVJbmRleCwga2luZCkpOwotICAgIH0KLXByaXZhdGU6Ci0gICAgSGFzaFNl
dDxGcmVxdWVudEV4aXRTaXRlPiBtX2ZyZXF1ZW50RXhpdFNpdGVzOwotfTsKLQotfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkRGRwotCi0jZW5kaWYgLy8gREZHRXhpdFByb2ZpbGVfaApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgKaW5kZXggZDJiZmU4Mi4u
MTNjOGEzOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVl
UmVjb3ZlcnkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVSZWNv
dmVyeS5oCkBAIC0zMiwxMCArMzIsNiBAQAogI2luY2x1ZGUgIlZpcnR1YWxSZWdpc3Rlci5oIgog
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgogCi0jaWZuZGVmIE5ERUJVRwotI2luY2x1ZGUgPHN0
ZGlvLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNlIEpTQyB7CiAKIC8vIERlc2NyaWJlcyBob3cgdG8g
cmVjb3ZlciBhIGdpdmVuIGJ5dGVjb2RlIHZpcnR1YWwgcmVnaXN0ZXIgYXQgYSBnaXZlbgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBc3NlbWJseUhlbHBlcnMuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggZThk
OGQxMC4uYjM5ODI0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdB
c3NlbWJseUhlbHBlcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fzc2Vt
Ymx5SGVscGVycy5oCkBAIC0yODQsMTkgKzI4NCwxNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+Y2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+aXNT
dHJpY3RNb2RlKCk7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBDb2RlQmxvY2sqIGJhc2VsaW5l
Q29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2RlQmxvY2soY29uc3QgQ29kZU9yaWdpbiYg
Y29kZU9yaWdpbiwgQ29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9jaykKKyAgICBDb2RlQmxvY2sq
IGJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvbnN0IENvZGVPcmlnaW4mIGNvZGVPcmlnaW4pCiAgICAg
ewogICAgICAgICBpZiAoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgICAg
IEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUt
PmV4ZWN1dGFibGUuZ2V0KCk7CiAgICAgICAgICAgICBBU1NFUlQoZXhlY3V0YWJsZS0+c3RydWN0
dXJlKCktPmNsYXNzSW5mbygpID09ICZGdW5jdGlvbkV4ZWN1dGFibGU6OnNfaW5mbyk7CiAgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJs
ZSktPmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5pc0Nh
bGwgPyBDb2RlRm9yQ2FsbCA6IENvZGVGb3JDb25zdHJ1Y3QpOwogICAgICAgICB9Ci0gICAgICAg
IHJldHVybiBiYXNlbGluZUNvZGVCbG9jazsKLSAgICB9Ci0gICAgCi0gICAgQ29kZUJsb2NrKiBi
YXNlbGluZUNvZGVCbG9ja0Zvcihjb25zdCBDb2RlT3JpZ2luJiBjb2RlT3JpZ2luKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIGJhc2VsaW5lQ29kZUJsb2NrRm9yT3JpZ2luQW5kQmFzZWxpbmVDb2Rl
QmxvY2soY29kZU9yaWdpbiwgYmFzZWxpbmVDb2RlQmxvY2soKSk7CisgICAgICAgIHJldHVybiBi
YXNlbGluZUNvZGVCbG9jaygpOwogICAgIH0KICAgICAKICAgICBDb2RlQmxvY2sqIGJhc2VsaW5l
Q29kZUJsb2NrKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0
ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKaW5kZXggZDIzMWFkNi4uN2UyNjc3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTYzMSwxMyArNjMxLDExIEBAIHBy
aXZhdGU6CiAKICAgICBOb2RlSW5kZXggbWFrZVNhZmUoTm9kZUluZGV4IG5vZGVJbmRleCkKICAg
ICB7Ci0gICAgICAgIGlmICghbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5saWtl
bHlUb1Rha2VTbG93Q2FzZShtX2N1cnJlbnRJbmRleCkKLSAgICAgICAgICAgICYmICFtX2lubGlu
ZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVy
ZmxvdykKLSAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhh
c0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKQorICAgICAgICBpZiAoIW1f
aW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UobV9j
dXJyZW50SW5kZXgpKQogICAgICAgICAgICAgcmV0dXJuIG5vZGVJbmRleDsKICAgICAgICAgCiAj
aWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgICAgICBwcmludGYoIk1ha2luZyAlcyBA
JXUgc2FmZSBhdCBiYyMldSBiZWNhdXNlIHNsb3ctY2FzZSBjb3VudGVyIGlzIGF0ICV1IGFuZCBl
eGl0IHByb2ZpbGVzIHNheSAlZCwgJWRcbiIsIEdyYXBoOjpvcE5hbWUobV9ncmFwaFtub2RlSW5k
ZXhdLm9wKSwgbm9kZUluZGV4LCBtX2N1cnJlbnRJbmRleCwgbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT5yYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2N1cnJlbnRJ
bmRleCktPm1fY291bnRlciwgbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0
U2l0ZShtX2N1cnJlbnRJbmRleCwgT3ZlcmZsb3cpLCBtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQ
cm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKTsKKyAgICAg
ICAgcHJpbnRmKCJNYWtpbmcgJXMgQCV1IHNhZmUgYXQgYmMjJXUgYmVjYXVzZSBzbG93LWNhc2Ug
Y291bnRlciBpcyBhdCAldVxuIiwgR3JhcGg6Om9wTmFtZShtX2dyYXBoW25vZGVJbmRleF0ub3Ap
LCBub2RlSW5kZXgsIG1fY3VycmVudEluZGV4LCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVk
QmxvY2stPnJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KS0+
bV9jb3VudGVyKTsKICNlbmRpZgogICAgICAgICAKICAgICAgICAgc3dpdGNoIChtX2dyYXBoW25v
ZGVJbmRleF0ub3ApIHsKQEAgLTY1MCwxNCArNjQ4LDEyIEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIAogICAgICAgICBjYXNlIEFyaXRoTXVsOgotICAgICAgICAg
ICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlRGVl
cGVzdFNsb3dDYXNlKG1fY3VycmVudEluZGV4KQotICAgICAgICAgICAgICAgIHx8IG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJm
bG93KSkgeworICAgICAgICAgICAgaWYgKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
ay0+bGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dDYXNlKG1fY3VycmVudEluZGV4KSkgewogI2lmIERG
R19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICAgICAgICAgICAgICBwcmludGYoIk1ha2luZyBB
cml0aE11bCBAJXUgdGFrZSBkZWVwZXN0IHNsb3cgY2FzZS5cbiIsIG5vZGVJbmRleCk7CiAjZW5k
aWYKICAgICAgICAgICAgICAgICBtX2dyYXBoW25vZGVJbmRleF0ubWVyZ2VBcml0aE5vZGVGbGFn
cyhOb2RlTWF5T3ZlcmZsb3cgfCBOb2RlTWF5TmVnWmVybyk7Ci0gICAgICAgICAgICB9IGVsc2Ug
aWYgKG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nh
c2UobV9jdXJyZW50SW5kZXgpCi0gICAgICAgICAgICAgICAgICAgICAgIHx8IG1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE5lZ2F0aXZl
WmVybykpIHsKKyAgICAgICAgICAgIH0gZWxzZSB7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJC
T1NFKQogICAgICAgICAgICAgICAgIHByaW50ZigiTWFraW5nIEFyaXRoTXVsIEAldSB0YWtlIGZh
c3RlciBzbG93IGNhc2UuXG4iLCBub2RlSW5kZXgpOwogI2VuZGlmCkBAIC02ODMsMTcgKzY3OSwx
MyBAQCBwcml2YXRlOgogICAgICAgICAvLyBjYXJlIGFib3V0IHdoZW4gdGhlIG91dGNvbWUgb2Yg
dGhlIGRpdmlzaW9uIGlzIG5vdCBhbiBpbnRlZ2VyLCB3aGljaAogICAgICAgICAvLyBpcyB3aGF0
IHRoZSBzcGVjaWFsIGZhc3QgY2FzZSBjb3VudGVyIHRlbGxzIHVzLgogICAgICAgICAKLSAgICAg
ICAgaWYgKCFtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmxpa2VseVRvVGFrZVNw
ZWNpYWxGYXN0Q2FzZShtX2N1cnJlbnRJbmRleCkKLSAgICAgICAgICAgICYmICFtX2lubGluZVN0
YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxv
dykKLSAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4
aXRTaXRlKG1fY3VycmVudEluZGV4LCBOZWdhdGl2ZVplcm8pKQorICAgICAgICBpZiAoIW1faW5s
aW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU3BlY2lhbEZhc3RDYXNl
KG1fY3VycmVudEluZGV4KSkKICAgICAgICAgICAgIHJldHVybiBub2RlSW5kZXg7CiAgICAgICAg
IAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICAgICAgcHJpbnRmKCJNYWtpbmcg
JXMgQCV1IHNhZmUgYXQgYmMjJXUgYmVjYXVzZSBzcGVjaWFsIGZhc3QtY2FzZSBjb3VudGVyIGlz
IGF0ICV1IGFuZCBleGl0IHByb2ZpbGVzIHNheSAlZCwgJWRcbiIsIEdyYXBoOjpvcE5hbWUobV9n
cmFwaFtub2RlSW5kZXhdLm9wKSwgbm9kZUluZGV4LCBtX2N1cnJlbnRJbmRleCwgbV9pbmxpbmVT
dGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5zcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNv
ZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5lU3RhY2tUb3AtPm1f
ZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIE92ZXJmbG93KSwgbV9pbmxp
bmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgTmVn
YXRpdmVaZXJvKSk7CisgICAgICAgIHByaW50ZigiTWFraW5nICVzIEAldSBzYWZlIGF0IGJjIyV1
IGJlY2F1c2Ugc3BlY2lhbCBmYXN0LWNhc2UgY291bnRlciBpcyBhdCAldVxuIiwgR3JhcGg6Om9w
TmFtZShtX2dyYXBoW25vZGVJbmRleF0ub3ApLCBub2RlSW5kZXgsIG1fY3VycmVudEluZGV4LCBt
X2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVG
b3JCeXRlY29kZU9mZnNldChtX2N1cnJlbnRJbmRleCktPm1fY291bnRlcik7CiAjZW5kaWYKICAg
ICAgICAgCi0gICAgICAgIC8vIEZJWE1FOiBJdCBtaWdodCBiZSBwb3NzaWJsZSB0byBtYWtlIHRo
aXMgbW9yZSBncmFudWxhci4gVGhlIERGRyBjZXJ0YWlubHkgY2FuCi0gICAgICAgIC8vIGRpc3Rp
bmd1aXNoIGJldHdlZW4gbmVnYXRpdmUgemVybyBhbmQgb3ZlcmZsb3cgaW4gaXRzIGV4aXQgcHJv
ZmlsZXMuCiAgICAgICAgIG1fZ3JhcGhbbm9kZUluZGV4XS5tZXJnZUFyaXRoTm9kZUZsYWdzKE5v
ZGVNYXlPdmVyZmxvdyB8IE5vZGVNYXlOZWdaZXJvKTsKICAgICAgICAgCiAgICAgICAgIHJldHVy
biBub2RlSW5kZXg7CkBAIC04MDEsOCArNzkzLDYgQEAgcHJpdmF0ZToKICAgICAgICAgCiAgICAg
ICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUoKSB7IHJldHVybiBtX2NvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCk7IH0KICAgICAgICAgCi0gICAgICAgIFF1ZXJ5YWJsZUV4aXRQcm9m
aWxlIG1fZXhpdFByb2ZpbGU7Ci0gICAgICAgIAogICAgICAgICAvLyBSZW1hcHBpbmcgb2YgaWRl
bnRpZmllciBhbmQgY29uc3RhbnQgbnVtYmVycyBmcm9tIHRoZSBjb2RlIGJsb2NrIGJlaW5nCiAg
ICAgICAgIC8vIGlubGluZWQgKGlubGluZSBjYWxsZWUpIHRvIHRoZSBjb2RlIGJsb2NrIHRoYXQg
d2UncmUgaW5saW5pbmcgaW50bwogICAgICAgICAvLyAodGhlIG1hY2hpbmUgY29kZSBibG9jaywg
d2hpY2ggaXMgdGhlIHRyYW5zaXRpdmUsIHRob3VnaCBub3QgbmVjZXNzYXJpbHkKQEAgLTg5Nywx
NCArODg3LDEyIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoSW50ZXJwcmV0ZXIq
IGludGVycHJldGVyLCBJbnN0cnVjdGlvbiogY3VycmVudEluCiAgICAgZW51bSB7IENvbnN0YW50
RnVuY3Rpb24sIExpbmtlZEZ1bmN0aW9uLCBVbmtub3duRnVuY3Rpb24gfSBjYWxsVHlwZTsKICAg
ICAgICAgICAgIAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKLSAgICBwcmludGYoIlNs
b3cgY2FzZSBjb3VudCBmb3IgY2FsbCBhdCBAJWx1IGJjIyV1OiAldS8ldTsgZXhpdCBwcm9maWxl
OiAlZC5cbiIsIG1fZ3JhcGguc2l6ZSgpLCBtX2N1cnJlbnRJbmRleCwgbV9pbmxpbmVTdGFja1Rv
cC0+bV9wcm9maWxlZEJsb2NrLT5yYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2N1
cnJlbnRJbmRleCktPm1fY291bnRlciwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2Nr
LT5leGVjdXRpb25FbnRyeUNvdW50KCksIG1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUu
aGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSk7CisgICAgcHJpbnRmKCJTbG93
IGNhc2UgY291bnQgZm9yIGNhbGwgYXQgQCVsdSBiYyMldTogJXUvJXUuXG4iLCBtX2dyYXBoLnNp
emUoKSwgbV9jdXJyZW50SW5kZXgsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+
cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpLT5tX2NvdW50
ZXIsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+ZXhlY3V0aW9uRW50cnlDb3Vu
dCgpKTsKICNlbmRpZgogICAgICAgICAgICAgCiAgICAgaWYgKG1fZ3JhcGguaXNGdW5jdGlvbkNv
bnN0YW50KG1fY29kZUJsb2NrLCBjYWxsVGFyZ2V0KSkKICAgICAgICAgY2FsbFR5cGUgPSBDb25z
dGFudEZ1bmN0aW9uOwotICAgIGVsc2UgaWYgKCEhbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxl
ZEJsb2NrLT5nZXRDYWxsTGlua0luZm8obV9jdXJyZW50SW5kZXgpLmxhc3RTZWVuQ2FsbGVlCi0g
ICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+Y291bGRU
YWtlU2xvd0Nhc2UobV9jdXJyZW50SW5kZXgpCi0gICAgICAgICAgICAgJiYgIW1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hl
KSkKKyAgICBlbHNlIGlmICghIW1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+Z2V0
Q2FsbExpbmtJbmZvKG1fY3VycmVudEluZGV4KS5sYXN0U2VlbkNhbGxlZSAmJiAhbV9pbmxpbmVT
dGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5jb3VsZFRha2VTbG93Q2FzZShtX2N1cnJlbnRJbmRl
eCkpCiAgICAgICAgIGNhbGxUeXBlID0gTGlua2VkRnVuY3Rpb247CiAgICAgZWxzZQogICAgICAg
ICBjYWxsVHlwZSA9IFVua25vd25GdW5jdGlvbjsKQEAgLTExNzksMTAgKzExNjcsNyBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbnRyaW5zaWMoYm9vbCB1c2VzUmVzdWx0LCBpbnQgcmVz
dWx0T3BlcmFuZCwgSW50cmlucwogICAgICAgICBpZiAoIU1hY3JvQXNzZW1ibGVyOjpzdXBwb3J0
c0Zsb2F0aW5nUG9pbnRBYnMoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAg
ICBOb2RlSW5kZXggbm9kZUluZGV4ID0gYWRkVG9HcmFwaChBcml0aEFicywgT3BJbmZvKE5vZGVV
c2VCb3R0b20pLCBnZXRUb051bWJlcihyZWdpc3Rlck9mZnNldCArIGFyZ3VtZW50VG9PcGVyYW5k
KDEpKSk7Ci0gICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4
aXRTaXRlKG1fY3VycmVudEluZGV4LCBPdmVyZmxvdykpCi0gICAgICAgICAgICBtX2dyYXBoW25v
ZGVJbmRleF0ubWVyZ2VBcml0aE5vZGVGbGFncyhOb2RlTWF5T3ZlcmZsb3cpOwotICAgICAgICBz
ZXQocmVzdWx0T3BlcmFuZCwgbm9kZUluZGV4KTsKKyAgICAgICAgc2V0KHJlc3VsdE9wZXJhbmQs
IGFkZFRvR3JhcGgoQXJpdGhBYnMsIE9wSW5mbyhOb2RlVXNlQm90dG9tKSwgZ2V0VG9OdW1iZXIo
cmVnaXN0ZXJPZmZzZXQgKyBhcmd1bWVudFRvT3BlcmFuZCgxKSkpKTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCkBAIC0xNjgzLDEwICsxNjY4LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIFN0cnVjdHVyZVN0dWJJ
bmZvJiBzdHViSW5mbyA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+Z2V0U3R1
YkluZm8obV9jdXJyZW50SW5kZXgpOwogICAgICAgICAgICAgTWV0aG9kQ2FsbExpbmtJbmZvJiBt
ZXRob2RDYWxsID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5nZXRNZXRob2RD
YWxsTGlua0luZm8obV9jdXJyZW50SW5kZXgpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBp
ZiAobWV0aG9kQ2FsbC5zZWVuCi0gICAgICAgICAgICAgICAgJiYgISFtZXRob2RDYWxsLmNhY2hl
ZFN0cnVjdHVyZQotICAgICAgICAgICAgICAgICYmICFzdHViSW5mby5zZWVuCi0gICAgICAgICAg
ICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9j
dXJyZW50SW5kZXgsIEJhZENhY2hlKSkgeworICAgICAgICAgICAgaWYgKG1ldGhvZENhbGwuc2Vl
biAmJiAhIW1ldGhvZENhbGwuY2FjaGVkU3RydWN0dXJlICYmICFzdHViSW5mby5zZWVuKSB7CiAg
ICAgICAgICAgICAgICAgLy8gSXQncyBtb25vbW9ycGhpYyBhcyBmYXIgYXMgd2UgY2FuIHRlbGws
IHNpbmNlIHRoZSBtZXRob2RfY2hlY2sgd2FzIGxpbmtlZAogICAgICAgICAgICAgICAgIC8vIGJ1
dCB0aGUgc2xvdyBwYXRoIChpLmUuIHRoZSBub3JtYWwgZ2V0X2J5X2lkKSBuZXZlciBmaXJlZC4K
IApAQCAtMTcyOSwxNCArMTcxMSwxMiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZv
ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5nZXRTdHViSW5mbyhtX2N1cnJl
bnRJbmRleCk7CiAgICAgICAgICAgICAKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCi0g
ICAgICAgICAgICBwcmludGYoIlNsb3cgY2FzZSBjb3VudCBmb3IgR2V0QnlJZCBAJWx1IGJjIyV1
OiAldTsgZXhpdCBwcm9maWxlOiAlZFxuIiwgbV9ncmFwaC5zaXplKCksIG1fY3VycmVudEluZGV4
LCBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnJhcmVDYXNlUHJvZmlsZUZvckJ5
dGVjb2RlT2Zmc2V0KG1fY3VycmVudEluZGV4KS0+bV9jb3VudGVyLCBtX2lubGluZVN0YWNrVG9w
LT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpOwor
ICAgICAgICAgICAgcHJpbnRmKCJTbG93IGNhc2UgY291bnQgZm9yIEdldEJ5SWQgQCVsdSBiYyMl
dTogJXVcbiIsIG1fZ3JhcGguc2l6ZSgpLCBtX2N1cnJlbnRJbmRleCwgbV9pbmxpbmVTdGFja1Rv
cC0+bV9wcm9maWxlZEJsb2NrLT5yYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChtX2N1
cnJlbnRJbmRleCktPm1fY291bnRlcik7CiAjZW5kaWYKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgc2l6ZV90IG9mZnNldCA9IG5vdEZvdW5kOwogICAgICAgICAgICAgU3RydWN0dXJlU2V0IHN0
cnVjdHVyZVNldDsKLSAgICAgICAgICAgIGlmIChzdHViSW5mby5zZWVuCi0gICAgICAgICAgICAg
ICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xv
d0Nhc2UobV9jdXJyZW50SW5kZXgpCi0gICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSkg
eworICAgICAgICAgICAgaWYgKHN0dWJJbmZvLnNlZW4gJiYgIW1faW5saW5lU3RhY2tUb3AtPm1f
cHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UobV9jdXJyZW50SW5kZXgpKSB7CiAg
ICAgICAgICAgICAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CiAgICAgICAgICAg
ICAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGY6IHsKICAgICAgICAgICAgICAgICAgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHViSW5mby51LmdldEJ5SWRTZWxmLmJhc2VPYmplY3RT
dHJ1Y3R1cmUuZ2V0KCk7CkBAIC0xODI1LDEyICsxODA1LDEwIEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBib29sIGFscmVhZHlH
ZW5lcmF0ZWQgPSBmYWxzZTsKICAgICAgICAgICAgIAogI2lmIERGR19FTkFCTEUoREVCVUdfVkVS
Qk9TRSkKLSAgICAgICAgICAgIHByaW50ZigiU2xvdyBjYXNlIGNvdW50IGZvciBQdXRCeUlkIEAl
bHUgYmMjJXU6ICV1OyBleGl0IHByb2ZpbGU6ICVkXG4iLCBtX2dyYXBoLnNpemUoKSwgbV9jdXJy
ZW50SW5kZXgsIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+cmFyZUNhc2VQcm9m
aWxlRm9yQnl0ZWNvZGVPZmZzZXQobV9jdXJyZW50SW5kZXgpLT5tX2NvdW50ZXIsIG1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENh
Y2hlKSk7CisgICAgICAgICAgICBwcmludGYoIlNsb3cgY2FzZSBjb3VudCBmb3IgUHV0QnlJZCBA
JWx1IGJjIyV1OiAldVxuIiwgbV9ncmFwaC5zaXplKCksIG1fY3VycmVudEluZGV4LCBtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zm
c2V0KG1fY3VycmVudEluZGV4KS0+bV9jb3VudGVyKTsKICNlbmRpZiAgICAgICAgICAgIAogCi0g
ICAgICAgICAgICBpZiAoc3R1YkluZm8uc2VlbgotICAgICAgICAgICAgICAgICYmICFtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmxpa2VseVRvVGFrZVNsb3dDYXNlKG1fY3VycmVu
dEluZGV4KQotICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9m
aWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpIHsKKyAgICAgICAgICAg
IGlmIChzdHViSW5mby5zZWVuICYmICFtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2st
Pmxpa2VseVRvVGFrZVNsb3dDYXNlKG1fY3VycmVudEluZGV4KSkgewogICAgICAgICAgICAgICAg
IHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkgewogICAgICAgICAgICAgICAgIGNhc2UgYWNj
ZXNzX3B1dF9ieV9pZF9yZXBsYWNlOiB7CiAgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJl
LmdldCgpOwpAQCAtMjQ0Nyw3ICsyNDI1LDYgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNr
RW50cnk6OklubGluZVN0YWNrRW50cnkoQnl0ZUNvZGVQYXJzZXIqIGJ5dGVDb2RlUGFyc2UKICAg
ICAsIG1fY29kZUJsb2NrKGNvZGVCbG9jaykKICAgICAsIG1fcHJvZmlsZWRCbG9jayhwcm9maWxl
ZEJsb2NrKQogICAgICwgbV9jYWxsZWVWUihjYWxsZWVWUikKLSAgICAsIG1fZXhpdFByb2ZpbGUo
cHJvZmlsZWRCbG9jay0+ZXhpdFByb2ZpbGUoKSkKICAgICAsIG1fY2FsbHNpdGVCbG9ja0hlYWQo
Y2FsbHNpdGVCbG9ja0hlYWQpCiAgICAgLCBtX3JldHVyblZhbHVlKHJldHVyblZhbHVlVlIpCiAg
ICAgLCBtX2RpZFJldHVybihmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXQuY3BwCmluZGV4IDJjYTJjMTguLjNlOWU3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0LmNwcApAQCAtMjgsMjAgKzI4LDE3IEBACiAKICNpZiBFTkFCTEUoREZHX0pJ
VCkKIAotI2luY2x1ZGUgIkRGR0Fzc2VtYmx5SGVscGVycy5oIgogI2luY2x1ZGUgIkRGR1NwZWN1
bGF0aXZlSklULmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKIAotT1NSRXhp
dDo6T1NSRXhpdChFeGl0S2luZCBraW5kLCBKU1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIFZh
bHVlUHJvZmlsZSogdmFsdWVQcm9maWxlLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjaGVjaywgU3Bl
Y3VsYXRpdmVKSVQqIGppdCwgdW5zaWduZWQgcmVjb3ZlcnlJbmRleCkKK09TUkV4aXQ6Ok9TUkV4
aXQoSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBWYWx1ZVByb2ZpbGUqIHZhbHVlUHJvZmls
ZSwgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2ssIFNwZWN1bGF0aXZlSklUKiBqaXQsIHVuc2ln
bmVkIHJlY292ZXJ5SW5kZXgpCiAgICAgOiBtX2pzVmFsdWVTb3VyY2UoanNWYWx1ZVNvdXJjZSkK
ICAgICAsIG1fdmFsdWVQcm9maWxlKHZhbHVlUHJvZmlsZSkKICAgICAsIG1fY2hlY2soY2hlY2sp
CiAgICAgLCBtX25vZGVJbmRleChqaXQtPm1fY29tcGlsZUluZGV4KQogICAgICwgbV9jb2RlT3Jp
Z2luKGppdC0+bV9jb2RlT3JpZ2luRm9yT1NSKQogICAgICwgbV9yZWNvdmVyeUluZGV4KHJlY292
ZXJ5SW5kZXgpCi0gICAgLCBtX2tpbmQoa2luZCkKLSAgICAsIG1fY291bnQoMCkKICAgICAsIG1f
YXJndW1lbnRzKGppdC0+bV9hcmd1bWVudHMuc2l6ZSgpKQogICAgICwgbV92YXJpYWJsZXMoaml0
LT5tX3ZhcmlhYmxlcy5zaXplKCkpCiAgICAgLCBtX2xhc3RTZXRPcGVyYW5kKGppdC0+bV9sYXN0
U2V0T3BlcmFuZCkKQEAgLTY0LDE0ICs2MSw2IEBAIHZvaWQgT1NSRXhpdDo6ZHVtcChGSUxFKiBv
dXQpIGNvbnN0CiB9CiAjZW5kaWYKIAotYm9vbCBPU1JFeGl0Ojpjb25zaWRlckFkZGluZ0FzRnJl
cXVlbnRFeGl0U2l0ZVNsb3coQ29kZUJsb2NrKiBkZmdDb2RlQmxvY2ssIENvZGVCbG9jayogcHJv
ZmlsZWRDb2RlQmxvY2spCi17Ci0gICAgaWYgKHN0YXRpY19jYXN0PGRvdWJsZT4obV9jb3VudCkg
LyBkZmdDb2RlQmxvY2stPnNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSA8PSBIZXVyaXN0aWNzOjpv
c3JFeGl0UHJvbWluZW5jZUZvckZyZXF1ZW50RXhpdFNpdGUpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAKLSAgICByZXR1cm4gQXNzZW1ibHlIZWxwZXJzOjpiYXNlbGluZUNvZGVCbG9ja0Zv
ck9yaWdpbkFuZEJhc2VsaW5lQ29kZUJsb2NrKG1fY29kZU9yaWdpbiwgcHJvZmlsZWRDb2RlQmxv
Y2spLT5hZGRGcmVxdWVudEV4aXRTaXRlKEZyZXF1ZW50RXhpdFNpdGUobV9jb2RlT3JpZ2luLmJ5
dGVjb2RlSW5kZXgsIG1fa2luZCkpOwotfQotCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAK
ICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT1NSRXhpdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0LmgKaW5kZXggZmUwOTg3Ny4uMDE0OThmNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0LmgKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCiAj
aW5jbHVkZSAiREZHQ29tbW9uLmgiCiAjaW5jbHVkZSAiREZHQ29ycmVjdGFibGVKdW1wUG9pbnQu
aCIKLSNpbmNsdWRlICJERkdFeGl0UHJvZmlsZS5oIgogI2luY2x1ZGUgIkRGR0dQUkluZm8uaCIK
ICNpbmNsdWRlICJERkdPcGVyYW5kcy5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCkBA
IC04Miw3ICs4MSw3IEBAIHByaXZhdGU6CiAvLyBUaGlzIHN0cnVjdHVyZSBkZXNjcmliZXMgaG93
IHRvIGV4aXQgdGhlIHNwZWN1bGF0aXZlIHBhdGggYnkKIC8vIGdvaW5nIGludG8gYmFzZWxpbmUg
Y29kZS4KIHN0cnVjdCBPU1JFeGl0IHsKLSAgICBPU1JFeGl0KEV4aXRLaW5kLCBKU1ZhbHVlU291
cmNlLCBWYWx1ZVByb2ZpbGUqLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCwgU3BlY3VsYXRpdmVKSVQq
LCB1bnNpZ25lZCByZWNvdmVyeUluZGV4ID0gMCk7CisgICAgT1NSRXhpdChKU1ZhbHVlU291cmNl
LCBWYWx1ZVByb2ZpbGUqLCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCwgU3BlY3VsYXRpdmVKSVQqLCB1
bnNpZ25lZCByZWNvdmVyeUluZGV4ID0gMCk7CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIG1fY29kZTsKICAgICAKQEAgLTk1LDkgKzk0LDYgQEAgc3RydWN0IE9TUkV4aXQgewogICAg
IAogICAgIHVuc2lnbmVkIG1fcmVjb3ZlcnlJbmRleDsKICAgICAKLSAgICBFeGl0S2luZCBtX2tp
bmQ7Ci0gICAgdWludDMyX3QgbV9jb3VudDsKLSAgICAKICAgICAvLyBDb252ZW5pZW50IHdheSBv
ZiBpdGVyYXRpbmcgb3ZlciBWYWx1ZVJlY292ZXJpZXMgd2hpbGUgYmVpbmcKICAgICAvLyBnZW5l
cmljIG92ZXIgYXJndW1lbnQgdmVyc3VzIHZhcmlhYmxlLgogICAgIGludCBudW1iZXJPZlJlY292
ZXJpZXMoKSBjb25zdCB7IHJldHVybiBtX2FyZ3VtZW50cy5zaXplKCkgKyBtX3ZhcmlhYmxlcy5z
aXplKCk7IH0KQEAgLTEyNCwxMyArMTIwLDYgQEAgc3RydWN0IE9TUkV4aXQgewogICAgICAgICBy
ZXR1cm4gaW5kZXggLSBtX2FyZ3VtZW50cy5zaXplKCk7CiAgICAgfQogICAgIAotICAgIGJvb2wg
Y29uc2lkZXJBZGRpbmdBc0ZyZXF1ZW50RXhpdFNpdGUoQ29kZUJsb2NrKiBkZmdDb2RlQmxvY2ss
IENvZGVCbG9jayogcHJvZmlsZWRDb2RlQmxvY2spCi0gICAgewotICAgICAgICBpZiAoIW1fY291
bnQgfHwgIWV4aXRLaW5kSXNDb3VudGFibGUobV9raW5kKSkKLSAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgcmV0dXJuIGNvbnNpZGVyQWRkaW5nQXNGcmVxdWVudEV4aXRTaXRlU2xv
dyhkZmdDb2RlQmxvY2ssIHByb2ZpbGVkQ29kZUJsb2NrKTsKLSAgICB9Ci0gICAgCiAjaWZuZGVm
IE5ERUJVRwogICAgIHZvaWQgZHVtcChGSUxFKiBvdXQpIGNvbnN0OwogI2VuZGlmCkBAIC0xMzgs
OSArMTI3LDYgQEAgc3RydWN0IE9TUkV4aXQgewogICAgIFZlY3RvcjxWYWx1ZVJlY292ZXJ5LCAw
PiBtX2FyZ3VtZW50czsKICAgICBWZWN0b3I8VmFsdWVSZWNvdmVyeSwgMD4gbV92YXJpYWJsZXM7
CiAgICAgaW50IG1fbGFzdFNldE9wZXJhbmQ7Ci0KLXByaXZhdGU6Ci0gICAgYm9vbCBjb25zaWRl
ckFkZGluZ0FzRnJlcXVlbnRFeGl0U2l0ZVNsb3coQ29kZUJsb2NrKiBkZmdDb2RlQmxvY2ssIENv
ZGVCbG9jayogcHJvZmlsZWRDb2RlQmxvY2spOwogfTsKIAogI2lmIERGR19FTkFCTEUoVkVSQk9T
RV9TUEVDVUxBVElPTl9GQUlMVVJFKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXIuY3BwCmluZGV4IDNkYTgxODkuLmY1ZjBiY2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAKQEAgLTUzLDcg
KzUzLDcgQEAgdm9pZCBjb21waWxlT1NSRXhpdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHJl
Y292ZXJ5ID0gJmNvZGVCbG9jay0+c3BlY3VsYXRpb25SZWNvdmVyeShleGl0Lm1fcmVjb3ZlcnlJ
bmRleCAtIDEpOwogCiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQotICAgIGZwcmludGYo
c3RkZXJyLCAiR2VuZXJhdGluZyBPU1IgZXhpdCAjJXUgKGJjIyV1LCBAJXUsICVzKSBmb3IgY29k
ZSBibG9jayAlcC5cbiIsIGV4aXRJbmRleCwgZXhpdC5tX2NvZGVPcmlnaW4uYnl0ZWNvZGVJbmRl
eCwgZXhpdC5tX25vZGVJbmRleCwgZXhpdEtpbmRUb1N0cmluZyhleGl0Lm1fa2luZCksIGNvZGVC
bG9jayk7CisgICAgZnByaW50ZihzdGRlcnIsICJHZW5lcmF0aW5nIE9TUiBleGl0ICMldSBmb3Ig
Y29kZSBibG9jayAlcC5cbiIsIGV4aXRJbmRleCwgY29kZUJsb2NrKTsKICNlbmRpZgogCiAgICAg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGls
ZXIzMl82NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
cjMyXzY0LmNwcAppbmRleCBmOWZlNTZjLi42ZmZkODAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlcjMyXzY0LmNwcApAQCAtNDUxLDgg
KzQ1MSw2IEBAIHZvaWQgT1NSRXhpdENvbXBpbGVyOjpjb21waWxlRXhpdChjb25zdCBPU1JFeGl0
JiBleGl0LCBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNvCiAgICAgLy8gICAgIGNvdW50ZXIgdG8g
MDsgb3RoZXJ3aXNlIHdlIHNldCB0aGUgY291bnRlciB0bwogICAgIC8vICAgICBjb3VudGVyVmFs
dWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwKCkuCiAgICAgCi0gICAgbV9qaXQuYWRkMzIoQXNzZW1i
bHlIZWxwZXJzOjpJbW0zMigxKSwgQXNzZW1ibHlIZWxwZXJzOjpBYnNvbHV0ZUFkZHJlc3MoJmV4
aXQubV9jb3VudCkpOwotICAgIAogICAgIG1faml0Lm1vdmUoQXNzZW1ibHlIZWxwZXJzOjpUcnVz
dGVkSW1tUHRyKG1faml0LmNvZGVCbG9jaygpKSwgR1BSSW5mbzo6cmVnVDApOwogICAgIAogICAg
IG1faml0LmxvYWQzMihBc3NlbWJseUhlbHBlcnM6OkFkZHJlc3MoR1BSSW5mbzo6cmVnVDAsIENv
ZGVCbG9jazo6b2Zmc2V0T2ZTcGVjdWxhdGl2ZUZhaWxDb3VudGVyKCkpLCBHUFJJbmZvOjpyZWdU
Mik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21w
aWxlcjY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVy
NjQuY3BwCmluZGV4IDkxNTI5Y2MuLjU2ZmIxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyNjQuY3BwCkBAIC00NjEsOCArNDYxLDYgQEAg
dm9pZCBPU1JFeGl0Q29tcGlsZXI6OmNvbXBpbGVFeGl0KGNvbnN0IE9TUkV4aXQmIGV4aXQsIFNw
ZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY28KICAgICAvLyAgICAgY291bnRlciB0byAwOyBvdGhlcndp
c2Ugd2Ugc2V0IHRoZSBjb3VudGVyIHRvCiAgICAgLy8gICAgIGNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplQWZ0ZXJXYXJtVXAoKS4KICAgICAKLSAgICBtX2ppdC5hZGQzMihBc3NlbWJseUhlbHBlcnM6
OkltbTMyKDEpLCBBc3NlbWJseUhlbHBlcnM6OkFic29sdXRlQWRkcmVzcygmZXhpdC5tX2NvdW50
KSk7Ci0gICAgCiAgICAgbV9qaXQubW92ZShBc3NlbWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIo
bV9qaXQuY29kZUJsb2NrKCkpLCBHUFJJbmZvOjpyZWdUMCk7CiAgICAgCiAgICAgbV9qaXQubG9h
ZDMyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhHUFJJbmZvOjpyZWdUMCwgQ29kZUJsb2NrOjpv
ZmZzZXRPZlNwZWN1bGF0aXZlRmFpbENvdW50ZXIoKSksIEdQUkluZm86OnJlZ1QyKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvcGFnYXRvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Byb3BhZ2F0b3IuY3BwCmluZGV4IDVkYjE1Y2IuLjVj
NmE2NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJvcGFnYXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcm9wYWdhdG9yLmNwcApA
QCAtMTA3NSw3ICsxMDc1LDYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGluZGV4OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQdXRCeVZh
bDoKLSAgICAgICAgICAgIGNhc2UgUHV0QnlWYWxBbGlhczoKICAgICAgICAgICAgICAgICBpZiAo
IWJ5VmFsSXNQdXJlKG5vZGUpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9Ob2RlOwog
ICAgICAgICAgICAgICAgIGlmIChub2RlLmNoaWxkMSgpID09IGNoaWxkMSAmJiBjYW5vbmljYWxp
emUobm9kZS5jaGlsZDIoKSkgPT0gY2Fub25pY2FsaXplKGNoaWxkMikpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGI5NjVkM2MuLmQ5
ZDg0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuY3BwCkBAIC04MjQsOSArODI0LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVBl
ZXBIb2xlT2JqZWN0RXF1YWxpdHkoTm9kZSYgbm9kZSwgTm9kZUluZGV4IGJyYW5jaE4KICAgICBH
UFJSZWcgb3AyR1BSID0gb3AyLmdwcigpOwogICAgIAogICAgIGlmICghcHJlZGljdGlvbkNoZWNr
KG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKG9wMUdQUiksIG5v
ZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKHZwdHIpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5i
b3hlZENlbGwob3AxR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSKSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIodnB0cikpKTsKICAgICBpZiAoIXByZWRpY3Rpb25DaGVj
ayhtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDIoKSkubV90eXBlKSkKLSAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDJHUFIpLCBu
b2RlLmNoaWxkMigpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cih2cHRyKSkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKG9wMkdQUiksIG5vZGUuY2hpbGQyKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiksIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHZwdHIpKSk7CiAgICAgCiAgICAgYWRkQnJhbmNoKG1f
aml0LmJyYW5jaFB0cihjb25kaXRpb24sIG9wMUdQUiwgb3AyR1BSKSwgdGFrZW4pOwogICAgIGlm
IChub3RUYWtlbiAhPSAobV9ibG9jayArIDEpKQpAQCAtMTA1OSwxMjggKzEwNTksMTI4IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygpCiAgICAgICAgIFByZWRpY3Rl
ZFR5cGUgcHJlZGljdGVkVHlwZSA9IHZhcmlhYmxlQWNjZXNzRGF0YS0+cHJlZGljdGlvbigpOwog
I2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIGlmIChpc0ludDMyUHJlZGljdGlvbihwcmVkaWN0
ZWRUeXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFs
dWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpCZWxvdywg
SklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgR1BSSW5mbzo6dGFnVHlw
ZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVS
ZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgSklU
Q29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgR1BSSW5mbzo6dGFnVHlwZU51
bWJlclJlZ2lzdGVyKSk7CiAgICAgICAgIGVsc2UgaWYgKGlzQXJyYXlQcmVkaWN0aW9uKHByZWRp
Y3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAg
ICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lz
dGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRh
YmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwot
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwg
Tm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0
ZXIpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9q
aXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc0J5
dGVBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBv
cmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6
YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQu
YnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5m
bzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291
bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNy
b0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQnl0ZUFycmF5
VlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdw
cigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0J5dGVBcnJheVZQ
dHIpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNCb29sZWFuUHJlZGljdGlvbihwcmVkaWN0ZWRU
eXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAg
ICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxSZWdpc3Rlciks
IHRlbXAuZ3ByKCkpOwogICAgICAgICAgICAgbV9qaXQueG9yUHRyKFRydXN0ZWRJbW0zMihzdGF0
aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2pp
dC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBUcnVz
dGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4ofjEpKSkpOworICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihzdGF0aWNfY2Fz
dDxpbnQzMl90Pih+MSkpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNJbnQ4QXJyYXlQcmVkaWN0
aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlz
KTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iodmly
dHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdp
c3RlcikpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1
ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQ4QXJyYXlEZXNjcmlwdG9yKCkubV92
cHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05v
ZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3By
KCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOworICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmludDhBcnJheURlc2Ny
aXB0b3IoKS5tX3ZwdHIpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNJbnQxNkFycmF5UHJlZGlj
dGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhp
cyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZp
cnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0UHRy
KE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVn
aXN0ZXIpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFs
dWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50MTZBcnJheURlc2NyaXB0b3IoKS5t
X3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5v
Tm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5n
cHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50MTZBcnJheURl
c2NyaXB0b3IoKS5tX3ZwdHIpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNJbnQzMkFycmF5UHJl
ZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAo
dGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNzRm9y
KHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNr
UmVnaXN0ZXIpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpT
VmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50MzJBcnJheURlc2NyaXB0b3Io
KS5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCks
IE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVt
cC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50MzJBcnJh
eURlc2NyaXB0b3IoKS5tX3ZwdHIpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNVaW50OEFycmF5
UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRl
bXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkUHRyKEpJVENvbXBpbGVyOjphZGRyZXNz
Rm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hU
ZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdN
YXNrUmVnaXN0ZXIpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUs
IEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhBcnJheURlc2NyaXB0
b3IoKS5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdz
KCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywg
dGVtcC5ncHIoKSwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+dWludDhB
cnJheURlc2NyaXB0b3IoKS5tX3ZwdHIpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNVaW50MTZB
cnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFy
eSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxlcjo6YWRk
cmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJh
bmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BSSW5mbzo6
dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRh
YmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQxNkFycmF5RGVz
Y3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1
ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdw
cigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51
aW50MTZBcnJheURlc2NyaXB0b3IoKS5tX3ZwdHIpKSk7CiAgICAgICAgIH0gZWxzZSBpZiAoaXNV
aW50MzJBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRl
bXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZFB0cihKSVRDb21waWxl
cjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9q
aXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgdGVtcC5ncHIoKSwgR1BS
SW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVu
Y291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQzMkFy
cmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVy
OjpOb25aZXJvLCB0ZW1wLmdwcigpLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0
ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0
YSgpLT51aW50MzJBcnJheURlc2NyaXB0b3IoKS5tX3ZwdHIpKSk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoaXNGbG9hdDMyQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAg
ICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoSklU
Q29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05v
ZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3By
KCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdw
cigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5m
bG9hdDMyQXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9B
c3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3Rlcikp
OworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1f
aml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpB
ZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5n
bG9iYWxEYXRhKCktPmZsb2F0MzJBcnJheURlc2NyaXB0b3IoKS5tX3ZwdHIpKSk7CiAgICAgICAg
IH0gZWxzZSBpZiAoaXNGbG9hdDY0QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAg
ICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0Lmxv
YWRQdHIoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIo
KSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVn
cygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8s
IHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwotICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFs
RGF0YSgpLT5mbG9hdDY0QXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3RQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHRlbXAuZ3ByKCksIEdQUkluZm86OnRhZ01hc2tS
ZWdpc3RlcikpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBO
b05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0NjRBcnJheURlc2NyaXB0b3IoKS5tX3ZwdHIpKSk7
CiAgICAgICAgIH0KICNlbHNlCiAgICAgICAgIGlmIChpc0ludDMyUHJlZGljdGlvbihwcmVkaWN0
ZWRUeXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFs
dWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIFRydXN0ZWRJbW0zMihKU1Zh
bHVlOjpJbnQzMlRhZykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJl
Z3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIEpJ
VENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkludDMyVGFnKSkpOwogICAgICAgICBlbHNlIGlmIChpc0FycmF5UHJlZGljdGlvbihwcmVkaWN0
ZWRUeXBlKSkgewogICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAg
ICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0
ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpT
VmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFu
Y2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihK
U1ZhbHVlOjpDZWxsVGFnKSkpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVy
OjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xv
YmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKICAg
ICAgICAgfSBlbHNlIGlmIChpc0J5dGVBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsK
ICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQu
bG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7
Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygp
LCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5n
cHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CisgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9B
c3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2Vs
bFRhZykpKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZv
cih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5n
cHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+
anNCeXRlQXJyYXlWUHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVl
UmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1
c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQnl0ZUFycmF5VlB0cikpKTsKICAgICAg
ICAgfSBlbHNlIGlmIChpc0Jvb2xlYW5QcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKQotICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjp0
YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcp
KSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwg
bV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6dGFn
Rm9yKHZpcnR1YWxSZWdpc3RlciksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCb29sZWFuVGFnKSkp
OwogICAgICAgICBlbHNlIGlmIChpc0ludDhBcnJheVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkp
IHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9q
aXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIo
KSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVn
cygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVt
cC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CisgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
Q2VsbFRhZykpKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9h
ZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNo
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVt
cC5ncHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEo
KS0+aW50OEFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQ4QXJyYXlE
ZXNjcmlwdG9yKCkubV92cHRyKSkpOwogICAgICAgICB9IGVsc2UgaWYgKGlzSW50MTZBcnJheVBy
ZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0ZW1w
KHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3Iodmly
dHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNl
bGxUYWcpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5v
Tm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigp
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgICAgIG1faml0Lmxv
YWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigp
KTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdz
KCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+aW50MTZBcnJheURlc2NyaXB0b3IoKS5tX3ZwdHIp
KSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwg
bV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0
Lmdsb2JhbERhdGEoKS0+aW50MTZBcnJheURlc2NyaXB0b3IoKS5tX3ZwdHIpKSk7CiAgICAgICAg
IH0gZWxzZSBpZiAoaXNJbnQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAg
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2Fk
MzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5v
Tm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigp
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFn
KSkpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZp
cnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQz
MkFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3Nl
bWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5RGVzY3Jp
cHRvcigpLm1fdnB0cikpKTsKICAgICAgICAgfSBlbHNlIGlmIChpc1VpbnQ4QXJyYXlQcmVkaWN0
aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlz
KTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxS
ZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNv
dW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFn
KSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUs
IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIo
SklUQ29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0g
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBO
b05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOwor
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0
LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRy
ZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9i
YWxEYXRhKCktPnVpbnQ4QXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOwogICAgICAgICB9IGVs
c2UgaWYgKGlzVWludDE2QXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAg
ICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlzKTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihK
SVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7
CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVh
bFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVu
Y291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQxNkFy
cmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MTZBcnJheURlc2NyaXB0
b3IoKS5tX3ZwdHIpKSk7CiAgICAgICAgIH0gIGVsc2UgaWYgKGlzVWludDMyQXJyYXlQcmVkaWN0
aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAgICAgICBHUFJUZW1wb3JhcnkgdGVtcCh0aGlz
KTsKICAgICAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxS
ZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNv
dW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFn
KSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUs
IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgICAgICBtX2ppdC5sb2FkMzIo
SklUQ29tcGlsZXI6OnBheWxvYWRGb3IodmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0g
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBO
b05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC5nbG9iYWxEYXRhKCktPnVpbnQzMkFycmF5RGVzY3JpcHRvcigpLm1fdnB0cikpKTsK
KyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xv
YmFsRGF0YSgpLT51aW50MzJBcnJheURlc2NyaXB0b3IoKS5tX3ZwdHIpKSk7CiAgICAgICAgIH0g
IGVsc2UgaWYgKGlzRmxvYXQzMkFycmF5UHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewogICAg
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHRlbXAodGhpcyk7CiAgICAgICAgICAgICBtX2ppdC5sb2Fk
MzIoSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdwcigpKTsKLSAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5v
Tm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdwcigp
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIHRlbXAuZ3ByKCksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFn
KSkpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjpwYXlsb2FkRm9yKHZp
cnR1YWxSZWdpc3RlciksIHRlbXAuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hQdHIoTWFj
cm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh0ZW1wLmdwcigp
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9h
dDMyQXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHRlbXAuZ3ByKCkpLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmZsb2F0MzJBcnJheURl
c2NyaXB0b3IoKS5tX3ZwdHIpKSk7CiAgICAgICAgIH0gICBlbHNlIGlmIChpc0Zsb2F0NjRBcnJh
eVByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSB0
ZW1wKHRoaXMpOwogICAgICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBpbGVyOjp0YWdGb3Io
dmlydHVhbFJlZ2lzdGVyKSwgdGVtcC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1h
Y3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGVtcC5ncHIoKSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6
OkNlbGxUYWcpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCks
IE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCB0ZW1wLmdw
cigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgICAgIG1faml0
LmxvYWQzMihKSVRDb21waWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCB0ZW1wLmdw
cigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVS
ZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModGVtcC5ncHIoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+ZmxvYXQ2NEFycmF5RGVzY3JpcHRvcigpLm1f
dnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyh0ZW1wLmdwcigpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDY0QXJyYXlEZXNjcmlwdG9yKCkubV92cHRyKSkpOwog
ICAgICAgICB9IAogI2VuZGlmCiAgICAgfQpAQCAtMTM1NCwxMyArMTM1NCwxMyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0Q2hhckNvZGVBdChOb2RlJiBub2RlKQogICAgIAogICAg
IGlmICghaXNTdHJpbmdQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5t
X3R5cGUpKSB7CiAgICAgICAgIEFTU0VSVCghKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24o
KSAmIFByZWRpY3RTdHJpbmcpKTsKLSAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRp
b24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7CisgICAgICAgIHRlcm1pbmF0
ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7CiAgICAgICAgIG5v
UmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8v
IHVuc2lnbmVkIGNvbXBhcmlzb24gc28gd2UgY2FuIGZpbHRlciBvdXQgbmVnYXRpdmUgaW5kaWNl
cyBhbmQgaW5kaWNlcyB0aGF0IGFyZSB0b28gbGFyZ2UKLSAgICBzcGVjdWxhdGlvbkNoZWNrKFVu
Y291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNz
ZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dHJpbmdSZWcsIEpTU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgpKSkpOworICAgIHNwZWN1bGF0aW9u
Q2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6QWJvdmVPckVxdWFsLCBpbmRleFJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RyaW5n
UmVnLCBKU1N0cmluZzo6b2Zmc2V0T2ZMZW5ndGgoKSkpKTsKIAogICAgIEdQUlRlbXBvcmFyeSBz
Y3JhdGNoKHRoaXMpOwogICAgIEdQUlJlZyBzY3JhdGNoUmVnID0gc2NyYXRjaC5ncHIoKTsKQEAg
LTEzOTMsMTMgKzEzOTMsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFs
T25TdHJpbmcoTm9kZSYgbm9kZSkKIAogICAgIGlmICghaXNTdHJpbmdQcmVkaWN0aW9uKG1fc3Rh
dGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKSB7CiAgICAgICAgIEFTU0VSVCghKGF0
KG5vZGUuY2hpbGQxKCkpLnByZWRpY3Rpb24oKSAmIFByZWRpY3RTdHJpbmcpKTsKLSAgICAgICAg
dGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCks
IE5vTm9kZSk7CisgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKEpTVmFsdWVS
ZWdzKCksIE5vTm9kZSk7CiAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIHVuc2lnbmVkIGNvbXBhcmlzb24gc28gd2UgY2Fu
IGZpbHRlciBvdXQgbmVnYXRpdmUgaW5kaWNlcyBhbmQgaW5kaWNlcyB0aGF0IGFyZSB0b28gbGFy
Z2UKLSAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05v
ZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5
UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU1N0cmluZzo6b2Zmc2V0T2ZM
ZW5ndGgoKSkpKTsKKyAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwg
bV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcs
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTU3RyaW5nOjpvZmZzZXRPZkxlbmd0
aCgpKSkpOwogCiAgICAgR1BSVGVtcG9yYXJ5IHNjcmF0Y2godGhpcyk7CiAgICAgR1BSUmVnIHNj
cmF0Y2hSZWcgPSBzY3JhdGNoLmdwcigpOwpAQCAtMTQxNyw3ICsxNDE3LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdHJpbmcoTm9kZSYgbm9kZSkKICAgICBtX2pp
dC5sb2FkMTYoTWFjcm9Bc3NlbWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJl
ZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVzVHdvLCAwKSwgc2NyYXRjaFJlZyk7CiAKICAgICAvLyBX
ZSBvbmx5IHN1cHBvcnQgYXNjaWkgY2hhcmFjdGVycwotICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5j
b3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFib3ZlT3JFcXVhbCwgc2NyYXRjaFJlZywgVHJ1c3RlZEltbTMyKDB4MTAwKSkpOwor
ICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gz
MihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBzY3JhdGNoUmVnLCBUcnVzdGVkSW1tMzIo
MHgxMDApKSk7CiAKICAgICAvLyA4IGJpdCBzdHJpbmcgdmFsdWVzIGRvbid0IG5lZWQgdGhlIGlz
QVNDSUkgY2hlY2suCiAgICAgY29udDhCaXQubGluaygmbV9qaXQpOwpAQCAtMTQyNiw3ICsxNDI2
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25TdHJpbmcoTm9kZSYg
bm9kZSkKICAgICBHUFJSZWcgc21hbGxTdHJpbmdzUmVnID0gc21hbGxTdHJpbmdzLmdwcigpOwog
ICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFs
RGF0YSgpLT5zbWFsbFN0cmluZ3Muc2luZ2xlQ2hhcmFjdGVyU3RyaW5ncygpKSwgc21hbGxTdHJp
bmdzUmVnKTsKICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc21h
bGxTdHJpbmdzUmVnLCBzY3JhdGNoUmVnLCBNYWNyb0Fzc2VtYmxlcjo6U2NhbGVQdHIsIDApLCBz
Y3JhdGNoUmVnKTsKLSAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVn
cygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6WmVybywgc2Ny
YXRjaFJlZykpOworICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBt
X2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHNjcmF0Y2hSZWcpKTsKICAg
ICBjZWxsUmVzdWx0KHNjcmF0Y2hSZWcsIG1fY29tcGlsZUluZGV4KTsKIH0KIApAQCAtMTQ5NSwx
NCArMTQ5NSwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlUHV0QnlWYWxGb3JCeXRl
QXJyYXkoR1BSUmVnIGJhc2UsIEdQUlJlZyBwcm9wZXJ0eSwgTgogICAgIE5vZGVJbmRleCB2YWx1
ZUluZGV4ID0gbm9kZS5jaGlsZDMoKTsKICAgICAKICAgICBpZiAoIWlzQnl0ZUFycmF5UHJlZGlj
dGlvbihtX3N0YXRlLmZvck5vZGUoYmFzZUluZGV4KS5tX3R5cGUpKQotICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2UpLCBiYXNl
SW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2UpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2pp
dC5nbG9iYWxEYXRhKCktPmpzQnl0ZUFycmF5VlB0cikpKTsKKyAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlKSwgYmFzZUluZGV4LCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgp
LT5qc0J5dGVBcnJheVZQdHIpKSk7CiAgICAgR1BSVGVtcG9yYXJ5IHZhbHVlOwogICAgIEdQUlJl
ZyB2YWx1ZUdQUjsKIAogICAgIGlmIChhdCh2YWx1ZUluZGV4KS5pc0NvbnN0YW50KCkpIHsKICAg
ICAgICAgSlNWYWx1ZSBqc1ZhbHVlID0gdmFsdWVPZkpTQ29uc3RhbnQodmFsdWVJbmRleCk7CiAg
ICAgICAgIGlmICghanNWYWx1ZS5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICB0ZXJtaW5hdGVT
cGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsK
KyAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKEpTVmFsdWVSZWdzKCks
IE5vTm9kZSk7CiAgICAgICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTE1NjMsNyArMTU2Myw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVHZXRCeVZhbE9uQnl0ZUFycmF5KE5vZGUmIG5vZGUpCiAgICAgR1BS
UmVnIHByb3BlcnR5UmVnID0gcHJvcGVydHkuZ3ByKCk7CiAKICAgICBpZiAoIWlzQnl0ZUFycmF5
UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkgewotICAg
ICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJl
Z3MoKSwgTm9Ob2RlKTsKKyAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oSlNW
YWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTU3NCw3ICsxNTc0LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25CeXRlQXJyYXkoTm9kZSYgbm9kZSkKICAgICBtX2pp
dC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQnl0ZUFycmF5Ojpv
ZmZzZXRPZlN0b3JhZ2UoKSksIHN0b3JhZ2VSZWcpOwogICAgIAogICAgIC8vIHVuc2lnbmVkIGNv
bXBhcmlzb24gc28gd2UgY2FuIGZpbHRlciBvdXQgbmVnYXRpdmUgaW5kaWNlcyBhbmQgaW5kaWNl
cyB0aGF0IGFyZSB0b28gbGFyZ2UKLSAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBK
U1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92
ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVn
LCBCeXRlQXJyYXk6Om9mZnNldE9mU2l6ZSgpKSkpOworICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNW
YWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVP
ckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywg
Qnl0ZUFycmF5OjpvZmZzZXRPZlNpemUoKSkpKTsKIAogICAgIG1faml0LmxvYWQ4KE1hY3JvQXNz
ZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVy
OjpUaW1lc09uZSwgQnl0ZUFycmF5OjpvZmZzZXRPZkRhdGEoKSksIHN0b3JhZ2VSZWcpOwogICAg
IGludGVnZXJSZXN1bHQoc3RvcmFnZVJlZywgbV9jb21waWxlSW5kZXgpOwpAQCAtMTU4OSw3ICsx
NTg5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldFR5cGVkQXJyYXlMZW5ndGgo
Y29uc3QgVHlwZWRBcnJheURlc2NyaXB0b3ImIGRlc2MKICAgICBHUFJSZWcgcmVzdWx0R1BSID0g
cmVzdWx0LmdwcigpOwogICAgIAogICAgIGlmIChuZWVkc1NwZWN1bGF0aW9uQ2hlY2spCi0gICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
YmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fdnB0cikpKTsKKyAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlR1BSKSwgbm9kZS5jaGlsZDEo
KSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGRlc2Ny
aXB0b3IubV92cHRyKSkpOwogICAgIAogICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlR1BSLCBkZXNjcmlwdG9yLm1fbGVuZ3RoT2Zmc2V0KSwgcmVzdWx0R1BSKTsK
ICAgICAKQEAgLTE2MTEsNyArMTYxMSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVH
ZXRCeVZhbE9uSW50VHlwZWRBcnJheShjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYKIAogICAg
IGlmIChzcGVjdWxhdGlvblJlcXVpcmVtZW50cyAhPSBOb1R5cGVkQXJyYXlUeXBlU3BlY0NoZWNr
KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICB0ZXJtaW5hdGVTcGVj
dWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKKyAg
ICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
KTsKICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtMTY1MiwxNCArMTY1MiwxNCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
UHV0QnlWYWxGb3JJbnRUeXBlZEFycmF5KGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJgogICAg
IE5vZGVJbmRleCB2YWx1ZUluZGV4ID0gbm9kZS5jaGlsZDMoKTsKICAgICAKICAgICBpZiAoc3Bl
Y3VsYXRpb25SZXF1aXJlbWVudHMgIT0gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVjaykKLSAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChi
YXNlKSwgYmFzZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW1QdHIoZGVzY3JpcHRvci5tX3ZwdHIpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNW
YWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZSksIGJhc2VJbmRleCwgbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZSks
IE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGRlc2NyaXB0b3IubV92cHRyKSkpOwogICAg
IEdQUlRlbXBvcmFyeSB2YWx1ZTsKICAgICBHUFJSZWcgdmFsdWVHUFI7CiAgICAgCiAgICAgaWYg
KGF0KHZhbHVlSW5kZXgpLmlzQ29uc3RhbnQoKSkgewogICAgICAgICBKU1ZhbHVlIGpzVmFsdWUg
PSB2YWx1ZU9mSlNDb25zdGFudCh2YWx1ZUluZGV4KTsKICAgICAgICAgaWYgKCFqc1ZhbHVlLmlz
TnVtYmVyKCkpIHsKLSAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVu
Y291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUpOworICAgICAgICAgICAgdGVybWluYXRl
U3BlY3VsYXRpdmVFeGVjdXRpb24oSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKICAgICAgICAgICAg
IG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtMTczNCw3ICsxNzM0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5
VmFsT25GbG9hdFR5cGVkQXJyYXkoY29uc3QgVHlwZWRBcnJheURlc2NyaXB0b3IKICAgICAKICAg
ICBpZiAoc3BlY3VsYXRpb25SZXF1aXJlbWVudHMgIT0gTm9UeXBlZEFycmF5VHlwZVNwZWNDaGVj
aykgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgdGVybWluYXRlU3Bl
Y3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7Cisg
ICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKEpTVmFsdWVSZWdzKCksIE5vTm9k
ZSk7CiAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTE3NzUsNyArMTc3NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVQ
dXRCeVZhbEZvckZsb2F0VHlwZWRBcnJheShjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvCiAgICAg
U3BlY3VsYXRlRG91YmxlT3BlcmFuZCB2YWx1ZU9wKHRoaXMsIHZhbHVlSW5kZXgpOwogICAgIAog
ICAgIGlmIChzcGVjdWxhdGlvblJlcXVpcmVtZW50cyAhPSBOb1R5cGVkQXJyYXlUeXBlU3BlY0No
ZWNrKQotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVu
Ym94ZWRDZWxsKGJhc2UpLCBiYXNlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2UpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fdnB0cikpKTsKKyAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlKSwgYmFzZUluZGV4LCBtX2pp
dC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRk
cmVzcyhiYXNlKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX3Zw
dHIpKSk7CiAgICAgCiAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAKQEAgLTE4
MTAsNyArMTgxMCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVJbnN0YW5jZU9mRm9y
T2JqZWN0KE5vZGUmLCBHUFJSZWcgdmFsdWVSZWcsIEdQUlJlZyBwCiB7CiAgICAgLy8gQ2hlY2sg
dGhhdCBwcm90b3R5cGUgaXMgYW4gb2JqZWN0LgogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MocHJvdG90eXBlUmVnLCBKU0NlbGw6OnN0cnVjdHVyZU9mZnNldCgpKSwg
c2NyYXRjaFJlZyk7Ci0gICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncygp
LCBOb05vZGUsIG1faml0LmJyYW5jaElmTm90T2JqZWN0KHNjcmF0Y2hSZWcpKTsKKyAgICBzcGVj
dWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoSWZOb3RPYmpl
Y3Qoc2NyYXRjaFJlZykpOwogICAgIAogICAgIC8vIEluaXRpYWxpemUgc2NyYXRjaFJlZyB3aXRo
IHRoZSB2YWx1ZSBiZWluZyBjaGVja2VkLgogICAgIG1faml0Lm1vdmUodmFsdWVSZWcsIHNjcmF0
Y2hSZWcpOwpAQCAtMTk2NCw3ICsxOTY0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZVNvZnRNb2R1bG8oTm9kZSYgbm9kZSkKICAgICBTcGVjdWxhdGVJbnRlZ2VyT3BlcmFuZCBvcDIo
dGhpcywgbm9kZS5jaGlsZDIoKSk7CiAgICAgR1BSUmVnIG9wMkdwciA9IG9wMi5ncHIoKTsKIAot
ICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9q
aXQuYnJhbmNoVGVzdDMyKEpJVENvbXBpbGVyOjpaZXJvLCBvcDJHcHIpKTsKKyAgICBzcGVjdWxh
dGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdDMyKEpJVENv
bXBpbGVyOjpaZXJvLCBvcDJHcHIpKTsKIAogI2lmIENQVShYODYpIHx8IENQVShYODZfNjQpCiAg
ICAgR1BSVGVtcG9yYXJ5IGVheCh0aGlzLCBYODZSZWdpc3RlcnM6OmVheCk7CkBAIC0yMDkyLDEz
ICsyMDkyLDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE11bChOb2RlJiBu
b2RlKQogICAgICAgICAvLyB0aGUgc2VtYW50aWNzIGFyZSBhbHdheXMgYXMgaWYgdGhlIG11bHRp
cGx5IGhhZCBiZWVuIHBlcmZvcm1lZCBpbiB0aGUgZG91YmxlCiAgICAgICAgIC8vIGRvbWFpbi4K
ICAgICAgICAgICAgIAotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVl
UmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaE11bDMyKE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxv
dywgcmVnMSwgcmVnMiwgcmVzdWx0LmdwcigpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hNdWwzMihNYWNyb0Fzc2VtYmxlcjo6
T3ZlcmZsb3csIHJlZzEsIHJlZzIsIHJlc3VsdC5ncHIoKSkpOwogICAgICAgICAgICAgCiAgICAg
ICAgIC8vIENoZWNrIGZvciBuZWdhdGl2ZSB6ZXJvLCBpZiB0aGUgdXNlcnMgb2YgdGhpcyBub2Rl
IGNhcmUgYWJvdXQgc3VjaCB0aGluZ3MuCiAgICAgICAgIGlmICghbm9kZUNhbklnbm9yZU5lZ2F0
aXZlWmVybyhub2RlLmFyaXRoTm9kZUZsYWdzKCkpKSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCByZXN1bHROb25aZXJvID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1i
bGVyOjpOb25aZXJvLCByZXN1bHQuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhOZWdhdGl2ZVplcm8sIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFj
cm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCByZWcxLCBUcnVzdGVkSW1tMzIoMCkpKTsKLSAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygpLCBOb05vZGUs
IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgcmVnMiwgVHJ1c3RlZElt
bTMyKDApKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5v
Tm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCByZWcxLCBUcnVz
dGVkSW1tMzIoMCkpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3Mo
KSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIHJlZzIs
IFRydXN0ZWRJbW0zMigwKSkpOwogICAgICAgICAgICAgcmVzdWx0Tm9uWmVyby5saW5rKCZtX2pp
dCk7CiAgICAgICAgIH0KIApAQCAtMjMyMiw3ICsyMzIyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9kZSYgbm9kZSkKICAgICBQcmVk
aWN0ZWRUeXBlIGJhc2VQcmVkaWN0aW9uID0gYXQobm9kZS5jaGlsZDIoKSkucHJlZGljdGlvbigp
OwogICAgIGlmICghKGJhc2VQcmVkaWN0aW9uICYgUHJlZGljdEludDMyKSAmJiBiYXNlUHJlZGlj
dGlvbikgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgdGVybWluYXRl
U3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7
CisgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKEpTVmFsdWVSZWdzKCksIE5v
Tm9kZSk7CiAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTIzMzEsNjEgKzIzMzEsNjEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUdldEluZGV4ZWRQcm9wZXJ0eVN0b3JhZ2UoTm9kZSYgbm9kZSkKICAgICBHUFJSZWcgc3Rv
cmFnZVJlZyA9IHN0b3JhZ2UuZ3ByKCk7CiAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnByZWRp
Y3Rpb24oKSA9PSBQcmVkaWN0U3RyaW5nKSB7CiAgICAgICAgIGlmICghaXNTdHJpbmdQcmVkaWN0
aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNl
UmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZyksIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNTdHJpbmdWUHRyKSkpOworICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVn
KSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZyksIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNTdHJpbmdWUHRyKSkpOwogCiAgICAgICAg
IG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNTdHJpbmc6
Om9mZnNldE9mVmFsdWUoKSksIHN0b3JhZ2VSZWcpOwogICAgICAgICAKICAgICAgICAgLy8gU3Bl
Y3VsYXRlIHRoYXQgd2UncmUgbm90IGFjY2Vzc2luZyBhIHJvcGUKLSAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hU
ZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHN0b3JhZ2VSZWcpKTsKKyAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFRlc3QzMihNYWNy
b0Fzc2VtYmxlcjo6WmVybywgc3RvcmFnZVJlZykpOwogCiAgICAgICAgIG1faml0LmxvYWRQdHIo
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgU3RyaW5nSW1wbDo6ZGF0YU9mZnNl
dCgpKSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91
bGRTcGVjdWxhdGVCeXRlQXJyYXkoKSkgewogICAgICAgICBpZiAoIWlzQnl0ZUFycmF5UHJlZGlj
dGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFz
ZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQnl0ZUFycmF5VlB0cikpKTsKKyAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFz
ZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90
RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQnl0ZUFycmF5VlB0cikpKTsKICAg
ICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0J5
dGVBcnJheTo6b2Zmc2V0T2ZTdG9yYWdlKCkpLCBzdG9yYWdlUmVnKTsKICAgICB9IGVsc2UgaWYg
KGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUludDhBcnJheSgpKSB7CiAgICAgICAg
IGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yID0gbV9qaXQuZ2xvYmFsRGF0
YSgpLT5pbnQ4QXJyYXlEZXNjcmlwdG9yKCk7CiAgICAgICAgIGlmICghaXNJbnQ4QXJyYXlQcmVk
aWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChi
YXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZyksIE1hY3JvQXNzZW1ibGVy
OjpUcnVzdGVkSW1tUHRyKGRlc2NyaXB0b3IubV92cHRyKSkpOworICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGls
ZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZVJlZyksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGRl
c2NyaXB0b3IubV92cHRyKSkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3IubV9zdG9yYWdlT2Zmc2V0KSwgc3RvcmFnZVJl
Zyk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVJbnQx
NkFycmF5KCkpIHsKICAgICAgICAgY29uc3QgVHlwZWRBcnJheURlc2NyaXB0b3ImIGRlc2NyaXB0
b3IgPSBtX2ppdC5nbG9iYWxEYXRhKCktPmludDE2QXJyYXlEZXNjcmlwdG9yKCk7CiAgICAgICAg
IGlmICghaXNJbnQxNkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEo
KSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1
ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fdnB0cikp
KTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENl
bGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxl
cjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fdnB0cikpKTsKICAgICAgICAgbV9qaXQu
bG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBkZXNjcmlwdG9yLm1fc3Rv
cmFnZU9mZnNldCksIHN0b3JhZ2VSZWcpOwogICAgIH0gZWxzZSBpZiAoYXQobm9kZS5jaGlsZDEo
KSkuc2hvdWxkU3BlY3VsYXRlSW50MzJBcnJheSgpKSB7CiAgICAgICAgIGNvbnN0IFR5cGVkQXJy
YXlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yID0gbV9qaXQuZ2xvYmFsRGF0YSgpLT5pbnQzMkFycmF5
RGVzY3JpcHRvcigpOwogICAgICAgICBpZiAoIWlzSW50MzJBcnJheVByZWRpY3Rpb24obV9zdGF0
ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2Rl
LmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoZGVzY3JpcHRvci5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpT
VmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5i
cmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX3Zw
dHIpKSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZVJlZywgZGVzY3JpcHRvci5tX3N0b3JhZ2VPZmZzZXQpLCBzdG9yYWdlUmVnKTsKICAgICB9IGVs
c2UgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZVVpbnQ4QXJyYXkoKSkgewog
ICAgICAgICBjb25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYgZGVzY3JpcHRvciA9IG1faml0Lmds
b2JhbERhdGEoKS0+dWludDhBcnJheURlc2NyaXB0b3IoKTsKICAgICAgICAgaWYgKCFpc1VpbnQ4
QXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQot
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJv
eGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZyksIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGRlc2NyaXB0b3IubV92cHRyKSkpOworICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwg
bm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZyksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKGRlc2NyaXB0b3IubV92cHRyKSkpOwogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0b3IubV9zdG9yYWdlT2Zmc2V0KSwg
c3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVj
dWxhdGVVaW50MTZBcnJheSgpKSB7CiAgICAgICAgIGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9y
JiBkZXNjcmlwdG9yID0gbV9qaXQuZ2xvYmFsRGF0YSgpLT51aW50MTZBcnJheURlc2NyaXB0b3Io
KTsKICAgICAgICAgaWYgKCFpc1VpbnQxNkFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUo
bm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCks
IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlw
dG9yLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fdnB0cikpKTsKICAg
ICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBkZXNj
cmlwdG9yLm1fc3RvcmFnZU9mZnNldCksIHN0b3JhZ2VSZWcpOwogICAgIH0gZWxzZSBpZiAoYXQo
bm9kZS5jaGlsZDEoKSkuc2hvdWxkU3BlY3VsYXRlVWludDMyQXJyYXkoKSkgewogICAgICAgICBj
b25zdCBUeXBlZEFycmF5RGVzY3JpcHRvciYgZGVzY3JpcHRvciA9IG1faml0Lmdsb2JhbERhdGEo
KS0+dWludDMyQXJyYXlEZXNjcmlwdG9yKCk7CiAgICAgICAgIGlmICghaXNVaW50MzJBcnJheVBy
ZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIoZGVzY3JpcHRvci5tX3ZwdHIpKSk7CisgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNo
aWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
ZGVzY3JpcHRvci5tX3ZwdHIpKSk7CiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJs
ZXI6OkFkZHJlc3MoYmFzZVJlZywgZGVzY3JpcHRvci5tX3N0b3JhZ2VPZmZzZXQpLCBzdG9yYWdl
UmVnKTsKICAgICB9IGVsc2UgaWYgKGF0KG5vZGUuY2hpbGQxKCkpLnNob3VsZFNwZWN1bGF0ZUZs
b2F0MzJBcnJheSgpKSB7CiAgICAgICAgIGNvbnN0IFR5cGVkQXJyYXlEZXNjcmlwdG9yJiBkZXNj
cmlwdG9yID0gbV9qaXQuZ2xvYmFsRGF0YSgpLT5mbG9hdDMyQXJyYXlEZXNjcmlwdG9yKCk7CiAg
ICAgICAgIGlmICghaXNGbG9hdDMyQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBl
LCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9q
aXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZVJlZyksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGRlc2NyaXB0b3Iu
bV92cHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlU291cmNlOjp1
bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZyksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGRlc2NyaXB0b3IubV92cHRyKSkpOwogICAgICAg
ICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIGRlc2NyaXB0
b3IubV9zdG9yYWdlT2Zmc2V0KSwgc3RvcmFnZVJlZyk7CiAgICAgfSBlbHNlIGlmIChhdChub2Rl
LmNoaWxkMSgpKS5zaG91bGRTcGVjdWxhdGVGbG9hdDY0QXJyYXkoKSkgewogICAgICAgICBjb25z
dCBUeXBlZEFycmF5RGVzY3JpcHRvciYgZGVzY3JpcHRvciA9IG1faml0Lmdsb2JhbERhdGEoKS0+
ZmxvYXQ2NEFycmF5RGVzY3JpcHRvcigpOwogICAgICAgICBpZiAoIWlzRmxvYXQ2NEFycmF5UHJl
ZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwo
YmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6
Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cihkZXNjcmlwdG9yLm1fdnB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hp
bGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihk
ZXNjcmlwdG9yLm1fdnB0cikpKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlUmVnLCBkZXNjcmlwdG9yLm1fc3RvcmFnZU9mZnNldCksIHN0b3JhZ2VS
ZWcpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0
ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2Rl
LmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hp
bGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0ciht
X2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOwogICAgICAgICBtX2ppdC5sb2FkUHRy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIEpTQXJyYXk6OnN0b3JhZ2VPZmZzZXQo
KSksIHN0b3JhZ2VSZWcpOwogICAgIH0KICAgICBzdG9yYWdlUmVzdWx0KHN0b3JhZ2VSZWcsIG1f
Y29tcGlsZUluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaAppbmRleCBmZmVmZjAxLi4xZDUxMDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0yMDI5LDM3ICsyMDI5LDM3IEBAIHByaXZh
dGU6CiAjZW5kaWYKIAogICAgIC8vIEFkZCBhIHNwZWN1bGF0aW9uIGNoZWNrIHdpdGhvdXQgYWRk
aXRpb25hbCByZWNvdmVyeS4KLSAgICB2b2lkIHNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQga2lu
ZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBOb2RlSW5kZXggbm9kZUluZGV4LCBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9GYWlsKQorICAgIHZvaWQgc3BlY3VsYXRpb25DaGVjayhK
U1ZhbHVlU291cmNlIGpzVmFsdWVTb3VyY2UsIE5vZGVJbmRleCBub2RlSW5kZXgsIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIGp1bXBUb0ZhaWwpCiAgICAgewogICAgICAgICBpZiAoIW1fY29tcGlsZU9r
YXkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG1faml0LmNvZGVCbG9jaygpLT5hcHBl
bmRPU1JFeGl0KE9TUkV4aXQoa2luZCwganNWYWx1ZVNvdXJjZSwgbV9qaXQudmFsdWVQcm9maWxl
Rm9yKG5vZGVJbmRleCksIGp1bXBUb0ZhaWwsIHRoaXMpKTsKKyAgICAgICAgbV9qaXQuY29kZUJs
b2NrKCktPmFwcGVuZE9TUkV4aXQoT1NSRXhpdChqc1ZhbHVlU291cmNlLCBtX2ppdC52YWx1ZVBy
b2ZpbGVGb3Iobm9kZUluZGV4KSwganVtcFRvRmFpbCwgdGhpcykpOwogICAgIH0KICAgICAvLyBB
ZGQgYSBzZXQgb2Ygc3BlY3VsYXRpb24gY2hlY2tzIHdpdGhvdXQgYWRkaXRpb25hbCByZWNvdmVy
eS4KLSAgICB2b2lkIHNwZWN1bGF0aW9uQ2hlY2soRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJj
ZSBqc1ZhbHVlU291cmNlLCBOb2RlSW5kZXggbm9kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SnVt
cExpc3QmIGp1bXBzVG9GYWlsKQorICAgIHZvaWQgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlU291
cmNlIGpzVmFsdWVTb3VyY2UsIE5vZGVJbmRleCBub2RlSW5kZXgsIE1hY3JvQXNzZW1ibGVyOjpK
dW1wTGlzdCYganVtcHNUb0ZhaWwpCiAgICAgewogICAgICAgICBWZWN0b3I8TWFjcm9Bc3NlbWJs
ZXI6Okp1bXAsIDE2PiBKdW1wVmVjdG9yID0ganVtcHNUb0ZhaWwuanVtcHMoKTsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IEp1bXBWZWN0b3Iuc2l6ZSgpOyArK2kpCi0gICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKGtpbmQsIGpzVmFsdWVTb3VyY2UsIG5vZGVJbmRleCwgSnVt
cFZlY3RvcltpXSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKGpzVmFsdWVTb3VyY2Us
IG5vZGVJbmRleCwgSnVtcFZlY3RvcltpXSk7CiAgICAgfQogICAgIC8vIEFkZCBhIHNwZWN1bGF0
aW9uIGNoZWNrIHdpdGggYWRkaXRpb25hbCByZWNvdmVyeS4KLSAgICB2b2lkIHNwZWN1bGF0aW9u
Q2hlY2soRXhpdEtpbmQga2luZCwgSlNWYWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBOb2RlSW5k
ZXggbm9kZUluZGV4LCBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBqdW1wVG9GYWlsLCBjb25zdCBTcGVj
dWxhdGlvblJlY292ZXJ5JiByZWNvdmVyeSkKKyAgICB2b2lkIHNwZWN1bGF0aW9uQ2hlY2soSlNW
YWx1ZVNvdXJjZSBqc1ZhbHVlU291cmNlLCBOb2RlSW5kZXggbm9kZUluZGV4LCBNYWNyb0Fzc2Vt
Ymxlcjo6SnVtcCBqdW1wVG9GYWlsLCBjb25zdCBTcGVjdWxhdGlvblJlY292ZXJ5JiByZWNvdmVy
eSkKICAgICB7CiAgICAgICAgIGlmICghbV9jb21waWxlT2theSkKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgbV9qaXQuY29kZUJsb2NrKCktPmFwcGVuZFNwZWN1bGF0aW9uUmVjb3Zlcnko
cmVjb3ZlcnkpOwotICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kT1NSRXhpdChPU1JF
eGl0KGtpbmQsIGpzVmFsdWVTb3VyY2UsIG1faml0LnZhbHVlUHJvZmlsZUZvcihub2RlSW5kZXgp
LCBqdW1wVG9GYWlsLCB0aGlzLCBtX2ppdC5jb2RlQmxvY2soKS0+bnVtYmVyT2ZTcGVjdWxhdGlv
blJlY292ZXJpZXMoKSkpOworICAgICAgICBtX2ppdC5jb2RlQmxvY2soKS0+YXBwZW5kT1NSRXhp
dChPU1JFeGl0KGpzVmFsdWVTb3VyY2UsIG1faml0LnZhbHVlUHJvZmlsZUZvcihub2RlSW5kZXgp
LCBqdW1wVG9GYWlsLCB0aGlzLCBtX2ppdC5jb2RlQmxvY2soKS0+bnVtYmVyT2ZTcGVjdWxhdGlv
blJlY292ZXJpZXMoKSkpOwogICAgIH0KIAogICAgIC8vIENhbGxlZCB3aGVuIHdlIHN0YXRpY2Fs
bHkgZGV0ZXJtaW5lIHRoYXQgYSBzcGVjdWxhdGlvbiB3aWxsIGZhaWwuCi0gICAgdm9pZCB0ZXJt
aW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihFeGl0S2luZCBraW5kLCBKU1ZhbHVlUmVncyBqc1Zh
bHVlUmVncywgTm9kZUluZGV4IG5vZGVJbmRleCkKKyAgICB2b2lkIHRlcm1pbmF0ZVNwZWN1bGF0
aXZlRXhlY3V0aW9uKEpTVmFsdWVSZWdzIGpzVmFsdWVSZWdzLCBOb2RlSW5kZXggbm9kZUluZGV4
KQogICAgIHsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCiAgICAgICAgIGZwcmludGYo
c3RkZXJyLCAiU3BlY3VsYXRpdmVKSVQgd2FzIHRlcm1pbmF0ZWQuXG4iKTsKICNlbmRpZgogICAg
ICAgICBpZiAoIW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soa2luZCwganNWYWx1ZVJlZ3MsIG5vZGVJbmRleCwgbV9qaXQuanVtcCgp
KTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhqc1ZhbHVlUmVncywgbm9kZUluZGV4LCBtX2pp
dC5qdW1wKCkpOwogICAgICAgICBtX2NvbXBpbGVPa2F5ID0gZmFsc2U7CiAgICAgfQogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMy
XzY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82
NC5jcHAKaW5kZXggZjRmNDI2Ni4uNjNlZGY3NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0xMzQxLDcgKzEzNDEs
NyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnRJbnRlcm5hbChOb2Rl
SW5kZXggbm9kZUluZGV4LCBEYXRhRm9ybWF0JgogICAgICAgICAgICAgICAgIHJldHVybkZvcm1h
dCA9IERhdGFGb3JtYXRJbnRlZ2VyOwogICAgICAgICAgICAgICAgIHJldHVybiBncHI7CiAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNv
dW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKKyAgICAgICAgICAgIHRlcm1pbmF0ZVNw
ZWN1bGF0aXZlRXhlY3V0aW9uKEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7CiAgICAgICAgICAgICBy
ZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50ZWdlcjsKICAgICAgICAgICAgIHJldHVybiBhbGxv
Y2F0ZSgpOwogICAgICAgICB9CkBAIC0xMzUzLDcgKzEzNTMsNyBAQCBHUFJSZWcgU3BlY3VsYXRp
dmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnRJbnRlcm5hbChOb2RlSW5kZXggbm9kZUluZGV4LCBEYXRh
Rm9ybWF0JgogCiAgICAgICAgIC8vIElmIHdlIGtub3cgdGhpcyB3YXMgc3BpbGxlZCBhcyBhbiBp
bnRlZ2VyIHdlIGNhbiBmaWxsIHdpdGhvdXQgY2hlY2tpbmcuCiAgICAgICAgIGlmIChzcGlsbEZv
cm1hdCAhPSBEYXRhRm9ybWF0SlNJbnRlZ2VyKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZpcnR1YWxS
ZWdpc3RlcikpLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RF
cXVhbCwgSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6SW50MzJUYWcpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFs
dWVTb3VyY2UoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSksIG5vZGVJ
bmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxl
cjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRh
ZykpKTsKIAogICAgICAgICBtX2ppdC5sb2FkMzIoSklUQ29tcGlsZXI6OnBheWxvYWRGb3Iodmly
dHVhbFJlZ2lzdGVyKSwgZ3ByKTsKICAgICAgICAgaW5mby5maWxsSW50ZWdlcihncHIpOwpAQCAt
MTM2OSw3ICsxMzY5LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50
SW50ZXJuYWwoTm9kZUluZGV4IG5vZGVJbmRleCwgRGF0YUZvcm1hdCYKICAgICAgICAgbV9ncHJz
LmxvY2sodGFnR1BSKTsKICAgICAgICAgbV9ncHJzLmxvY2socGF5bG9hZEdQUik7CiAgICAgICAg
IGlmIChpbmZvLnJlZ2lzdGVyRm9ybWF0KCkgIT0gRGF0YUZvcm1hdEpTSW50ZWdlcikgCi0gICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5
bG9hZEdQUiksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVx
dWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpJbnQzMlRhZykpKTsKKyAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgbm9k
ZUluZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRhZ0dQUiwg
VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkludDMyVGFnKSkpOwogICAgICAgICBtX2dwcnMudW5sb2Nr
KHRhZ0dQUik7CiAgICAgICAgIG1fZ3Bycy5yZWxlYXNlKHRhZ0dQUik7CiAgICAgICAgIG1fZ3By
cy5yZWxlYXNlKHBheWxvYWRHUFIpOwpAQCAtMTM5Myw3ICsxMzkzLDcgQEAgR1BSUmVnIFNwZWN1
bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50SW50ZXJuYWwoTm9kZUluZGV4IG5vZGVJbmRleCwg
RGF0YUZvcm1hdCYKICAgICBjYXNlIERhdGFGb3JtYXRKU0RvdWJsZToKICAgICBjYXNlIERhdGFG
b3JtYXRKU0NlbGw6CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNCb29sZWFuOiB7Ci0gICAgICAgIHRl
cm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBO
b05vZGUpOworICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihKU1ZhbHVlUmVn
cygpLCBOb05vZGUpOwogICAgICAgICByZXR1cm5Gb3JtYXQgPSBEYXRhRm9ybWF0SW50ZWdlcjsK
ICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAgfQpAQCAtMTQ0NCw3ICsxNDQ0LDcgQEAg
RlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91YmxlKE5vZGVJbmRleCBub2Rl
SW5kZXgpCiAgICAgICAgICAgICAgICAgaW5mby5maWxsRG91YmxlKGZwcik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZwcjsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
dGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCks
IE5vTm9kZSk7CisgICAgICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24o
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZnByQWxsb2Nh
dGUoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKQEAgLTE0NjAsNyArMTQ2MCw3
IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZShOb2RlSW5kZXgg
bm9kZUluZGV4KQogCiAgICAgICAgICAgICBGUFJSZWcgZnByID0gZnByQWxsb2NhdGUoKTsKICAg
ICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50ZWdlciA9IG1faml0LmJyYW5jaDMyKE1h
Y3JvQXNzZW1ibGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIp
LCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6SW50MzJUYWcpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZShKSVRDb21waWxlcjo6YWRkcmVzc0Zvcih2
aXJ0dWFsUmVnaXN0ZXIpKSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6QWJvdmVPckVxdWFsLCBKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIFRy
dXN0ZWRJbW0zMihKU1ZhbHVlOjpMb3dlc3RUYWcpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEpTVmFsdWVTb3VyY2UoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lz
dGVyKSksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JF
cXVhbCwgSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBUcnVzdGVkSW1tMzIo
SlNWYWx1ZTo6TG93ZXN0VGFnKSkpOwogICAgICAgICAgICAgbV9qaXQubG9hZERvdWJsZShKSVRD
b21waWxlcjo6YWRkcmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBmcHIpOwogICAgICAgICAgICAg
SklUQ29tcGlsZXI6Okp1bXAgaGFzVW5ib3hlZERvdWJsZSA9IG1faml0Lmp1bXAoKTsKIApAQCAt
MTQ4Miw3ICsxNDgyLDcgQEAgRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlRG91
YmxlKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
CiAgICAgY2FzZSBEYXRhRm9ybWF0Q2VsbDoKLSAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVF
eGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7CisgICAgICAgIHRl
cm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7CiAgICAg
ICAgIHJldHVybiBmcHJBbGxvY2F0ZSgpOwogCiAgICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgpA
QCAtMTUwMSw3ICsxNTAxLDcgQEAgRlBSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRl
RG91YmxlKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgICAgIGlmIChpbmZvLnJlZ2lzdGVyRm9y
bWF0KCkgIT0gRGF0YUZvcm1hdEpTSW50ZWdlcikgewogICAgICAgICAgICAgRlBSVGVtcG9yYXJ5
IHNjcmF0Y2godGhpcyk7CiAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBpc0ludGVnZXIg
PSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHRhZ0dQUiwgVHJ1c3RlZElt
bTMyKEpTVmFsdWU6OkludDMyVGFnKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZFR5cGUsIEpTVmFsdWVSZWdzKHRhZ0dQUiwgcGF5bG9hZEdQUiksIG5vZGVJbmRleCwgbV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgdGFnR1BSLCBUcnVzdGVkSW1t
MzIoSlNWYWx1ZTo6TG93ZXN0VGFnKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhK
U1ZhbHVlUmVncyh0YWdHUFIsIHBheWxvYWRHUFIpLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaDMy
KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFs
dWU6Okxvd2VzdFRhZykpKTsKICAgICAgICAgICAgIHVuYm94RG91YmxlKHRhZ0dQUiwgcGF5bG9h
ZEdQUiwgZnByLCBzY3JhdGNoLmZwcigpKTsKICAgICAgICAgICAgIGhhc1VuYm94ZWREb3VibGUg
PSBtX2ppdC5qdW1wKCk7CiAgICAgICAgICAgICBpc0ludGVnZXIubGluaygmbV9qaXQpOwpAQCAt
MTU2NCwxMiArMTU2NCwxMiBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVD
ZWxsKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgICAgICAgICAgICAgaW5mby5maWxsQ2VsbChn
cHIpOwogICAgICAgICAgICAgICAgIHJldHVybiBncHI7CiAgICAgICAgICAgICB9Ci0gICAgICAg
ICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJl
Z3MoKSwgTm9Ob2RlKTsKKyAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9u
KEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7CiAgICAgICAgICAgICByZXR1cm4gZ3ByOwogICAgICAg
ICB9CiAgICAgICAgIEFTU0VSVChpbmZvLnNwaWxsRm9ybWF0KCkgJiBEYXRhRm9ybWF0SlMpOwog
ICAgICAgICBpZiAoaW5mby5zcGlsbEZvcm1hdCgpICE9IERhdGFGb3JtYXRKU0NlbGwpCi0gICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2UoSklUQ29tcGls
ZXI6OmFkZHJlc3NGb3IodmlydHVhbFJlZ2lzdGVyKSksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxS
ZWdpc3RlciksIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpDZWxsVGFnKSkpOworICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlU291cmNlKEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKHZp
cnR1YWxSZWdpc3RlcikpLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OnRhZ0Zvcih2aXJ0dWFsUmVnaXN0ZXIpLCBUcnVzdGVk
SW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKICAgICAgICAgbV9qaXQubG9hZDMyKEpJVENvbXBp
bGVyOjpwYXlsb2FkRm9yKHZpcnR1YWxSZWdpc3RlciksIGdwcik7CiAgICAgICAgIG1fZ3Bycy5y
ZXRhaW4oZ3ByLCB2aXJ0dWFsUmVnaXN0ZXIsIFNwaWxsT3JkZXJTcGlsbGVkKTsKICAgICAgICAg
aW5mby5maWxsQ2VsbChncHIpOwpAQCAtMTU4OSw3ICsxNTg5LDcgQEAgR1BSUmVnIFNwZWN1bGF0
aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbChOb2RlSW5kZXggbm9kZUluZGV4KQogICAgICAgICBt
X2dwcnMubG9jayh0YWdHUFIpOwogICAgICAgICBtX2dwcnMubG9jayhwYXlsb2FkR1BSKTsKICAg
ICAgICAgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSAhPSBEYXRhRm9ybWF0SlNDZWxsKQotICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh0YWdHUFIsIHBheWxv
YWRHUFIpLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgdGFnR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpKTsKKyAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3ModGFnR1BSLCBwYXlsb2FkR1BSKSwgbm9kZUlu
ZGV4LCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHRhZ0dQUiwgVHJ1
c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpKSk7CiAgICAgICAgIG1fZ3Bycy51bmxvY2sodGFn
R1BSKTsKICAgICAgICAgbV9ncHJzLnJlbGVhc2UodGFnR1BSKTsKICAgICAgICAgbV9ncHJzLnJl
bGVhc2UocGF5bG9hZEdQUik7CkBAIC0xNjA0LDcgKzE2MDQsNyBAQCBHUFJSZWcgU3BlY3VsYXRp
dmVKSVQ6OmZpbGxTcGVjdWxhdGVDZWxsKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgY2FzZSBE
YXRhRm9ybWF0RG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKICAgICBjYXNl
IERhdGFGb3JtYXRCb29sZWFuOiB7Ci0gICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0
aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUpOworICAgICAgICB0ZXJtaW5h
dGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihKU1ZhbHVlUmVncygpLCBOb05vZGUpOwogICAgICAgICBy
ZXR1cm4gYWxsb2NhdGUoKTsKICAgICB9CiAKQEAgLTE2MzcsMTQgKzE2MzcsMTQgQEAgR1BSUmVn
IFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbGVhbihOb2RlSW5kZXggbm9kZUluZGV4
KQogICAgICAgICAgICAgICAgIGluZm8uZmlsbEJvb2xlYW4oZ3ByKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gZ3ByOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgdGVybWluYXRlU3BlY3Vs
YXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7CisgICAg
ICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihKU1ZhbHVlUmVncygpLCBOb05v
ZGUpOwogICAgICAgICAgICAgcmV0dXJuIGdwcjsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQo
aW5mby5zcGlsbEZvcm1hdCgpICYgRGF0YUZvcm1hdEpTKTsKICAgICAgICAgbV9ncHJzLnJldGFp
bihncHIsIHZpcnR1YWxSZWdpc3RlciwgU3BpbGxPcmRlclNwaWxsZWQpOwogCiAgICAgICAgIGlm
IChpbmZvLnNwaWxsRm9ybWF0KCkgIT0gRGF0YUZvcm1hdEpTQm9vbGVhbikKLSAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZShKSVRDb21waWxlcjo6YWRk
cmVzc0Zvcih2aXJ0dWFsUmVnaXN0ZXIpKSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIEpJVENvbXBpbGVyOjp0YWdGb3IodmlydHVhbFJlZ2lzdGVy
KSwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkJvb2xlYW5UYWcpKSk7CisgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEpTVmFsdWVTb3VyY2UoSklUQ29tcGlsZXI6OmFkZHJlc3NGb3IodmlydHVh
bFJlZ2lzdGVyKSksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCBKSVRDb21waWxlcjo6dGFnRm9yKHZpcnR1YWxSZWdpc3RlciksIFRydXN0ZWRJbW0z
MihKU1ZhbHVlOjpCb29sZWFuVGFnKSkpOwogCiAgICAgICAgIG1faml0LmxvYWQzMihKSVRDb21w
aWxlcjo6cGF5bG9hZEZvcih2aXJ0dWFsUmVnaXN0ZXIpLCBncHIpOwogICAgICAgICBpbmZvLmZp
bGxCb29sZWFuKGdwcik7CkBAIC0xNjY0LDcgKzE2NjQsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVK
SVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgICAgIG1f
Z3Bycy5sb2NrKHRhZ0dQUik7CiAgICAgICAgIG1fZ3Bycy5sb2NrKHBheWxvYWRHUFIpOwogICAg
ICAgICBpZiAoaW5mby5yZWdpc3RlckZvcm1hdCgpICE9IERhdGFGb3JtYXRKU0Jvb2xlYW4pCi0g
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHRhZ0dQUiwg
cGF5bG9hZEdQUiksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5v
dEVxdWFsLCB0YWdHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpCb29sZWFuVGFnKSkpOworICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncyh0YWdHUFIsIHBheWxvYWRHUFIp
LCBub2RlSW5kZXgsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgdGFn
R1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Qm9vbGVhblRhZykpKTsKIAogICAgICAgICBtX2dw
cnMudW5sb2NrKHRhZ0dQUik7CiAgICAgICAgIG1fZ3Bycy5yZWxlYXNlKHRhZ0dQUik7CkBAIC0x
NjgwLDcgKzE2ODAsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVCb29s
ZWFuKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgY2FzZSBEYXRhRm9ybWF0RG91YmxlOgogICAg
IGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKICAgICBjYXNlIERhdGFGb3JtYXRDZWxsOiB7Ci0gICAg
ICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVn
cygpLCBOb05vZGUpOworICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihKU1Zh
bHVlUmVncygpLCBOb05vZGUpOwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICB9CiAg
ICAgICAgIApAQCAtMTcyMSw5ICsxNzIxLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZU9iamVjdEVxdWFsaXR5KE5vZGUmIG5vZGUsIHZvaWQqIHZwdHIsIFByZWRpY3Rpb25DaGUKICAg
ICBHUFJSZWcgcmVzdWx0UGF5bG9hZEdQUiA9IHJlc3VsdFBheWxvYWQuZ3ByKCk7CiAgICAgCiAg
ICAgaWYgKCFwcmVkaWN0aW9uQ2hlY2sobV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1f
dHlwZSkpCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6
dW5ib3hlZENlbGwob3AxR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIodnB0cikpKTsKKyAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChvcDFHUFIpLCBub2RlLmNoaWxkMSgpLCBt
X2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhvcDFHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOwog
ICAgIGlmICghcHJlZGljdGlvbkNoZWNrKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMigpKS5t
X3R5cGUpKQotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6
OnVuYm94ZWRDZWxsKG9wMkdQUiksIG5vZGUuY2hpbGQyKCksIG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMkdQUiksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHZwdHIpKSk7CisgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwob3AyR1BSKSwgbm9kZS5jaGlsZDIoKSwg
bV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Mob3AyR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIodnB0cikpKTsK
ICAgICAKICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBmYWxzZUNhc2UgPSBtX2ppdC5icmFuY2hQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBvcDFHUFIsIG9wMkdQUik7CiAgICAgbV9qaXQu
bW92ZShJbW0zMigxKSwgcmVzdWx0UGF5bG9hZEdQUik7CkBAIC0xNzkzLDcgKzE3OTMsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QoTm9kZUlu
ZGV4IG5vZGVJbmRleCwgdm9pZCogdgogICAgIAogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5v
dENlbGwgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHZhbHVlVGFn
R1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6Q2VsbFRhZykpOwogICAgIGlmIChuZWVkU3BlY3Vs
YXRpb25DaGVjaykKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVn
cyh2YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1
ZVBheWxvYWRHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOworICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxv
YWRHUFIpLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1
YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHZhbHVlUGF5bG9hZEdQUiksIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKHZwdHIpKSk7CiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIo
MCksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGRvbmUgPSBt
X2ppdC5qdW1wKCk7CiAgICAgCkBAIC0xODAzLDcgKzE4MDMsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QoTm9kZUluZGV4IG5vZGVJbmRleCwg
dm9pZCogdgogICAgIGlmIChuZWVkU3BlY3VsYXRpb25DaGVjaykgewogICAgICAgICBtX2ppdC5t
b3ZlKHZhbHVlVGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSKTsKICAgICAgICAgbV9qaXQub3IzMihU
cnVzdGVkSW1tMzIoMSksIHJlc3VsdFBheWxvYWRHUFIpOwotICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHZhbHVlVGFnR1BSLCB2YWx1ZVBheWxvYWRHUFIpLCBu
b2RlSW5kZXgsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgcmVzdWx0
UGF5bG9hZEdQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6Ok51bGxUYWcpKSk7CisgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiks
IG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCByZXN1
bHRQYXlsb2FkR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6TnVsbFRhZykpKTsKICAgICB9CiAg
ICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoMSksIHJlc3VsdFBheWxvYWRHUFIpOwogICAgIApA
QCAtMTg4MSw3ICsxODgxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3Ro
ZXJCcmFuY2goTm9kZUluZGV4IG5vZGVJbmRleCwgQmxvY2tJbmRleCB0YWsKICAgICAKICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBub3RDZWxsID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCB2YWx1ZVRhZ0dQUiwgVHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcp
KTsKICAgICBpZiAobmVlZFNwZWN1bGF0aW9uQ2hlY2spCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3ModmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIG5v
ZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3ModmFsdWVQYXlsb2FkR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIodnB0cikpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncyh2
YWx1ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZVBh
eWxvYWRHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOwogICAgIGFk
ZEJyYW5jaChtX2ppdC5qdW1wKCksIHRha2VuKTsKICAgICAKICAgICBub3RDZWxsLmxpbmsoJm1f
aml0KTsKQEAgLTE4OTAsNyArMTg5MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmpl
Y3RPck90aGVyQnJhbmNoKE5vZGVJbmRleCBub2RlSW5kZXgsIEJsb2NrSW5kZXggdGFrCiAgICAg
aWYgKG5lZWRTcGVjdWxhdGlvbkNoZWNrKSB7CiAgICAgICAgIG1faml0Lm1vdmUodmFsdWVUYWdH
UFIsIHNjcmF0Y2hHUFIpOwogICAgICAgICBtX2ppdC5vcjMyKFRydXN0ZWRJbW0zMigxKSwgc2Ny
YXRjaEdQUik7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3Mo
dmFsdWVUYWdHUFIsIHZhbHVlUGF5bG9hZEdQUiksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBzY3JhdGNoR1BSLCBUcnVzdGVkSW1tMzIoSlNWYWx1
ZTo6TnVsbFRhZykpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncyh2YWx1
ZVRhZ0dQUiwgdmFsdWVQYXlsb2FkR1BSKSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2gzMihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHNjcmF0Y2hHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpO
dWxsVGFnKSkpOwogICAgIH0KIAogICAgIGlmIChub3RUYWtlbiAhPSAobV9ibG9jayArIDEpKQpA
QCAtMTk5OCw3ICsxOTk4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBu
b2RlKQogCiAgICAgICAgIC8vIElmIHdlIGhhdmUgbm8gcHJlZGljdGlvbiBmb3IgdGhpcyBsb2Nh
bCwgdGhlbiBkb24ndCBhdHRlbXB0IHRvIGNvbXBpbGUuCiAgICAgICAgIGlmIChwcmVkaWN0aW9u
ID09IFByZWRpY3ROb25lKSB7Ci0gICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1
dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKKyAgICAgICAgICAgIHRl
cm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAKQEAgLTIwODAsMTQgKzIwODAsMTQg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAg
U3BlY3VsYXRlQ2VsbE9wZXJhbmQgY2VsbCh0aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAg
ICAgIEdQUlJlZyBjZWxsR1BSID0gY2VsbC5ncHIoKTsKICAgICAgICAgICAgIGlmICghaXNBcnJh
eVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAg
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJv
eGVkQ2VsbChjZWxsR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbEdQUiksIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIp
KSk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlU291cmNlOjp1bmJv
eGVkQ2VsbChjZWxsR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbEdQUiksIE1hY3Jv
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIp
KSk7CiAgICAgICAgICAgICBtX2ppdC5zdG9yZVB0cihjZWxsR1BSLCBKSVRDb21waWxlcjo6cGF5
bG9hZEZvcihub2RlLmxvY2FsKCkpKTsKICAgICAgICAgICAgIG5vUmVzdWx0KG1fY29tcGlsZUlu
ZGV4KTsKICAgICAgICAgfSBlbHNlIGlmIChpc0J5dGVBcnJheVByZWRpY3Rpb24ocHJlZGljdGVk
VHlwZSkpIHsKICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywgbm9k
ZS5jaGlsZDEoKSk7CiAgICAgICAgICAgICBHUFJSZWcgY2VsbEdQUiA9IGNlbGwuZ3ByKCk7CiAg
ICAgICAgICAgICBpZiAoIWlzQnl0ZUFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9k
ZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGNlbGxHUFIpLCBub2RlLmNoaWxkMSgp
LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhjZWxsR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQu
Z2xvYmFsRGF0YSgpLT5qc0J5dGVBcnJheVZQdHIpKSk7CisgICAgICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsR1BSKSwgbm9kZS5jaGls
ZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoY2VsbEdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1f
aml0Lmdsb2JhbERhdGEoKS0+anNCeXRlQXJyYXlWUHRyKSkpOwogICAgICAgICAgICAgbV9qaXQu
c3RvcmVQdHIoY2VsbEdQUiwgSklUQ29tcGlsZXI6OnBheWxvYWRGb3Iobm9kZS5sb2NhbCgpKSk7
CiAgICAgICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoaXNCb29sZWFuUHJlZGljdGlvbihwcmVkaWN0ZWRUeXBlKSkgewpAQCAtMjE5Myw3ICsyMTkz
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBH
UFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSk7CiAKICAgICAgICAgLy8gVGVzdCB0aGUgb3Bl
cmFuZCBpcyBwb3NpdGl2ZS4KLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNW
YWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6TGVzc1Ro
YW4sIG9wMS5ncHIoKSwgVHJ1c3RlZEltbTMyKDApKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
TGVzc1RoYW4sIG9wMS5ncHIoKSwgVHJ1c3RlZEltbTMyKDApKSk7CiAKICAgICAgICAgbV9qaXQu
bW92ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIGludGVnZXJSZXN1bHQocmVz
dWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCwgb3AxLmZvcm1hdCgpKTsKQEAgLTIyNDEsNyArMjI0
MSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAg
ICAgICAgICAgICAgbV9qaXQubW92ZShvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIG1faml0LmFkZDMyKEltbTMyKGltbTEpLCByZXN1bHQuZ3ByKCkpOwogICAg
ICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaEFkZDMyKE1hY3Jv
QXNzZW1ibGVyOjpPdmVyZmxvdywgb3AyLmdwcigpLCBJbW0zMihpbW0xKSwgcmVzdWx0Lmdwcigp
KSk7CisgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwg
Tm9Ob2RlLCBtX2ppdC5icmFuY2hBZGQzMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMi5n
cHIoKSwgSW1tMzIoaW1tMSksIHJlc3VsdC5ncHIoKSkpOwogCiAgICAgICAgICAgICAgICAgaW50
ZWdlclJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGlsZUluZGV4KTsKICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTIyNTYsNyArMjI1Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCks
IHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIG1faml0LmFkZDMyKEltbTMyKGlt
bTIpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBOb05vZGUs
IG1faml0LmJyYW5jaEFkZDMyKE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgb3AxLmdwcigpLCBJ
bW0zMihpbW0yKSwgcmVzdWx0LmdwcigpKSk7CisgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hBZGQzMihNYWNyb0Fz
c2VtYmxlcjo6T3ZlcmZsb3csIG9wMS5ncHIoKSwgSW1tMzIoaW1tMiksIHJlc3VsdC5ncHIoKSkp
OwogCiAgICAgICAgICAgICAgICAgaW50ZWdlclJlc3VsdChyZXN1bHQuZ3ByKCksIG1fY29tcGls
ZUluZGV4KTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTIyODEsMTEgKzIyODEsMTEgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0gbV9qaXQuYnJhbmNoQWRkMzIoTWFjcm9Bc3Nl
bWJsZXI6Ok92ZXJmbG93LCBncHIxLCBncHIyLCBncHJSZXN1bHQpOwogICAgICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIGlmIChncHIxID09IGdwclJlc3VsdCkKLSAgICAgICAgICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBj
aGVjaywgU3BlY3VsYXRpb25SZWNvdmVyeShTcGVjdWxhdGl2ZUFkZCwgZ3ByUmVzdWx0LCBncHIy
KSk7CisgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwg
Tm9Ob2RlLCBjaGVjaywgU3BlY3VsYXRpb25SZWNvdmVyeShTcGVjdWxhdGl2ZUFkZCwgZ3ByUmVz
dWx0LCBncHIyKSk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZ3ByMiA9PSBncHJSZXN1bHQp
Ci0gICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVS
ZWdzKCksIE5vTm9kZSwgY2hlY2ssIFNwZWN1bGF0aW9uUmVjb3ZlcnkoU3BlY3VsYXRpdmVBZGQs
IGdwclJlc3VsdCwgZ3ByMSkpOworICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgY2hlY2ssIFNwZWN1bGF0aW9uUmVjb3ZlcnkoU3BlY3Vs
YXRpdmVBZGQsIGdwclJlc3VsdCwgZ3ByMSkpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwg
Tm9Ob2RlLCBjaGVjayk7CisgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNW
YWx1ZVJlZ3MoKSwgTm9Ob2RlLCBjaGVjayk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGludGVnZXJSZXN1bHQoZ3ByUmVzdWx0LCBtX2NvbXBpbGVJbmRleCk7CkBAIC0yMzIxLDcgKzIz
MjEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAg
ICAgICAgICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOwogICAgICAg
ICAgICAgICAgICAgICBtX2ppdC5zdWIzMihJbW0zMihpbW0yKSwgcmVzdWx0LmdwcigpKTsKICAg
ICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hTdWIzMihNYWNy
b0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMS5ncHIoKSwgSW1tMzIoaW1tMiksIHJlc3VsdC5ncHIo
KSkpOworICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCks
IE5vTm9kZSwgbV9qaXQuYnJhbmNoU3ViMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBvcDEu
Z3ByKCksIEltbTMyKGltbTIpLCByZXN1bHQuZ3ByKCkpKTsKIAogICAgICAgICAgICAgICAgIGlu
dGVnZXJSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CkBAIC0yMzM1LDcgKzIzMzUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJl
c3VsdC5ncHIoKSk7CiAgICAgICAgICAgICAgICAgbV9qaXQuc3ViMzIob3AyLmdwcigpLCByZXN1
bHQuZ3ByKCkpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hTdWIz
MihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMS5ncHIoKSwgb3AyLmdwcigpLCByZXN1bHQu
Z3ByKCkpKTsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCks
IE5vTm9kZSwgbV9qaXQuYnJhbmNoU3ViMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBvcDEu
Z3ByKCksIG9wMi5ncHIoKSwgcmVzdWx0LmdwcigpKSk7CiAKICAgICAgICAgICAgIGludGVnZXJS
ZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTIzNjgsMTMgKzIzNjgsMTMgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2Rl
JiBub2RlKQogICAgICAgICAgICAgR1BSUmVnIG9wMUdQUiA9IG9wMS5ncHIoKTsKICAgICAgICAg
ICAgIEdQUlJlZyBvcDJHUFIgPSBvcDIuZ3ByKCk7CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQu
YnJhbmNoVGVzdDMyKEpJVENvbXBpbGVyOjpaZXJvLCBvcDJHUFIpKTsKKyAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0MzIo
SklUQ29tcGlsZXI6Olplcm8sIG9wMkdQUikpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICAv
LyBJZiB0aGUgdXNlciBjYXJlcyBhYm91dCBuZWdhdGl2ZSB6ZXJvLCB0aGVuIHNwZWN1bGF0ZSB0
aGF0IHdlJ3JlIG5vdCBhYm91dAogICAgICAgICAgICAgLy8gdG8gcHJvZHVjZSBuZWdhdGl2ZSB6
ZXJvLgogICAgICAgICAgICAgaWYgKCFub2RlQ2FuSWdub3JlTmVnYXRpdmVaZXJvKG5vZGUuYXJp
dGhOb2RlRmxhZ3MoKSkpIHsKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBu
dW1lcmF0b3JOb25aZXJvID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCBvcDFHUFIpOwotICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVa
ZXJvLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpMZXNzVGhhbiwgb3AyR1BSLCBUcnVzdGVkSW1tMzIoMCkpKTsKKyAgICAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFj
cm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCBvcDJHUFIsIFRydXN0ZWRJbW0zMigwKSkpOwogICAgICAg
ICAgICAgICAgIG51bWVyYXRvck5vblplcm8ubGluaygmbV9qaXQpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgCkBAIC0yMzk0LDcgKzIzOTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUmIG5vZGUpCiAKICAgICAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlcmUgd2Fz
IG5vIHJlbWFpbmRlci4gSWYgdGhlcmUgaGFkIGJlZW4sIHRoZW4gd2UnZCBiZSBvYmxpZ2F0ZWQg
dG8KICAgICAgICAgICAgIC8vIHByb2R1Y2UgYSBkb3VibGUgcmVzdWx0IGluc3RlYWQuCi0gICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBOb05vZGUs
IG1faml0LmJyYW5jaFRlc3QzMihKSVRDb21waWxlcjo6Tm9uWmVybywgZWR4LmdwcigpKSk7Cisg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQu
YnJhbmNoVGVzdDMyKEpJVENvbXBpbGVyOjpOb25aZXJvLCBlZHguZ3ByKCkpKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaW50ZWdlclJlc3VsdChlYXguZ3ByKCksIG1fY29tcGlsZUluZGV4
KTsKICNlbHNlIC8vIENQVShYODYpIC0+IHNvIG5vbi1YODYgY29kZSBmb2xsb3dzCkBAIC0yNDE0
LDcgKzI0MTQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBmYWlsdXJlQ2Fz
ZXM7CiAgICAgICAgICAgICBtX2ppdC5icmFuY2hDb252ZXJ0RG91YmxlVG9JbnQzMihyZXN1bHRG
UFIsIHJlc3VsdEdQUiwgZmFpbHVyZUNhc2VzLCBzY3JhdGNoRlBSKTsKLSAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgZmFpbHVyZUNh
c2VzKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LCBmYWlsdXJlQ2FzZXMpOwogCiAgICAgICAgICAgICBpbnRlZ2VyUmVzdWx0KHJlc3VsdEdQUiwg
bV9jb21waWxlSW5kZXgpOwogI2VuZGlmIC8vIENQVShYODYpCkBAIC0yNDQ4LDcgKzI0NDgsNyBA
QCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBt
X2ppdC5yc2hpZnQzMihyZXN1bHQuZ3ByKCksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIo
MzEpLCBzY3JhdGNoLmdwcigpKTsKICAgICAgICAgICAgIG1faml0LmFkZDMyKHNjcmF0Y2guZ3By
KCksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgICAgICBtX2ppdC54b3IzMihzY3JhdGNoLmdwcigp
LCByZXN1bHQuZ3ByKCkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywg
SlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6RXF1
YWwsIHJlc3VsdC5ncHIoKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigxIDw8IDMxKSkp
OworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1f
aml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgcmVzdWx0LmdwcigpLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbTMyKDEgPDwgMzEpKSk7CiAgICAgICAgICAgICBpbnRlZ2VyUmVz
dWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KQEAgLTI2ODUsMTUgKzI2ODUsMTUgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgU3BlY3VsYXRlQ2VsbE9wZXJhbmQgYmFzZSh0
aGlzLCBub2RlLmNoaWxkMSgpKTsKICAgICAgICAgICAgIEdQUlJlZyBiYXNlUmVnID0gYmFzZS5n
cHIoKTsKICAgICAgICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2Rl
KG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbm9kZS5jaGls
ZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZVJlZyksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1f
aml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIpKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMy
KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5Ojp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKKyAg
ICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6
Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJs
ZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5i
cmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZywgSlNBcnJheTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkp
KSk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBGSVhNRTogSW4gY2FzZXMgd2hlcmUgdGhlcmUg
YXJlIHN1YnNlcXVlbnQgYnlfdmFsIGFjY2Vzc2VzIHRvIHRoZSBzYW1lIGJhc2UgaXQgbWlnaHQg
aGVscCB0byBjYWNoZQogICAgICAgICAvLyB0aGUgc3RvcmFnZSBwb2ludGVyIC0gZXNwZWNpYWxs
eSBpZiB0aGVyZSBoYXBwZW5zIHRvIGJlIGFub3RoZXIgcmVnaXN0ZXIgZnJlZSByaWdodCBub3cu
IElmIHdlIGRvIHNvLAogICAgICAgICAvLyB0aGVuIHdlJ2xsIG5lZWQgdG8gYWxsb2NhdGUgYSBu
ZXcgdGVtcG9yYXJ5IGZvciByZXN1bHQuCiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2Vt
Ymxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6
VGltZXNFaWdodCwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV92ZWN0b3JbMF0pICsg
T0JKRUNUX09GRlNFVE9GKEpTVmFsdWUsIHUuYXNCaXRzLnRhZykpLCByZXN1bHRUYWcuZ3ByKCkp
OwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBO
b05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwgcmVzdWx0VGFnLmdw
cigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZykpKTsKKyAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpFcXVhbCwgcmVzdWx0VGFnLmdwcigpLCBUcnVzdGVkSW1tMzIoSlNWYWx1ZTo6
RW1wdHlWYWx1ZVRhZykpKTsKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpC
YXNlSW5kZXgoc3RvcmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0Vp
Z2h0LCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX3ZlY3RvclswXSkgKyBPQkpFQ1Rf
T0ZGU0VUT0YoSlNWYWx1ZSwgdS5hc0JpdHMucGF5bG9hZCkpLCByZXN1bHRQYXlsb2FkLmdwcigp
KTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZy5ncHIoKSwgcmVzdWx0UGF5bG9h
ZC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOwpAQCAtMjgwNCw3ICsyODA0LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAvLyBDaGVjayB0aGF0IGJh
c2UgaXMgYW4gYXJyYXksIGFuZCB0aGF0IHByb3BlcnR5IGlzIGNvbnRhaW5lZCB3aXRoaW4gbV92
ZWN0b3IgKDwgbV92ZWN0b3JMZW5ndGgpLgogICAgICAgICAvLyBJZiB3ZSBoYXZlIHByZWRpY3Rl
ZCB0aGUgYmFzZSB0byBiZSB0eXBlIGFycmF5LCB3ZSBjYW4gc2tpcCB0aGUgY2hlY2suCiAgICAg
ICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkp
Lm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
UmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5q
c0FycmF5VlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJj
ZTo6dW5ib3hlZENlbGwoYmFzZVJlZyksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJy
YXlWUHRyKSkpOwogCiAgICAgICAgIGJhc2UudXNlKCk7CiAgICAgICAgIHByb3BlcnR5LnVzZSgp
OwpAQCAtMjk0OCwxMyArMjk0OCwxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUmIG5vZGUpCiAgICAgICAgIHdyaXRlQmFycmllcihiYXNlR1BSLCB2YWx1ZVRhZ0dQUiwgbm9k
ZS5jaGlsZDIoKSwgV3JpdGVCYXJyaWVyRm9yUHJvcGVydHlBY2Nlc3MsIHN0b3JhZ2VHUFIsIHN0
b3JhZ2VMZW5ndGhHUFIpOwogCiAgICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0
ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VHUFIpLCBub2Rl
LmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZUdQUiksIG5vZGUuY2hp
bGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0ciht
X2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOwogICAgICAgICAKICAgICAgICAgbV9q
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5OjpzdG9y
YWdlT2Zmc2V0KCkpLCBzdG9yYWdlR1BSKTsKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VHUFIsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2Us
IG1fbGVuZ3RoKSksIHN0b3JhZ2VMZW5ndGhHUFIpOwogICAgICAgICAKICAgICAgICAgLy8gUmVm
dXNlIHRvIGhhbmRsZSBiaXphcnJlIGxlbmd0aHMuCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
VW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9B
c3NlbWJsZXI6OkFib3ZlLCBzdG9yYWdlTGVuZ3RoR1BSLCBUcnVzdGVkSW1tMzIoMHg3ZmZmZmZm
ZSkpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1f
aml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgc3RvcmFnZUxlbmd0aEdQUiwgVHJ1
c3RlZEltbTMyKDB4N2ZmZmZmZmUpKSk7CiAgICAgICAgIAogICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6SnVtcCBzbG93UGF0aCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9y
RXF1YWwsIHN0b3JhZ2VMZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTQXJyYXk6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSk7CiAgICAgICAgIApAQCAtMjk5NCw3ICsy
OTk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAg
ICBHUFJSZWcgc3RvcmFnZUxlbmd0aEdQUiA9IHN0b3JhZ2VMZW5ndGguZ3ByKCk7CiAgICAgICAg
IAogICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBK
U1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERh
dGEoKS0+anNBcnJheVZQdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgp
LT5qc0FycmF5VlB0cikpKTsKICAgICAgICAgCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgc3Rv
cmFnZUdQUik7CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dG9yYWdlR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBtX2xlbmd0aCkpLCBzdG9y
YWdlTGVuZ3RoR1BSKTsKQEAgLTMxMTUsNyArMzExNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICBjYXNlIFRocm93UmVmZXJlbmNlRXJyb3I6IHsKICAg
ICAgICAgLy8gV2UgZXhwZWN0IHRoYXQgdGhyb3cgc3RhdGVtZW50cyBhcmUgcmFyZSBhbmQgYXJl
IGludGVuZGVkIHRvIGV4aXQgdGhlIGNvZGUgYmxvY2sKICAgICAgICAgLy8gYW55d2F5LCBzbyB3
ZSBqdXN0IE9TUiBiYWNrIHRvIHRoZSBvbGQgSklUIGZvciBub3cuCi0gICAgICAgIHRlcm1pbmF0
ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUp
OworICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihKU1ZhbHVlUmVncygpLCBO
b05vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApAQCAtMzI2Myw3ICszMjYz
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAg
ICAgbV9qaXQub3IzMihUcnVzdGVkSW1tMzIoMSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAg
Ly8gVGhpcyBpcyBoYXJkLiBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gc2F2ZSB0aGUgdmFsdWUsIGJ1
dCB3ZSBjYW4ndCBxdWl0ZSBkbyBpdCwKICAgICAgICAgICAgIC8vIHNpbmNlIHRoaXMgb3BlcmF0
aW9uIGRvZXMgbm90IG90aGVyd2lzZSBnZXQgdGhlIHBheWxvYWQuCi0gICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBzY3JhdGNoR1BSLCBUcnVzdGVkSW1tMzIoSlNW
YWx1ZTo6TnVsbFRhZykpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJl
Z3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHNj
cmF0Y2hHUFIsIFRydXN0ZWRJbW0zMihKU1ZhbHVlOjpOdWxsVGFnKSkpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBtX2ppdC5tb3ZlKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1f
aml0Lmdsb2JhbE9iamVjdEZvcihub2RlLmNvZGVPcmlnaW4pKSwgc2NyYXRjaEdQUik7CiAgICAg
ICAgICAgICBjZWxsUmVzdWx0KHNjcmF0Y2hHUFIsIG1fY29tcGlsZUluZGV4KTsKQEAgLTMyNzcs
NyArMzI3Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAg
ICAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGlmICghaXNPYmplY3RQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2Rl
LmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFk
VHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwodGhpc1ZhbHVlR1BSKSwgbm9kZS5jaGls
ZDEoKSwgbV9qaXQuYnJhbmNoUHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFk
ZHJlc3ModGhpc1ZhbHVlR1BSKSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xv
YmFsRGF0YSgpLT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbCh0aGlzVmFsdWVHUFIpLCBub2RlLmNoaWxk
MSgpLCBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBKSVRDb21waWxlcjo6QWRk
cmVzcyh0aGlzVmFsdWVHUFIpLCBKSVRDb21waWxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9i
YWxEYXRhKCktPmpzU3RyaW5nVlB0cikpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbV9q
aXQubW92ZSh0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUik7CiAgICAgICAgICAgICBjZWxsUmVzdWx0
KHJlc3VsdEdQUiwgbV9jb21waWxlSW5kZXgpOwpAQCAtMzMyMiw3ICszMzIyLDcgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAvLyBkbyB0aGUgc2xv
dyAoc3RydWN0dXJlLWJhc2VkKSBjaGVjay4KICAgICAgICAgaWYgKGF0KG5vZGUuY2hpbGQxKCkp
LnNob3VsZFNwZWN1bGF0ZUZpbmFsT2JqZWN0KCkpIHsKICAgICAgICAgICAgIGlmICghaXNGaW5h
bE9iamVjdFByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkp
Ci0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChwcm90b0dQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihN
YWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHByb3RvR1BS
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0Zp
bmFsT2JqZWN0VlB0cikpKTsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKHByb3RvR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJh
bmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
cHJvdG9HUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRh
KCktPmpzRmluYWxPYmplY3RWUHRyKSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
bV9qaXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhwcm90b0dQUiwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIHNjcmF0Y2hHUFIpOwogICAgICAgICAgICAgc2xvd1BhdGguYXBw
ZW5kKG1faml0LmJyYW5jaDgoTWFjcm9Bc3NlbWJsZXI6OkJlbG93LCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhzY3JhdGNoR1BSLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvVHlwZU9mZnNldCgpKSwgTWFj
cm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihPYmplY3RUeXBlKSkpOwpAQCAtMzQzNCw3ICszNDM0
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAK
ICAgICBjYXNlIEdldEJ5SWQ6IHsKICAgICAgICAgaWYgKCFub2RlLnByZWRpY3Rpb24oKSkgewot
ICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpT
VmFsdWVSZWdzKCksIE5vTm9kZSk7CisgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4
ZWN1dGlvbihKU1ZhbHVlUmVncygpLCBOb05vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgCkBAIC0zNDk0LDEyICszNDk0LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3Vs
dC5ncHIoKTsKICAgICAgICAgCiAgICAgICAgIGlmICghaXNBcnJheVByZWRpY3Rpb24obV9zdGF0
ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VHUFIpLCBub2Rl
LmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZUdQUiksIG5vZGUuY2hp
bGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0ciht
X2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOwogICAgICAgICAKICAgICAgICAgbV9q
aXQubG9hZFB0cihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBKU0FycmF5OjpzdG9y
YWdlT2Zmc2V0KCkpLCByZXN1bHRHUFIpOwogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MocmVzdWx0R1BSLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdlLCBt
X2xlbmd0aCkpLCByZXN1bHRHUFIpOwogICAgICAgICAKLSAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNy
b0Fzc2VtYmxlcjo6TGVzc1RoYW4sIHJlc3VsdEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMigwKSkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9k
ZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCByZXN1bHRHUFIsIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCkpKTsKICAgICAgICAgCiAgICAgICAgIGludGVn
ZXJSZXN1bHQocmVzdWx0R1BSLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwpAQCAt
MzUxMyw3ICszNTEzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2Rl
KQogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgICAgICAKICAg
ICAgICAgaWYgKCFpc1N0cmluZ1ByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQx
KCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFs
dWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFu
Y2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgp
LT5qc1N0cmluZ1ZQdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVT
b3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5q
c1N0cmluZ1ZQdHIpKSk7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNTdHJpbmc6Om9mZnNldE9mTGVuZ3RoKCkpLCByZXN1
bHRHUFIpOwogCkBAIC0zNTI5LDcgKzM1MjksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CiAgICAgICAgIAogICAgICAgICBpZiAoIWlzQnl0ZUFycmF5UHJlZGljdGlvbihtX3N0YXRlLmZv
ck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZUdQUiksIG5vZGUuY2hp
bGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0ciht
X2ppdC5nbG9iYWxEYXRhKCktPmpzQnl0ZUFycmF5VlB0cikpKTsKKyAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoYmFzZUdQUiksIG5vZGUuY2hp
bGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0ciht
X2ppdC5nbG9iYWxEYXRhKCktPmpzQnl0ZUFycmF5VlB0cikpKTsKICAgICAgICAgCiAgICAgICAg
IG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNCeXRlQXJy
YXk6Om9mZnNldE9mU3RvcmFnZSgpKSwgcmVzdWx0R1BSKTsKICAgICAgICAgbV9qaXQubG9hZDMy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEJ5dGVBcnJheTo6b2Zmc2V0T2ZTaXpl
KCkpLCByZXN1bHRHUFIpOwpAQCAtMzU3Miw3ICszNTcyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlJiBub2RlKQogCiAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7CiAgICAg
ICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGZ1bmN0aW9uKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwot
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZENhY2hlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUs
IG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBmdW5jdGlvbi5ncHIo
KSwgbm9kZS5mdW5jdGlvbigpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJl
Z3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwg
ZnVuY3Rpb24uZ3ByKCksIG5vZGUuZnVuY3Rpb24oKSkpOwogICAgICAgICBub1Jlc3VsdChtX2Nv
bXBpbGVJbmRleCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTM1ODgsNyArMzU4OCw3IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgQVNTRVJU
KG5vZGUuc3RydWN0dXJlU2V0KCkuc2l6ZSgpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChub2Rl
LnN0cnVjdHVyZVNldCgpLnNpemUoKSA9PSAxKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhCYWRDYWNoZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJ
VENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlND
ZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIG5vZGUuc3RydWN0dXJlU2V0KClbMF0pKTsKKyAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFu
Y2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFz
ZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIG5vZGUuc3RydWN0dXJlU2V0KClb
MF0pKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJl
KHRoaXMpOwogICAgICAgICAgICAgCkBAIC0zNTk5LDcgKzM1OTksNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG5vZGUuc3RydWN0dXJlU2V0KCkuc2l6ZSgpIC0gMTsgKytpKQogICAgICAgICAgICAg
ICAgIGRvbmUuYXBwZW5kKG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBz
dHJ1Y3R1cmUuZ3ByKCksIG5vZGUuc3RydWN0dXJlU2V0KClbaV0pKTsKICAgICAgICAgICAgIAot
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRDYWNoZSwgSlNWYWx1ZVJlZ3MoKSwgTm9O
b2RlLCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgc3RydWN0dXJl
LmdwcigpLCBub2RlLnN0cnVjdHVyZVNldCgpLmxhc3QoKSkpOworICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFdlYWtQdHIoSklU
Q29tcGlsZXI6Ok5vdEVxdWFsLCBzdHJ1Y3R1cmUuZ3ByKCksIG5vZGUuc3RydWN0dXJlU2V0KCku
bGFzdCgpKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwog
ICAgICAgICB9CkBAIC0zNzY1LDcgKzM3NjUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlKE5vZGUmIG5vZGUpCiAKICAgICAgICAgLy8gU3BlY3VsYXRlIHRoYXQgYmFzZSAnSW1wbGVt
ZW50c0RlZmF1bHRIYXNJbnN0YW5jZScuCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0
cnVjdHVyZS5ncHIoKSk7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpT
VmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdDgoTWFjcm9Bc3NlbWJsZXI6Olpl
cm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0cnVjdHVyZS5ncHIoKSwgU3RydWN0dXJlOjp0
eXBlSW5mb0ZsYWdzT2Zmc2V0KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEltcGxl
bWVudHNEZWZhdWx0SGFzSW5zdGFuY2UpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNW
YWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0OChNYWNyb0Fzc2VtYmxlcjo6WmVy
bywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RydWN0dXJlLmdwcigpLCBTdHJ1Y3R1cmU6OnR5
cGVJbmZvRmxhZ3NPZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSW1wbGVt
ZW50c0RlZmF1bHRIYXNJbnN0YW5jZSkpKTsKIAogICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJ
bmRleCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMzg2MSw3ICszODYxLDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgIH0KIAogICAgIGNhc2UgRm9yY2VPU1JF
eGl0OiB7Ci0gICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxl
LCBKU1ZhbHVlUmVncygpLCBOb05vZGUpOworICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4
ZWN1dGlvbihKU1ZhbHVlUmVncygpLCBOb05vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2
NC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3Bw
CmluZGV4IDJmYTY2YjAuLjRiZjMzYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApAQCAtMTI4Miw3ICsxMjgyLDcgQEAgR1BSUmVn
IFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50SW50ZXJuYWwoTm9kZUluZGV4IG5vZGVJ
bmRleCwgRGF0YUZvcm1hdCYKICAgICBzd2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgewog
ICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKICAgICAgICAgaWYgKChub2RlLmhhc0NvbnN0YW50
KCkgJiYgIWlzSW50MzJDb25zdGFudChub2RlSW5kZXgpKSB8fCBpbmZvLnNwaWxsRm9ybWF0KCkg
PT0gRGF0YUZvcm1hdERvdWJsZSkgewotICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVF
eGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7CisgICAgICAgICAg
ICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihKU1ZhbHVlUmVncygpLCBOb05vZGUpOwog
ICAgICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludGVnZXI7CiAgICAgICAgICAg
ICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICAgICAgfQpAQCAtMTMzMiw3ICsxMzMyLDcgQEAgR1BS
UmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlSW50SW50ZXJuYWwoTm9kZUluZGV4IG5v
ZGVJbmRleCwgRGF0YUZvcm1hdCYKICAgICAgICAgLy8gQ2hlY2sgdGhlIHZhbHVlIGlzIGFuIGlu
dGVnZXIuCiAgICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwogICAgICAgICBtX2dwcnMu
bG9jayhncHIpOwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdz
KGdwciksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpCZWxvdywg
Z3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpKTsKKyAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhKU1ZhbHVlUmVncyhncHIpLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6QmVsb3csIGdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7
CiAgICAgICAgIGluZm8uZmlsbEpTVmFsdWUoZ3ByLCBEYXRhRm9ybWF0SlNJbnRlZ2VyKTsKICAg
ICAgICAgLy8gSWYgIXN0cmljdCB3ZSdyZSBkb25lLCByZXR1cm4uCiAgICAgICAgIGlmICghc3Ry
aWN0KSB7CkBAIC0xMzg5LDcgKzEzODksNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxT
cGVjdWxhdGVJbnRJbnRlcm5hbChOb2RlSW5kZXggbm9kZUluZGV4LCBEYXRhRm9ybWF0JgogICAg
IGNhc2UgRGF0YUZvcm1hdEJvb2xlYW46CiAgICAgY2FzZSBEYXRhRm9ybWF0SlNDZWxsOgogICAg
IGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjogewotICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2
ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKKyAgICAgICAg
dGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKICAg
ICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludGVnZXI7CiAgICAgICAgIHJldHVybiBh
bGxvY2F0ZSgpOwogICAgIH0KQEAgLTE0NDgsNyArMTQ0OCw3IEBAIEZQUlJlZyBTcGVjdWxhdGl2
ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZShOb2RlSW5kZXggbm9kZUluZGV4KQogICAgICAgICAg
ICAgICAgIGluZm8uZmlsbERvdWJsZShmcHIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmcHI7
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlv
bihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKKyAgICAgICAgICAgIHRlcm1p
bmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7CiAgICAgICAg
ICAgICByZXR1cm4gZnByQWxsb2NhdGUoKTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTE0OTEs
NyArMTQ5MSw3IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJsZShO
b2RlSW5kZXggbm9kZUluZGV4KQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIAogICAg
IGNhc2UgRGF0YUZvcm1hdENlbGw6Ci0gICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0
aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUpOworICAgICAgICB0ZXJtaW5h
dGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihKU1ZhbHVlUmVncygpLCBOb05vZGUpOwogICAgICAgICBy
ZXR1cm4gZnByQWxsb2NhdGUoKTsKIAogICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKQEAgLTE1
MDQsNyArMTUwNCw3IEBAIEZQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZURvdWJs
ZShOb2RlSW5kZXggbm9kZUluZGV4KQogCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wIGlzSW50
ZWdlciA9IG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBqc1Zh
bHVlR3ByLCBHUFJJbmZvOjp0YWdUeXBlTnVtYmVyUmVnaXN0ZXIpOwogCi0gICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoanNWYWx1ZUdwciksIG5vZGVJbmRleCwg
bV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6WmVybywganNWYWx1ZUdwciwgR1BS
SW5mbzo6dGFnVHlwZU51bWJlclJlZ2lzdGVyKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
SlNWYWx1ZVJlZ3MoanNWYWx1ZUdwciksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoVGVzdFB0cihN
YWNyb0Fzc2VtYmxlcjo6WmVybywganNWYWx1ZUdwciwgR1BSSW5mbzo6dGFnVHlwZU51bWJlclJl
Z2lzdGVyKSk7CiAKICAgICAgICAgLy8gRmlyc3QsIGlmIHdlIGdldCBoZXJlIHdlIGhhdmUgYSBk
b3VibGUgZW5jb2RlZCBhcyBhIEpTVmFsdWUKICAgICAgICAgbV9qaXQubW92ZShqc1ZhbHVlR3By
LCB0ZW1wR3ByKTsKQEAgLTE1NzgsNyArMTU3OCw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6
ZmlsbFNwZWN1bGF0ZUNlbGwoTm9kZUluZGV4IG5vZGVJbmRleCkKICAgICBzd2l0Y2ggKGluZm8u
cmVnaXN0ZXJGb3JtYXQoKSkgewogICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6IHsKICAgICAgICAg
aWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50ZWdlciB8fCBpbmZvLnNwaWxs
Rm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkgewotICAgICAgICAgICAgdGVybWluYXRlU3Bl
Y3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7Cisg
ICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihKU1ZhbHVlUmVncygpLCBO
b05vZGUpOwogICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAgICAgIH0KICAgICAg
ICAgCkBAIC0xNTkyLDcgKzE1OTIsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVj
dWxhdGVDZWxsKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgICAgICAgICAgICAgaW5mby5maWxs
SlNWYWx1ZShncHIsIERhdGFGb3JtYXRKU0NlbGwpOwogICAgICAgICAgICAgICAgIHJldHVybiBn
cHI7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1
dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKKyAgICAgICAgICAgIHRl
cm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7CiAgICAg
ICAgICAgICByZXR1cm4gZ3ByOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChpbmZvLnNwaWxs
Rm9ybWF0KCkgJiBEYXRhRm9ybWF0SlMpOwpAQCAtMTYwMSw3ICsxNjAxLDcgQEAgR1BSUmVnIFNw
ZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbChOb2RlSW5kZXggbm9kZUluZGV4KQogCiAg
ICAgICAgIGluZm8uZmlsbEpTVmFsdWUoZ3ByLCBEYXRhRm9ybWF0SlMpOwogICAgICAgICBpZiAo
aW5mby5zcGlsbEZvcm1hdCgpICE9IERhdGFGb3JtYXRKU0NlbGwpCi0gICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGdwciksIG5vZGVJbmRleCwgbV9qaXQu
YnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgZ3ByLCBHUFJJbmZvOjp0YWdN
YXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3Mo
Z3ByKSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLCBncHIsIEdQUkluZm86OnRhZ01hc2tSZWdpc3RlcikpOwogICAgICAgICBpbmZvLmZpbGxK
U1ZhbHVlKGdwciwgRGF0YUZvcm1hdEpTQ2VsbCk7CiAgICAgICAgIHJldHVybiBncHI7CiAgICAg
fQpAQCAtMTYxNiw3ICsxNjE2LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3Vs
YXRlQ2VsbChOb2RlSW5kZXggbm9kZUluZGV4KQogICAgIGNhc2UgRGF0YUZvcm1hdEpTOiB7CiAg
ICAgICAgIEdQUlJlZyBncHIgPSBpbmZvLmdwcigpOwogICAgICAgICBtX2dwcnMubG9jayhncHIp
OwotICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGdwciksIG5v
ZGVJbmRleCwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgZ3By
LCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhK
U1ZhbHVlUmVncyhncHIpLCBub2RlSW5kZXgsIG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3Nl
bWJsZXI6Ok5vblplcm8sIGdwciwgR1BSSW5mbzo6dGFnTWFza1JlZ2lzdGVyKSk7CiAgICAgICAg
IGluZm8uZmlsbEpTVmFsdWUoZ3ByLCBEYXRhRm9ybWF0SlNDZWxsKTsKICAgICAgICAgcmV0dXJu
IGdwcjsKICAgICB9CkBAIC0xNjI3LDcgKzE2MjcsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6
OmZpbGxTcGVjdWxhdGVDZWxsKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgY2FzZSBEYXRhRm9y
bWF0RG91YmxlOgogICAgIGNhc2UgRGF0YUZvcm1hdEpTQm9vbGVhbjoKICAgICBjYXNlIERhdGFG
b3JtYXRCb29sZWFuOiB7Ci0gICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVu
Y291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUpOworICAgICAgICB0ZXJtaW5hdGVTcGVj
dWxhdGl2ZUV4ZWN1dGlvbihKU1ZhbHVlUmVncygpLCBOb05vZGUpOwogICAgICAgICByZXR1cm4g
YWxsb2NhdGUoKTsKICAgICB9CiAKQEAgLTE2NTEsNyArMTY1MSw3IEBAIEdQUlJlZyBTcGVjdWxh
dGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4oTm9kZUluZGV4IG5vZGVJbmRleCkKICAgICBz
d2l0Y2ggKGluZm8ucmVnaXN0ZXJGb3JtYXQoKSkgewogICAgIGNhc2UgRGF0YUZvcm1hdE5vbmU6
IHsKICAgICAgICAgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSA9PSBEYXRhRm9ybWF0SW50ZWdlciB8
fCBpbmZvLnNwaWxsRm9ybWF0KCkgPT0gRGF0YUZvcm1hdERvdWJsZSkgewotICAgICAgICAgICAg
dGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCks
IE5vTm9kZSk7CisgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihKU1Zh
bHVlUmVncygpLCBOb05vZGUpOwogICAgICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAg
ICAgIH0KICAgICAgICAgCkBAIC0xNjY1LDcgKzE2NjUsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVK
SVQ6OmZpbGxTcGVjdWxhdGVCb29sZWFuKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgICAgICAg
ICAgICAgaW5mby5maWxsSlNWYWx1ZShncHIsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOwogICAgICAg
ICAgICAgICAgIHJldHVybiBncHI7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ZXJtaW5h
dGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
KTsKKyAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKEpTVmFsdWVSZWdz
KCksIE5vTm9kZSk7CiAgICAgICAgICAgICByZXR1cm4gZ3ByOwogICAgICAgICB9CiAgICAgICAg
IEFTU0VSVChpbmZvLnNwaWxsRm9ybWF0KCkgJiBEYXRhRm9ybWF0SlMpOwpAQCAtMTY3NSw3ICsx
Njc1LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbGVhbihOb2Rl
SW5kZXggbm9kZUluZGV4KQogICAgICAgICBpbmZvLmZpbGxKU1ZhbHVlKGdwciwgRGF0YUZvcm1h
dEpTKTsKICAgICAgICAgaWYgKGluZm8uc3BpbGxGb3JtYXQoKSAhPSBEYXRhRm9ybWF0SlNCb29s
ZWFuKSB7CiAgICAgICAgICAgICBtX2ppdC54b3JQdHIoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0
PGludDMyX3Q+KFZhbHVlRmFsc2UpKSwgZ3ByKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoZ3ByKSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBncHIsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2Fz
dDxpbnQzMl90Pih+MSkpKSwgU3BlY3VsYXRpb25SZWNvdmVyeShCb29sZWFuU3BlY3VsYXRpb25D
aGVjaywgZ3ByLCBJbnZhbGlkR1BSUmVnKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KEpTVmFsdWVSZWdzKGdwciksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fz
c2VtYmxlcjo6Tm9uWmVybywgZ3ByLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4o
fjEpKSksIFNwZWN1bGF0aW9uUmVjb3ZlcnkoQm9vbGVhblNwZWN1bGF0aW9uQ2hlY2ssIGdwciwg
SW52YWxpZEdQUlJlZykpOwogICAgICAgICAgICAgbV9qaXQueG9yUHRyKFRydXN0ZWRJbW0zMihz
dGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIGdwcik7CiAgICAgICAgIH0KICAgICAg
ICAgaW5mby5maWxsSlNWYWx1ZShncHIsIERhdGFGb3JtYXRKU0Jvb2xlYW4pOwpAQCAtMTY5Myw3
ICsxNjkzLDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQm9vbGVhbihO
b2RlSW5kZXggbm9kZUluZGV4KQogICAgICAgICBHUFJSZWcgZ3ByID0gaW5mby5ncHIoKTsKICAg
ICAgICAgbV9ncHJzLmxvY2soZ3ByKTsKICAgICAgICAgbV9qaXQueG9yUHRyKFRydXN0ZWRJbW0z
MihzdGF0aWNfY2FzdDxpbnQzMl90PihWYWx1ZUZhbHNlKSksIGdwcik7Ci0gICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoZ3ByKSwgbm9kZUluZGV4LCBtX2ppdC5i
cmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBncHIsIFRydXN0ZWRJbW0zMihz
dGF0aWNfY2FzdDxpbnQzMl90Pih+MSkpKSwgU3BlY3VsYXRpb25SZWNvdmVyeShCb29sZWFuU3Bl
Y3VsYXRpb25DaGVjaywgZ3ByLCBJbnZhbGlkR1BSUmVnKSk7CisgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soSlNWYWx1ZVJlZ3MoZ3ByKSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hUZXN0UHRyKE1h
Y3JvQXNzZW1ibGVyOjpOb25aZXJvLCBncHIsIFRydXN0ZWRJbW0zMihzdGF0aWNfY2FzdDxpbnQz
Ml90Pih+MSkpKSwgU3BlY3VsYXRpb25SZWNvdmVyeShCb29sZWFuU3BlY3VsYXRpb25DaGVjaywg
Z3ByLCBJbnZhbGlkR1BSUmVnKSk7CiAgICAgICAgIG1faml0LnhvclB0cihUcnVzdGVkSW1tMzIo
c3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCBncHIpOwogICAgICAgICBpbmZvLmZp
bGxKU1ZhbHVlKGdwciwgRGF0YUZvcm1hdEpTQm9vbGVhbik7CiAgICAgICAgIHJldHVybiBncHI7
CkBAIC0xNzA1LDcgKzE3MDUsNyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxh
dGVCb29sZWFuKE5vZGVJbmRleCBub2RlSW5kZXgpCiAgICAgY2FzZSBEYXRhRm9ybWF0RG91Ymxl
OgogICAgIGNhc2UgRGF0YUZvcm1hdEpTQ2VsbDoKICAgICBjYXNlIERhdGFGb3JtYXRDZWxsOiB7
Ci0gICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1Zh
bHVlUmVncygpLCBOb05vZGUpOworICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlv
bihKU1ZhbHVlUmVncygpLCBOb05vZGUpOwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAg
ICB9CiAgICAgICAgIApAQCAtMTc0OCw5ICsxNzQ4LDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZU9iamVjdEVxdWFsaXR5KE5vZGUmIG5vZGUsIHZvaWQqIHZwdHIsIFByZWRpY3Rpb25D
aGUKICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0LmdwcigpOwogICAgIAogICAgIGlmICgh
cHJlZGljdGlvbkNoZWNrKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQot
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKG9wMUdQUiksIG5v
ZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9wMUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKHZwdHIpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3Mob3AxR1BS
KSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mob3AxR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIodnB0cikpKTsKICAgICBpZiAoIXByZWRpY3Rpb25DaGVjayhtX3N0YXRlLmZvck5v
ZGUobm9kZS5jaGlsZDIoKSkubV90eXBlKSkKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRU
eXBlLCBKU1ZhbHVlUmVncyhvcDJHUFIpLCBub2RlLmNoaWxkMigpLCBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhvcDJHUFIp
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOworICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEpTVmFsdWVSZWdzKG9wMkdQUiksIG5vZGUuY2hpbGQyKCksIG1faml0LmJyYW5j
aFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKG9w
MkdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHZwdHIpKSk7CiAgICAgCiAgICAg
TWFjcm9Bc3NlbWJsZXI6Okp1bXAgZmFsc2VDYXNlID0gbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgb3AxR1BSLCBvcDJHUFIpOwogICAgIG1faml0Lm1vdmUoSW1tMzIo
VmFsdWVUcnVlKSwgcmVzdWx0R1BSKTsKQEAgLTE4MTcsNyArMTgxNyw3IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVPYmplY3RPck90aGVyTG9naWNhbE5vdChOb2RlSW5kZXggbm9kZUlu
ZGV4LCB2b2lkICp2CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgbm90Q2VsbCA9IG1f
aml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8sIHZhbHVlR1BSLCBHUFJJ
bmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogICAgIGlmIChuZWVkU3BlY3VsYXRpb25DaGVjaykKLSAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5v
ZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cih2cHRyKSkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKHZhbHVlR1BS
KSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tUHRyKHZwdHIpKSk7CiAgICAgbV9qaXQubW92ZShUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oVmFsdWVGYWxzZSkpLCByZXN1bHRHUFIpOwogICAgIE1hY3JvQXNzZW1ibGVyOjpK
dW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgCkBAIC0xODI2LDcgKzE4MjYsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlT2JqZWN0T3JPdGhlckxvZ2ljYWxOb3QoTm9kZUluZGV4
IG5vZGVJbmRleCwgdm9pZCAqdgogICAgIGlmIChuZWVkU3BlY3VsYXRpb25DaGVjaykgewogICAg
ICAgICBtX2ppdC5tb3ZlKHZhbHVlR1BSLCByZXN1bHRHUFIpOwogICAgICAgICBtX2ppdC5hbmRQ
dHIoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMih+VGFnQml0VW5kZWZpbmVkKSwgcmVzdWx0
R1BSKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh2YWx1
ZUdQUiksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgcmVzdWx0R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihyZWludGVycHJldF9j
YXN0PHZvaWQqPihWYWx1ZU51bGwpKSkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFs
dWVSZWdzKHZhbHVlR1BSKSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCByZXN1bHRHUFIsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KFZhbHVlTnVsbCkpKSk7CiAgICAgfQogICAgIG1faml0Lm1v
dmUoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVlVHJ1ZSkpLCByZXN1bHRH
UFIpOwogICAgIApAQCAtMTg4Miw3ICsxODgyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUxvZ2ljYWxOb3QoTm9kZSYgbm9kZSkKICAgICAgICAgCiAgICAgICAgIG1faml0Lm1vdmUo
dmFsdWUuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CiAgICAgICAgIG1faml0LnhvclB0cihUcnVzdGVk
SW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oVmFsdWVGYWxzZSkpLCByZXN1bHQuZ3ByKCkpOwot
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKHZhbHVlLmdwcigp
KSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoVGVzdFB0cihKSVRDb21waWxlcjo6Tm9uWmVy
bywgcmVzdWx0LmdwcigpLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4ofjEpKSkp
OworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKHZhbHVlLmdwcigpKSwgbm9k
ZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoVGVzdFB0cihKSVRDb21waWxlcjo6Tm9uWmVybywgcmVz
dWx0LmdwcigpLCBUcnVzdGVkSW1tMzIoc3RhdGljX2Nhc3Q8aW50MzJfdD4ofjEpKSkpOwogICAg
ICAgICBtX2ppdC54b3JQdHIoVHJ1c3RlZEltbTMyKHN0YXRpY19jYXN0PGludDMyX3Q+KFZhbHVl
VHJ1ZSkpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAKICAgICAgICAgLy8gSWYgd2UgYWRkIGEg
RGF0YUZvcm1hdEJvb2wsIHdlIHNob3VsZCB1c2UgaXQgaGVyZS4KQEAgLTE5MjEsNyArMTkyMSw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRPYmplY3RPck90aGVyQnJhbmNoKE5vZGVJbmRl
eCBub2RlSW5kZXgsIEJsb2NrSW5kZXggdGFrCiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1
bXAgbm90Q2VsbCA9IG1faml0LmJyYW5jaFRlc3RQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vblplcm8s
IHZhbHVlR1BSLCBHUFJJbmZvOjp0YWdNYXNrUmVnaXN0ZXIpOwogICAgIGlmIChuZWVkU3BlY3Vs
YXRpb25DaGVjaykKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVn
cyh2YWx1ZUdQUiksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpO
b3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3ModmFsdWVHUFIpLCBNYWNyb0Fzc2VtYmxl
cjo6VHJ1c3RlZEltbVB0cih2cHRyKSkpOworICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFs
dWVSZWdzKHZhbHVlR1BSKSwgbm9kZUluZGV4LCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyh2YWx1ZUdQUiksIE1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHZwdHIpKSk7CiAgICAgYWRkQnJhbmNoKG1faml0Lmp1bXAo
KSwgdGFrZW4pOwogICAgIAogICAgIG5vdENlbGwubGluaygmbV9qaXQpOwpAQCAtMTkyOSw3ICsx
OTI5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9iamVjdE9yT3RoZXJCcmFuY2goTm9k
ZUluZGV4IG5vZGVJbmRleCwgQmxvY2tJbmRleCB0YWsKICAgICBpZiAobmVlZFNwZWN1bGF0aW9u
Q2hlY2spIHsKICAgICAgICAgbV9qaXQubW92ZSh2YWx1ZUdQUiwgc2NyYXRjaEdQUik7CiAgICAg
ICAgIG1faml0LmFuZFB0cihNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKH5UYWdCaXRVbmRl
ZmluZWQpLCBzY3JhdGNoR1BSKTsKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBK
U1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNz
ZW1ibGVyOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oVmFsdWVOdWxsKSkpKTsKKyAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGVJbmRleCwgbV9qaXQuYnJhbmNo
UHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6
OlRydXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oVmFsdWVOdWxsKSkpKTsKICAg
ICB9CiAgICAgaWYgKG5vdFRha2VuICE9IChtX2Jsb2NrICsgMSkpCiAgICAgICAgIGFkZEJyYW5j
aChtX2ppdC5qdW1wKCksIG5vdFRha2VuKTsKQEAgLTE5OTcsNyArMTk5Nyw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRCcmFuY2goTm9kZSYgbm9kZSkKICAgICAgICAgICAgIGFkZEJyYW5j
aChtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCB2YWx1ZUdQUiwgTWFjcm9B
c3NlbWJsZXI6OkltbVB0cihKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGZhbHNlKSkpKSwgbm90
VGFrZW4pOwogICAgICAgICAgICAgYWRkQnJhbmNoKG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6RXF1YWwsIHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6SW1tUHRyKEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4odHJ1ZSkpKSksIHRha2VuKTsKIAotICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyh2YWx1ZUdQUiksIG5vZGUuY2hpbGQxKCksIG1f
aml0Lmp1bXAoKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKHZh
bHVlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuanVtcCgpKTsKICAgICAgICAgICAgIHZhbHVl
LnVzZSgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgYWRkQnJhbmNoKG1faml0LmJy
YW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6RXF1YWwsIHZhbHVlR1BSLCBNYWNyb0Fzc2VtYmxlcjo6
SW1tUHRyKEpTVmFsdWU6OmVuY29kZShqc051bWJlcigwKSkpKSwgbm90VGFrZW4pOwpAQCAtMjA0
Myw3ICsyMDQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQog
CiAgICAgICAgIC8vIElmIHdlIGhhdmUgbm8gcHJlZGljdGlvbiBmb3IgdGhpcyBsb2NhbCwgdGhl
biBkb24ndCBhdHRlbXB0IHRvIGNvbXBpbGUuCiAgICAgICAgIGlmIChwcmVkaWN0aW9uID09IFBy
ZWRpY3ROb25lIHx8IHZhbHVlLmlzQ2xlYXIoKSkgewotICAgICAgICAgICAgdGVybWluYXRlU3Bl
Y3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9kZSk7Cisg
ICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihKU1ZhbHVlUmVncygpLCBO
b05vZGUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0yMTEz
LDE0ICsyMTEzLDE0IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkK
ICAgICAgICAgICAgIFNwZWN1bGF0ZUNlbGxPcGVyYW5kIGNlbGwodGhpcywgbm9kZS5jaGlsZDEo
KSk7CiAgICAgICAgICAgICBHUFJSZWcgY2VsbEdQUiA9IGNlbGwuZ3ByKCk7CiAgICAgICAgICAg
ICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5t
X3R5cGUpKQotICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1
ZVJlZ3MoY2VsbEdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNlbGxHUFIpLCBNYWNyb0Fz
c2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkp
OworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoY2VsbEdQUiks
IG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNlbGxHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOwogICAgICAgICAgICAg
bV9qaXQuc3RvcmVQdHIoY2VsbEdQUiwgSklUQ29tcGlsZXI6OmFkZHJlc3NGb3Iobm9kZS5sb2Nh
bCgpKSk7CiAgICAgICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIH0g
ZWxzZSBpZiAoaXNCeXRlQXJyYXlQcmVkaWN0aW9uKHByZWRpY3RlZFR5cGUpKSB7CiAgICAgICAg
ICAgICBTcGVjdWxhdGVDZWxsT3BlcmFuZCBjZWxsKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwogICAg
ICAgICAgICAgR1BSUmVnIGNlbGxHUFIgPSBjZWxsLmdwcigpOwogICAgICAgICAgICAgaWYgKCFp
c0J5dGVBcnJheVByZWRpY3Rpb24obV9zdGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlw
ZSkpCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVn
cyhjZWxsR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoY2VsbEdQUiksIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNCeXRlQXJyYXlWUHRyKSkp
OworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoY2VsbEdQUiks
IG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWws
IE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGNlbGxHUFIpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQnl0ZUFycmF5VlB0cikpKTsKICAgICAgICAg
ICAgIG1faml0LnN0b3JlUHRyKGNlbGxHUFIsIEpJVENvbXBpbGVyOjphZGRyZXNzRm9yKG5vZGUu
bG9jYWwoKSkpOwogICAgICAgICAgICAgbm9SZXN1bHQobV9jb21waWxlSW5kZXgpOwogICAgICAg
ICB9IGVsc2UgaWYgKGlzQm9vbGVhblByZWRpY3Rpb24ocHJlZGljdGVkVHlwZSkpIHsKQEAgLTIy
MjUsNyArMjIyNSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkK
ICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwogCiAgICAgICAgIC8vIFRl
c3QgdGhlIG9wZXJhbmQgaXMgcG9zaXRpdmUuCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3Zl
cmZsb3csIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6Okxlc3NUaGFuLCBvcDEuZ3ByKCksIFRydXN0ZWRJbW0zMigwKSkpOworICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9B
c3NlbWJsZXI6Okxlc3NUaGFuLCBvcDEuZ3ByKCksIFRydXN0ZWRJbW0zMigwKSkpOwogCiAgICAg
ICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICBpbnRlZ2Vy
UmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgsIG9wMS5mb3JtYXQoKSk7CkBAIC0y
MjczLDcgKzIyNzMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUp
CiAgICAgICAgICAgICAgICAgICAgIG1faml0Lm1vdmUob3AyLmdwcigpLCByZXN1bHQuZ3ByKCkp
OwogICAgICAgICAgICAgICAgICAgICBtX2ppdC5hZGQzMihJbW0zMihpbW0xKSwgcmVzdWx0Lmdw
cigpKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hB
ZGQzMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMi5ncHIoKSwgSW1tMzIoaW1tMSksIHJl
c3VsdC5ncHIoKSkpOworICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFs
dWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoQWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJm
bG93LCBvcDIuZ3ByKCksIEltbTMyKGltbTEpLCByZXN1bHQuZ3ByKCkpKTsKIAogICAgICAgICAg
ICAgICAgIGludGVnZXJSZXN1bHQocmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjg4LDcgKzIyODgsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgICAgICAgICAgICAgIG1faml0Lm1vdmUo
b3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgICAgICAgICBtX2ppdC5hZGQz
MihJbW0zMihpbW0yKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3Mo
KSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hBZGQzMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9w
MS5ncHIoKSwgSW1tMzIoaW1tMiksIHJlc3VsdC5ncHIoKSkpOworICAgICAgICAgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoQWRk
MzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBvcDEuZ3ByKCksIEltbTMyKGltbTIpLCByZXN1
bHQuZ3ByKCkpKTsKIAogICAgICAgICAgICAgICAgIGludGVnZXJSZXN1bHQocmVzdWx0Lmdwcigp
LCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC0yMzEzLDExICsy
MzEzLDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBjaGVjayA9IG1faml0LmJyYW5jaEFkZDMy
KE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgZ3ByMSwgZ3ByMiwgZ3ByUmVzdWx0KTsKICAgICAg
ICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoZ3ByMSA9PSBncHJSZXN1bHQpCi0gICAg
ICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCks
IE5vTm9kZSwgY2hlY2ssIFNwZWN1bGF0aW9uUmVjb3ZlcnkoU3BlY3VsYXRpdmVBZGQsIGdwclJl
c3VsdCwgZ3ByMikpOworICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFs
dWVSZWdzKCksIE5vTm9kZSwgY2hlY2ssIFNwZWN1bGF0aW9uUmVjb3ZlcnkoU3BlY3VsYXRpdmVB
ZGQsIGdwclJlc3VsdCwgZ3ByMikpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGdwcjIgPT0g
Z3ByUmVzdWx0KQotICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93
LCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIGNoZWNrLCBTcGVjdWxhdGlvblJlY292ZXJ5KFNwZWN1
bGF0aXZlQWRkLCBncHJSZXN1bHQsIGdwcjEpKTsKKyAgICAgICAgICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIGNoZWNrLCBTcGVjdWxhdGlvblJlY292
ZXJ5KFNwZWN1bGF0aXZlQWRkLCBncHJSZXN1bHQsIGdwcjEpKTsKICAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFs
dWVSZWdzKCksIE5vTm9kZSwgY2hlY2spOworICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgY2hlY2spOwogICAgICAgICAgICAgfQogCiAg
ICAgICAgICAgICBpbnRlZ2VyUmVzdWx0KGdwclJlc3VsdCwgbV9jb21waWxlSW5kZXgpOwpAQCAt
MjM1Myw3ICsyMzUzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2Rl
KQogICAgICAgICAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMS5ncHIoKSwgcmVzdWx0Lmdwcigp
KTsKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuc3ViMzIoSW1tMzIoaW1tMiksIHJlc3VsdC5n
cHIoKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNo
U3ViMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBvcDEuZ3ByKCksIEltbTMyKGltbTIpLCBy
ZXN1bHQuZ3ByKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1Zh
bHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFN1YjMyKE1hY3JvQXNzZW1ibGVyOjpPdmVy
Zmxvdywgb3AxLmdwcigpLCBJbW0zMihpbW0yKSwgcmVzdWx0LmdwcigpKSk7CiAKICAgICAgICAg
ICAgICAgICBpbnRlZ2VyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjM2Nyw3ICsyMzY3LDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICAgICAgICAgIG1faml0Lm1vdmUob3Ax
LmdwcigpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgICAgIG1faml0LnN1YjMyKG9wMi5n
cHIoKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQu
YnJhbmNoU3ViMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBvcDEuZ3ByKCksIG9wMi5ncHIo
KSwgcmVzdWx0LmdwcigpKSk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1Zh
bHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFN1YjMyKE1hY3JvQXNzZW1ibGVyOjpPdmVy
Zmxvdywgb3AxLmdwcigpLCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSkpOwogCiAgICAgICAgICAg
ICBpbnRlZ2VyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbV9jb21waWxlSW5kZXgpOwogICAgICAgICAg
ICAgYnJlYWs7CkBAIC0yMzk5LDEzICsyMzk5LDEzIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIEdQUlJlZyBvcDFHUFIgPSBvcDEuZ3ByKCk7
CiAgICAgICAgICAgICBHUFJSZWcgb3AyR1BSID0gb3AyLmdwcigpOwogICAgICAgICAgICAgCi0g
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBOb05v
ZGUsIG1faml0LmJyYW5jaFRlc3QzMihKSVRDb21waWxlcjo6WmVybywgb3AyR1BSKSk7CisgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJh
bmNoVGVzdDMyKEpJVENvbXBpbGVyOjpaZXJvLCBvcDJHUFIpKTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgLy8gSWYgdGhlIHVzZXIgY2FyZXMgYWJvdXQgbmVnYXRpdmUgemVybywgdGhlbiBz
cGVjdWxhdGUgdGhhdCB3ZSdyZSBub3QgYWJvdXQKICAgICAgICAgICAgIC8vIHRvIHByb2R1Y2Ug
bmVnYXRpdmUgemVyby4KICAgICAgICAgICAgIGlmICghbm9kZUNhbklnbm9yZU5lZ2F0aXZlWmVy
byhub2RlLmFyaXRoTm9kZUZsYWdzKCkpKSB7CiAgICAgICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgbnVtZXJhdG9yTm9uWmVybyA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2Vt
Ymxlcjo6Tm9uWmVybywgb3AxR1BSKTsKLSAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KE5lZ2F0aXZlWmVybywgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2gzMihNYWNy
b0Fzc2VtYmxlcjo6TGVzc1RoYW4sIG9wMkdQUiwgVHJ1c3RlZEltbTMyKDApKSk7CisgICAgICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJy
YW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgb3AyR1BSLCBUcnVzdGVkSW1tMzIoMCkp
KTsKICAgICAgICAgICAgICAgICBudW1lcmF0b3JOb25aZXJvLmxpbmsoJm1faml0KTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIApAQCAtMjQyNSw3ICsyNDI1LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogCiAgICAgICAgICAgICAvLyBDaGVjayB0aGF0
IHRoZXJlIHdhcyBubyByZW1haW5kZXIuIElmIHRoZXJlIGhhZCBiZWVuLCB0aGVuIHdlJ2QgYmUg
b2JsaWdhdGVkIHRvCiAgICAgICAgICAgICAvLyBwcm9kdWNlIGEgZG91YmxlIHJlc3VsdCBpbnN0
ZWFkLgotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3Mo
KSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0MzIoSklUQ29tcGlsZXI6Ok5vblplcm8sIGVkeC5n
cHIoKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05v
ZGUsIG1faml0LmJyYW5jaFRlc3QzMihKSVRDb21waWxlcjo6Tm9uWmVybywgZWR4LmdwcigpKSk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGludGVnZXJSZXN1bHQoZWF4LmdwcigpLCBtX2Nv
bXBpbGVJbmRleCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI0NTgsNyArMjQ1OCw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIG1faml0
LnJzaGlmdDMyKHJlc3VsdC5ncHIoKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigzMSks
IHNjcmF0Y2guZ3ByKCkpOwogICAgICAgICAgICAgbV9qaXQuYWRkMzIoc2NyYXRjaC5ncHIoKSwg
cmVzdWx0LmdwcigpKTsKICAgICAgICAgICAgIG1faml0LnhvcjMyKHNjcmF0Y2guZ3ByKCksIHJl
c3VsdC5ncHIoKSk7Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1Zh
bHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpFcXVhbCwg
cmVzdWx0LmdwcigpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDEgPDwgMzEpKSk7Cisg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQu
YnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkVxdWFsLCByZXN1bHQuZ3ByKCksIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tMzIoMSA8PCAzMSkpKTsKICAgICAgICAgICAgIGludGVnZXJSZXN1bHQo
cmVzdWx0LmdwcigpLCBtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQpAQCAtMjY4OCwxNSArMjY4OCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
KE5vZGUmIG5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgaWYgKCFpc0FycmF5
UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5jaGlsZDEoKSkubV90eXBlKSkKLSAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MoYmFzZVJlZyksIG5v
ZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZElt
bVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOwotICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhiYXNlUmVnLCBKU0FycmF5Ojp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsK
KyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoYmFzZVJlZyksIG5vZGUu
Y2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3Jv
QXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0
cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlWUHRyKSkpOworICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJs
ZXI6OkFib3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJh
c2VSZWcsIEpTQXJyYXk6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSkpOwogCiAgICAgICAgIC8vIEZJ
WE1FOiBJbiBjYXNlcyB3aGVyZSB0aGVyZSBhcmUgc3Vic2VxdWVudCBieV92YWwgYWNjZXNzZXMg
dG8gdGhlIHNhbWUgYmFzZSBpdCBtaWdodCBoZWxwIHRvIGNhY2hlCiAgICAgICAgIC8vIHRoZSBz
dG9yYWdlIHBvaW50ZXIgLSBlc3BlY2lhbGx5IGlmIHRoZXJlIGhhcHBlbnMgdG8gYmUgYW5vdGhl
ciByZWdpc3RlciBmcmVlIHJpZ2h0IG5vdy4gSWYgd2UgZG8gc28sCiAgICAgICAgIC8vIHRoZW4g
d2UnbGwgbmVlZCB0byBhbGxvY2F0ZSBhIG5ldyB0ZW1wb3JhcnkgZm9yIHJlc3VsdC4KICAgICAg
ICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzKTsKICAgICAgICAgbV9qaXQubG9hZFB0cihNYWNy
b0Fzc2VtYmxlcjo6QmFzZUluZGV4KHN0b3JhZ2VSZWcsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2Vt
Ymxlcjo6U2NhbGVQdHIsIE9CSkVDVF9PRkZTRVRPRihBcnJheVN0b3JhZ2UsIG1fdmVjdG9yWzBd
KSksIHJlc3VsdC5ncHIoKSk7Ci0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUs
IEpTVmFsdWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoVGVzdFB0cihNYWNyb0Fzc2VtYmxl
cjo6WmVybywgcmVzdWx0LmdwcigpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1
ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hUZXN0UHRyKE1hY3JvQXNzZW1ibGVyOjpaZXJv
LCByZXN1bHQuZ3ByKCkpKTsKIAogICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdC5ncHIoKSwg
bV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKQEAgLTI3OTksNyArMjc5OSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgLy8gQ2hlY2sg
dGhhdCBiYXNlIGlzIGFuIGFycmF5LCBhbmQgdGhhdCBwcm9wZXJ0eSBpcyBjb250YWluZWQgd2l0
aGluIG1fdmVjdG9yICg8IG1fdmVjdG9yTGVuZ3RoKS4KICAgICAgICAgLy8gSWYgd2UgaGF2ZSBw
cmVkaWN0ZWQgdGhlIGJhc2UgdG8gYmUgdHlwZSBhcnJheSwgd2UgY2FuIHNraXAgdGhlIGNoZWNr
LgogICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBK
U1ZhbHVlUmVncyhiYXNlUmVnKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3Jv
QXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZVJlZyksIE1h
Y3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQ
dHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKGJhc2VSZWcp
LCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFs
LCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKIAogICAgICAgICBi
YXNlLnVzZSgpOwogICAgICAgICBwcm9wZXJ0eS51c2UoKTsKQEAgLTI5NDMsMTMgKzI5NDMsMTMg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICB3cml0
ZUJhcnJpZXIoYmFzZUdQUiwgdmFsdWVHUFIsIG5vZGUuY2hpbGQyKCksIFdyaXRlQmFycmllckZv
clByb3BlcnR5QWNjZXNzLCBzdG9yYWdlR1BSLCBzdG9yYWdlTGVuZ3RoR1BSKTsKIAogICAgICAg
ICBpZiAoIWlzQXJyYXlQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5t
X3R5cGUpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVn
cyhiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVy
OjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiksIE1hY3JvQXNzZW1i
bGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIpKSk7Cisg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLmNo
aWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
bV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0FycmF5VlB0cikpKTsKICAgICAgICAgCiAgICAgICAgIG1f
aml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheTo6c3Rv
cmFnZU9mZnNldCgpKSwgc3RvcmFnZUdQUik7CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlR1BSLCBPQkpFQ1RfT0ZGU0VUT0YoQXJyYXlTdG9yYWdl
LCBtX2xlbmd0aCkpLCBzdG9yYWdlTGVuZ3RoR1BSKTsKICAgICAgICAgCiAgICAgICAgIC8vIFJl
ZnVzZSB0byBoYW5kbGUgYml6YXJyZSBsZW5ndGhzLgotICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1hY3Jv
QXNzZW1ibGVyOjpBYm92ZSwgc3RvcmFnZUxlbmd0aEdQUiwgVHJ1c3RlZEltbTMyKDB4N2ZmZmZm
ZmUpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBt
X2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHN0b3JhZ2VMZW5ndGhHUFIsIFRy
dXN0ZWRJbW0zMigweDdmZmZmZmZlKSkpOwogICAgICAgICAKICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Okp1bXAgc2xvd1BhdGggPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVP
ckVxdWFsLCBzdG9yYWdlTGVuZ3RoR1BSLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU0FycmF5Ojp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpOwogICAgICAgICAKQEAgLTI5ODYsNyAr
Mjk4Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAg
ICAgR1BSUmVnIHN0b3JhZ2VMZW5ndGhHUFIgPSBzdG9yYWdlTGVuZ3RoLmdwcigpOwogICAgICAg
ICAKICAgICAgICAgaWYgKCFpc0FycmF5UHJlZGljdGlvbihtX3N0YXRlLmZvck5vZGUobm9kZS5j
aGlsZDEoKSkubV90eXBlKSkKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVJlZ3MoYmFzZUdQUiksIG5vZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNy
b0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIpLCBN
YWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzQXJyYXlW
UHRyKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncyhiYXNlR1BS
KSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVh
bCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tUHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIpKSk7CiAgICAgICAgIAog
ICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpT
QXJyYXk6OnN0b3JhZ2VPZmZzZXQoKSksIHN0b3JhZ2VHUFIpOwogICAgICAgICBtX2ppdC5sb2Fk
MzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZUdQUiwgT0JKRUNUX09GRlNFVE9GKEFy
cmF5U3RvcmFnZSwgbV9sZW5ndGgpKSwgc3RvcmFnZUxlbmd0aEdQUik7CkBAIC0zMDkxLDcgKzMw
OTEsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgY2Fz
ZSBUaHJvd1JlZmVyZW5jZUVycm9yOiB7CiAgICAgICAgIC8vIFdlIGV4cGVjdCB0aGF0IHRocm93
IHN0YXRlbWVudHMgYXJlIHJhcmUgYW5kIGFyZSBpbnRlbmRlZCB0byBleGl0IHRoZSBjb2RlIGJs
b2NrCiAgICAgICAgIC8vIGFueXdheSwgc28gd2UganVzdCBPU1IgYmFjayB0byB0aGUgb2xkIEpJ
VCBmb3Igbm93LgotICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50
YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKKyAgICAgICAgdGVybWluYXRlU3BlY3VsYXRp
dmVFeGVjdXRpb24oSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgICAgICAKQEAgLTMyMjQsNyArMzIyNCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgICAgIGlmICghaXNPdGhlclByZWRpY3Rpb24obV9z
dGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpIHsKICAgICAgICAgICAgICAgICBt
X2ppdC5tb3ZlKHRoaXNWYWx1ZUdQUiwgc2NyYXRjaEdQUik7CiAgICAgICAgICAgICAgICAgbV9q
aXQuYW5kUHRyKE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoflRhZ0JpdFVuZGVmaW5lZCks
IHNjcmF0Y2hHUFIpOwotICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwg
SlNWYWx1ZVJlZ3ModGhpc1ZhbHVlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRy
KE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgc2NyYXRjaEdQUiwgTWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIocmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oVmFsdWVOdWxsKSkpKTsKKyAgICAg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEpTVmFsdWVSZWdzKHRoaXNWYWx1ZUdQUiksIG5v
ZGUuY2hpbGQxKCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIHNj
cmF0Y2hHUFIsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKHJlaW50ZXJwcmV0X2Nhc3Q8
dm9pZCo+KFZhbHVlTnVsbCkpKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAg
ICAgICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xv
YmFsT2JqZWN0Rm9yKG5vZGUuY29kZU9yaWdpbikpLCBzY3JhdGNoR1BSKTsKQEAgLTMyMzksNyAr
MzIzOSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAg
ICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgICAgICAKICAg
ICAgICAgICAgIGlmICghaXNPYmplY3RQcmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNo
aWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlw
ZSwgSlNWYWx1ZVJlZ3ModGhpc1ZhbHVlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNo
UHRyKEpJVENvbXBpbGVyOjpFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3ModGhpc1ZhbHVlR1BS
KSwgSklUQ29tcGlsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc1N0cmlu
Z1ZQdHIpKSk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncyh0
aGlzVmFsdWVHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoSklUQ29tcGlsZXI6
OkVxdWFsLCBKSVRDb21waWxlcjo6QWRkcmVzcyh0aGlzVmFsdWVHUFIpLCBKSVRDb21waWxlcjo6
VHJ1c3RlZEltbVB0cihtX2ppdC5nbG9iYWxEYXRhKCktPmpzU3RyaW5nVlB0cikpKTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgbV9qaXQubW92ZSh0aGlzVmFsdWVHUFIsIHJlc3VsdEdQUik7
CiAgICAgICAgICAgICAKQEAgLTMyODMsNyArMzI4Myw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgLy8gZG8gdGhlIHNsb3cgKHN0cnVjdHVyZS1i
YXNlZCkgY2hlY2suCiAgICAgICAgIGlmIChhdChub2RlLmNoaWxkMSgpKS5zaG91bGRTcGVjdWxh
dGVGaW5hbE9iamVjdCgpKSB7CiAgICAgICAgICAgICBpZiAoIWlzRmluYWxPYmplY3RQcmVkaWN0
aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmFkVHlwZSwgSlNWYWx1ZVJlZ3MocHJvdG9HUFIpLCBub2Rl
LmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhwcm90b0dQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNGaW5hbE9iamVjdFZQdHIpKSk7CisgICAgICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncyhwcm90b0dQUiksIG5vZGUuY2hpbGQx
KCksIG1faml0LmJyYW5jaFB0cihNYWNyb0Fzc2VtYmxlcjo6Tm90RXF1YWwsIE1hY3JvQXNzZW1i
bGVyOjpBZGRyZXNzKHByb3RvR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9q
aXQuZ2xvYmFsRGF0YSgpLT5qc0ZpbmFsT2JqZWN0VlB0cikpKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MocHJvdG9H
UFIsIEpTQ2VsbDo6c3RydWN0dXJlT2Zmc2V0KCkpLCBzY3JhdGNoR1BSKTsKICAgICAgICAgICAg
IHNsb3dQYXRoLmFwcGVuZChtX2ppdC5icmFuY2g4KE1hY3JvQXNzZW1ibGVyOjpCZWxvdywgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaEdQUiwgU3RydWN0dXJlOjp0eXBlSW5mb1R5cGVP
ZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoT2JqZWN0VHlwZSkpKTsKQEAg
LTMzOTAsNyArMzM5MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9k
ZSkKICAgICB9CiAgICAgY2FzZSBHZXRCeUlkOiB7CiAgICAgICAgIGlmICghbm9kZS5wcmVkaWN0
aW9uKCkpIHsKLSAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291
bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUpOworICAgICAgICAgICAgdGVybWluYXRlU3Bl
Y3VsYXRpdmVFeGVjdXRpb24oSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlKTsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMzQ0NiwxMiArMzQ0NiwxMiBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAgICAgICAgIEdQUlJlZyByZXN1bHRH
UFIgPSByZXN1bHQuZ3ByKCk7CiAgICAgICAgIAogICAgICAgICBpZiAoIWlzQXJyYXlQcmVkaWN0
aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS5jaGls
ZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1f
aml0Lmdsb2JhbERhdGEoKS0+anNBcnJheVZQdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQ
dHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
R1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5q
c0FycmF5VlB0cikpKTsKICAgICAgICAgCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3Nl
bWJsZXI6OkFkZHJlc3MoYmFzZUdQUiwgSlNBcnJheTo6c3RvcmFnZU9mZnNldCgpKSwgcmVzdWx0
R1BSKTsKICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHJlc3Vs
dEdQUiwgT0JKRUNUX09GRlNFVE9GKEFycmF5U3RvcmFnZSwgbV9sZW5ndGgpKSwgcmVzdWx0R1BS
KTsKICAgICAgICAgCi0gICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFs
dWVSZWdzKCksIE5vTm9kZSwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFu
LCByZXN1bHRHUFIsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCkpKTsKKyAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaDMyKE1h
Y3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgcmVzdWx0R1BSLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3Rl
ZEltbTMyKDApKSk7CiAgICAgICAgIAogICAgICAgICBpbnRlZ2VyUmVzdWx0KHJlc3VsdEdQUiwg
bV9jb21waWxlSW5kZXgpOwogICAgICAgICBicmVhazsKQEAgLTM0NjUsNyArMzQ2NSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgR1BSUmVnIHJl
c3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgCiAgICAgICAgIGlmICghaXNTdHJpbmdQ
cmVkaWN0aW9uKG1fc3RhdGUuZm9yTm9kZShub2RlLmNoaWxkMSgpKS5tX3R5cGUpKQotICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRUeXBlLCBKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9k
ZS5jaGlsZDEoKSwgbV9qaXQuYnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFzZUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
UHRyKG1faml0Lmdsb2JhbERhdGEoKS0+anNTdHJpbmdWUHRyKSkpOworICAgICAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhKU1ZhbHVlUmVncyhiYXNlR1BSKSwgbm9kZS5jaGlsZDEoKSwgbV9qaXQu
YnJhbmNoUHRyKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZUdQUiksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKG1faml0Lmdsb2JhbERh
dGEoKS0+anNTdHJpbmdWUHRyKSkpOwogICAgICAgICAKICAgICAgICAgbV9qaXQubG9hZDMyKE1h
Y3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTU3RyaW5nOjpvZmZzZXRPZkxlbmd0aCgp
KSwgcmVzdWx0R1BSKTsKIApAQCAtMzQ4MSw3ICszNDgxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlJiBub2RlKQogICAgICAgICBHUFJSZWcgcmVzdWx0R1BSID0gcmVzdWx0
LmdwcigpOwogICAgICAgICAKICAgICAgICAgaWYgKCFpc0J5dGVBcnJheVByZWRpY3Rpb24obV9z
dGF0ZS5mb3JOb2RlKG5vZGUuY2hpbGQxKCkpLm1fdHlwZSkpCi0gICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKEJhZFR5cGUsIEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBt
X2ppdC5icmFuY2hQdHIoTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6
QWRkcmVzcyhiYXNlR1BSKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xv
YmFsRGF0YSgpLT5qc0J5dGVBcnJheVZQdHIpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKEpTVmFsdWVSZWdzKGJhc2VHUFIpLCBub2RlLmNoaWxkMSgpLCBtX2ppdC5icmFuY2hQdHIo
TWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
KSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobV9qaXQuZ2xvYmFsRGF0YSgpLT5qc0J5
dGVBcnJheVZQdHIpKSk7CiAgICAgICAgIAogICAgICAgICBtX2ppdC5sb2FkUHRyKE1hY3JvQXNz
ZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIsIEpTQnl0ZUFycmF5OjpvZmZzZXRPZlN0b3JhZ2UoKSks
IHJlc3VsdEdQUik7CiAgICAgICAgIG1faml0LmxvYWQzMihNYWNyb0Fzc2VtYmxlcjo6QWRkcmVz
cyhiYXNlR1BSLCBCeXRlQXJyYXk6Om9mZnNldE9mU2l6ZSgpKSwgcmVzdWx0R1BSKTsKQEAgLTM1
MjMsNyArMzUyMyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkK
ICAgICB9CiAgICAgY2FzZSBDaGVja0Z1bmN0aW9uOiB7CiAgICAgICAgIFNwZWN1bGF0ZUNlbGxP
cGVyYW5kIGZ1bmN0aW9uKHRoaXMsIG5vZGUuY2hpbGQxKCkpOwotICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKEJhZENhY2hlLCBKU1ZhbHVlUmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFdlYWtQ
dHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFsLCBmdW5jdGlvbi5ncHIoKSwgbm9kZS5mdW5jdGlvbigp
KSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2pp
dC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgZnVuY3Rpb24uZ3ByKCksIG5v
ZGUuZnVuY3Rpb24oKSkpOwogICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAg
ICAgIGJyZWFrOwogICAgIH0KQEAgLTM1MzgsNyArMzUzOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGUoTm9kZSYgbm9kZSkKICAgICAgICAgQVNTRVJUKG5vZGUuc3RydWN0dXJlU2V0
KCkuc2l6ZSgpKTsKICAgICAgICAgCiAgICAgICAgIGlmIChub2RlLnN0cnVjdHVyZVNldCgpLnNp
emUoKSA9PSAxKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCYWRDYWNoZSwgSlNWYWx1
ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVh
bCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZz
ZXQoKSksIG5vZGUuc3RydWN0dXJlU2V0KClbMF0pKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hXZWFrUHRyKEpJVENvbXBp
bGVyOjpOb3RFcXVhbCwgSklUQ29tcGlsZXI6OkFkZHJlc3MoYmFzZS5ncHIoKSwgSlNDZWxsOjpz
dHJ1Y3R1cmVPZmZzZXQoKSksIG5vZGUuc3RydWN0dXJlU2V0KClbMF0pKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBHUFJUZW1wb3Jhcnkgc3RydWN0dXJlKHRoaXMpOwogICAgICAgICAg
ICAgCkBAIC0zNTQ5LDcgKzM1NDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5v
ZGUmIG5vZGUpCiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG5vZGUuc3RydWN0
dXJlU2V0KCkuc2l6ZSgpIC0gMTsgKytpKQogICAgICAgICAgICAgICAgIGRvbmUuYXBwZW5kKG1f
aml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6OkVxdWFsLCBzdHJ1Y3R1cmUuZ3ByKCksIG5v
ZGUuc3RydWN0dXJlU2V0KClbaV0pKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhCYWRDYWNoZSwgSlNWYWx1ZVJlZ3MoKSwgTm9Ob2RlLCBtX2ppdC5icmFuY2hX
ZWFrUHRyKEpJVENvbXBpbGVyOjpOb3RFcXVhbCwgc3RydWN0dXJlLmdwcigpLCBub2RlLnN0cnVj
dHVyZVNldCgpLmxhc3QoKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhKU1ZhbHVl
UmVncygpLCBOb05vZGUsIG1faml0LmJyYW5jaFdlYWtQdHIoSklUQ29tcGlsZXI6Ok5vdEVxdWFs
LCBzdHJ1Y3R1cmUuZ3ByKCksIG5vZGUuc3RydWN0dXJlU2V0KCkubGFzdCgpKSk7CiAgICAgICAg
ICAgICAKICAgICAgICAgICAgIGRvbmUubGluaygmbV9qaXQpOwogICAgICAgICB9CkBAIC0zNzA1
LDcgKzM3MDUsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUmIG5vZGUpCiAK
ICAgICAgICAgLy8gU3BlY3VsYXRlIHRoYXQgYmFzZSAnSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZScuCiAgICAgICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3MoYmFz
ZS5ncHIoKSwgSlNDZWxsOjpzdHJ1Y3R1cmVPZmZzZXQoKSksIHN0cnVjdHVyZS5ncHIoKSk7Ci0g
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIE5vTm9k
ZSwgbV9qaXQuYnJhbmNoVGVzdDgoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVy
OjpBZGRyZXNzKHN0cnVjdHVyZS5ncHIoKSwgU3RydWN0dXJlOjp0eXBlSW5mb0ZsYWdzT2Zmc2V0
KCkpLCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKEltcGxlbWVudHNEZWZhdWx0SGFzSW5z
dGFuY2UpKSk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soSlNWYWx1ZVJlZ3MoKSwgTm9Ob2Rl
LCBtX2ppdC5icmFuY2hUZXN0OChNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc3RydWN0dXJlLmdwcigpLCBTdHJ1Y3R1cmU6OnR5cGVJbmZvRmxhZ3NPZmZzZXQo
KSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSkpKTsKIAogICAgICAgICBub1Jlc3VsdChtX2NvbXBpbGVJbmRleCk7CiAgICAgICAgIGJy
ZWFrOwpAQCAtMzc5NCw3ICszNzk0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShO
b2RlJiBub2RlKQogICAgIH0KIAogICAgIGNhc2UgRm9yY2VPU1JFeGl0OiB7Ci0gICAgICAgIHRl
cm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBO
b05vZGUpOworICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihKU1ZhbHVlUmVn
cygpLCBOb05vZGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDQ5YmZkZDAuLmJh
ZmI1YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcApAQCAtNDk1LDcgKzQ5NSw3IEBAIENhbGxGcmFtZSogbG9hZFZhcmFyZ3MoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBKU1ZhbHVlCiAg
ICAgaWYgKGFzT2JqZWN0KGFyZ3VtZW50cyktPmNsYXNzSW5mbygpID09ICZBcmd1bWVudHM6OnNf
aW5mbykgewogICAgICAgICBBcmd1bWVudHMqIGFyZ3NPYmplY3QgPSBhc0FyZ3VtZW50cyhhcmd1
bWVudHMpOwogICAgICAgICB1bnNpZ25lZCBhcmdDb3VudCA9IGFyZ3NPYmplY3QtPmxlbmd0aChj
YWxsRnJhbWUpOwotICAgICAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6
Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBmaXJzdEZyZWVSZWdpc3RlciArIENhbGxG
cmFtZTo6b2Zmc2V0Rm9yKGFyZ0NvdW50ICsgMSkpOworICAgICAgICBDYWxsRnJhbWUqIG5ld0Nh
bGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBmaXJz
dEZyZWVSZWdpc3RlciArIGFyZ0NvdW50ICsgMSArIFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVh
ZGVyU2l6ZSk7CiAgICAgICAgIGlmIChhcmdDb3VudCA+IEFyZ3VtZW50czo6TWF4QXJndW1lbnRz
IHx8ICFyZWdpc3RlckZpbGUtPmdyb3cobmV3Q2FsbEZyYW1lLT5yZWdpc3RlcnMoKSkpIHsKICAg
ICAgICAgICAgIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNr
T3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOwogICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC01MDks
NyArNTA5LDcgQEAgQ2FsbEZyYW1lKiBsb2FkVmFyYXJncyhDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
UmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIEpTVmFsdWUKICAgICBpZiAoaXNKU0FycmF5KCZj
YWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgYXJndW1lbnRzKSkgewogICAgICAgICBKU0FycmF5KiBh
cnJheSA9IGFzQXJyYXkoYXJndW1lbnRzKTsKICAgICAgICAgdW5zaWduZWQgYXJnQ291bnQgPSBh
cnJheS0+bGVuZ3RoKCk7Ci0gICAgICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ2FsbEZy
YW1lOjpjcmVhdGUoY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIGZpcnN0RnJlZVJlZ2lzdGVyICsg
Q2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJnQ291bnQgKyAxKSk7CisgICAgICAgIENhbGxGcmFtZSog
bmV3Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSAr
IGZpcnN0RnJlZVJlZ2lzdGVyICsgYXJnQ291bnQgKyAxICsgUmVnaXN0ZXJGaWxlOjpDYWxsRnJh
bWVIZWFkZXJTaXplKTsKICAgICAgICAgaWYgKGFyZ0NvdW50ID4gQXJndW1lbnRzOjpNYXhBcmd1
bWVudHMgfHwgIXJlZ2lzdGVyRmlsZS0+Z3JvdyhuZXdDYWxsRnJhbWUtPnJlZ2lzdGVycygpKSkg
ewogICAgICAgICAgICAgY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRl
U3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZSk7CiAgICAgICAgICAgICByZXR1cm4gMDsKQEAg
LTUyMiw3ICs1MjIsNyBAQCBDYWxsRnJhbWUqIGxvYWRWYXJhcmdzKENhbGxGcmFtZSogY2FsbEZy
YW1lLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwgSlNWYWx1ZQogCiAgICAgSlNPYmplY3Qq
IGFyZ09iamVjdCA9IGFzT2JqZWN0KGFyZ3VtZW50cyk7CiAgICAgdW5zaWduZWQgYXJnQ291bnQg
PSBhcmdPYmplY3QtPmdldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+cHJvcGVydHlOYW1lcygpLmxl
bmd0aCkudG9VSW50MzIoY2FsbEZyYW1lKTsKLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9
IENhbGxGcmFtZTo6Y3JlYXRlKGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBmaXJzdEZyZWVSZWdp
c3RlciArIENhbGxGcmFtZTo6b2Zmc2V0Rm9yKGFyZ0NvdW50ICsgMSkpOworICAgIENhbGxGcmFt
ZSogbmV3Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUoY2FsbEZyYW1lLT5yZWdpc3RlcnMo
KSArIGZpcnN0RnJlZVJlZ2lzdGVyICsgYXJnQ291bnQgKyAxICsgUmVnaXN0ZXJGaWxlOjpDYWxs
RnJhbWVIZWFkZXJTaXplKTsKICAgICBpZiAoYXJnQ291bnQgPiBBcmd1bWVudHM6Ok1heEFyZ3Vt
ZW50cyB8fCAhcmVnaXN0ZXJGaWxlLT5ncm93KG5ld0NhbGxGcmFtZS0+cmVnaXN0ZXJzKCkpKSB7
CiAgICAgICAgIGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNr
T3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUpOwogICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Bcmd1bWVudHMuY3BwCmluZGV4IDJlNTA4ZWIuLjE4ODY4ZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FyZ3VtZW50cy5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJndW1lbnRzLmNwcApAQCAtNTQs
MTIgKzU0LDYgQEAgdm9pZCBBcmd1bWVudHM6OnZpc2l0Q2hpbGRyZW4oSlNDZWxsKiBjZWxsLCBT
bG90VmlzaXRvciYgdmlzaXRvcikKIAogdm9pZCBBcmd1bWVudHM6OmNvcHlUb0FyZ3VtZW50cyhF
eGVjU3RhdGUqIGV4ZWMsIENhbGxGcmFtZSogY2FsbEZyYW1lLCB1aW50MzJfdCBsZW5ndGgpCiB7
Ci0gICAgaWYgKFVOTElLRUxZKGQtPm92ZXJyb2RlTGVuZ3RoKSkgewotICAgICAgICBsZW5ndGgg
PSBtaW4oZ2V0KGV4ZWMsIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgpLnRvVUludDMyKGV4
ZWMpLCBsZW5ndGgpOwotICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBp
KyspCi0gICAgICAgICAgICBjYWxsRnJhbWUtPnNldEFyZ3VtZW50KGksIGdldChleGVjLCBpKSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9CiAgICAgQVNTRVJUKGxlbmd0aCA9PSB0aGlzLT5sZW5n
dGgoZXhlYykpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAg
ICAgICAgaWYgKCFkLT5kZWxldGVkQXJndW1lbnRzIHx8ICFkLT5kZWxldGVkQXJndW1lbnRzW2ld
KQpAQCAtNzEsMTIgKzY1LDYgQEAgdm9pZCBBcmd1bWVudHM6OmNvcHlUb0FyZ3VtZW50cyhFeGVj
U3RhdGUqIGV4ZWMsIENhbGxGcmFtZSogY2FsbEZyYW1lLCB1aW50MzJfdAogCiB2b2lkIEFyZ3Vt
ZW50czo6ZmlsbEFyZ0xpc3QoRXhlY1N0YXRlKiBleGVjLCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYg
YXJncykKIHsKLSAgICBpZiAoVU5MSUtFTFkoZC0+b3ZlcnJvZGVMZW5ndGgpKSB7Ci0gICAgICAg
IHVuc2lnbmVkIGxlbmd0aCA9IGdldChleGVjLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3Ro
KS50b1VJbnQzMihleGVjKTsgCi0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBsZW5n
dGg7IGkrKykgCi0gICAgICAgICAgICBhcmdzLmFwcGVuZChnZXQoZXhlYywgaSkpOyAKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KICAgICB1aW50MzJfdCBsZW5ndGggPSB0aGlzLT5sZW5ndGgoZXhl
Yyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBp
ZiAoIWQtPmRlbGV0ZWRBcmd1bWVudHMgfHwgIWQtPmRlbGV0ZWRBcmd1bWVudHNbaV0pCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJpc3RpY3MuY3BwCmluZGV4IGEwYTk4ODMu
LjU1OGE0NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJp
c3RpY3MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJpc3RpY3Mu
Y3BwCkBAIC02Nyw4ICs2Nyw2IEBAIGRvdWJsZSBjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsK
IHVuc2lnbmVkIGxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50OwogdW5zaWduZWQgY291
bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQ7CiAKLWRvdWJsZSBvc3JFeGl0UHJvbWluZW5jZUZv
ckZyZXF1ZW50RXhpdFNpdGU7Ci0KIHVuc2lnbmVkIGxhcmdlRmFpbENvdW50VGhyZXNob2xkQmFz
ZTsKIHVuc2lnbmVkIGxhcmdlRmFpbENvdW50VGhyZXNob2xkQmFzZUZvckxvb3A7CiAKQEAgLTE0
OSw4ICsxNDcsNiBAQCB2b2lkIGluaXRpYWxpemVIZXVyaXN0aWNzKCkKICAgICBTRVQoY291bGRU
YWtlU2xvd0Nhc2VUaHJlc2hvbGQsICAgICAgIDAuMDUpOyAvLyBTaG91bGRuJ3QgYmUgemVybyBi
ZWNhdXNlIHNvbWUgb3BzIHdpbGwgc3B1cmlvdXNseSB0YWtlIHNsb3cgY2FzZSwgZm9yIGV4YW1w
bGUgZm9yIGxpbmtpbmcgb3IgY2FjaGluZy4KICAgICBTRVQobGlrZWx5VG9UYWtlU2xvd0Nhc2VN
aW5pbXVtQ291bnQsIDEwMCk7CiAgICAgU0VUKGNvdWxkVGFrZVNsb3dDYXNlTWluaW11bUNvdW50
LCAgICAxMCk7Ci0gICAgCi0gICAgU0VUKG9zckV4aXRQcm9taW5lbmNlRm9yRnJlcXVlbnRFeGl0
U2l0ZSwgMC4zKTsKIAogICAgIFNFVChsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2UsICAgICAg
ICAyMCk7CiAgICAgU0VUKGxhcmdlRmFpbENvdW50VGhyZXNob2xkQmFzZUZvckxvb3AsIDEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlzdGljcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSGV1cmlzdGljcy5oCmluZGV4IGYyNjE1Mzcu
LmVmOWE4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0hldXJp
c3RpY3MuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9IZXVyaXN0aWNzLmgK
QEAgLTUzLDggKzUzLDYgQEAgZXh0ZXJuIGRvdWJsZSBjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9s
ZDsKIGV4dGVybiB1bnNpZ25lZCBsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudDsKIGV4
dGVybiB1bnNpZ25lZCBjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudDsKIAotZXh0ZXJuIGRv
dWJsZSBvc3JFeGl0UHJvbWluZW5jZUZvckZyZXF1ZW50RXhpdFNpdGU7Ci0KIGV4dGVybiB1bnNp
Z25lZCBsYXJnZUZhaWxDb3VudFRocmVzaG9sZEJhc2U7CiBleHRlcm4gdW5zaWduZWQgbGFyZ2VG
YWlsQ291bnRUaHJlc2hvbGRCYXNlRm9yTG9vcDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi90ZXh0L0F0b21pY1N0cmluZy5oCmluZGV4IDcyYzhjZjQuLmYxYjg0ZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9BdG9taWNTdHJpbmcuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvQXRvbWljU3RyaW5nLmgKQEAgLTEzOSw3ICsx
MzksNyBAQCBwcml2YXRlOgogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJp
bmcmIGEsIGNvbnN0IEF0b21pY1N0cmluZyYgYikgeyByZXR1cm4gYS5pbXBsKCkgPT0gYi5pbXBs
KCk7IH0KIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBMQ2hhciop
OwogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0IGNo
YXIqIGIpIHsgcmV0dXJuIFdURjo6ZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgTENoYXIqPihiKSk7IH0KLWlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgQXRvbWljU3Ry
aW5nJiBhLCBjb25zdCBWZWN0b3I8VUNoYXI+JiBiKSB7IHJldHVybiBhLmltcGwoKSAmJiBlcXVh
bChhLmltcGwoKSwgYi5kYXRhKCksIGIuc2l6ZSgpKTsgfSAgICAKK2lubGluZSBib29sIG9wZXJh
dG9yPT0oY29uc3QgQXRvbWljU3RyaW5nJiBhLCBjb25zdCBWZWN0b3I8VUNoYXI+JiBiKSB7IHJl
dHVybiBhLmltcGwoKSAmJiBlcXVhbChzdGF0aWNfY2FzdDxTdHJpbmdJbXBsKj4oYS5pbXBsKCkp
LCBiLmRhdGEoKSwgYi5zaXplKCkpOyB9ICAgIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBBdG9taWNTdHJpbmcmIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gZXF1YWwoYS5pbXBs
KCksIGIuaW1wbCgpKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMQ2hhciogYSwg
Y29uc3QgQXRvbWljU3RyaW5nJiBiKSB7IHJldHVybiBiID09IGE7IH0KIGlubGluZSBib29sIG9w
ZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBBdG9taWNTdHJpbmcmIGIpIHsgcmV0dXJu
IGVxdWFsKGEuaW1wbCgpLCBiLmltcGwoKSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCmluZGV4IDZiNTc1OTAuLmU3MzEzMTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtNTYyLDkyICs1NjIsOTcgQEAg
aW5saW5lIGJvb2wgZXF1YWwoY29uc3QgU3RyaW5nSW1wbCogYSwgY29uc3QgY2hhciogYiwgdW5z
aWduZWQgbGVuZ3RoKSB7IHJldHVybgogaW5saW5lIGJvb2wgZXF1YWwoY29uc3QgTENoYXIqIGEs
IFN0cmluZ0ltcGwqIGIpIHsgcmV0dXJuIGVxdWFsKGIsIGEpOyB9CiBpbmxpbmUgYm9vbCBlcXVh
bChjb25zdCBjaGFyKiBhLCBTdHJpbmdJbXBsKiBiKSB7IHJldHVybiBlcXVhbChiLCByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYSkpOyB9CiBib29sIGVxdWFsKGNvbnN0IFN0cmluZ0lt
cGwqLCBjb25zdCBVQ2hhciosIHVuc2lnbmVkKTsKK3RlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlw
ZUwsIHR5cGVuYW1lIENoYXJUeXBlUj4KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgZXF1YWwoY29u
c3QgQ2hhclR5cGVMKiwgY29uc3QgQ2hhclR5cGVSKiwgdW5zaWduZWQpOwogCiAvLyBEbyBjb21w
YXJpc29ucyA4IG9yIDQgYnl0ZXMtYXQtYS10aW1lIG9uIGFyY2hpdGVjdHVyZXMgd2hlcmUgaXQn
cyBzYWZlLgogI2lmIENQVShYODZfNjQpCi1BTFdBWVNfSU5MSU5FIGJvb2wgZXF1YWwoY29uc3Qg
TENoYXIqIGEsIGNvbnN0IExDaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpCit0ZW1wbGF0ZSA8Pgor
QUxXQVlTX0lOTElORSBib29sIGVxdWFsPExDaGFyLCBMQ2hhcj4oY29uc3QgTENoYXIqIGEsIGNv
bnN0IExDaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgdW5zaWduZWQgZHdvcmRMZW5n
dGggPSBsZW5ndGggPj4gMzsKLQorICAgIAogICAgIGlmIChkd29yZExlbmd0aCkgewogICAgICAg
ICBjb25zdCB1aW50NjRfdCogYURXb3JkQ2hhcmFjdGVycyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDY0X3QqPihhKTsKICAgICAgICAgY29uc3QgdWludDY0X3QqIGJEV29yZENoYXJhY3Rl
cnMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ2NF90Kj4oYik7Ci0KKyAgICAgICAgCiAg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gZHdvcmRMZW5ndGg7ICsraSkgewogICAg
ICAgICAgICAgaWYgKCphRFdvcmRDaGFyYWN0ZXJzKysgIT0gKmJEV29yZENoYXJhY3RlcnMrKykK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KLQorICAgICAgICAKICAg
ICAgICAgYSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihhRFdvcmRDaGFyYWN0ZXJz
KTsKICAgICAgICAgYiA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihiRFdvcmRDaGFy
YWN0ZXJzKTsKICAgICB9Ci0KKyAgICAKICAgICBpZiAobGVuZ3RoICYgNCkgewogICAgICAgICBp
ZiAoKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihhKSAhPSAqcmVpbnRlcnByZXRf
Y2FzdDxjb25zdCB1aW50MzJfdCo+KGIpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCisg
ICAgICAgIAogICAgICAgICBhICs9IDQ7CiAgICAgICAgIGIgKz0gNDsKICAgICB9Ci0KKyAgICAK
ICAgICBpZiAobGVuZ3RoICYgMikgewogICAgICAgICBpZiAoKnJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDE2X3QqPihhKSAhPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KGIp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCisgICAgICAgIAogICAgICAgICBhICs9IDI7
CiAgICAgICAgIGIgKz0gMjsKICAgICB9Ci0KKyAgICAKICAgICBpZiAobGVuZ3RoICYgMSAmJiAo
KmEgIT0gKmIpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0KKyAgICAKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotQUxXQVlTX0lOTElORSBib29sIGVxdWFsKGNvbnN0IFVDaGFyKiBhLCBjb25zdCBV
Q2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKQordGVtcGxhdGUgPD4KK0FMV0FZU19JTkxJTkUgYm9v
bCBlcXVhbDxVQ2hhciwgVUNoYXI+KGNvbnN0IFVDaGFyKiBhLCBjb25zdCBVQ2hhciogYiwgdW5z
aWduZWQgbGVuZ3RoKQogewogICAgIHVuc2lnbmVkIGR3b3JkTGVuZ3RoID0gbGVuZ3RoID4+IDI7
CiAgICAgCiAgICAgaWYgKGR3b3JkTGVuZ3RoKSB7CiAgICAgICAgIGNvbnN0IHVpbnQ2NF90KiBh
RFdvcmRDaGFyYWN0ZXJzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50NjRfdCo+KGEpOwog
ICAgICAgICBjb25zdCB1aW50NjRfdCogYkRXb3JkQ2hhcmFjdGVycyA9IHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDY0X3QqPihiKTsKLQorICAgICAgICAKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSAhPSBkd29yZExlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICBpZiAoKmFEV29y
ZENoYXJhY3RlcnMrKyAhPSAqYkRXb3JkQ2hhcmFjdGVycysrKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQotCisgICAgICAgIAogICAgICAgICBhID0gcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCBVQ2hhcio+KGFEV29yZENoYXJhY3RlcnMpOwogICAgICAgICBiID0gcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBVQ2hhcio+KGJEV29yZENoYXJhY3RlcnMpOwogICAgIH0KLQor
ICAgIAogICAgIGlmIChsZW5ndGggJiAyKSB7CiAgICAgICAgIGlmICgqcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCB1aW50MzJfdCo+KGEpICE9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90
Kj4oYikpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KKyAgICAgICAgCiAgICAgICAgIGEg
Kz0gMjsKICAgICAgICAgYiArPSAyOwogICAgIH0KLQorICAgIAogICAgIGlmIChsZW5ndGggJiAx
ICYmICgqYSAhPSAqYikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLQorICAgIAogICAgIHJldHVy
biB0cnVlOwogfQogI2VsaWYgQ1BVKFg4NikKLUFMV0FZU19JTkxJTkUgYm9vbCBlcXVhbChjb25z
dCBMQ2hhciogYSwgY29uc3QgTENoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCkKK3RlbXBsYXRlIDw+
CitBTFdBWVNfSU5MSU5FIGJvb2wgZXF1YWw8TENoYXIsIExDaGFyPihjb25zdCBMQ2hhciogYSwg
Y29uc3QgTENoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBjb25zdCB1aW50MzJfdCog
YUNoYXJhY3RlcnMgPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYSk7CiAgICAg
Y29uc3QgdWludDMyX3QqIGJDaGFyYWN0ZXJzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
MzJfdCo+KGIpOwotCisgICAgCiAgICAgdW5zaWduZWQgd29yZExlbmd0aCA9IGxlbmd0aCA+PiAy
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgIT0gd29yZExlbmd0aDsgKytpKSB7CiAgICAg
ICAgIGlmICgqYUNoYXJhY3RlcnMrKyAhPSAqYkNoYXJhY3RlcnMrKykKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9Ci0KKyAgICAKICAgICBsZW5ndGggJj0gMzsKLQorICAgIAogICAg
IGlmIChsZW5ndGgpIHsKICAgICAgICAgY29uc3QgTENoYXIqIGFSZW1haW5kZXIgPSByZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYUNoYXJhY3RlcnMpOwogICAgICAgICBjb25zdCBMQ2hh
ciogYlJlbWFpbmRlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihiQ2hhcmFjdGVy
cyk7CkBAIC02NTcsMTEgKzY2MiwxMiBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgZXF1YWwoY29uc3Qg
TENoYXIqIGEsIGNvbnN0IExDaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQotCisgICAgCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLUFMV0FZU19JTkxJTkUgYm9vbCBlcXVhbChjb25zdCBVQ2hhciogYSwgY29uc3Qg
VUNoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCkKK3RlbXBsYXRlIDw+CitBTFdBWVNfSU5MSU5FIGJv
b2wgZXF1YWw8VUNoYXIsIFVDaGFyPihjb25zdCBVQ2hhciogYSwgY29uc3QgVUNoYXIqIGIsIHVu
c2lnbmVkIGxlbmd0aCkKIHsKICAgICBjb25zdCB1aW50MzJfdCogYUNoYXJhY3RlcnMgPSByZWlu
dGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYSk7CiAgICAgY29uc3QgdWludDMyX3QqIGJD
aGFyYWN0ZXJzID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJfdCo+KGIpOwpAQCAtNjc3
LDQ1ICs2ODMsMTYgQEAgQUxXQVlTX0lOTElORSBib29sIGVxdWFsKGNvbnN0IFVDaGFyKiBhLCBj
b25zdCBVQ2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKQogICAgIAogICAgIHJldHVybiB0cnVlOwog
fQotI2Vsc2UKLUFMV0FZU19JTkxJTkUgYm9vbCBlcXVhbChjb25zdCBMQ2hhciogYSwgY29uc3Qg
TENoYXIqIGIsIHVuc2lnbmVkIGxlbmd0aCkKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
ICE9IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChhW2ldICE9IGJbaV0pCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLUFMV0FZU19J
TkxJTkUgYm9vbCBlcXVhbChjb25zdCBVQ2hhciogYSwgY29uc3QgVUNoYXIqIGIsIHVuc2lnbmVk
IGxlbmd0aCkKLXsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpICE9IGxlbmd0aDsgKytpKSB7
Ci0gICAgICAgIGlmIChhW2ldICE9IGJbaV0pCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19CiAjZW5kaWYKIAotQUxXQVlTX0lOTElORSBib29s
IGVxdWFsKGNvbnN0IExDaGFyKiBhLCBjb25zdCBVQ2hhciogYiwgdW5zaWduZWQgbGVuZ3RoKQor
dGVtcGxhdGUgPHR5cGVuYW1lIENoYXJUeXBlTCwgdHlwZW5hbWUgQ2hhclR5cGVSPgorQUxXQVlT
X0lOTElORSBib29sIGVxdWFsKGNvbnN0IENoYXJUeXBlTCogYSwgY29uc3QgQ2hhclR5cGVSKiBi
LCB1bnNpZ25lZCBsZW5ndGgpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBsZW5n
dGg7ICsraSkgewogICAgICAgICBpZiAoYVtpXSAhPSBiW2ldKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1BTFdBWVNfSU5MSU5FIGJv
b2wgZXF1YWwoY29uc3QgVUNoYXIqIGEsIGNvbnN0IExDaGFyKiBiLCB1bnNpZ25lZCBsZW5ndGgp
Ci17Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSAhPSBsZW5ndGg7ICsraSkgewotICAgICAg
ICBpZiAoYVtpXSAhPSBiW2ldKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQor
ICAgIAogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGQ2ODRh
ZGEuLjJiZGQzOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC05MTUsNyArOTE1LDYgQEAgU0VU
KFdlYkNvcmVfU09VUkNFUwogCiAgICAgbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5j
cHAKICAgICBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAKLSAgICBs
b2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmNwcAogICAgIGxvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKICAgICBsb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAogICAgIGxvYWRlci9E
b2N1bWVudFdyaXRlci5jcHAKQEAgLTExNzcsNyArMTE3Niw2IEBAIFNFVChXZWJDb3JlX1NPVVJD
RVMKICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmNwcAogICAgIHBsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUhhbmRsZS5jcHAKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5jcHAK
ICAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCiAgICAgcGxhdGZv
cm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L1NvY2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmQxMWYzZS4uOWVjMTc4
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSw1MzggKzEsMyBAQAotMjAxMS0xMi0xMyAgSmFtZXMgU2ltb25z
ZW4gIDxzaW1vbmphbUBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgVW5yZXZpZXdlZCwgQ2hyb21p
dW0gTWFjIGJ1aWxkIGZpeC4KLQotICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuaDoK
LQotMjAxMS0xMi0xMyAgQWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KLQotICAgICAg
ICBVcGRhdGUgdmFyaWFibGUgbmFtZXMgaW4gTmFtZWROb2RlTWFwIG1ldGhvZHMgdG8gbWF0Y2gg
V2ViS2l0IHN0eWxlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NDQzNwotCi0gICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCi0KLSAgICAgICAg
V2hpbGUgcmVhZGluZyB0aGVzZSBtZXRob2RzIGluIHByZXBhcmF0aW9uIGZvciBhIHJlZmFjdG9y
LCBJIGZvdW5kCi0gICAgICAgIHRoZW0gaGFyZCB0byB1bmRlcnN0YW5kIGR1ZSB0byBzaG9ydCBv
ciBjb25mdXNpbmcgdmFyaWFibGUgbmFtZXMuCi0gICAgICAgIEkgdGhpbmsgdGhlIG5ldyBuYW1l
cyBhcmUgbXVjaCBjbGVhcmVyLCBhbmQgbWF0Y2ggV2ViS2l0IHN0eWxlLgotCi0gICAgICAgICog
ZG9tL05hbWVkTm9kZU1hcC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpOYW1lZE5vZGVNYXA6OnNl
dE5hbWVkSXRlbSk6Ci0gICAgICAgIChXZWJDb3JlOjpOYW1lZE5vZGVNYXA6OnJlbW92ZU5hbWVk
SXRlbSk6Ci0KLTIwMTEtMTItMTMgIFhpbmduYW4gV2FuZyAgPHhpbmduYW4ud2FuZ0BpbnRlbC5j
b20+Ci0KLSAgICAgICAgSW1wbGVtZW50IGEgZnVuY3Rpb24gb2YgdmVjdG9yIG11bHRpcGx5IHdp
dGggU1NFMiBvcHRpbWl6YXRpb24gaW4gVmVjdG9yTWF0aC5jcHAuCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDA0OAotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEJlbmphbWluIFBvdWxhaW4uCi0KLSAgICAgICAgVGhlIHZtdWwgaXMgYSBmdW5jdGlvbiBm
b3IgYW4gZWxlbWVudC1ieS1lbGVtZW50IG11bHRpcGx5IG9mIHR3byBmbG9hdCB2ZWN0b3JzIGFu
ZCB3ZSAKLSAgICAgICAgZ2V0IGFib3V0IDMuNHggcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgd2l0
aCBTU0UyIG9wdGltaXphdGlvbiBjb21wYXJlZCB3aXRoIHRoZSBjb21tb24gCi0gICAgICAgIG11
bHRpcGx5LgotCi0gICAgICAgIFVzZSB2bXVsIGluIEF1ZGlvQnVzOjpjb3B5V2l0aFNhbXBsZUFj
Y3VyYXRlR2FpblZhbHVlc0Zyb20oKS4KLQotICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL0F1ZGlv
QnVzLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVzOjpjb3B5V2l0aFNhbXBsZUFjY3Vy
YXRlR2FpblZhbHVlc0Zyb20pOgotICAgICAgICAqIHBsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGgu
Y3BwOgotICAgICAgICAoV2ViQ29yZTo6VmVjdG9yTWF0aDo6dm11bCk6Ci0gICAgICAgICogcGxh
dGZvcm0vYXVkaW8vVmVjdG9yTWF0aC5oOgotCi0yMDExLTEyLTEzICBWc2V2b2xvZCBWbGFzb3Yg
IDx2c2V2aWtAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFdlYiBJbnNwZWN0b3I6IFtSZWdyZXNz
aW9uXSBSZXNvdXJjZUhlYWRlcnNWaWV3IHNlY3Rpb25zIHNob3VsZCBiZSBleHBhbmRlZCBieSBk
ZWZhdWx0LgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzQ0MzQKLQotICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgotCi0gICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC90cmVlb3V0bGluZS5qczoKLQotMjAxMS0xMi0xMyAgVnNldm9s
b2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KLQotICAgICAgICBXZWIgSW5zcGVjdG9y
OiBOZXR3b3JrIGl0ZW0gdmlldyBkb2VzIG5vdCBjb3JyZWN0bHkgZGVjb2RlICIrIiBpbiByZXF1
ZXN0IHBhcmFtZXRlcnMuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NDQyMgotCi0gICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCi0KLSAg
ICAgICAgVGVzdDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9yZXF1ZXN0LXBhcmFtZXRl
cnMtZGVjb2RpbmcuaHRtbAotCi0gICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZUhlYWRlcnNWaWV3LmpzOgotICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVyc1Zp
ZXcucHJvdG90eXBlLl9mb3JtYXRQYXJhbWV0ZXIpOgotICAgICAgICAoV2ViSW5zcGVjdG9yLlJl
c291cmNlSGVhZGVyc1ZpZXcucHJvdG90eXBlLl9yZWZyZXNoUGFybXMpOgotCi0yMDExLTEyLTEz
ICBBbG9rIFByaXlhZGFyc2hpICA8YWxva3BAY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFtjaHJv
bWl1bV0gY29tcG9zaXRpbmcvbWFza3MgbGF5b3V0IHRlc3RzIGZhaWwgd2l0aCBhY2NlbGVyYXRl
ZCBkcmF3aW5nCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03Mjc2MAotCi0gICAgICAgIFJldmlld2VkIGJ5IFN0ZXBoZW4gV2hpdGUuCi0KLSAgICAgICAg
QWNjZWxlcmF0ZWQgZHJhd2luZyBwYXRoIHVzZWQgdG8gcmVuZGVyIGJvdHRvbS11cCB1cHJpZ2h0
IHRleHR1cmVzLCB3aGljaCB3YXMgb3Bwb3NpdGUgb2Ygd2hhdCB0aGUgc29mdHdhcmUgcGF0aCBy
ZW5kZXJlZC4KLSAgICAgICAgVGhlIHRleHR1cmVzIHByb2R1Y2VkIGJ5IHRoZSBhY2NlbGVyYXRl
ZCBwYXRoIHdhcyBmbGlwcGVkIGFsb25nIFkgaW4gdGhlIHNoYWRlciB0byBtYWtlIGl0IHVwc2lk
ZSBkb3duIGFzIGV4cGVjdGVkIGJ5IHRoZSBjb21wb3NpdG9yLgotICAgICAgICBUaGlzIHN0cmF0
ZWd5IGRvZXMgbm90IHdvcmsgaW4gY2FzZSBvZiBtYXNrcyB3aGljaCBkbyBub3QgZ28gdGhyb3Vn
aCBhIHNoYWRlciBhbmQgaGVuY2UgZG8gbm90IGdldCBmbGlwcGVkLAotICAgICAgICB3aGljaCBy
ZXN1bHRzIGluIGEgY2FzZSB3aGVyZSB0ZXh0dXJlIGluIHRoZSByZW5kZXIgc3VyZmFjZSBpcyB0
b3AtZG93biwgd2hpbGUgdGhhdCBpbiB0aGUgbWFzayBpcyBib3R0b20tdXAuCi0gICAgICAgIFRo
aXMgcGF0Y2ggbWFrZXMgYWNjZWxlcmF0ZWQgZHJhd2luZyBwYXRoIHJlbmRlciB0ZXh0dXJlcyBp
biB0aGUgc2FtZSBvcmllbnRhdGlvbiBhcyB0aGUgc29mdHdhcmUgcGF0aC4KLSAgICAgICAgTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6T3JpZW50YXRpb24gd2FzIGFkZGVkIHRvIHN1cHBvcnQgdGhlIGRp
ZmZlcmVuY2UgaW4gdGV4dHVyZSBvcmllbnRhdGlvbiBiZXR3ZWVuIHNvZnR3YXJlIGFuZCBhY2Nl
bGVyYXRlZCBwYXRocy4KLSAgICAgICAgTm93IHRoYXQgYm90aCBwYXRocyBwcm9kdWNlIHRleHR1
cmVzIGluIHRoZSBzYW1lIG9yaWVudGF0aW9uLCB0aGVyZSBpcyBubyBuZWVkIGZvciBpdC4KLQot
ICAgICAgICBObyBuZXcgdGVzdHMgbmVlZGVkLiBDb3ZlcmVkIGJ5IGV4aXN0aW5nIGNvbXBvc2l0
aW5nIHRlc3RzLgotCi0gICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFw
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oOgotICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaDoKLSAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVCdWZm
ZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVUZXh0dXJlUmVjdCk6
Ci0gICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmg6Ci0gICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcDoKLSAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmg6Ci0gICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcDoKLSAgICAgICAgKFdl
YkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6VGlsZWRMYXllckNocm9taXVtKToKLSAgICAgICAg
KFdlYkNvcmU6OlRpbGVkTGF5ZXJDaHJvbWl1bTo6c2V0TGF5ZXJUcmVlSG9zdCk6Ci0gICAgICAg
IChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnB1c2hQcm9wZXJ0aWVzVG8pOgotICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5oOgotICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3Bw
OgotICAgICAgICAoV2ViQ29yZTo6Q0NUaWxlZExheWVySW1wbDo6ZHJhd1RpbGVzKToKLSAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmg6Ci0g
ICAgICAgIChXZWJDb3JlOjpDQ1RpbGVkTGF5ZXJJbXBsOjpzZXRTa2lwc0RyYXcpOgotCi0yMDEx
LTEyLTA5ICBaaGVueWFvIE1vICA8em1vQGdvb2dsZS5jb20+Ci0KLSAgICAgICAgSW1wbGVtZW50
IEdMRVMyIENoZWNrRnJhbWVidWZmZXJTdGF0dXMoKSBiZWhhdmlvcgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQyMjgKLQotICAgICAgICBSZXZpZXdl
ZCBieSBLZW5uZXRoIFJ1c3NlbGwuCi0KLSAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTEZyYW1l
YnVmZmVyLmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OldlYkdMRnJhbWVidWZmZXI6OmdldENvbG9y
QnVmZmVyV2lkdGgpOiBBZGQgQ29sb3JCdWZmZXIgdG8gdGhlIGZ1bmN0aW9uIG5hbWUgLSB0aGlz
IGlzIG1vcmUgYWNjdXJhdGUuCi0gICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1lYnVmZmVyOjpn
ZXRDb2xvckJ1ZmZlckhlaWdodCk6IERpdHRvLgotICAgICAgICAoV2ViQ29yZTo6V2ViR0xGcmFt
ZWJ1ZmZlcjo6Y2hlY2tTdGF0dXMpOiBJbXBsZW1lbnQgZnVsbCBzZW1hbnRpY3Mgb2YgR0xFUzIg
Z2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKCkuCi0gICAgICAgIChXZWJDb3JlOjpXZWJHTEZyYW1l
YnVmZmVyOjpvbkFjY2Vzcyk6IENhbGwgY2hlY2tTdGF0dXMoKS4KLSAgICAgICAgKiBodG1sL2Nh
bnZhcy9XZWJHTEZyYW1lYnVmZmVyLmg6Ci0gICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyk6IENhbGwgY2hlY2tTdGF0dXMoKS4KLSAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyKTogTm8gbG9uZ2VyIGNoZWNrIGZyYW1lYnVmZmVyIHN0YXR1cy4KLSAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0Qm91bmRGcmFtZWJ1ZmZlcldpZHRo
KTogQ2FsbCBnZXRDb2xvckJ1ZmZlcldpZHRoLgotICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRCb3VuZEZyYW1lYnVmZmVySGVpZ2h0KTogQ2FsbCBnZXRDb2xvckJ1
ZmZlckhlaWdodC4KLQotMjAxMS0xMi0xMyAgSmFtZXMgU2ltb25zZW4gIDxzaW1vbmphbUBjaHJv
bWl1bS5vcmc+Ci0KLSAgICAgICAgW05hdmlnYXRpb24gVGltaW5nXSBVc2UgbW9ub3RvbmljYWxs
eUluY3JlYXNpbmdUaW1lKCkgaW5zdGVhZCBvZiBjdXJyZW50VGltZSgpCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODM1NAotCi0gICAgICAgIFJldmll
d2VkIGJ5IFBhdmVsIEZlbGRtYW4uCi0KLSAgICAgICAgTm8gbmV3IHRlc3RzLiBSZWxpZXMgb24g
ZXhpc3Rpbmcgd2VidGltaW5nLSogdGVzdHMuCi0KLSAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
LSAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgotICAgICAgICAqIFdlYkNvcmUuZ3lwaToK
LSAgICAgICAgKiBXZWJDb3JlLnBybzoKLSAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvajoKLSAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Ci0g
ICAgICAgICogZG9tL0RvY3VtZW50LmNwcDogVXNlIG1vbm90b25pYyB0aW1lcy4KLSAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjpzZXRSZWFkeVN0YXRlKToKLSAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpmaW5pc2hlZFBhcnNpbmcpOgotICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwOgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRGaW5pc2hMb2FkaW5nSW1wbCk6IENvbnZlcnQgbW9ub3RvbmljRmluaXNoVGlt
ZSB0byB3YWxsIHRpbWUgaWYgbmVlZGVkLgotICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OmJ1aWxkT2JqZWN0Rm9yVGltaW5n
KTogQ29udmVydCBtb25vdG9uaWMgcmVxdWVzdFRpbWUgdG8gd2FsbCB0aW1lLgotICAgICAgICAo
V2ViQ29yZTo6YnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKTogUGx1bWJpbmcgZm9yIGFi
b3ZlLgotICAgICAgICAoV2ViQ29yZTo6YnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZSk6IERp
dHRvLgotICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRS
ZXF1ZXN0KTogRGl0dG8uCi0gICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRSZWNlaXZlUmVzcG9uc2UpOiBEaXR0by4KLSAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OmRpZExvYWRSZXNvdXJjZUZyb21NZW1vcnlDYWNoZSk6IERpdHRvLgot
ICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuY3BwOiBBZGRlZC4KLSAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6RG9jdW1lbnRMb2FkVGltaW5nKToKLSAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6c2V0TmF2aWdhdGlvblN0YXJ0KTogRGV0
ZXJtaW5lIHJlZmVyZW5jZSB0aW1lIGFuZCByb290IHJlZmVyZW5jZSB0aW1lLgotICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjphZGRSZWRpcmVjdCk6IE1vdmVkIGxvZ2ljIGZy
b20gTWFpblJlc291cmNlTG9hZGVyLgotICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGlt
aW5nOjpjb252ZXJ0TW9ub3RvbmljVGltZVRvRG9jdW1lbnRUaW1lKTogSGVscGVyIHRvIGNvbXB1
dGUgd2FsbCB0aW1lIGZyb20gbW9ub3RvbmljIHRpbWUuCi0gICAgICAgICogbG9hZGVyL0RvY3Vt
ZW50TG9hZFRpbWluZy5oOiBUdXJuZWQgaW50byBjbGFzcy4gTWFkZSB0aW1lcyBtb25vdG9uaWMu
Ci0gICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRUaW1pbmc6OnNldFVubG9hZEV2ZW50U3Rh
cnQpOgotICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpzZXRVbmxvYWRFdmVu
dEVuZCk6Ci0gICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRUaW1pbmc6OnNldFJlZGlyZWN0
U3RhcnQpOgotICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpzZXRSZWRpcmVj
dEVuZCk6Ci0gICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRUaW1pbmc6OnNldEZldGNoU3Rh
cnQpOgotICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpzZXRSZXNwb25zZUVu
ZCk6Ci0gICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRUaW1pbmc6OnNldExvYWRFdmVudFN0
YXJ0KToKLSAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6c2V0TG9hZEV2ZW50
RW5kKToKLSAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6c2V0SGFzU2FtZU9y
aWdpbkFzUHJldmlvdXNEb2N1bWVudCk6Ci0gICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRU
aW1pbmc6Om5hdmlnYXRpb25TdGFydCk6Ci0gICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRU
aW1pbmc6OnVubG9hZEV2ZW50U3RhcnQpOgotICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
VGltaW5nOjp1bmxvYWRFdmVudEVuZCk6Ci0gICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRU
aW1pbmc6OnJlZGlyZWN0U3RhcnQpOgotICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGlt
aW5nOjpyZWRpcmVjdEVuZCk6Ci0gICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRUaW1pbmc6
OnJlZGlyZWN0Q291bnQpOgotICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpm
ZXRjaFN0YXJ0KToKLSAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZFRpbWluZzo6cmVzcG9u
c2VFbmQpOgotICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpsb2FkRXZlbnRT
dGFydCk6Ci0gICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRUaW1pbmc6OmxvYWRFdmVudEVu
ZCk6Ci0gICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRUaW1pbmc6Omhhc0Nyb3NzT3JpZ2lu
UmVkaXJlY3QpOgotICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkVGltaW5nOjpoYXNTYW1l
T3JpZ2luQXNQcmV2aW91c0RvY3VtZW50KToKLSAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwOgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKToKLSAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQpOgotICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyV2lsbFN1Ym1pdEZvcm0p
OgotICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRQcm92aXNpb25hbEl0ZW1Gcm9t
Q2FjaGVkUGFnZSk6Ci0gICAgICAgICogbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHA6Ci0g
ICAgICAgIChXZWJDb3JlOjpNYWluUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlQWZ0ZXJOYXZpZ2F0
aW9uUG9saWN5KToKLSAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6d2lsbFNl
bmRSZXF1ZXN0KTogTW92ZWQgbG9naWMgdG8gRG9jdW1lbnRMb2FkVGltaW5nLgotICAgICAgICAo
V2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YSk6IFVzZSBtb25vdG9u
aWMgdGltZS4KLSAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNo
TG9hZGluZyk6IERpdHRvLgotICAgICAgICAoV2ViQ29yZTo6TWFpblJlc291cmNlTG9hZGVyOjps
b2FkKToKLSAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpE
T01XaW5kb3c6OmRpc3BhdGNoTG9hZEV2ZW50KToKLSAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5o
OiBSZW1vdmVkIGRpc3BhdGNoVGltZWRFdmVudC4gSXQgZG9lc24ndCByZWFsbHkgaGVscCBpbiB0
aGUgbmV3IG1vZGVsLgotICAgICAgICAqIHBhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uLmNwcDoK
LSAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlTmF2aWdhdGlvbjo6cmVkaXJlY3RDb3VudCk6
Ci0gICAgICAgICogcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5jcHA6IFJlbW92ZWQgc2tldyBjb3Jy
ZWN0aW9uIGNvZGUuIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBub3cuCi0gICAgICAgIChXZWJD
b3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6bmF2aWdhdGlvblN0YXJ0KToKLSAgICAgICAgKFdlYkNv
cmU6OlBlcmZvcm1hbmNlVGltaW5nOjp1bmxvYWRFdmVudFN0YXJ0KToKLSAgICAgICAgKFdlYkNv
cmU6OlBlcmZvcm1hbmNlVGltaW5nOjp1bmxvYWRFdmVudEVuZCk6Ci0gICAgICAgIChXZWJDb3Jl
OjpQZXJmb3JtYW5jZVRpbWluZzo6cmVkaXJlY3RTdGFydCk6Ci0gICAgICAgIChXZWJDb3JlOjpQ
ZXJmb3JtYW5jZVRpbWluZzo6cmVkaXJlY3RFbmQpOgotICAgICAgICAoV2ViQ29yZTo6UGVyZm9y
bWFuY2VUaW1pbmc6OmZldGNoU3RhcnQpOgotICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VU
aW1pbmc6OnJlc3BvbnNlRW5kKToKLSAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5n
Ojpkb21Mb2FkaW5nKToKLSAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGltaW5nOjpkb21J
bnRlcmFjdGl2ZSk6Ci0gICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6ZG9tQ29u
dGVudExvYWRlZEV2ZW50U3RhcnQpOgotICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1p
bmc6OmRvbUNvbnRlbnRMb2FkZWRFdmVudEVuZCk6Ci0gICAgICAgIChXZWJDb3JlOjpQZXJmb3Jt
YW5jZVRpbWluZzo6ZG9tQ29tcGxldGUpOgotICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VU
aW1pbmc6OmxvYWRFdmVudFN0YXJ0KToKLSAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlVGlt
aW5nOjpsb2FkRXZlbnRFbmQpOgotICAgICAgICAoV2ViQ29yZTo6UGVyZm9ybWFuY2VUaW1pbmc6
OnJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRvQWJzb2x1dGUpOiBVc2VkIGZvciBSZXNvdXJjZUxv
YWRUaW1pbmcuCi0gICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZVRpbWluZzo6bW9ub3Rvbmlj
VGltZVRvSW50ZWdlck1pbGxpc2Vjb25kcyk6IFVzZWQgZm9yIERvY3VtZW50VGltaW5nIGFuZCBE
b2N1bWVudExvYWRUaW1pbmcuCi0gICAgICAgICogcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5oOgot
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZFRpbWluZzo6Y29udmVydFJlc291cmNlTG9hZFRpbWVU
b0RvY3VtZW50VGltZSk6Ci0gICAgICAgICogcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRU
aW1pbmcuaDogQWRkZWQgaGVscGVyIGZ1bmN0aW9uIHRvIGNvbnZlcnQgdG8gd2FsbCB0aW1lcy4g
QWRkZWQgaW5zdHJ1Y3Rpb25zIGZvciB1c2UuCi0KLTIwMTEtMTItMTMgIEFkYW0gS2xlaW4gIDxh
ZGFta0BjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgUmVkdWNlIGNvZGUgZHVwbGljYXRpb24gaW4g
RWxlbWVudDo6c2V0QXR0cmlidXRlIG1ldGhvZHMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc0NDI1Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3Vr
ZSBOaXdhLgotCi0gICAgICAgIFR3byBvdmVybG9hZHMgb2YgRWxlbWVudDo6c2V0QXR0cmlidXRl
IHNoYXJlIGFsbW9zdCBhbGwgdGhlaXIgY29kZSwKLSAgICAgICAgaW5jbHVkaW5nIHRyaWNreSBs
b2dpYyBhcm91bmQgdXBkYXRpbmcgdGhlIGFwcHJvcHJpYXRlIEF0dHJpYnV0ZSBhbmQKLSAgICAg
ICAgQXR0ciBvYmplY3RzIGFuZCBub3RpZnlpbmcgdGhlIEluc3BlY3RvciBhbmQgTXV0YXRpb25P
YnNlcnZlcnMuCi0KLSAgICAgICAgVGhpcyBwYXRjaCBwdXRzIHRoZSBjb21tb24gbG9naWMgaW4g
YSBuZXcgc2V0QXR0cmlidXRlSW50ZXJuYWwgbWV0aG9kCi0gICAgICAgIHdoaWNoIGlzIGNhbGxl
ZCBieSB0aGUgb3RoZXIgdHdvLgotCi0gICAgICAgIE5vIG5ldyB0ZXN0cywgcmVmYWN0b3Jpbmcg
b25seS4KLQotICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnNldEF0dHJpYnV0ZSk6Ci0gICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRBdHRy
aWJ1dGVJbnRlcm5hbCk6Ci0gICAgICAgICogZG9tL0VsZW1lbnQuaDoKLQotMjAxMS0xMi0xMyAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgPGh0dHA6Ly93ZWJr
aXQub3JnL2IvNzQ0MjA+IERpc2FibGUgZGVwcmVjYXRpb24gd2FybmluZ3MgYXJvdW5kIG1vcmUg
Y29kZSB3aGVyZSB3ZSAKLSAgICAgICAgY2Fubm90IGVhc2lseSBzd2l0Y2ggYXdheSBmcm9tIHRo
ZSBkZXByZWNhdGVkIEFQSXMuCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBSb3dlLgotCi0g
ICAgICAgICogYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5tbToKLSAgICAgICAgKiBicmlkZ2Uv
b2JqYy9vYmpjX2luc3RhbmNlLm1tOgotCi0yMDExLTEyLTEyICBSb2JlcnQgSG9nYW4gIDxyb2Jl
cnRAd2Via2l0Lm9yZz4KLQotICAgICAgICBDU1MgMi4xIGZhaWx1cmU6IGVvZi0wMDIuaHRtIGZh
aWxzCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDMw
OQotCi0gICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFja3Nvbi4KLQotICAgICAgICBUZXN0OiBj
c3MyLjEvMjAxMTAzMjMvZW9mLTAwMi1leHBlY3RlZC5odG1sCi0KLSAgICAgICAgKiBjc3MvQ1NT
R3JhbW1hci55OiBUcmVhdCBFT0YgZHVyaW5nIGEgZnVuY3Rpb24gZXhwcmVzc2lvbiB3aXRoIGFu
IG9wZW4gcGFyZW50aGVzaXMgYXMgYSBjbG9zZSBwYXJlbnRoZXNpcy4KLQotMjAxMS0xMi0xMyAg
QWRhbSBLbGVpbiAgPGFkYW1rQGNocm9taXVtLm9yZz4KLQotICAgICAgICBWOFByb3h5IGNsZWFu
dXA6IHJlcGxhY2UgY3VzdG9tIGxvZ2dpbmcgbWV0aG9kcyB3aXRoIHN0YW5kYXJkIFdlYkNvcmUg
Y2FsbHMKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0
MjIwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4UHJveHkuY3BwOgotICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6cmVwb3J0VW5z
YWZlQWNjZXNzVG8pOgotICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UHJveHkuaDoKLSAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwOgotICAgICAg
ICAoV2ViQ29yZTo6VjhDdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVSSSk6
Ci0KLTIwMTEtMTItMTMgIFRvciBBcm5lIFZlc3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEu
Y29tPgotCi0gICAgICAgIFtRdF0gR2V0IHJpZCBvZiBsYXllcmluZyB2aW9sYXRpb25zIGluIGlu
Y2x1ZGVzCi0KLSAgICAgICAgV2ViS2l0L3F0L0FQSSBhbmQgV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0IHNob3VsZCBub3QgYmUgaW5jbHVkZWQKLSAgICAgICAgaW4gdGhlIHdlYmNvcmUucHJmLCBi
dXQgcmF0aGVyIGluIGVhY2ggdGFyZ2V0IHRoYXQgc3BlY2lmaWNseSBuZWVkcwotICAgICAgICBo
ZWFkZXJzIGluIHRoZXNlIGxvY2F0aW9uLiBXZSB1c2VkIHRvIGluY2x1ZGUgdGhlbSBkaXJlY3Rs
eSBpbiB3ZWJjb3JlCi0gICAgICAgIHNpbmNlIHdlIGhhZCBsYXllcmluZyB2aW9sYXRpb25zIGJl
dHdlZW4gV2ViQ29yZSBhbmQgV2ViS2l0LCBidXQgbm93Ci0gICAgICAgIHRoYXQgdGhleSBhcmUg
Z29uZSB0aGVyZSdzIG5vIHJlYXNvbiB0byBkbyB0aGF0LgotCi0gICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEhhdXNtYW5uLgotCi0gICAgICAgICogYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcDoK
LSAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcDoK
LSAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcDoKLSAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcDoKLSAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlSGFuZGxlUXQuY3BwOgotICAgICAgICAqIHBsYXRm
b3JtL3F0L0Nvb2tpZUphclF0LmNwcDoKLSAgICAgICAgKiBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVt
ZVFTdHlsZS5jcHA6Ci0gICAgICAgICogcGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRdC5jcHA6Ci0K
LTIwMTEtMTItMTMgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+Ci0KLSAg
ICAgICAgV2ViIEluc3BlY3RvcjogQWRkIHNjcmlwdHMgbmF2aWdhdG9yIHNpZGViYXIgdG8gc2Ny
aXB0cyBwYW5lbC4KLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTczMDg2Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KLQotICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKLSAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
ajoKLSAgICAgICAgKiBpbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQuc2g6Ci0gICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvZG9tYWluLnBuZzogQWRkZWQuCi0gICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanM6Ci0gICAgICAgIChX
ZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZS5zdWdnZXN0ZWRGaWxl
TmFtZSk6Ci0gICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzTmF2aWdhdG9yLmpz
OiBBZGRlZC4KLSAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qczoK
LSAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl91aVNvdXJjZUNv
ZGVBZGRlZC5nZXQgaWYpOgotICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90
b3R5cGUuX3VpU291cmNlQ29kZVJlbW92ZWQpOgotICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlw
dHNQYW5lbC5wcm90b3R5cGUuX2FkZE9wdGlvblRvRmlsZXNTZWxlY3QpOgotICAgICAgICAoV2Vi
SW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX3Jlc2V0KToKLSAgICAgICAgKFdlYklu
c3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9yZW1vdmVTb3VyY2VGcmFtZSk6Ci0gICAg
ICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fdWlTb3VyY2VDb2RlUmVw
bGFjZWQpOgotICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX3Nv
dXJjZUZyYW1lTG9hZGVkKToKLSAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJv
dG90eXBlLl91cGRhdGVFeGVjdXRpb25MaW5lKToKLSAgICAgICAgKFdlYkluc3BlY3Rvci5TY3Jp
cHRzUGFuZWwucHJvdG90eXBlLl9zY3JpcHRTZWxlY3RlZEluTmF2aWdhdG9yKToKLSAgICAgICAg
KFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9jcmVhdGVEZWJ1Z1Rvb2xiYXIp
OgotICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanM6Ci0gICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9UYWJiZWRQYW5lLmpzOgotICAgICAgICAoV2ViSW5zcGVjdG9y
LlRhYmJlZFBhbmUucHJvdG90eXBlLmFwcGVuZFRhYik6Ci0gICAgICAgIChXZWJJbnNwZWN0b3Iu
VGFiYmVkUGFuZS5wcm90b3R5cGUuc2VsZWN0VGFiKToKLSAgICAgICAgKFdlYkluc3BlY3Rvci5U
YWJiZWRQYW5lLnByb3RvdHlwZS5oaWdobGlnaHRMaW5lKToKLSAgICAgICAgKFdlYkluc3BlY3Rv
ci5UYWJiZWRQYW5lLnByb3RvdHlwZS5lbGVtZW50c1RvUmVzdG9yZVNjcm9sbFBvc2l0aW9uc0Zv
cik6Ci0gICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9VSVNvdXJjZUNvZGUuanM6Ci0gICAg
ICAgIChXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlLnByb3RvdHlwZS5nZXQgZG9tYWluKToKLSAg
ICAgICAgKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUucHJvdG90eXBlLmdldCBmb2xkZXJOYW1l
KToKLSAgICAgICAgKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUucHJvdG90eXBlLmdldCBkaXNw
bGF5TmFtZSk6Ci0gICAgICAgIChXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlLnByb3RvdHlwZS5f
cGFyc2VVUkwpOgotICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYzoKLSAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3M6Ci0gICAgICAgICgudGFi
YmVkLXBhbmUpOgotICAgICAgICAoLnRhYmJlZC1wYW5lLWNvbnRlbnQpOgotICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWw6Ci0gICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9uZXR3b3JrUGFuZWwuY3NzOgotICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
c2NyaXB0c1BhbmVsLmNzczoKLSAgICAgICAgKCNzY3JpcHRzLW5hdmlnYXRvci1yZXNpemVyLXdp
ZGdldCk6Ci0gICAgICAgICguc2NyaXB0cy1uYXZpZ2F0b3ItZG9tYWluLXRyZWUtaXRlbSAuaWNv
bik6Ci0gICAgICAgICguc2NyaXB0cy1uYXZpZ2F0b3ItZm9sZGVyLXRyZWUtaXRlbSAuaWNvbik6
Ci0gICAgICAgICguc2NyaXB0cy1uYXZpZ2F0b3Itc2NyaXB0LXRyZWUtaXRlbSAuaWNvbik6Ci0g
ICAgICAgICguc2NyaXB0cy5wYW5lbCAubmF2aWdhdG9yKToKLSAgICAgICAgKCNzY3JpcHRzLW5h
dmlnYXRvci10YWJiZWQtcGFuZSAudGFiYmVkLXBhbmUtaGVhZGVyKToKLSAgICAgICAgKCNzY3Jp
cHRzLW5hdmlnYXRvci10YWJiZWQtcGFuZSAudGFiYmVkLXBhbmUtY29udGVudCk6Ci0gICAgICAg
ICguc2NyaXB0cy5wYW5lbCAubmF2aWdhdG9yIGxpKToKLSAgICAgICAgKC5zY3JpcHRzLnBhbmVs
IC5uYXZpZ2F0b3IgOmZvY3VzIGxpLnNlbGVjdGVkKToKLSAgICAgICAgKC5zY3JpcHRzLnBhbmVs
IC5uYXZpZ2F0b3IgbGkuc2VsZWN0ZWQgLnNlbGVjdGlvbik6Ci0gICAgICAgICguc2NyaXB0cy5w
YW5lbCAubmF2aWdhdG9yIDpmb2N1cyBsaS5zZWxlY3RlZCAuc2VsZWN0aW9uKToKLSAgICAgICAg
KC5zY3JpcHRzLnBhbmVsIC5uYXZpZ2F0b3IgLmljb24pOgotICAgICAgICAoLnNjcmlwdHMucGFu
ZWwgLmJhc2UtbmF2aWdhdG9yLXRyZWUtZWxlbWVudC10aXRsZSk6Ci0gICAgICAgICogaW5zcGVj
dG9yL2Zyb250LWVuZC90cmVlb3V0bGluZS5qczoKLSAgICAgICAgKFRyZWVPdXRsaW5lKToKLSAg
ICAgICAgKFRyZWVPdXRsaW5lLnByb3RvdHlwZS5hcHBlbmRDaGlsZCk6Ci0KLTIwMTEtMTItMTIg
IEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgotCi0gICAgICAgIENvbGxlY3Rpb25D
YWNoZTogUmVtb3ZlIHVudXNlZCBjb3B5IGNvbnN0cnVjdG9yIGFuZCBtYWtlIGl0IG5vbmNvcHlh
YmxlLgotICAgICAgICA8aHR0cDovL3dlYmtpdC5vcmcvYi83NDM3OD4KLQotICAgICAgICBSZXZp
ZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KLQotICAgICAgICAqIGh0bWwvQ29sbGVjdGlvbkNhY2hl
LmNwcDoKLSAgICAgICAgKiBodG1sL0NvbGxlY3Rpb25DYWNoZS5oOgotCi0yMDExLTEyLTEzICBK
YXJyZWQgTmljaG9sbHMgIDxqYXJyZWRAc2VuY2hhLmNvbT4KLQotICAgICAgICBYSFIgc2hvdWxk
IHVzZSBtX3Jlc3BvbnNlVHlwZUNvZGUgaW50ZXJuYWxseSB0byBiZSBjb25zaXN0ZW50IHdpdGgg
V2ViS2l0IGNvZGluZyBzdHlsZQotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzQzMzAKLQotICAgICAgICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlh
a292LgotCi0gICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQsIG5vIGJlaGF2aW9yYWwgY2hhbmdl
cy4KLQotICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6Ci0gICAgICAgIChXZWJDb3Jl
OjpYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VUZXh0KToKLSAgICAgICAgKFdlYkNvcmU6OlhNTEh0
dHBSZXF1ZXN0OjpyZXNwb25zZVhNTCk6Ci0gICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVz
dDo6cmVzcG9uc2VCbG9iKToKLSAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpkaWRS
ZWNlaXZlRGF0YSk6Ci0gICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6Ci0gICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6YXNCbG9iKToKLQotMjAxMS0xMi0xMyAgS2VudGFybyBI
YXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgVXNlIHRoZSBbU3VwcGxlbWVu
dGFsXSBJREwgZm9yIHdlYmF1ZGlvIGF0dHJpYnV0ZXMgaW4gQ2hyb21pdW0KLSAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTczMzk0Ci0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICAtIE92ZXJ2aWV3OiBVc2luZyB0aGUgW1N1
cHBsZW1lbnRhbF0gSURMLCB0aGlzIHBhdGNoIG1vdmVzIHRoZSBhdHRyaWJ1dGUKLSAgICAgICAg
ZGVjbGFyYXRpb25zIG9mIHdlYmF1ZGlvIGZyb20gRE9NV2luZG93LmlkbCBpbnRvIGEgbmV3IElE
TCBmaWxlCi0gICAgICAgIHdlYmF1ZGlvL0RPTVdpbmRvd1dlYkF1ZGlvLmlkbCwgd2hpY2ggaGVs
cHMgbWFrZSB3ZWJhdWRpbyBhIHNlbGYtY29udGFpbmVkCi0gICAgICAgIGZlYXR1cmUgKGFrYSBh
IG1vZHVsZSkuCi0KLSAgICAgICAgLSBUaGlzIHBhdGNoIGNoYW5nZXMgdGhlIGJ1aWxkIGZsb3cg
b2YgV2ViQ29yZS5neXAgYXMgZm9sbG93czoKLQotICAgICAgICAgICAgUHJldmlvdXMgYnVpbGQg
ZmxvdzoKLSAgICAgICAgICAgICAgICBmb3JlYWNoICRpZGwgKGFsbCBJREwgZmlsZXMpIHsKLSAg
ICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUtYmluZGluZ3MucGwgZGVwZW5kcyBvbiAkaWRsOwot
ICAgICAgICAgICAgICAgICAgICBnZW5lcmF0ZS1iaW5kaW5ncy5wbCByZWFkcyAkaWRsOwotICAg
ICAgICAgICAgICAgICAgICBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBnZW5lcmF0ZXMgLmggYW5kIC5j
cHAgZmlsZXMgZm9yICRpZGw7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBOZXcg
YnVpbGQgZmxvdyAoU2VlIHRoZSBkaXNjdXNzaW9ucyBpbiBidWcgNzIxMzggZm9yIG1vcmUgZGV0
YWlscyk6Ci0gICAgICAgICAgICAgICAgcmVzb2x2ZS1zdXBwbGVtZW50YWwucGwgZGVwZW5kcyBv
biBhbGwgSURMIGZpbGVzOwotICAgICAgICAgICAgICAgIHJlc29sdmUtc3VwcGxlbWVudGFsLnBs
IHJlYWRzIGFsbCBJREwgZmlsZXM7Ci0gICAgICAgICAgICAgICAgcmVzb2x2ZS1zdXBwbGVtZW50
YWwucGwgcmVzb2x2ZXMgdGhlIGRlcGVuZGVuY3kgb2YgW1N1cHBsZW1lbnRhbD1YWFhYXTsKLSAg
ICAgICAgICAgICAgICByZXNvbHZlLXN1cHBsZW1lbnRhbC5wbCBvdXRwdXRzIHN1cHBsZW1lbnRh
bF9kZXBlbmRlbmN5LnRtcDsKLSAgICAgICAgICAgICAgICBmb3JlYWNoICRpZGwgKGFsbCBJREwg
ZmlsZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUtYmluZGluZ3MucGwgZGVwZW5k
cyBvbiAkaWRsIGFuZCBzdXBwbGVtZW50YWxfZGVwZW5kZW5jeS50bXA7Ci0gICAgICAgICAgICAg
ICAgICAgIGdlbmVyYXRlLWJpbmRpbmdzLnBsIHJlYWRzICRpZGw7Ci0gICAgICAgICAgICAgICAg
ICAgIGdlbmVyYXRlLWJpbmRpbmdzLnBsIHJlYWRzIHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5LnRt
cDsKLSAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUtYmluZGluZ3MucGwgZ2VuZXJhdGVzIC5o
IGFuZCAuY3BwIGZpbGVzIGZvciAkaWRsLCBpbmNsdWRpbmcgYWxsIGF0dHJpYnV0ZXMgaW4gSURM
IGZpbGVzIHdoaWxlbWVudGluZyAkaWRsOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAt
IFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIHRlbXBvcmFyeSBJREwsIFtTdXBwbGVtZW50ZWRdLiBU
aGUgW1N1cHBsZW1lbnRlZF0gSURMCi0gICAgICAgIHdpbGwgYmUgcmVtb3ZlZCBhZnRlciBidWls
ZCBzY3JpcHRzIGZvciBhbGwgcGxhdGZvcm1zIHN1cHBvcnQgdGhlIFtTdXBwbGVtZW50YWxdIElE
TC4KLSAgICAgICAgVGhlIG1vdGl2YXRpb24gZm9yIHRoZSBbU3VwcGxlbWVudGVkXSBJREwgaXMg
YXMgZm9sbG93czoKLQotICAgICAgICBJbiBvcmRlciB0byBzdXBwb3J0IHRoZSBbU3VwcGxlbWVu
dGFsXSBJREwsIHdlIG5lZWQgdG8KLSAgICAgICAgKDEpIHJ1biByZXNvbHZlLXN1cHBsZW1lbnRh
bC5wbCBhbmQgZ2VuZXJhdGUgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3kudG1wCi0gICAgICAgICgy
KSBhbmQgcnVuIGdlbmVyYXRlLWJpbmRpbmdzLnBsIHdpdGggdGhlIHN1cHBsZW1lbnRhbF9kZXBl
bmRlbmN5LnRtcC4KLQotICAgICAgICBUaGlzIGJ1aWxkIGZsb3cgcmVxdWlyZXMgYSBjaGFuZ2Ug
b24gdGhlIGZvbGxvd2luZyBidWlsZCBzY3JpcHRzLAotICAgICAgICBidXQgY2hhbmdpbmcgYWxs
IHRoZSBidWlsZCBzY3JpcHRzIGFsbCBhdCBvbmNlIHdpdGhvdXQgYW55IHJlZ3Jlc3Npb24gaXMg
dG9vIGRpZmZpY3VsdDoKLQotICAgICAgICAgICAgLSBEZXJpdmVkU291cmNlcy5tYWtlCi0gICAg
ICAgICAgICAtIERlcml2ZWRTb3VyY2VzLnByaQotICAgICAgICAgICAgLSBHTlVtYWtlZmlsZS5h
bQotICAgICAgICAgICAgLSBQbGF0Zm9ybUJsYWNrQmVycnkuY21ha2UKLSAgICAgICAgICAgIC0g
VXNlSlNDLmNtYWtlCi0gICAgICAgICAgICAtIFVzZVY4LmNtYWtlCi0gICAgICAgICAgICAtIFdl
YkNvcmUudmNwcm9qL01pZ3JhdGVTY3JpcHRzCi0gICAgICAgICAgICAtIFdlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCi0gICAgICAgICAgICAtIGJpbmRpbmdzL2dvYmplY3QvR05VbWFrZWZp
bGUuYW0KLSAgICAgICAgICAgIC0gV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKLQotICAgICAgICBU
aHVzLCB3ZSBhcmUgcGxhbm5pbmcgdG8gY2hhbmdlIHRoZSBidWlsZCBzY3JpcHRzIG9uZSBieSBv
bmUsIHdoaWNoIGltcGxpZXMgdGhhdAotICAgICAgICB3ZSBuZWVkIHRvIGFsbG93IHRoZSB0ZW1w
b3Jhcnkgc3RhdGUgaW4gd2hpY2ggc29tZSBidWlsZCBzY3JpcHRzIHN1cHBvcnQgW1N1cHBsZW1l
bnRhbF0gSURMCi0gICAgICAgIGJ1dCBvdGhlcnMgZG8gbm90LiBUbyBhY2NvbXBsaXNoIHRoaXMs
IHdlIGludHJvZHVjZSBhIHRlbXBvcmFyeSBJREwsIFtTdXBwbGVtZW50ZWRdLgotICAgICAgICBU
aGUgW1N1cHBsZW1lbnRlZF0gSURMIG9uIGFuIGF0dHJpYnV0ZSBtZWFucyB0aGF0IHRoZSBhdHRy
aWJ1dGUgaXMgbWFya2VkIHdpdGggW1N1cHBsZW1lbnRhbF0KLSAgICAgICAgaW4gYW5vdGhlciBJ
REwgZmlsZSBzb21ld2hlcmUsIGxpa2UgdGhpczoKLQotICAgICAgICAgICAgRE9NV2luZG93V2Vi
QXVkaW8uaWRsOgotICAgICAgICAgICAgICAgIGludGVyZmFjZSBbCi0gICAgICAgICAgICAgICAg
ICAgIFN1cHBsZW1lbnRhbD1ET01XaW5kb3cKLSAgICAgICAgICAgICAgICBdIERPTVdpbmRvd1dl
YkF1ZGlvIHsKLSAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIGF0dHIxOwotICAgICAgICAg
ICAgICAgICAgICBhdHRyaWJ1dGUgYXR0cjI7Ci0gICAgICAgICAgICAgICAgfTsKLQotICAgICAg
ICAgICAgRE9NV2luZG93LmlkbDoKLSAgICAgICAgICAgICAgICBpbnRlcmZhY2UgWwotICAgICAg
ICAgICAgICAgIF0gRE9NV2luZG93IHsKLSAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlIFtT
dXBwbGVtZW50ZWRdIGF0dHIxOyAvLyBUaGlzIGxpbmUgd2lsbCBiZSByZW1vdmVkIGFmdGVyIGFs
bCBidWlsZCBzY3JpcHRzIHN1cHBvcnQgdGhlIFtTdSBJREwKLSAgICAgICAgICAgICAgICAgICAg
YXR0cmlidXRlIFtTdXBwbGVtZW50ZWRdIGF0dHIyOyAvLyBUaGlzIGxpbmUgd2lsbCBiZSByZW1v
dmVkIGFmdGVyIGFsbCBidWlsZCBzY3JpcHRzIHN1cHBvcnQgdGhlIFtTdSBJREwuCi0gICAgICAg
ICAgICAgICAgICAgIGF0dHJpYnV0ZSBhdHRyMzsKLSAgICAgICAgICAgICAgICAgICAgYXR0cmli
dXRlIGF0dHI0OwotICAgICAgICAgICAgICAgIH07Ci0KLSAgICAgICAgQXNzdW1pbmcgdGhlc2Ug
SURMIGZpbGVzLCB0aGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIGZvbGxvd2luZyBsb2dpYyBpbiBn
ZW5lcmF0ZS1iaW5kaW5ncy5wbDoKLQotICAgICAgICAgICAgLSBJZiBhIGdpdmVuIGJ1aWxkIHNj
cmlwdCBzdXBwb3J0cyB0aGUgW1N1cHBsZW1lbnRhbF0gSURMLAotICAgICAgICAgICAgZ2VuZXJh
dGUtYmluZGluZ3MucGwgaWdub3JlcyBhbGwgYXR0cmlidXRlcyB3aXRoIHRoZSBbU3VwcGxlbWVu
dGVkXSBJREwuCi0gICAgICAgICAgICAtIE90aGVyd2lzZSwgZ2VuZXJhdGUtYmluZGluZ3MucGwg
dHJlYXRzIGFsbCBhdHRyaWJ1dGVzIHdpdGggdGhlIFtTdXBwbGVtZW50ZWRdIElETAotICAgICAg
ICAgICAgYXMgbm9ybWFsIGF0dHJpYnV0ZXMgYW5kIGluc3RlYWQgaWdub3JlcyBhbGwgYXR0cmli
dXRlcyB3aXRoIHRoZSBbU3VwcGxlbWVudGFsXSBJREwKLSAgICAgICAgICAgIChpLmUuIGdlbmVy
YXRlLWJpbmRpbmdzLnBsIGdlbmVyYXRlcyBub3RoaW5nIGZyb20gdGhlIElETCBmaWxlIHdpdGgg
dGhlIFtTdXBwbGVtZW50YWxdIElETCkuCi0KLSAgICAgICAgVGVzdHM6IHdlYmF1ZGlvLyoKLQot
ICAgICAgICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOiBEZXNjcmliZXMgdGhlIGJ1aWxkIGZs
b3cgdGhhdCBJIGRlc2NyaWJlZCBhYm92ZS4KLSAgICAgICAgKiBXZWJDb3JlLmd5cC9zY3JpcHRz
L2FjdGlvbl9kZXJpdmVkc291cmNlc2FsbGlub25lLnB5OgotICAgICAgICAobWFpbik6IFJlYWRz
IHRoZSBJREwgZmlsZSBuYW1lcyBmcm9tIHRoZSBpbnB1dCBmaWxlIChpLmUuIHN1cHBsZW1lbnRh
bF9kZXBlbmRlbmN5LnRtcCksCi0gICAgICAgIHdoaWNoIGFyZSBkZXNjcmliZWQgYXQgdGhlIGZp
cnN0IGNvbHVtbiBvZiBlYWNoIGxpbmUgaW4gdGhlIGlucHV0IGZpbGUuCi0gICAgICAgIElmIHRo
ZSBmaWxlIG5hbWUgaXMgYSAiL2N5Z2RyaXZlL2MvLi4uIi1zdHlsZSBwYXRoLCBpdCBpcyBjb252
ZXJ0ZWQgdG8gYSAiQzpcY3lnd2luXC4uLiItc3R5bGUKLSAgICAgICAgcGF0aCBieSB0aGUgY3ln
cGF0aCBjb21tYW5kLgotICAgICAgICAqIFdlYkNvcmUuZ3lwaTogQWRkZWQgRE9NV2luZG93V2Vi
QXVkaW8uaWRsLgotICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3Mu
cGw6IEFzIGEgdGVtcG9yYXJ5IHNvbHV0aW9uLCBpZiB0aGUgcGxhdGZvcm0gZG9lcyBub3QKLSAg
ICAgICAgc3VwcG9ydCB0aGUgW1N1cHBsZW1lbnRhbF0gSURMLCB0aGUgcGVybCBzY3JpcHQgaWdu
b3JlcyB0aGUgW1N1cHBsZW1lbnRhbF0gSURMIGFuZCBpbnN0ZWFkCi0gICAgICAgIHVzZXMgdGhl
IFtTdXBwbGVtZW50ZWRdIElETC4gT3RoZXJ3aXNlLCB0aGUgcGVybCBzY3JpcHQgaWdub3JlcyB0
aGUgW1N1cHBsZW1lbnRlZF0gSURMIGFuZAotICAgICAgICBpbnN0ZWFkIHVzZXMgdGhlIFtTdXBw
bGVtZW50YWxdIElETC4KLSAgICAgICAgQWRkZWQgdGhlIC0tYWRkaXRpb25hbElkbEZpbGVzTGlz
dCBvcHRpb24gdG8gc3BlY2lmeSB0aGUgSURMIGZpbGVzIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaW4K
LSAgICAgICAgc3VwcGxlbWVudGFsLWRlcGVuZGVuY3kudG1wIGJ1dCBzaG91bGQgZ2VuZXJhdGUg
LmggYW5kIC5jcHAgZmlsZXMuCi0gICAgICAgICogcGFnZS9ET01XaW5kb3cuaWRsOiBBZGRlZCB0
aGUgW1N1cHBsZW1lbnRlZF0gSURMIHRvIHdlYmF1ZGlvLXJlbGF0ZWQgYXR0cmlidXRlcy4KLSAg
ICAgICAgQXMgSSBkZXNjcmliZWQgYWJvdmUsIHRoZSBbU3VwcGxlbWVudGVkXSBJREwgd2lsbCBi
ZSByZW1vdmVkIGFmdGVyIGFsbCBwbGF0Zm9ybXMgc3VwcG9ydAotICAgICAgICB0aGUgW1N1cHBs
ZW1lbnRhbF0gSURMLgotICAgICAgICAqIHdlYmF1ZGlvL0RPTVdpbmRvd1dlYkF1ZGlvLmlkbDog
QWRkZWQuIERlc2NyaWJlcyB0aGUgW1N1cHBsZW1lbnRhbD1ET01XaW5kb3ddIElETC4KLSAgICAg
ICAgVGhlIGF0dHJpYnV0ZXMgaW4gdGhpcyBJREwgZmlsZSBzaG91bGQgYmUgdHJlYXRlZCBhcyBp
ZiB0aGV5IGFyZSB3cml0dGVuIGluIERPTVdpbmRvdy5pZGwuCi0KLTIwMTEtMTItMTMgIFlvc2lm
dW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJlbmRlclRoZW1lIHNo
b3VsZCBoYXZlIGEgZnVuY3Rpb24gZm9yIGRpc2FibGVkIHRleHQgY29sb3IgYWRqdXN0bWVudAot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQxNDMKLQot
ICAgICAgICBDaGFuZ2UgZGlzYWJsZWRUZXh0Q29sb3IgdG8gcHJpdmF0ZSBtZXRob2QuCi0KLSAg
ICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCi0KLSAgICAgICAgTm8gbmV3IHRlc3RzIC8g
ZXhpc3RpbmcgdGVzdHMgY292ZXIgdGhpcyBjaGFuZ2UuCi0KLSAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVGhlbWVDaHJvbWl1bU1hYy5oOiBDaGFuZ2UgZGlzYWJsZWRUZXh0Q29sb3IgdG8gcHJp
dmF0ZS4KLSAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEuaDogQ2hh
bmdlIGRpc2FibGVkVGV4dENvbG9yIHRvIHByaXZhdGUuCi0KLTIwMTEtMTItMTIgIERhbmllbCBC
YXRlcyAgPGRiYXRlc0B3ZWJraXQub3JnPgotCi0gICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcg
b3V0IHIxMDI2NTYuCi0gICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEw
MjY1NgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQz
MTMKLQotICAgICAgICBCcm9rZSB0aGUgTWFjLCBXaW5kb3dzIGFuZCBXaW5DYWlybyBidWlsZHMu
IFdlIG5lZWQgdG8gbG9vawotICAgICAgICBpbnRvIHRoaXMgcGF0Y2ggc29tZSBtb3JlLgotCi0g
ICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHA6Ci0gICAgICAgIChX
ZWJDb3JlOjpldmVudExpc3RlbmVySGFuZGxlckxvY2F0aW9uKToKLQotMjAxMS0xMi0xMiAgS29u
cmFkIFBpYXNjaWsgIDxrcGlhc2Npa0ByaW0uY29tPgotCi0gICAgICAgIDIwMTEtMTItMTIgIEtv
bnJhZCBQaWFzY2lrICA8a3BpYXNjaWtAcmltLmNvbT4KLQotICAgICAgICBJbXBsZW1lbnQgdGhl
IEphdmFTY3JpcHRDb3JlIGJpbmRpbmdzIGZvciBldmVudExpc3RlbmVySGFuZGxlckxvY2F0aW9u
Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDMxMwot
Ci0gICAgICAgIFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgotCi0gICAgICAgIE9wZW4gYW55
IHBhZ2UgaW4gV2ViIEluc3BlY3RvciBhbmQgbG9vayBhdCB0aGUgZXZlbnQgbGlzdGVuZXJzLiBU
aGV5IHNob3VsZCBub3cKLSAgICAgICAgbGluayB0byB0aGUgc2NyaXB0IHdoaWNoIGNyZWF0ZWQg
dGhlbS4KLQotICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwOgot
ICAgICAgICAoV2ViQ29yZTo6ZXZlbnRMaXN0ZW5lckhhbmRsZXJMb2NhdGlvbik6Ci0KLTIwMTEt
MTItMTIgIFlvc2lmdW1pIElub3VlICA8eW9zaW5AY2hyb21pdW0ub3JnPgotCi0gICAgICAgIFJl
bmRlclRoZW1lIHNob3VsZCBoYXZlIGEgZnVuY3Rpb24gZm9yIGRpc2FibGVkIHRleHQgY29sb3Ig
YWRqdXN0bWVudAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzQxNDMKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW50IFRhbXVyYS4KLQotICAgICAgICBO
byBuZXcgdGVzdHMgLyBleGlzdGluZyB0ZXN0cyBjb3ZlciB0aGlzIGNoYW5nZS4KLQotICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUZXh0Q29udHJvbDo6YWRqdXN0SW5uZXJUZXh0U3R5bGUpOiBVc2UgUmVuZGVyVGhlbWU6
OmRpc2FibGVkVGV4dENvbG9yIGluc3RlYWQgb2YgUExBVEZPUk0gd3JhcGVkIHN0YXRpYyBmdW5j
dGlvbi4gCi0gICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmNwcDoKLSAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRoZW1lOjpkaXNhYmxlZFRleHRDb2xvcik6IE1vdmVkIGZyb20gUmVuZGVy
VGV4dENvbnRyb2wuY3BwLiBUaGlzIG1ldGhvZCBpbXBsZW1lbnRzIGZvciBub24tQ2hyb21pdW0g
Y29sb3IuCi0gICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRoZW1lLmg6IEFkZCBuZXcgdmlydHVh
bCBtZXRob2QgZGlzYWJsZWRUZXh0Q29sb3IuCi0gICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lQ2hyb21pdW1NYWMuaDogSW1wbGVtZW50YXRpb24gb2YgUmVuZGVyVGhlbWU6OmRpc2FibGVk
VGV4dENvbG9yIGZvciBDaHJpbWl1bSBNYWMuCi0gICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRo
ZW1lQ2hyb21pdW1Ta2lhLmg6IEltcGxlbWVudGF0aW9uIG9mIFJlbmRlclRoZW1lOjpkaXNhYmxl
ZFRleHRDb2xvciBmb3IgQ2hyaW1pdW0uCi0KIDIwMTEtMTItMTIgIEtlbm5ldGggUnVzc2VsbCAg
PGtickBnb29nbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDI2
NDguCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA5ODEzNzA2Li45YTNkYjYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTIxODcsMTAgKzIxODcsOSBAQCB3ZWJj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpblByZWZs
aWdodFJlc3VsdENhY2hlLmggXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2Fk
ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmggXAotCVNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuY3BwIFwKLQlTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmggXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5oIFwKKwlTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmggXAog
CVNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmggXAogCVNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXJDbGllbnQuaCBcCkBAIC0y
ODQxLDcgKzI4NDAsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGVJbnRlcm5hbC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZEluZm8uaCBcCiAJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRQcmlvcml0eS5oIFwKLQlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5jcHAgXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJp
CmluZGV4IGM2NTk4NDcuLmQwMmMyYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Rhcmdl
dC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpAQCAtOTE0LDcgKzkxNCw2IEBA
IFNPVVJDRVMgKz0gXAogICAgIGxvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuY3BwIFwK
ICAgICBsb2FkZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAgXAogICAgIGxv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgXAotICAgIGxvYWRlci9Eb2N1bWVu
dExvYWRUaW1pbmcuY3BwIFwKICAgICBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIFwKICAgICBs
b2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBcCiAgICAgbG9hZGVyL0RvY3VtZW50
V3JpdGVyLmNwcCBcCkBAIC0xMTExLDcgKzExMTAsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0
Zm9ybS9uZXR3b3JrL1Byb3h5U2VydmVyLmNwcCBcCiAgICAgcGxhdGZvcm0vbmV0d29yay9SZXNv
dXJjZUVycm9yQmFzZS5jcHAgXAogICAgIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VIYW5kbGUu
Y3BwIFwKLSAgICBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5jcHAgXAogICAg
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgXAogICAgIHBsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L1Jl
Z3VsYXJFeHByZXNzaW9uLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cC9XZWJDb3JlLmd5cCBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lw
CmluZGV4IDg4NjIwM2QuLmU4ZDUyYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwL1dlYkNvcmUuZ3lwCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNv
cmUuZ3lwCkBAIC00NDYsNTMgKzQ0Niw5IEBACiAgICAgICBdCiAgICAgfSwKICAgICB7Ci0gICAg
ICAndGFyZ2V0X25hbWUnOiAnZ2VuZXJhdGVfc3VwcGxlbWVudGFsX2RlcGVuZGVuY3knLAotICAg
ICAgJ3R5cGUnOiAnbm9uZScsCi0gICAgICAnYWN0aW9ucyc6IFsKLSAgICAgICAgIHsKLSAgICAg
ICAgICAnYWN0aW9uX25hbWUnOiAnZ2VuZXJhdGVTdXBwbGVtZW50YWxEZXBlbmRlbmN5JywKLSAg
ICAgICAgICAndmFyaWFibGVzJzogewotICAgICAgICAgICAgIyBXcml0ZSBzb3VyY2VzIGludG8g
YSBmaWxlLCBzbyB0aGF0IHRoZSBhY3Rpb24gY29tbWFuZCBsaW5lIHdvbid0Ci0gICAgICAgICAg
ICAjIGV4Y2VlZCBPUyBsaW1pdHMuCi0gICAgICAgICAgICAnaWRsX2ZpbGVzX2xpc3QnOiAnPHwo
aWRsX2ZpbGVzX2xpc3QudG1wIDxAKGJpbmRpbmdzX2lkbF9maWxlcykpJywKLSAgICAgICAgICB9
LAotICAgICAgICAgICdpbnB1dHMnOiBbCi0gICAgICAgICAgICAnLi4vYmluZGluZ3Mvc2NyaXB0
cy9yZXNvbHZlLXN1cHBsZW1lbnRhbC5wbCcsCi0gICAgICAgICAgICAnLi4vYmluZGluZ3Mvc2Ny
aXB0cy9JRExQYXJzZXIucG0nLAotICAgICAgICAgICAgJzwoaWRsX2ZpbGVzX2xpc3QpJywKLSAg
ICAgICAgICAgICc8IUAoY2F0IDwoaWRsX2ZpbGVzX2xpc3QpKScsCi0gICAgICAgICAgXSwKLSAg
ICAgICAgICAnb3V0cHV0cyc6IFsKLSAgICAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVf
RElSKS9zdXBwbGVtZW50YWxfZGVwZW5kZW5jeS50bXAnLAotICAgICAgICAgIF0sCi0gICAgICAg
ICAgJ2FjdGlvbic6IFsKLSAgICAgICAgICAgICdwZXJsJywKLSAgICAgICAgICAgICctdycsCi0g
ICAgICAgICAgICAnLUkuLi9iaW5kaW5ncy9zY3JpcHRzJywKLSAgICAgICAgICAgICcuLi9iaW5k
aW5ncy9zY3JpcHRzL3Jlc29sdmUtc3VwcGxlbWVudGFsLnBsJywKLSAgICAgICAgICAgICctLWRl
ZmluZXMnLAotICAgICAgICAgICAgJzwoZmVhdHVyZV9kZWZpbmVzKSBMQU5HVUFHRV9KQVZBU0NS
SVBUIFY4X0JJTkRJTkcnLAotICAgICAgICAgICAgJy0taWRsRmlsZXNMaXN0JywKLSAgICAgICAg
ICAgICc8KGlkbF9maWxlc19saXN0KScsCi0gICAgICAgICAgICAnLS1zdXBwbGVtZW50YWxEZXBl
bmRlbmN5RmlsZScsCi0gICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvc3Vw
cGxlbWVudGFsX2RlcGVuZGVuY3kudG1wJywKLSAgICAgICAgICBdLAotICAgICAgICAgICdtZXNz
YWdlJzogJ1Jlc29sdmluZyBbU3VwcGxlbWVudGFsPVhYWF0gZGVwZW5kZW5jaWVzIGluIGFsbCBJ
REwgZmlsZXMnLAotICAgICAgICB9Ci0gICAgICBdCi0gICAgfSwKLSAgICB7CiAgICAgICAndGFy
Z2V0X25hbWUnOiAnd2ViY29yZV9iaW5kaW5nc19zb3VyY2VzJywKICAgICAgICd0eXBlJzogJ25v
bmUnLAogICAgICAgJ2hhcmRfZGVwZW5kZW5jeSc6IDEsCi0gICAgICAnZGVwZW5kZW5jaWVzJzog
WwotICAgICAgICAnZ2VuZXJhdGVfc3VwcGxlbWVudGFsX2RlcGVuZGVuY3knLAotICAgICAgXSwK
LSAgICAgICd2YXJpYWJsZXMnOiB7Ci0gICAgICAgICMgV3JpdGUgc291cmNlcyBpbnRvIGEgZmls
ZSwgc28gdGhhdCB0aGUgYWN0aW9uIGNvbW1hbmQgbGluZSB3b24ndAotICAgICAgICAjIGV4Y2Vl
ZCBPUyBsaW1pdHMuCi0gICAgICAgICdhZGRpdGlvbmFsX2lkbF9maWxlc19saXN0JzogJzx8KGFk
ZGl0aW9uYWxfaWRsX2ZpbGVzX2xpc3QudG1wIDxAKHdlYmNvcmVfdGVzdF9zdXBwb3J0X2lkbF9m
aWxlcykpJywKLSAgICAgIH0sCiAgICAgICAnc291cmNlcyc6IFsKICAgICAgICAgIyBiaXNvbiBy
dWxlCiAgICAgICAgICcuLi9jc3MvQ1NTR3JhbW1hci55JywKQEAgLTkwNSw5ICs4NjEsMTUgQEAK
ICAgICAgICAgfSwKICAgICAgICAgewogICAgICAgICAgICdhY3Rpb25fbmFtZSc6ICdkZXJpdmVk
X3NvdXJjZXNfYWxsX2luX29uZScsCisgICAgICAgICAgJ3ZhcmlhYmxlcyc6IHsKKyAgICAgICAg
ICAgICMgV3JpdGUgc291cmNlcyBpbnRvIGEgZmlsZSwgc28gdGhhdCB0aGUgYWN0aW9uIGNvbW1h
bmQgbGluZSB3b24ndAorICAgICAgICAgICAgIyBleGNlZWQgT1MgbGltaXRlcy4KKyAgICAgICAg
ICAgICdpZGxzX2xpc3RfdGVtcF9maWxlJzogJzx8KGlkbHNfbGlzdF90ZW1wX2ZpbGUudG1wIDxA
KGJpbmRpbmdzX2lkbF9maWxlcykpJywKKyAgICAgICAgICB9LAogICAgICAgICAgICdpbnB1dHMn
OiBbCiAgICAgICAgICAgICAnc2NyaXB0cy9hY3Rpb25fZGVyaXZlZHNvdXJjZXNhbGxpbm9uZS5w
eScsCi0gICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvc3VwcGxlbWVudGFs
X2RlcGVuZGVuY3kudG1wJywKKyAgICAgICAgICAgICc8KGlkbHNfbGlzdF90ZW1wX2ZpbGUpJywK
KyAgICAgICAgICAgICc8IUAoY2F0IDwoaWRsc19saXN0X3RlbXBfZmlsZSkpJywKICAgICAgICAg
ICBdLAogICAgICAgICAgICdvdXRwdXRzJzogWwogICAgICAgICAgICAgJzxAKGRlcml2ZWRfc291
cmNlc19hZ2dyZWdhdGVfZmlsZXMpJywKQEAgLTkxNSw3ICs4NzcsNyBAQAogICAgICAgICAgICdh
Y3Rpb24nOiBbCiAgICAgICAgICAgICAncHl0aG9uJywKICAgICAgICAgICAgICdzY3JpcHRzL2Fj
dGlvbl9kZXJpdmVkc291cmNlc2FsbGlub25lLnB5JywKLSAgICAgICAgICAgICc8KFNIQVJFRF9J
TlRFUk1FRElBVEVfRElSKS9zdXBwbGVtZW50YWxfZGVwZW5kZW5jeS50bXAnLAorICAgICAgICAg
ICAgJzwoaWRsc19saXN0X3RlbXBfZmlsZSknLAogICAgICAgICAgICAgJy0tJywKICAgICAgICAg
ICAgICc8QChkZXJpdmVkX3NvdXJjZXNfYWdncmVnYXRlX2ZpbGVzKScsCiAgICAgICAgICAgXSwK
QEAgLTk2OCw5ICs5MzAsNiBAQAogICAgICAgICAgICAgJy4uL2JpbmRpbmdzL3NjcmlwdHMvSURM
UGFyc2VyLnBtJywKICAgICAgICAgICAgICcuLi9iaW5kaW5ncy9zY3JpcHRzL0lETFN0cnVjdHVy
ZS5wbScsCiAgICAgICAgICAgICAnLi4vYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzb3IucG0n
LAotICAgICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3N1cHBsZW1lbnRhbF9k
ZXBlbmRlbmN5LnRtcCcsCi0gICAgICAgICAgICAnPChhZGRpdGlvbmFsX2lkbF9maWxlc19saXN0
KScsCi0gICAgICAgICAgICAnPCFAKGNhdCA8KGFkZGl0aW9uYWxfaWRsX2ZpbGVzX2xpc3QpKScs
CiAgICAgICAgICAgXSwKICAgICAgICAgICAnb3V0cHV0cyc6IFsKICAgICAgICAgICAgICMgRklY
TUU6ICBUaGUgLmNwcCBmaWxlIHNob3VsZCBiZSBpbiB3ZWJraXQvYmluZGluZ3Mgb25jZQpAQCAt
MTAxNiwxMCArOTc1LDYgQEAKICAgICAgICAgICAgICctLWdlbmVyYXRvcicsCiAgICAgICAgICAg
ICAnVjgnLAogICAgICAgICAgICAgJzxAKGdlbmVyYXRvcl9pbmNsdWRlX2RpcnMpJywKLSAgICAg
ICAgICAgICctLXN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlJywKLSAgICAgICAgICAgICc8KFNI
QVJFRF9JTlRFUk1FRElBVEVfRElSKS9zdXBwbGVtZW50YWxfZGVwZW5kZW5jeS50bXAnLAotICAg
ICAgICAgICAgJy0tYWRkaXRpb25hbElkbEZpbGVzTGlzdCcsCi0gICAgICAgICAgICAnPChhZGRp
dGlvbmFsX2lkbF9maWxlc19saXN0KScsCiAgICAgICAgICAgICAnPChSVUxFX0lOUFVUX1BBVEgp
JywKICAgICAgICAgICBdLAogICAgICAgICAgICdtZXNzYWdlJzogJ0dlbmVyYXRpbmcgYmluZGlu
ZyBmcm9tIDwoUlVMRV9JTlBVVF9QQVRIKScsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9kZXJpdmVkc291cmNlc2FsbGlub25lLnB5IGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvc2NyaXB0cy9hY3Rpb25fZGVyaXZlZHNvdXJjZXNhbGxp
bm9uZS5weQppbmRleCBiYWM4MDgxLi41ODYwNzFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmd5cC9zY3JpcHRzL2FjdGlvbl9kZXJpdmVkc291cmNlc2FsbGlub25lLnB5Cisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL3NjcmlwdHMvYWN0aW9uX2Rlcml2ZWRzb3Vy
Y2VzYWxsaW5vbmUucHkKQEAgLTMyLDEyICszMiwxMiBAQAogIyBVc2Ugb2YgdGhpcyBzb3VyY2Ug
Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAjIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAKLSMgYWN0aW9uX2Rlcml2ZWRzb3VyY2VzYWxsaW5v
bmUucHkgZ2VuZXJhdGVzIGEgc2luZ2xlIGNwcCBmaWxlIHRoYXQgaW5jbHVkZXMKKyMgYWN0aW9u
X2Rlcml2ZWRzb3VyY2VzbGlzdC5weSBnZW5lcmF0ZXMgYSBzaW5nbGUgY3BwIGZpbGUgdGhhdCBp
bmNsdWRlcwogIyBhbGwgdjggYmluZGluZ3MgY3BwIGZpbGVzIGdlbmVyYXRlZCBmcm9tIGlkbHMu
IEZpbGVzIGNhbiBiZSBhc3NpZ25lZCBpbnRvCiAjIG11bHRpcGxlIG91dHB1dCBmaWxlcywgdG8g
cmVkdWNlIG1heGltdW0gY29tcGlsYXRpb24gdW5pdCBzaXplIGFuZCBhbGxvdwogIyBwYXJhbGxl
bCBjb21waWxhdGlvbi4KICMKLSMgdXNhZ2U6IGFjdGlvbl9kZXJpdmVkc291cmNlc2FsbGlub25l
LnB5IElETF9GSUxFU19MSVNUIC0tIE9VVFBVVF9GSUxFMSBPVVRQVVRfRklMRTIgLi4uCisjIHVz
YWdlOiBhY3Rpb25fZGVyaXZlZHNvdXJjZXNsaXN0LnB5IElETF9GSUxFU19MSVNUIC0tIE9VVFBV
VF9GSUxFMSBPVVRQVVRfRklMRTIgLi4uCiAjCiAjIE5vdGUgdGhhdCBJRExfRklMRVNfTElTVCBp
cyBhIHRleHQgZmlsZSBjb250YWluaW5nIHRoZSBJREwgZmlsZSBwYXRocy4KIApAQCAtMTc5LDE5
ICsxNzksNiBAQCBkZWYgd3JpdGVDb250ZW50KGNvbnRlbnQsIG91dHB1dEZpbGVOYW1lKToKICAg
ICBmLmNsb3NlKCkKIAogCi1kZWYgcmVzb2x2ZUN5Z3BhdGgoY3lnZHJpdmVOYW1lcyk6Ci0gICAg
Y21kID0gWydjeWdwYXRoJywgJy1mJywgJy0nLCAnLXdhJ10KLSAgICBwcm9jZXNzID0gc3VicHJv
Y2Vzcy5Qb3BlbihjbWQsIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwgc3Rkb3V0PXN1YnByb2Nlc3Mu
UElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotICAgIGlkbEZpbGVOYW1lcyA9IFtdCi0g
ICAgZm9yIGZpbGVOYW1lIGluIGN5Z2RyaXZlTmFtZXM6Ci0gICAgICAgIHByb2Nlc3Muc3RkaW4u
d3JpdGUoIiVzXG4iICUgZmlsZU5hbWUpCi0gICAgICAgIHByb2Nlc3Muc3RkaW4uZmx1c2goKQot
ICAgICAgICBpZGxGaWxlTmFtZXMuYXBwZW5kKHByb2Nlc3Muc3Rkb3V0LnJlYWRsaW5lKCkucnN0
cmlwKCkpCi0gICAgcHJvY2Vzcy5zdGRpbi5jbG9zZSgpCi0gICAgcHJvY2Vzcy53YWl0KCkKLSAg
ICByZXR1cm4gaWRsRmlsZU5hbWVzCi0KLQogZGVmIG1haW4oYXJncyk6CiAgICAgYXNzZXJ0KGxl
bihhcmdzKSA+IDMpCiAgICAgaW5PdXRCcmVha0luZGV4ID0gYXJncy5pbmRleCgnLS0nKQpAQCAt
MTk5LDE3ICsxODYsNyBAQCBkZWYgbWFpbihhcmdzKToKICAgICBvdXRwdXRGaWxlTmFtZXMgPSBh
cmdzW2luT3V0QnJlYWtJbmRleCsxOl0KIAogICAgIGlucHV0RmlsZSA9IG9wZW4oaW5wdXRGaWxl
TmFtZSwgJ3InKQotICAgIGlkbEZpbGVOYW1lcyA9IFtdCi0gICAgY3lnZHJpdmVOYW1lcyA9IFtd
Ci0gICAgZm9yIGxpbmUgaW4gaW5wdXRGaWxlOgotICAgICAgICBpZGxGaWxlTmFtZSA9IGxpbmUu
cnN0cmlwKCkuc3BsaXQoJyAnKVswXQotICAgICAgICBpZiBpZGxGaWxlTmFtZS5zdGFydHN3aXRo
KCIvY3lnZHJpdmUiKToKLSAgICAgICAgICAgIGN5Z2RyaXZlTmFtZXMuYXBwZW5kKGlkbEZpbGVO
YW1lKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWRsRmlsZU5hbWVzLmFwcGVuZChpZGxG
aWxlTmFtZSkKLQotICAgIGlmIGN5Z2RyaXZlTmFtZXM6Ci0gICAgICAgIGlkbEZpbGVOYW1lcy5l
eHRlbmQocmVzb2x2ZUN5Z3BhdGgoY3lnZHJpdmVOYW1lcykpCisgICAgaWRsRmlsZU5hbWVzID0g
aW5wdXRGaWxlLnJlYWQoKS5zcGxpdCgnXG4nKQogICAgIGlucHV0RmlsZS5jbG9zZSgpCiAKICAg
ICBmaWxlc01ldGFEYXRhID0gZXh0cmFjdE1ldGFEYXRhKGlkbEZpbGVOYW1lcykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCBlNjU4ZThiLi4zODg0YTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0xNDk2LDcg
KzE0OTYsNiBAQAogICAgICAgICAgICAgJ3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuaWRsJywK
ICAgICAgICAgICAgICd3ZWJhdWRpby9Db252b2x2ZXJOb2RlLmlkbCcsCiAgICAgICAgICAgICAn
d2ViYXVkaW8vRGVsYXlOb2RlLmlkbCcsCi0gICAgICAgICAgICAnd2ViYXVkaW8vRE9NV2luZG93
V2ViQXVkaW8uaWRsJywKICAgICAgICAgICAgICd3ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JO
b2RlLmlkbCcsCiAgICAgICAgICAgICAnd2ViYXVkaW8vSGlnaFBhc3MyRmlsdGVyTm9kZS5pZGwn
LAogICAgICAgICAgICAgJ3dlYmF1ZGlvL0phdmFTY3JpcHRBdWRpb05vZGUuaWRsJywKQEAgLTI4
MTgsNyArMjgxNyw2IEBACiAgICAgICAgICAgICAnbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29u
dHJvbC5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wu
aCcsCiAgICAgICAgICAgICAnbG9hZGVyL0Nyb3NzT3JpZ2luUHJlZmxpZ2h0UmVzdWx0Q2FjaGUu
Y3BwJywKLSAgICAgICAgICAgICdsb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmNwcCcsCiAgICAg
ICAgICAgICAnbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCcsCiAgICAgICAgICAgICAnbG9hZGVy
L0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAnLAogICAgICAgICAgICAgJ2xvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuaCcsCkBAIC00MTg4LDcgKzQxODYsNiBAQAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwJywKICAgICAgICAgICAg
ICdwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlLmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUhhbmRsZUludGVybmFsLmgnLAotICAgICAgICAgICAgJ3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAnLAogICAgICAgICAgICAgJ3Bs
YXRmb3JtL25ldHdvcmsvU29ja2V0U3RyZWFtRXJyb3JCYXNlLmNwcCcsCkBAIC02NDMxLDcgKzY0
MjgsNiBAQAogICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0LmpzJywKICAg
ICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdEZvcm1hdHRlci5qcycsCiAgICAg
ICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRGb3JtYXR0ZXJXb3JrZXIuanMnLAot
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c05hdmlnYXRvci5qcycsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1NlYXJjaFNjb3BlLmpzJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL1NlYXJjaENvbnRyb2xsZXIuanMnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCAxODk3YTRmLi41
NTQ3ODk3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
agpAQCAtMjU3NDYsMTkgKzI1NzQ2LDE1IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUK
LQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxEb2N1bWVudExvYWRUaW1pbmcuY3BwIgotCQkJ
CT4KLQkJCTwvRmlsZT4KLQkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcRG9j
dW1lbnRMb2FkVGltaW5nLmgiCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxsb2FkZXJcRG9jdW1lbnRM
b2FkZXIuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRo
PSIuLlxsb2FkZXJcRG9jdW1lbnRMb2FkZXIuY3BwIgorCQkJCVJlbGF0aXZlUGF0aD0iLi5cbG9h
ZGVyXERvY3VtZW50TG9hZGVyLmgiCiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKLQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGxvYWRlclxEb2N1bWVudExvYWRlci5oIgorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cbG9hZGVyXERvY3VtZW50TG9hZFRpbWluZy5oIgogCQkJCT4KIAkJCTwvRmlsZT4KIAkJ
CTxGaWxlCkBAIC0zMDIwOSwxMCArMzAyMDUsNiBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJ
CTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xSZXNvdXJjZUxv
YWRUaW1pbmcuY3BwIgotCQkJCQk+Ci0JCQkJPC9GaWxlPgotCQkJCTxGaWxlCiAJCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cbmV0d29ya1xSZXNvdXJjZUxvYWRUaW1pbmcuaCIKIAkJCQkJ
PgogCQkJCTwvRmlsZT4KQEAgLTY5MzkzLDEwICs2OTM4NSw2IEBACiAJCQkJCT4KIAkJCQk8L0Zp
bGU+CiAJCQkJPEZpbGUKLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5k
XFNjcmlwdHNOYXZpZ2F0b3IuanMiCi0JCQkJCT4KLQkJCQk8L0ZpbGU+Ci0JCQkJPEZpbGUKIAkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXHNjcmlwdHNQYW5lbC5jc3Mi
CiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDk2NWI2Ni4uNWY4MGFkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjgwOSw4
ICsyODA5LDYgQEAKIAkJODVGNzRFMEEwQUE4REY4QzAwMERDMjg0IC8qIERPTUNTU1Vua25vd25S
dWxlLmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NTAzMkRENTBBQThDOUJFMDA3RDNCN0QgLyogRE9NQ1NTVW5rbm93blJ1bGUu
aCAqLzsgfTsKIAkJODVGRjMxNUEwQUFGQkZDQjAwMzc0RjM4IC8qIERPTUtleWJvYXJkRXZlbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg1RkYzMTU4
MEFBRkJGQ0IwMDM3NEYzOCAvKiBET01LZXlib2FyZEV2ZW50LmggKi87IH07CiAJCTg1RkYzMTVC
MEFBRkJGQ0IwMDM3NEYzOCAvKiBET01LZXlib2FyZEV2ZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODVGRjMxNTkwQUFGQkZDQjAwMzc0RjM4IC8q
IERPTUtleWJvYXJkRXZlbnQubW0gKi87IH07Ci0JCTg2MUMyRUE0MTNGQjRGREQwMDA2MkFCQiAv
KiBEb2N1bWVudExvYWRUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODYxQzJFQTMxM0ZCNEZERDAwMDYyQUJCIC8qIERvY3VtZW50TG9hZFRp
bWluZy5jcHAgKi87IH07Ci0JCTg2MUMyRUE2MTNGQjRGRkYwMDA2MkFCQiAvKiBSZXNvdXJjZUxv
YWRUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODYxQzJFQTUxM0ZCNEZGRjAwMDYyQUJCIC8qIFJlc291cmNlTG9hZFRpbWluZy5jcHAgKi87
IH07CiAJCTg2MjQzRDAxMTFCQzMxRjcwMENDMDA2QSAvKiBKU0FycmF5QnVmZmVyVmlld0hlbHBl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODYyNDNE
MDAxMUJDMzFGNzAwQ0MwMDZBIC8qIEpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmggKi87IH07CiAJ
CTg2RDk4MkY3MTI1QzE1NDAwMEFEOUUzRCAvKiBEb2N1bWVudFRpbWluZy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZEOTgyRjYxMjVDMTU0MDAwQUQ5
RTNEIC8qIERvY3VtZW50VGltaW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODkwQUUwRTExMjU2QTA3OTAwRjU5NjhDIC8qIERpcmVjdG9yeVJl
YWRlckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg5MEFFMEUwMTI1NkEwNzkwMEY1OTY4QyAvKiBEaXJlY3RvcnlSZWFkZXJCYXNlLmggKi87IH07
CkBAIC0xMDAyOSw4ICsxMDAyNyw2IEBACiAJCTg1RjU2QTc5MEE5OENFMzcwMEFEQjYwQSAvKiBE
T01Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gRE9NUHJvY2Vzc2luZ0luc3RydWN0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk4NUZGMzE1ODBBQUZCRkNCMDAzNzRGMzggLyogRE9NS2V5Ym9hcmRFdmVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NS2V5Ym9hcmRFdmVudC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4NUZGMzE1OTBBQUZCRkNCMDAzNzRGMzgg
LyogRE9NS2V5Ym9hcmRFdmVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBET01LZXlib2FyZEV2ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk4NjFDMkVBMzEzRkI0RkREMDAwNjJBQkIgLyogRG9jdW1lbnRMb2FkVGltaW5nLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERvY3VtZW50TG9hZFRpbWluZy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg2MUMyRUE1MTNGQjRGRkYwMDA2MkFCQiAv
KiBSZXNvdXJjZUxvYWRUaW1pbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gUmVzb3VyY2VMb2FkVGltaW5nLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODYyNDNEMDAxMUJDMzFGNzAwQ0MwMDZBIC8qIEpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXJyYXlCdWZmZXJWaWV3SGVscGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg2RDk4MkY2MTI1QzE1NDAwMEFEOUUz
RCAvKiBEb2N1bWVudFRpbWluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
b2N1bWVudFRpbWluZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTBBRTBFMDEy
NTZBMDc5MDBGNTk2OEMgLyogRGlyZWN0b3J5UmVhZGVyQmFzZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBEaXJlY3RvcnlSZWFkZXJCYXNlLmg7IHBhdGggPSBmaWxlYXBpL0Rp
cmVjdG9yeVJlYWRlckJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NDQ5
LDcgKzE1NDQ1LDYgQEAKIAkJCQk1MTRDNzY2NjBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbC5oICovLAogCQkJCTQ5Mjg2Mzk4MTI1M0I4RkMwMEY3OTJENiAvKiBSZXNv
dXJjZUxvYWRJbmZvLmggKi8sCiAJCQkJRTQyOTVGQTMxMkIwNjE0RTAwRDFBQ0UwIC8qIFJlc291
cmNlTG9hZFByaW9yaXR5LmggKi8sCi0JCQkJODYxQzJFQTUxM0ZCNEZGRjAwMDYyQUJCIC8qIFJl
c291cmNlTG9hZFRpbWluZy5jcHAgKi8sCiAJCQkJOEE4MUJGODQxMURDRkQ5MDAwREEyQjk4IC8q
IFJlc291cmNlTG9hZFRpbWluZy5oICovLAogCQkJCTUxNEM3NjY3MENFOTIzQTEwMDdFRjNDRCAv
KiBSZXNvdXJjZVJlcXVlc3RCYXNlLmNwcCAqLywKIAkJCQk1MTRDNzY2ODBDRTkyM0ExMDA3RUYz
Q0QgLyogUmVzb3VyY2VSZXF1ZXN0QmFzZS5oICovLApAQCAtMjAwMDAsMTAgKzE5OTk1LDkgQEAK
IAkJCQlFMUM0MTYxMTBGNjU2MkZEMDA5MkQyRkIgLyogQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9s
LmggKi8sCiAJCQkJRTFDNDE1REQwRjY1NUQ3QzAwOTJEMkZCIC8qIENyb3NzT3JpZ2luUHJlZmxp
Z2h0UmVzdWx0Q2FjaGUuY3BwICovLAogCQkJCUUxQzQxNUQ5MEY2NTVENkYwMDkyRDJGQiAvKiBD
cm9zc09yaWdpblByZWZsaWdodFJlc3VsdENhY2hlLmggKi8sCi0JCQkJODYxQzJFQTMxM0ZCNEZE
RDAwMDYyQUJCIC8qIERvY3VtZW50TG9hZFRpbWluZy5jcHAgKi8sCi0JCQkJOEExMkUzNUMxMUZB
MzMyODAwMjU4MzZBIC8qIERvY3VtZW50TG9hZFRpbWluZy5oICovLAogCQkJCTkzRTIyN0RCMEFG
NTg5QUQwMEQ0ODMyNCAvKiBEb2N1bWVudExvYWRlci5jcHAgKi8sCiAJCQkJNjU2RDM3MUUwQURC
QTVERTAwQTQ1NTREIC8qIERvY3VtZW50TG9hZGVyLmggKi8sCisJCQkJOEExMkUzNUMxMUZBMzMy
ODAwMjU4MzZBIC8qIERvY3VtZW50TG9hZFRpbWluZy5oICovLAogCQkJCTBCOTA1NjE1MEYyNTc4
QkUwMDk1RkY2QSAvKiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwICovLAogCQkJCTBCOTA1
NjE2MEYyNTc4QkUwMDk1RkY2QSAvKiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCAqLywKIAkJ
CQk5NzM4ODk5RTExNkVBOURDMDBBREYzMTMgLyogRG9jdW1lbnRXcml0ZXIuY3BwICovLApAQCAt
MjIxMTQsOCArMjIxMDgsOCBAQAogCQkJCUIyRjM0RkU2MEU4MkY4MTQwMEY2MjdDRCAvKiBETlMu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE4MTg1RjQwMDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgxODVGM0QwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3Vt
ZW50RnJhZ21lbnQuaCBpbiBIZWFkZXJzICovLAotCQkJCThBMTJFMzVEMTFGQTMzMjgwMDI1ODM2
QSAvKiBEb2N1bWVudExvYWRUaW1pbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCTY1NkQzNzM2MEFE
QkE1REUwMEE0NTU0RCAvKiBEb2N1bWVudExvYWRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJOEEx
MkUzNUQxMUZBMzMyODAwMjU4MzZBIC8qIERvY3VtZW50TG9hZFRpbWluZy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRUQyQkE4M0MwOUEyNEI5MTAwNkMwQUM0IC8qIERvY3VtZW50TWFya2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlDRTA1N0ZBNjEyMjA3MzExMDBBNDc2RDUgLyogRG9jdW1lbnRNYXJr
ZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDk0N0ZGRTEyRjgwQ0QyMDBBMEY2
MzEgLyogRG9jdW1lbnRPcmRlcmVkTWFwLmggaW4gSGVhZGVycyAqLywKQEAgLTI1NDU0LDcgKzI1
NDQ4LDYgQEAKIAkJCQlCMkYzNEZFOTBFODJGODI3MDBGNjI3Q0QgLyogRE5TQ0ZOZXQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTgxODVGM0MwOTc2NTc2NjAwNTgyNkQ5IC8qIERvY3VtZW50LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4MTg1RjNGMDk3NjU3NjYwMDU4MjZEOSAvKiBEb2N1bWVu
dEZyYWdtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTg2MUMyRUE0MTNGQjRGREQwMDA2MkFC
QiAvKiBEb2N1bWVudExvYWRUaW1pbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNFMjI3RTAw
QUY1ODlBRDAwRDQ4MzI0IC8qIERvY3VtZW50TG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTFDMjY0OTdBMEQ3RTI0OEEwMEJEMTBGMiAvKiBEb2N1bWVudExvYWRlck1hYy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBNzgxQzZBNzEzODI4QjVEMDAxMkE2MkEgLyogRG9jdW1lbnRNYXJrZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCkBAIC0yNzA3Niw3ICsyNzA2OSw2IEBACiAJCQkJNTFBQTNGNkYw
QkQ1QUE5RTAwODkyOTcxIC8qIFJlc291cmNlTG9hZGVyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTczRTMyNTYxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUQwQ0U1OEY4MTI1RTRDQzIwMEYzRjE5OSAvKiBSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJODYxQzJFQTYxM0ZCNEZGRjAwMDYy
QUJCIC8qIFJlc291cmNlTG9hZFRpbWluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTRDNzY3
QzBDRTkyM0ExMDA3RUYzQ0QgLyogUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3RUU2ODQ2RTEyRDI2RTM4MDBFNzk0MTUgLyogUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0Qzc2NTMwQ0U5MjM0RTAwN0VGM0NEIC8qIFJlc291
cmNlUmVxdWVzdE1hYy5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5tbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L29iamMvRE9NSW50ZXJuYWwubW0KaW5kZXggZmFiMTBiNC4uYmViZDMzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9ET01JbnRlcm5hbC5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL0RPTUludGVybmFsLm1tCkBAIC0zNywxMSArMzcsNiBAQAog
CiBzdGF0aWMgTlNNYXBUYWJsZSogRE9NV3JhcHBlckNhY2hlOwogCi0jaWYgQ09NUElMRVIoQ0xB
TkcpCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMiCi0jZW5kaWYgICAgCi0KIE5T
TWFwVGFibGUqIGNyZWF0ZVdyYXBwZXJDYWNoZSgpCiB7CiAgICAgLy8gTlNNYXBUYWJsZSB3aXRo
IHplcm9pbmcgd2VhayBwb2ludGVycyBpcyB0aGUgcmVjb21tZW5kZWQgd2F5IHRvIGJ1aWxkIGNh
Y2hlcyBsaWtlIHRoaXMgdW5kZXIgZ2FyYmFnZSBjb2xsZWN0aW9uLgpAQCAtNTAsMTAgKzQ1LDYg
QEAgTlNNYXBUYWJsZSogY3JlYXRlV3JhcHBlckNhY2hlKCkKICAgICByZXR1cm4gW1tOU01hcFRh
YmxlIGFsbG9jXSBpbml0V2l0aEtleU9wdGlvbnM6a2V5T3B0aW9ucyB2YWx1ZU9wdGlvbnM6dmFs
dWVPcHRpb25zIGNhcGFjaXR5OjBdOwogfQogCi0jaWYgQ09NUElMRVIoQ0xBTkcpCi0jcHJhZ21h
IGNsYW5nIGRpYWdub3N0aWMgcG9wCi0jZW5kaWYKLQogTlNPYmplY3QqIGdldERPTVdyYXBwZXIo
RE9NT2JqZWN0SW50ZXJuYWwqIGltcGwpCiB7CiAgICAgaWYgKCFET01XcmFwcGVyQ2FjaGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRp
bmdzLnBsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5n
cy5wbAppbmRleCA4NGI3M2VkLi4xNjMwMzQ1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvZ2VuZXJhdGUtYmluZGluZ3MucGwKQEAgLTQ5LDcgKzQ5LDYgQEAg
bXkgJHByZXByb2Nlc3NvcjsKIG15ICR3cml0ZURlcGVuZGVuY2llczsKIG15ICR2ZXJib3NlOwog
bXkgJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlOwotbXkgJGFkZGl0aW9uYWxJZGxGaWxlc0xp
c3Q7CiAKIEdldE9wdGlvbnMoJ2luY2x1ZGU9c0AnID0+IFxAaWRsRGlyZWN0b3JpZXMsCiAgICAg
ICAgICAgICdvdXRwdXREaXI9cycgPT4gXCRvdXRwdXREaXJlY3RvcnksCkBAIC02MSw4ICs2MCw3
IEBAIEdldE9wdGlvbnMoJ2luY2x1ZGU9c0AnID0+IFxAaWRsRGlyZWN0b3JpZXMsCiAgICAgICAg
ICAgICdwcmVwcm9jZXNzb3I9cycgPT4gXCRwcmVwcm9jZXNzb3IsCiAgICAgICAgICAgICd2ZXJi
b3NlJyA9PiBcJHZlcmJvc2UsCiAgICAgICAgICAgICd3cml0ZS1kZXBlbmRlbmNpZXMnID0+IFwk
d3JpdGVEZXBlbmRlbmNpZXMsCi0gICAgICAgICAgICdzdXBwbGVtZW50YWxEZXBlbmRlbmN5Rmls
ZT1zJyA9PiBcJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlLAotICAgICAgICAgICAnYWRkaXRp
b25hbElkbEZpbGVzTGlzdD1zJyA9PiBcJGFkZGl0aW9uYWxJZGxGaWxlc0xpc3QpOworICAgICAg
ICAgICAnc3VwcGxlbWVudGFsRGVwZW5kZW5jeUZpbGU9cycgPT4gXCRzdXBwbGVtZW50YWxEZXBl
bmRlbmN5RmlsZSk7CiAKIG15ICR0YXJnZXRJZGxGaWxlID0gJEFSR1ZbMF07CiAKQEAgLTk1LDI4
ICs5MywxMyBAQCBpZiAoJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlKSB7CiAgICAgb3BlbiBG
SCwgIjwgJHN1cHBsZW1lbnRhbERlcGVuZGVuY3lGaWxlIiBvciBkaWUgIkNhbm5vdCBvcGVuICRz
dXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZVxuIjsKICAgICB3aGlsZSAobXkgJGxpbmUgPSA8Rkg+
KSB7CiAgICAgICAgIG15ICgkaWRsRmlsZSwgQGZvbGxvd2luZ0lkbEZpbGVzKSA9IHNwbGl0KC9c
cysvLCAkbGluZSk7Ci0gICAgICAgIGlmICgkaWRsRmlsZSBhbmQgYmFzZW5hbWUoJGlkbEZpbGUp
IGVxIGJhc2VuYW1lKCR0YXJnZXRJZGxGaWxlKSkgeworICAgICAgICBpZiAoJGlkbEZpbGUgYW5k
ICRpZGxGaWxlIGVxICR0YXJnZXRJZGxGaWxlKSB7CiAgICAgICAgICAgICAkaWRsRm91bmQgPSAx
OwogICAgICAgICAgICAgQHN1cHBsZW1lbnRlZElkbEZpbGVzID0gQGZvbGxvd2luZ0lkbEZpbGVz
OwogICAgICAgICB9CiAgICAgfQogICAgIGNsb3NlIEZIOwogCi0gICAgIyBUaGUgZmlsZSAkYWRk
aXRpb25hbElkbEZpbGVzTGlzdCBjb250YWlucyBvbmUgSURMIGZpbGUgcGVyIGxpbmU6Ci0gICAg
IyBQLmlkbAotICAgICMgUS5pZGwKLSAgICAjIC4uLgotICAgICMgVGhlc2UgSURMIGZpbGVzIGFy
ZSBvbmVzIHdoaWNoIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gRGVyaXZlZFNvdXJjZXMqLmNw
cAotICAgICMgKGkuZS4gdGhleSBhcmUgbm90IGRlc2NyaWJlZCBpbiB0aGUgc3VwcGxlbWVudGFs
IGRlcGVuZGVuY3kgZmlsZSkKLSAgICAjIGJ1dCBzaG91bGQgZ2VuZXJhdGUgLmggYW5kIC5jcHAg
ZmlsZXMuCi0gICAgaWYgKCEkaWRsRm91bmQgYW5kICRhZGRpdGlvbmFsSWRsRmlsZXNMaXN0KSB7
Ci0gICAgICAgIG9wZW4gRkgsICI8ICRhZGRpdGlvbmFsSWRsRmlsZXNMaXN0IiBvciBkaWUgIkNh
bm5vdCBvcGVuICRhZGRpdGlvbmFsSWRsRmlsZXNMaXN0XG4iOwotICAgICAgICBteSBAaWRsRmls
ZXMgPSA8Rkg+OwotICAgICAgICBjaG9tcChAaWRsRmlsZXMpOwotICAgICAgICAkaWRsRm91bmQg
PSBncmVwIHsgJF8gYW5kIGJhc2VuYW1lKCRfKSBlcSBiYXNlbmFtZSgkdGFyZ2V0SWRsRmlsZSkg
fSBAaWRsRmlsZXM7Ci0gICAgICAgIGNsb3NlIEZIOwotICAgIH0KLQogICAgIGlmICghJGlkbEZv
dW5kKSB7CiAgICAgICAgIGlmICgkdmVyYm9zZSkgewogICAgICAgICAgICAgcHJpbnQgIiR0YXJn
ZXRJZGxGaWxlIGlzIHN1cHBsZW1lbnRpbmcgYW5vdGhlciBJREwgZmlsZSwgYW5kIHRodXMgLmgg
YW5kIC5jcHAgZm9yICR0YXJnZXRJZGxGaWxlIGFyZSBub3QgZ2VuZXJhdGVkLlxuIjsKQEAgLTEy
OSw3OSArMTEyLDYgQEAgaWYgKCRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSkgewogbXkgJHRh
cmdldFBhcnNlciA9IElETFBhcnNlci0+bmV3KCEkdmVyYm9zZSk7CiBteSAkdGFyZ2V0RG9jdW1l
bnQgPSAkdGFyZ2V0UGFyc2VyLT5QYXJzZSgkdGFyZ2V0SWRsRmlsZSwgJGRlZmluZXMsICRwcmVw
cm9jZXNzb3IpOwogCi0jIEZJWE1FKGhhcmFrZW4pOiBSZW1vdmUgdGhpcyBpZi1lbHNlIHN0YXRl
bWVudC4KLSMgVGhpcyBpZi1lbHNlIHN0YXRlbWVudCBpcyB0ZW1wb3JhcnkgYW5kIHdpbGwgYmUg
cmVtb3ZlZAotIyBhZnRlciBidWlsZCBzY3JpcHRzIGZvciBhbGwgcGxhdGZvcm1zIHN1cHBvcnQg
W1N1cHBsZW1lbnRhbF0gSURMLgotIyBUaGUgbW90aXZhdGlvbiBmb3IgdGhlIFtTdXBwbGVtZW50
ZWRdIElETCBpcyBhcyBmb2xsb3dzOgotIwotIyBJbiBvcmRlciB0byBzdXBwb3J0IHRoZSBbU3Vw
cGxlbWVudGFsXSBJREwsIHdlIG5lZWQgdG8KLSMgKDEpIHJ1biByZXNvbHZlLXN1cHBsZW1lbnRh
bC5wbCBhbmQgZ2VuZXJhdGUgc3VwcGxlbWVudGFsX2RlcGVuZGVuY3kudG1wCi0jICgyKSBhbmQg
cnVuIGdlbmVyYXRlLWJpbmRpbmdzLnBsIHdpdGggdGhlIHN1cHBsZW1lbnRhbF9kZXBlbmRlbmN5
LnRtcC4KLSMKLSMgVGhpcyBidWlsZCBmbG93IHJlcXVpcmVzIGEgY2hhbmdlIG9uIHRoZSBmb2xs
b3dpbmcgYnVpbGQgc2NyaXB0cywKLSMgYnV0IGNoYW5naW5nIGFsbCB0aGUgYnVpbGQgc2NyaXB0
cyBhbGwgYXQgb25jZSB3aXRob3V0IGFueSByZWdyZXNzaW9uIGlzIHRvbyBkaWZmaWN1bHQ6Ci0j
Ci0jICAgICAtIERlcml2ZWRTb3VyY2VzLm1ha2UKLSMgICAgIC0gRGVyaXZlZFNvdXJjZXMucHJp
Ci0jICAgICAtIEdOVW1ha2VmaWxlLmFtCi0jICAgICAtIFBsYXRmb3JtQmxhY2tCZXJyeS5jbWFr
ZQotIyAgICAgLSBVc2VKU0MuY21ha2UKLSMgICAgIC0gVXNlVjguY21ha2UKLSMgICAgIC0gV2Vi
Q29yZS52Y3Byb2ovTWlncmF0ZVNjcmlwdHMKLSMgICAgIC0gV2ViQ29yZS52Y3Byb2ovV2ViQ29y
ZS52Y3Byb2oKLSMgICAgIC0gYmluZGluZ3MvZ29iamVjdC9HTlVtYWtlZmlsZS5hbQotIyAgICAg
LSBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAotIwotIyBUaHVzLCB3ZSBhcmUgcGxhbm5pbmcgdG8g
Y2hhbmdlIHRoZSBidWlsZCBzY3JpcHRzIG9uZSBieSBvbmUsIHdoaWNoIGltcGxpZXMgdGhhdAot
IyB3ZSBuZWVkIHRvIGFsbG93IHRoZSB0ZW1wb3Jhcnkgc3RhdGUgaW4gd2hpY2ggc29tZSBidWls
ZCBzY3JpcHRzIHN1cHBvcnQgW1N1cHBsZW1lbnRhbF0gSURMCi0jIGJ1dCBvdGhlcnMgZG8gbm90
LiBUbyBhY2NvbXBsaXNoIHRoaXMsIHdlIGludHJvZHVjZSBhIHRlbXBvcmFsIElETCwgW1N1cHBs
ZW1lbnRlZF0uCi0jIFRoZSBbU3VwcGxlbWVudGVkXSBJREwgb24gYW4gYXR0cmlidXRlIG1lYW5z
IHRoYXQgdGhlIGF0dHJpYnV0ZSBpcyBtYXJrZWQgd2l0aCBbU3VwcGxlbWVudGFsXQotIyBpbiBh
bm90aGVyIElETCBmaWxlIHNvbWV3aGVyZSwgbGlrZSB0aGlzOgotIwotIyBET01XaW5kb3dXZWJB
dWRpby5pZGw6Ci0jICAgICBpbnRlcmZhY2UgWwotIyAgICAgICAgIFN1cHBsZW1lbnRhbD1ET01X
aW5kb3cKLSMgICAgIF0gRE9NV2luZG93V2ViQXVkaW8gewotIyAgICAgICAgIGF0dHJpYnV0ZSBh
dHRyMTsKLSMgICAgICAgICBhdHRyaWJ1dGUgYXR0cjI7Ci0jICAgICB9OwotIwotIyBET01XaW5k
b3cuaWRsOgotIyAgICAgaW50ZXJmYWNlIFsKLSMgICAgIF0gRE9NV2luZG93IHsKLSMgICAgICAg
ICBhdHRyaWJ1dGUgW1N1cHBsZW1lbnRlZF0gYXR0cjE7IC8vIFRoaXMgbGluZSB3aWxsIGJlIHJl
bW92ZWQgYWZ0ZXIgYWxsIGJ1aWxkIHNjcmlwdHMgc3VwcG9ydCB0aGUgW1N1cHBsZW1lbnRhbEwu
Ci0jICAgICAgICAgYXR0cmlidXRlIFtTdXBwbGVtZW50ZWRdIGF0dHIyOyAvLyBUaGlzIGxpbmUg
d2lsbCBiZSByZW1vdmVkIGFmdGVyIGFsbCBidWlsZCBzY3JpcHRzIHN1cHBvcnQgdGhlIFtTdXBw
bGVtZW50YWxMLgotIyAgICAgICAgIGF0dHJpYnV0ZSBhdHRyMzsKLSMgICAgICAgICBhdHRyaWJ1
dGUgYXR0cjQ7Ci0jICAgICB9OwotIwotIyBBc3N1bWluZyB0aGVzZSBJREwgZmlsZXMsIHRoZSBi
ZWxvdyBjb2RlIGlzIGRvaW5nIHRoZSBmb2xsb3dpbmcgbG9naWM6Ci0jCi0jICAgICAtIElmIGEg
Z2l2ZW4gYnVpbGQgc2NyaXB0IHN1cHBvcnRzIHRoZSBbU3VwcGxlbWVudGFsXSBJREwgKGkuZS4g
LS1zdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSBpcyBzcGVjaWZpZWQpLAotIyAgICAgICB3ZSBp
Z25vcmUgYWxsIGF0dHJpYnV0ZXMgd2l0aCB0aGUgW1N1cHBsZW1lbnRlZF0gSURMLgotIyAgICAg
LSBPdGhlcndpc2UgKGkuZS4gLS1zdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSBpcyBub3Qgc3Bl
Y2lmaWVkKSwKLSMgICAgICAgd2UgdHJlYXQgYWxsIGF0dHJpYnV0ZXMgd2l0aCB0aGUgW1N1cHBs
ZW1lbnRlZF0gSURMIGFzIG5vcm1hbCBhdHRyaWJ1dGVzCi0jICAgICAgIGFuZCBpbnN0ZWFkIGln
bm9yZSBhbGwgYXR0cmlidXRlcyB3aXRoIHRoZSBbU3VwcGxlbWVudGFsXSBJREwKLSMgICAgICAg
KGkuZS4gd2UgZ2VuZXJhdGUgbm90aGluZyBmcm9tIHRoZSBpZGwgZmlsZSB3aXRoIHRoZSBbU3Vw
cGxlbWVudGFsXSBJREwpLgotaWYgKCRzdXBwbGVtZW50YWxEZXBlbmRlbmN5RmlsZSkgewotICAg
IGZvcmVhY2ggbXkgJGRhdGFOb2RlIChAeyR0YXJnZXREb2N1bWVudC0+Y2xhc3Nlc30pIHsKLSAg
ICAgICAgbXkgQG5vblN1cHBsZW1lbnRlZEF0dHJpYnV0ZXM7Ci0gICAgICAgIGZvcmVhY2ggbXkg
JGF0dHJpYnV0ZSAoQHskZGF0YU5vZGUtPmF0dHJpYnV0ZXN9KSB7Ci0gICAgICAgICAgICBpZiAo
ISRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IlN1cHBsZW1lbnRl
ZCJ9KSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAbm9uU3VwcGxlbWVudGVkQXR0cmlidXRlcywg
JGF0dHJpYnV0ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgJGRhdGFOb2Rl
LT5hdHRyaWJ1dGVzKFxAbm9uU3VwcGxlbWVudGVkQXR0cmlidXRlcyk7Ci0gICAgfQotfSBlbHNl
IHsKLSAgICBmb3JlYWNoIG15ICRkYXRhTm9kZSAoQHskdGFyZ2V0RG9jdW1lbnQtPmNsYXNzZXN9
KSB7Ci0gICAgICAgIGlmICgkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJTdXBwbGVt
ZW50YWwifSkgewotICAgICAgICAgICAgZXhpdCAwOwotICAgICAgICB9Ci0gICAgfQotfQotIyBU
ZW1wb3JhcnkgaWYtZWxzZSBzdGF0ZW1lbnQgdW50aWwgaGVyZS4KLQogZm9yZWFjaCBteSAkaWRs
RmlsZSAoQHN1cHBsZW1lbnRlZElkbEZpbGVzKSB7CiAgICAgbmV4dCBpZiAkaWRsRmlsZSBlcSAk
dGFyZ2V0SWRsRmlsZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQcm94eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNwcAppbmRl
eCBjNTBkYzIyLi4wNTc2MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmNw
cApAQCAtMzMsNiArMzMsNyBAQAogCiAjaW5jbHVkZSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24uaCIKICNpbmNsdWRlICJDYWNoZWRNZXRhZGF0YS5oIgorI2luY2x1ZGUgIkNvbnNvbGUuaCIK
ICNpbmNsdWRlICJEYXRlRXh0ZW5zaW9uLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJEb2N1bWVudExvYWRlci5oIgpAQCAtNDIsNiArNDMsNyBAQAogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlICJQYWdlLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1TdXBwb3J0LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29k
ZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCkBAIC0xMTcsNiArMTE5LDIxIEBAIHR5
cGVkZWYgSGFzaE1hcDxOb2RlKiwgdjg6Ok9iamVjdCo+IERPTU5vZGVNYXA7CiB0eXBlZGVmIEhh
c2hNYXA8dm9pZCosIHY4OjpPYmplY3QqPiBET01PYmplY3RNYXA7CiB0eXBlZGVmIEhhc2hNYXA8
aW50LCB2ODo6RnVuY3Rpb25UZW1wbGF0ZSo+IEZ1bmN0aW9uVGVtcGxhdGVNYXA7CiAKK3N0YXRp
YyB2b2lkIGFkZE1lc3NhZ2VUb0NvbnNvbGUoUGFnZSogcGFnZSwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyKQoreworICAg
IEFTU0VSVChwYWdlKTsKKyAgICBDb25zb2xlKiBjb25zb2xlID0gcGFnZS0+bWFpbkZyYW1lKCkt
PmRvbVdpbmRvdygpLT5jb25zb2xlKCk7CisgICAgY29uc29sZS0+YWRkTWVzc2FnZShKU01lc3Nh
Z2VTb3VyY2UsIExvZ01lc3NhZ2VUeXBlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgbGlu
ZU51bWJlciwgc291cmNlSUQpOworfQorCit2b2lkIGxvZ0luZm8oRnJhbWUqIGZyYW1lLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgdXJsKQoreworICAgIFBhZ2UqIHBhZ2Ug
PSBmcmFtZS0+cGFnZSgpOworICAgIGlmICghcGFnZSkKKyAgICAgICAgcmV0dXJuOworICAgIGFk
ZE1lc3NhZ2VUb0NvbnNvbGUocGFnZSwgbWVzc2FnZSwgdXJsLCAwKTsKK30KKwogdm9pZCBWOFBy
b3h5OjpyZXBvcnRVbnNhZmVBY2Nlc3NUbyhGcmFtZSogdGFyZ2V0KQogewogICAgIEFTU0VSVCh0
YXJnZXQpOwpAQCAtMTI3LDYgKzE0NCw5IEBAIHZvaWQgVjhQcm94eTo6cmVwb3J0VW5zYWZlQWNj
ZXNzVG8oRnJhbWUqIHRhcmdldCkKICAgICBGcmFtZSogc291cmNlID0gVjhQcm94eTo6cmV0cmll
dmVGcmFtZUZvckVudGVyZWRDb250ZXh0KCk7CiAgICAgaWYgKCFzb3VyY2UpCiAgICAgICAgIHJl
dHVybjsKKyAgICBQYWdlKiBwYWdlID0gc291cmNlLT5wYWdlKCk7CisgICAgaWYgKCFwYWdlKQor
ICAgICAgICByZXR1cm47CiAKICAgICBEb2N1bWVudCogc291cmNlRG9jdW1lbnQgPSBzb3VyY2Ut
PmRvY3VtZW50KCk7CiAgICAgaWYgKCFzb3VyY2VEb2N1bWVudCkKQEAgLTEzNywxMCArMTU3LDE0
IEBAIHZvaWQgVjhQcm94eTo6cmVwb3J0VW5zYWZlQWNjZXNzVG8oRnJhbWUqIHRhcmdldCkKICAg
ICBTdHJpbmcgc3RyID0gIlVuc2FmZSBKYXZhU2NyaXB0IGF0dGVtcHQgdG8gYWNjZXNzIGZyYW1l
IHdpdGggVVJMICIgKyB0YXJnZXREb2N1bWVudC0+dXJsKCkuc3RyaW5nKCkgKwogICAgICAgICAg
ICAgICAgICAiIGZyb20gZnJhbWUgd2l0aCBVUkwgIiArIHNvdXJjZURvY3VtZW50LT51cmwoKS5z
dHJpbmcoKSArICIuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC5cbiI7
CiAKKyAgICAvLyBCdWlsZCBhIGNvbnNvbGUgbWVzc2FnZSB3aXRoIGZha2Ugc291cmNlIElEIGFu
ZCBsaW5lIG51bWJlci4KKyAgICBjb25zdCBTdHJpbmcga1NvdXJjZUlEID0gIiI7CisgICAgY29u
c3QgaW50IGtMaW5lTnVtYmVyID0gMTsKKwogICAgIC8vIE5PVEU6IFNhZmFyaSBwcmludHMgdGhl
IG1lc3NhZ2UgaW4gdGhlIHRhcmdldCBwYWdlLCBidXQgaXQgc2VlbXMgbGlrZQogICAgIC8vIGl0
IHNob3VsZCBiZSBpbiB0aGUgc291cmNlIHBhZ2UuIEV2ZW4gZm9yIGRlbGF5ZWQgbWVzc2FnZXMs
IHdlIHB1dCBpdCBpbgogICAgIC8vIHRoZSBzb3VyY2UgcGFnZS4KLSAgICBzb3VyY2VEb2N1bWVu
dC0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNzYWdlVHlwZSwgRXJy
b3JNZXNzYWdlTGV2ZWwsIHN0cik7CisgICAgYWRkTWVzc2FnZVRvQ29uc29sZShwYWdlLCBzdHIs
IGtTb3VyY2VJRCwga0xpbmVOdW1iZXIpOwogfQogCiBzdGF0aWMgdm9pZCBoYW5kbGVGYXRhbEVy
cm9ySW5WOCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKaW5kZXggNjk4OWYzOC4u
MTkzYTE2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuaApAQCAtNjUsNiArNjUs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgVjhJc29sYXRlZENvbnRleHQ7CiAg
ICAgY2xhc3MgV29ybGRDb250ZXh0SGFuZGxlOwogCisgICAgLy8gRklYTUU6IHVzZSBzdGFuZGFy
ZCBsb2dnaW5nIGZhY2lsaXRpZXMgaW4gV2ViQ29yZS4KKyAgICB2b2lkIGxvZ0luZm8oRnJhbWUq
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgdXJsKTsKKwogICAgIC8vIFRo
ZSBmb2xsb3dpbmcgQmF0Y2ggc3RydWN0cyBhbmQgbWV0aG9kcyBhcmUgdXNlZCBmb3Igc2V0dGlu
ZyBtdWx0aXBsZQogICAgIC8vIHByb3BlcnRpZXMgb24gYW4gT2JqZWN0VGVtcGxhdGUsIHVzZWQg
ZnJvbSB0aGUgZ2VuZXJhdGVkIGJpbmRpbmdzCiAgICAgLy8gaW5pdGlhbGl6YXRpb24gKENvbmZp
Z3VyZVhYWFRlbXBsYXRlKS4gVGhpcyBncmVhdGx5IHJlZHVjZXMgdGhlIGJpbmFyeQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tWFBhdGhOU1Jl
c29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEN1c3RvbVhQ
YXRoTlNSZXNvbHZlci5jcHAKaW5kZXggMDYyYjczYy4uN2E1YTQ0MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21YUGF0aE5T
UmVzb2x2ZXIuY3BwCkBAIC0zMCwxMiArMzAsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlY4Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmgiCiAKLSNpbmNsdWRlICJTY3JpcHRDYWxs
U3RhY2suaCIKLSNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJWOEJpbmRpbmcuaCIKICNpbmNsdWRlICJWOFBy
b3h5LmgiCi0jaW5jbHVkZSAiVjhVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02Niw4ICs2MywxMCBAQCBTdHJp
bmcgVjhDdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVSSShjb25zdCBTdHJp
bmcmIHByZWZpeCkKICAgICB9CiAKICAgICBpZiAobG9va3VwTmFtZXNwYWNlVVJJRnVuYy5Jc0Vt
cHR5KCkgJiYgIW1fcmVzb2x2ZXItPklzRnVuY3Rpb24oKSkgewotICAgICAgICBpZiAoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkK
LSAgICAgICAgICAgIGNvbnRleHQtPmFkZE1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBMb2dNZXNz
YWdlVHlwZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJYUGF0aE5TUmVzb2x2ZXIgZG9lcyBub3QgaGF2
ZSBhIGxvb2t1cE5hbWVzcGFjZVVSSSBtZXRob2QuIiwgMCwgU3RyaW5nKCksIDApOworICAgICAg
ICBpZiAoVjhQcm94eSogcHJveHkgPSBWOFByb3h5OjpyZXRyaWV2ZSgpKSB7CisgICAgICAgICAg
ICBpZiAoRnJhbWUqIGZyYW1lID0gcHJveHktPmZyYW1lKCkpCisgICAgICAgICAgICAgICAgbG9n
SW5mbyhmcmFtZSwgIlhQYXRoTlNSZXNvbHZlciBkb2VzIG5vdCBoYXZlIGEgbG9va3VwTmFtZXNw
YWNlVVJJIG1ldGhvZC4iLCBTdHJpbmcoKSk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFN0
cmluZygpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19pbnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFu
Y2UubW0KaW5kZXggYWY1ZWYxZi4uZjlhZGQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
b2JqYy9vYmpjX2luc3RhbmNlLm1tCkBAIC01MywxMSArNTMsNiBAQCBzdGF0aWMgTlNTdHJpbmcg
KnNfZXhjZXB0aW9uOwogc3RhdGljIEpTR2xvYmFsT2JqZWN0KiBzX2V4Y2VwdGlvbkVudmlyb25t
ZW50OyAvLyBObyBuZWVkIHRvIHByb3RlY3QgdGhpcyB2YWx1ZSwgc2luY2Ugd2UganVzdCB1c2Ug
aXQgZm9yIGEgcG9pbnRlciBjb21wYXJpc29uLgogc3RhdGljIE5TTWFwVGFibGUgKnNfaW5zdGFu
Y2VXcmFwcGVyQ2FjaGU7CiAKLSNpZiBDT01QSUxFUihDTEFORykKLSNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwdXNoCi0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkZXByZWNh
dGVkLWRlY2xhcmF0aW9ucyIKLSNlbmRpZiAgICAKLQogc3RhdGljIE5TTWFwVGFibGUgKmNyZWF0
ZUluc3RhbmNlV3JhcHBlckNhY2hlKCkKIHsKICAgICAvLyBOU01hcFRhYmxlIHdpdGggemVyb2lu
ZyB3ZWFrIHBvaW50ZXJzIGlzIHRoZSByZWNvbW1lbmRlZCB3YXkgdG8gYnVpbGQgY2FjaGVzIGxp
a2UgdGhpcyB1bmRlciBnYXJiYWdlIGNvbGxlY3Rpb24uCkBAIC02NiwxMCArNjEsNiBAQCBzdGF0
aWMgTlNNYXBUYWJsZSAqY3JlYXRlSW5zdGFuY2VXcmFwcGVyQ2FjaGUoKQogICAgIHJldHVybiBb
W05TTWFwVGFibGUgYWxsb2NdIGluaXRXaXRoS2V5T3B0aW9uczprZXlPcHRpb25zIHZhbHVlT3B0
aW9uczp2YWx1ZU9wdGlvbnMgY2FwYWNpdHk6MF07CiB9CiAKLSNpZiBDT01QSUxFUihDTEFORykK
LSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSNlbmRpZgotCiBSdW50aW1lT2JqZWN0KiBP
YmpjSW5zdGFuY2U6Om5ld1J1bnRpbWVPYmplY3QoRXhlY1N0YXRlKiBleGVjKQogewogICAgIHJl
dHVybiBPYmpDUnVudGltZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcXQvcXRf
aW5zdGFuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3F0L3F0X2luc3RhbmNlLmNwcApp
bmRleCA2NTRjOTUzLi5kYjBkYzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uv
cXQvcXRfaW5zdGFuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9xdC9xdF9pbnN0
YW5jZS5jcHAKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxxaGFzaC5oPgogI2luY2x1ZGUg
PHFtZXRhb2JqZWN0Lmg+CiAjaW5jbHVkZSA8cW1ldGF0eXBlLmg+CisjaW5jbHVkZSA8cXdlYmVs
ZW1lbnQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiBuYW1lc3BhY2UgQmluZGluZ3MgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NHcmFtbWFyLnkKaW5kZXggNTdiZDBjNi4uY2U2YWMyOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55CkBAIC0xNDg0LDE1ICsxNDg0LDYgQEAgZnVuY3Rpb246CiAgICAgICAgICQkLnVuaXQg
PSBDU1NQYXJzZXJWYWx1ZTo6RnVuY3Rpb247CiAgICAgICAgICQkLmZ1bmN0aW9uID0gZjsKICAg
ICB9IHwKLSAgICBGVU5DVElPTiBtYXliZV9zcGFjZSBleHByIFRPS0VOX0VPRiB7Ci0gICAgICAg
IENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7Ci0gICAgICAg
IENTU1BhcnNlckZ1bmN0aW9uKiBmID0gcC0+Y3JlYXRlRmxvYXRpbmdGdW5jdGlvbigpOwotICAg
ICAgICBmLT5uYW1lID0gJDE7Ci0gICAgICAgIGYtPmFyZ3MgPSBhZG9wdFB0cihwLT5zaW5rRmxv
YXRpbmdWYWx1ZUxpc3QoJDMpKTsKLSAgICAgICAgJCQuaWQgPSAwOwotICAgICAgICAkJC51bml0
ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOwotICAgICAgICAkJC5mdW5jdGlvbiA9IGY7Ci0g
ICAgfSB8CiAgICAgRlVOQ1RJT04gbWF5YmVfc3BhY2UgJyknIG1heWJlX3NwYWNlIHsKICAgICAg
ICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAg
ICAgQ1NTUGFyc2VyRnVuY3Rpb24qIGYgPSBwLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAxMmUzMWE2Li4wMjFiOTZmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTEwNDcsMTUgKzEwNDcsMTUgQEAgdm9pZCBEb2N1bWVudDo6c2V0UmVh
ZHlTdGF0ZShSZWFkeVN0YXRlIHJlYWR5U3RhdGUpCiAgICAgc3dpdGNoIChyZWFkeVN0YXRlKSB7
CiAgICAgY2FzZSBMb2FkaW5nOgogICAgICAgICBpZiAoIW1fZG9jdW1lbnRUaW1pbmcuZG9tTG9h
ZGluZykKLSAgICAgICAgICAgIG1fZG9jdW1lbnRUaW1pbmcuZG9tTG9hZGluZyA9IG1vbm90b25p
Y2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgICAgICAgICAgbV9kb2N1bWVudFRpbWluZy5kb21M
b2FkaW5nID0gY3VycmVudFRpbWUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJbnRlcmFj
dGl2ZToKICAgICAgICAgaWYgKCFtX2RvY3VtZW50VGltaW5nLmRvbUludGVyYWN0aXZlKQotICAg
ICAgICAgICAgbV9kb2N1bWVudFRpbWluZy5kb21JbnRlcmFjdGl2ZSA9IG1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgpOworICAgICAgICAgICAgbV9kb2N1bWVudFRpbWluZy5kb21JbnRlcmFj
dGl2ZSA9IGN1cnJlbnRUaW1lKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29tcGxldGU6
CiAgICAgICAgIGlmICghbV9kb2N1bWVudFRpbWluZy5kb21Db21wbGV0ZSkKLSAgICAgICAgICAg
IG1fZG9jdW1lbnRUaW1pbmcuZG9tQ29tcGxldGUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1Rp
bWUoKTsKKyAgICAgICAgICAgIG1fZG9jdW1lbnRUaW1pbmcuZG9tQ29tcGxldGUgPSBjdXJyZW50
VGltZSgpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTQyNzgsMTAgKzQyNzgsMTAgQEAg
dm9pZCBEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKICAgICBBU1NFUlQoIXNjcmlwdGFibGVE
b2N1bWVudFBhcnNlcigpIHx8IG1fcmVhZHlTdGF0ZSAhPSBMb2FkaW5nKTsKICAgICBzZXRQYXJz
aW5nKGZhbHNlKTsKICAgICBpZiAoIW1fZG9jdW1lbnRUaW1pbmcuZG9tQ29udGVudExvYWRlZEV2
ZW50U3RhcnQpCi0gICAgICAgIG1fZG9jdW1lbnRUaW1pbmcuZG9tQ29udGVudExvYWRlZEV2ZW50
U3RhcnQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICAgICAgbV9kb2N1bWVu
dFRpbWluZy5kb21Db250ZW50TG9hZGVkRXZlbnRTdGFydCA9IGN1cnJlbnRUaW1lKCk7CiAgICAg
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5ET01Db250ZW50TG9hZGVk
RXZlbnQsIHRydWUsIGZhbHNlKSk7CiAgICAgaWYgKCFtX2RvY3VtZW50VGltaW5nLmRvbUNvbnRl
bnRMb2FkZWRFdmVudEVuZCkKLSAgICAgICAgbV9kb2N1bWVudFRpbWluZy5kb21Db250ZW50TG9h
ZGVkRXZlbnRFbmQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICAgICAgbV9k
b2N1bWVudFRpbWluZy5kb21Db250ZW50TG9hZGVkRXZlbnRFbmQgPSBjdXJyZW50VGltZSgpOwog
CiAgICAgaWYgKFJlZlB0cjxGcmFtZT4gZiA9IGZyYW1lKCkpIHsKICAgICAgICAgLy8gRnJhbWVM
b2FkZXI6OmZpbmlzaGVkUGFyc2luZygpIG1pZ2h0IGVuZCB1cCBjYWxsaW5nIERvY3VtZW50Ojpp
bXBsaWNpdENsb3NlKCkgaWYgYWxsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNWRkZjU4OS4u
YWVhODY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtNjM1LDIxICs2MzUsNDcgQEAgdm9p
ZCBFbGVtZW50OjpzZXRBdHRyaWJ1dGUoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lLCBjb25zdCBB
dG9taWNTdHJpbmcmIHZhbHVlLAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBsb2NhbE5hbWUgPSBzaG91bGRJZ25vcmVBdHRyaWJ1dGVDYXNlKHRoaXMp
ID8gbmFtZS5sb3dlcigpIDogbmFtZTsKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIGlmICgh
aXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsTW9kaWZ5RE9NQXR0cihkb2N1bWVudCgpLCB0aGlzKTsKKyNlbmRpZgog
CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBsb2NhbE5hbWUgPSBzaG91bGRJZ25vcmVBdHRyaWJ1
dGVDYXNlKHRoaXMpID8gbmFtZS5sb3dlcigpIDogbmFtZTsKKyAgICBRdWFsaWZpZWROYW1lIGF0
dHJpYnV0ZU5hbWUobnVsbEF0b20sIGxvY2FsTmFtZSwgbnVsbEF0b20pOworICAgIAogICAgIC8v
IEFsbG9jYXRlIGF0dHJpYnV0ZSBtYXAgaWYgbmVjZXNzYXJ5LgogICAgIEF0dHJpYnV0ZSogb2xk
ID0gYXR0cmlidXRlcyhmYWxzZSktPmdldEF0dHJpYnV0ZUl0ZW0obG9jYWxOYW1lLCBmYWxzZSk7
Ci0gICAgc2V0QXR0cmlidXRlSW50ZXJuYWwob2xkLCBvbGQgPyBvbGQtPm5hbWUoKSA6IFF1YWxp
ZmllZE5hbWUobnVsbEF0b20sIGxvY2FsTmFtZSwgbnVsbEF0b20pLCB2YWx1ZSk7Ci19CiAKLXZv
aWQgRWxlbWVudDo6c2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21pY1N0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUmKQotewotICAgIC8vIEFsbG9jYXRl
IGF0dHJpYnV0ZSBtYXAgaWYgbmVjZXNzYXJ5LgotICAgIEF0dHJpYnV0ZSogb2xkID0gYXR0cmli
dXRlcyhmYWxzZSktPmdldEF0dHJpYnV0ZUl0ZW0obmFtZSk7Ci0gICAgc2V0QXR0cmlidXRlSW50
ZXJuYWwob2xkLCBuYW1lLCB2YWx1ZSk7CisgICAgZG9jdW1lbnQoKS0+aW5jRE9NVHJlZVZlcnNp
b24oKTsKKworI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCisgICAgLy8gVGhlIGNhbGwg
dG8gYXR0cmlidXRlQ2hhbmdlZCBiZWxvdyBtYXkgZGlzcGF0Y2ggRE9NU3VidHJlZU1vZGlmaWVk
LCBzbyBpdCdzIGltcG9ydGFudCB0byBlbnF1ZXVlIGEgTXV0YXRpb25SZWNvcmQgbm93LgorICAg
IGlmICghaXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKKyAgICAgICAgZW5xdWV1ZUF0
dHJpYnV0ZXNNdXRhdGlvblJlY29yZCh0aGlzLCBhdHRyaWJ1dGVOYW1lLCBvbGQgPyBvbGQtPnZh
bHVlKCkgOiBudWxsQXRvbSk7CisjZW5kaWYKKworICAgIGlmIChpc0lkQXR0cmlidXRlTmFtZShv
bGQgPyBvbGQtPm5hbWUoKSA6IGF0dHJpYnV0ZU5hbWUpKQorICAgICAgICB1cGRhdGVJZChvbGQg
PyBvbGQtPnZhbHVlKCkgOiBudWxsQXRvbSwgdmFsdWUpOworCisgICAgaWYgKG9sZCAmJiB2YWx1
ZS5pc051bGwoKSkKKyAgICAgICAgbV9hdHRyaWJ1dGVNYXAtPnJlbW92ZUF0dHJpYnV0ZShvbGQt
Pm5hbWUoKSk7CisgICAgZWxzZSBpZiAoIW9sZCAmJiAhdmFsdWUuaXNOdWxsKCkpCisgICAgICAg
IG1fYXR0cmlidXRlTWFwLT5hZGRBdHRyaWJ1dGUoY3JlYXRlQXR0cmlidXRlKGF0dHJpYnV0ZU5h
bWUsIHZhbHVlKSk7CisgICAgZWxzZSBpZiAob2xkICYmICF2YWx1ZS5pc051bGwoKSkgeworICAg
ICAgICBpZiAoQXR0ciogYXR0ck5vZGUgPSBvbGQtPmF0dHIoKSkKKyAgICAgICAgICAgIGF0dHJO
b2RlLT5zZXRWYWx1ZSh2YWx1ZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG9sZC0+c2V0
VmFsdWUodmFsdWUpOworICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkKG9sZCk7CisgICAgfQorCisj
aWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBpZiAoIWlzU3luY2hyb25pemluZ1N0eWxlQXR0cmli
dXRlKCkpCisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTW9kaWZ5RE9NQXR0
cihkb2N1bWVudCgpLCB0aGlzLCBuYW1lLCB2YWx1ZSk7CisjZW5kaWYKIH0KIAotdm9pZCBFbGVt
ZW50OjpzZXRBdHRyaWJ1dGVJbnRlcm5hbChBdHRyaWJ1dGUqIG9sZCwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiB2YWx1ZSkKK3ZvaWQgRWxlbWVudDo6c2V0
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYg
dmFsdWUsIEV4Y2VwdGlvbkNvZGUmKQogewogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgaWYg
KCFpc1N5bmNocm9uaXppbmdTdHlsZUF0dHJpYnV0ZSgpKQpAQCAtNjU4LDYgKzY4NCw5IEBAIHZv
aWQgRWxlbWVudDo6c2V0QXR0cmlidXRlSW50ZXJuYWwoQXR0cmlidXRlKiBvbGQsIGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvCiAKICAgICBkb2N1bWVudCgpLT5pbmNET01UcmVlVmVyc2lv
bigpOwogCisgICAgLy8gQWxsb2NhdGUgYXR0cmlidXRlIG1hcCBpZiBuZWNlc3NhcnkuCisgICAg
QXR0cmlidXRlKiBvbGQgPSBhdHRyaWJ1dGVzKGZhbHNlKS0+Z2V0QXR0cmlidXRlSXRlbShuYW1l
KTsKKwogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCiAgICAgLy8gVGhlIGNhbGwgdG8g
YXR0cmlidXRlQ2hhbmdlZCBiZWxvdyBtYXkgZGlzcGF0Y2ggRE9NU3VidHJlZU1vZGlmaWVkLCBz
byBpdCdzIGltcG9ydGFudCB0byBlbnF1ZXVlIGEgTXV0YXRpb25SZWNvcmQgbm93LgogICAgIGlm
ICghaXNTeW5jaHJvbml6aW5nU3R5bGVBdHRyaWJ1dGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4
IDdhNzI4NjMuLmFmNWZjNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtMzk1LDcgKzM5NSw2IEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCBOb2RlVHlwZSBub2RlVHlwZSgpIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxvd2VkKE5vZGVUeXBlKSBjb25zdDsKIAotICAgIHZvaWQg
c2V0QXR0cmlidXRlSW50ZXJuYWwoQXR0cmlidXRlKiBvbGQsIGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QXR0
cmlidXRlPiBjcmVhdGVBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdmFsdWUpOwogICAgIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9OYW1lZE5vZGVNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVk
Tm9kZU1hcC5jcHAKaW5kZXggZGM1MzUwMS4uODU4MWE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL05hbWVkTm9kZU1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05hbWVk
Tm9kZU1hcC5jcHAKQEAgLTkzLDI2ICs5MywyNiBAQCBQYXNzUmVmUHRyPE5vZGU+IE5hbWVkTm9k
ZU1hcDo6Z2V0TmFtZWRJdGVtKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiAgICAg
cmV0dXJuIGEtPmNyZWF0ZUF0dHJJZk5lZWRlZChtX2VsZW1lbnQpOwogfQogCi1QYXNzUmVmUHRy
PE5vZGU+IE5hbWVkTm9kZU1hcDo6c2V0TmFtZWRJdGVtKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQorUGFzc1JlZlB0cjxOb2RlPiBOYW1lZE5vZGVNYXA6OnNldE5hbWVkSXRlbShOb2Rl
KiBhcmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlmICghbV9lbGVtZW50IHx8ICFub2Rl
KSB7CisgICAgaWYgKCFtX2VsZW1lbnQgfHwgIWFyZykgewogICAgICAgICBlYyA9IE5PVF9GT1VO
RF9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIC8vIE5vdCBtZW50aW9uZWQg
aW4gc3BlYzogdGhyb3cgYSBISUVSQVJDSFlfUkVRVUVTVF9FUlJPUiBpZiB0aGUgdXNlciBwYXNz
ZXMgaW4gYSBub24tYXR0cmlidXRlIG5vZGUKLSAgICBpZiAoIW5vZGUtPmlzQXR0cmlidXRlTm9k
ZSgpKSB7CisgICAgaWYgKCFhcmctPmlzQXR0cmlidXRlTm9kZSgpKSB7CiAgICAgICAgIGVjID0g
SElFUkFSQ0hZX1JFUVVFU1RfRVJSOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgQXR0
ciogYXR0ciA9IHN0YXRpY19jYXN0PEF0dHIqPihub2RlKTsKKyAgICBBdHRyICphdHRyID0gc3Rh
dGljX2Nhc3Q8QXR0cio+KGFyZyk7CiAKLSAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHIt
PmF0dHIoKTsKLSAgICBBdHRyaWJ1dGUqIG9sZEF0dHJpYnV0ZSA9IGdldEF0dHJpYnV0ZUl0ZW0o
YXR0cmlidXRlLT5uYW1lKCkpOwotICAgIGlmIChvbGRBdHRyaWJ1dGUgPT0gYXR0cmlidXRlKQot
ICAgICAgICByZXR1cm4gbm9kZTsgLy8gd2Uga25vdyBhYm91dCBpdCBhbHJlYWR5CisgICAgQXR0
cmlidXRlKiBhID0gYXR0ci0+YXR0cigpOworICAgIEF0dHJpYnV0ZSogb2xkID0gZ2V0QXR0cmli
dXRlSXRlbShhLT5uYW1lKCkpOworICAgIGlmIChvbGQgPT0gYSkKKyAgICAgICAgcmV0dXJuIFJl
ZlB0cjxOb2RlPihhcmcpOyAvLyB3ZSBrbm93IGFib3V0IGl0IGFscmVhZHkKIAotICAgIC8vIElO
VVNFX0FUVFJJQlVURV9FUlI6IFJhaXNlZCBpZiBub2RlIGlzIGFuIEF0dHIgdGhhdCBpcyBhbHJl
YWR5IGFuIGF0dHJpYnV0ZSBvZiBhbm90aGVyIEVsZW1lbnQgb2JqZWN0LgorICAgIC8vIElOVVNF
X0FUVFJJQlVURV9FUlI6IFJhaXNlZCBpZiBhcmcgaXMgYW4gQXR0ciB0aGF0IGlzIGFscmVhZHkg
YW4gYXR0cmlidXRlIG9mIGFub3RoZXIgRWxlbWVudCBvYmplY3QuCiAgICAgLy8gVGhlIERPTSB1
c2VyIG11c3QgZXhwbGljaXRseSBjbG9uZSBBdHRyIG5vZGVzIHRvIHJlLXVzZSB0aGVtIGluIG90
aGVyIGVsZW1lbnRzLgogICAgIGlmIChhdHRyLT5vd25lckVsZW1lbnQoKSkgewogICAgICAgICBl
YyA9IElOVVNFX0FUVFJJQlVURV9FUlI7CkBAIC0xMjAsMTcgKzEyMCwxNyBAQCBQYXNzUmVmUHRy
PE5vZGU+IE5hbWVkTm9kZU1hcDo6c2V0TmFtZWRJdGVtKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogICAgIH0KIAogICAgIGlmIChhdHRyLT5pc0lkKCkpCi0gICAgICAgIG1fZWxlbWVu
dC0+dXBkYXRlSWQob2xkQXR0cmlidXRlID8gb2xkQXR0cmlidXRlLT52YWx1ZSgpIDogbnVsbEF0
b20sIGF0dHJpYnV0ZS0+dmFsdWUoKSk7CisgICAgICAgIG1fZWxlbWVudC0+dXBkYXRlSWQob2xk
ID8gb2xkLT52YWx1ZSgpIDogbnVsbEF0b20sIGEtPnZhbHVlKCkpOwogCiAgICAgLy8gIyMjIHNs
aWdodGx5IGluZWZmaWNpZW50IC0gcmVzaXplcyBhdHRyaWJ1dGUgYXJyYXkgdHdpY2UuCi0gICAg
UmVmUHRyPEF0dHI+IG9sZEF0dHI7Ci0gICAgaWYgKG9sZEF0dHJpYnV0ZSkgewotICAgICAgICBv
bGRBdHRyID0gb2xkQXR0cmlidXRlLT5jcmVhdGVBdHRySWZOZWVkZWQobV9lbGVtZW50KTsKLSAg
ICAgICAgcmVtb3ZlQXR0cmlidXRlKGF0dHJpYnV0ZS0+bmFtZSgpKTsKKyAgICBSZWZQdHI8Tm9k
ZT4gcjsKKyAgICBpZiAob2xkKSB7CisgICAgICAgIHIgPSBvbGQtPmNyZWF0ZUF0dHJJZk5lZWRl
ZChtX2VsZW1lbnQpOworICAgICAgICByZW1vdmVBdHRyaWJ1dGUoYS0+bmFtZSgpKTsKICAgICB9
CiAKLSAgICBhZGRBdHRyaWJ1dGUoYXR0cmlidXRlKTsKLSAgICByZXR1cm4gb2xkQXR0ci5yZWxl
YXNlKCk7CisgICAgYWRkQXR0cmlidXRlKGEpOworICAgIHJldHVybiByLnJlbGVhc2UoKTsKIH0K
IAogUGFzc1JlZlB0cjxOb2RlPiBOYW1lZE5vZGVNYXA6OnNldE5hbWVkSXRlbU5TKE5vZGUqIG5v
ZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTQzLDE5ICsxNDMsMTkgQEAgUGFzc1JlZlB0cjxO
b2RlPiBOYW1lZE5vZGVNYXA6OnNldE5hbWVkSXRlbU5TKE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogLy8gYmVjYXVzZSBvZiByZW1vdmVOYW1lZEl0ZW0sIHJlbW92ZU5hbWVkSXRlbU5T
LCBhbmQgcmVtb3ZlQXR0cmlidXRlTm9kZS4KIFBhc3NSZWZQdHI8Tm9kZT4gTmFtZWROb2RlTWFw
OjpyZW1vdmVOYW1lZEl0ZW0oY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7Ci0gICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBnZXRBdHRyaWJ1dGVJdGVtKG5h
bWUpOwotICAgIGlmICghYXR0cmlidXRlKSB7CisgICAgQXR0cmlidXRlKiBhID0gZ2V0QXR0cmli
dXRlSXRlbShuYW1lKTsKKyAgICBpZiAoIWEpIHsKICAgICAgICAgZWMgPSBOT1RfRk9VTkRfRVJS
OwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBSZWZQdHI8QXR0cj4gYXR0ciA9IGF0
dHJpYnV0ZS0+Y3JlYXRlQXR0cklmTmVlZGVkKG1fZWxlbWVudCk7CisgICAgUmVmUHRyPEF0dHI+
IHIgPSBhLT5jcmVhdGVBdHRySWZOZWVkZWQobV9lbGVtZW50KTsKIAotICAgIGlmIChhdHRyLT5p
c0lkKCkpCi0gICAgICAgIG1fZWxlbWVudC0+dXBkYXRlSWQoYXR0cmlidXRlLT52YWx1ZSgpLCBu
dWxsQXRvbSk7CisgICAgaWYgKHItPmlzSWQoKSkKKyAgICAgICAgbV9lbGVtZW50LT51cGRhdGVJ
ZChhLT52YWx1ZSgpLCBudWxsQXRvbSk7CiAKICAgICByZW1vdmVBdHRyaWJ1dGUobmFtZSk7Ci0g
ICAgcmV0dXJuIGF0dHIucmVsZWFzZSgpOworICAgIHJldHVybiByLnJlbGVhc2UoKTsKIH0KIAog
UGFzc1JlZlB0cjxOb2RlPiBOYW1lZE5vZGVNYXA6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25DYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25DYWNoZS5jcHAKaW5kZXggMDdkYzc2Yy4uOWRi
MmEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uQ2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvbkNhY2hlLmNwcApAQCAtMzIsNiAr
MzIsNDIgQEAgQ29sbGVjdGlvbkNhY2hlOjpDb2xsZWN0aW9uQ2FjaGUoKQogICAgIHJlc2V0KCk7
CiB9CiAKK2lubGluZSB2b2lkIENvbGxlY3Rpb25DYWNoZTo6Y29weUNhY2hlTWFwKE5vZGVDYWNo
ZU1hcCYgZGVzdCwgY29uc3QgTm9kZUNhY2hlTWFwJiBzcmMpCit7CisgICAgQVNTRVJUKGRlc3Qu
aXNFbXB0eSgpKTsKKyAgICBOb2RlQ2FjaGVNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IHNyYy5l
bmQoKTsKKyAgICBmb3IgKE5vZGVDYWNoZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBzcmMuYmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KQorICAgICAgICBkZXN0LmFkZChpdC0+Zmlyc3QsIGFkb3B0
UHRyKG5ldyBWZWN0b3I8RWxlbWVudCo+KCppdC0+c2Vjb25kKSkpOworfQorCitDb2xsZWN0aW9u
Q2FjaGU6OkNvbGxlY3Rpb25DYWNoZShjb25zdCBDb2xsZWN0aW9uQ2FjaGUmIG90aGVyKQorICAg
IDogdmVyc2lvbihvdGhlci52ZXJzaW9uKQorICAgICwgY3VycmVudChvdGhlci5jdXJyZW50KQor
ICAgICwgcG9zaXRpb24ob3RoZXIucG9zaXRpb24pCisgICAgLCBsZW5ndGgob3RoZXIubGVuZ3Ro
KQorICAgICwgZWxlbWVudHNBcnJheVBvc2l0aW9uKG90aGVyLmVsZW1lbnRzQXJyYXlQb3NpdGlv
bikKKyAgICAsIGhhc0xlbmd0aChvdGhlci5oYXNMZW5ndGgpCisgICAgLCBoYXNOYW1lQ2FjaGUo
b3RoZXIuaGFzTmFtZUNhY2hlKQoreworICAgIGNvcHlDYWNoZU1hcChpZENhY2hlLCBvdGhlci5p
ZENhY2hlKTsKKyAgICBjb3B5Q2FjaGVNYXAobmFtZUNhY2hlLCBvdGhlci5uYW1lQ2FjaGUpOwor
fQorCit2b2lkIENvbGxlY3Rpb25DYWNoZTo6c3dhcChDb2xsZWN0aW9uQ2FjaGUmIG90aGVyKQor
eworICAgIHN0ZDo6c3dhcCh2ZXJzaW9uLCBvdGhlci52ZXJzaW9uKTsKKyAgICBzdGQ6OnN3YXAo
Y3VycmVudCwgb3RoZXIuY3VycmVudCk7CisgICAgc3RkOjpzd2FwKHBvc2l0aW9uLCBvdGhlci5w
b3NpdGlvbik7CisgICAgc3RkOjpzd2FwKGxlbmd0aCwgb3RoZXIubGVuZ3RoKTsKKyAgICBzdGQ6
OnN3YXAoZWxlbWVudHNBcnJheVBvc2l0aW9uLCBvdGhlci5lbGVtZW50c0FycmF5UG9zaXRpb24p
OworCisgICAgaWRDYWNoZS5zd2FwKG90aGVyLmlkQ2FjaGUpOworICAgIG5hbWVDYWNoZS5zd2Fw
KG90aGVyLm5hbWVDYWNoZSk7CisgICAgCisgICAgc3RkOjpzd2FwKGhhc0xlbmd0aCwgb3RoZXIu
aGFzTGVuZ3RoKTsKKyAgICBzdGQ6OnN3YXAoaGFzTmFtZUNhY2hlLCBvdGhlci5oYXNOYW1lQ2Fj
aGUpOworfQorCiB2b2lkIENvbGxlY3Rpb25DYWNoZTo6cmVzZXQoKQogewogICAgIGN1cnJlbnQg
PSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uQ2FjaGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sbGVjdGlvbkNhY2hlLmgKaW5kZXggMmZkZGI1NS4uYzgw
NDM1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xsZWN0aW9uQ2FjaGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbGxlY3Rpb25DYWNoZS5oCkBAIC0zMCwxMSArMzAs
MTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRWxlbWVudDsKIAogc3RydWN0IENvbGxl
Y3Rpb25DYWNoZSB7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7IFdURl9NQUtFX05PTkNP
UFlBQkxFKENvbGxlY3Rpb25DYWNoZSk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CiAgICAgQ29sbGVjdGlvbkNhY2hlKCk7CisgICAgQ29sbGVjdGlvbkNhY2hlKGNvbnN0
IENvbGxlY3Rpb25DYWNoZSYpOworICAgIENvbGxlY3Rpb25DYWNoZSYgb3BlcmF0b3I9KGNvbnN0
IENvbGxlY3Rpb25DYWNoZSYgb3RoZXIpCisgICAgeworICAgICAgICBDb2xsZWN0aW9uQ2FjaGUg
dG1wKG90aGVyKTsgICAgCisgICAgICAgIHN3YXAodG1wKTsKKyAgICAgICAgcmV0dXJuICp0aGlz
OworICAgIH0KIAogICAgIHZvaWQgcmVzZXQoKTsKKyAgICB2b2lkIHN3YXAoQ29sbGVjdGlvbkNh
Y2hlJik7CiAKICAgICB2b2lkIGNoZWNrQ29uc2lzdGVuY3koKTsKIApAQCAtNDksNiArNTcsOSBA
QCBwdWJsaWM6CiAgICAgTm9kZUNhY2hlTWFwIG5hbWVDYWNoZTsKICAgICBib29sIGhhc0xlbmd0
aDsKICAgICBib29sIGhhc05hbWVDYWNoZTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgdm9pZCBj
b3B5Q2FjaGVNYXAoTm9kZUNhY2hlTWFwJiwgY29uc3QgTm9kZUNhY2hlTWFwJik7CiB9OwogCiB2
b2lkIGFwcGVuZChDb2xsZWN0aW9uQ2FjaGU6Ok5vZGVDYWNoZU1hcCYsIGNvbnN0IEF0b21pY1N0
cmluZyYsIEVsZW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L1dlYkdMRnJhbWVidWZmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xG
cmFtZWJ1ZmZlci5jcHAKaW5kZXggOGQ4NGM0NC4uNGI3MjFlYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5jcHAKQEAgLTM1LDQ3ICszNSwxMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSB7CiAKLSAgICBib29sIGlzQXR0YWNo
bWVudENvbXBsZXRlKFdlYkdMT2JqZWN0KiBhdHRhY2hlZE9iamVjdCwgR0MzRGVudW0gYXR0YWNo
bWVudCkKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZm9yIGRlcHRoL3N0ZW5jaWwvZGVw
dGhfc3RlbmNpbCBhdHRhY2htZW50LgorICAgIC8vIEN1cnJlbnRseSB3ZSBhc3N1bWUgdGhlc2Ug
YXR0YWNobWVudHMgYXJlIGFsbCByZW5kZXJidWZmZXJzLgorICAgIEdDM0RlbnVtIGdldEludGVy
bmFsRm9ybWF0KFdlYkdMT2JqZWN0KiBidWZmZXIpCiAgICAgewotICAgICAgICBBU1NFUlQoYXR0
YWNoZWRPYmplY3QgJiYgYXR0YWNoZWRPYmplY3QtPm9iamVjdCgpKTsKLSAgICAgICAgQVNTRVJU
KGF0dGFjaGVkT2JqZWN0LT5pc1JlbmRlcmJ1ZmZlcigpKTsKLSAgICAgICAgV2ViR0xSZW5kZXJi
dWZmZXIqIGJ1ZmZlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8V2ViR0xSZW5kZXJidWZmZXIqPihhdHRh
Y2hlZE9iamVjdCk7Ci0gICAgICAgIHN3aXRjaCAoYXR0YWNobWVudCkgewotICAgICAgICBjYXNl
IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9BVFRBQ0hNRU5UOgotICAgICAgICAgICAgaWYgKGJ1
ZmZlci0+Z2V0SW50ZXJuYWxGb3JtYXQoKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6REVQVEhfQ09N
UE9ORU5UMTYpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OlNURU5DSUxfQVRUQUNITUVOVDoK
LSAgICAgICAgICAgIGlmIChidWZmZXItPmdldEludGVybmFsRm9ybWF0KCkgIT0gR3JhcGhpY3ND
b250ZXh0M0Q6OlNURU5DSUxfSU5ERVg4KQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdyYXBoaWNzQ29udGV4dDNEOjpERVBU
SF9TVEVOQ0lMX0FUVEFDSE1FTlQ6Ci0gICAgICAgICAgICBpZiAoYnVmZmVyLT5nZXRJbnRlcm5h
bEZvcm1hdCgpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9TVEVOQ0lMKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFidWZmZXItPmdldFdpZHRoKCkgfHwgIWJ1
ZmZlci0+Z2V0SGVpZ2h0KCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLQotICAgIEdDM0RzaXplaSBnZXRJbWFnZVdpZHRoKFdlYkdMT2Jq
ZWN0KiBhdHRhY2hlZE9iamVjdCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChhdHRhY2hlZE9iamVj
dCAmJiBhdHRhY2hlZE9iamVjdC0+b2JqZWN0KCkpOwotICAgICAgICBBU1NFUlQoYXR0YWNoZWRP
YmplY3QtPmlzUmVuZGVyYnVmZmVyKCkpOwotICAgICAgICBXZWJHTFJlbmRlcmJ1ZmZlciogYnVm
ZmVyID0gcmVpbnRlcnByZXRfY2FzdDxXZWJHTFJlbmRlcmJ1ZmZlcio+KGF0dGFjaGVkT2JqZWN0
KTsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Z2V0V2lkdGgoKTsKLSAgICB9Ci0KLSAgICBHQzNE
c2l6ZWkgZ2V0SW1hZ2VIZWlnaHQoV2ViR0xPYmplY3QqIGF0dGFjaGVkT2JqZWN0KQotICAgIHsK
LSAgICAgICAgQVNTRVJUKGF0dGFjaGVkT2JqZWN0ICYmIGF0dGFjaGVkT2JqZWN0LT5vYmplY3Qo
KSk7Ci0gICAgICAgIEFTU0VSVChhdHRhY2hlZE9iamVjdC0+aXNSZW5kZXJidWZmZXIoKSk7Ci0g
ICAgICAgIFdlYkdMUmVuZGVyYnVmZmVyKiBidWZmZXIgPSByZWludGVycHJldF9jYXN0PFdlYkdM
UmVuZGVyYnVmZmVyKj4oYXR0YWNoZWRPYmplY3QpOwotICAgICAgICByZXR1cm4gYnVmZmVyLT5n
ZXRIZWlnaHQoKTsKKyAgICAgICAgQVNTRVJUKGJ1ZmZlciAmJiBidWZmZXItPmlzUmVuZGVyYnVm
ZmVyKCkpOworICAgICAgICByZXR1cm4gKHJlaW50ZXJwcmV0X2Nhc3Q8V2ViR0xSZW5kZXJidWZm
ZXIqPihidWZmZXIpKS0+Z2V0SW50ZXJuYWxGb3JtYXQoKTsKICAgICB9CiAKICAgICBib29sIGlz
VW5pbml0aWFsaXplZChXZWJHTE9iamVjdCogYXR0YWNoZWRPYmplY3QpCkBAIC0yMDMsNyArMTY4
LDcgQEAgdm9pZCBXZWJHTEZyYW1lYnVmZmVyOjpyZW1vdmVBdHRhY2htZW50KFdlYkdMT2JqZWN0
KiBhdHRhY2htZW50KQogICAgICAgICByZXR1cm47CiB9CiAKLUdDM0RzaXplaSBXZWJHTEZyYW1l
YnVmZmVyOjpnZXRDb2xvckJ1ZmZlcldpZHRoKCkgY29uc3QKK0dDM0RzaXplaSBXZWJHTEZyYW1l
YnVmZmVyOjpnZXRXaWR0aCgpIGNvbnN0CiB7CiAgICAgaWYgKCFvYmplY3QoKSB8fCAhaXNDb2xv
ckF0dGFjaGVkKCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjE1LDcgKzE4MCw3IEBAIEdDM0Rz
aXplaSBXZWJHTEZyYW1lYnVmZmVyOjpnZXRDb2xvckJ1ZmZlcldpZHRoKCkgY29uc3QKICAgICBy
ZXR1cm4gMDsKIH0KIAotR0MzRHNpemVpIFdlYkdMRnJhbWVidWZmZXI6OmdldENvbG9yQnVmZmVy
SGVpZ2h0KCkgY29uc3QKK0dDM0RzaXplaSBXZWJHTEZyYW1lYnVmZmVyOjpnZXRIZWlnaHQoKSBj
b25zdAogewogICAgIGlmICghb2JqZWN0KCkgfHwgIWlzQ29sb3JBdHRhY2hlZCgpKQogICAgICAg
ICByZXR1cm4gMDsKQEAgLTI0OCw2NyArMjEzLDM0IEBAIEdDM0RlbnVtIFdlYkdMRnJhbWVidWZm
ZXI6OmdldENvbG9yQnVmZmVyRm9ybWF0KCkgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAotR0Mz
RGVudW0gV2ViR0xGcmFtZWJ1ZmZlcjo6Y2hlY2tTdGF0dXMoKSBjb25zdAorYm9vbCBXZWJHTEZy
YW1lYnVmZmVyOjppc0luY29tcGxldGUoYm9vbCBjaGVja0ludGVybmFsRm9ybWF0KSBjb25zdAog
ewogICAgIHVuc2lnbmVkIGludCBjb3VudCA9IDA7Ci0gICAgR0MzRHNpemVpIHdpZHRoID0gMCwg
aGVpZ2h0ID0gMDsKICAgICBpZiAoaXNEZXB0aEF0dGFjaGVkKCkpIHsKLSAgICAgICAgaWYgKCFp
c0F0dGFjaG1lbnRDb21wbGV0ZShtX2RlcHRoQXR0YWNobWVudC5nZXQoKSwgR3JhcGhpY3NDb250
ZXh0M0Q6OkRFUFRIX0FUVEFDSE1FTlQpKQotICAgICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29u
dGV4dDNEOjpGUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7Ci0gICAgICAgIHdpZHRo
ID0gZ2V0SW1hZ2VXaWR0aChtX2RlcHRoQXR0YWNobWVudC5nZXQoKSk7Ci0gICAgICAgIGhlaWdo
dCA9IGdldEltYWdlSGVpZ2h0KG1fZGVwdGhBdHRhY2htZW50LmdldCgpKTsKKyAgICAgICAgaWYg
KGNoZWNrSW50ZXJuYWxGb3JtYXQgJiYgZ2V0SW50ZXJuYWxGb3JtYXQobV9kZXB0aEF0dGFjaG1l
bnQuZ2V0KCkpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpERVBUSF9DT01QT05FTlQxNikKKyAgICAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjb3VudCsrOwogICAgIH0KICAgICBpZiAoaXNT
dGVuY2lsQXR0YWNoZWQoKSkgewotICAgICAgICBpZiAoIWlzQXR0YWNobWVudENvbXBsZXRlKG1f
c3RlbmNpbEF0dGFjaG1lbnQuZ2V0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpTVEVOQ0lMX0FUVEFD
SE1FTlQpKQotICAgICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
Ul9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7Ci0gICAgICAgIGlmICghY291bnQpIHsKLSAgICAgICAg
ICAgIHdpZHRoID0gZ2V0SW1hZ2VXaWR0aChtX3N0ZW5jaWxBdHRhY2htZW50LmdldCgpKTsKLSAg
ICAgICAgICAgIGhlaWdodCA9IGdldEltYWdlSGVpZ2h0KG1fc3RlbmNpbEF0dGFjaG1lbnQuZ2V0
KCkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHdpZHRoICE9IGdldEltYWdl
V2lkdGgobV9zdGVuY2lsQXR0YWNobWVudC5nZXQoKSkgfHwgaGVpZ2h0ICE9IGdldEltYWdlSGVp
Z2h0KG1fc3RlbmNpbEF0dGFjaG1lbnQuZ2V0KCkpKQotICAgICAgICAgICAgICAgIHJldHVybiBH
cmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TOwotICAg
ICAgICB9CisgICAgICAgIGlmIChjaGVja0ludGVybmFsRm9ybWF0ICYmIGdldEludGVybmFsRm9y
bWF0KG1fc3RlbmNpbEF0dGFjaG1lbnQuZ2V0KCkpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpTVEVO
Q0lMX0lOREVYOCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBjb3VudCsrOwog
ICAgIH0KICAgICBpZiAoaXNEZXB0aFN0ZW5jaWxBdHRhY2hlZCgpKSB7Ci0gICAgICAgIGlmICgh
aXNBdHRhY2htZW50Q29tcGxldGUobV9kZXB0aFN0ZW5jaWxBdHRhY2htZW50LmdldCgpLCBHcmFw
aGljc0NvbnRleHQzRDo6REVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UKSkKLSAgICAgICAgICAgIHJl
dHVybiBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5U
OworICAgICAgICBpZiAoY2hlY2tJbnRlcm5hbEZvcm1hdCAmJiBnZXRJbnRlcm5hbEZvcm1hdCht
X2RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuZ2V0KCkpICE9IEdyYXBoaWNzQ29udGV4dDNEOjpERVBU
SF9TVEVOQ0lMKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmICghaXNWYWxp
ZChtX2RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuZ2V0KCkpKQotICAgICAgICAgICAgcmV0dXJuIEdy
YXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUl9VTlNVUFBPUlRFRDsKLSAgICAgICAgaWYgKCFj
b3VudCkgewotICAgICAgICAgICAgd2lkdGggPSBnZXRJbWFnZVdpZHRoKG1fZGVwdGhTdGVuY2ls
QXR0YWNobWVudC5nZXQoKSk7Ci0gICAgICAgICAgICBoZWlnaHQgPSBnZXRJbWFnZUhlaWdodCht
X2RlcHRoU3RlbmNpbEF0dGFjaG1lbnQuZ2V0KCkpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgaWYgKHdpZHRoICE9IGdldEltYWdlV2lkdGgobV9kZXB0aFN0ZW5jaWxBdHRhY2htZW50
LmdldCgpKSB8fCBoZWlnaHQgIT0gZ2V0SW1hZ2VIZWlnaHQobV9kZXB0aFN0ZW5jaWxBdHRhY2ht
ZW50LmdldCgpKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OUzsKLSAgICAgICAgfQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIGNvdW50Kys7CiAgICAgfQotICAgIC8vIFdlYkdMIHNwZWNp
ZmljOiBubyBjb25mbGljdGluZyBERVBUSC9TVEVOQ0lML0RFUFRIX1NURU5DSUwgYXR0YWNobWVu
dHMuCiAgICAgaWYgKGNvdW50ID4gMSkKLSAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNE
OjpGUkFNRUJVRkZFUl9VTlNVUFBPUlRFRDsKLSAgICBpZiAoaXNDb2xvckF0dGFjaGVkKCkpIHsK
LSAgICAgICAgLy8gRklYTUU6IGlmIGNvbG9yIGJ1ZmZlciBpcyB0ZXh0dXJlLCBpcyBBTFBIQSwg
TFVNSU5BTkNFIG9yIExVTUlOQU5DRV9BTFBIQSB2YWxpZD8KLSAgICAgICAgaWYgKCFnZXRDb2xv
ckJ1ZmZlckZvcm1hdCgpKQotICAgICAgICAgICAgcmV0dXJuIEdyYXBoaWNzQ29udGV4dDNEOjpG
UkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlQ7Ci0gICAgICAgIGlmICghY291bnQpIHsK
LSAgICAgICAgICAgIGlmICghZ2V0Q29sb3JCdWZmZXJXaWR0aCgpIHx8ICFnZXRDb2xvckJ1ZmZl
ckhlaWdodCgpKQotICAgICAgICAgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6RlJB
TUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgaWYgKHdpZHRoICE9IGdldENvbG9yQnVmZmVyV2lkdGgoKSB8fCBoZWlnaHQgIT0gZ2V0
Q29sb3JCdWZmZXJIZWlnaHQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250
ZXh0M0Q6OkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OUzsKLSAgICAgICAgfQotICAg
IH0gZWxzZSB7Ci0gICAgICAgIGlmICghY291bnQpCi0gICAgICAgICAgICByZXR1cm4gR3JhcGhp
Y3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTUlTU0lOR19BVFRBQ0hNRU5UOwot
ICAgIH0KLSAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX0NPTVBMRVRF
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgV2Vi
R0xGcmFtZWJ1ZmZlcjo6b25BY2Nlc3MoYm9vbCBuZWVkVG9Jbml0aWFsaXplUmVuZGVyYnVmZmVy
cykKIHsKLSAgICBpZiAoY2hlY2tTdGF0dXMoKSAhPSBHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVC
VUZGRVJfQ09NUExFVEUpCisgICAgaWYgKGlzSW5jb21wbGV0ZSh0cnVlKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIGlmIChuZWVkVG9Jbml0aWFsaXplUmVuZGVyYnVmZmVycykKICAgICAg
ICAgcmV0dXJuIGluaXRpYWxpemVSZW5kZXJidWZmZXJzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTEZyYW1lYnVmZmVyLmgKaW5kZXggOTk1MGJhZC4uYTFjYjg2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xGcmFtZWJ1ZmZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMRnJhbWVidWZmZXIuaApAQCAtNDks
OCArNDksOCBAQCBwdWJsaWM6CiAgICAgV2ViR0xPYmplY3QqIGdldEF0dGFjaG1lbnQoR0MzRGVu
dW0pIGNvbnN0OwogCiAgICAgR0MzRGVudW0gZ2V0Q29sb3JCdWZmZXJGb3JtYXQoKSBjb25zdDsK
LSAgICBHQzNEc2l6ZWkgZ2V0Q29sb3JCdWZmZXJXaWR0aCgpIGNvbnN0OwotICAgIEdDM0RzaXpl
aSBnZXRDb2xvckJ1ZmZlckhlaWdodCgpIGNvbnN0OworICAgIEdDM0RzaXplaSBnZXRXaWR0aCgp
IGNvbnN0OworICAgIEdDM0RzaXplaSBnZXRIZWlnaHQoKSBjb25zdDsKIAogICAgIC8vIFRoaXMg
c2hvdWxkIGFsd2F5cyBiZSBjYWxsZWQgYmVmb3JlIGRyYXdBcnJheSwgZHJhd0VsZW1lbnRzLCBj
bGVhciwKICAgICAvLyByZWFkUGl4ZWxzLCBjb3B5VGV4SW1hZ2UyRCwgY29weVRleFN1YkltYWdl
MkQgaWYgdGhpcyBmcmFtZWJ1ZmZlciBpcwpAQCAtNjAsMTEgKzYwLDggQEAgcHVibGljOgogICAg
IC8vIG5lZWRUb0luaXRpYWxpemVSZW5kZXJidWZmZXJzIGlzIHRydWUuCiAgICAgYm9vbCBvbkFj
Y2Vzcyhib29sIG5lZWRUb0luaXRpYWxpemVSZW5kZXJidWZmZXJzKTsKIAotICAgIC8vIFNvZnR3
YXJlIHZlcnNpb24gb2YgZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKCksIGV4Y2VwdCB0aGF0IHdo
ZW4KLSAgICAvLyBGUkFNRUJVRkZFUl9DT01QTEVURSBpcyByZXR1cm5lZCwgaXQgaXMgc3RpbGwg
cG9zc2libGUgZm9yCi0gICAgLy8gZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKCkgdG8gcmV0dXJu
IEZSQU1FQlVGRkVSX1VOU1VQUE9SVEVELAotICAgIC8vIGRlcGVuZGluZyBvbiBoYXJkd2FyZSBp
bXBsZW1lbnRhdGlvbi4KLSAgICBHQzNEZW51bSBjaGVja1N0YXR1cygpIGNvbnN0OworICAgIC8v
IFJldHVybiBmYWxzZSBkb2VzIG5vdCBtZWFuIENPTVBMRVRFLCBtaWdodCBzdGlsbCBiZSBJTkNP
TVBMRVRFLgorICAgIGJvb2wgaXNJbmNvbXBsZXRlKGJvb2wgY2hlY2tJbnRlcm5hbEZvcm1hdCkg
Y29uc3Q7CiAKICAgICBib29sIGhhc0V2ZXJCZWVuQm91bmQoKSBjb25zdCB7IHJldHVybiBvYmpl
Y3QoKSAmJiBtX2hhc0V2ZXJCZWVuQm91bmQ7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggNTdlZWQ0MS4uODY1
YTUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuY3BwCkBAIC0xMDkyLDEwICsxMDkyLDkgQEAgR0MzRGVudW0gV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpjaGVja0ZyYW1lYnVmZmVyU3RhdHVzKEdDM0RlbnVtIHRhcmdldCkKICAg
ICB9CiAgICAgaWYgKCFtX2ZyYW1lYnVmZmVyQmluZGluZyB8fCAhbV9mcmFtZWJ1ZmZlckJpbmRp
bmctPm9iamVjdCgpKQogICAgICAgICByZXR1cm4gR3JhcGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVG
RkVSX0NPTVBMRVRFOwotICAgIEdDM0RlbnVtIHJlc3VsdCA9IG1fZnJhbWVidWZmZXJCaW5kaW5n
LT5jaGVja1N0YXR1cygpOwotICAgIGlmIChyZXN1bHQgIT0gR3JhcGhpY3NDb250ZXh0M0Q6OkZS
QU1FQlVGRkVSX0NPTVBMRVRFKQotICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgIHJlc3VsdCA9
IG1fY29udGV4dC0+Y2hlY2tGcmFtZWJ1ZmZlclN0YXR1cyh0YXJnZXQpOworICAgIGlmIChtX2Zy
YW1lYnVmZmVyQmluZGluZy0+aXNJbmNvbXBsZXRlKHRydWUpKQorICAgICAgICByZXR1cm4gR3Jh
cGhpY3NDb250ZXh0M0Q6OkZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEOworICAgIHVuc2lnbmVkIGxv
bmcgcmVzdWx0ID0gbV9jb250ZXh0LT5jaGVja0ZyYW1lYnVmZmVyU3RhdHVzKHRhcmdldCk7CiAg
ICAgY2xlYW51cEFmdGVyR3JhcGhpY3NDYWxsKGZhbHNlKTsKICAgICByZXR1cm4gcmVzdWx0Owog
fQpAQCAtMjE2MCw3ICsyMTU5LDcgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyKEdDM0RlbnVtIHQKICAgICBpZiAo
aXNDb250ZXh0TG9zdCgpIHx8ICF2YWxpZGF0ZUZyYW1lYnVmZmVyRnVuY1BhcmFtZXRlcnModGFy
Z2V0LCBhdHRhY2htZW50KSkKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygpOwogCi0gICAg
aWYgKCFtX2ZyYW1lYnVmZmVyQmluZGluZyB8fCAhbV9mcmFtZWJ1ZmZlckJpbmRpbmctPm9iamVj
dCgpKSB7CisgICAgaWYgKCFtX2ZyYW1lYnVmZmVyQmluZGluZyB8fCAhbV9mcmFtZWJ1ZmZlckJp
bmRpbmctPm9iamVjdCgpIHx8IG1fZnJhbWVidWZmZXJCaW5kaW5nLT5pc0luY29tcGxldGUoZmFs
c2UpKSB7CiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250
ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OKTsKICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbygp
OwogICAgIH0KQEAgLTQzMDksMTQgKzQzMDgsMTQgQEAgR0MzRGVudW0gV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRCb3VuZEZyYW1lYnVmZmVyQ29sb3JGb3JtYXQoKQogaW50IFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6Z2V0Qm91bmRGcmFtZWJ1ZmZlcldpZHRoKCkKIHsKICAgICBpZiAobV9mcmFt
ZWJ1ZmZlckJpbmRpbmcgJiYgbV9mcmFtZWJ1ZmZlckJpbmRpbmctPm9iamVjdCgpKQotICAgICAg
ICByZXR1cm4gbV9mcmFtZWJ1ZmZlckJpbmRpbmctPmdldENvbG9yQnVmZmVyV2lkdGgoKTsKKyAg
ICAgICAgcmV0dXJuIG1fZnJhbWVidWZmZXJCaW5kaW5nLT5nZXRXaWR0aCgpOwogICAgIHJldHVy
biBtX2RyYXdpbmdCdWZmZXIgPyBtX2RyYXdpbmdCdWZmZXItPnNpemUoKS53aWR0aCgpIDogbV9j
b250ZXh0LT5nZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpLndpZHRoKCk7CiB9CiAKIGludCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEJvdW5kRnJhbWVidWZmZXJIZWlnaHQoKQogewogICAg
IGlmIChtX2ZyYW1lYnVmZmVyQmluZGluZyAmJiBtX2ZyYW1lYnVmZmVyQmluZGluZy0+b2JqZWN0
KCkpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lYnVmZmVyQmluZGluZy0+Z2V0Q29sb3JCdWZmZXJI
ZWlnaHQoKTsKKyAgICAgICAgcmV0dXJuIG1fZnJhbWVidWZmZXJCaW5kaW5nLT5nZXRIZWlnaHQo
KTsKICAgICByZXR1cm4gbV9kcmF3aW5nQnVmZmVyID8gbV9kcmF3aW5nQnVmZmVyLT5zaXplKCku
aGVpZ2h0KCkgOiBtX2NvbnRleHQtPmdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCkuaGVpZ2h0
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHAKaW5kZXggZWYzZjA2OC4uZDc4OTQyMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAg
LTUzNSwyMSArNTM1LDExIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNl
aXZlRGF0YUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVuCiAgICAgICAgIHJlc291
cmNlQWdlbnQtPmRpZFJlY2VpdmVEYXRhKGlkZW50aWZpZXIsIGRhdGEsIGRhdGFMZW5ndGgsIGVu
Y29kZWREYXRhTGVuZ3RoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEZpbmlzaExvYWRpbmdJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgZG91
YmxlIG1vbm90b25pY0ZpbmlzaFRpbWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkRmluaXNoTG9hZGluZ0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBk
b3VibGUgZmluaXNoVGltZSkKIHsKLSAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGlu
ZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpOwot
ICAgIEluc3BlY3RvclJlc291cmNlQWdlbnQqIHJlc291cmNlQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLT5pbnNwZWN0b3JSZXNvdXJjZUFnZW50KCk7Ci0gICAgaWYgKCF0aW1lbGluZUFnZW50
ICYmICFyZXNvdXJjZUFnZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBkb3VibGUgZmluaXNo
VGltZSA9IDAuMDsKLSAgICAvLyBGSVhNRTogRXhwb3NlIGFsbCBvZiB0aGUgdGltaW5nIGRldGFp
bHMgdG8gaW5zcGVjdG9yIGFuZCBoYXZlIGl0IGNhbGN1bGF0ZSBmaW5pc2hUaW1lLgotICAgIGlm
IChtb25vdG9uaWNGaW5pc2hUaW1lKQotICAgICAgICBmaW5pc2hUaW1lID0gbG9hZGVyLT50aW1p
bmcoKS0+Y29udmVydE1vbm90b25pY1RpbWVUb0RvY3VtZW50VGltZShtb25vdG9uaWNGaW5pc2hU
aW1lKTsKLQotICAgIGlmICh0aW1lbGluZUFnZW50KQorICAgIGlmIChJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRGaW5pc2hMb2FkaW5nUmVz
b3VyY2UoaWRlbnRpZmllciwgZmFsc2UsIGZpbmlzaFRpbWUpOwotICAgIGlmIChyZXNvdXJjZUFn
ZW50KQorICAgIGlmIChJbnNwZWN0b3JSZXNvdXJjZUFnZW50KiByZXNvdXJjZUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpKQogICAgICAgICByZXNv
dXJjZUFnZW50LT5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIsIGxvYWRlciwgZmluaXNoVGlt
ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JS
ZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcAppbmRleCA4ZjJjOGM4Li4wMzU0N2YwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC0xMDMsMTAg
KzEwMywxMCBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0
Rm9ySGVhZGVycyhjb25zdCBIVFRQSGVhZGVyTWFwJiBoZQogICAgIHJldHVybiBoZWFkZXJzT2Jq
ZWN0OwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0
Rm9yVGltaW5nKGNvbnN0IFJlc291cmNlTG9hZFRpbWluZyYgdGltaW5nLCBEb2N1bWVudExvYWRl
ciogbG9hZGVyKQorc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVj
dEZvclRpbWluZyhjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIHRpbWluZykKIHsKICAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiB0aW1pbmdPYmplY3QgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0
ZSgpOwotICAgIHRpbWluZ09iamVjdC0+c2V0TnVtYmVyKCJyZXF1ZXN0VGltZSIsIHRpbWluZy5j
b252ZXJ0UmVzb3VyY2VMb2FkVGltZVRvRG9jdW1lbnRUaW1lKGxvYWRlci0+dGltaW5nKCksIDAp
KTsKKyAgICB0aW1pbmdPYmplY3QtPnNldE51bWJlcigicmVxdWVzdFRpbWUiLCB0aW1pbmcucmVx
dWVzdFRpbWUpOwogICAgIHRpbWluZ09iamVjdC0+c2V0TnVtYmVyKCJwcm94eVN0YXJ0IiwgdGlt
aW5nLnByb3h5U3RhcnQpOwogICAgIHRpbWluZ09iamVjdC0+c2V0TnVtYmVyKCJwcm94eUVuZCIs
IHRpbWluZy5wcm94eUVuZCk7CiAgICAgdGltaW5nT2JqZWN0LT5zZXROdW1iZXIoImRuc1N0YXJ0
IiwgdGltaW5nLmRuc1N0YXJ0KTsKQEAgLTEzMiw3ICsxMzIsNyBAQCBzdGF0aWMgUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KGNvbnN0IFJl
c291cmNlUgogICAgIHJldHVybiByZXF1ZXN0T2JqZWN0OwogfQogCi1zdGF0aWMgUGFzc1JlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK3N0YXRp
YyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewogICAgIGlmIChyZXNwb25z
ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNTIsNyArMTUyLDcgQEAgc3RhdGlj
IFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBidWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2UKICAgICByZXNwb25zZU9iamVjdC0+c2V0TnVtYmVyKCJjb25uZWN0
aW9uSWQiLCByZXNwb25zZS5jb25uZWN0aW9uSUQoKSk7CiAgICAgcmVzcG9uc2VPYmplY3QtPnNl
dEJvb2xlYW4oImZyb21EaXNrQ2FjaGUiLCByZXNwb25zZS53YXNDYWNoZWQoKSk7CiAgICAgaWYg
KHJlc3BvbnNlLnJlc291cmNlTG9hZFRpbWluZygpKQotICAgICAgICByZXNwb25zZU9iamVjdC0+
c2V0T2JqZWN0KCJ0aW1pbmciLCBidWlsZE9iamVjdEZvclRpbWluZygqcmVzcG9uc2UucmVzb3Vy
Y2VMb2FkVGltaW5nKCksIGxvYWRlcikpOworICAgICAgICByZXNwb25zZU9iamVjdC0+c2V0T2Jq
ZWN0KCJ0aW1pbmciLCBidWlsZE9iamVjdEZvclRpbWluZygqcmVzcG9uc2UucmVzb3VyY2VMb2Fk
VGltaW5nKCkpKTsKIAogICAgIGlmIChyZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZvKCkpIHsKICAg
ICAgICAgcmVzcG9uc2VPYmplY3QtPnNldE9iamVjdCgiaGVhZGVycyIsIGJ1aWxkT2JqZWN0Rm9y
SGVhZGVycyhyZXNwb25zZS5yZXNvdXJjZUxvYWRJbmZvKCktPnJlc3BvbnNlSGVhZGVycykpOwpA
QCAtMTY4LDEzICsxNjgsMTMgQEAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBi
dWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2UKICAgICByZXR1cm4g
cmVzcG9uc2VPYmplY3Q7CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
YnVpbGRPYmplY3RGb3JDYWNoZWRSZXNvdXJjZShjb25zdCBDYWNoZWRSZXNvdXJjZSYgY2FjaGVk
UmVzb3VyY2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCitzdGF0aWMgUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UoY29uc3QgQ2FjaGVkUmVz
b3VyY2UmIGNhY2hlZFJlc291cmNlKQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHJl
c291cmNlT2JqZWN0ID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICByZXNvdXJjZU9i
amVjdC0+c2V0U3RyaW5nKCJ1cmwiLCBjYWNoZWRSZXNvdXJjZS51cmwoKSk7CiAgICAgcmVzb3Vy
Y2VPYmplY3QtPnNldFN0cmluZygidHlwZSIsIEluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVz
b3VyY2VUeXBlU3RyaW5nKGNhY2hlZFJlc291cmNlKSk7CiAgICAgcmVzb3VyY2VPYmplY3QtPnNl
dE51bWJlcigiYm9keVNpemUiLCBjYWNoZWRSZXNvdXJjZS5lbmNvZGVkU2l6ZSgpKTsKLSAgICBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXNvdXJjZVJlc3BvbnNlID0gYnVpbGRPYmplY3RGb3JS
ZXNvdXJjZVJlc3BvbnNlKGNhY2hlZFJlc291cmNlLnJlc3BvbnNlKCksIGxvYWRlcik7CisgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcmVzb3VyY2VSZXNwb25zZSA9IGJ1aWxkT2JqZWN0Rm9y
UmVzb3VyY2VSZXNwb25zZShjYWNoZWRSZXNvdXJjZS5yZXNwb25zZSgpKTsKICAgICBpZiAocmVz
b3VyY2VSZXNwb25zZSkKICAgICAgICAgcmVzb3VyY2VPYmplY3QtPnNldE9iamVjdCgicmVzcG9u
c2UiLCByZXNvdXJjZVJlc3BvbnNlKTsKICAgICByZXR1cm4gcmVzb3VyY2VPYmplY3Q7CkBAIC0y
MjEsNyArMjIxLDcgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVl
c3QodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1bWVudEwKICAgICBlbHNlCiAgICAgICAg
IGNhbGxTdGFja1ZhbHVlID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGluaXRpYXRvck9iamVjdCA9IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KGxv
YWRlci0+ZnJhbWUoKSA/IGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IDApOwotICAgIG1f
ZnJvbnRlbmQtPnJlcXVlc3RXaWxsQmVTZW50KHJlcXVlc3RJZCwgbV9wYWdlQWdlbnQtPmZyYW1l
SWQobG9hZGVyLT5mcmFtZSgpKSwgbV9wYWdlQWdlbnQtPmxvYWRlcklkKGxvYWRlciksIGxvYWRl
ci0+dXJsKCkuc3RyaW5nKCksIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3Qp
LCBjdXJyZW50VGltZSgpLCBpbml0aWF0b3JPYmplY3QsIGNhbGxTdGFja1ZhbHVlLCBidWlsZE9i
amVjdEZvclJlc291cmNlUmVzcG9uc2UocmVkaXJlY3RSZXNwb25zZSwgbG9hZGVyKSk7CisgICAg
bV9mcm9udGVuZC0+cmVxdWVzdFdpbGxCZVNlbnQocmVxdWVzdElkLCBtX3BhZ2VBZ2VudC0+ZnJh
bWVJZChsb2FkZXItPmZyYW1lKCkpLCBtX3BhZ2VBZ2VudC0+bG9hZGVySWQobG9hZGVyKSwgbG9h
ZGVyLT51cmwoKS5zdHJpbmcoKSwgYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlcXVlc3QocmVxdWVz
dCksIGN1cnJlbnRUaW1lKCksIGluaXRpYXRvck9iamVjdCwgY2FsbFN0YWNrVmFsdWUsIGJ1aWxk
T2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZWRpcmVjdFJlc3BvbnNlKSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6bWFya1Jlc291cmNlQXNDYWNoZWQodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyKQpAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6bWFya1Jlc291cmNlQXNDYWNoZWQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKQogdm9p
ZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRSZWNlaXZlUmVzcG9uc2UodW5zaWduZWQgbG9u
ZyBpZGVudGlmaWVyLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKIHsKICAgICBTdHJpbmcgcmVxdWVzdElkID0gSWRlbnRpZmllcnNGYWN0
b3J5OjpyZXF1ZXN0SWQoaWRlbnRpZmllcik7Ci0gICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
cmVzb3VyY2VSZXNwb25zZSA9IGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXNwb25zZShyZXNwb25z
ZSwgbG9hZGVyKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiByZXNvdXJjZVJlc3BvbnNl
ID0gYnVpbGRPYmplY3RGb3JSZXNvdXJjZVJlc3BvbnNlKHJlc3BvbnNlKTsKICAgICBJbnNwZWN0
b3JQYWdlQWdlbnQ6OlJlc291cmNlVHlwZSB0eXBlID0gSW5zcGVjdG9yUGFnZUFnZW50OjpPdGhl
clJlc291cmNlOwogICAgIGxvbmcgY2FjaGVkUmVzb3VyY2VTaXplID0gMDsKIApAQCAtMzEzLDcg
KzMxMyw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkTG9hZFJlc291cmNlRnJv
bU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiBsb2FkCiAgICAgbV9yZXNvdXJjZXNEYXRhLT5h
ZGRDYWNoZWRSZXNvdXJjZShyZXF1ZXN0SWQsIHJlc291cmNlKTsKICAgICBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0PiBpbml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXIt
PmZyYW1lKCkgPyBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiAwKTsKIAotICAgIG1fZnJv
bnRlbmQtPnJlcXVlc3RTZXJ2ZWRGcm9tTWVtb3J5Q2FjaGUocmVxdWVzdElkLCBmcmFtZUlkLCBs
b2FkZXJJZCwgbG9hZGVyLT51cmwoKS5zdHJpbmcoKSwgY3VycmVudFRpbWUoKSwgaW5pdGlhdG9y
T2JqZWN0LCBidWlsZE9iamVjdEZvckNhY2hlZFJlc291cmNlKCpyZXNvdXJjZSwgbG9hZGVyKSk7
CisgICAgbV9mcm9udGVuZC0+cmVxdWVzdFNlcnZlZEZyb21NZW1vcnlDYWNoZShyZXF1ZXN0SWQs
IGZyYW1lSWQsIGxvYWRlcklkLCBsb2FkZXItPnVybCgpLnN0cmluZygpLCBjdXJyZW50VGltZSgp
LCBpbml0aWF0b3JPYmplY3QsIGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UoKnJlc291cmNl
KSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0SW5pdGlhbFNjcmlwdENv
bnRlbnQodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVN0cmlu
ZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVu
ZC5zaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5zaAppbmRl
eCBhMjdhMzYyLi5jMWQ5YTQ2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Y29tcGlsZS1mcm9udC1lbmQuc2gKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBp
bGUtZnJvbnQtZW5kLnNoCkBAIC0xNTAsMTEgKzE1MCwxMCBAQCBqYXZhIC1qYXIgfi9jbG9zdXJl
L2NvbXBpbGVyLmphciAtLXN1bW1hcnlfZGV0YWlsX2xldmVsIDMgLS1jb21waWxhdGlvbl9sZXZl
bCBTSQogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0
YWJhc2VUYWJsZVZpZXcuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRE9NU3RvcmFnZUl0ZW1zVmlldy5qcyBcCiAgICAgICAgIC0tanMgU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcyBcCi0gICAgLS1t
b2R1bGUganNtb2R1bGVfc2NyaXB0czo5OmpzbW9kdWxlX2NvbXBvbmVudHMgXAorICAgIC0tbW9k
dWxlIGpzbW9kdWxlX3NjcmlwdHM6ODpqc21vZHVsZV9jb21wb25lbnRzIFwKICAgICAgICAgLS1q
cyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5l
LmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Nj
b3BlQ2hhaW5TaWRlYmFyUGFuZS5qcyBcCiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanMgXAotICAgICAgICAtLWpz
IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c05hdmlnYXRvci5qcyBc
CiAgICAgICAgIC0tanMgU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRz
UGFuZWwuanMgXAogICAgICAgICAtLWpzIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU2NyaXB0c1NlYXJjaFNjb3BlLmpzIFwKICAgICAgICAgLS1qcyBTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1dhdGNoRXhwcmVzc2lvbnNTaWRlYmFyUGFuZS5qcyBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9kb21haW4u
cG5nIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbWFnZXMvZG9tYWluLnBu
ZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjkxZDVhNS4uMDAwMDAwMApCaW5hcnkg
ZmlsZXMgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9kb21haW4u
cG5nIGFuZCAvZGV2L251bGwgZGlmZmVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2VGcmFtZS5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSmF2YVNjcmlwdFNvdXJjZUZyYW1lLmpzCmluZGV4IDE0NzYw
MTcuLjQ1NWI3YTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvSmF2YVNjcmlwdFNvdXJjZUZyYW1lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvSmF2YVNjcmlwdFNvdXJjZUZyYW1lLmpzCkBAIC03Myw3ICs3Myw4IEBAIFdl
Ykluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBlID0gewogCiAgICAgc3Vn
Z2VzdGVkRmlsZU5hbWU6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl91
aVNvdXJjZUNvZGUuZGlzcGxheU5hbWUgfHwgInVudGl0bGVkLmpzIjsKKyAgICAgICAgdmFyIG5h
bWVzID0gdGhpcy5fc2NyaXB0c1BhbmVsLmZvbGRlckFuZERpc3BsYXlOYW1lRm9yU2NyaXB0VVJM
KHRoaXMuX3VpU291cmNlQ29kZS51cmwpOworICAgICAgICByZXR1cm4gbmFtZXMuZGlzcGxheU5h
bWUgfHwgInVudGl0bGVkLmpzIjsKICAgICB9LAogCiAgICAgZWRpdENvbnRlbnQ6IGZ1bmN0aW9u
KG5ld0NvbnRlbnQsIGNhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZUhlYWRlcnNWaWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZUhlYWRlcnNWaWV3LmpzCmluZGV4IGRiZTMyYzEuLmNi
ZWIwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVz
b3VyY2VIZWFkZXJzVmlldy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Jlc291cmNlSGVhZGVyc1ZpZXcuanMKQEAgLTEyNywxNCArMTI3LDEyIEBAIFdlYkluc3Bl
Y3Rvci5SZXNvdXJjZUhlYWRlcnNWaWV3LnByb3RvdHlwZSA9IHsKICAgICAvKioKICAgICAgKiBA
cGFyYW0ge3N0cmluZ30gdmFsdWUKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lCi0g
ICAgICogQHBhcmFtIHtib29sZWFufSBkZWNvZGVQYXJhbWV0ZXJzCiAgICAgICovCi0gICAgX2Zv
cm1hdFBhcmFtZXRlcjogZnVuY3Rpb24odmFsdWUsIGNsYXNzTmFtZSwgZGVjb2RlUGFyYW1ldGVy
cykKKyAgICBfZm9ybWF0UGFyYW1ldGVyOiBmdW5jdGlvbih2YWx1ZSwgY2xhc3NOYW1lKQogICAg
IHsKICAgICAgICAgdmFyIGVycm9yRGVjb2RpbmcgPSBmYWxzZTsKIAotICAgICAgICBpZiAoZGVj
b2RlUGFyYW1ldGVycykgewotICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9cKy9n
LCAiICIpOworICAgICAgICBpZiAodGhpcy5fZGVjb2RlUmVxdWVzdFBhcmFtZXRlcnMpIHsKICAg
ICAgICAgICAgIGlmICh2YWx1ZS5pbmRleE9mKCIlIikgPj0gMCkgewogICAgICAgICAgICAgICAg
IHRyeSB7CiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gZGVjb2RlVVJJQ29tcG9uZW50KHZh
bHVlKTsKQEAgLTE0Miw2ICsxNDAsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VIZWFkZXJzVmll
dy5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgIGVycm9yRGVjb2RpbmcgPSB0cnVl
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhbHVlID0g
dmFsdWUucmVwbGFjZSgvXCsvZywgIiAiKTsKICAgICAgICAgfQogICAgICAgICB2YXIgZGl2ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIGRpdi5jbGFzc05hbWUgPSBj
bGFzc05hbWU7CkBAIC0yMzcsOCArMjM2LDggQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlSGVhZGVy
c1ZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFybXMu
bGVuZ3RoOyArK2kpIHsKICAgICAgICAgICAgIHZhciBwYXJhbU5hbWVWYWx1ZSA9IGRvY3VtZW50
LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKLSAgICAgICAgICAgIHZhciBuYW1lID0gdGhpcy5f
Zm9ybWF0UGFyYW1ldGVyKHBhcm1zW2ldLm5hbWUgKyAiOiIsICJoZWFkZXItbmFtZSIsIHRoaXMu
X2RlY29kZVJlcXVlc3RQYXJhbWV0ZXJzKTsKLSAgICAgICAgICAgIHZhciB2YWx1ZSA9IHRoaXMu
X2Zvcm1hdFBhcmFtZXRlcihwYXJtc1tpXS52YWx1ZSwgImhlYWRlci12YWx1ZSBzb3VyY2UtY29k
ZSIsIHRoaXMuX2RlY29kZVJlcXVlc3RQYXJhbWV0ZXJzKTsKKyAgICAgICAgICAgIHZhciBuYW1l
ID0gdGhpcy5fZm9ybWF0UGFyYW1ldGVyKHBhcm1zW2ldLm5hbWUgKyAiOiIsICJoZWFkZXItbmFt
ZSIpOworICAgICAgICAgICAgdmFyIHZhbHVlID0gdGhpcy5fZm9ybWF0UGFyYW1ldGVyKHBhcm1z
W2ldLnZhbHVlLCAiaGVhZGVyLW5hbWUgc291cmNlLWNvZGUiKTsKICAgICAgICAgICAgIHBhcmFt
TmFtZVZhbHVlLmFwcGVuZENoaWxkKG5hbWUpOwogICAgICAgICAgICAgcGFyYW1OYW1lVmFsdWUu
YXBwZW5kQ2hpbGQodmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdHNOYXZpZ2F0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1NjcmlwdHNOYXZpZ2F0b3IuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDQxYjBhZmIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TY3JpcHRzTmF2aWdhdG9yLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMzk4ICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0g
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICoKLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSAqIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEdP
T0dMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgR09PR0xFIElOQy4KLSAqIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0gKi8KLQotLyoqCi0gKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLlRhYmJl
ZFBhbmV9Ci0gKiBAY29uc3RydWN0b3IKLSAqLwotV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0
b3IgPSBmdW5jdGlvbihwcmVzZW50YXRpb25Nb2RlbCkKLXsKLSAgICBXZWJJbnNwZWN0b3IuVGFi
YmVkUGFuZS5jYWxsKHRoaXMpOwotCi0gICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwgPSBwcmVz
ZW50YXRpb25Nb2RlbDsKLQotICAgIHRoaXMuZWxlbWVudC5pZCA9ICJzY3JpcHRzLW5hdmlnYXRv
ci10YWJiZWQtcGFuZSI7Ci0gIAotICAgIHRoaXMuX25hdmlnYXRvclNjcmlwdHNUcmVlRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9sIik7Ci0gICAgdmFyIHNjcmlwdHNWaWV3ID0g
bmV3IFdlYkluc3BlY3Rvci5WaWV3KCk7Ci0gICAgc2NyaXB0c1ZpZXcuZWxlbWVudC5hZGRTdHls
ZUNsYXNzKCJvdXRsaW5lLWRpc2Nsb3N1cmUiKTsKLSAgICBzY3JpcHRzVmlldy5lbGVtZW50LmFk
ZFN0eWxlQ2xhc3MoIm5hdmlnYXRvciIpOwotICAgIHNjcmlwdHNWaWV3LmVsZW1lbnQuYXBwZW5k
Q2hpbGQodGhpcy5fbmF2aWdhdG9yU2NyaXB0c1RyZWVFbGVtZW50KTsKLSAgICB0aGlzLl9uYXZp
Z2F0b3JTY3JpcHRzVHJlZSA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdG9yVHJlZU91dGxpbmUo
dGhpcy5fbmF2aWdhdG9yU2NyaXB0c1RyZWVFbGVtZW50KTsKLSAgICB0aGlzLmFwcGVuZFRhYihX
ZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvci5TY3JpcHRzVGFiLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlNjcmlwdHMiKSwgc2NyaXB0c1ZpZXcpOwotICAgIHRoaXMuc2VsZWN0VGFiKFdlYklu
c3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9yLlNjcmlwdHNUYWIpOwotCi0gICAgdGhpcy5fbmF2aWdh
dG9yQ29udGVudFNjcmlwdHNUcmVlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9s
Iik7Ci0gICAgdmFyIGNvbnRlbnRTY3JpcHRzVmlldyA9IG5ldyBXZWJJbnNwZWN0b3IuVmlldygp
OwotICAgIGNvbnRlbnRTY3JpcHRzVmlldy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoIm91dGxpbmUt
ZGlzY2xvc3VyZSIpOwotICAgIGNvbnRlbnRTY3JpcHRzVmlldy5lbGVtZW50LmFkZFN0eWxlQ2xh
c3MoIm5hdmlnYXRvciIpOwotICAgIGNvbnRlbnRTY3JpcHRzVmlldy5lbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuX25hdmlnYXRvckNvbnRlbnRTY3JpcHRzVHJlZUVsZW1lbnQpOwotICAgIHRoaXMu
X25hdmlnYXRvckNvbnRlbnRTY3JpcHRzVHJlZSA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdG9y
VHJlZU91dGxpbmUodGhpcy5fbmF2aWdhdG9yQ29udGVudFNjcmlwdHNUcmVlRWxlbWVudCk7Ci0g
ICAgdGhpcy5hcHBlbmRUYWIoV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IuQ29udGVudFNj
cmlwdHNUYWIsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiQ29udGVudCBzY3JpcHRzIiksIGNvbnRl
bnRTY3JpcHRzVmlldyk7Ci0KLSAgICB0aGlzLl9mb2xkZXJUcmVlRWxlbWVudHMgPSB7fTsKLSAg
ICAKLSAgICB0aGlzLl9zY3JpcHRUcmVlRWxlbWVudHNCeVVJU291cmNlQ29kZSA9IG5ldyBNYXAo
KTsKLSAgICAKLSAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd1NjcmlwdEZvbGRlcnMuYWRk
Q2hhbmdlTGlzdGVuZXIodGhpcy5fc2hvd1NjcmlwdEZvbGRlcnNTZXR0aW5nQ2hhbmdlZC5iaW5k
KHRoaXMpKTsKLSAgICAKLSAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5hZGRFdmVudExp
c3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5EZWJ1Z2dlcldhc0Rpc2Fi
bGVkLCB0aGlzLl9yZXNldCwgdGhpcyk7Ci0gICAgdGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuYWRk
RXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVzZW50YXRpb25Nb2RlbC5FdmVu
dHMuRGVidWdnZXJSZXNldCwgdGhpcy5fcmVzZXQsIHRoaXMpOwotfQotCi1XZWJJbnNwZWN0b3Iu
U2NyaXB0c05hdmlnYXRvci5TY3JpcHRzVGFiID0gInNjcmlwdHMiOwotV2ViSW5zcGVjdG9yLlNj
cmlwdHNOYXZpZ2F0b3IuQ29udGVudFNjcmlwdHNUYWIgPSAiY29udGVudFNjcmlwdHMiOwotCi1X
ZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvci5FdmVudHMgPSB7Ci0gICAgU2NyaXB0U2VsZWN0
ZWQ6ICJTY3JpcHRTZWxlY3RlZCIKLX0KLQotV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3Iu
cHJvdG90eXBlID0gewotICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291
cmNlQ29kZX0gdWlTb3VyY2VDb2RlCi0gICAgICovCi0gICAgYWRkVUlTb3VyY2VDb2RlOiBmdW5j
dGlvbih1aVNvdXJjZUNvZGUpCi0gICAgewotICAgICAgICB2YXIgc2NyaXB0VGl0bGUgPSB1aVNv
dXJjZUNvZGUuZGlzcGxheU5hbWUgPyB1aVNvdXJjZUNvZGUuZGlzcGxheU5hbWUgOiBXZWJJbnNw
ZWN0b3IuVUlTdHJpbmcoIihwcm9ncmFtKSIpOwotICAgICAgICB2YXIgc2NyaXB0VHJlZUVsZW1l
bnQgPSBuZXcgV2ViSW5zcGVjdG9yLk5hdmlnYXRvclNjcmlwdFRyZWVFbGVtZW50KHRoaXMsIHVp
U291cmNlQ29kZSwgc2NyaXB0VGl0bGUpOwotICAgICAgICB0aGlzLl9zY3JpcHRUcmVlRWxlbWVu
dHNCeVVJU291cmNlQ29kZS5wdXQodWlTb3VyY2VDb2RlLCBzY3JpcHRUcmVlRWxlbWVudCk7Ci0g
ICAgICAgIAotICAgICAgICB2YXIgZm9sZGVyVHJlZUVsZW1lbnQgPSB0aGlzLl9nZXRPckNyZWF0
ZUZvbGRlclRyZWVFbGVtZW50KHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQsIHVpU291cmNl
Q29kZS5kb21haW4sIHVpU291cmNlQ29kZS5mb2xkZXJOYW1lKTsKLSAgICAgICAgZm9sZGVyVHJl
ZUVsZW1lbnQuYXBwZW5kQ2hpbGQoc2NyaXB0VHJlZUVsZW1lbnQpOwotICAgIH0sCi0KLSAgICAv
KioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29k
ZQotICAgICAqLwotICAgIHJldmVhbFVJU291cmNlQ29kZTogZnVuY3Rpb24odWlTb3VyY2VDb2Rl
KQotICAgIHsKLSAgICAgICAgdGhpcy5fbGFzdFNlbGVjdGVkVUlTb3VyY2VDb2RlID0gdWlTb3Vy
Y2VDb2RlOwotICAgICAgICB0aGlzLnNlbGVjdFRhYih1aVNvdXJjZUNvZGUuaXNDb250ZW50U2Ny
aXB0ID8gV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IuQ29udGVudFNjcmlwdHNUYWIgOiBX
ZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvci5TY3JpcHRzVGFiKTsKLSAgICAgICAgdGhpcy5f
c2NyaXB0VHJlZUVsZW1lbnRzQnlVSVNvdXJjZUNvZGUuZ2V0KHVpU291cmNlQ29kZSkucmV2ZWFs
QW5kU2VsZWN0KCk7Ci0gICAgfSwKLSAgICAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYklu
c3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQotICAgICAqLwotICAgIHNjcmlwdFNl
bGVjdGVkOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCi0gICAgewotICAgICAgICB0aGlzLl9sYXN0
U2VsZWN0ZWRVSVNvdXJjZUNvZGUgPSB1aVNvdXJjZUNvZGU7Ci0gICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9yLkV2ZW50cy5T
Y3JpcHRTZWxlY3RlZCwgdWlTb3VyY2VDb2RlKTsKLSAgICB9LAotICAgIAotICAgIC8qKgotICAg
ICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCi0gICAg
ICovCi0gICAgcmVtb3ZlVUlTb3VyY2VDb2RlOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCi0gICAg
ewotICAgICAgICB2YXIgdHJlZUVsZW1lbnQgPSB0aGlzLl9zY3JpcHRUcmVlRWxlbWVudHNCeVVJ
U291cmNlQ29kZS5nZXQodWlTb3VyY2VDb2RlKTsKLSAgICAgICAgd2hpbGUgKHRyZWVFbGVtZW50
KSB7Ci0gICAgICAgICAgICB2YXIgcGFyZW50ID0gdHJlZUVsZW1lbnQucGFyZW50OwotICAgICAg
ICAgICAgaWYgKHBhcmVudCkgewotICAgICAgICAgICAgICAgIGlmICh0cmVlRWxlbWVudCBpbnN0
YW5jZW9mIFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JGb2xkZXJUcmVlRWxlbWVudCkKLSAgICAgICAg
ICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2ZvbGRlclRyZWVFbGVtZW50c1t0cmVlRWxlbWVudC5m
b2xkZXJJZGVudGlmaWVyXTsKLSAgICAgICAgICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQodHJl
ZUVsZW1lbnQpOwotICAgICAgICAgICAgICAgIGlmIChwYXJlbnQuY2hpbGRyZW4ubGVuZ3RoKQot
ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRy
ZWVFbGVtZW50ID0gcGFyZW50OwotICAgICAgICB9Ci0gICAgfSwKLSAgICAKLSAgICBfc2hvd1Nj
cmlwdEZvbGRlcnNTZXR0aW5nQ2hhbmdlZDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFy
IHVpU291cmNlQ29kZXMgPSB0aGlzLl9uYXZpZ2F0b3JTY3JpcHRzVHJlZS5zY3JpcHRUcmVlRWxl
bWVudHMoKTsKLSAgICAgICAgdWlTb3VyY2VDb2RlcyA9IHVpU291cmNlQ29kZXMuY29uY2F0KHRo
aXMuX25hdmlnYXRvckNvbnRlbnRTY3JpcHRzVHJlZS5zY3JpcHRUcmVlRWxlbWVudHMoKSk7Ci0g
ICAgICAgIHRoaXMuX3Jlc2V0KCk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdWlTb3Vy
Y2VDb2Rlcy5sZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRoaXMuYWRkVUlTb3VyY2VDb2RlKHVp
U291cmNlQ29kZXNbaV0pOwotICAgICAgICAKLSAgICAgICAgdGhpcy5yZXZlYWxVSVNvdXJjZUNv
ZGUodGhpcy5fbGFzdFNlbGVjdGVkVUlTb3VyY2VDb2RlKTsKLSAgICB9LAotICAgIAotICAgIF9y
ZXNldDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5fbmF2aWdhdG9yU2NyaXB0c1Ry
ZWUucmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAgdGhpcy5fbmF2aWdhdG9yQ29udGVudFNjcmlw
dHNUcmVlLnJlbW92ZUNoaWxkcmVuKCk7Ci0gICAgICAgIHRoaXMuX2ZvbGRlclRyZWVFbGVtZW50
cyA9IHt9OwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzQ29u
dGVudFNjcmlwdAotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkb21haW4KLSAgICAgKiBAcGFyYW0g
e3N0cmluZ30gZm9sZGVyTmFtZQotICAgICAqLwotICAgIF9mb2xkZXJJZGVudGlmaWVyOiBmdW5j
dGlvbihpc0NvbnRlbnRTY3JpcHQsIGRvbWFpbiwgZm9sZGVyTmFtZSkKLSAgICB7Ci0gICAgICAg
IHZhciBjb250ZW50U2NyaXB0UHJlZml4ID0gaXNDb250ZW50U2NyaXB0ID8gIjAiIDogIjEiOwot
ICAgICAgICByZXR1cm4gY29udGVudFNjcmlwdFByZWZpeCArICI6IiArIGRvbWFpbiArIGZvbGRl
ck5hbWU7Ci0gICAgfSwKLSAgICAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlz
Q29udGVudFNjcmlwdAotICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkb21haW4KLSAgICAgKiBAcGFy
YW0ge3N0cmluZ30gZm9sZGVyTmFtZQotICAgICAqLwotICAgIF9nZXRPckNyZWF0ZUZvbGRlclRy
ZWVFbGVtZW50OiBmdW5jdGlvbihpc0NvbnRlbnRTY3JpcHQsIGRvbWFpbiwgZm9sZGVyTmFtZSkK
LSAgICB7Ci0gICAgICAgIHZhciBmb2xkZXJJZGVudGlmaWVyID0gdGhpcy5fZm9sZGVySWRlbnRp
Zmllcihpc0NvbnRlbnRTY3JpcHQsIGRvbWFpbiwgZm9sZGVyTmFtZSk7Ci0gICAgICAgIAotICAg
ICAgICBpZiAodGhpcy5fZm9sZGVyVHJlZUVsZW1lbnRzW2ZvbGRlcklkZW50aWZpZXJdKQotICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuX2ZvbGRlclRyZWVFbGVtZW50c1tmb2xkZXJJZGVudGlmaWVy
XTsKLQotICAgICAgICB2YXIgc2hvd1NjcmlwdEZvbGRlcnMgPSBXZWJJbnNwZWN0b3Iuc2V0dGlu
Z3Muc2hvd1NjcmlwdEZvbGRlcnMuZ2V0KCk7Ci0gICAgICAgIAotICAgICAgICBpZiAoKGRvbWFp
biA9PT0gIiIgJiYgZm9sZGVyTmFtZSA9PT0gIiIpIHx8ICFzaG93U2NyaXB0Rm9sZGVycykKLSAg
ICAgICAgICAgIHJldHVybiBpc0NvbnRlbnRTY3JpcHQgPyB0aGlzLl9uYXZpZ2F0b3JDb250ZW50
U2NyaXB0c1RyZWUgOiB0aGlzLl9uYXZpZ2F0b3JTY3JpcHRzVHJlZTsKLSAgICAgICAgCi0gICAg
ICAgIHZhciBmb2xkZXJUcmVlRWxlbWVudCA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdG9yRm9s
ZGVyVHJlZUVsZW1lbnQoZm9sZGVySWRlbnRpZmllciwgZG9tYWluLCBmb2xkZXJOYW1lKTsKLSAg
ICAgICAgCi0gICAgICAgIHZhciBwYXJlbnRGb2xkZXJFbGVtZW50OwotICAgICAgICBpZiAoZm9s
ZGVyTmFtZSA9PT0gIiIpCi0gICAgICAgICAgICBwYXJlbnRGb2xkZXJFbGVtZW50ID0gaXNDb250
ZW50U2NyaXB0ID8gdGhpcy5fbmF2aWdhdG9yQ29udGVudFNjcmlwdHNUcmVlIDogdGhpcy5fbmF2
aWdhdG9yU2NyaXB0c1RyZWU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHBhcmVudEZvbGRl
ckVsZW1lbnQgPSB0aGlzLl9nZXRPckNyZWF0ZUZvbGRlclRyZWVFbGVtZW50KGlzQ29udGVudFNj
cmlwdCwgZG9tYWluLCAiIik7Ci0gICAgICAgIAotICAgICAgICBwYXJlbnRGb2xkZXJFbGVtZW50
LmFwcGVuZENoaWxkKGZvbGRlclRyZWVFbGVtZW50KTsKLSAgICAgICAgCi0gICAgICAgIHRoaXMu
X2ZvbGRlclRyZWVFbGVtZW50c1tmb2xkZXJJZGVudGlmaWVyXSA9IGZvbGRlclRyZWVFbGVtZW50
OwotICAgICAgICByZXR1cm4gZm9sZGVyVHJlZUVsZW1lbnQ7Ci0gICAgfQotfQotCi1XZWJJbnNw
ZWN0b3IuU2NyaXB0c05hdmlnYXRvci5wcm90b3R5cGUuX19wcm90b19fID0gV2ViSW5zcGVjdG9y
LlRhYmJlZFBhbmUucHJvdG90eXBlOwotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVu
ZHMge1RyZWVPdXRsaW5lfQotICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50Ci0gKi8KLVdlYklu
c3BlY3Rvci5OYXZpZ2F0b3JUcmVlT3V0bGluZSA9IGZ1bmN0aW9uKGVsZW1lbnQpCi17Ci0gICAg
VHJlZU91dGxpbmUuY2FsbCh0aGlzLCBlbGVtZW50KTsKLSAgICB0aGlzLmNvbXBhcmF0b3IgPSBX
ZWJJbnNwZWN0b3IuTmF2aWdhdG9yVHJlZU91dGxpbmUuX3RyZWVFbGVtZW50c0NvbXBhcmU7Ci19
Ci0KLVdlYkluc3BlY3Rvci5OYXZpZ2F0b3JUcmVlT3V0bGluZS5fdHJlZUVsZW1lbnRzQ29tcGFy
ZSA9IGZ1bmN0aW9uIGNvbXBhcmUodHJlZUVsZW1lbnQxLCB0cmVlRWxlbWVudDIpCi17Ci0gICAg
Ly8gSW5zZXJ0IGluIHRoZSBhbHBoYWJldGljYWwgb3JkZXIsIGZpcnN0IGRvbWFpbnMsIHRoZW4g
Zm9sZGVycywgdGhlbiBzY3JpcHRzLgotICAgIGZ1bmN0aW9uIHR5cGVXZWlnaHQodHJlZUVsZW1l
bnQpCi0gICAgewotICAgICAgICBpZiAodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuTmF2aWdhdG9yRm9sZGVyVHJlZUVsZW1lbnQpIHsKLSAgICAgICAgICAgIGlmICh0cmVlRWxl
bWVudC5pc0RvbWFpbikKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIHJl
dHVybiAyOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAzOwotICAgIH0KLQotICAgIHZhciB0
eXBlV2VpZ2h0MSA9IHR5cGVXZWlnaHQodHJlZUVsZW1lbnQxKTsKLSAgICB2YXIgdHlwZVdlaWdo
dDIgPSB0eXBlV2VpZ2h0KHRyZWVFbGVtZW50Mik7Ci0KLSAgICB2YXIgcmVzdWx0OwotICAgIGlm
ICh0eXBlV2VpZ2h0MSA+IHR5cGVXZWlnaHQyKQotICAgICAgICByZXN1bHQgPSAxOwotICAgIGVs
c2UgaWYgKHR5cGVXZWlnaHQxIDwgdHlwZVdlaWdodDIpCi0gICAgICAgIHJlc3VsdCA9IC0xOwot
ICAgIGVsc2UgewotICAgICAgICB2YXIgdGl0bGUxID0gdHJlZUVsZW1lbnQxLnRpdGxlVGV4dDsK
LSAgICAgICAgdmFyIHRpdGxlMiA9IHRyZWVFbGVtZW50Mi50aXRsZVRleHQ7Ci0gICAgICAgIHJl
c3VsdCA9IHRpdGxlMS5sb2NhbGVDb21wYXJlKHRpdGxlMik7Ci0gICAgfQotICAgIHJldHVybiBy
ZXN1bHQ7Ci19Ci0KLVdlYkluc3BlY3Rvci5OYXZpZ2F0b3JUcmVlT3V0bGluZS5wcm90b3R5cGUg
PSB7Ci0gICAvKioKLSAgICAqIEByZXR1cm4ge0FycmF5LjxUcmVlRWxlbWVudD59Ci0gICAgKi8K
LSAgIHNjcmlwdFRyZWVFbGVtZW50czogZnVuY3Rpb24oKQotICAgewotICAgICAgIHZhciByZXN1
bHQgPSBbXTsKLSAgICAgICBpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGgpIHsKLSAgICAgICAgICAg
Zm9yICh2YXIgdHJlZUVsZW1lbnQgPSB0aGlzLmNoaWxkcmVuWzBdOyB0cmVlRWxlbWVudDsgdHJl
ZUVsZW1lbnQgPSB0cmVlRWxlbWVudC50cmF2ZXJzZU5leHRUcmVlRWxlbWVudChmYWxzZSwgdGhp
cywgdHJ1ZSkpIHsKLSAgICAgICAgICAgICAgIGlmICh0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdl
Ykluc3BlY3Rvci5OYXZpZ2F0b3JTY3JpcHRUcmVlRWxlbWVudCkKLSAgICAgICAgICAgICAgICAg
ICByZXN1bHQucHVzaCh0cmVlRWxlbWVudC51aVNvdXJjZUNvZGUpOwotICAgICAgICAgICB9Ci0g
ICAgICAgfQotICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICB9Ci19Ci0KLVdlYkluc3BlY3Rvci5O
YXZpZ2F0b3JUcmVlT3V0bGluZS5wcm90b3R5cGUuX19wcm90b19fID0gVHJlZU91dGxpbmUucHJv
dG90eXBlOwotCi0vKioKLSAqIEBjb25zdHJ1Y3RvcgotICogQGV4dGVuZHMge1RyZWVFbGVtZW50
fQotICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlCi0gKiBAcGFyYW0ge0FycmF5LjxzdHJpbmc+fSBp
Y29uQ2xhc3NlcwotICogQHBhcmFtIHtib29sZWFufSBoYXNDaGlsZHJlbgotICogQHBhcmFtIHti
b29sZWFuPX0gbm9JY29uCi0gKi8KLVdlYkluc3BlY3Rvci5CYXNlTmF2aWdhdG9yVHJlZUVsZW1l
bnQgPSBmdW5jdGlvbih0aXRsZSwgaWNvbkNsYXNzZXMsIGhhc0NoaWxkcmVuLCBub0ljb24pCi17
Ci0gICAgVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCAiIiwgbnVsbCwgaGFzQ2hpbGRyZW4pOwotICAg
IHRoaXMuX3RpdGxlVGV4dCA9IHRpdGxlOwotICAgIHRoaXMuX2ljb25DbGFzc2VzID0gaWNvbkNs
YXNzZXM7Ci0gICAgdGhpcy5fbm9JY29uID0gbm9JY29uOwotfQotCi1XZWJJbnNwZWN0b3IuQmFz
ZU5hdmlnYXRvclRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKLSAgICBvbmF0dGFjaDogZnVuY3Rp
b24oKQotICAgIHsKLSAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4o
KTsKLSAgICAgICAgaWYgKHRoaXMuX2ljb25DbGFzc2VzKSB7Ci0gICAgICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHRoaXMuX2ljb25DbGFzc2VzLmxlbmd0aDsgKytpKQotICAgICAgICAgICAg
ICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LmFkZFN0eWxlQ2xhc3ModGhpcy5faWNvbkNsYXNzZXNb
aV0pOwotICAgICAgICB9Ci0KLSAgICAgICAgdmFyIHNlbGVjdGlvbkVsZW1lbnQgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgc2VsZWN0aW9uRWxlbWVudC5jbGFzc05h
bWUgPSAic2VsZWN0aW9uIjsKLSAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuYXBwZW5kQ2hp
bGQoc2VsZWN0aW9uRWxlbWVudCk7Ci0KLSAgICAgICAgaWYgKCF0aGlzLl9ub0ljb24pIHsKLSAg
ICAgICAgICAgIHRoaXMuaW1hZ2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1n
Iik7Ci0gICAgICAgICAgICB0aGlzLmltYWdlRWxlbWVudC5jbGFzc05hbWUgPSAiaWNvbiI7Ci0g
ICAgICAgICAgICB0aGlzLmxpc3RJdGVtRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmltYWdlRWxl
bWVudCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHRoaXMudGl0bGVFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Ci0gICAgICAgIHRoaXMudGl0bGVFbGVtZW50
LmNsYXNzTmFtZSA9ICJiYXNlLW5hdmlnYXRvci10cmVlLWVsZW1lbnQtdGl0bGUiOwotICAgICAg
ICB0aGlzLl90aXRsZVRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpOwotICAg
ICAgICB0aGlzLl90aXRsZVRleHROb2RlLnRleHRDb250ZW50ID0gdGhpcy5fdGl0bGVUZXh0Owot
ICAgICAgICB0aGlzLnRpdGxlRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl90aXRsZVRleHROb2Rl
KTsKLSAgICAgICAgdGhpcy5saXN0SXRlbUVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy50aXRsZUVs
ZW1lbnQpOwotICAgICAgICAKLSAgICAgICAgdGhpcy5leHBhbmQoKTsKLSAgICB9LAotCi0gICAg
b25yZXZlYWw6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLmxpc3RJdGVtRWxl
bWVudCkKLSAgICAgICAgICAgIHRoaXMubGlzdEl0ZW1FbGVtZW50LnNjcm9sbEludG9WaWV3SWZO
ZWVkZWQoZmFsc2UpOwotICAgIH0sCi0KLSAgICAvKioKLSAgICAgKiBAdHlwZSB7c3RyaW5nfQot
ICAgICAqLwotICAgIGdldCB0aXRsZVRleHQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X3RpdGxlVGV4dDsKLSAgICB9LAotCi0gICAgc2V0IHRpdGxlVGV4dCh0aXRsZVRleHQpCi0gICAg
ewotICAgICAgICB0aGlzLl90aXRsZVRleHQgPSB0aXRsZVRleHQgfHwgIiI7Ci0gICAgICAgIHRo
aXMuX3RpdGxlVGV4dE5vZGUudGV4dENvbnRlbnQgPSB0aGlzLl90aXRsZVRleHQ7Ci0gICAgfQot
fQotCi1XZWJJbnNwZWN0b3IuQmFzZU5hdmlnYXRvclRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3By
b3RvX18gPSBUcmVlRWxlbWVudC5wcm90b3R5cGU7Ci0KLS8qKgotICogQGNvbnN0cnVjdG9yCi0g
KiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLkJhc2VOYXZpZ2F0b3JUcmVlRWxlbWVudH0KLSAqIEBw
YXJhbSB7c3RyaW5nfSBmb2xkZXJJZGVudGlmaWVyCi0gKiBAcGFyYW0ge3N0cmluZ30gZG9tYWlu
Ci0gKiBAcGFyYW0ge3N0cmluZ30gZm9sZGVyTmFtZQotICovCi1XZWJJbnNwZWN0b3IuTmF2aWdh
dG9yRm9sZGVyVHJlZUVsZW1lbnQgPSBmdW5jdGlvbihmb2xkZXJJZGVudGlmaWVyLCBkb21haW4s
IGZvbGRlck5hbWUpCi17Ci0gICAgdGhpcy5fZm9sZGVySWRlbnRpZmllciA9IGZvbGRlcklkZW50
aWZpZXI7Ci0gICAgdGhpcy5fZm9sZGVyTmFtZSA9IGZvbGRlck5hbWU7Ci0gICAgCi0gICAgdmFy
IGljb25DbGFzcyA9IHRoaXMuaXNEb21haW4gPyAic2NyaXB0cy1uYXZpZ2F0b3ItZG9tYWluLXRy
ZWUtaXRlbSIgOiAic2NyaXB0cy1uYXZpZ2F0b3ItZm9sZGVyLXRyZWUtaXRlbSI7Ci0gICAgdmFy
IHRpdGxlID0gdGhpcy5pc0RvbWFpbiA/IGRvbWFpbiA6IGZvbGRlck5hbWUuc3Vic3RyaW5nKDEp
OwotICAgIFdlYkluc3BlY3Rvci5CYXNlTmF2aWdhdG9yVHJlZUVsZW1lbnQuY2FsbCh0aGlzLCB0
aXRsZSwgW2ljb25DbGFzc10sIHRydWUpOwotfQotCi1XZWJJbnNwZWN0b3IuTmF2aWdhdG9yRm9s
ZGVyVHJlZUVsZW1lbnQucHJvdG90eXBlID0gewotICAgIC8qKgotICAgICAqIEB0eXBlIHtzdHJp
bmd9Ci0gICAgICovCi0gICAgZ2V0IGZvbGRlcklkZW50aWZpZXIoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX2ZvbGRlcklkZW50aWZpZXI7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAq
IEB0eXBlIHtib29sZWFufQotICAgICAqLwotICAgIGdldCBpc0RvbWFpbigpCi0gICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5fZm9sZGVyTmFtZSA9PT0gIiI7Ci0gICAgfSwKLSAgICAKLSAgICBv
bmF0dGFjaDogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLkJhc2VOYXZp
Z2F0b3JUcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2guY2FsbCh0aGlzKTsKLSAgICAgICAg
aWYgKHRoaXMuX2lzRG9tYWluKQotICAgICAgICAgICAgdGhpcy5jb2xsYXBzZSgpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICB0aGlzLmV4cGFuZCgpOwotICAgIH0KLX0KLQotV2ViSW5zcGVj
dG9yLk5hdmlnYXRvckZvbGRlclRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJ
bnNwZWN0b3IuQmFzZU5hdmlnYXRvclRyZWVFbGVtZW50LnByb3RvdHlwZTsKLQotLyoqCi0gKiBA
Y29uc3RydWN0b3IKLSAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuQmFzZU5hdmlnYXRvclRyZWVF
bGVtZW50fQotICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvcn0gbmF2aWdh
dG9yCi0gKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQot
ICogQHBhcmFtIHtzdHJpbmd9IHRpdGxlCi0gKi8KLVdlYkluc3BlY3Rvci5OYXZpZ2F0b3JTY3Jp
cHRUcmVlRWxlbWVudCA9IGZ1bmN0aW9uKG5hdmlnYXRvciwgdWlTb3VyY2VDb2RlLCB0aXRsZSkK
LXsKLSAgICBXZWJJbnNwZWN0b3IuQmFzZU5hdmlnYXRvclRyZWVFbGVtZW50LmNhbGwodGhpcywg
dGl0bGUsIFsic2NyaXB0cy1uYXZpZ2F0b3Itc2NyaXB0LXRyZWUtaXRlbSJdLCBmYWxzZSk7Ci0g
ICAgdGhpcy5fbmF2aWdhdG9yID0gbmF2aWdhdG9yOwotICAgIHRoaXMuX3VpU291cmNlQ29kZSA9
IHVpU291cmNlQ29kZTsKLSAgICB0aGlzLnRvb2x0aXAgPSB1aVNvdXJjZUNvZGUudXJsOwotfQot
Ci1XZWJJbnNwZWN0b3IuTmF2aWdhdG9yU2NyaXB0VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewot
ICAgIC8qKgotICAgICAqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfQotICAgICAq
LwotICAgIGdldCB1aVNvdXJjZUNvZGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3Vp
U291cmNlQ29kZTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtUcmVlRWxlbWVu
dH0gdHJlZUVsZW1lbnQKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBzZWxlY3RlZEJ5VXNlcgot
ICAgICAqLwotICAgIG9uc2VsZWN0OiBmdW5jdGlvbih0cmVlRWxlbWVudCwgc2VsZWN0ZWRCeVVz
ZXIpCi0gICAgewotICAgICAgICBpZiAoc2VsZWN0ZWRCeVVzZXIpCi0gICAgICAgICAgICB0aGlz
Ll9uYXZpZ2F0b3Iuc2NyaXB0U2VsZWN0ZWQodGhpcy51aVNvdXJjZUNvZGUpOwotICAgIH0KLX0K
LQotV2ViSW5zcGVjdG9yLk5hdmlnYXRvclNjcmlwdFRyZWVFbGVtZW50LnByb3RvdHlwZS5fX3By
b3RvX18gPSBXZWJJbnNwZWN0b3IuQmFzZU5hdmlnYXRvclRyZWVFbGVtZW50LnByb3RvdHlwZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1Bh
bmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwu
anMKaW5kZXggYmQyNjg2MC4uNjZhY2E5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKQEAgLTQ2LDQ2ICs0NiwyMyBAQCBXZWJJ
bnNwZWN0b3IuU2NyaXB0c1BhbmVsID0gZnVuY3Rpb24ocHJlc2VudGF0aW9uTW9kZWwpCiAgICAg
dGhpcy5lZGl0b3JUb29sYmFyID0gdGhpcy5fY3JlYXRlRWRpdG9yVG9vbGJhcigpOwogICAgIHRo
aXMuZGVidWdUb29sYmFyID0gdGhpcy5fY3JlYXRlRGVidWdUb29sYmFyKCk7CiAKLSAgICBjb25z
dCBpbml0aWFsRGVidWdTaWRlYmFyV2lkdGggPSAyMjU7Ci0gICAgY29uc3QgbWF4aW1hbERlYnVn
U2lkZWJhcldpZHRoUGVyY2VudCA9IDUwOwotICAgIHRoaXMuY3JlYXRlU3BsaXRWaWV3KHRoaXMu
ZWxlbWVudCwgV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5TaWRlYmFyUG9zaXRpb24uUmlnaHQsIGlu
aXRpYWxEZWJ1Z1NpZGViYXJXaWR0aCk7CisgICAgY29uc3QgaW5pdGlhbFNpZGViYXJXaWR0aCA9
IDIyNTsKKyAgICBjb25zdCBtaW5pbWFsVmlld3NDb250YWluZXJXaWR0aFBlcmNlbnQgPSAzNDsK
KyAgICB0aGlzLmNyZWF0ZVNwbGl0Vmlldyh0aGlzLmVsZW1lbnQsIFdlYkluc3BlY3Rvci5TcGxp
dFZpZXcuU2lkZWJhclBvc2l0aW9uLlJpZ2h0LCBpbml0aWFsU2lkZWJhcldpZHRoKTsKICAgICB0
aGlzLnNwbGl0Vmlldy5lbGVtZW50LmlkID0gInNjcmlwdHMtc3BsaXQtdmlldyI7CiAgICAgdGhp
cy5zcGxpdFZpZXcubWluaW1hbFNpZGViYXJXaWR0aCA9IFByZWZlcmVuY2VzLm1pblNjcmlwdHNT
aWRlYmFyV2lkdGg7Ci0gICAgdGhpcy5zcGxpdFZpZXcubWluaW1hbE1haW5XaWR0aFBlcmNlbnQg
PSAxMDAgLSBtYXhpbWFsRGVidWdTaWRlYmFyV2lkdGhQZXJjZW50OworICAgIHRoaXMuc3BsaXRW
aWV3Lm1pbmltYWxNYWluV2lkdGhQZXJjZW50ID0gbWluaW1hbFZpZXdzQ29udGFpbmVyV2lkdGhQ
ZXJjZW50OwogCiAgICAgdGhpcy5zcGxpdFZpZXcuc2lkZWJhckVsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5kZWJ1Z1Rvb2xiYXIpOworICAgIHRoaXMuc3BsaXRWaWV3Lm1haW5FbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuZWRpdG9yVG9vbGJhcik7CisKKyAgICB0aGlzLnZpZXdzQ29udGFpbmVyRWxl
bWVudCA9IHRoaXMuc3BsaXRWaWV3Lm1haW5FbGVtZW50OwogCiAgICAgdGhpcy5kZWJ1Z1NpZGVi
YXJSZXNpemVXaWRnZXRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAg
ICAgdGhpcy5kZWJ1Z1NpZGViYXJSZXNpemVXaWRnZXRFbGVtZW50LmlkID0gInNjcmlwdHMtZGVi
dWctc2lkZWJhci1yZXNpemVyLXdpZGdldCI7CiAgICAgdGhpcy5zcGxpdFZpZXcuaW5zdGFsbFJl
c2l6ZXIodGhpcy5kZWJ1Z1NpZGViYXJSZXNpemVXaWRnZXRFbGVtZW50KTsKICAgICB0aGlzLmVk
aXRvclRvb2xiYXIuYXBwZW5kQ2hpbGQodGhpcy5kZWJ1Z1NpZGViYXJSZXNpemVXaWRnZXRFbGVt
ZW50KTsKIAotICAgIGlmIChQcmVmZXJlbmNlcy51c2VTY3JpcHROYXZpZ2F0b3IpIHsKLSAgICAg
ICAgY29uc3QgaW5pdGlhbE5hdmlnYXRvcldpZHRoID0gMjI1OwotICAgICAgICBjb25zdCBtaW5p
bWFsVmlld3NDb250YWluZXJXaWR0aFBlcmNlbnQgPSA1MDsKLSAgICAgICAgdGhpcy5lZGl0b3JW
aWV3ID0gbmV3IFdlYkluc3BlY3Rvci5TcGxpdFZpZXcoV2ViSW5zcGVjdG9yLlNwbGl0Vmlldy5T
aWRlYmFyUG9zaXRpb24uTGVmdCwgInNjcmlwdHNQYW5lbE5hdmlnYXRvclNpZGViYXJXaWR0aCIs
IGluaXRpYWxOYXZpZ2F0b3JXaWR0aCk7Ci0gICAgICAgIAotICAgICAgICB0aGlzLmVkaXRvclZp
ZXcubWluaW1hbFNpZGViYXJXaWR0aCA9IFByZWZlcmVuY2VzLm1pblNjcmlwdHNTaWRlYmFyV2lk
dGg7Ci0gICAgICAgIHRoaXMuZWRpdG9yVmlldy5taW5pbWFsTWFpbldpZHRoUGVyY2VudCA9IG1p
bmltYWxWaWV3c0NvbnRhaW5lcldpZHRoUGVyY2VudDsKLSAgICAgICAgdGhpcy5lZGl0b3JWaWV3
LnNob3codGhpcy5zcGxpdFZpZXcubWFpbkVsZW1lbnQpOwotCi0gICAgICAgIHRoaXMuZWRpdG9y
Vmlldy5tYWluRWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmVkaXRvclRvb2xiYXIpOwotICAgICAg
ICAKLSAgICAgICAgdGhpcy5fbmF2aWdhdG9yID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2
aWdhdG9yKHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsKTsKLSAgICAgICAgdGhpcy5fbmF2aWdhdG9y
LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IuRXZlbnRzLlNj
cmlwdFNlbGVjdGVkLCB0aGlzLl9zY3JpcHRTZWxlY3RlZEluTmF2aWdhdG9yLCB0aGlzKQotICAg
ICAgICB0aGlzLl9uYXZpZ2F0b3Iuc2hvdyh0aGlzLmVkaXRvclZpZXcuc2lkZWJhckVsZW1lbnQp
OwotCi0gICAgICAgIHRoaXMudmlld3NDb250YWluZXJFbGVtZW50ID0gdGhpcy5lZGl0b3JWaWV3
Lm1haW5FbGVtZW50OwotCi0gICAgICAgIHRoaXMuX25hdmlnYXRvclJlc2l6ZVdpZGdldEVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgdGhpcy5fbmF2aWdh
dG9yUmVzaXplV2lkZ2V0RWxlbWVudC5pZCA9ICJzY3JpcHRzLW5hdmlnYXRvci1yZXNpemVyLXdp
ZGdldCI7Ci0gICAgICAgIHRoaXMuZWRpdG9yVmlldy5pbnN0YWxsUmVzaXplcih0aGlzLl9uYXZp
Z2F0b3JSZXNpemVXaWRnZXRFbGVtZW50KTsKLSAgICAgICAgdGhpcy5lZGl0b3JWaWV3LnNpZGVi
YXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRvclJlc2l6ZVdpZGdldEVsZW1lbnQp
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRoaXMuc3BsaXRWaWV3Lm1haW5FbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuZWRpdG9yVG9vbGJhcik7Ci0gICAgICAgIHRoaXMudmlld3NDb250YWluZXJF
bGVtZW50ID0gdGhpcy5zcGxpdFZpZXcubWFpbkVsZW1lbnQ7Ci0gICAgfQotCiAgICAgdGhpcy5z
aWRlYmFyUGFuZXMgPSB7fTsKICAgICB0aGlzLnNpZGViYXJQYW5lcy53YXRjaEV4cHJlc3Npb25z
ID0gbmV3IFdlYkluc3BlY3Rvci5XYXRjaEV4cHJlc3Npb25zU2lkZWJhclBhbmUoKTsKICAgICB0
aGlzLnNpZGViYXJQYW5lcy5jYWxsc3RhY2sgPSBuZXcgV2ViSW5zcGVjdG9yLkNhbGxTdGFja1Np
ZGViYXJQYW5lKHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsKTsKQEAgLTIxOCwyMCArMTk1LDE4IEBA
IFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgX3VpU291cmNl
Q29kZUFkZGVkOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNv
ZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIGV2ZW50LmRhdGE7
CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSBldmVudC5kYXRhOwogCiAgICAgICAgIGlmICgh
dWlTb3VyY2VDb2RlLnVybCkgewogICAgICAgICAgICAgLy8gQW5vbnltb3VzIHNvdXJjZXMgYXJl
IHNob3duIG9ubHkgd2hlbiBzdGVwcGluZy4KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQogCi0gICAgICAgIGlmICh0aGlzLl9uYXZpZ2F0b3IpCi0gICAgICAgICAgICB0aGlzLl9uYXZp
Z2F0b3IuYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7CiAgICAgICAgIHRoaXMuX2FkZE9w
dGlvblRvRmlsZXNTZWxlY3QodWlTb3VyY2VDb2RlKTsKIAogICAgICAgICB2YXIgbGFzdFZpZXdl
ZFVSTCA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5sYXN0Vmlld2VkU2NyaXB0RmlsZS5nZXQoKTsK
LSAgICAgICAgaWYgKCF0aGlzLl9pbml0aWFsVmlld1NlbGVjdGlvblByb2Nlc3NlZCkgewotICAg
ICAgICAgICAgdGhpcy5faW5pdGlhbFZpZXdTZWxlY3Rpb25Qcm9jZXNzZWQgPSB0cnVlOworICAg
ICAgICBpZiAoIXRoaXMuX2ZpbGVzU2VsZWN0RWxlbWVudC5pbml0aWFsU2VsZWN0aW9uUHJvY2Vz
c2VkKSB7CisgICAgICAgICAgICB0aGlzLl9maWxlc1NlbGVjdEVsZW1lbnQuaW5pdGlhbFNlbGVj
dGlvblByb2Nlc3NlZCA9IHRydWU7CiAgICAgICAgICAgICAvLyBPcHRpb24gd2UganVzdCBhZGRl
ZCBpcyB0aGUgb25seSBvcHRpb24gaW4gZmlsZXMgc2VsZWN0LgogICAgICAgICAgICAgLy8gV2Ug
aGF2ZSB0byBzaG93IGNvcnJlc3BvbmRpbmcgc291cmNlIGZyYW1lIGltbWVkaWF0ZWx5LgogICAg
ICAgICAgICAgdGhpcy5fc2hvd1NvdXJjZUZyYW1lQW5kQWRkVG9IaXN0b3J5KHVpU291cmNlQ29k
ZSk7CkBAIC0yNDQsOCArMjE5LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5
cGUgPSB7CiAKICAgICBfdWlTb3VyY2VDb2RlUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAg
ewotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlT
b3VyY2VDb2RlfSAqLyBldmVudC5kYXRhOwotICAgICAgICAKKyAgICAgICAgdmFyIHVpU291cmNl
Q29kZSA9IGV2ZW50LmRhdGE7CiAgICAgICAgIGlmICh1aVNvdXJjZUNvZGUuX3NvdXJjZUZyYW1l
KQogICAgICAgICAgICAgdWlTb3VyY2VDb2RlLl9zb3VyY2VGcmFtZS5kZXRhY2goKTsKICAgICB9
LApAQCAtMjY5LDkgKzI0Myw2IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICB9CiAgICAgfSwKIAotICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCi0gICAgICovCiAgICAgX2FkZE9wdGlv
blRvRmlsZXNTZWxlY3Q6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkKICAgICB7CiAgICAgICAgIHZh
ciBzaG93U2NyaXB0Rm9sZGVycyA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93U2NyaXB0Rm9s
ZGVycy5nZXQoKTsKQEAgLTI4OCwyOCArMjU5LDI3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFu
ZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIGNvbnN0IGluZGVudCA9IFdlYkluc3BlY3Rvci5p
c01hYygpID8gIiIgOiAiXHUwMGEwXHUwMGEwXHUwMGEwXHUwMGEwIjsKIAotICAgICAgICBvcHRp
b24uZGlzcGxheU5hbWUgPSB1aVNvdXJjZUNvZGUuZGlzcGxheU5hbWU7CisgICAgICAgIHZhciBu
YW1lcyA9IHRoaXMuZm9sZGVyQW5kRGlzcGxheU5hbWVGb3JTY3JpcHRVUkwodWlTb3VyY2VDb2Rl
LnVybCk7CisgICAgICAgIG9wdGlvbi5kaXNwbGF5TmFtZSA9IG5hbWVzLmRpc3BsYXlOYW1lOwog
CiAgICAgICAgIHZhciBjb250ZW50U2NyaXB0UHJlZml4ID0gdWlTb3VyY2VDb2RlLmlzQ29udGVu
dFNjcmlwdCA/ICIyOiIgOiAiMDoiOwotICAgICAgICB2YXIgZm9sZGVyTmFtZSA9IHVpU291cmNl
Q29kZS5mb2xkZXJOYW1lOwotICAgICAgICB2YXIgZG9tYWluID0gdWlTb3VyY2VDb2RlLmRvbWFp
bjsKIAotICAgICAgICBpZiAodWlTb3VyY2VDb2RlLmlzQ29udGVudFNjcmlwdCAmJiBkb21haW4p
IHsKKyAgICAgICAgaWYgKHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQgJiYgbmFtZXMuZG9t
YWluKSB7CiAgICAgICAgICAgICAvLyBSZW5kZXIgZXh0ZW5zaW9uIGRvbWFpbiBhcyBhIHBhdGgg
aW4gc3RydWN0dXJlZCB2aWV3Ci0gICAgICAgICAgICBmb2xkZXJOYW1lID0gZG9tYWluICsgKGZv
bGRlck5hbWUgPyBmb2xkZXJOYW1lIDogIiIpOwotICAgICAgICAgICAgZG9tYWluID0gIiI7Cisg
ICAgICAgICAgICBuYW1lcy5mb2xkZXJOYW1lID0gbmFtZXMuZG9tYWluICsgKG5hbWVzLmZvbGRl
ck5hbWUgPyBuYW1lcy5mb2xkZXJOYW1lIDogIiIpOworICAgICAgICAgICAgZGVsZXRlIG5hbWVz
LmRvbWFpbjsKICAgICAgICAgfQogCi0gICAgICAgIHZhciBmb2xkZXJOYW1lRm9yU29ydGluZyA9
IGNvbnRlbnRTY3JpcHRQcmVmaXggKyAoZG9tYWluID8gZG9tYWluICsgIlx0XHQiIDogIiIpICsg
Zm9sZGVyTmFtZTsKKyAgICAgICAgdmFyIGZvbGRlck5hbWVGb3JTb3J0aW5nID0gY29udGVudFNj
cmlwdFByZWZpeCArIChuYW1lcy5kb21haW4gPyBuYW1lcy5kb21haW4gKyAiXHRcdCIgOiAiIikg
KyBuYW1lcy5mb2xkZXJOYW1lOwogCiAgICAgICAgIGlmIChzaG93U2NyaXB0Rm9sZGVycykgewot
ICAgICAgICAgICAgb3B0aW9uLnRleHQgPSBpbmRlbnQgKyAodWlTb3VyY2VDb2RlLmRpc3BsYXlO
YW1lID8gdWlTb3VyY2VDb2RlLmRpc3BsYXlOYW1lIDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIo
cHJvZ3JhbSkiKSk7Ci0gICAgICAgICAgICBvcHRpb24ubmFtZUZvclNvcnRpbmcgPSBmb2xkZXJO
YW1lRm9yU29ydGluZyArICJcdC9cdCIgKyB1aVNvdXJjZUNvZGUuZGlzcGxheU5hbWU7IC8vIFVz
ZSAnXHQnIHRvIG1ha2UgZmlsZXMgc3RpY2sgdG8gdGhlaXIgZm9sZGVyLgorICAgICAgICAgICAg
b3B0aW9uLnRleHQgPSBpbmRlbnQgKyAobmFtZXMuZGlzcGxheU5hbWUgPyBuYW1lcy5kaXNwbGF5
TmFtZSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKHByb2dyYW0pIikpOworICAgICAgICAgICAg
b3B0aW9uLm5hbWVGb3JTb3J0aW5nID0gZm9sZGVyTmFtZUZvclNvcnRpbmcgKyAiXHQvXHQiICsg
bmFtZXMuZGlzcGxheU5hbWU7IC8vIFVzZSAnXHQnIHRvIG1ha2UgZmlsZXMgc3RpY2sgdG8gdGhl
aXIgZm9sZGVyLgogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgb3B0aW9uLnRleHQgPSB1
aVNvdXJjZUNvZGUuZGlzcGxheU5hbWUgPyB1aVNvdXJjZUNvZGUuZGlzcGxheU5hbWUgOiBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIihwcm9ncmFtKSIpOworICAgICAgICAgICAgb3B0aW9uLnRleHQg
PSBuYW1lcy5kaXNwbGF5TmFtZSA/IG5hbWVzLmRpc3BsYXlOYW1lIDogV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCIocHJvZ3JhbSkiKTsKICAgICAgICAgICAgIC8vIENvbnRlbnQgc2NyaXB0IHNob3Vs
ZCBjb250YWluIGl0cyBkb21haW4gbmFtZSBhcyBhIHByZWZpeAotICAgICAgICAgICAgaWYgKHVp
U291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQgJiYgZm9sZGVyTmFtZSkKLSAgICAgICAgICAgICAg
ICBvcHRpb24udGV4dCA9IGZvbGRlck5hbWUgKyAiLyIgKyBvcHRpb24udGV4dDsKKyAgICAgICAg
ICAgIGlmICh1aVNvdXJjZUNvZGUuaXNDb250ZW50U2NyaXB0ICYmIG5hbWVzLmZvbGRlck5hbWUp
CisgICAgICAgICAgICAgICAgb3B0aW9uLnRleHQgPSBuYW1lcy5mb2xkZXJOYW1lICsgIi8iICsg
b3B0aW9uLnRleHQ7CiAgICAgICAgICAgICBvcHRpb24ubmFtZUZvclNvcnRpbmcgPSBjb250ZW50
U2NyaXB0UHJlZml4ICsgb3B0aW9uLnRleHQ7CiAgICAgICAgIH0KICAgICAgICAgb3B0aW9uLnRp
dGxlID0gdWlTb3VyY2VDb2RlLnVybDsKQEAgLTMzOCwxOCArMzA4LDE4IEBAIFdlYkluc3BlY3Rv
ci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgaW5zZXJ0T3JkZXJlZChj
b250ZW50U2NyaXB0U2VjdGlvbik7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoc2hvd1Njcmlw
dEZvbGRlcnMgJiYgIXVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQgJiYgZG9tYWluICYmICFz
ZWxlY3QuZG9tYWluT3B0aW9uc1tkb21haW5dKSB7CisgICAgICAgIGlmIChzaG93U2NyaXB0Rm9s
ZGVycyAmJiAhdWlTb3VyY2VDb2RlLmlzQ29udGVudFNjcmlwdCAmJiBuYW1lcy5kb21haW4gJiYg
IXNlbGVjdC5kb21haW5PcHRpb25zW25hbWVzLmRvbWFpbl0pIHsKICAgICAgICAgICAgIHZhciBk
b21haW5PcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKLSAgICAgICAg
ICAgIGRvbWFpbk9wdGlvbi50ZXh0ID0gIlx1MjAxNCAiICsgZG9tYWluICsgIiBcdTIwMTQiOwot
ICAgICAgICAgICAgZG9tYWluT3B0aW9uLm5hbWVGb3JTb3J0aW5nID0gIjA6IiArIGRvbWFpbjsK
KyAgICAgICAgICAgIGRvbWFpbk9wdGlvbi50ZXh0ID0gIlx1MjAxNCAiICsgbmFtZXMuZG9tYWlu
ICsgIiBcdTIwMTQiOworICAgICAgICAgICAgZG9tYWluT3B0aW9uLm5hbWVGb3JTb3J0aW5nID0g
IjA6IiArIG5hbWVzLmRvbWFpbjsKICAgICAgICAgICAgIGRvbWFpbk9wdGlvbi5kaXNhYmxlZCA9
IHRydWU7Ci0gICAgICAgICAgICBzZWxlY3QuZG9tYWluT3B0aW9uc1tkb21haW5dID0gZG9tYWlu
T3B0aW9uOworICAgICAgICAgICAgc2VsZWN0LmRvbWFpbk9wdGlvbnNbbmFtZXMuZG9tYWluXSA9
IGRvbWFpbk9wdGlvbjsKICAgICAgICAgICAgIGluc2VydE9yZGVyZWQoZG9tYWluT3B0aW9uKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmIChzaG93U2NyaXB0Rm9sZGVycyAmJiBmb2xkZXJOYW1l
ICYmICFzZWxlY3QuZm9sZGVyT3B0aW9uc1tmb2xkZXJOYW1lRm9yU29ydGluZ10pIHsKKyAgICAg
ICAgaWYgKHNob3dTY3JpcHRGb2xkZXJzICYmIG5hbWVzLmZvbGRlck5hbWUgJiYgIXNlbGVjdC5m
b2xkZXJPcHRpb25zW2ZvbGRlck5hbWVGb3JTb3J0aW5nXSkgewogICAgICAgICAgICAgdmFyIGZv
bGRlck9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOwotICAgICAgICAg
ICAgZm9sZGVyT3B0aW9uLnRleHQgPSBmb2xkZXJOYW1lOworICAgICAgICAgICAgZm9sZGVyT3B0
aW9uLnRleHQgPSBuYW1lcy5mb2xkZXJOYW1lOwogICAgICAgICAgICAgZm9sZGVyT3B0aW9uLm5h
bWVGb3JTb3J0aW5nID0gZm9sZGVyTmFtZUZvclNvcnRpbmc7CiAgICAgICAgICAgICBmb2xkZXJP
cHRpb24uZGlzYWJsZWQgPSB0cnVlOwogICAgICAgICAgICAgc2VsZWN0LmZvbGRlck9wdGlvbnNb
Zm9sZGVyTmFtZUZvclNvcnRpbmddID0gZm9sZGVyT3B0aW9uOwpAQCAtMzYwLDEwICszMzAsMzQg
QEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHVpU291
cmNlQ29kZS5fb3B0aW9uID0gb3B0aW9uOwogICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFy
YW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQotICAgICAqIEBwYXJh
bSB7Ym9vbGVhbn0gaW5FZGl0TW9kZQotICAgICAqLworICAgIGZvbGRlckFuZERpc3BsYXlOYW1l
Rm9yU2NyaXB0VVJMOiBmdW5jdGlvbih1cmwpCisgICAgeworICAgICAgICB2YXIgcGFyc2VkVVJM
ID0gdXJsLmFzUGFyc2VkVVJMKCk7CisgICAgICAgIGlmIChwYXJzZWRVUkwpCisgICAgICAgICAg
ICB1cmwgPSBwYXJzZWRVUkwucGF0aDsKKworICAgICAgICB2YXIgZm9sZGVyTmFtZSA9ICIiOwor
ICAgICAgICB2YXIgZGlzcGxheU5hbWUgPSB1cmw7CisKKyAgICAgICAgdmFyIHBhdGhMZW5ndGgg
PSBkaXNwbGF5TmFtZS5pbmRleE9mKCI/Iik7CisgICAgICAgIGlmIChwYXRoTGVuZ3RoID09PSAt
MSkKKyAgICAgICAgICAgIHBhdGhMZW5ndGggPSBkaXNwbGF5TmFtZS5sZW5ndGg7CisKKyAgICAg
ICAgdmFyIGZyb21JbmRleCA9IGRpc3BsYXlOYW1lLmxhc3RJbmRleE9mKCIvIiwgcGF0aExlbmd0
aCAtIDIpOworICAgICAgICBpZiAoZnJvbUluZGV4ICE9PSAtMSkgeworICAgICAgICAgICAgZm9s
ZGVyTmFtZSA9IGRpc3BsYXlOYW1lLnN1YnN0cmluZygwLCBmcm9tSW5kZXgpOworICAgICAgICAg
ICAgZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZS5zdWJzdHJpbmcoZnJvbUluZGV4ICsgMSk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoZGlzcGxheU5hbWUubGVuZ3RoID4gODApCisgICAgICAg
ICAgICBkaXNwbGF5TmFtZSA9ICJcdTIwMjYiICsgZGlzcGxheU5hbWUuc3Vic3RyaW5nKGRpc3Bs
YXlOYW1lLmxlbmd0aCAtIDgwKTsKKworICAgICAgICBpZiAoZm9sZGVyTmFtZS5sZW5ndGggPiA4
MCkKKyAgICAgICAgICAgIGZvbGRlck5hbWUgPSAiXHUyMDI2IiArIGZvbGRlck5hbWUuc3Vic3Ry
aW5nKGZvbGRlck5hbWUubGVuZ3RoIC0gODApOworCisgICAgICAgIHJldHVybiB7IGRvbWFpbjog
KHBhcnNlZFVSTCA/IHBhcnNlZFVSTC5ob3N0IDogIiIpLCBmb2xkZXJOYW1lOiBmb2xkZXJOYW1l
LCBkaXNwbGF5TmFtZTogZGlzcGxheU5hbWUgfTsKKyAgICB9LAorCiAgICAgc2V0U2NyaXB0U291
cmNlSXNCZWluZ0VkaXRlZDogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBpbkVkaXRNb2RlKQogICAg
IHsKICAgICAgICAgdmFyIG9wdGlvbiA9IHVpU291cmNlQ29kZS5fb3B0aW9uOwpAQCAtNTExLDgg
KzUwNSw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAg
ICB0aGlzLl91cGRhdGVCYWNrQW5kRm9yd2FyZEJ1dHRvbnMoKTsKIAogICAgICAgICB0aGlzLl9y
ZXNldEZpbGVzU2VsZWN0KCk7Ci0KLSAgICAgICAgZGVsZXRlIHRoaXMuX2luaXRpYWxWaWV3U2Vs
ZWN0aW9uUHJvY2Vzc2VkOworICAgICAgICBkZWxldGUgdGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50
LmluaXRpYWxTZWxlY3Rpb25Qcm9jZXNzZWQ7CiAKICAgICAgICAgdGhpcy5mdW5jdGlvbnNTZWxl
Y3RFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAgICAgICAgIHRoaXMudmlzaWJsZVZpZXcgPSBu
dWxsOwpAQCAtNTcyLDEwICs1NjUsNiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5fc2hvd1NvdXJjZUxpbmUodWlMb2NhdGlvbi51aVNvdXJj
ZUNvZGUsIHVpTG9jYXRpb24ubGluZU51bWJlcik7CiAgICAgfSwKIAotICAgIC8qKgotICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCi0gICAgICog
QHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIKLSAgICAgKi8KICAgICBfc2hvd1NvdXJjZUxpbmU6
IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgbGluZU51bWJlcikKICAgICB7CiAgICAgICAgIHZhciBz
b3VyY2VGcmFtZSA9IHRoaXMuX3Nob3dTb3VyY2VGcmFtZUFuZEFkZFRvSGlzdG9yeSh1aVNvdXJj
ZUNvZGUpOwpAQCAtNTgzLDkgKzU3Miw2IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICAgICAgc291cmNlRnJhbWUuaGlnaGxpZ2h0TGluZShsaW5lTnVt
YmVyKTsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlT
b3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKLSAgICAgKi8KICAgICBfc2hvd1NvdXJjZUZyYW1lQW5k
QWRkVG9IaXN0b3J5OiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCiAgICAgewogICAgICAgICBpZiAo
IXVpU291cmNlQ29kZS5fb3B0aW9uKQpAQCAtNjExLDEzICs1OTcsOCBAQCBXZWJJbnNwZWN0b3Iu
U2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHNvdXJjZUZyYW1lOwog
ICAgIH0sCiAKLSAgICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNv
ZGV9IHVpU291cmNlQ29kZQotICAgICAqLwogICAgIF9zaG93U291cmNlRnJhbWU6IGZ1bmN0aW9u
KHVpU291cmNlQ29kZSkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9uYXZpZ2F0b3IpCi0gICAg
ICAgICAgICB0aGlzLl9uYXZpZ2F0b3IucmV2ZWFsVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7
CiAgICAgICAgIHRoaXMuX2ZpbGVzU2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4ID0gdWlTb3Vy
Y2VDb2RlLl9vcHRpb24uaW5kZXg7CiAKICAgICAgICAgdmFyIHNvdXJjZUZyYW1lID0gdWlTb3Vy
Y2VDb2RlLl9zb3VyY2VGcmFtZSB8fCB0aGlzLl9jcmVhdGVTb3VyY2VGcmFtZSh1aVNvdXJjZUNv
ZGUpOwpAQCAtNjI5LDkgKzYxMCw2IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICByZXR1cm4gc291cmNlRnJhbWU7CiAgICAgfSwKIAotICAgIC8qKgot
ICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCi0g
ICAgICovCiAgICAgX2NyZWF0ZVNvdXJjZUZyYW1lOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCiAg
ICAgewogICAgICAgICB2YXIgc291cmNlRnJhbWUgPSBuZXcgV2ViSW5zcGVjdG9yLkphdmFTY3Jp
cHRTb3VyY2VGcmFtZSh0aGlzLCB0aGlzLl9wcmVzZW50YXRpb25Nb2RlbCwgdWlTb3VyY2VDb2Rl
KTsKQEAgLTY0MiwxNCArNjIwLDggQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5
cGUgPSB7CiAgICAgICAgIHJldHVybiBzb3VyY2VGcmFtZTsKICAgICB9LAogCi0gICAgLyoqCi0g
ICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKLSAg
ICAgKi8KICAgICBfcmVtb3ZlU291cmNlRnJhbWU6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkKICAg
ICB7Ci0gICAgICAgIGlmICh0aGlzLl9uYXZpZ2F0b3IpCi0gICAgICAgICAgICB0aGlzLl9uYXZp
Z2F0b3IucmVtb3ZlVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7Ci0gICAgICAgIAogICAgICAg
ICB2YXIgb3B0aW9uID0gdWlTb3VyY2VDb2RlLl9vcHRpb247CiAgICAgICAgIC8vIEZJWE1FOiBm
aW5kIG91dCB3aHkgd2UgYXJlIGdldHRpbmcgaGVyZSB3aXRoIG9wdGlvbiBkZXRhY2hlZC4KICAg
ICAgICAgaWYgKG9wdGlvbiAmJiB0aGlzLl9maWxlc1NlbGVjdEVsZW1lbnQgPT09IG9wdGlvbi5w
YXJlbnRFbGVtZW50KQpAQCAtNjYzLDEzICs2MzUsMTAgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQ
YW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHNvdXJjZUZyYW1lLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLkV2ZW50cy5Mb2FkZWQsIHRoaXMuX3NvdXJjZUZy
YW1lTG9hZGVkLCB0aGlzKTsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtFdmVu
dH0gZXZlbnQKLSAgICAgKi8KICAgICBfdWlTb3VyY2VDb2RlUmVwbGFjZWQ6IGZ1bmN0aW9uKGV2
ZW50KQogICAgIHsKLSAgICAgICAgdmFyIG9sZFVJU291cmNlQ29kZUxpc3QgPSAvKiogQHR5cGUg
e0FycmF5LjxXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlPn0gKi8gZXZlbnQuZGF0YS5vbGRVSVNv
dXJjZUNvZGVMaXN0OwotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlTGlzdCA9IC8qKiBAdHlwZSB7
QXJyYXkuPFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fSAqLyBldmVudC5kYXRhLnVpU291cmNl
Q29kZUxpc3Q7CisgICAgICAgIHZhciBvbGRVSVNvdXJjZUNvZGVMaXN0ID0gZXZlbnQuZGF0YS5v
bGRVSVNvdXJjZUNvZGVMaXN0OworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlTGlzdCA9IGV2ZW50
LmRhdGEudWlTb3VyY2VDb2RlTGlzdDsKIAogICAgICAgICB2YXIgdmlzaWJsZSA9IGZhbHNlOwog
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9sZFVJU291cmNlQ29kZUxpc3QubGVuZ3RoOyAr
K2kpIHsKQEAgLTY4OCw3ICs2NTcsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3Rv
dHlwZSA9IHsKIAogICAgIF9zb3VyY2VGcmFtZUxvYWRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAg
ewotICAgICAgICB2YXIgc291cmNlRnJhbWUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5KYXZh
U2NyaXB0U291cmNlRnJhbWV9ICovIGV2ZW50LnRhcmdldDsKKyAgICAgICAgdmFyIHNvdXJjZUZy
YW1lID0gZXZlbnQudGFyZ2V0OwogICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gc291cmNlRnJh
bWUuX3VpU291cmNlQ29kZTsKIAogICAgICAgICB2YXIgbWVzc2FnZXMgPSB0aGlzLl9wcmVzZW50
YXRpb25Nb2RlbC5tZXNzYWdlc0ZvclVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUpOwpAQCAtNzI2
LDkgKzY5NSw2IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogCiAg
ICAgICAgIGlmICghdWlMb2NhdGlvbi51aVNvdXJjZUNvZGUuX29wdGlvbikgewogICAgICAgICAg
ICAgLy8gQW5vbnltb3VzIHNjcmlwdHMgYXJlIG5vdCBhZGRlZCB0byBmaWxlcyBzZWxlY3QgYnkg
ZGVmYXVsdC4KLSAgICAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWx3YXlzIGFkZCBhbm9u
eW1vdXMgc2NyaXB0cyB0byBuYXZpZ2F0b3IgKGluIGEgc2VwYXJhdGUgZm9sZGVyIHRyZWUgZWxl
bWVudCkKLSAgICAgICAgICAgIGlmICh0aGlzLl9uYXZpZ2F0b3IpCi0gICAgICAgICAgICAgICAg
dGhpcy5fbmF2aWdhdG9yLmFkZFVJU291cmNlQ29kZSh1aUxvY2F0aW9uLnVpU291cmNlQ29kZSk7
CiAgICAgICAgICAgICB0aGlzLl9hZGRPcHRpb25Ub0ZpbGVzU2VsZWN0KHVpTG9jYXRpb24udWlT
b3VyY2VDb2RlKTsKICAgICAgICAgfQogICAgICAgICB2YXIgc291cmNlRnJhbWUgPSB0aGlzLl9z
aG93U291cmNlRnJhbWVBbmRBZGRUb0hpc3RvcnkodWlMb2NhdGlvbi51aVNvdXJjZUNvZGUpOwpA
QCAtNzU0LDEyICs3MjAsNiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5fdXBkYXRlRXhlY3V0aW9uTGluZSh0aGlzLl9wcmVzZW50YXRpb25N
b2RlbC5leGVjdXRpb25MaW5lTG9jYXRpb24pOwogICAgIH0sCiAKLSAgICBfc2NyaXB0U2VsZWN0
ZWRJbk5hdmlnYXRvcjogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAgICB2YXIgdWlTb3Vy
Y2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyBldmVudC5k
YXRhOwotICAgICAgICB0aGlzLl9zaG93U291cmNlRnJhbWVBbmRBZGRUb0hpc3RvcnkodWlTb3Vy
Y2VDb2RlKTsKLSAgICB9LAotCiAgICAgX2ZpbGVzU2VsZWN0Q2hhbmdlZDogZnVuY3Rpb24oZm9j
dXNTb3VyY2UpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50LnNl
bGVjdGVkSW5kZXggPT09IC0xKQpAQCAtMTA0MCw3ICsxMDAwLDcgQEAgV2ViSW5zcGVjdG9yLlNj
cmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciBkZWJ1Z1Rvb2xiYXIgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgZGVidWdUb29sYmFyLmNsYXNzTmFt
ZSA9ICJzdGF0dXMtYmFyIjsKICAgICAgICAgZGVidWdUb29sYmFyLmlkID0gInNjcmlwdHMtZGVi
dWctdG9vbGJhciI7Ci0KKyAgICAgICAgCiAgICAgICAgIHZhciB0aXRsZSwgaGFuZGxlciwgc2hv
cnRjdXRzOwogICAgICAgICB2YXIgcGxhdGZvcm1TcGVjaWZpY01vZGlmaWVyID0gV2ViSW5zcGVj
dG9yLktleWJvYXJkU2hvcnRjdXQuTW9kaWZpZXJzLkN0cmxPck1ldGE7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IDZiOTM0MjUuLmZj
NDY0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0
dGluZ3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5n
cy5qcwpAQCAtNDIsOSArNDIsNyBAQCB2YXIgUHJlZmVyZW5jZXMgPSB7CiAgICAgbG9jYWxpemVV
STogdHJ1ZSwKICAgICBleHBvc2VEaXNhYmxlQ2FjaGU6IGZhbHNlLAogICAgIGV4cG9zZVdvcmtl
cnNJbnNwZWN0aW9uOiBmYWxzZSwKLSAgICBhcHBsaWNhdGlvblRpdGxlOiAiV2ViIEluc3BlY3Rv
ciAtICVzIiwKLSAgICAvLyBGSVhNRTogUmVtb3ZlIG9uY2UgbmF2aWdhdG9yIGlzIHByb2R1Y3Rp
b24tcmVhZHkuCi0gICAgdXNlU2NyaXB0TmF2aWdhdG9yOiBmYWxzZQorICAgIGFwcGxpY2F0aW9u
VGl0bGU6ICJXZWIgSW5zcGVjdG9yIC0gJXMiCiB9CiAKIHZhciBDYXBhYmlsaXRpZXMgPSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RhYmJlZFBhbmUu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1RhYmJlZFBhbmUuanMKaW5k
ZXggMzUxOGYwYy4uYmUyYzhjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9UYWJiZWRQYW5lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvVGFiYmVkUGFuZS5qcwpAQCAtNTAsNyArNTAsNyBAQCBXZWJJbnNwZWN0b3IuVGFi
YmVkUGFuZS5wcm90b3R5cGUgPSB7CiAKICAgICAgICAgdGhpcy5fdGFic0VsZW1lbnQuYXBwZW5k
Q2hpbGQodGFiRWxlbWVudCk7CiAKLSAgICAgICAgdGhpcy5fdGFic1tpZF0gPSB7IGlkOiBpZCwg
dGFiRWxlbWVudDogdGFiRWxlbWVudCwgdmlldzogdmlldyB9OworICAgICAgICB0aGlzLl90YWJz
W2lkXSA9IHsgdGFiRWxlbWVudDogdGFiRWxlbWVudCwgdmlldzogdmlldyB9OwogICAgIH0sCiAK
ICAgICAvKioKQEAgLTYyLDggKzYyLDYgQEAgV2ViSW5zcGVjdG9yLlRhYmJlZFBhbmUucHJvdG90
eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIGlmICh0aGlzLl9j
dXJyZW50VGFiKSB7Ci0gICAgICAgICAgICBpZiAodGhpcy5fY3VycmVudFRhYi5pZCA9PT0gaWQp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgdGhpcy5faGlkZVRhYih0aGlz
Ll9jdXJyZW50VGFiKQogICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2N1cnJlbnRUYWI7CiAgICAg
ICAgIH0KQEAgLTk3LDE0ICs5NSw2IEBAIFdlYkluc3BlY3Rvci5UYWJiZWRQYW5lLnByb3RvdHlw
ZSA9IHsKICAgICB7CiAgICAgICAgIGlmICh0aGlzLmNhbkhpZ2hsaWdodExpbmUoKSkKICAgICAg
ICAgICAgIHRoaXMuX2N1cnJlbnRUYWIudmlldy5oaWdobGlnaHRMaW5lKGxpbmUpOwotICAgIH0s
Ci0KLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIHtBcnJheS48RWxlbWVudD59Ci0gICAgICovCi0g
ICAgZWxlbWVudHNUb1Jlc3RvcmVTY3JvbGxQb3NpdGlvbnNGb3I6IGZ1bmN0aW9uKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiBbIHRoaXMuX2NvbnRlbnRFbGVtZW50IF07CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1VJU291cmNlQ29k
ZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2RlLmpz
CmluZGV4IGNmMWVjYzIuLjZhZjA5N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2RlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvVUlTb3VyY2VDb2RlLmpzCkBAIC0xMjQsNjggKzEyNCw2IEBAIFdlYklu
c3BlY3Rvci5VSVNvdXJjZUNvZGUucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKLSAg
ICAgKiBAdHlwZSB7c3RyaW5nfQotICAgICAqLwotICAgIGdldCBkb21haW4oKQotICAgIHsKLSAg
ICAgICAgaWYgKCF0aGlzLl9kb21haW4pCi0gICAgICAgICAgICB0aGlzLl9wYXJzZVVSTCgpOwot
ICAgICAgICAKLSAgICAgICAgcmV0dXJuIHRoaXMuX2RvbWFpbjsKLSAgICB9LAotICAgIAotICAg
IC8qKgotICAgICAqIEB0eXBlIHtzdHJpbmd9Ci0gICAgICovCi0gICAgZ2V0IGZvbGRlck5hbWUo
KQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9mb2xkZXJOYW1lKQotICAgICAgICAgICAgdGhp
cy5fcGFyc2VVUkwoKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiB0aGlzLl9mb2xkZXJOYW1l
OwotICAgIH0sCi0gICAgCi0gICAgLyoqCi0gICAgICogQHR5cGUge3N0cmluZ30KLSAgICAgKi8K
LSAgICBnZXQgZGlzcGxheU5hbWUoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9kaXNwbGF5
TmFtZSkKLSAgICAgICAgICAgIHRoaXMuX3BhcnNlVVJMKCk7Ci0gICAgICAgIAotICAgICAgICBy
ZXR1cm4gdGhpcy5fZGlzcGxheU5hbWU7Ci0gICAgfSwKLSAgICAKLSAgICBfcGFyc2VVUkw6IGZ1
bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBwYXJzZWRVUkwgPSB0aGlzLnVybC5hc1BhcnNl
ZFVSTCgpOwotICAgICAgICB2YXIgdXJsID0gcGFyc2VkVVJMID8gcGFyc2VkVVJMLnBhdGggOiB0
aGlzLnVybDsKLQotICAgICAgICB2YXIgZm9sZGVyTmFtZSA9ICIiOwotICAgICAgICB2YXIgZGlz
cGxheU5hbWUgPSB1cmw7Ci0KLSAgICAgICAgdmFyIHBhdGhMZW5ndGggPSBkaXNwbGF5TmFtZS5p
bmRleE9mKCI/Iik7Ci0gICAgICAgIGlmIChwYXRoTGVuZ3RoID09PSAtMSkKLSAgICAgICAgICAg
IHBhdGhMZW5ndGggPSBkaXNwbGF5TmFtZS5sZW5ndGg7Ci0KLSAgICAgICAgdmFyIGZyb21JbmRl
eCA9IGRpc3BsYXlOYW1lLmxhc3RJbmRleE9mKCIvIiwgcGF0aExlbmd0aCAtIDIpOwotICAgICAg
ICBpZiAoZnJvbUluZGV4ICE9PSAtMSkgewotICAgICAgICAgICAgZm9sZGVyTmFtZSA9IGRpc3Bs
YXlOYW1lLnN1YnN0cmluZygwLCBmcm9tSW5kZXgpOwotICAgICAgICAgICAgZGlzcGxheU5hbWUg
PSBkaXNwbGF5TmFtZS5zdWJzdHJpbmcoZnJvbUluZGV4ICsgMSk7Ci0gICAgICAgIH0KLQotICAg
ICAgICBpZiAoZGlzcGxheU5hbWUubGVuZ3RoID4gODApCi0gICAgICAgICAgICBkaXNwbGF5TmFt
ZSA9ICJcdTIwMjYiICsgZGlzcGxheU5hbWUuc3Vic3RyaW5nKGRpc3BsYXlOYW1lLmxlbmd0aCAt
IDgwKTsKLQotICAgICAgICBpZiAoZm9sZGVyTmFtZS5sZW5ndGggPiA4MCkKLSAgICAgICAgICAg
IGZvbGRlck5hbWUgPSAiXHUyMDI2IiArIGZvbGRlck5hbWUuc3Vic3RyaW5nKGZvbGRlck5hbWUu
bGVuZ3RoIC0gODApOwotCi0gICAgICAgIHRoaXMuX2RvbWFpbiA9IHBhcnNlZFVSTCA/IHBhcnNl
ZFVSTC5ob3N0IDogIiI7Ci0gICAgICAgIHRoaXMuX2ZvbGRlck5hbWUgPSBmb2xkZXJOYW1lOwot
ICAgICAgICB0aGlzLl9kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lOwotICAgIH0sCi0KLSAgICAv
KioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gbWltZVR5cGUKICAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gY29udGVudAogICAgICAqLwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9XZWJLaXQucXJjIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9XZWJLaXQucXJjCmluZGV4IDU4NzRkOTYuLjU0NWYxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKQEAgLTExMiw3ICsxMTIsNiBAQAogICAg
IDxmaWxlPlNjcmlwdEZvcm1hdHRlci5qczwvZmlsZT4KICAgICA8ZmlsZT5TY3JpcHRGb3JtYXR0
ZXJXb3JrZXIuanM8L2ZpbGU+CiAgICAgPGZpbGU+U2NyaXB0c1BhbmVsLmpzPC9maWxlPgotICAg
IDxmaWxlPlNjcmlwdHNOYXZpZ2F0b3IuanM8L2ZpbGU+CiAgICAgPGZpbGU+U2NyaXB0c1NlYXJj
aFNjb3BlLmpzPC9maWxlPgogICAgIDxmaWxlPlNlYXJjaENvbnRyb2xsZXIuanM8L2ZpbGU+CiAg
ICAgPGZpbGU+U2VjdGlvbi5qczwvZmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwppbmRleCAxMDBlMmY2Li5kYTVjYTNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCkBAIC0x
Njc3LDE0ICsxNjc3LDEyIEBAIGJ1dHRvbi5lZGl0LXNvdXJjZS1zdGF0dXMtYmFyLWl0ZW0udG9n
Z2xlZC1vbiAuZ2x5cGggewogCiAudGFiYmVkLXBhbmUgewogICAgIC13ZWJraXQtYm94LW9yaWVu
dDogdmVydGljYWw7Ci0gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7CiAgICAgaGVpZ2h0OiAxMDAl
OwogfQogCiAudGFiYmVkLXBhbmUtY29udGVudCB7CiAgICAgLXdlYmtpdC1ib3gtZmxleDogMTsK
ICAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0gICAgb3ZlcmZsb3c6IGF1dG87CiB9CiAKIC50YWJi
ZWQtcGFuZS1oZWFkZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmh0bWwKaW5kZXggNjIzNGE0Ni4uMjM0ZWE3ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xMTUsNyAr
MTE1LDYgQEAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSJSZXNvdXJjZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBzcmM9IkphdmFTY3JpcHRTb3VyY2VGcmFtZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU3BsaXRWaWV3LmpzIj48L3NjcmlwdD4K
LSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTY3JpcHRzTmF2aWdhdG9y
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJT
Y3JpcHRzUGFuZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBzcmM9IlJlc291cmNlc1BhbmVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgc3JjPSJQcm9maWxlc1BhbmVsLmpzIj48L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvbmV0d29ya1BhbmVsLmNz
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvbmV0d29ya1BhbmVsLmNzcwpp
bmRleCBkYzQ5NWZmLi44ODUwNGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL25ldHdvcmtQYW5lbC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9uZXR3b3JrUGFuZWwuY3NzCkBAIC0xMTEsNyArMTExLDEyIEBACiAgICAg
Ym90dG9tOiAwOwogfQogCisubmV0d29yay1pdGVtLXZpZXcudmlzaWJsZSB7CisgICAgZGlzcGxh
eTogLXdlYmtpdC1ib3g7Cit9CisKIC5uZXR3b3JrLWl0ZW0tdmlldyAudGFiYmVkLXBhbmUtaGVh
ZGVyIHsKKyAgICBoZWlnaHQ6IDIwcHg7CiAgICAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVu
dChsaW5lYXIsIDAlIDAlLCAwJSAxMDAlLCBmcm9tKHJnYigyMzYsIDIzNiwgMjM2KSksIHRvKHJn
YigyMTcsIDIxNywgMjE3KSkpOwogICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2IoMTYz
LCAxNjMsIDE2Myk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL3NjcmlwdHNQYW5lbC5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL3NjcmlwdHNQYW5lbC5jc3MKaW5kZXggMTI3NzA1My4uZjFhMWZhZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9zY3JpcHRzUGFuZWwuY3NzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvc2NyaXB0c1BhbmVsLmNzcwpAQCAt
MTMyLDE4ICsxMzIsNiBAQAogICAgIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjsKIH0KIAot
I3NjcmlwdHMtbmF2aWdhdG9yLXJlc2l6ZXItd2lkZ2V0IHsKLSAgICBwb3NpdGlvbjogYWJzb2x1
dGU7Ci0gICAgdG9wOiAwOwotICAgIHJpZ2h0OiAwOwotICAgIGhlaWdodDogMjRweDsKLSAgICB3
aWR0aDogMTZweDsKLSAgICBjdXJzb3I6IGV3LXJlc2l6ZTsKLSAgICBiYWNrZ3JvdW5kLWltYWdl
OiB1cmwoSW1hZ2VzL3N0YXR1c2JhclJlc2l6ZXJIb3Jpem9udGFsLnBuZyk7Ci0gICAgYmFja2dy
b3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKLSAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7
Ci19Ci0KIC5zY3JpcHQtdmlldyB7CiAgICAgZGlzcGxheTogbm9uZTsKICAgICBvdmVyZmxvdzog
aGlkZGVuOwpAQCAtMTcxLDYwICsxNTksMyBAQAogICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAg
ICB0b3A6IDJweDsKIH0KLQotLnNjcmlwdHMtbmF2aWdhdG9yLWRvbWFpbi10cmVlLWl0ZW0gLmlj
b24gewotICAgIGNvbnRlbnQ6IHVybChJbWFnZXMvZG9tYWluLnBuZyk7Ci19Ci0KLS5zY3JpcHRz
LW5hdmlnYXRvci1mb2xkZXItdHJlZS1pdGVtIC5pY29uIHsKLSAgICBvcGFjaXR5OiAwLjc7Ci0g
ICAgY29udGVudDogdXJsKEltYWdlcy9mcmFtZS5wbmcpOwotfQotCi0uc2NyaXB0cy1uYXZpZ2F0
b3Itc2NyaXB0LXRyZWUtaXRlbSAuaWNvbiB7Ci0gICAgY29udGVudDogdXJsKEltYWdlcy9yZXNv
dXJjZUpTSWNvbi5wbmcpOwotfQotCi0uc2NyaXB0cy5wYW5lbCAubmF2aWdhdG9yIHsKLSAgICBw
YWRkaW5nLWxlZnQ6IDA7Ci19Ci0KLSNzY3JpcHRzLW5hdmlnYXRvci10YWJiZWQtcGFuZSAudGFi
YmVkLXBhbmUtaGVhZGVyIHsKLSAgICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50
KGxpbmVhciwgMCUgMCUsIDAlIDEwMCUsIGZyb20oI0Y1RjVGNSksIHRvKCNFNUU1RTUpKTsKLX0K
LQotI3NjcmlwdHMtbmF2aWdhdG9yLXRhYmJlZC1wYW5lIC50YWJiZWQtcGFuZS1jb250ZW50IHsK
LSAgICBtYXJnaW4tdG9wOiAxcHg7Ci19Ci0KLS5zY3JpcHRzLnBhbmVsIC5uYXZpZ2F0b3IgbGkg
ewotICAgIGhlaWdodDogMTdweDsKLSAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwotfQotCi0uc2Ny
aXB0cy5wYW5lbCAubmF2aWdhdG9yIDpmb2N1cyBsaS5zZWxlY3RlZCB7Ci0gICAgY29sb3I6IHdo
aXRlOwotfQotCi0uc2NyaXB0cy5wYW5lbCAubmF2aWdhdG9yIGxpLnNlbGVjdGVkIC5zZWxlY3Rp
b24gewotICAgIGhlaWdodDogMTdweDsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTgwLCAx
ODAsIDE4MCk7Ci19Ci0KLS5zY3JpcHRzLnBhbmVsIC5uYXZpZ2F0b3IgOmZvY3VzIGxpLnNlbGVj
dGVkIC5zZWxlY3Rpb24gewotICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxMTEsIDE0MCwgMjEw
KTsKLX0KLQotLnNjcmlwdHMucGFuZWwgLm5hdmlnYXRvciAuaWNvbiB7Ci0gICAgd2lkdGg6IDE2
cHg7Ci0gICAgaGVpZ2h0OiAxNnB4OwotICAgIGZsb2F0OiBsZWZ0OwotfQotCi0uc2NyaXB0cy5w
YW5lbCAuYmFzZS1uYXZpZ2F0b3ItdHJlZS1lbGVtZW50LXRpdGxlIHsKLSAgICBvdmVyZmxvdzog
aGlkZGVuOwotICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwotICAgIHBvc2l0aW9uOiByZWxh
dGl2ZTsKLSAgICBwYWRkaW5nLWxlZnQ6IDJweDsKLSAgICB0b3A6IDFweDsKLX0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdHJlZW91dGxpbmUuanMgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3RyZWVvdXRsaW5lLmpzCmluZGV4IGJm
N2MwOWEuLjI3NmNjZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvdHJlZW91dGxpbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC90cmVlb3V0bGluZS5qcwpAQCAtNDQsNyArNDQsNiBAQCBmdW5jdGlvbiBUcmVlT3V0bGlu
ZShsaXN0Tm9kZSkKICAgICB0aGlzLmV4cGFuZGVkID0gdHJ1ZTsKICAgICB0aGlzLnNlbGVjdGVk
ID0gZmFsc2U7CiAgICAgdGhpcy50cmVlT3V0bGluZSA9IHRoaXM7Ci0gICAgdGhpcy5jb21wYXJh
dG9yID0gbnVsbDsKIAogICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUudGFiSW5kZXggPSAwOwog
ICAgIHRoaXMuX2NoaWxkcmVuTGlzdE5vZGUuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRo
aXMuX3RyZWVLZXlEb3duLmJpbmQodGhpcyksIHRydWUpOwpAQCAtNTUsMTIgKzU0LDQ1IEBAIGZ1
bmN0aW9uIFRyZWVPdXRsaW5lKGxpc3ROb2RlKQogCiBUcmVlT3V0bGluZS5wcm90b3R5cGUuYXBw
ZW5kQ2hpbGQgPSBmdW5jdGlvbihjaGlsZCkKIHsKLSAgICB2YXIgaW5zZXJ0aW9uSW5kZXg7Ci0g
ICAgaWYgKHRoaXMudHJlZU91dGxpbmUuY29tcGFyYXRvcikKLSAgICAgICAgaW5zZXJ0aW9uSW5k
ZXggPSBpbnNlcnRpb25JbmRleEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24oY2hpbGQs
IHRoaXMuY2hpbGRyZW4sIHRoaXMudHJlZU91dGxpbmUuY29tcGFyYXRvcik7Ci0gICAgZWxzZQot
ICAgICAgICBpbnNlcnRpb25JbmRleCA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOwotICAgIHRoaXMu
aW5zZXJ0Q2hpbGQoY2hpbGQsIGluc2VydGlvbkluZGV4KTsKKyAgICBpZiAoIWNoaWxkKQorICAg
ICAgICB0aHJvdygiY2hpbGQgY2FuJ3QgYmUgdW5kZWZpbmVkIG9yIG51bGwiKTsKKworICAgIHZh
ciBsYXN0Q2hpbGQgPSB0aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoIC0gMV07Cisg
ICAgaWYgKGxhc3RDaGlsZCkgeworICAgICAgICBsYXN0Q2hpbGQubmV4dFNpYmxpbmcgPSBjaGls
ZDsKKyAgICAgICAgY2hpbGQucHJldmlvdXNTaWJsaW5nID0gbGFzdENoaWxkOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGNoaWxkLnByZXZpb3VzU2libGluZyA9IG51bGw7CisgICAgICAgIGNoaWxk
Lm5leHRTaWJsaW5nID0gbnVsbDsKKyAgICB9CisKKyAgICB0aGlzLmNoaWxkcmVuLnB1c2goY2hp
bGQpOworICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSB0cnVlOworICAgIGNoaWxkLnBhcmVudCA9IHRo
aXM7CisgICAgY2hpbGQudHJlZU91dGxpbmUgPSB0aGlzLnRyZWVPdXRsaW5lOworICAgIGNoaWxk
LnRyZWVPdXRsaW5lLl9yZW1lbWJlclRyZWVFbGVtZW50KGNoaWxkKTsKKworICAgIHZhciBjdXJy
ZW50ID0gY2hpbGQuY2hpbGRyZW5bMF07CisgICAgd2hpbGUgKGN1cnJlbnQpIHsKKyAgICAgICAg
Y3VycmVudC50cmVlT3V0bGluZSA9IHRoaXMudHJlZU91dGxpbmU7CisgICAgICAgIGN1cnJlbnQu
dHJlZU91dGxpbmUuX3JlbWVtYmVyVHJlZUVsZW1lbnQoY3VycmVudCk7CisgICAgICAgIGN1cnJl
bnQgPSBjdXJyZW50LnRyYXZlcnNlTmV4dFRyZWVFbGVtZW50KGZhbHNlLCBjaGlsZCwgdHJ1ZSk7
CisgICAgfQorCisgICAgY2hpbGQuZXhwYW5kZWQgPSBjaGlsZC5oYXNDaGlsZHJlbiAmJiAhIWNo
aWxkLnRyZWVPdXRsaW5lLl9leHBhbmRlZFN0YXRlTWFwLmdldChjaGlsZC5yZXByZXNlbnRlZE9i
amVjdCk7CisKKyAgICBpZiAoIXRoaXMuX2NoaWxkcmVuTGlzdE5vZGUpIHsKKyAgICAgICAgdGhp
cy5fY2hpbGRyZW5MaXN0Tm9kZSA9IHRoaXMudHJlZU91dGxpbmUuX2NoaWxkcmVuTGlzdE5vZGUu
b3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvbCIpOworICAgICAgICB0aGlzLl9jaGlsZHJl
bkxpc3ROb2RlLnBhcmVudFRyZWVFbGVtZW50ID0gdGhpczsKKyAgICAgICAgdGhpcy5fY2hpbGRy
ZW5MaXN0Tm9kZS5jbGFzc0xpc3QuYWRkKCJjaGlsZHJlbiIpOworICAgICAgICBpZiAodGhpcy5o
aWRkZW4pCisgICAgICAgICAgICB0aGlzLl9jaGlsZHJlbkxpc3ROb2RlLmNsYXNzTGlzdC5hZGQo
ImhpZGRlbiIpOworICAgIH0KKworICAgIGNoaWxkLl9hdHRhY2goKTsKKworICAgIGlmICh0aGlz
LnRyZWVPdXRsaW5lLm9uYWRkKQorICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLm9uYWRkKGNoaWxk
KTsKIH0KIAogVHJlZU91dGxpbmUucHJvdG90eXBlLmluc2VydENoaWxkID0gZnVuY3Rpb24oY2hp
bGQsIGluZGV4KQpAQCAtOTcsOCArMTI5LDcgQEAgVHJlZU91dGxpbmUucHJvdG90eXBlLmluc2Vy
dENoaWxkID0gZnVuY3Rpb24oY2hpbGQsIGluZGV4KQogICAgICAgICBjdXJyZW50ID0gY3VycmVu
dC50cmF2ZXJzZU5leHRUcmVlRWxlbWVudChmYWxzZSwgY2hpbGQsIHRydWUpOwogICAgIH0KIAot
ICAgIGlmIChjaGlsZC5oYXNDaGlsZHJlbiAmJiB0eXBlb2YoY2hpbGQudHJlZU91dGxpbmUuX2V4
cGFuZGVkU3RhdGVNYXAuZ2V0KGNoaWxkLnJlcHJlc2VudGVkT2JqZWN0KSkgIT09ICJ1bmRlZmlu
ZWQiKQotICAgICAgICBjaGlsZC5leHBhbmRlZCA9IGNoaWxkLnRyZWVPdXRsaW5lLl9leHBhbmRl
ZFN0YXRlTWFwLmdldChjaGlsZC5yZXByZXNlbnRlZE9iamVjdCk7CisgICAgY2hpbGQuZXhwYW5k
ZWQgPSBjaGlsZC5oYXNDaGlsZHJlbiAmJiAhIWNoaWxkLnRyZWVPdXRsaW5lLl9leHBhbmRlZFN0
YXRlTWFwLmdldChjaGlsZC5yZXByZXNlbnRlZE9iamVjdCk7CiAKICAgICBpZiAoIXRoaXMuX2No
aWxkcmVuTGlzdE5vZGUpIHsKICAgICAgICAgdGhpcy5fY2hpbGRyZW5MaXN0Tm9kZSA9IHRoaXMu
dHJlZU91dGxpbmUuX2NoaWxkcmVuTGlzdE5vZGUub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJvbCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZFRp
bWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmNwcApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTJmNWVjYi4uMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkVGltaW5nLmNwcAorKysgL2Rldi9udWxsCkBA
IC0xLDkzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlLCBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFy
ZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBHT09HTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEdP
T0dMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkRvY3VtZW50TG9hZFRpbWlu
Zy5oIgotCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJEb2N1bWVudExvYWRlci5o
IgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCi0jaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLURvY3VtZW50TG9hZFRpbWluZzo6
RG9jdW1lbnRMb2FkVGltaW5nKCkKLSAgICA6IG1fcmVmZXJlbmNlTW9ub3RvbmljVGltZSgwLjAp
Ci0gICAgLCBtX3JlZmVyZW5jZVdhbGxUaW1lKDAuMCkKLSAgICAsIG1fbmF2aWdhdGlvblN0YXJ0
KDAuMCkKLSAgICAsIG1fdW5sb2FkRXZlbnRTdGFydCgwLjApCi0gICAgLCBtX3VubG9hZEV2ZW50
RW5kKDAuMCkKLSAgICAsIG1fcmVkaXJlY3RTdGFydCgwLjApCi0gICAgLCBtX3JlZGlyZWN0RW5k
KDAuMCkKLSAgICAsIG1fcmVkaXJlY3RDb3VudCgwKQotICAgICwgbV9mZXRjaFN0YXJ0KDAuMCkK
LSAgICAsIG1fcmVzcG9uc2VFbmQoMC4wKQotICAgICwgbV9sb2FkRXZlbnRTdGFydCgwLjApCi0g
ICAgLCBtX2xvYWRFdmVudEVuZCgwLjApCi0gICAgLCBtX2hhc0Nyb3NzT3JpZ2luUmVkaXJlY3Qo
ZmFsc2UpCi0gICAgLCBtX2hhc1NhbWVPcmlnaW5Bc1ByZXZpb3VzRG9jdW1lbnQoZmFsc2UpCi17
Ci19Ci0KLXZvaWQgRG9jdW1lbnRMb2FkVGltaW5nOjptYXJrTmF2aWdhdGlvblN0YXJ0KEZyYW1l
KiBmcmFtZSkKLXsKLSAgICBBU1NFUlQoZnJhbWUpOwotICAgIEFTU0VSVCghbV9uYXZpZ2F0aW9u
U3RhcnQgJiYgIW1fcmVmZXJlbmNlTW9ub3RvbmljVGltZSAmJiAhbV9yZWZlcmVuY2VXYWxsVGlt
ZSk7Ci0KLSAgICBpZiAoZnJhbWUtPnBhZ2UoKS0+bWFpbkZyYW1lKCkgPT0gZnJhbWUpIHsKLSAg
ICAgICAgbV9uYXZpZ2F0aW9uU3RhcnQgPSBtX3JlZmVyZW5jZU1vbm90b25pY1RpbWUgPSBtb25v
dG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKLSAgICAgICAgbV9yZWZlcmVuY2VXYWxsVGltZSA9
IGN1cnJlbnRUaW1lKCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgRG9jdW1lbnQqIHJvb3REb2N1
bWVudCA9IGZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpOwotICAgICAgICBB
U1NFUlQocm9vdERvY3VtZW50KTsKLSAgICAgICAgRG9jdW1lbnRMb2FkVGltaW5nKiByb290VGlt
aW5nID0gcm9vdERvY3VtZW50LT5sb2FkZXIoKS0+dGltaW5nKCk7Ci0gICAgICAgIG1fcmVmZXJl
bmNlTW9ub3RvbmljVGltZSA9IHJvb3RUaW1pbmctPm1fcmVmZXJlbmNlTW9ub3RvbmljVGltZTsK
LSAgICAgICAgbV9yZWZlcmVuY2VXYWxsVGltZSA9IHJvb3RUaW1pbmctPm1fcmVmZXJlbmNlV2Fs
bFRpbWU7Ci0gICAgICAgIG1fbmF2aWdhdGlvblN0YXJ0ID0gbW9ub3RvbmljYWxseUluY3JlYXNp
bmdUaW1lKCk7Ci0gICAgfQotfQotCi12b2lkIERvY3VtZW50TG9hZFRpbWluZzo6YWRkUmVkaXJl
Y3QoY29uc3QgS1VSTCYgcmVkaXJlY3RpbmdVcmwsIGNvbnN0IEtVUkwmIHJlZGlyZWN0ZWRVcmwp
Ci17Ci0gICAgbV9yZWRpcmVjdENvdW50Kys7Ci0gICAgaWYgKCFtX3JlZGlyZWN0U3RhcnQpCi0g
ICAgICAgIG1fcmVkaXJlY3RTdGFydCA9IG1fZmV0Y2hTdGFydDsKLSAgICBtX3JlZGlyZWN0RW5k
ID0gbV9mZXRjaFN0YXJ0ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7Ci0gICAgLy8g
Q2hlY2sgaWYgdGhlIHJlZGlyZWN0ZWQgdXJsIGlzIGFsbG93ZWQgdG8gYWNjZXNzIHRoZSByZWRp
cmVjdGluZyB1cmwncyB0aW1pbmcgaW5mb3JtYXRpb24uCi0gICAgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiByZWRpcmVjdGVkU2VjdXJpdHlPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHJl
ZGlyZWN0ZWRVcmwpOwotICAgIG1faGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCA9ICFyZWRpcmVjdGVk
U2VjdXJpdHlPcmlnaW4tPmNhblJlcXVlc3QocmVkaXJlY3RpbmdVcmwpOwotfQotCi1kb3VibGUg
RG9jdW1lbnRMb2FkVGltaW5nOjpjb252ZXJ0TW9ub3RvbmljVGltZVRvRG9jdW1lbnRUaW1lKGRv
dWJsZSBtb25vdG9uaWNUaW1lKSBjb25zdAotewotICAgIGlmICghbW9ub3RvbmljVGltZSkKLSAg
ICAgICAgcmV0dXJuIDAuMDsKLSAgICByZXR1cm4gbV9yZWZlcmVuY2VXYWxsVGltZSArIG1vbm90
b25pY1RpbWUgLSBtX3JlZmVyZW5jZU1vbm90b25pY1RpbWU7Ci19Ci0KLX0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRU
aW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRUaW1pbmcuaAppbmRl
eCAwZTY0YTE4Li5kNGFhN2QwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkVGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZFRpbWluZy5oCkBAIC0yNiw2MiArMjYsMzkgQEAKICNpZm5kZWYgRG9jdW1lbnRMb2FkVGltaW5n
X2gKICNkZWZpbmUgRG9jdW1lbnRMb2FkVGltaW5nX2gKIAotI2luY2x1ZGUgPHd0Zi9DdXJyZW50
VGltZS5oPgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEZyYW1lOwotY2xhc3MgS1VS
TDsKLQotY2xhc3MgRG9jdW1lbnRMb2FkVGltaW5nIHsKLXB1YmxpYzoKLSAgICBEb2N1bWVudExv
YWRUaW1pbmcoKTsKLQotICAgIHZvaWQgbWFya05hdmlnYXRpb25TdGFydChGcmFtZSopOwotICAg
IHZvaWQgYWRkUmVkaXJlY3QoY29uc3QgS1VSTCYgcmVkaXJlY3RpbmdVcmwsIGNvbnN0IEtVUkwm
IHJlZGlyZWN0ZWRVcmwpOwotICAgIGRvdWJsZSBjb252ZXJ0TW9ub3RvbmljVGltZVRvRG9jdW1l
bnRUaW1lKGRvdWJsZSBtb25vdG9uaWNUaW1lKSBjb25zdDsKLQotICAgIHZvaWQgbWFya1VubG9h
ZEV2ZW50U3RhcnQoKSB7IG1fdW5sb2FkRXZlbnRTdGFydCA9IG1vbm90b25pY2FsbHlJbmNyZWFz
aW5nVGltZSgpOyB9Ci0gICAgdm9pZCBtYXJrVW5sb2FkRXZlbnRFbmQoKSB7IG1fdW5sb2FkRXZl
bnRFbmQgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsgfQotICAgIHZvaWQgbWFya1Jl
ZGlyZWN0U3RhcnQoKSB7IG1fcmVkaXJlY3RTdGFydCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5n
VGltZSgpOyB9Ci0gICAgdm9pZCBtYXJrUmVkaXJlY3RFbmQoKSB7IG1fcmVkaXJlY3RFbmQgPSBt
b25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsgfQotICAgIHZvaWQgbWFya0ZldGNoU3RhcnQo
KSB7IG1fZmV0Y2hTdGFydCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOyB9Ci0gICAg
dm9pZCBzZXRSZXNwb25zZUVuZChkb3VibGUgbW9ub3RvbmljVGltZSkgeyBtX3Jlc3BvbnNlRW5k
ID0gbW9ub3RvbmljVGltZTsgfQotICAgIHZvaWQgbWFya0xvYWRFdmVudFN0YXJ0KCkgeyBtX2xv
YWRFdmVudFN0YXJ0ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7IH0KLSAgICB2b2lk
IG1hcmtMb2FkRXZlbnRFbmQoKSB7IG1fbG9hZEV2ZW50RW5kID0gbW9ub3RvbmljYWxseUluY3Jl
YXNpbmdUaW1lKCk7IH0KLQotICAgIHZvaWQgc2V0SGFzU2FtZU9yaWdpbkFzUHJldmlvdXNEb2N1
bWVudChib29sIHZhbHVlKSB7IG1faGFzU2FtZU9yaWdpbkFzUHJldmlvdXNEb2N1bWVudCA9IHZh
bHVlOyB9Ci0KLSAgICBkb3VibGUgbmF2aWdhdGlvblN0YXJ0KCkgY29uc3QgeyByZXR1cm4gY29u
dmVydE1vbm90b25pY1RpbWVUb0RvY3VtZW50VGltZShtX25hdmlnYXRpb25TdGFydCk7IH0KLSAg
ICBkb3VibGUgdW5sb2FkRXZlbnRTdGFydCgpIGNvbnN0IHsgcmV0dXJuIGNvbnZlcnRNb25vdG9u
aWNUaW1lVG9Eb2N1bWVudFRpbWUobV91bmxvYWRFdmVudFN0YXJ0KTsgfQotICAgIGRvdWJsZSB1
bmxvYWRFdmVudEVuZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnZlcnRNb25vdG9uaWNUaW1lVG9Eb2N1
bWVudFRpbWUobV91bmxvYWRFdmVudEVuZCk7IH0KLSAgICBkb3VibGUgcmVkaXJlY3RTdGFydCgp
IGNvbnN0IHsgcmV0dXJuIGNvbnZlcnRNb25vdG9uaWNUaW1lVG9Eb2N1bWVudFRpbWUobV9yZWRp
cmVjdFN0YXJ0KTsgfQotICAgIGRvdWJsZSByZWRpcmVjdEVuZCgpIGNvbnN0IHsgcmV0dXJuIGNv
bnZlcnRNb25vdG9uaWNUaW1lVG9Eb2N1bWVudFRpbWUobV9yZWRpcmVjdEVuZCk7IH0KLSAgICBz
aG9ydCByZWRpcmVjdENvdW50KCkgY29uc3QgeyByZXR1cm4gbV9yZWRpcmVjdENvdW50OyB9Ci0g
ICAgZG91YmxlIGZldGNoU3RhcnQoKSBjb25zdCB7IHJldHVybiBjb252ZXJ0TW9ub3RvbmljVGlt
ZVRvRG9jdW1lbnRUaW1lKG1fZmV0Y2hTdGFydCk7IH0KLSAgICBkb3VibGUgcmVzcG9uc2VFbmQo
KSBjb25zdCB7IHJldHVybiBjb252ZXJ0TW9ub3RvbmljVGltZVRvRG9jdW1lbnRUaW1lKG1fcmVz
cG9uc2VFbmQpOyB9Ci0gICAgZG91YmxlIGxvYWRFdmVudFN0YXJ0KCkgY29uc3QgeyByZXR1cm4g
Y29udmVydE1vbm90b25pY1RpbWVUb0RvY3VtZW50VGltZShtX2xvYWRFdmVudFN0YXJ0KTsgfQot
ICAgIGRvdWJsZSBsb2FkRXZlbnRFbmQoKSBjb25zdCB7IHJldHVybiBjb252ZXJ0TW9ub3Rvbmlj
VGltZVRvRG9jdW1lbnRUaW1lKG1fbG9hZEV2ZW50RW5kKTsgfQotICAgIGJvb2wgaGFzQ3Jvc3NP
cmlnaW5SZWRpcmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdDsg
fQotICAgIGJvb2wgaGFzU2FtZU9yaWdpbkFzUHJldmlvdXNEb2N1bWVudCgpIGNvbnN0IHsgcmV0
dXJuIG1faGFzU2FtZU9yaWdpbkFzUHJldmlvdXNEb2N1bWVudDsgfQorc3RydWN0IERvY3VtZW50
TG9hZFRpbWluZyB7CisgICAgRG9jdW1lbnRMb2FkVGltaW5nKCkKKyAgICAgICAgOiBuYXZpZ2F0
aW9uU3RhcnQoMC4wKQorICAgICAgICAsIHVubG9hZEV2ZW50U3RhcnQoMC4wKQorICAgICAgICAs
IHVubG9hZEV2ZW50RW5kKDAuMCkKKyAgICAgICAgLCByZWRpcmVjdFN0YXJ0KDAuMCkKKyAgICAg
ICAgLCByZWRpcmVjdEVuZCgwLjApCisgICAgICAgICwgcmVkaXJlY3RDb3VudCgwKQorICAgICAg
ICAsIGZldGNoU3RhcnQoMC4wKQorICAgICAgICAsIHJlc3BvbnNlRW5kKDAuMCkKKyAgICAgICAg
LCBsb2FkRXZlbnRTdGFydCgwLjApCisgICAgICAgICwgbG9hZEV2ZW50RW5kKDAuMCkKKyAgICAg
ICAgLCBoYXNDcm9zc09yaWdpblJlZGlyZWN0KGZhbHNlKQorICAgICAgICAsIGhhc1NhbWVPcmln
aW5Bc1ByZXZpb3VzRG9jdW1lbnQoZmFsc2UpCisgICAgeworICAgIH0KIAotcHJpdmF0ZToKLSAg
ICBkb3VibGUgbV9yZWZlcmVuY2VNb25vdG9uaWNUaW1lOwotICAgIGRvdWJsZSBtX3JlZmVyZW5j
ZVdhbGxUaW1lOwotICAgIGRvdWJsZSBtX25hdmlnYXRpb25TdGFydDsKLSAgICBkb3VibGUgbV91
bmxvYWRFdmVudFN0YXJ0OwotICAgIGRvdWJsZSBtX3VubG9hZEV2ZW50RW5kOwotICAgIGRvdWJs
ZSBtX3JlZGlyZWN0U3RhcnQ7Ci0gICAgZG91YmxlIG1fcmVkaXJlY3RFbmQ7Ci0gICAgc2hvcnQg
bV9yZWRpcmVjdENvdW50OwotICAgIGRvdWJsZSBtX2ZldGNoU3RhcnQ7Ci0gICAgZG91YmxlIG1f
cmVzcG9uc2VFbmQ7Ci0gICAgZG91YmxlIG1fbG9hZEV2ZW50U3RhcnQ7Ci0gICAgZG91YmxlIG1f
bG9hZEV2ZW50RW5kOwotICAgIGJvb2wgbV9oYXNDcm9zc09yaWdpblJlZGlyZWN0OwotICAgIGJv
b2wgbV9oYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50OworICAgIGRvdWJsZSBuYXZpZ2F0
aW9uU3RhcnQ7CisgICAgZG91YmxlIHVubG9hZEV2ZW50U3RhcnQ7CisgICAgZG91YmxlIHVubG9h
ZEV2ZW50RW5kOworICAgIGRvdWJsZSByZWRpcmVjdFN0YXJ0OworICAgIGRvdWJsZSByZWRpcmVj
dEVuZDsKKyAgICBzaG9ydCByZWRpcmVjdENvdW50OworICAgIGRvdWJsZSBmZXRjaFN0YXJ0Owor
ICAgIGRvdWJsZSByZXNwb25zZUVuZDsKKyAgICBkb3VibGUgbG9hZEV2ZW50U3RhcnQ7CisgICAg
ZG91YmxlIGxvYWRFdmVudEVuZDsKKyAgICBib29sIGhhc0Nyb3NzT3JpZ2luUmVkaXJlY3Q7Cisg
ICAgYm9vbCBoYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50OwogfTsKIAotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
Y3BwCmluZGV4IDQ0NjY0NmIuLmM0YjA3ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcApAQCAtMzc2LDEyICszNzYsMTAgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3RvcExvYWRp
bmcoVW5sb2FkRXZlbnRQb2xpY3kgdW5sb2FkRXZlbnRQb2xpY3kpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyB0aW1lIGludG8gZnJlZWQgbWVtb3J5LgogICAgICAgICAgICAgICAgICAgICAg
ICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBkb2N1bWVudExvYWRlciA9IG1fcHJvdmlzaW9uYWxE
b2N1bWVudExvYWRlcjsKICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFnZURpc21pc3NhbEV2
ZW50QmVpbmdEaXNwYXRjaGVkID0gVW5sb2FkRGlzbWlzc2FsOwotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGRvY3VtZW50TG9hZGVyICYmICFkb2N1bWVudExvYWRlci0+dGltaW5nKCktPnVu
bG9hZEV2ZW50U3RhcnQoKSAmJiAhZG9jdW1lbnRMb2FkZXItPnRpbWluZygpLT51bmxvYWRFdmVu
dEVuZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnRMb2FkZXIgJiYg
IWRvY3VtZW50TG9hZGVyLT50aW1pbmcoKS0+dW5sb2FkRXZlbnRTdGFydCAmJiAhZG9jdW1lbnRM
b2FkZXItPnRpbWluZygpLT51bmxvYWRFdmVudEVuZCkgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIERvY3VtZW50TG9hZFRpbWluZyogdGltaW5nID0gZG9jdW1lbnRMb2FkZXItPnRpbWlu
ZygpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh0aW1pbmctPm5hdmlnYXRp
b25TdGFydCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1pbmctPm1hcmtVbmxv
YWRFdmVudFN0YXJ0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mcmFtZS0+ZG9t
V2luZG93KCktPmRpc3BhdGNoRXZlbnQodW5sb2FkRXZlbnQsIG1fZnJhbWUtPmRvbVdpbmRvdygp
LT5kb2N1bWVudCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1pbmctPm1hcmtV
bmxvYWRFdmVudEVuZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh0aW1p
bmctPm5hdmlnYXRpb25TdGFydCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mcmFt
ZS0+ZG9tV2luZG93KCktPmRpc3BhdGNoVGltZWRFdmVudCh1bmxvYWRFdmVudCwgbV9mcmFtZS0+
ZG9tV2luZG93KCktPmRvY3VtZW50KCksICZ0aW1pbmctPnVubG9hZEV2ZW50U3RhcnQsICZ0aW1p
bmctPnVubG9hZEV2ZW50RW5kKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5kaXNwYXRjaEV2
ZW50KHVubG9hZEV2ZW50LCBtX2ZyYW1lLT5kb21XaW5kb3coKS0+ZG9jdW1lbnQoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIH0KQEAgLTE3NzMsNyArMTc3MSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgaWYgKHBkbCkgewogICAgICAgICAvLyBDaGVj
ayBpZiB0aGUgZGVzdGluYXRpb24gcGFnZSBpcyBhbGxvd2VkIHRvIGFjY2VzcyB0aGUgcHJldmlv
dXMgcGFnZSdzIHRpbWluZyBpbmZvcm1hdGlvbi4KICAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocGRsLT5yZXF1ZXN0
KCkudXJsKCkpOwotICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT50aW1pbmcoKS0+c2V0SGFzU2Ft
ZU9yaWdpbkFzUHJldmlvdXNEb2N1bWVudChzZWN1cml0eU9yaWdpbi0+Y2FuUmVxdWVzdChtX3By
ZXZpb3VzVXJsKSk7CisgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPnRpbWluZygpLT5oYXNTYW1l
T3JpZ2luQXNQcmV2aW91c0RvY3VtZW50ID0gc2VjdXJpdHlPcmlnaW4tPmNhblJlcXVlc3QobV9w
cmV2aW91c1VybCk7CiAgICAgfQogCiAgICAgLy8gQ2FsbCBjbGllbnRSZWRpcmVjdENhbmNlbGxl
ZE9yRmluaXNoZWQoKSBoZXJlIHNvIHRoYXQgdGhlIGZyYW1lIGxvYWQgZGVsZWdhdGUgaXMgbm90
aWZpZWQgdGhhdCB0aGUgcmVkaXJlY3QncwpAQCAtMjMyOSw3ICsyMzI3LDggQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJXaWxsU3VibWl0Rm9ybSgpCiAgICAgICAgIG5vdGlm
aWVyKCktPmFzc2lnbklkZW50aWZpZXJUb0luaXRpYWxSZXF1ZXN0KGlkZW50aWZpZXIsIG1fcHJv
dmlzaW9uYWxEb2N1bWVudExvYWRlci5nZXQoKSwgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVy
LT5vcmlnaW5hbFJlcXVlc3QoKSk7CiAgICAgfQogCi0gICAgbV9wcm92aXNpb25hbERvY3VtZW50
TG9hZGVyLT50aW1pbmcoKS0+bWFya05hdmlnYXRpb25TdGFydChmcmFtZSgpKTsKKyAgICBBU1NF
UlQoIW1fcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+dGltaW5nKCktPm5hdmlnYXRpb25TdGFy
dCk7CisgICAgbV9wcm92aXNpb25hbERvY3VtZW50TG9hZGVyLT50aW1pbmcoKS0+bmF2aWdhdGlv
blN0YXJ0ID0gY3VycmVudFRpbWUoKTsKIAogICAgIGlmICghbV9wcm92aXNpb25hbERvY3VtZW50
TG9hZGVyLT5zdGFydExvYWRpbmdNYWluUmVzb3VyY2UoaWRlbnRpZmllcikpCiAgICAgICAgIG1f
cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+dXBkYXRlTG9hZGluZygpOwpAQCAtMzAyOSwxMSAr
MzAyOCwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkUHJvdmlzaW9uYWxJdGVtRnJvbUNhY2hl
ZFBhZ2UoKQogICAgIHByb3Zpc2lvbmFsTG9hZGVyLT5wcmVwYXJlRm9yTG9hZFN0YXJ0KCk7CiAK
ICAgICBtX2xvYWRpbmdGcm9tQ2FjaGVkUGFnZSA9IHRydWU7Ci0KKyAgICAKICAgICAvLyBTaG91
bGQgaGF2ZSB0aW1pbmcgZGF0YSBmcm9tIHByZXZpb3VzIHRpbWUocykgdGhlIHBhZ2Ugd2FzIHNo
b3duLgotICAgIEFTU0VSVChwcm92aXNpb25hbExvYWRlci0+dGltaW5nKCktPm5hdmlnYXRpb25T
dGFydCgpKTsKKyAgICBBU1NFUlQocHJvdmlzaW9uYWxMb2FkZXItPnRpbWluZygpLT5uYXZpZ2F0
aW9uU3RhcnQpOwogICAgIHByb3Zpc2lvbmFsTG9hZGVyLT5yZXNldFRpbWluZygpOwotICAgIHBy
b3Zpc2lvbmFsTG9hZGVyLT50aW1pbmcoKS0+bWFya05hdmlnYXRpb25TdGFydChmcmFtZSgpKTsK
KyAgICBwcm92aXNpb25hbExvYWRlci0+dGltaW5nKCktPm5hdmlnYXRpb25TdGFydCA9IGN1cnJl
bnRUaW1lKCk7ICAgIAogCiAgICAgcHJvdmlzaW9uYWxMb2FkZXItPnNldENvbW1pdHRlZCh0cnVl
KTsKICAgICBjb21taXRQcm92aXNpb25hbExvYWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9NYWluUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L01haW5SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNzdkNTdiOC4uMmZhNWUwMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE0Myw3ICsxNDMs
NyBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6Y29udGludWVBZnRlck5hdmlnYXRpb25Qb2xp
Y3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZQogICAgICAgICBzdG9wTG9hZGluZ0ZvclBvbGlj
eUNoYW5nZSgpOwogICAgIGVsc2UgaWYgKG1fc3Vic3RpdHV0ZURhdGEuaXNWYWxpZCgpKSB7CiAg
ICAgICAgIC8vIEEgcmVkaXJlY3QgcmVzdWx0ZWQgaW4gbG9hZGluZyBzdWJzdGl0dXRlIGRhdGEu
Ci0gICAgICAgIEFTU0VSVChkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+cmVkaXJlY3RDb3Vu
dCgpKTsKKyAgICAgICAgQVNTRVJUKGRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5yZWRpcmVj
dENvdW50KTsKICAgICAgICAgaGFuZGxlKCktPmNhbmNlbCgpOwogICAgICAgICBoYW5kbGVEYXRh
TG9hZFNvb24ocmVxdWVzdCk7CiAgICAgfQpAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgTWFpblJl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0
LCBjb25zdCBSZXNvCiAgICAgLy8gcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0OyBvbmUgZXhhbXBs
ZSBvZiB0aGlzIGlzIDMyNjYyMTYuCiAgICAgUmVmUHRyPE1haW5SZXNvdXJjZUxvYWRlcj4gcHJv
dGVjdCh0aGlzKTsKIAotICAgIEFTU0VSVChkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+ZmV0
Y2hTdGFydCgpKTsKKyAgICBBU1NFUlQoZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPmZldGNo
U3RhcnQpOwogICAgIGlmICghcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSkgewogICAgICAgICAv
LyBJZiB0aGUgcmVkaXJlY3RpbmcgdXJsIGlzIG5vdCBhbGxvd2VkIHRvIGRpc3BsYXkgY29udGVu
dCBmcm9tIHRoZSB0YXJnZXQgb3JpZ2luLAogICAgICAgICAvLyB0aGVuIGJsb2NrIHRoZSByZWRp
cmVjdC4KQEAgLTE5Miw3ICsxOTIsMTkgQEAgdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OndpbGxT
ZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc28KICAgICAg
ICAgICAgIGNhbmNlbCgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAg
IGRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5hZGRSZWRpcmVjdChyZWRpcmVjdFJlc3BvbnNl
LnVybCgpLCBuZXdSZXF1ZXN0LnVybCgpKTsKKworICAgICAgICBEb2N1bWVudExvYWRUaW1pbmcq
IGRvY3VtZW50TG9hZFRpbWluZyA9IGRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpOworCisgICAg
ICAgIC8vIENoZWNrIGlmIHRoZSByZWRpcmVjdGVkIHVybCBpcyBhbGxvd2VkIHRvIGFjY2VzcyB0
aGUgcmVkaXJlY3RpbmcgdXJsJ3MgdGltaW5nIGluZm9ybWF0aW9uLgorICAgICAgICBSZWZQdHI8
U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShu
ZXdSZXF1ZXN0LnVybCgpKTsKKyAgICAgICAgaWYgKCFzZWN1cml0eU9yaWdpbi0+Y2FuUmVxdWVz
dChyZWRpcmVjdFJlc3BvbnNlLnVybCgpKSkKKyAgICAgICAgICAgIGRvY3VtZW50TG9hZFRpbWlu
Zy0+aGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCA9IHRydWU7CisKKyAgICAgICAgZG9jdW1lbnRMb2Fk
VGltaW5nLT5yZWRpcmVjdENvdW50Kys7CisgICAgICAgIGlmICghZG9jdW1lbnRMb2FkVGltaW5n
LT5yZWRpcmVjdFN0YXJ0KQorICAgICAgICAgICAgZG9jdW1lbnRMb2FkVGltaW5nLT5yZWRpcmVj
dFN0YXJ0ID0gZG9jdW1lbnRMb2FkVGltaW5nLT5mZXRjaFN0YXJ0OworICAgICAgICBkb2N1bWVu
dExvYWRUaW1pbmctPnJlZGlyZWN0RW5kID0gY3VycmVudFRpbWUoKTsKKyAgICAgICAgZG9jdW1l
bnRMb2FkVGltaW5nLT5mZXRjaFN0YXJ0ID0gZG9jdW1lbnRMb2FkVGltaW5nLT5yZWRpcmVjdEVu
ZDsKICAgICB9CiAKICAgICAvLyBVcGRhdGUgY29va2llIHBvbGljeSBiYXNlIFVSTCBhcyBVUkwg
Y2hhbmdlcywgZXhjZXB0IGZvciBzdWJmcmFtZXMsIHdoaWNoIHVzZSB0aGUKQEAgLTQ1OSw3ICs0
NzEsNyBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGEoY29uc3QgY2hh
ciogZGF0YSwgaW50IGxlbmd0aCwgbG9uZyBsb25nCiAgICAgLy8gcmVmZXJlbmNlIHRvIHRoaXMg
b2JqZWN0OyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYuCiAgICAgUmVmUHRyPE1haW5S
ZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKIAotICAgIG1fdGltZU9mTGFzdERhdGFSZWNl
aXZlZCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgIG1fdGltZU9mTGFzdERh
dGFSZWNlaXZlZCA9IGN1cnJlbnRUaW1lKCk7CiAKICAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVj
ZWl2ZURhdGEoZGF0YSwgbGVuZ3RoLCBlbmNvZGVkRGF0YUxlbmd0aCwgYWxsQXRPbmNlKTsKIH0K
QEAgLTQ3MSw3ICs0ODMsNyBAQCB2b2lkIE1haW5SZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyhkb3VibGUgZmluaXNoVGltZSkKICNpZiAhVVNFKENGKQogICAgIEFTU0VSVChzaG91bGRM
b2FkQXNFbXB0eURvY3VtZW50KGZyYW1lTG9hZGVyKCktPmFjdGl2ZURvY3VtZW50TG9hZGVyKCkt
PnVybCgpKSB8fCAhZGVmZXJzTG9hZGluZygpKTsKICNlbmRpZgotCisgICAgCiAgICAgLy8gVGhl
IGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5
IHJlbW92aW5nIHRoZSBsYXN0CiAgICAgLy8gcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0LgogICAg
IFJlZlB0cjxNYWluUmVzb3VyY2VMb2FkZXI+IHByb3RlY3QodGhpcyk7CkBAIC00ODAsNyArNDky
LDggQEAgdm9pZCBNYWluUmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZp
bmlzaFRpbWUpCiAgICAgaWYgKG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQpCiAgICAgICAgIGRs
LT5tYXliZUZpbmlzaExvYWRpbmdNdWx0aXBhcnRDb250ZW50KCk7CiAKLSAgICBkb2N1bWVudExv
YWRlcigpLT50aW1pbmcoKS0+c2V0UmVzcG9uc2VFbmQoZmluaXNoVGltZSA/IGZpbmlzaFRpbWUg
OiAobV90aW1lT2ZMYXN0RGF0YVJlY2VpdmVkID8gbV90aW1lT2ZMYXN0RGF0YVJlY2VpdmVkIDog
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpKTsKKyAgICBBU1NFUlQoIWRvY3VtZW50TG9h
ZGVyKCktPnRpbWluZygpLT5yZXNwb25zZUVuZCk7CisgICAgZG9jdW1lbnRMb2FkZXIoKS0+dGlt
aW5nKCktPnJlc3BvbnNlRW5kID0gZmluaXNoVGltZSA/IGZpbmlzaFRpbWUgOiAobV90aW1lT2ZM
YXN0RGF0YVJlY2VpdmVkID8gbV90aW1lT2ZMYXN0RGF0YVJlY2VpdmVkIDogY3VycmVudFRpbWUo
KSk7CiAgICAgZnJhbWVMb2FkZXIoKS0+ZmluaXNoZWRMb2FkaW5nKCk7CiAgICAgUmVzb3VyY2VM
b2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoZmluaXNoVGltZSk7CiAKQEAgLTU4OSw5ICs2MDIsOSBA
QCBib29sIE1haW5SZXNvdXJjZUxvYWRlcjo6bG9hZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHIs
IGNvbnN0IFN1YnN0aXR1dGVEYXRhJiBzdQogCiAgICAgbV9zdWJzdGl0dXRlRGF0YSA9IHN1YnN0
aXR1dGVEYXRhOwogCi0gICAgQVNTRVJUKGRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5uYXZp
Z2F0aW9uU3RhcnQoKSk7Ci0gICAgQVNTRVJUKCFkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+
ZmV0Y2hTdGFydCgpKTsKLSAgICBkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+bWFya0ZldGNo
U3RhcnQoKTsKKyAgICBBU1NFUlQoZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPm5hdmlnYXRp
b25TdGFydCk7CisgICAgQVNTRVJUKCFkb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+ZmV0Y2hT
dGFydCk7CisgICAgZG9jdW1lbnRMb2FkZXIoKS0+dGltaW5nKCktPmZldGNoU3RhcnQgPSBjdXJy
ZW50VGltZSgpOwogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHIpOwogCiAgICAgZG9jdW1l
bnRMb2FkZXIoKS0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bWF5YmVMb2FkTWFpblJlc291cmNl
KHJlcXVlc3QsIG1fc3Vic3RpdHV0ZURhdGEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmlu
ZGV4IGEzZTA1OTEuLmQ0NDUxMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTE2
MzUsMTQgKzE2MzUsMTIgQEAgYm9vbCBET01XaW5kb3c6OnJlbW92ZUV2ZW50TGlzdGVuZXIoY29u
c3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIKIHZvaWQgRE9NV2luZG93
OjpkaXNwYXRjaExvYWRFdmVudCgpCiB7CiAgICAgUmVmUHRyPEV2ZW50PiBsb2FkRXZlbnQoRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKLSAgICBp
ZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSAmJiAhbV9m
cmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCktPnRpbWluZygpLT5sb2FkRXZlbnRTdGFy
dCgpKSB7CisgICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9h
ZGVyKCkgJiYgIW1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT50aW1pbmcoKS0+
bG9hZEV2ZW50U3RhcnQpIHsKICAgICAgICAgLy8gVGhlIERvY3VtZW50TG9hZGVyIChhbmQgdGh1
cyBpdHMgRG9jdW1lbnRMb2FkVGltaW5nKSBtaWdodCBnZXQgZGVzdHJveWVkIHdoaWxlIGRpc3Bh
dGNoaW5nCiAgICAgICAgIC8vIHRoZSBldmVudCwgc28gcHJvdGVjdCBpdCB0byBwcmV2ZW50IHdy
aXRpbmcgdGhlIGVuZCB0aW1lIGludG8gZnJlZWQgbWVtb3J5LgogICAgICAgICBSZWZQdHI8RG9j
dW1lbnRMb2FkZXI+IGRvY3VtZW50TG9hZGVyID0gbV9mcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50
TG9hZGVyKCk7CiAgICAgICAgIERvY3VtZW50TG9hZFRpbWluZyogdGltaW5nID0gZG9jdW1lbnRM
b2FkZXItPnRpbWluZygpOwotICAgICAgICB0aW1pbmctPm1hcmtMb2FkRXZlbnRTdGFydCgpOwot
ICAgICAgICBkaXNwYXRjaEV2ZW50KGxvYWRFdmVudCwgZG9jdW1lbnQoKSk7Ci0gICAgICAgIHRp
bWluZy0+bWFya0xvYWRFdmVudEVuZCgpOworICAgICAgICBkaXNwYXRjaFRpbWVkRXZlbnQobG9h
ZEV2ZW50LCBkb2N1bWVudCgpLCAmdGltaW5nLT5sb2FkRXZlbnRTdGFydCwgJnRpbWluZy0+bG9h
ZEV2ZW50RW5kKTsKICAgICB9IGVsc2UKICAgICAgICAgZGlzcGF0Y2hFdmVudChsb2FkRXZlbnQs
IGRvY3VtZW50KCkpOwogCkBAIC0xNjc0LDYgKzE2NzIsMTUgQEAgYm9vbCBET01XaW5kb3c6OmRp
c3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQsIFBhc3NSZWZQdHI8RXZlbnRU
YXJnZXQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCit2b2lkIERPTVdpbmRvdzo6ZGlzcGF0Y2hU
aW1lZEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBEb2N1bWVudCogdGFyZ2V0LCBkb3Vi
bGUqIHN0YXJ0VGltZSwgZG91YmxlKiBlbmRUaW1lKQoreworICAgIEFTU0VSVChzdGFydFRpbWUp
OworICAgIEFTU0VSVChlbmRUaW1lKTsKKyAgICAqc3RhcnRUaW1lID0gY3VycmVudFRpbWUoKTsK
KyAgICBkaXNwYXRjaEV2ZW50KGV2ZW50LCB0YXJnZXQpOworICAgICplbmRUaW1lID0gY3VycmVu
dFRpbWUoKTsKK30KKwogdm9pZCBET01XaW5kb3c6OnJlbW92ZUFsbEV2ZW50TGlzdGVuZXJzKCkK
IHsKICAgICBFdmVudFRhcmdldDo6cmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5oCmluZGV4IGMzZTdhYzQuLmUzYWVhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaApAQCAtMjY3LDYgKzI2Nyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdXNp
bmcgRXZlbnRUYXJnZXQ6OmRpc3BhdGNoRXZlbnQ7CiAgICAgICAgIGJvb2wgZGlzcGF0Y2hFdmVu
dChQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCwgUGFzc1JlZlB0cjxFdmVudFRhcmdldD4gcHJw
VGFyZ2V0KTsKICAgICAgICAgdm9pZCBkaXNwYXRjaExvYWRFdmVudCgpOworICAgICAgICB2b2lk
IGRpc3BhdGNoVGltZWRFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgRG9jdW1lbnQqIHRh
cmdldCwgZG91YmxlKiBzdGFydFRpbWUsIGRvdWJsZSogZW5kVGltZSk7CiAKICAgICAgICAgREVG
SU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhYm9ydCk7CiAgICAgICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIoYmVmb3JldW5sb2FkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
LmlkbAppbmRleCA0YWE1YWMzLi45ZjFjMDdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRs
CkBAIC01MjMsOCArNTIzLDggQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIGF0dHJpYnV0ZSBb
SlNDQ3VzdG9tR2V0dGVyXSBGbG9hdDY0QXJyYXlDb25zdHJ1Y3RvciBGbG9hdDY0QXJyYXk7IC8v
IFVzYWJsZSB3aXRoIG5ldyBvcGVyYXRvcgogICAgICAgICBhdHRyaWJ1dGUgW0pTQ0N1c3RvbUdl
dHRlcl0gRGF0YVZpZXdDb25zdHJ1Y3RvciBEYXRhVmlldzsgLy8gVXNhYmxlIHdpdGggbmV3IG9w
ZXJhdG9yCiAKLSAgICAgICAgYXR0cmlidXRlIFtTdXBwbGVtZW50ZWQsIEpTQ0N1c3RvbUdldHRl
ciwgQ29uZGl0aW9uYWw9V0VCX0FVRElPLCBFbmFibGVkQXRSdW50aW1lXSBBdWRpb0NvbnRleHRD
b25zdHJ1Y3RvciB3ZWJraXRBdWRpb0NvbnRleHQ7IC8vIFVzYWJsZSB3aXRoIG5ldyBvcGVyYXRv
cgotICAgICAgICBhdHRyaWJ1dGUgW1N1cHBsZW1lbnRlZCwgQ29uZGl0aW9uYWw9V0VCX0FVRElP
XSBBdWRpb1Bhbm5lck5vZGVDb25zdHJ1Y3RvciB3ZWJraXRBdWRpb1Bhbm5lck5vZGU7IC8vIE5l
ZWRlZCBmb3IgcGFubmluZyBtb2RlbCBjb25zdGFudHMKKyAgICAgICAgYXR0cmlidXRlIFtKU0ND
dXN0b21HZXR0ZXIsQ29uZGl0aW9uYWw9V0VCX0FVRElPLEVuYWJsZWRBdFJ1bnRpbWVdIEF1ZGlv
Q29udGV4dENvbnN0cnVjdG9yIHdlYmtpdEF1ZGlvQ29udGV4dDsgLy8gVXNhYmxlIHdpdGggbmV3
IG9wZXJhdG9yCisgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9V0VCX0FVRElPXSBBdWRp
b1Bhbm5lck5vZGVDb25zdHJ1Y3RvciB3ZWJraXRBdWRpb1Bhbm5lck5vZGU7IC8vIE5lZWRlZCBm
b3IgcGFubmluZyBtb2RlbCBjb25zdGFudHMKIAogICAgICAgICAvLyBFdmVudCBDb25zdHJ1Y3Rv
cnMKICAgICAgICAgYXR0cmlidXRlIEV2ZW50Q29uc3RydWN0b3IgRXZlbnQ7CkBAIC01NTMsOCAr
NTUzLDggQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9
VE9VQ0hfRVZFTlRTXSBUb3VjaEV2ZW50Q29uc3RydWN0b3IgVG91Y2hFdmVudDsKICAgICAgICAg
YXR0cmlidXRlIFtDb25kaXRpb25hbD1XRUJfU09DS0VUU10gQ2xvc2VFdmVudENvbnN0cnVjdG9y
IENsb3NlRXZlbnQ7CiAgICAgICAgIGF0dHJpYnV0ZSBTdG9yYWdlRXZlbnRDb25zdHJ1Y3RvciBT
dG9yYWdlRXZlbnQ7Ci0gICAgICAgIGF0dHJpYnV0ZSBbU3VwcGxlbWVudGVkLCBDb25kaXRpb25h
bD1XRUJfQVVESU9dIEF1ZGlvUHJvY2Vzc2luZ0V2ZW50Q29uc3RydWN0b3IgQXVkaW9Qcm9jZXNz
aW5nRXZlbnQ7Ci0gICAgICAgIGF0dHJpYnV0ZSBbU3VwcGxlbWVudGVkLCBDb25kaXRpb25hbD1X
RUJfQVVESU9dIE9mZmxpbmVBdWRpb0NvbXBsZXRpb25FdmVudENvbnN0cnVjdG9yIE9mZmxpbmVB
dWRpb0NvbXBsZXRpb25FdmVudDsKKyAgICAgICAgYXR0cmlidXRlIFtDb25kaXRpb25hbD1XRUJf
QVVESU9dIEF1ZGlvUHJvY2Vzc2luZ0V2ZW50Q29uc3RydWN0b3IgQXVkaW9Qcm9jZXNzaW5nRXZl
bnQ7CisgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9V0VCX0FVRElPXSBPZmZsaW5lQXVk
aW9Db21wbGV0aW9uRXZlbnRDb25zdHJ1Y3RvciBPZmZsaW5lQXVkaW9Db21wbGV0aW9uRXZlbnQ7
CiAgICAgICAgIGF0dHJpYnV0ZSBbQ29uZGl0aW9uYWw9SU5QVVRfU1BFRUNIXSBTcGVlY2hJbnB1
dEV2ZW50Q29uc3RydWN0b3IgU3BlZWNoSW5wdXRFdmVudDsKICAgICAgICAgYXR0cmlidXRlIFtD
b25kaXRpb25hbD1NRURJQV9TVFJFQU1dIE1lZGlhU3RyZWFtRXZlbnRDb25zdHJ1Y3RvciBNZWRp
YVN0cmVhbUV2ZW50OwogICAgICAgICBhdHRyaWJ1dGUgW0NvbmRpdGlvbmFsPVdFQkdMXSBXZWJH
TENvbnRleHRFdmVudENvbnN0cnVjdG9yIFdlYkdMQ29udGV4dEV2ZW50OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb24uY3BwCmluZGV4IDY2M2U5NDIuLmE0NjYz
OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvbi5jcHAK
QEAgLTg0LDEwICs4NCwxMCBAQCB1bnNpZ25lZCBzaG9ydCBQZXJmb3JtYW5jZU5hdmlnYXRpb246
OnJlZGlyZWN0Q291bnQoKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKIAogICAgIERvY3VtZW50
TG9hZFRpbWluZyogdGltaW5nID0gbG9hZGVyLT50aW1pbmcoKTsKLSAgICBpZiAodGltaW5nLT5o
YXNDcm9zc09yaWdpblJlZGlyZWN0KCkpCisgICAgaWYgKHRpbWluZy0+aGFzQ3Jvc3NPcmlnaW5S
ZWRpcmVjdCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gdGltaW5nLT5yZWRpcmVj
dENvdW50KCk7CisgICAgcmV0dXJuIHRpbWluZy0+cmVkaXJlY3RDb3VudDsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZVRpbWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmNw
cAppbmRleCBiZGNlMDdlLi5mZjI1MzU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlVGltaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlVGltaW5nLmNwcApAQCAtNTAsNiArNTAsMzAgQEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9u
ZyB0b0ludGVnZXJNaWxsaXNlY29uZHMoZG91YmxlIHNlY29uZHMpCiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oc2Vjb25kcyAqIDEwMDAuMCk7CiB9CiAKK3N0YXRp
YyBkb3VibGUgZ2V0UG9zc2libHlTa2V3ZWRUaW1lSW5Lbm93blJhbmdlKGRvdWJsZSBza2V3ZWRU
aW1lLCBkb3VibGUgbG93ZXJCb3VuZCwgZG91YmxlIHVwcGVyQm91bmQpCit7CisjaWYgUExBVEZP
Uk0oQ0hST01JVU0pCisgICAgLy8gVGhlIGNocm9taXVtIHBvcnQncyBjdXJyZW50VGltZSgpIGlt
cGxlbWVudGF0aW9uIG9ubHkgc3luY3Mgd2l0aCB0aGUKKyAgICAvLyBzeXN0ZW0gY2xvY2sgZXZl
cnkgNjAgc2Vjb25kcy4gU28gaXQgaXMgcG9zc2libGUgZm9yIHRpbWluZyBtYXJrcworICAgIC8v
IGNvbGxlY3RlZCBpbiBkaWZmZXJlbnQgdGhyZWFkcyBvciBwcm9jZXNzZXMgdG8gaGF2ZSBhIHNt
YWxsIHNrZXcuCisgICAgLy8gRklYTUU6IEl0IG1heSBiZSBwb3NzaWJsZSB0byBhZGQgYSBjdXJy
ZW50VGltZUZyb21TeXN0ZW1UaW1lKCkgbWV0aG9kCisgICAgLy8gdGhhdCBlbGltaW5hdGVzIHRo
ZSBza2V3LgorICAgIGlmIChza2V3ZWRUaW1lIDw9IGxvd2VyQm91bmQpCisgICAgICAgIHJldHVy
biBsb3dlckJvdW5kOworCisgICAgaWYgKHVwcGVyQm91bmQgPD0gMC4wKQorICAgICAgICB1cHBl
ckJvdW5kID0gY3VycmVudFRpbWUoKTsKKworICAgIGlmIChza2V3ZWRUaW1lID49IHVwcGVyQm91
bmQpCisgICAgICAgIHJldHVybiB1cHBlckJvdW5kOworI2Vsc2UKKyAgICBBU1NFUlRfVU5VU0VE
KGxvd2VyQm91bmQsIHNrZXdlZFRpbWUgPj0gbG93ZXJCb3VuZCk7CisgICAgQVNTRVJUX1VOVVNF
RCh1cHBlckJvdW5kLCBza2V3ZWRUaW1lIDw9IHVwcGVyQm91bmQpOworI2VuZGlmCisKKyAgICBy
ZXR1cm4gc2tld2VkVGltZTsKK30KKwogUGVyZm9ybWFuY2VUaW1pbmc6OlBlcmZvcm1hbmNlVGlt
aW5nKEZyYW1lKiBmcmFtZSkKICAgICA6IG1fZnJhbWUoZnJhbWUpCiB7CkBAIC03MSw3ICs5NSw3
IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6bmF2aWdhdGlvblN0YXJ0
KCkgY29uc3QKICAgICBpZiAoIXRpbWluZykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1
cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+bmF2aWdhdGlvblN0YXJ0KCkpOworICAg
IHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5uYXZpZ2F0aW9uU3RhcnQpOwog
fQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnVubG9hZEV2ZW50U3Rh
cnQoKSBjb25zdApAQCAtODAsMTAgKzEwNCwxMCBAQCB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9y
bWFuY2VUaW1pbmc6OnVubG9hZEV2ZW50U3RhcnQoKSBjb25zdAogICAgIGlmICghdGltaW5nKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIGlmICh0aW1pbmctPmhhc0Nyb3NzT3JpZ2luUmVkaXJl
Y3QoKSB8fCAhdGltaW5nLT5oYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50KCkpCisgICAg
aWYgKHRpbWluZy0+aGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCB8fCAhdGltaW5nLT5oYXNTYW1lT3Jp
Z2luQXNQcmV2aW91c0RvY3VtZW50KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiB0
b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT51bmxvYWRFdmVudFN0YXJ0KCkpOworICAgIHJl
dHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT51bmxvYWRFdmVudFN0YXJ0KTsKIH0K
IAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjp1bmxvYWRFdmVudEVuZCgp
IGNvbnN0CkBAIC05MiwxMCArMTE2LDEwIEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5j
ZVRpbWluZzo6dW5sb2FkRXZlbnRFbmQoKSBjb25zdAogICAgIGlmICghdGltaW5nKQogICAgICAg
ICByZXR1cm4gMDsKIAotICAgIGlmICh0aW1pbmctPmhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QoKSB8
fCAhdGltaW5nLT5oYXNTYW1lT3JpZ2luQXNQcmV2aW91c0RvY3VtZW50KCkpCisgICAgaWYgKHRp
bWluZy0+aGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCB8fCAhdGltaW5nLT5oYXNTYW1lT3JpZ2luQXNQ
cmV2aW91c0RvY3VtZW50KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiB0b0ludGVn
ZXJNaWxsaXNlY29uZHModGltaW5nLT51bmxvYWRFdmVudEVuZCgpKTsKKyAgICByZXR1cm4gdG9J
bnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+dW5sb2FkRXZlbnRFbmQpOwogfQogCiB1bnNpZ25l
ZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnJlZGlyZWN0U3RhcnQoKSBjb25zdApAQCAt
MTA0LDEwICsxMjgsMTAgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpy
ZWRpcmVjdFN0YXJ0KCkgY29uc3QKICAgICBpZiAoIXRpbWluZykKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBpZiAodGltaW5nLT5oYXNDcm9zc09yaWdpblJlZGlyZWN0KCkpCisgICAgaWYgKHRp
bWluZy0+aGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBy
ZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+cmVkaXJlY3RTdGFydCgpKTsKKyAg
ICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+cmVkaXJlY3RTdGFydCk7CiB9
CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVkaXJlY3RFbmQoKSBj
b25zdApAQCAtMTE2LDEwICsxNDAsMTAgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNl
VGltaW5nOjpyZWRpcmVjdEVuZCgpIGNvbnN0CiAgICAgaWYgKCF0aW1pbmcpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgaWYgKHRpbWluZy0+aGFzQ3Jvc3NPcmlnaW5SZWRpcmVjdCgpKQorICAg
IGlmICh0aW1pbmctPmhhc0Nyb3NzT3JpZ2luUmVkaXJlY3QpCiAgICAgICAgIHJldHVybiAwOwog
Ci0gICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPnJlZGlyZWN0RW5kKCkp
OworICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5yZWRpcmVjdEVuZCk7
CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6ZmV0Y2hTdGFydCgp
IGNvbnN0CkBAIC0xMjgsNyArMTUyLDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNl
VGltaW5nOjpmZXRjaFN0YXJ0KCkgY29uc3QKICAgICBpZiAoIXRpbWluZykKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+ZmV0Y2hT
dGFydCgpKTsKKyAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+ZmV0Y2hT
dGFydCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6ZG9tYWlu
TG9va3VwU3RhcnQoKSBjb25zdApAQCAtMjUzLDcgKzI3Nyw3IEBAIHVuc2lnbmVkIGxvbmcgbG9u
ZyBQZXJmb3JtYW5jZVRpbWluZzo6cmVzcG9uc2VFbmQoKSBjb25zdAogICAgIGlmICghdGltaW5n
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHMo
dGltaW5nLT5yZXNwb25zZUVuZCgpKTsKKyAgICByZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRz
KHRpbWluZy0+cmVzcG9uc2VFbmQpOwogfQogCiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFu
Y2VUaW1pbmc6OmRvbUxvYWRpbmcoKSBjb25zdApAQCAtMjYyLDcgKzI4Niw3IEBAIHVuc2lnbmVk
IGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6ZG9tTG9hZGluZygpIGNvbnN0CiAgICAgaWYg
KCF0aW1pbmcpCiAgICAgICAgIHJldHVybiBmZXRjaFN0YXJ0KCk7CiAKLSAgICByZXR1cm4gbW9u
b3RvbmljVGltZVRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmRvbUxvYWRpbmcpOworICAg
IHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5kb21Mb2FkaW5nKTsKIH0KIAog
dW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21JbnRlcmFjdGl2ZSgpIGNv
bnN0CkBAIC0yNzEsNyArMjk1LDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGlt
aW5nOjpkb21JbnRlcmFjdGl2ZSgpIGNvbnN0CiAgICAgaWYgKCF0aW1pbmcpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgcmV0dXJuIG1vbm90b25pY1RpbWVUb0ludGVnZXJNaWxsaXNlY29uZHMo
dGltaW5nLT5kb21JbnRlcmFjdGl2ZSk7CisgICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25k
cyh0aW1pbmctPmRvbUludGVyYWN0aXZlKTsKIH0KIAogdW5zaWduZWQgbG9uZyBsb25nIFBlcmZv
cm1hbmNlVGltaW5nOjpkb21Db250ZW50TG9hZGVkRXZlbnRTdGFydCgpIGNvbnN0CkBAIC0yODAs
NyArMzA0LDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21Db250
ZW50TG9hZGVkRXZlbnRTdGFydCgpIGNvbnN0CiAgICAgaWYgKCF0aW1pbmcpCiAgICAgICAgIHJl
dHVybiAwOwogCi0gICAgcmV0dXJuIG1vbm90b25pY1RpbWVUb0ludGVnZXJNaWxsaXNlY29uZHMo
dGltaW5nLT5kb21Db250ZW50TG9hZGVkRXZlbnRTdGFydCk7CisgICAgcmV0dXJuIHRvSW50ZWdl
ck1pbGxpc2Vjb25kcyh0aW1pbmctPmRvbUNvbnRlbnRMb2FkZWRFdmVudFN0YXJ0KTsKIH0KIAog
dW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjpkb21Db250ZW50TG9hZGVkRXZl
bnRFbmQoKSBjb25zdApAQCAtMjg5LDcgKzMxMyw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJm
b3JtYW5jZVRpbWluZzo6ZG9tQ29udGVudExvYWRlZEV2ZW50RW5kKCkgY29uc3QKICAgICBpZiAo
IXRpbWluZykKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbW9ub3RvbmljVGltZVRv
SW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmRvbUNvbnRlbnRMb2FkZWRFdmVudEVuZCk7Cisg
ICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmRvbUNvbnRlbnRMb2FkZWRF
dmVudEVuZCk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6ZG9t
Q29tcGxldGUoKSBjb25zdApAQCAtMjk4LDcgKzMyMiw3IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQ
ZXJmb3JtYW5jZVRpbWluZzo6ZG9tQ29tcGxldGUoKSBjb25zdAogICAgIGlmICghdGltaW5nKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBtb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWls
bGlzZWNvbmRzKHRpbWluZy0+ZG9tQ29tcGxldGUpOworICAgIHJldHVybiB0b0ludGVnZXJNaWxs
aXNlY29uZHModGltaW5nLT5kb21Db21wbGV0ZSk7CiB9CiAKIHVuc2lnbmVkIGxvbmcgbG9uZyBQ
ZXJmb3JtYW5jZVRpbWluZzo6bG9hZEV2ZW50U3RhcnQoKSBjb25zdApAQCAtMzA3LDcgKzMzMSw3
IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBQZXJmb3JtYW5jZVRpbWluZzo6bG9hZEV2ZW50U3RhcnQo
KSBjb25zdAogICAgIGlmICghdGltaW5nKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVy
biB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5sb2FkRXZlbnRTdGFydCgpKTsKKyAgICBy
ZXR1cm4gdG9JbnRlZ2VyTWlsbGlzZWNvbmRzKHRpbWluZy0+bG9hZEV2ZW50U3RhcnQpOwogfQog
CiB1bnNpZ25lZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OmxvYWRFdmVudEVuZCgpIGNv
bnN0CkBAIC0zMTYsNyArMzQwLDcgQEAgdW5zaWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGlt
aW5nOjpsb2FkRXZlbnRFbmQoKSBjb25zdAogICAgIGlmICghdGltaW5nKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHModGltaW5nLT5sb2FkRXZl
bnRFbmQoKSk7CisgICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmxvYWRF
dmVudEVuZCk7CiB9CiAKIERvY3VtZW50TG9hZGVyKiBQZXJmb3JtYW5jZVRpbWluZzo6ZG9jdW1l
bnRMb2FkZXIoKSBjb25zdApAQCAtMzU3LDIwICszODEsMjIgQEAgUmVzb3VyY2VMb2FkVGltaW5n
KiBQZXJmb3JtYW5jZVRpbWluZzo6cmVzb3VyY2VMb2FkVGltaW5nKCkgY29uc3QKICAgICByZXR1
cm4gbG9hZGVyLT5yZXNwb25zZSgpLnJlc291cmNlTG9hZFRpbWluZygpOwogfQogCi11bnNpZ25l
ZCBsb25nIGxvbmcgUGVyZm9ybWFuY2VUaW1pbmc6OnJlc291cmNlTG9hZFRpbWVSZWxhdGl2ZVRv
QWJzb2x1dGUoaW50IHJlbGF0aXZlTWlsbGlzZWNvbmRzKSBjb25zdAordW5zaWduZWQgbG9uZyBs
b25nIFBlcmZvcm1hbmNlVGltaW5nOjpyZXNvdXJjZUxvYWRUaW1lUmVsYXRpdmVUb0Fic29sdXRl
KGludCByZWxhdGl2ZVNlY29uZHMpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKHJlbGF0aXZlTWlsbGlz
ZWNvbmRzID49IDApOworICAgIEFTU0VSVChyZWxhdGl2ZVNlY29uZHMgPj0gMCk7CiAgICAgUmVz
b3VyY2VMb2FkVGltaW5nKiByZXNvdXJjZVRpbWluZyA9IHJlc291cmNlTG9hZFRpbWluZygpOwog
ICAgIEFTU0VSVChyZXNvdXJjZVRpbWluZyk7Ci0gICAgcmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vj
b25kcyhyZXNvdXJjZVRpbWluZy0+Y29udmVydFJlc291cmNlTG9hZFRpbWVUb0RvY3VtZW50VGlt
ZShkb2N1bWVudExvYWRUaW1pbmcoKSwgcmVsYXRpdmVNaWxsaXNlY29uZHMpKTsKLX0KLQotdW5z
aWduZWQgbG9uZyBsb25nIFBlcmZvcm1hbmNlVGltaW5nOjptb25vdG9uaWNUaW1lVG9JbnRlZ2Vy
TWlsbGlzZWNvbmRzKGRvdWJsZSBtb25vdG9uaWNTZWNvbmRzKSBjb25zdAotewotICAgIEFTU0VS
VChtb25vdG9uaWNTZWNvbmRzID49IDApOwotICAgIGNvbnN0IERvY3VtZW50TG9hZFRpbWluZyog
dGltaW5nID0gZG9jdW1lbnRMb2FkVGltaW5nKCk7Ci0gICAgQVNTRVJUKHRpbWluZyk7Ci0gICAg
cmV0dXJuIHRvSW50ZWdlck1pbGxpc2Vjb25kcyh0aW1pbmctPmNvbnZlcnRNb25vdG9uaWNUaW1l
VG9Eb2N1bWVudFRpbWUobW9ub3RvbmljU2Vjb25kcykpOworICAgIERvY3VtZW50TG9hZFRpbWlu
ZyogZG9jdW1lbnRUaW1pbmcgPSBkb2N1bWVudExvYWRUaW1pbmcoKTsKKyAgICBBU1NFUlQoZG9j
dW1lbnRUaW1pbmcpOworCisgICAgLy8gVGhlIFJlc291cmNlTG9hZFRpbWluZyBBUEkncyByZXF1
ZXN0VGltZSBpcyB0aGUgYmFzZSB0aW1lIHRvIHdoaWNoIGFsbAorICAgIC8vIG90aGVyIG1hcmtz
IGFyZSByZWxhdGl2ZS4gU28gdG8gZ2V0IGFuIGFic29sdXRlIHRpbWUsIHdlIG11c3QgYWRkIGl0
IHRvCisgICAgLy8gdGhlIHJlbGF0aXZlIG1hcmtzLgorICAgIC8vCisgICAgLy8gU2luY2UgUmVz
b3VyY2VMb2FkVGltaW5ncyBjYW1lIGZyb20gdGhlIG5ldHdvcmsgcGxhdGZvcm0gbGF5ZXIsIHdl
IG11c3QKKyAgICAvLyBjaGVjayB0aGVtIGZvciBza2V3IGJlY2F1c2UgdGhleSBtYXkgYmUgZnJv
bSBhbm90aGVyIHRocmVhZC9wcm9jZXNzLgorICAgIGRvdWJsZSBiYXNlVGltZSA9IGdldFBvc3Np
Ymx5U2tld2VkVGltZUluS25vd25SYW5nZShyZXNvdXJjZVRpbWluZy0+cmVxdWVzdFRpbWUsIGRv
Y3VtZW50VGltaW5nLT5mZXRjaFN0YXJ0LCBkb2N1bWVudFRpbWluZy0+cmVzcG9uc2VFbmQpOwor
ICAgIHJldHVybiB0b0ludGVnZXJNaWxsaXNlY29uZHMoYmFzZVRpbWUpICsgcmVsYXRpdmVTZWNv
bmRzOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlVGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZv
cm1hbmNlVGltaW5nLmgKaW5kZXggNTJhYmQ1NS4uMGMzNzM4MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVRpbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGVyZm9ybWFuY2VUaW1pbmcuaApAQCAtMzgsNyArMzgsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIERvY3VtZW50TG9hZFRpbWluZzsKK3N0cnVjdCBEb2N1bWVudExvYWRU
aW1pbmc7CiBjbGFzcyBEb2N1bWVudExvYWRlcjsKIHN0cnVjdCBEb2N1bWVudFRpbWluZzsKIGNs
YXNzIEZyYW1lOwpAQCAtODEsNyArODEsNiBAQCBwcml2YXRlOgogICAgIERvY3VtZW50TG9hZFRp
bWluZyogZG9jdW1lbnRMb2FkVGltaW5nKCkgY29uc3Q7CiAgICAgUmVzb3VyY2VMb2FkVGltaW5n
KiByZXNvdXJjZUxvYWRUaW1pbmcoKSBjb25zdDsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgcmVz
b3VyY2VMb2FkVGltZVJlbGF0aXZlVG9BYnNvbHV0ZShpbnQpIGNvbnN0OwotICAgIHVuc2lnbmVk
IGxvbmcgbG9uZyBtb25vdG9uaWNUaW1lVG9JbnRlZ2VyTWlsbGlzZWNvbmRzKGRvdWJsZSkgY29u
c3Q7CiAKICAgICBGcmFtZSogbV9mcmFtZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9hdWRpby9BdWRpb0J1cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
dWRpby9BdWRpb0J1cy5jcHAKaW5kZXggYjVlYzI0Ni4uNmMwNzZiNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vQXVkaW9CdXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcApAQCAtMzgyLDEzICszODIsMTUgQEAgdm9p
ZCBBdWRpb0J1czo6Y29weVdpdGhTYW1wbGVBY2N1cmF0ZUdhaW5WYWx1ZXNGcm9tKGNvbnN0IEF1
ZGlvQnVzICZzb3VyY2VCdXMsIGYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIEZJ
WE1FOiB0aGlzIGNhbiBwb3RlbnRpYWxseSB1c2UgU0lNRCBvcHRpbWl6YXRpb25zIHdpdGggdmVj
dG9yIGxpYnJhcmllcy4KICAgICAvLyBXZSBoYW5kbGUgYm90aCB0aGUgMSAtPiBOIGFuZCBOIC0+
IE4gY2FzZSBoZXJlLgogICAgIGNvbnN0IGZsb2F0KiBzb3VyY2UgPSBzb3VyY2VCdXMuY2hhbm5l
bCgwKS0+ZGF0YSgpOwogICAgIGZvciAodW5zaWduZWQgY2hhbm5lbEluZGV4ID0gMDsgY2hhbm5l
bEluZGV4IDwgbnVtYmVyT2ZDaGFubmVscygpOyArK2NoYW5uZWxJbmRleCkgewogICAgICAgICBp
ZiAoc291cmNlQnVzLm51bWJlck9mQ2hhbm5lbHMoKSA9PSBudW1iZXJPZkNoYW5uZWxzKCkpCiAg
ICAgICAgICAgICBzb3VyY2UgPSBzb3VyY2VCdXMuY2hhbm5lbChjaGFubmVsSW5kZXgpLT5kYXRh
KCk7CiAgICAgICAgIGZsb2F0KiBkZXN0aW5hdGlvbiA9IGNoYW5uZWwoY2hhbm5lbEluZGV4KS0+
ZGF0YSgpOwotICAgICAgICB2bXVsKHNvdXJjZSwgMSwgZ2FpblZhbHVlcywgMSwgZGVzdGluYXRp
b24sIDEsIG51bWJlck9mR2FpblZhbHVlcyk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBudW1iZXJPZkdhaW5WYWx1ZXM7ICsraSkKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uW2ld
ID0gc291cmNlW2ldICogZ2FpblZhbHVlc1tpXTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYXVkaW8vVmVjdG9yTWF0aC5jcHAKaW5kZXggMmU2ZDFlMS4uZmY0NDA2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVmVjdG9yTWF0aC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVmVjdG9yTWF0aC5jcHAKQEAgLTYz
LDE1ICs2Myw2IEBAIHZvaWQgdmFkZChjb25zdCBmbG9hdCogc291cmNlMVAsIGludCBzb3VyY2VT
dHJpZGUxLCBjb25zdCBmbG9hdCogc291cmNlMlAsIGludCBzCiAjZW5kaWYKIH0KIAotdm9pZCB2
bXVsKGNvbnN0IGZsb2F0KiBzb3VyY2UxUCwgaW50IHNvdXJjZVN0cmlkZTEsIGNvbnN0IGZsb2F0
KiBzb3VyY2UyUCwgaW50IHNvdXJjZVN0cmlkZTIsIGZsb2F0KiBkZXN0UCwgaW50IGRlc3RTdHJp
ZGUsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCi17Ci0jaWYgZGVmaW5lZChfX3BwY19fKSB8fCBk
ZWZpbmVkKF9faTM4Nl9fKQotICAgIDo6dm11bChzb3VyY2UxUCwgc291cmNlU3RyaWRlMSwgc291
cmNlMlAsIHNvdXJjZVN0cmlkZTIsIGRlc3RQLCBkZXN0U3RyaWRlLCBmcmFtZXNUb1Byb2Nlc3Mp
OwotI2Vsc2UKLSAgICB2RFNQX3ZtdWwoc291cmNlMVAsIHNvdXJjZVN0cmlkZTEsIHNvdXJjZTJQ
LCBzb3VyY2VTdHJpZGUyLCBkZXN0UCwgZGVzdFN0cmlkZSwgZnJhbWVzVG9Qcm9jZXNzKTsKLSNl
bmRpZgotfQotCiAjZWxzZQogCiB2b2lkIHZzbXVsKGNvbnN0IGZsb2F0KiBzb3VyY2VQLCBpbnQg
c291cmNlU3RyaWRlLCBjb25zdCBmbG9hdCogc2NhbGUsIGZsb2F0KiBkZXN0UCwgaW50IGRlc3RT
dHJpZGUsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCkBAIC0yMzgsNjYgKzIyOSw2IEBAIHZvaWQg
dmFkZChjb25zdCBmbG9hdCogc291cmNlMVAsIGludCBzb3VyY2VTdHJpZGUxLCBjb25zdCBmbG9h
dCogc291cmNlMlAsIGludCBzCiAjZW5kaWYKIH0KIAotdm9pZCB2bXVsKGNvbnN0IGZsb2F0KiBz
b3VyY2UxUCwgaW50IHNvdXJjZVN0cmlkZTEsIGNvbnN0IGZsb2F0KiBzb3VyY2UyUCwgaW50IHNv
dXJjZVN0cmlkZTIsIGZsb2F0KiBkZXN0UCwgaW50IGRlc3RTdHJpZGUsIHNpemVfdCBmcmFtZXNU
b1Byb2Nlc3MpCi17Ci0KLSAgICBpbnQgbiA9IGZyYW1lc1RvUHJvY2VzczsKLQotI2lmZGVmIF9f
U1NFMl9fCi0gICAgaWYgKChzb3VyY2VTdHJpZGUxID09IDEpICYmIChzb3VyY2VTdHJpZGUyID09
IDEpICYmIChkZXN0U3RyaWRlID09IDEpKSB7Ci0KLSAgICAgICAgLy8gSWYgdGhlIHNvdXJjZTFQ
IGFkZHJlc3MgaXMgbm90IDE2LWJ5dGUgYWxpZ25lZCwgdGhlIGZpcnN0IHNldmVyYWwgZnJhbWVz
IChhdCBtb3N0IHRocmVlKSBzaG91bGQgYmUgcHJvY2Vzc2VkIHNlcGVyYXRlbHkuCi0gICAgICAg
IHdoaWxlICgocmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KHNvdXJjZTFQKSAmIDB4MEYpICYm
IG4pIHsKLSAgICAgICAgICAgICpkZXN0UCA9ICpzb3VyY2UxUCAqICpzb3VyY2UyUDsKLSAgICAg
ICAgICAgIHNvdXJjZTFQKys7Ci0gICAgICAgICAgICBzb3VyY2UyUCsrOwotICAgICAgICAgICAg
ZGVzdFArKzsKLSAgICAgICAgICAgIG4tLTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE5vdyB0
aGUgc291cmNlMVAgYWRkcmVzcyBhbGlnbmVkIGFuZCBzdGFydCB0byBhcHBseSBTU0UuCi0gICAg
ICAgIGludCB0YWlsRnJhbWVzID0gbiAlIDQ7Ci0gICAgICAgIGZsb2F0KiBlbmRQID0gZGVzdFAg
KyBuIC0gdGFpbEZyYW1lczsKLSAgICAgICAgX19tMTI4IHBTb3VyY2UxOwotICAgICAgICBfX20x
MjggcFNvdXJjZTI7Ci0gICAgICAgIF9fbTEyOCBkZXN0OwotCi0gICAgICAgIGJvb2wgc291cmNl
MkFsaWduZWQgPSAhKHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90Pihzb3VyY2UyUCkgJiAweDBG
KTsKLSAgICAgICAgYm9vbCBkZXN0QWxpZ25lZCA9ICEocmVpbnRlcnByZXRfY2FzdDx1aW50cHRy
X3Q+KGRlc3RQKSAmIDB4MEYpOwotCi0jZGVmaW5lIFNTRTJfTVVMVChsb2FkSW5zdHIsIHN0b3Jl
SW5zdHIpICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIHdoaWxlIChkZXN0UCA8IGVu
ZFApICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgeyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgcFNv
dXJjZTEgPSBfbW1fbG9hZF9wcyhzb3VyY2UxUCk7ICAgICAgICAgIFwKLSAgICAgICAgICAgICAg
ICBwU291cmNlMiA9IF9tbV8jI2xvYWRJbnN0ciMjX3BzKHNvdXJjZTJQKTsgXAotICAgICAgICAg
ICAgICAgIGRlc3QgPSBfbW1fbXVsX3BzKHBTb3VyY2UxLCBwU291cmNlMik7ICAgICBcCi0gICAg
ICAgICAgICAgICAgX21tXyMjc3RvcmVJbnN0ciMjX3BzKGRlc3RQLCBkZXN0KTsgICAgICAgIFwK
LSAgICAgICAgICAgICAgICBzb3VyY2UxUCArPSA0OyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgICAgICAgICAgICAgIHNvdXJjZTJQICs9IDQ7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCi0gICAgICAgICAgICAgICAgZGVzdFAgKz0gNDsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIH0KLQotICAgICAgICBpZiAoc291cmNlMkFsaWdu
ZWQgJiYgZGVzdEFsaWduZWQpIC8vIEJvdGggYWxpZ25lZC4KLSAgICAgICAgICAgIFNTRTJfTVVM
VChsb2FkLCBzdG9yZSkKLSAgICAgICAgZWxzZSBpZiAoc291cmNlMkFsaWduZWQgJiYgIWRlc3RB
bGlnbmVkKSAvLyBTb3VyY2UyIGlzIGFsaWduZWQgYnV0IGRlc3Qgbm90LgotICAgICAgICAgICAg
U1NFMl9NVUxUKGxvYWQsIHN0b3JldSkKLSAgICAgICAgZWxzZSBpZiAoIXNvdXJjZTJBbGlnbmVk
ICYmIGRlc3RBbGlnbmVkKSAvLyBEZXN0IGlzIGFsaWduZWQgYnV0IHNvdXJjZTIgbm90LgotICAg
ICAgICAgICAgU1NFMl9NVUxUKGxvYWR1LCBzdG9yZSkKLSAgICAgICAgZWxzZSAvLyBOZWl0aGVy
IGFsaWduZWQuCi0gICAgICAgICAgICBTU0UyX01VTFQobG9hZHUsIHN0b3JldSkKLQotICAgICAg
ICBuID0gdGFpbEZyYW1lczsKLSAgICB9Ci0jZW5kaWYKLSAgICB3aGlsZSAobikgewotICAgICAg
ICAqZGVzdFAgPSAqc291cmNlMVAgKiAqc291cmNlMlA7Ci0gICAgICAgIHNvdXJjZTFQICs9IHNv
dXJjZVN0cmlkZTE7Ci0gICAgICAgIHNvdXJjZTJQICs9IHNvdXJjZVN0cmlkZTI7Ci0gICAgICAg
IGRlc3RQICs9IGRlc3RTdHJpZGU7Ci0gICAgICAgIG4tLTsKLSAgICB9Ci19Ci0KICNlbmRpZiAv
LyBPUyhEQVJXSU4pCiAKIH0gLy8gbmFtZXNwYWNlIFZlY3Rvck1hdGgKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL1ZlY3Rvck1hdGguaAppbmRleCBhM2E5MmU1Li4wMzYwYmRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9WZWN0b3JNYXRoLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vVmVjdG9yTWF0aC5oCkBAIC0zNCw5ICszNCw2
IEBAIG5hbWVzcGFjZSBWZWN0b3JNYXRoIHsKIHZvaWQgdnNtdWwoY29uc3QgZmxvYXQqIHNvdXJj
ZVAsIGludCBzb3VyY2VTdHJpZGUsIGNvbnN0IGZsb2F0KiBzY2FsZSwgZmxvYXQqIGRlc3RQLCBp
bnQgZGVzdFN0cmlkZSwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcyk7CiB2b2lkIHZhZGQoY29uc3Qg
ZmxvYXQqIHNvdXJjZTFQLCBpbnQgc291cmNlU3RyaWRlMSwgY29uc3QgZmxvYXQqIHNvdXJjZTJQ
LCBpbnQgc291cmNlU3RyaWRlMiwgZmxvYXQqIGRlc3RQLCBpbnQgZGVzdFN0cmlkZSwgc2l6ZV90
IGZyYW1lc1RvUHJvY2Vzcyk7CiAKLS8vIEZvciBhbiBlbGVtZW50LWJ5LWVsZW1lbnQgbXVsdGlw
bHkgb2YgdHdvIGZsb2F0IHZlY3RvcnMuCi12b2lkIHZtdWwoY29uc3QgZmxvYXQqIHNvdXJjZTFQ
LCBpbnQgc291cmNlU3RyaWRlMSwgY29uc3QgZmxvYXQqIHNvdXJjZTJQLCBpbnQgc291cmNlU3Ry
aWRlMiwgZmxvYXQqIGRlc3RQLCBpbnQgZGVzdFN0cmlkZSwgc2l6ZV90IGZyYW1lc1RvUHJvY2Vz
cyk7Ci0KIH0gLy8gbmFtZXNwYWNlIFZlY3Rvck1hdGgKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Qml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCmlu
ZGV4IGZhNjQ4MTguLjk3NTUyMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyLmgKQEAgLTU3LDYgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgfkJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoKTsKIAogICAgIHZpcnR1YWwgUGFz
c093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKFRleHR1
cmVNYW5hZ2VyKik7CisgICAgdmlydHVhbCBPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpIHsgcmV0
dXJuIExheWVyVGV4dHVyZVVwZGF0ZXI6OkJvdHRvbVVwT3JpZW50YXRpb247IH0KICAgICB2aXJ0
dWFsIFNhbXBsZWRUZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVy
ZUZvcm1hdCk7CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1VwZGF0ZShjb25zdCBJbnRSZWN0
JiBjb250ZW50UmVjdCwgY29uc3QgSW50U2l6ZSYgdGlsZVNpemUsIGludCBib3JkZXJUZXhlbHMs
IGZsb2F0IGNvbnRlbnRzU2NhbGUpOwogICAgIHZvaWQgdXBkYXRlVGV4dHVyZVJlY3QoR3JhcGhp
Y3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgTWFuYWdlZFRleHR1cmUqLCBjb25zdCBJ
bnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9CaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVy
LmgKaW5kZXggZTUxNjNjMi4uYzMwZjMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0JpdG1hcFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAtNTYsNiArNTYs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+Qml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcigpOwogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsKKyAgICB2aXJ0dWFs
IE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6
Qm90dG9tVXBPcmllbnRhdGlvbjsgfQogICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNh
bXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKICAgICB2aXJ0dWFsIHZv
aWQgcHJlcGFyZVRvVXBkYXRlKGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0LCBjb25zdCBJbnRT
aXplJiB0aWxlU2l6ZSwgaW50IGJvcmRlclRleGVscywgZmxvYXQgY29udGVudHNTY2FsZSk7CiAg
ICAgdm9pZCBwYWludENvbnRlbnRzUmVjdChTa0NhbnZhcyosIGNvbnN0IEludFJlY3QmIHNvdXJj
ZVJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZyYW1lQnVmZmVyU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKaW5kZXggMGE5MGMwNy4uZjJkN2Uy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
RnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0xNDcsMTEgKzE0Nyw2IEBAIHZv
aWQgRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjp1cGRhdGVU
ZXh0dXJlUmVjdChHcmFwaGljc0NvCiAgICAgU2tDYW52YXMqIGNhbnZhcyA9IGJ1ZmZlci5pbml0
aWFsaXplKGNvbnRleHQsIGFsbG9jYXRvciwgdGV4dHVyZSk7CiAKICAgICBjYW52YXMtPmNsaXBS
ZWN0KFNrUmVjdChkZXN0UmVjdCkpOwotICAgIC8vIFRoZSBjb21wb3NpdG9yIGV4cGVjdHMgdGhl
IHRleHR1cmVzIHRvIGJlIHVwc2lkZS1kb3duIHNvIGl0IGNhbiBmbGlwCi0gICAgLy8gdGhlIGZp
bmFsIGNvbXBvc2l0ZWQgaW1hZ2UuIEdhbmVzaCByZW5kZXJzIHRoZSBpbWFnZSB1cHJpZ2h0IHNv
IHdlCi0gICAgLy8gbmVlZCB0byBkbyBhIHktZmxpcC4KLSAgICBjYW52YXMtPnRyYW5zbGF0ZSgw
LjAsIHRleHR1cmUtPnNpemUoKS5oZWlnaHQoKSk7Ci0gICAgY2FudmFzLT5zY2FsZSgxLjAsIC0x
LjApOwogICAgIC8vIFRyYW5zbGF0ZSB0aGUgb3JpZ2luIG9mIGNvbnRlbnRSZWN0IHRvIHRoYXQg
b2YgZGVzdFJlY3QuCiAgICAgLy8gTm90ZSB0aGF0IGRlc3RSZWN0IGlzIGRlZmluZWQgcmVsYXRp
dmUgdG8gc291cmNlUmVjdC4KICAgICBjYW52YXMtPnRyYW5zbGF0ZShjb250ZW50UmVjdCgpLngo
KSAtIHNvdXJjZVJlY3QueCgpICsgZGVzdFJlY3QueCgpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRnJhbWVCdWZmZXJTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIu
aAppbmRleCAxYjFkMTFiLi4wNmI2MmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9GcmFtZUJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApAQCAt
NTMsNiArNTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+RnJhbWVCdWZmZXJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyKCk7CiAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8TGF5
ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciop
OworICAgIHZpcnR1YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJldHVybiBMYXllclRl
eHR1cmVVcGRhdGVyOjpUb3BEb3duT3JpZW50YXRpb247IH0KICAgICB2aXJ0dWFsIFNhbXBsZWRU
ZXhlbEZvcm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVyZUZvcm1hdCk7CiAg
ICAgdm9pZCB1cGRhdGVUZXh0dXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxv
Y2F0b3IqLCBNYW5hZ2VkVGV4dHVyZSosIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ltYWdlTGF5ZXJDaHJvbWl1bS5jcHAKaW5k
ZXggM2NiMjM3Ny4uNGZiOTU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vSW1hZ2VMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9JbWFnZUxheWVyQ2hyb21pdW0uY3BwCkBA
IC03Nyw2ICs3Nyw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0
dXJlKHRoaXMsIE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdlcikpKTsKICAgICB9CiAKKyAg
ICB2aXJ0dWFsIE9yaWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6Qm90dG9tVXBPcmllbnRhdGlvbjsgfQorCiAgICAgdmlydHVhbCBTYW1wbGVkVGV4
ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpCiAgICAg
ewogICAgICAgICByZXR1cm4gUGxhdGZvcm1Db2xvcjo6c2FtZUNvbXBvbmVudE9yZGVyKHRleHR1
cmVGb3JtYXQpID8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyVGV4dHVyZVVwZGF0ZXIuaAppbmRleCAzNGRiNzJhLi5i
Zjc1Y2YyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9MYXllclRleHR1cmVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJUZXh0dXJlVXBkYXRlci5oCkBAIC02MCwxMiArNjAsMTkg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+TGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsgfQogCisg
ICAgZW51bSBPcmllbnRhdGlvbiB7CisgICAgICAgIEJvdHRvbVVwT3JpZW50YXRpb24sCisgICAg
ICAgIFRvcERvd25PcmllbnRhdGlvbiwKKyAgICAgICAgSW52YWxpZE9yaWVudGF0aW9uLAorICAg
IH07CiAgICAgZW51bSBTYW1wbGVkVGV4ZWxGb3JtYXQgewogICAgICAgICBTYW1wbGVkVGV4ZWxG
b3JtYXRSR0JBLAogICAgICAgICBTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBLAogICAgICAgICBTYW1w
bGVkVGV4ZWxGb3JtYXRJbnZhbGlkLAogICAgIH07CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFRl
eHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKSA9IDA7CisgICAgLy8gUmV0dXJu
cyB0aGUgb3JpZW50YXRpb24gb2YgdGhlIHRleHR1cmUgdXBsb2FkZWQgYnkgdGhpcyBpbnRlcmZh
Y2UuCisgICAgdmlydHVhbCBPcmllbnRhdGlvbiBvcmllbnRhdGlvbigpID0gMDsKICAgICAvLyBS
ZXR1cm5zIHRoZSBmb3JtYXQgb2YgdGhlIHRleGVsIHVwbG9hZGVkIGJ5IHRoaXMgaW50ZXJmYWNl
LgogICAgIC8vIFRoaXMgZm9ybWF0IHNob3VsZCBub3QgYmUgY29uZnVzZWQgYnkgdGV4dHVyZSBp
bnRlcm5hbCBmb3JtYXQuCiAgICAgLy8gVGhpcyBmb3JtYXQgc3BlY2lmaWVzIHRoZSBjb21wb25l
bnQgb3JkZXIgaW4gdGhlIHNhbXBsZWQgdGV4ZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmNwcAppbmRleCBhYzdiOGY2Li42NDAwYjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1
bS5jcHAKQEAgLTcyLDYgKzcyLDcgQEAgVGlsZWRMYXllckNocm9taXVtOjpUaWxlZExheWVyQ2hy
b21pdW0oQ0NMYXllckRlbGVnYXRlKiBkZWxlZ2F0ZSkKICAgICA6IExheWVyQ2hyb21pdW0oZGVs
ZWdhdGUpCiAgICAgLCBtX3RleHR1cmVGb3JtYXQoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
RU5VTSkKICAgICAsIG1fc2tpcHNEcmF3KGZhbHNlKQorICAgICwgbV90ZXh0dXJlT3JpZW50YXRp
b24oTGF5ZXJUZXh0dXJlVXBkYXRlcjo6SW52YWxpZE9yaWVudGF0aW9uKQogICAgICwgbV9zYW1w
bGVkVGV4ZWxGb3JtYXQoTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0SW52
YWxpZCkKICAgICAsIG1fdGlsaW5nT3B0aW9uKEF1dG9UaWxlKQogewpAQCAtMTYyLDYgKzE2Myw3
IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpzZXRMYXllclRyZWVIb3N0KENDTGF5ZXJUcmVl
SG9zdCogaG9zdCkKICAgICBjcmVhdGVUZXh0dXJlVXBkYXRlcihob3N0KTsKIAogICAgIHNldFRl
eHR1cmVGb3JtYXQoaG9zdC0+bGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLmJlc3RUZXh0dXJl
Rm9ybWF0KTsKKyAgICBtX3RleHR1cmVPcmllbnRhdGlvbiA9IHRleHR1cmVVcGRhdGVyKCktPm9y
aWVudGF0aW9uKCk7CiAgICAgbV9zYW1wbGVkVGV4ZWxGb3JtYXQgPSB0ZXh0dXJlVXBkYXRlcigp
LT5zYW1wbGVkVGV4ZWxGb3JtYXQobV90ZXh0dXJlRm9ybWF0KTsKIH0KIApAQCAtMjQ4LDYgKzI1
MCw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJ
bXBsKiBsYXllcikKICAgICB9CiAKICAgICB0aWxlZExheWVyLT5zZXRTa2lwc0RyYXcobV9za2lw
c0RyYXcpOworICAgIHRpbGVkTGF5ZXItPnNldFRleHR1cmVPcmllbnRhdGlvbihtX3RleHR1cmVP
cmllbnRhdGlvbik7CiAgICAgdGlsZWRMYXllci0+c2V0U2FtcGxlZFRleGVsRm9ybWF0KG1fc2Ft
cGxlZFRleGVsRm9ybWF0KTsKICAgICB0aWxlZExheWVyLT5zZXRUaWxpbmdEYXRhKCptX3RpbGVy
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vVGlsZWRMYXllckNocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaAppbmRleCA3N2E5ZWM5Li4yOGU3ZDFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uaApAQCAtMTAxLDYgKzEwMSw3IEBAIHByaXZhdGU6
CiAKICAgICBHQzNEZW51bSBtX3RleHR1cmVGb3JtYXQ7CiAgICAgYm9vbCBtX3NraXBzRHJhdzsK
KyAgICBMYXllclRleHR1cmVVcGRhdGVyOjpPcmllbnRhdGlvbiBtX3RleHR1cmVPcmllbnRhdGlv
bjsKICAgICBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgbV9zYW1wbGVk
VGV4ZWxGb3JtYXQ7CiAKICAgICBUaWxpbmdPcHRpb24gbV90aWxpbmdPcHRpb247CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVk
TGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDVGlsZWRMYXllckltcGwuY3BwCmluZGV4IDcyMDQ2YmIuLjQ5ZDFkZjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRM
YXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwCkBAIC0yODgsNiArMjg4LDEzIEBAIHZvaWQgQ0NU
aWxlZExheWVySW1wbDo6ZHJhd1RpbGVzKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5k
ZXJlciwgY29uc3QgSW50CiAgICAgICAgICAgICBmbG9hdCBmcmFnbWVudFRleFNjYWxlWCA9IGNs
YW1wUmVjdC53aWR0aCgpIC8gdGlsZVdpZHRoOwogICAgICAgICAgICAgZmxvYXQgZnJhZ21lbnRU
ZXhTY2FsZVkgPSBjbGFtcFJlY3QuaGVpZ2h0KCkgLyB0aWxlSGVpZ2h0OwogCisgICAgICAgICAg
ICAvLyBPcGVuR0wgY29vcmRpbmF0ZSBzeXN0ZW0gaXMgYm90dG9tLXVwLgorICAgICAgICAgICAg
Ly8gSWYgdGlsZSB0ZXh0dXJlIGlzIHRvcC1kb3duLCB3ZSBuZWVkIHRvIGZsaXAgdGhlIHRleHR1
cmUgY29vcmRpbmF0ZXMuCisgICAgICAgICAgICBpZiAobV90ZXh0dXJlT3JpZW50YXRpb24gPT0g
TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VG9wRG93bk9yaWVudGF0aW9uKSB7CisgICAgICAgICAgICAg
ICAgZnJhZ21lbnRUZXhUcmFuc2xhdGVZID0gMS4wIC0gZnJhZ21lbnRUZXhUcmFuc2xhdGVZOwor
ICAgICAgICAgICAgICAgIGZyYWdtZW50VGV4U2NhbGVZICo9IC0xLjA7CisgICAgICAgICAgICB9
CisKICAgICAgICAgICAgIENDTGF5ZXJRdWFkOjpFZGdlIGVkZ2VYID0gY29udGVudFF1YWQucmln
aHQoKTsKICAgICAgICAgICAgIGlmIChpIDwgKG1fdGlsZXItPm51bVRpbGVzWCgpIC0gMSkpIHsK
ICAgICAgICAgICAgICAgICBGbG9hdFBvaW50IHAxKHRpbGVSZWN0Lm1heFgoKSwgdGlsZVJlY3Qu
eSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDVGlsZWRMYXllckltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaAppbmRleCAwNmEwMzFjLi4xMDAzZGJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbGVkTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCkBAIC00OSw2ICs0OSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZHVtcExheWVyUHJvcGVydGllcyhUZXh0U3RyZWFtJiwgaW50
IGluZGVudCkgY29uc3Q7CiAKICAgICB2b2lkIHNldFNraXBzRHJhdyhib29sIHNraXBzRHJhdykg
eyBtX3NraXBzRHJhdyA9IHNraXBzRHJhdzsgfQorICAgIHZvaWQgc2V0VGV4dHVyZU9yaWVudGF0
aW9uKExheWVyVGV4dHVyZVVwZGF0ZXI6Ok9yaWVudGF0aW9uIHRleHR1cmVPcmllbnRhdGlvbikg
eyBtX3RleHR1cmVPcmllbnRhdGlvbiA9IHRleHR1cmVPcmllbnRhdGlvbjsgfQogICAgIHZvaWQg
c2V0U2FtcGxlZFRleGVsRm9ybWF0KExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZv
cm1hdCBzYW1wbGVkVGV4ZWxGb3JtYXQpIHsgbV9zYW1wbGVkVGV4ZWxGb3JtYXQgPSBzYW1wbGVk
VGV4ZWxGb3JtYXQ7IH0KICAgICB2b2lkIHNldFRpbGluZ0RhdGEoY29uc3QgQ0NMYXllclRpbGlu
Z0RhdGEmIHRpbGVyKTsKICAgICB2b2lkIHN5bmNUZXh0dXJlSWQoaW50LCBpbnQsIFBsYXRmb3Jt
M0RPYmplY3QgdGV4dHVyZUlkKTsKQEAgLTg4LDYgKzg5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRyYXdUaWxlcyhMYXllclJlbmRlcmVyQ2hyb21pdW0qLCBjb25zdCBJbnRSZWN0JiBjb250ZW50
UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGdsb2JhbFRyYW5zZm9ybSwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIGRldmljZVRyYW5zZm9ybSwgY29uc3QgQ0NMYXllclF1YWQm
IGRldmljZVJlY3QsIGNvbnN0IENDTGF5ZXJRdWFkJiBjb250ZW50UXVhZCwgZmxvYXQgb3BhY2l0
eSwgY29uc3QgVCogcHJvZ3JhbSwgaW50IGZyYWdtZW50VGV4VHJhbnNmb3JtTG9jYXRpb24sIGlu
dCBlZGdlTG9jYXRpb24pOwogCiAgICAgYm9vbCBtX3NraXBzRHJhdzsKKyAgICBMYXllclRleHR1
cmVVcGRhdGVyOjpPcmllbnRhdGlvbiBtX3RleHR1cmVPcmllbnRhdGlvbjsKICAgICBMYXllclRl
eHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgbV9zYW1wbGVkVGV4ZWxGb3JtYXQ7CiAK
ICAgICBPd25QdHI8Q0NMYXllclRpbGluZ0RhdGE+IG1fdGlsZXI7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRleHQzRFF0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQu
Y3BwCmluZGV4IGMzNTFmZWMuLjM3ZTkxNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJRV2Vi
UGFnZUNsaWVudC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgorI2luY2x1ZGUgInF3ZWJw
YWdlLmgiCiAjaW5jbHVkZSA8UUFic3RyYWN0U2Nyb2xsQXJlYT4KICNpbmNsdWRlIDxRR3JhcGhp
Y3NPYmplY3Q+CiAjaW5jbHVkZSA8UUdMQ29udGV4dD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKaW5kZXggZmE3OGUwMS4uMjk2MGJlZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKQEAg
LTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlNo
YWRvd0JsdXIuaCIKICNpbmNsdWRlICJTdGlsbEltYWdlUXQuaCIKKyNpbmNsdWRlICJxd2Vic2V0
dGluZ3MuaCIKIAogI2luY2x1ZGUgPFFBcHBsaWNhdGlvbj4KICNpbmNsdWRlIDxRRGVidWc+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRp
bWluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRp
bWluZy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkOWRhNDguLjAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1pbmcu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlJlc291cmNlTG9hZFRpbWluZy5oIgotCi0jaW5jbHVkZSAiRG9jdW1lbnRMb2FkVGltaW5nLmgi
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotZG91YmxlIFJlc291cmNlTG9hZFRpbWluZzo6Y29u
dmVydFJlc291cmNlTG9hZFRpbWVUb0RvY3VtZW50VGltZShjb25zdCBEb2N1bWVudExvYWRUaW1p
bmcqIGRvY3VtZW50VGltaW5nLCBpbnQgZGVsdGFNaWxsaXNlY29uZHMpIGNvbnN0Ci17Ci0gICAg
aWYgKCFkb2N1bWVudFRpbWluZykKLSAgICAgICAgcmV0dXJuIDAuMDsKLQotICAgIHJldHVybiBk
b2N1bWVudFRpbWluZy0+Y29udmVydE1vbm90b25pY1RpbWVUb0RvY3VtZW50VGltZShyZXF1ZXN0
VGltZSArIGRlbHRhTWlsbGlzZWNvbmRzIC8gMTAwMC4wKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmgKaW5kZXgg
OTRjNTVkOS4uMjY5ZmFkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5oCkBAIC0zMiw4ICszMiw2IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotY2xhc3MgRG9jdW1lbnRMb2FkVGltaW5nOwotCiBjbGFzcyBSZXNvdXJj
ZUxvYWRUaW1pbmcgOiBwdWJsaWMgUmVmQ291bnRlZDxSZXNvdXJjZUxvYWRUaW1pbmc+IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZXNvdXJjZUxvYWRUaW1pbmc+IGNyZWF0ZSgp
CkBAIC04MCwxNSArNzgsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAhKCp0aGlzID09IG90
aGVyKTsKICAgICB9CiAKLSAgICAvLyBXZSB3YW50IHRvIHByZXNlbnQgYSB1bmlmaWVkIHRpbWVs
aW5lIHRvIEphdmFzY3JpcHQuIFVzaW5nIHdhbGx0aW1lIGlzIHByb2JsZW1hdGljLCBiZWNhdXNl
IHRoZSBjbG9jayBtYXkgc2tldyB3aGlsZSByZXNvdXJjZXMKLSAgICAvLyBsb2FkLiBUbyBwcmV2
ZW50IHRoYXQgc2tldywgd2UgcmVjb3JkIGEgc2luZ2xlIHJlZmVyZW5jZSB3YWxsdGltZSB3aGVu
IHJvb3QgZG9jdW1lbnQgbmF2aWdhdGlvbiBiZWdpbnMuIEFsbCBvdGhlciB0aW1lcyBhcmUKLSAg
ICAvLyByZWNvcmRlZCB1c2luZyBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKS4gV2hlbiBh
IHRpbWUgbmVlZHMgdG8gYmUgcHJlc2VudGVkIHRvIEphdmFzY3JpcHQsIHdlIGJ1aWxkIGEgcHNl
dWRvLXdhbGx0aW1lCi0gICAgLy8gdXNpbmcgdGhlIGZvbGxvd2luZyBlcXVhdGlvbjoKLSAgICAv
LyAgIHBzZXVkbyB0aW1lID0gZG9jdW1lbnQgd2FsbCByZWZlcmVuY2UgKyAocmVzb3VyY2UgcmVx
dWVzdCB0aW1lIC0gZG9jdW1lbnQgbW9ub3RvbmljIHJlZmVyZW5jZSkgKyBkZWx0YU1pbGxpc2Vj
b25kcyAvIDEwMDAuMC4KLSAgICBkb3VibGUgY29udmVydFJlc291cmNlTG9hZFRpbWVUb0RvY3Vt
ZW50VGltZShjb25zdCBEb2N1bWVudExvYWRUaW1pbmcqIGRvY3VtZW50VGltaW5nLCBpbnQgZGVs
dGFNaWxsaXNlY29uZHMpIGNvbnN0OwotCi0gICAgZG91YmxlIHJlcXVlc3RUaW1lOyAvLyBtb25v
dG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSB3aGVuIHRoZSBwb3J0IHN0YXJ0ZWQgaGFuZGxpbmcg
dGhpcyByZXF1ZXN0LgotICAgIGludCBwcm94eVN0YXJ0OyAvLyBUaGUgcmVzdCBvZiB0aGVzZSBh
cmUgbWlsbGlzZWNvbmQgZGVsdGFzLCB1c2luZyBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KSwgZnJvbSByZXF1ZXN0VGltZS4KKyAgICBkb3VibGUgcmVxdWVzdFRpbWU7CisgICAgaW50IHBy
b3h5U3RhcnQ7CiAgICAgaW50IHByb3h5RW5kOwogICAgIGludCBkbnNTdGFydDsKICAgICBpbnQg
ZG5zRW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9R
TmV0d29ya1JlcGx5SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNwcAppbmRleCBlNzk4NGM0Li45OThmMWY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlI
YW5kbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3
b3JrUmVwbHlIYW5kbGVyLmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgPFFGaWxlSW5m
bz4KICNpbmNsdWRlIDxRTmV0d29ya1JlcGx5PgogI2luY2x1ZGUgPFFOZXR3b3JrQ29va2llPgor
I2luY2x1ZGUgPHF3ZWJmcmFtZS5oPgorI2luY2x1ZGUgPHF3ZWJwYWdlLmg+CiAKICNpbmNsdWRl
IDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvcXQvUmVzb3VyY2VIYW5kbGVRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3F0L1Jlc291cmNlSGFuZGxlUXQuY3BwCmluZGV4IDI2MmNlYjcuLjQ2ZmRj
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUmVzb3Vy
Y2VIYW5kbGVRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9S
ZXNvdXJjZUhhbmRsZVF0LmNwcApAQCAtMzAsOSArMzAsMTEgQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogCisjaW5jbHVkZSAiQ2hyb21lQ2xpZW50
UXQuaCIKICNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiRnJhbWVOZXR3b3JraW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIkZyYW1l
TG9hZGVyQ2xpZW50UXQuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJRTmV0d29ya1JlcGx5SGFuZGxlci5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvQ29va2llSmFyUXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvQ29va2llSmFyUXQuY3BwCmluZGV4IGY3NmNlOTQuLmM5MDEwOGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L0Nvb2tpZUphclF0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9Db29raWVKYXJRdC5jcHAKQEAgLTMzLDggKzMz
LDcgQEAKIAogI2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5j
bHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkZyYW1l
TG9hZGVyQ2xpZW50UXQuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVkZSAiTmV0d29ya2lu
Z0NvbnRleHQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgpAQCAtNDQsNyArNDMsNiBA
QAogI2luY2x1ZGUgPFFOZXR3b3JrQ29va2llPgogI2luY2x1ZGUgPFFTcWxRdWVyeT4KICNpbmNs
dWRlIDxRU3RyaW5nTGlzdD4KLSNpbmNsdWRlIDxRVmFyaWFudD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVt
ZVFTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVFTdHls
ZS5jcHAKaW5kZXggNzU4NTlkOC4uZjYyODZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvUmVuZGVyVGhlbWVRU3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3F0L1JlbmRlclRoZW1lUVN0eWxlLmNwcApAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1
ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAj
aW5jbHVkZSAiQ2hyb21lLmgiCi0jaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAi
Q2hyb21lQ2xpZW50UXQuaCIKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiRm9udC5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vcXQvUmVuZGVyVGhlbWVRdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5k
ZXJUaGVtZVF0LmNwcAppbmRleCBkODc3YzQ5Li5iNjVkZTMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0LmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1
ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAj
aW5jbHVkZSAiQ2hyb21lLmgiCi0jaW5jbHVkZSAiQ2hyb21lQ2xpZW50LmgiCisjaW5jbHVkZSAi
Q2hyb21lQ2xpZW50UXQuaCIKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkZvbnQuaCIK
ICNpbmNsdWRlICJGb250U2VsZWN0b3IuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVGV4dENvbnRyb2wuY3BwCmluZGV4IGYwMjQ3ZTguLmU3YzgwNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0Q29udHJvbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRDb250cm9sLmNwcApAQCAtMjUsNyArMjUs
NiBAQAogI2luY2x1ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKLSNpbmNsdWRlICJSZW5k
ZXJUaGVtZS5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCiAjaW5jbHVkZSAiVGV4dEl0
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVBvc2l0aW9uLmgiCkBAIC0zNSw2ICszNCwzMiBA
QCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKyNpZiAhUExB
VEZPUk0oQ0hST01JVU0pCisvLyBWYWx1ZSBjaG9zZW4gYnkgb2JzZXJ2YXRpb24uICBUaGlzIGNh
biBiZSB0d2Vha2VkLgorc3RhdGljIGNvbnN0IGludCBtaW5Db2xvckNvbnRyYXN0VmFsdWUgPSAx
MzAwOworLy8gRm9yIHRyYW5zcGFyZW50IG9yIHRyYW5zbHVjZW50IGJhY2tncm91bmQgY29sb3Is
IHVzZSBsaWdodGVuaW5nLgorc3RhdGljIGNvbnN0IGludCBtaW5EaXNhYmxlZENvbG9yQWxwaGFW
YWx1ZSA9IDEyODsKKworc3RhdGljIENvbG9yIGRpc2FibGVkVGV4dENvbG9yKGNvbnN0IENvbG9y
JiB0ZXh0Q29sb3IsIGNvbnN0IENvbG9yJiBiYWNrZ3JvdW5kQ29sb3IpCit7CisgICAgLy8gVGhl
IGV4cGxpY2l0IGNoZWNrIGZvciBibGFjayBpcyBhbiBvcHRpbWl6YXRpb24gZm9yIHRoZSA5OSUg
Y2FzZSAoYmxhY2sgb24gd2hpdGUpLgorICAgIC8vIFRoaXMgYWxzbyBtZWFucyB0aGF0IGJsYWNr
IG9uIGJsYWNrIHdpbGwgdHVybiBpbnRvIGdyZXkgb24gYmxhY2sgd2hlbiBkaXNhYmxlZC4KKyAg
ICBDb2xvciBkaXNhYmxlZENvbG9yOworICAgIGlmICh0ZXh0Q29sb3IucmdiKCkgPT0gQ29sb3I6
OmJsYWNrIHx8IGJhY2tncm91bmRDb2xvci5hbHBoYSgpIDwgbWluRGlzYWJsZWRDb2xvckFscGhh
VmFsdWUgfHwgZGlmZmVyZW5jZVNxdWFyZWQodGV4dENvbG9yLCBDb2xvcjo6d2hpdGUpID4gZGlm
ZmVyZW5jZVNxdWFyZWQoYmFja2dyb3VuZENvbG9yLCBDb2xvcjo6d2hpdGUpKQorICAgICAgICBk
aXNhYmxlZENvbG9yID0gdGV4dENvbG9yLmxpZ2h0KCk7CisgICAgZWxzZQorICAgICAgICBkaXNh
YmxlZENvbG9yID0gdGV4dENvbG9yLmRhcmsoKTsKKyAgICAKKyAgICAvLyBJZiB0aGVyZSdzIG5v
dCB2ZXJ5IG11Y2ggY29udHJhc3QgYmV0d2VlbiB0aGUgZGlzYWJsZWQgY29sb3IgYW5kIHRoZSBi
YWNrZ3JvdW5kIGNvbG9yLAorICAgIC8vIGp1c3QgbGVhdmUgdGhlIHRleHQgY29sb3IgYWxvbmUu
ICBXZSBkb24ndCB3YW50IHRvIGNoYW5nZSBhIGdvb2QgY29udHJhc3QgY29sb3Igc2NoZW1lIHNv
IHRoYXQgaXQgaGFzIHJlYWxseSBiYWQgY29udHJhc3QuCisgICAgLy8gSWYgdGhlIHRoZSBjb250
cmFzdCB3YXMgYWxyZWFkeSBwb29yLCB0aGVuIGl0IGRvZXNuJ3QgZG8gYW55IGdvb2QgdG8gY2hh
bmdlIGl0IHRvIGEgZGlmZmVyZW50IHBvb3IgY29udHJhc3QgY29sb3Igc2NoZW1lLgorICAgIGlm
IChkaWZmZXJlbmNlU3F1YXJlZChkaXNhYmxlZENvbG9yLCBiYWNrZ3JvdW5kQ29sb3IpIDwgbWlu
Q29sb3JDb250cmFzdFZhbHVlKQorICAgICAgICByZXR1cm4gdGV4dENvbG9yOworICAgIAorICAg
IHJldHVybiBkaXNhYmxlZENvbG9yOworfQorI2VuZGlmCisKIFJlbmRlclRleHRDb250cm9sOjpS
ZW5kZXJUZXh0Q29udHJvbChOb2RlKiBub2RlKQogICAgIDogUmVuZGVyQmxvY2sobm9kZSkKIHsK
QEAgLTk2LDggKzEyMSwxMyBAQCB2b2lkIFJlbmRlclRleHRDb250cm9sOjphZGp1c3RJbm5lclRl
eHRTdHlsZShjb25zdCBSZW5kZXJTdHlsZSogc3RhcnRTdHlsZSwgUmVuZAogICAgIHRleHRCbG9j
a1N0eWxlLT5zZXRVbmljb2RlQmlkaShzdHlsZSgpLT51bmljb2RlQmlkaSgpKTsKIAogICAgIGJv
b2wgZGlzYWJsZWQgPSB1cGRhdGVVc2VyTW9kaWZ5UHJvcGVydHkobm9kZSgpLCB0ZXh0QmxvY2tT
dHlsZSk7Ci0gICAgaWYgKGRpc2FibGVkKQotICAgICAgICB0ZXh0QmxvY2tTdHlsZS0+c2V0Q29s
b3IodGhlbWUoKS0+ZGlzYWJsZWRUZXh0Q29sb3IodGV4dEJsb2NrU3R5bGUtPnZpc2l0ZWREZXBl
bmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9yKSwgc3RhcnRTdHlsZS0+dmlzaXRlZERlcGVuZGVu
dENvbG9yKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSkpOworICAgIGlmIChkaXNhYmxlZCkg
eworI2lmIFBMQVRGT1JNKENIUk9NSVVNKQorICAgICAgICB0ZXh0QmxvY2tTdHlsZS0+c2V0Q29s
b3IodGV4dEJsb2NrU3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNvbG9y
KSk7CisjZWxzZQorICAgICAgICB0ZXh0QmxvY2tTdHlsZS0+c2V0Q29sb3IoZGlzYWJsZWRUZXh0
Q29sb3IodGV4dEJsb2NrU3R5bGUtPnZpc2l0ZWREZXBlbmRlbnRDb2xvcihDU1NQcm9wZXJ0eUNv
bG9yKSwgc3RhcnRTdHlsZS0+dmlzaXRlZERlcGVuZGVudENvbG9yKENTU1Byb3BlcnR5QmFja2dy
b3VuZENvbG9yKSkpOworI2VuZGlmCisgICAgfQogfQogCiBpbnQgUmVuZGVyVGV4dENvbnRyb2w6
OnRleHRCbG9ja0hlaWdodCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRo
ZW1lLmNwcAppbmRleCAyOGM1NjA0Li40ZWY5NTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZS5jcHAKQEAgLTEwOTEsMzAgKzEwOTEsNiBAQCBDb2xvciBSZW5kZXJUaGVt
ZTo6dGFwSGlnaGxpZ2h0Q29sb3IoKQogfQogI2VuZGlmCiAKLS8vIFZhbHVlIGNob3NlbiBieSBv
YnNlcnZhdGlvbi4gVGhpcyBjYW4gYmUgdHdlYWtlZC4KLXN0YXRpYyBjb25zdCBpbnQgbWluQ29s
b3JDb250cmFzdFZhbHVlID0gMTMwMDsKLS8vIEZvciB0cmFuc3BhcmVudCBvciB0cmFuc2x1Y2Vu
dCBiYWNrZ3JvdW5kIGNvbG9yLCB1c2UgbGlnaHRlbmluZy4KLXN0YXRpYyBjb25zdCBpbnQgbWlu
RGlzYWJsZWRDb2xvckFscGhhVmFsdWUgPSAxMjg7Ci0KLUNvbG9yIFJlbmRlclRoZW1lOjpkaXNh
YmxlZFRleHRDb2xvcihjb25zdCBDb2xvciYgdGV4dENvbG9yLCBjb25zdCBDb2xvciYgYmFja2dy
b3VuZENvbG9yKSBjb25zdAotewotICAgIC8vIFRoZSBleHBsaWNpdCBjaGVjayBmb3IgYmxhY2sg
aXMgYW4gb3B0aW1pemF0aW9uIGZvciB0aGUgOTklIGNhc2UgKGJsYWNrIG9uIHdoaXRlKS4KLSAg
ICAvLyBUaGlzIGFsc28gbWVhbnMgdGhhdCBibGFjayBvbiBibGFjayB3aWxsIHR1cm4gaW50byBn
cmV5IG9uIGJsYWNrIHdoZW4gZGlzYWJsZWQuCi0gICAgQ29sb3IgZGlzYWJsZWRDb2xvcjsKLSAg
ICBpZiAodGV4dENvbG9yLnJnYigpID09IENvbG9yOjpibGFjayB8fCBiYWNrZ3JvdW5kQ29sb3Iu
YWxwaGEoKSA8IG1pbkRpc2FibGVkQ29sb3JBbHBoYVZhbHVlIHx8IGRpZmZlcmVuY2VTcXVhcmVk
KHRleHRDb2xvciwgQ29sb3I6OndoaXRlKSA+IGRpZmZlcmVuY2VTcXVhcmVkKGJhY2tncm91bmRD
b2xvciwgQ29sb3I6OndoaXRlKSkKLSAgICAgICAgZGlzYWJsZWRDb2xvciA9IHRleHRDb2xvci5s
aWdodCgpOwotICAgIGVsc2UKLSAgICAgICAgZGlzYWJsZWRDb2xvciA9IHRleHRDb2xvci5kYXJr
KCk7Ci0gICAgCi0gICAgLy8gSWYgdGhlcmUncyBub3QgdmVyeSBtdWNoIGNvbnRyYXN0IGJldHdl
ZW4gdGhlIGRpc2FibGVkIGNvbG9yIGFuZCB0aGUgYmFja2dyb3VuZCBjb2xvciwKLSAgICAvLyBq
dXN0IGxlYXZlIHRoZSB0ZXh0IGNvbG9yIGFsb25lLiBXZSBkb24ndCB3YW50IHRvIGNoYW5nZSBh
IGdvb2QgY29udHJhc3QgY29sb3Igc2NoZW1lIHNvIHRoYXQgaXQgaGFzIHJlYWxseSBiYWQgY29u
dHJhc3QuCi0gICAgLy8gSWYgdGhlIHRoZSBjb250cmFzdCB3YXMgYWxyZWFkeSBwb29yLCB0aGVu
IGl0IGRvZXNuJ3QgZG8gYW55IGdvb2QgdG8gY2hhbmdlIGl0IHRvIGEgZGlmZmVyZW50IHBvb3Ig
Y29udHJhc3QgY29sb3Igc2NoZW1lLgotICAgIGlmIChkaWZmZXJlbmNlU3F1YXJlZChkaXNhYmxl
ZENvbG9yLCBiYWNrZ3JvdW5kQ29sb3IpIDwgbWluQ29sb3JDb250cmFzdFZhbHVlKQotICAgICAg
ICByZXR1cm4gdGV4dENvbG9yOwotICAgIAotICAgIHJldHVybiBkaXNhYmxlZENvbG9yOwotfQot
CiB2b2lkIFJlbmRlclRoZW1lOjpzZXRDdXN0b21Gb2N1c1JpbmdDb2xvcihjb25zdCBDb2xvciYg
YykKIHsKICAgICBjdXN0b21Gb2N1c1JpbmdDb2xvcigpID0gYzsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclRoZW1lLmgKaW5kZXggNjU0OWMxYi4uZjlhOTQxZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRoZW1lLmgKQEAgLTE0Niw4ICsxNDYsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBDb2xvciBwbGF0Zm9ybUFjdGl2ZVRleHRTZWFyY2hIaWdobGlnaHRDb2xvcigpIGNv
bnN0OwogICAgIHZpcnR1YWwgQ29sb3IgcGxhdGZvcm1JbmFjdGl2ZVRleHRTZWFyY2hIaWdobGln
aHRDb2xvcigpIGNvbnN0OwogCi0gICAgdmlydHVhbCBDb2xvciBkaXNhYmxlZFRleHRDb2xvcihj
b25zdCBDb2xvciYgdGV4dENvbG9yLCBjb25zdCBDb2xvciYgYmFja2dyb3VuZENvbG9yKSBjb25z
dDsKLQogICAgIHN0YXRpYyBDb2xvciBmb2N1c1JpbmdDb2xvcigpOwogICAgIHZpcnR1YWwgQ29s
b3IgcGxhdGZvcm1Gb2N1c1JpbmdDb2xvcigpIGNvbnN0IHsgcmV0dXJuIENvbG9yKDAsIDAsIDAp
OyB9CiAgICAgc3RhdGljIHZvaWQgc2V0Q3VzdG9tRm9jdXNSaW5nQ29sb3IoY29uc3QgQ29sb3Im
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9t
aXVtTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bU1h
Yy5oCmluZGV4IGQ5YmMyZjIuLjg3ZDAyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRoZW1lQ2hyb21pdW1NYWMuaApAQCAtMzEsNyArMzEsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBSZW5kZXJUaGVtZUNocm9taXVtTWFjIDogcHVibGljIFJlbmRl
clRoZW1lTWFjIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZW5kZXJUaGVtZT4g
Y3JlYXRlKCk7Ci0KIHByb3RlY3RlZDoKICNpZiBFTkFCTEUoVklERU8pCiAgICAgdmlydHVhbCB2
b2lkIGFkanVzdE1lZGlhU2xpZGVyVGh1bWJTaXplKFJlbmRlclN0eWxlKikgY29uc3Q7CkBAIC02
MCw3ICs1OSw2IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGludCBwb3B1cEludGVybmFsUGFk
ZGluZ1JpZ2h0KFJlbmRlclN0eWxlKikgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBD
b2xvciBkaXNhYmxlZFRleHRDb2xvcihjb25zdCBDb2xvciYgdGV4dENvbG9yLCBjb25zdCBDb2xv
ciYpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRleHRDb2xvcjsgfQogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVBY3RpdmVTdGF0ZShOU0NlbGwqLCBjb25zdCBSZW5kZXJPYmplY3QqKTsKICAgICB2
aXJ0dWFsIFN0cmluZyBleHRyYURlZmF1bHRTdHlsZVNoZWV0KCk7CiAgICAgdmlydHVhbCBib29s
IHNob3VsZFNob3dQbGFjZWhvbGRlcldoZW5Gb2N1c2VkKCkgY29uc3QgT1ZFUlJJREU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGhlbWVDaHJvbWl1bVNraWEu
aCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUaGVtZUNocm9taXVtU2tpYS5oCmlu
ZGV4IGVlZDgxMGIuLmQwZGQ0MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUNocm9taXVtU2tpYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJUaGVtZUNocm9taXVtU2tpYS5oCkBAIC0xNTIsNyArMTUyLDYgQEAgY2xhc3MgUmVu
ZGVyVGhlbWVDaHJvbWl1bVNraWEgOiBwdWJsaWMgUmVuZGVyVGhlbWUgewogI2VuZGlmCiAKIHBy
aXZhdGU6Ci0gICAgdmlydHVhbCBDb2xvciBkaXNhYmxlZFRleHRDb2xvcihjb25zdCBDb2xvciYg
dGV4dENvbG9yLCBjb25zdCBDb2xvciYpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIHRleHRDb2xv
cjsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTaG93UGxhY2Vob2xkZXJXaGVuRm9jdXNlZCgp
IGNvbnN0IE9WRVJSSURFOwogCiAgICAgaW50IG1lbnVMaXN0SW50ZXJuYWxQYWRkaW5nKFJlbmRl
clN0eWxlKiwgaW50IHBhZGRpbmdUeXBlKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3dlYmF1ZGlvL0RPTVdpbmRvd1dlYkF1ZGlvLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3dlYmF1
ZGlvL0RPTVdpbmRvd1dlYkF1ZGlvLmlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZGQxMDhlZi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93ZWJhdWRpby9ET01XaW5kb3dX
ZWJBdWRpby5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLW1vZHVsZSB3aW5k
b3cgewotCi0gICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ29uZGl0aW9uYWw9V0VCX0FVRElPLAot
ICAgICAgICBTdXBwbGVtZW50YWw9RE9NV2luZG93Ci0gICAgXSBET01XaW5kb3dXZWJBdWRpbyB7
Ci0gICAgICAgIGF0dHJpYnV0ZSBbSlNDQ3VzdG9tR2V0dGVyLCBFbmFibGVkQXRSdW50aW1lXSBB
dWRpb0NvbnRleHRDb25zdHJ1Y3RvciB3ZWJraXRBdWRpb0NvbnRleHQ7Ci0gICAgICAgIGF0dHJp
YnV0ZSBBdWRpb1Bhbm5lck5vZGVDb25zdHJ1Y3RvciB3ZWJraXRBdWRpb1Bhbm5lck5vZGU7Ci0g
ICAgICAgIGF0dHJpYnV0ZSBBdWRpb1Byb2Nlc3NpbmdFdmVudENvbnN0cnVjdG9yIEF1ZGlvUHJv
Y2Vzc2luZ0V2ZW50OwotICAgICAgICBhdHRyaWJ1dGUgT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2
ZW50Q29uc3RydWN0b3IgT2ZmbGluZUF1ZGlvQ29tcGxldGlvbkV2ZW50OwotICAgIH07Ci0KLX0K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAppbmRleCBkMmFjODRhLi4wNTkwYTQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAKQEAgLTIwNiw3ICsyMDYsNyBAQCBYTUxIdHRwUmVxdWVzdDo6U3RhdGUgWE1MSHR0
cFJlcXVlc3Q6OnJlYWR5U3RhdGUoKSBjb25zdAogCiBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6OnJl
c3BvbnNlVGV4dChFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAobV9yZXNwb25zZVR5cGVD
b2RlICE9IFJlc3BvbnNlVHlwZURlZmF1bHQgJiYgbV9yZXNwb25zZVR5cGVDb2RlICE9IFJlc3Bv
bnNlVHlwZVRleHQpIHsKKyAgICBpZiAocmVzcG9uc2VUeXBlQ29kZSgpICE9IFJlc3BvbnNlVHlw
ZURlZmF1bHQgJiYgcmVzcG9uc2VUeXBlQ29kZSgpICE9IFJlc3BvbnNlVHlwZVRleHQpIHsKICAg
ICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKICAgICAgICAgcmV0dXJuICIiOwogICAgIH0K
QEAgLTIxNSw3ICsyMTUsNyBAQCBTdHJpbmcgWE1MSHR0cFJlcXVlc3Q6OnJlc3BvbnNlVGV4dChF
eGNlcHRpb25Db2RlJiBlYykKIAogRG9jdW1lbnQqIFhNTEh0dHBSZXF1ZXN0OjpyZXNwb25zZVhN
TChFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBpZiAobV9yZXNwb25zZVR5cGVDb2RlICE9IFJl
c3BvbnNlVHlwZURlZmF1bHQgJiYgbV9yZXNwb25zZVR5cGVDb2RlICE9IFJlc3BvbnNlVHlwZVRl
eHQgJiYgbV9yZXNwb25zZVR5cGVDb2RlICE9IFJlc3BvbnNlVHlwZURvY3VtZW50KSB7CisgICAg
aWYgKHJlc3BvbnNlVHlwZUNvZGUoKSAhPSBSZXNwb25zZVR5cGVEZWZhdWx0ICYmIHJlc3BvbnNl
VHlwZUNvZGUoKSAhPSBSZXNwb25zZVR5cGVUZXh0ICYmIHJlc3BvbnNlVHlwZUNvZGUoKSAhPSBS
ZXNwb25zZVR5cGVEb2N1bWVudCkgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwog
ICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0yNDQsNyArMjQ0LDcgQEAgRG9jdW1lbnQqIFhN
TEh0dHBSZXF1ZXN0OjpyZXNwb25zZVhNTChFeGNlcHRpb25Db2RlJiBlYykKICNpZiBFTkFCTEUo
WEhSX1JFU1BPTlNFX0JMT0IpCiBCbG9iKiBYTUxIdHRwUmVxdWVzdDo6cmVzcG9uc2VCbG9iKEV4
Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogewotICAgIGlmIChtX3Jlc3BvbnNlVHlwZUNvZGUgIT0g
UmVzcG9uc2VUeXBlQmxvYikgeworICAgIGlmIChyZXNwb25zZVR5cGVDb2RlKCkgIT0gUmVzcG9u
c2VUeXBlQmxvYikgewogICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CkBAIC0xMDQ0LDcgKzEwNDQsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0
OjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQogICAgIGlmIChtX3N0
YXRlIDwgSEVBREVSU19SRUNFSVZFRCkKICAgICAgICAgY2hhbmdlU3RhdGUoSEVBREVSU19SRUNF
SVZFRCk7CiAKLSAgICBib29sIHVzZURlY29kZXIgPSBtX3Jlc3BvbnNlVHlwZUNvZGUgPT0gUmVz
cG9uc2VUeXBlRGVmYXVsdCB8fCBtX3Jlc3BvbnNlVHlwZUNvZGUgPT0gUmVzcG9uc2VUeXBlVGV4
dCB8fCBtX3Jlc3BvbnNlVHlwZUNvZGUgPT0gUmVzcG9uc2VUeXBlRG9jdW1lbnQ7CisgICAgYm9v
bCB1c2VEZWNvZGVyID0gcmVzcG9uc2VUeXBlQ29kZSgpID09IFJlc3BvbnNlVHlwZURlZmF1bHQg
fHwgcmVzcG9uc2VUeXBlQ29kZSgpID09IFJlc3BvbnNlVHlwZVRleHQgfHwgcmVzcG9uc2VUeXBl
Q29kZSgpID09IFJlc3BvbnNlVHlwZURvY3VtZW50OwogCiAgICAgaWYgKHVzZURlY29kZXIgJiYg
IW1fZGVjb2RlcikgewogICAgICAgICBpZiAoIW1fcmVzcG9uc2VFbmNvZGluZy5pc0VtcHR5KCkp
CkBAIC0xMDY4LDcgKzEwNjgsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWNlaXZlRGF0
YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQogCiAgICAgaWYgKHVzZURlY29kZXIpCiAgICAg
ICAgIG1fcmVzcG9uc2VCdWlsZGVyLmFwcGVuZChtX2RlY29kZXItPmRlY29kZShkYXRhLCBsZW4p
KTsKLSAgICBlbHNlIGlmIChtX3Jlc3BvbnNlVHlwZUNvZGUgPT0gUmVzcG9uc2VUeXBlQXJyYXlC
dWZmZXIpIHsKKyAgICBlbHNlIGlmIChyZXNwb25zZVR5cGVDb2RlKCkgPT0gUmVzcG9uc2VUeXBl
QXJyYXlCdWZmZXIpIHsKICAgICAgICAgLy8gQnVmZmVyIGJpbmFyeSBkYXRhLgogICAgICAgICBp
ZiAoIW1fYmluYXJ5UmVzcG9uc2VCdWlsZGVyKQogICAgICAgICAgICAgbV9iaW5hcnlSZXNwb25z
ZUJ1aWxkZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaAppbmRleCBkZDY1OGY4Li42NzE5MjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJl
cXVlc3QuaApAQCAtODQsNyArODQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCB3aXRoQ3JlZGVudGlh
bHMoKSBjb25zdCB7IHJldHVybiBtX2luY2x1ZGVDcmVkZW50aWFsczsgfQogICAgIHZvaWQgc2V0
V2l0aENyZWRlbnRpYWxzKGJvb2wsIEV4Y2VwdGlvbkNvZGUmKTsKICNpZiBFTkFCTEUoWEhSX1JF
U1BPTlNFX0JMT0IpCi0gICAgYm9vbCBhc0Jsb2IoKSBjb25zdCB7IHJldHVybiBtX3Jlc3BvbnNl
VHlwZUNvZGUgPT0gUmVzcG9uc2VUeXBlQmxvYjsgfQorICAgIGJvb2wgYXNCbG9iKCkgY29uc3Qg
eyByZXR1cm4gcmVzcG9uc2VUeXBlQ29kZSgpID09IFJlc3BvbnNlVHlwZUJsb2I7IH0KICAgICB2
b2lkIHNldEFzQmxvYihib29sLCBFeGNlcHRpb25Db2RlJik7CiAjZW5kaWYKICAgICB2b2lkIG9w
ZW4oY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IEtVUkwmLCBFeGNlcHRpb25Db2RlJik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGViYjQwYTMuLjhlNGEwNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDQ2ICsxLDMgQEAKLTIwMTEtMTItMTMgIEtlbm5ldGggUnVz
c2VsbCAgPGtickBnb29nbGUuY29tPgotCi0gICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0
IHIxMDI2OTMuCi0gICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEwMjY5
MwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzMzQK
LQotICAgICAgICBCcm9rZSBDaHJvbWl1bSBXaW5kb3dzIERSVCBidWlsZAotCi0gICAgICAgICog
ZmVhdHVyZXMuZ3lwaToKLQotMjAxMS0xMi0xMyAgUGV0ZXIgQmV2ZXJsb28gIDxwZXRlckBjaHJv
bWl1bS5vcmc+Ci0KLSAgICAgICAgW0Nocm9taXVtXSBQdWxsIGluIEZyZWVUeXBlIGFuZCBkZWNy
ZWFzZSBjaGVjay1vdXQgY29tcGxleGl0eSBmb3IgQW5kcm9pZAotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0MDEKLQotICAgICAgICBQdWxsIGluIEZy
ZWVUeXBlIGluIHRoZSB0aGlyZF9wYXJ0eS8gZGlyZWN0b3J5IGZyb20gYSBzZXBhcmF0ZSBnaXQK
LSAgICAgICAgcmVwb3NpdG9yeSBhdCBDaHJvbWl1bS4gVGhpcyBpbnRyb2R1Y2VzIGEgbmV3IHBy
ZXJlcXVpc2l0ZSBmb3IgY2hlY2tpbmcKLSAgICAgICAgb3V0IHRoZSBDaHJvbWl1bSBXZWJLaXQg
cG9ydCBmb3IgQW5kcm9pZCwgbmFtZWx5IHRoYXQgZ2l0IG5lZWRzIHRvIGJlCi0gICAgICAgIGF2
YWlsYWJsZSBvbiB0aGUgc3lzdGVtLiBnY2xpZW50IGNhbiBoYW5kbGUgdGhpcyBqdXN0IGZpbmUu
Ci0KLSAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KLQotICAgICAgICAqIERFUFM6Ci0K
LTIwMTEtMTItMTMgIEFsb2sgUHJpeWFkYXJzaGkgIDxhbG9rcEBjaHJvbWl1bS5vcmc+Ci0KLSAg
ICAgICAgW2Nocm9taXVtXSBjb21wb3NpdGluZy9tYXNrcyBsYXlvdXQgdGVzdHMgZmFpbCB3aXRo
IGFjY2VsZXJhdGVkIGRyYXdpbmcKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTcyNzYwCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgU3RlcGhlbiBXaGl0ZS4K
LQotICAgICAgICAqIHRlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwOgotICAgICAgICAo
V1RGOjpGYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlVGV4dHVyZSk6Ci0KLTIwMTEtMTIt
MTMgIFN0ZXBoZW4gV2hpdGUgIDxzZW5vcmJsYW5jb0BjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAg
RW5hYmxlIENTU19GSUxURVJTIGluIENocm9taXVtLgotICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzMzQKLQotICAgICAgICBSZXZpZXdlZCBieSBLZW5u
ZXRoIFJ1c3NlbGwuCi0KLSAgICAgICAgKiBmZWF0dXJlcy5neXBpOgotCiAyMDExLTEyLTEyICBS
eW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIFdlYktpdCBjb2RlIHNo
b3VsZG4ndCBiZSBjYWxsaW5nIGFwcGx5Q29tbWFuZCBkaXJlY3RseQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9ERVBTIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9ERVBTCmlu
ZGV4IGQ5ODc3ODIuLjNhYWZiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
REVQUworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0RFUFMKQEAgLTE3NiwxMCArMTc2LDYg
QEAgZGVwc19vcyA9IHsKICAgICAndGhpcmRfcGFydHkvb3BlbnNzbCc6CiAgICAgICBGcm9tKCdj
aHJvbWl1bV9kZXBzJywgJ3NyYy90aGlyZF9wYXJ0eS9vcGVuc3NsJyksCiAgIH0sCi0gICdhbmRy
b2lkJzogewotICAgICd0aGlyZF9wYXJ0eS9mcmVldHlwZSc6Ci0gICAgICAnaHR0cHM6Ly9naXQu
Y2hyb21pdW0ub3JnL2Nocm9taXVtL3NyYy90aGlyZF9wYXJ0eS9mcmVldHlwZS5naXQnLAotICB9
LAogfQogCiBza2lwX2NoaWxkX2luY2x1ZGVzID0gWwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggNDljZThk
Zi4uNjNhYTQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxl
ZExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC01OCw2ICs1OCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5GYWtlTGF5ZXJUZXh0dXJlVXBkYXRlcigpIHsgfQogCiAgICAgdmlydHVhbCBQ
YXNzT3duUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4
dHVyZU1hbmFnZXIqIG1hbmFnZXIpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBUZXh0dXJlKE1hbmFn
ZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdlcikpKTsgfQorICAgIHZpcnR1YWwgT3JpZW50YXRpb24g
b3JpZW50YXRpb24oKSB7IHJldHVybiBCb3R0b21VcE9yaWVudGF0aW9uOyB9CiAgICAgdmlydHVh
bCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtKSB7IHJldHVy
biBTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBOyB9CiAgICAgdmlydHVhbCB2b2lkIHByZXBhcmVUb1Vw
ZGF0ZShjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50U2l6ZSYsIGludCwgZmxvYXQpIHsgfQogfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBiZmIwMzYwLi4wNTllZjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDE5NCArMSwz
IEBACi0yMDExLTEyLTEzICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxjYWlvLm9s
aXZlaXJhQG9wZW5ib3NzYS5vcmc+Ci0KLSAgICAgICAgW1F0XVtXSzJdIE1ha2UgUXRQYWdlQ2xp
ZW50IGRpc3BhdGNoIGRpcmVjdGx5IHRvIFdlYlZpZXcgd2hlbiBwb3NzaWJsZQotICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0MDcKLQotICAgICAgICBS
ZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KLQotICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQv
cXF1aWNrd2Vidmlldy5jcHA6Ci0gICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6UVF1aWNr
V2ViVmlld1ByaXZhdGUpOgotICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6On5RUXVpY2tX
ZWJWaWV3UHJpdmF0ZSk6Ci0gICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6aW5pdGlhbGl6
ZSk6Ci0gICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6cGFnZURpZFJlcXVlc3RTY3JvbGwp
OgotICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OnByb2Nlc3NEaWRDcmFzaCk6Ci0gICAg
ICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkUmVsYXVuY2hQcm9jZXNzKToKLSAgICAgICAg
KFFRdWlja1dlYlZpZXdQcml2YXRlOjp2aWV3U2l6ZSk6Ci0gICAgICAgIChRUXVpY2tXZWJWaWV3
UHJpdmF0ZTo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QpOgotICAgICAg
ICAoUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6UVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbCk6
Ci0gICAgICAgIChRUXVpY2tXZWJWaWV3OjpRUXVpY2tXZWJWaWV3KToKLSAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmg6Ci0gICAgICAgICogVUlQcm9jZXNzL3F0
L1F0UGFnZUNsaWVudC5jcHA6Ci0gICAgICAgIChRdFBhZ2VDbGllbnQ6OlF0UGFnZUNsaWVudCk6
Ci0gICAgICAgIChRdFBhZ2VDbGllbnQ6OnNldFZpZXdOZWVkc0Rpc3BsYXkpOgotICAgICAgICAo
UXRQYWdlQ2xpZW50OjpwYWdlRGlkUmVxdWVzdFNjcm9sbCk6Ci0gICAgICAgIChRdFBhZ2VDbGll
bnQ6OnByb2Nlc3NEaWRDcmFzaCk6Ci0gICAgICAgIChRdFBhZ2VDbGllbnQ6OmRpZFJlbGF1bmNo
UHJvY2Vzcyk6Ci0gICAgICAgIChRdFBhZ2VDbGllbnQ6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6
Ci0gICAgICAgIChRdFBhZ2VDbGllbnQ6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyk6Ci0g
ICAgICAgIChRdFBhZ2VDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudVByb3h5KToKLSAgICAgICAgKFF0
UGFnZUNsaWVudDo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QpOgotICAg
ICAgICAoUXRQYWdlQ2xpZW50Ojp2aWV3U2l6ZSk6Ci0gICAgICAgIChRdFBhZ2VDbGllbnQ6Omlz
Vmlld0ZvY3VzZWQpOgotICAgICAgICAoUXRQYWdlQ2xpZW50Ojppc1ZpZXdWaXNpYmxlKToKLSAg
ICAgICAgKiBVSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50Lmg6Ci0gICAgICAgIChRdFBhZ2VDbGll
bnQ6OmluaXRpYWxpemUpOgotICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5j
cHA6Ci0gICAgICAgIChRdFdlYlBhZ2VQcm94eTo6UXRXZWJQYWdlUHJveHkpOgotICAgICAgICAq
IFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oOgotCi0yMDExLTEyLTEzICBDYXJsb3MgR2Fy
Y2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KLQotICAgICAgICBbR1RLXSBBZGQgc3Vw
cG9ydCBmb3IgamF2YXNjcmlwdCBkaWFsb2dzIGluIFdlYktpdDIgR1RLKyBBUEkKLSAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxMzYyCi0KLSAgICAgICAg
UmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgotCi0gICAgICAgICogVUlQcm9jZXNzL0FQSS9n
dGsvV2ViS2l0VUlDbGllbnQuY3BwOgotICAgICAgICAocnVuSmF2YVNjcmlwdEFsZXJ0KTogQ2Fs
bCB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdEFsZXJ0KCkuCi0gICAgICAgIChydW5KYXZhU2Ny
aXB0Q29uZmlybSk6IENhbGwgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRDb25maXJtKCkuCi0g
ICAgICAgIChydW5KYXZhU2NyaXB0UHJvbXB0KTogQ2FsbCB3ZWJraXRXZWJWaWV3UnVuSmF2YVNj
cmlwdFByb21wdCgpLgotICAgICAgICAod2Via2l0VUlDbGllbnRBdHRhY2hVSUNsaWVudFRvUGFn
ZSk6IEFkZCBpbXBsZW1lbnRhdGlvbiBmb3IKLSAgICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0LCBy
dW5KYXZhU2NyaXB0Q29uZmlybSBhbmQgcnVuSmF2YVNjcmlwdFByb21wdAotICAgICAgICBjYWxs
YmFja3MuCi0gICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHA6Ci0g
ICAgICAgICh3ZWJraXRXZWJWaWV3Q3JlYXRlSmF2YVNjcmlwdERpYWxvZyk6ICBIZWxwZXIgZnVu
Y3Rpb24gdG8gY3JlYXRlCi0gICAgICAgIGphdmFzY3JpcHQgZGlhbG9ncy4KLSAgICAgICAgKHdl
YmtpdFdlYlZpZXdTY3JpcHRBbGVydCk6IERlZmF1bHQgaW1wbGVtZW50YXRpb24gb2Ygc2lnbmFs
Ci0gICAgICAgIFdlYktpdFdlYlZpZXc6OnNjcmlwdC1hbGVydCB0aGF0IHNob3dzIGEgbWVzc2Fn
ZSBkaWFsb2cuCi0gICAgICAgICh3ZWJraXRXZWJWaWV3U2NyaXB0Q29uZmlybSk6IERlZmF1bHQg
aW1wbGVtZW50YXRpb24gb2Ygc2lnbmFsCi0gICAgICAgIFdlYktpdFdlYlZpZXc6OnNjcmlwdC1j
b25maXJtIHRoYXQgc2hvd3MgYSBxdWVzdGlvbiBkaWFsb2cuCi0gICAgICAgICh3ZWJraXRXZWJW
aWV3U2NyaXB0UHJvbXB0KTogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBzaWduYWwKLSAgICAg
ICAgV2ViS2l0V2ViVmlldzo6c2NyaXB0LXByb21wdCB0aGF0IHNob3dzIGEgcXVlc3Rpb24gZGlh
bG9nIHdpdGggYQotICAgICAgICB0ZXh0IGVudHJ5LgotICAgICAgICAod2Via2l0X3dlYl92aWV3
X2NsYXNzX2luaXQpOgotICAgICAgICAod2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRBbGVydCk6
IEVtaXQgV2ViS2l0V2ViVmlldzo6c2NyaXB0LWFsZXJ0LgotICAgICAgICAod2Via2l0V2ViVmll
d1J1bkphdmFTY3JpcHRDb25maXJtKTogRW1pdCBXZWJLaXRXZWJWaWV3OjpzY3JpcHQtY29uZmly
bS4KLSAgICAgICAgKHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0UHJvbXB0KTogRW1pdCBXZWJL
aXRXZWJWaWV3OjpzY3JpcHQtcHJvbXB0LgotICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFdlYlZpZXcuaDoKLSAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3
UHJpdmF0ZS5oOgotICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL3Rlc3RzL1Rlc3RXZWJLaXRX
ZWJWaWV3LmNwcDoKLSAgICAgICAgKHRlc3RXZWJWaWV3SmF2YVNjcmlwdERpYWxvZ3MpOgotICAg
ICAgICAoYmVmb3JlQWxsKToKLSAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFy
c2hhbC5saXN0OgotCi0yMDExLTEyLTEzICBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbiAgPGtl
bm5ldGhAd2Via2l0Lm9yZz4KLQotICAgICAgICBbUXRdIE1ha2Ugc3VyZSB0aGF0IHRvdWNoIGV2
ZW50cyByZXN1bHQgaW4gdGhlIHBhZ2UgdmlldyBnYWluaW5nIGZvY3VzCi0KLSAgICAgICAgUmV2
aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCi0KLSAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Fx
dWlja3dlYnBhZ2UuY3BwOgotICAgICAgICAoUVF1aWNrV2ViUGFnZTo6dG91Y2hFdmVudCk6IEZv
cmNlIGFjdGl2ZSBmb2N1cy4KLSAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZp
ZXcuY3BwOgotICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19wLmg6IFJl
bW92ZSA6OnRvdWNoRXZlbnQgb3ZlcnJpZGUuCi0KLTIwMTEtMTItMTMgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgotCi0gICAgICAgIFtHVEtdIEluaXRpYWwgVUkg
Y2xpZW50IGltcGxlbWVudGF0aW9uIGZvciBXZWJLaXQyIEdUSyArQVBJCi0gICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02OTc1MwotCi0gICAgICAgIFJldmll
d2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KLQotICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGQg
bmV3IGZpbGVzIHRvIGNvbXBpbGF0aW9uLgotICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdFVJQ2xpZW50LmNwcDogQWRkZWQuCi0gICAgICAgIChjcmVhdGVOZXdQYWdlKTogQ2FsbCB3
ZWJraXRXZWJWaWV3Q3JlYXRlTmV3UGFnZS4KLSAgICAgICAgKHNob3dQYWdlKTogQ2FsbCB3ZWJr
aXRXZWJWaWV3UmVhZHlUb1Nob3dQYWdlLgotICAgICAgICAoY2xvc2VQYWdlKTogQ2FsbCB3ZWJr
aXRXZWJWaWV3Q2xvc2VQYWdlLgotICAgICAgICAod2Via2l0VUlDbGllbnRBdHRhY2hVSUNsaWVu
dFRvUGFnZSk6IEluaXRpYWxpemUgVUkgY2xpZW50IGFuZAotICAgICAgICBhdHRhY2ggaXQgdG8g
dGhlIGdpdmVuIHBhZ2UuCi0gICAgICAgICh3ZWJraXRfdWlfY2xpZW50X2luaXQpOgotICAgICAg
ICAod2Via2l0X3VpX2NsaWVudF9jbGFzc19pbml0KToKLSAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2d0ay9XZWJLaXRVSUNsaWVudC5oOiBBZGRlZC4KLSAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmNwcDoKLSAgICAgICAgKHdlYmtpdFdlYlZpZXdDcmVhdGUpOiBEZWZh
dWx0IGltcGxlbWVudGF0aW9uIG9mIHNpZ25hbAotICAgICAgICBXZWJLaXRXZWJWaWV3OjpjcmVh
dGUgdGhhdCBzaW1wbHkgcmV0dXJucyBOVUxMLgotICAgICAgICAod2Via2l0V2ViVmlld0NvbnN0
cnVjdGVkKTogQ3JlYXRlIHRoZSBkZWZhdWx0IFVJIGNsaWVudC4KLSAgICAgICAgKHdlYmtpdFdl
YlZpZXdBY2N1bXVsYXRvck9iamVjdEhhbmRsZWQpOgotICAgICAgICAod2Via2l0X3dlYl92aWV3
X2NsYXNzX2luaXQpOgotICAgICAgICAod2Via2l0V2ViVmlld0NyZWF0ZU5ld1BhZ2UpOiBFbWl0
IGNyZWF0ZSBzaWduYWwuCi0gICAgICAgICh3ZWJraXRXZWJWaWV3UmVhZHlUb1Nob3dQYWdlKTog
RW1pdCByZWFkeS10by1zaG93IHNpZ25hbC4KLSAgICAgICAgKHdlYmtpdFdlYlZpZXdDbG9zZVBh
Z2UpOiBFbWl0IGNsb3NlIHNpZ25hbC4KLSAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3Lmg6Ci0gICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1By
aXZhdGUuaDoKLSAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2Vi
Vmlldy5jcHA6Ci0gICAgICAgICh0ZXN0V2ViVmlld0NyZWF0ZVJlYWR5Q2xvc2UpOgotICAgICAg
ICAoYmVmb3JlQWxsKToKLSAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hh
bC5saXN0OgotCi0yMDExLTEyLTEzICBDYWlvIE1hcmNlbG8gZGUgT2xpdmVpcmEgRmlsaG8gIDxj
YWlvLm9saXZlaXJhQG9wZW5ib3NzYS5vcmc+Ci0KLSAgICAgICAgW1F0XVtXSzJdIE1vdmUgbG9h
ZCAmIG5hdmlnYXRpb24gcmVsYXRlZCBmdW5jdGlvbnMgb3V0IG9mIFF0V2ViUGFnZVByb3h5Ci0g
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDM5NQotCi0g
ICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgotCi0gICAgICAgICogVGFyZ2V0LnBy
aToKLSAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwOgotICAgICAg
ICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6Ol9xX29uVmlzaWJsZUNoYW5nZWQpOgotICAgICAgICAo
UVF1aWNrV2ViVmlld1ByaXZhdGU6OnVwZGF0ZVZpZXdwb3J0U2l6ZSk6Ci0gICAgICAgIChRUXVp
Y2tXZWJWaWV3UHJpdmF0ZTo6Y29tcHV0ZVZpZXdwb3J0Q29uc3RyYWludHMpOgotICAgICAgICAo
UVF1aWNrV2ViVmlld1ByaXZhdGU6OnNldFVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cik6
Ci0gICAgICAgIChRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6d2ViUGFnZVByb3h5KToKLSAgICAgICAg
KFFRdWlja1dlYlZpZXc6OmxvYWQpOgotICAgICAgICAoUVF1aWNrV2ViVmlldzo6Z29CYWNrKToK
LSAgICAgICAgKFFRdWlja1dlYlZpZXc6OmdvRm9yd2FyZCk6Ci0gICAgICAgIChRUXVpY2tXZWJW
aWV3OjpzdG9wKToKLSAgICAgICAgKFFRdWlja1dlYlZpZXc6OnJlbG9hZCk6Ci0gICAgICAgIChR
UXVpY2tXZWJWaWV3Ojp1cmwpOgotICAgICAgICAoUVF1aWNrV2ViVmlldzo6Y2FuR29CYWNrKToK
LSAgICAgICAgKFFRdWlja1dlYlZpZXc6OmNhbkdvRm9yd2FyZCk6Ci0gICAgICAgIChRUXVpY2tX
ZWJWaWV3Ojpsb2FkaW5nKToKLSAgICAgICAgKFFRdWlja1dlYlZpZXc6OmNhblJlbG9hZCk6Ci0g
ICAgICAgIChRUXVpY2tXZWJWaWV3Ojp0aXRsZSk6Ci0gICAgICAgIChRUXVpY2tXZWJWaWV3Ojps
b2FkSHRtbCk6Ci0gICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5o
OgotICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHA6Ci0gICAgICAgIChR
dFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QpOgot
ICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5oOgotCi0yMDExLTEyLTEzICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KLQotICAgICAgICBVbnJl
dmlld2VkLiBGaXggR1RLKyBidWlsZCBhZnRlciByMTAyNjQwLgotCi0gICAgICAgICogR05VbWFr
ZWZpbGUuYW06IEFkZCBEb3dubG9hZFByb3h5IHNvdXJjZXMgYWdhaW4uCi0KLTIwMTEtMTItMTIg
IENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxobyAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3Nh
Lm9yZz4KLQotICAgICAgICBbUXRdW1dLMl0gTW92ZSB1bmRvICYgZWRpdCBjb21tYW5kIFBhZ2VD
bGllbnQgY2FsbGJhY2tzIGludG8gUXRXZWJVbmRvQ29udHJvbGxlcgotICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzNjQKLQotICAgICAgICBSZXZpZXdl
ZCBieSBTaW1vbiBIYXVzbWFubi4KLQotICAgICAgICBUaGUgZm91ciBjYWxsYmFja3MgaW4gUGFn
ZUNsaWVudCByZWxhdGVkIHRvIFVuZG8gZGVwZW5kIG9ubHkgb24gdGhlIFFVbmRvU3RhY2suIFNv
IHdlCi0gICAgICAgIG1vdmUgdGhlaXIgaGFuZGxpbmcgdG8gYSBRdFdlYlVuZG9Db250cm9sbGVy
IChvd25lZCBieSBRUXVpY2tXZWJWaWV3UHJpdmF0ZSkuIFRoaXMgYWxzbwotICAgICAgICBtYWtl
IFF0V2ViVW5kb0NvbW1hbmQgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLgotCi0gICAgICAgICog
VGFyZ2V0LnByaToKLSAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3Bw
OgotICAgICAgICAoUVF1aWNrV2ViVmlld1ByaXZhdGU6OlFRdWlja1dlYlZpZXdQcml2YXRlKToK
LSAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcF9wLmg6Ci0gICAgICAg
ICogVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVudC5jcHA6Ci0gICAgICAgIChRdFBhZ2VDbGllbnQ6
OnJlZ2lzdGVyRWRpdENvbW1hbmQpOgotICAgICAgICAoUXRQYWdlQ2xpZW50OjpjbGVhckFsbEVk
aXRDb21tYW5kcyk6Ci0gICAgICAgIChRdFBhZ2VDbGllbnQ6OmNhblVuZG9SZWRvKToKLSAgICAg
ICAgKFF0UGFnZUNsaWVudDo6ZXhlY3V0ZVVuZG9SZWRvKToKLSAgICAgICAgKiBVSVByb2Nlc3Mv
cXQvUXRQYWdlQ2xpZW50Lmg6Ci0gICAgICAgIChRdFBhZ2VDbGllbnQ6OmluaXRpYWxpemUpOgot
ICAgICAgICAqIFVJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHA6Ci0gICAgICAgICogVUlQ
cm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5Lmg6Ci0gICAgICAgICogVUlQcm9jZXNzL3F0L1F0V2Vi
VW5kb0NvbnRyb2xsZXIuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0V2ViVW5kb0NvbW1hbmQuY3BwLgotICAgICAgICAoUXRXZWJVbmRvQ29tbWFuZDo6aW5V
bmRvUmVkbyk6Ci0gICAgICAgIChRdFdlYlVuZG9Db21tYW5kOjpRdFdlYlVuZG9Db21tYW5kKToK
LSAgICAgICAgKFF0V2ViVW5kb0NvbW1hbmQ6On5RdFdlYlVuZG9Db21tYW5kKToKLSAgICAgICAg
KFF0V2ViVW5kb0NvbW1hbmQ6OnJlZG8pOgotICAgICAgICAoUXRXZWJVbmRvQ29tbWFuZDo6dW5k
byk6Ci0gICAgICAgIChRdFdlYlVuZG9Db250cm9sbGVyOjpRdFdlYlVuZG9Db250cm9sbGVyKToK
LSAgICAgICAgKFF0V2ViVW5kb0NvbnRyb2xsZXI6OnJlZ2lzdGVyRWRpdENvbW1hbmQpOgotICAg
ICAgICAoUXRXZWJVbmRvQ29udHJvbGxlcjo6Y2xlYXJBbGxFZGl0Q29tbWFuZHMpOgotICAgICAg
ICAoUXRXZWJVbmRvQ29udHJvbGxlcjo6Y2FuVW5kb1JlZG8pOgotICAgICAgICAoUXRXZWJVbmRv
Q29udHJvbGxlcjo6ZXhlY3V0ZVVuZG9SZWRvKToKLSAgICAgICAgKiBVSVByb2Nlc3MvcXQvUXRX
ZWJVbmRvQ29udHJvbGxlci5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L3F0L1F0V2ViVW5kb0NvbW1hbmQuaC4KLQogMjAxMS0xMi0xMiAgQW5kcmVhcyBLbGluZyAgPGts
aW5nQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVzaXppbmcgQ2FwcHVjY2lubyBpcyB2ZXJ5IGxh
Z2d5IG9uIFdlYktpdCBzaW5jZSBTYWZhcmkgNS4xCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCmluZGV4IDU5
ZjE5ZjcuLmUwZmQxYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFt
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0dOVW1ha2VmaWxlLmFtCkBAIC05NSw4ICs5NSw2IEBAIHdl
YmtpdDJndGtfaGVhZGVycyA9IFwKIHdlYmtpdDJfYnVpbHRfc291cmNlcyArPSBcCiAJRGVyaXZl
ZFNvdXJjZXMvV2ViS2l0Mi9BdXRoZW50aWNhdGlvbk1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3Bw
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJLaXQyL0F1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2Vz
LmggXAotCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvRG93bmxvYWRQcm94eU1lc3NhZ2VSZWNlaXZl
ci5jcHAgXAotCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvRG93bmxvYWRQcm94eU1lc3NhZ2VzLmgg
XAogCURlcml2ZWRTb3VyY2VzL1dlYktpdDIvRHJhd2luZ0FyZWFNZXNzYWdlUmVjZWl2ZXIuY3Bw
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJLaXQyL0RyYXdpbmdBcmVhTWVzc2FnZXMuaCBcCiAJRGVy
aXZlZFNvdXJjZXMvV2ViS2l0Mi9EcmF3aW5nQXJlYVByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBc
CkBAIC01MjcsOCArNTI1LDYgQEAgbGlid2Via2l0Mmd0a19AV0VCS0lUR1RLX0FQSV9NQUpPUl9W
RVJTSU9OQF9AV0VCS0lUR1RLX0FQSV9NSU5PUl9WRVJTSU9OQF9sYV9TT1UKIAlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRTZXR0aW5ncy5jcHAgXAogCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzLmggXAogCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFNldHRpbmdzUHJpdmF0ZS5oIFwKLQlTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAgXAotCVNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmggXAogCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlcXVlc3QuY3BwIFwKIAlTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVUklSZXF1ZXN0LmggXAogCVNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVSSVJlc3BvbnNlLmNwcCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJpIGIvU291cmNlL1dlYktpdDIvVGFyZ2V0LnByaQppbmRl
eCA3ZWIwOGNkLi4yY2ExMTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9UYXJnZXQucHJp
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1RhcmdldC5wcmkKQEAgLTIxMyw3ICsyMTMsNiBAQCBIRUFE
RVJTICs9IFwKICAgICBVSVByb2Nlc3MvVGlsZWREcmF3aW5nQXJlYVByb3h5LmggXAogICAgIFVJ
UHJvY2Vzcy9WaXNpdGVkTGlua1Byb3ZpZGVyLmggXAogICAgIFVJUHJvY2Vzcy9XZWJBcHBsaWNh
dGlvbkNhY2hlTWFuYWdlclByb3h5LmggXAotICAgIFVJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExp
c3QuaCBcCiAgICAgVUlQcm9jZXNzL1dlYkNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCBcCiAgICAg
VUlQcm9jZXNzL1dlYkNvbnRleHQuaCBcCiAgICAgVUlQcm9jZXNzL1dlYkNvbnRleHRDb25uZWN0
aW9uQ2xpZW50LmggXApAQCAtMjcwLDcgKzI2OSw3IEBAIEhFQURFUlMgKz0gXAogICAgIFVJUHJv
Y2Vzcy9xdC9RdFNHVXBkYXRlUXVldWUuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1F0U0dUaWxlTm9k
ZS5oIFwKICAgICBVSVByb2Nlc3MvcXQvUXRWaWV3cG9ydEludGVyYWN0aW9uRW5naW5lLmggXAot
ICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlVuZG9Db250cm9sbGVyLmggXAorICAgIFVJUHJvY2Vzcy9x
dC9RdFdlYlVuZG9Db21tYW5kLmggXAogICAgIFVJUHJvY2Vzcy9xdC9XZWJDb250ZXh0TWVudVBy
b3h5UXQuaCBcCiAgICAgVUlQcm9jZXNzL3F0L1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJRdC5oIFwK
ICAgICBVSVByb2Nlc3MvcXQvV2ViUG9wdXBNZW51UHJveHlRdC5oIFwKQEAgLTUxMiw3ICs1MTEs
NyBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHku
Y3BwIFwKICAgICBVSVByb2Nlc3MvRHJhd2luZ0FyZWFQcm94eS5jcHAgXAogICAgIFVJUHJvY2Vz
cy9EcmF3aW5nQXJlYVByb3h5SW1wbC5jcHAgXAotICAgIFVJUHJvY2Vzcy9xdC9RdFdlYlVuZG9D
b250cm9sbGVyLmNwcCBcCisgICAgVUlQcm9jZXNzL3F0L1F0V2ViVW5kb0NvbW1hbmQuY3BwIFwK
ICAgICBVSVByb2Nlc3MvRmluZEluZGljYXRvci5jcHAgXAogICAgIFVJUHJvY2Vzcy9HZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBcCiAgICAgVUlQcm9jZXNzL0dl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eS5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA3NGQ4YzYzLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEx
OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0gKgotICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRl
ICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJLaXRVSUNsaWVudC5oIgotCi0jaW5jbHVkZSAiV2Vi
S2l0V2ViVmlld1ByaXZhdGUuaCIKLSNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKLSNpbmNsdWRl
IDxXZWJLaXQyL1dLQmFzZS5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1HX0RFRklO
RV9UWVBFKFdlYktpdFVJQ2xpZW50LCB3ZWJraXRfdWlfY2xpZW50LCBHX1RZUEVfT0JKRUNUKQot
Ci1zdGF0aWMgV0tQYWdlUmVmIGNyZWF0ZU5ld1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIFdLVVJMUmVx
dWVzdFJlZiwgV0tEaWN0aW9uYXJ5UmVmLCBXS0V2ZW50TW9kaWZpZXJzLCBXS0V2ZW50TW91c2VC
dXR0b24sIGNvbnN0IHZvaWQqKQotewotICAgIHJldHVybiB3ZWJraXRXZWJWaWV3Q3JlYXRlTmV3
UGFnZShXRUJLSVRfV0VCX1ZJRVcodG9JbXBsKHBhZ2UpLT52aWV3V2lkZ2V0KCkpKTsKLX0KLQot
c3RhdGljIHZvaWQgc2hvd1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqKQotewotICAg
IHdlYmtpdFdlYlZpZXdSZWFkeVRvU2hvd1BhZ2UoV0VCS0lUX1dFQl9WSUVXKHRvSW1wbChwYWdl
KS0+dmlld1dpZGdldCgpKSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNsb3NlUGFnZShXS1BhZ2VSZWYg
cGFnZSwgY29uc3Qgdm9pZCopCi17Ci0gICAgd2Via2l0V2ViVmlld0Nsb3NlUGFnZShXRUJLSVRf
V0VCX1ZJRVcodG9JbXBsKHBhZ2UpLT52aWV3V2lkZ2V0KCkpKTsKLX0KLQotc3RhdGljIHZvaWQg
cnVuSmF2YVNjcmlwdEFsZXJ0KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBX
S0ZyYW1lUmVmLCBjb25zdCB2b2lkKikKLXsKLSAgICB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlw
dEFsZXJ0KFdFQktJVF9XRUJfVklFVyh0b0ltcGwocGFnZSktPnZpZXdXaWRnZXQoKSksIHRvSW1w
bChtZXNzYWdlKS0+c3RyaW5nKCkudXRmOCgpKTsKLX0KLQotc3RhdGljIGJvb2wgcnVuSmF2YVNj
cmlwdENvbmZpcm0oV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLRnJhbWVS
ZWYsIGNvbnN0IHZvaWQqKQotewotICAgIHJldHVybiB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlw
dENvbmZpcm0oV0VCS0lUX1dFQl9WSUVXKHRvSW1wbChwYWdlKS0+dmlld1dpZGdldCgpKSwgdG9J
bXBsKG1lc3NhZ2UpLT5zdHJpbmcoKS51dGY4KCkpOwotfQotCi1zdGF0aWMgV0tTdHJpbmdSZWYg
cnVuSmF2YVNjcmlwdFByb21wdChXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZSwg
V0tTdHJpbmdSZWYgZGVmYXVsdFZhbHVlLCBXS0ZyYW1lUmVmLCBjb25zdCB2b2lkKikKLXsKLSAg
ICByZXR1cm4gd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRQcm9tcHQoV0VCS0lUX1dFQl9WSUVX
KHRvSW1wbChwYWdlKS0+dmlld1dpZGdldCgpKSwgdG9JbXBsKG1lc3NhZ2UpLT5zdHJpbmcoKS51
dGY4KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvSW1w
bChkZWZhdWx0VmFsdWUpLT5zdHJpbmcoKS51dGY4KCkpOwotfQotCi12b2lkIHdlYmtpdFVJQ2xp
ZW50QXR0YWNoVUlDbGllbnRUb1BhZ2UoV2ViS2l0VUlDbGllbnQqIHVpQ2xpZW50LCBXS1BhZ2VS
ZWYgd2tQYWdlKQotewotICAgIFdLUGFnZVVJQ2xpZW50IHdrVUlDbGllbnQgPSB7Ci0gICAgICAg
IGtXS1BhZ2VVSUNsaWVudEN1cnJlbnRWZXJzaW9uLAotICAgICAgICB1aUNsaWVudCwgLy8gY2xp
ZW50SW5mbwotICAgICAgICAwLCAvLyBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0ZWRGb3JVc2VXaXRo
VjAKLSAgICAgICAgc2hvd1BhZ2UsCi0gICAgICAgIGNsb3NlUGFnZSwKLSAgICAgICAgMCwgLy8g
dGFrZUZvY3VzCi0gICAgICAgIDAsIC8vIGZvY3VzCi0gICAgICAgIDAsIC8vIHVuZm9jdXMKLSAg
ICAgICAgcnVuSmF2YVNjcmlwdEFsZXJ0LAotICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybSwK
LSAgICAgICAgcnVuSmF2YVNjcmlwdFByb21wdCwKLSAgICAgICAgMCwgLy8gc2V0U3RhdHVzVGV4
dAotICAgICAgICAwLCAvLyBtb3VzZURpZE1vdmVPdmVyRWxlbWVudF9kZXByZWNhdGVkRm9yVXNl
V2l0aFYwCi0gICAgICAgIDAsIC8vIG1pc3NpbmdQbHVnaW5CdXR0b25DbGlja2VkCi0gICAgICAg
IDAsIC8vIGRpZE5vdEhhbmRsZUtleUV2ZW50Ci0gICAgICAgIDAsIC8vIGRpZE5vdEhhbmRsZVdo
ZWVsRXZlbnQKLSAgICAgICAgMCwgLy8gdG9vbGJhcnNBcmVWaXNpYmxlCi0gICAgICAgIDAsIC8v
IHNldFRvb2xiYXJzQXJlVmlzaWJsZQotICAgICAgICAwLCAvLyBtZW51QmFySXNWaXNpYmxlCi0g
ICAgICAgIDAsIC8vIHNldE1lbnVCYXJJc1Zpc2libGUKLSAgICAgICAgMCwgLy8gc3RhdHVzQmFy
SXNWaXNpYmxlCi0gICAgICAgIDAsIC8vIHNldFN0YXR1c0JhcklzVmlzaWJsZQotICAgICAgICAw
LCAvLyBpc1Jlc2l6YWJsZQotICAgICAgICAwLCAvLyBzZXRJc1Jlc2l6YWJsZQotICAgICAgICAw
LCAvLyBnZXRXaW5kb3dGcmFtZQotICAgICAgICAwLCAvLyBzZXRXaW5kb3dGcmFtZQotICAgICAg
ICAwLCAvLyBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwKLSAgICAgICAgMCwgLy8gZGlkRHJh
dwotICAgICAgICAwLCAvLyBwYWdlRGlkU2Nyb2xsCi0gICAgICAgIDAsIC8vIGV4Y2VlZGVkRGF0
YWJhc2VRdW90YQotICAgICAgICAwLCAvLyBydW5PcGVuUGFuZWwKLSAgICAgICAgMCwgLy8gZGVj
aWRlUG9saWN5Rm9yR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdAotICAgICAgICAwLCAvLyBo
ZWFkZXJIZWlnaHQKLSAgICAgICAgMCwgLy8gZm9vdGVySGVpZ2h0Ci0gICAgICAgIDAsIC8vIGRy
YXdIZWFkZXIKLSAgICAgICAgMCwgLy8gZHJhd0Zvb3RlcgotICAgICAgICAwLCAvLyBwcmludEZy
YW1lCi0gICAgICAgIDAsIC8vIHJ1bk1vZGFsCi0gICAgICAgIDAsIC8vIGRpZENvbXBsZXRlUnVi
YmVyQmFuZEZvck1haW5GcmFtZQotICAgICAgICAwLCAvLyBzYXZlRGF0YVRvRmlsZUluRG93bmxv
YWRzRm9sZGVyCi0gICAgICAgIDAsIC8vIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQKLSAgICAg
ICAgY3JlYXRlTmV3UGFnZSwKLSAgICAgICAgMCwgLy8gbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQK
LSAgICAgICAgMCwgLy8gZGVjaWRlUG9saWN5Rm9yTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVl
c3QKLSAgICB9OwotICAgIFdLUGFnZVNldFBhZ2VVSUNsaWVudCh3a1BhZ2UsICZ3a1VJQ2xpZW50
KTsKLX0KLQotc3RhdGljIHZvaWQgd2Via2l0X3VpX2NsaWVudF9pbml0KFdlYktpdFVJQ2xpZW50
KiBjbGllbnQpCi17Ci19Ci0KLXN0YXRpYyB2b2lkIHdlYmtpdF91aV9jbGllbnRfY2xhc3NfaW5p
dChXZWJLaXRVSUNsaWVudENsYXNzKiBjbGllbnRDbGFzcykKLXsKLX0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0MWVmM2VjLi4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCi0gKgotICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAq
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgV2Vi
S2l0VUlDbGllbnRfaAotI2RlZmluZSBXZWJLaXRVSUNsaWVudF9oCi0KLSNpbmNsdWRlIDxXZWJL
aXQyL1dlYktpdDIuaD4KLSNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgotCi1HX0JFR0lOX0RFQ0xT
Ci0KLSNkZWZpbmUgV0VCS0lUX1RZUEVfVUlfQ0xJRU5UICAgICAgICAgICAgKHdlYmtpdF91aV9j
bGllbnRfZ2V0X3R5cGUoKSkKLSNkZWZpbmUgV0VCS0lUX1VJX0NMSUVOVChvYmopICAgICAgICAg
ICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBXRUJLSVRfVFlQRV9VSV9DTElF
TlQsIFdlYktpdFVJQ2xpZW50KSkKLSNkZWZpbmUgV0VCS0lUX1VJX0NMSUVOVF9DTEFTUyhrbGFz
cykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9VSV9D
TElFTlQsIFdlYktpdFVJQ2xpZW50Q2xhc3MpKQotI2RlZmluZSBXRUJLSVRfSVNfVUlfQ0xJRU5U
KG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIFdFQktJVF9U
WVBFX1VJX0NMSUVOVCkpCi0jZGVmaW5lIFdFQktJVF9JU19VSV9DTElFTlRfQ0xBU1Moa2xhc3Mp
IChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfVUlfQ0xJRU5U
KSkKLSNkZWZpbmUgV0VCS0lUX1VJX0NMSUVOVF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNU
QU5DRV9HRVRfQ0xBU1MoKG9iaiksICBXRUJLSVRfVFlQRV9VSV9DTElFTlQsIFdlYktpdFVJQ2xp
ZW50Q2xhc3MpKQotCi10eXBlZGVmIHN0cnVjdCBfV2ViS2l0VUlDbGllbnQgICAgICBXZWJLaXRV
SUNsaWVudDsKLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRVSUNsaWVudENsYXNzIFdlYktpdFVJQ2xp
ZW50Q2xhc3M7Ci0KLXN0cnVjdCBfV2ViS2l0VUlDbGllbnQgewotICAgIEdPYmplY3QgcGFyZW50
OwotfTsKLQotc3RydWN0IF9XZWJLaXRVSUNsaWVudENsYXNzIHsKLSAgICBHT2JqZWN0Q2xhc3Mg
cGFyZW50X2NsYXNzOwotfTsKLQotR1R5cGUgd2Via2l0X3VpX2NsaWVudF9nZXRfdHlwZSAodm9p
ZCk7Ci0KLXZvaWQgd2Via2l0VUlDbGllbnRBdHRhY2hVSUNsaWVudFRvUGFnZShXZWJLaXRVSUNs
aWVudCosIFdLUGFnZVJlZik7Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCA3YzBh
NjdjLi4yY2I1MWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMjIsOSArMjIsNyBAQAogI2luY2x1ZGUgIldlYktpdFdl
YlZpZXcuaCIKIAogI2luY2x1ZGUgIldlYktpdEJhY2tGb3J3YXJkTGlzdFByaXZhdGUuaCIKLSNp
bmNsdWRlICJXZWJLaXRNYXJzaGFsLmgiCiAjaW5jbHVkZSAiV2ViS2l0U2V0dGluZ3NQcml2YXRl
LmgiCi0jaW5jbHVkZSAiV2ViS2l0VUlDbGllbnQuaCIKICNpbmNsdWRlICJXZWJLaXRXZWJDb250
ZXh0UHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYktpdFdlYkxvYWRlckNsaWVudC5oIgogI2luY2x1
ZGUgIldlYktpdFdlYkxvYWRlckNsaWVudFByaXZhdGUuaCIKQEAgLTM2LDcgKzM0LDYgQEAKICNp
bmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tSZXRhaW5QdHIu
aD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLVVJMLmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9DU3RyaW5nLmg+CiAKQEAgLTQ0LDE4ICs0MSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogZW51bSB7Ci0gICAgQ1JFQVRFLAotICAg
IFJFQURZX1RPX1NIT1csCi0gICAgQ0xPU0UsCi0KLSAgICBTQ1JJUFRfQUxFUlQsCi0gICAgU0NS
SVBUX0NPTkZJUk0sCi0gICAgU0NSSVBUX1BST01QVCwKLQotICAgIExBU1RfU0lHTkFMCi19Owot
Ci1lbnVtIHsKICAgICBQUk9QXzAsCiAKICAgICBQUk9QX1dFQl9DT05URVhULApAQCAtNzIsNjMg
KzU3LDEyIEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogICAgIENTdHJpbmcgYWN0
aXZlVVJJOwogCiAgICAgR1JlZlB0cjxXZWJLaXRXZWJMb2FkZXJDbGllbnQ+IGxvYWRlckNsaWVu
dDsKLSAgICBHUmVmUHRyPFdlYktpdFVJQ2xpZW50PiB1aUNsaWVudDsKICAgICBHUmVmUHRyPFdl
YktpdEJhY2tGb3J3YXJkTGlzdD4gYmFja0ZvcndhcmRMaXN0OwogICAgIEdSZWZQdHI8V2ViS2l0
U2V0dGluZ3M+IHNldHRpbmdzOwogfTsKIAotc3RhdGljIGd1aW50IHNpZ25hbHNbTEFTVF9TSUdO
QUxdID0geyAwLCB9OwotCiBHX0RFRklORV9UWVBFKFdlYktpdFdlYlZpZXcsIHdlYmtpdF93ZWJf
dmlldywgV0VCS0lUX1RZUEVfV0VCX1ZJRVdfQkFTRSkKIAotc3RhdGljIEd0a1dpZGdldCogd2Vi
a2l0V2ViVmlld0NyZWF0ZShXZWJLaXRXZWJWaWV3KikKLXsKLSAgICByZXR1cm4gMDsKLX0KLQot
c3RhdGljIEd0a1dpZGdldCogd2Via2l0V2ViVmlld0NyZWF0ZUphdmFTY3JpcHREaWFsb2coV2Vi
S2l0V2ViVmlldyogd2ViVmlldywgR3RrTWVzc2FnZVR5cGUgdHlwZSwgR3RrQnV0dG9uc1R5cGUg
YnV0dG9ucywgaW50IGRlZmF1bHRSZXNwb25zZSwgY29uc3QgY2hhciogbWVzc2FnZSkKLXsKLSAg
ICBHdGtXaWRnZXQqIHBhcmVudCA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQo
d2ViVmlldykpOwotICAgIEd0a1dpZGdldCogZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25l
dyhndGtfd2lkZ2V0X2lzX3RvcGxldmVsKHBhcmVudCkgPyBHVEtfV0lORE9XKHBhcmVudCkgOiAw
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfRElB
TE9HX0RFU1RST1lfV0lUSF9QQVJFTlQsIHR5cGUsIGJ1dHRvbnMsICIlcyIsIG1lc3NhZ2UpOwot
ICAgIEdPd25QdHI8Y2hhcj4gdGl0bGUoZ19zdHJkdXBfcHJpbnRmKCJKYXZhU2NyaXB0IC0gJXMi
LCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSkpOwotICAgIGd0a193aW5kb3dfc2V0
X3RpdGxlKEdUS19XSU5ET1coZGlhbG9nKSwgdGl0bGUuZ2V0KCkpOwotICAgIGd0a19kaWFsb2df
c2V0X2RlZmF1bHRfcmVzcG9uc2UoR1RLX0RJQUxPRyhkaWFsb2cpLCBkZWZhdWx0UmVzcG9uc2Up
OwotCi0gICAgcmV0dXJuIGRpYWxvZzsKLX0KLQotCi1zdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2Vi
Vmlld1NjcmlwdEFsZXJ0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGNoYXIqIG1lc3Nh
Z2UpCi17Ci0gICAgR3RrV2lkZ2V0KiBkaWFsb2cgPSB3ZWJraXRXZWJWaWV3Q3JlYXRlSmF2YVNj
cmlwdERpYWxvZyh3ZWJWaWV3LCBHVEtfTUVTU0FHRV9XQVJOSU5HLCBHVEtfQlVUVE9OU19DTE9T
RSwgR1RLX1JFU1BPTlNFX0NMT1NFLCBtZXNzYWdlKTsKLSAgICBndGtfZGlhbG9nX3J1bihHVEtf
RElBTE9HKGRpYWxvZykpOwotICAgIGd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpOwotICAgIHJl
dHVybiBUUlVFOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld1NjcmlwdENvbmZp
cm0oV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgY2hhciogbWVzc2FnZSwgZ2Jvb2xlYW4q
IGNvbmZpcm1lZCkKLXsKLSAgICBHdGtXaWRnZXQqIGRpYWxvZyA9IHdlYmtpdFdlYlZpZXdDcmVh
dGVKYXZhU2NyaXB0RGlhbG9nKHdlYlZpZXcsIEdUS19NRVNTQUdFX1FVRVNUSU9OLCBHVEtfQlVU
VE9OU19PS19DQU5DRUwsIEdUS19SRVNQT05TRV9PSywgbWVzc2FnZSk7Ci0gICAgKmNvbmZpcm1l
ZCA9IGd0a19kaWFsb2dfcnVuKEdUS19ESUFMT0coZGlhbG9nKSkgPT0gR1RLX1JFU1BPTlNFX09L
OwotICAgIGd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpOwotICAgIHJldHVybiBUUlVFOwotfQot
Ci1zdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2ViVmlld1NjcmlwdFByb21wdChXZWJLaXRXZWJWaWV3
KiB3ZWJWaWV3LCBjb25zdCBjaGFyKiBtZXNzYWdlLCBjb25zdCBjaGFyKiBkZWZhdWx0VGV4dCwg
Y2hhcioqIHRleHQpCi17Ci0gICAgR3RrV2lkZ2V0KiBkaWFsb2cgPSB3ZWJraXRXZWJWaWV3Q3Jl
YXRlSmF2YVNjcmlwdERpYWxvZyh3ZWJWaWV3LCBHVEtfTUVTU0FHRV9RVUVTVElPTiwgR1RLX0JV
VFRPTlNfT0tfQ0FOQ0VMLCBHVEtfUkVTUE9OU0VfT0ssIG1lc3NhZ2UpOwotICAgIEd0a1dpZGdl
dCogZW50cnkgPSBndGtfZW50cnlfbmV3KCk7Ci0gICAgZ3RrX2VudHJ5X3NldF90ZXh0KEdUS19F
TlRSWShlbnRyeSksIGRlZmF1bHRUZXh0KTsKLSAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09O
VEFJTkVSKGd0a19kaWFsb2dfZ2V0X2NvbnRlbnRfYXJlYShHVEtfRElBTE9HKGRpYWxvZykpKSwg
ZW50cnkpOwotICAgIGd0a19lbnRyeV9zZXRfYWN0aXZhdGVzX2RlZmF1bHQoR1RLX0VOVFJZKGVu
dHJ5KSwgVFJVRSk7Ci0gICAgZ3RrX3dpZGdldF9zaG93KGVudHJ5KTsKLQotICAgICp0ZXh0ID0g
KGd0a19kaWFsb2dfcnVuKEdUS19ESUFMT0coZGlhbG9nKSkgPT0gR1RLX1JFU1BPTlNFX09LKSA/
IGdfc3RyZHVwKGd0a19lbnRyeV9nZXRfdGV4dChHVEtfRU5UUlkoZW50cnkpKSkgOiAwOwotICAg
IHJldHVybiBUUlVFOwotfQotCi0KIHN0YXRpYyB2b2lkIHdlYmtpdFdlYlZpZXdTZXRMb2FkZXJD
bGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0V2ViTG9hZGVyQ2xpZW50KiBsb2Fk
ZXJDbGllbnQsIFdLUGFnZVJlZiB3a1BhZ2UpCiB7CiAgICAgd2ViVmlldy0+cHJpdi0+bG9hZGVy
Q2xpZW50ID0gbG9hZGVyQ2xpZW50OwpAQCAtMTUxLDEwICs4NSw2IEBAIHN0YXRpYyB2b2lkIHdl
YmtpdFdlYlZpZXdDb25zdHJ1Y3RlZChHT2JqZWN0KiBvYmplY3QpCiAgICAgc3RhdGljIEdSZWZQ
dHI8V2ViS2l0V2ViTG9hZGVyQ2xpZW50PiBkZWZhdWx0TG9hZGVyQ2xpZW50ID0gYWRvcHRHUmVm
KFdFQktJVF9XRUJfTE9BREVSX0NMSUVOVChnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfV0VCX0xP
QURFUl9DTElFTlQsIE5VTEwpKSk7CiAgICAgd2Via2l0V2ViVmlld1NldExvYWRlckNsaWVudCh3
ZWJWaWV3LCBkZWZhdWx0TG9hZGVyQ2xpZW50LmdldCgpLCB0b0FQSShwYWdlKSk7CiAKLSAgICBz
dGF0aWMgR1JlZlB0cjxXZWJLaXRVSUNsaWVudD4gZGVmYXVsdFVJQ2xpZW50ID0gYWRvcHRHUmVm
KFdFQktJVF9VSV9DTElFTlQoZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1VJX0NMSUVOVCwgTlVM
TCkpKTsKLSAgICBwcml2LT51aUNsaWVudCA9IGRlZmF1bHRVSUNsaWVudC5nZXQoKTsKLSAgICB3
ZWJraXRVSUNsaWVudEF0dGFjaFVJQ2xpZW50VG9QYWdlKHByaXYtPnVpQ2xpZW50LmdldCgpLCB0
b0FQSShwYWdlKSk7Ci0KICAgICBwcml2LT5iYWNrRm9yd2FyZExpc3QgPSBhZG9wdEdSZWYod2Vi
a2l0QmFja0ZvcndhcmRMaXN0Q3JlYXRlKFdLUGFnZUdldEJhY2tGb3J3YXJkTGlzdCh0b0FQSShw
YWdlKSkpKTsKICAgICBwcml2LT5zZXR0aW5ncyA9IGFkb3B0R1JlZih3ZWJraXRfc2V0dGluZ3Nf
bmV3KCkpOwogICAgIHdlYmtpdFNldHRpbmdzQXR0YWNoU2V0dGluZ3NUb1BhZ2UocHJpdi0+c2V0
dGluZ3MuZ2V0KCksIHRvQVBJKHBhZ2UpKTsKQEAgLTIwOCwxNSArMTM4LDYgQEAgc3RhdGljIHZv
aWQgd2Via2l0X3dlYl92aWV3X2luaXQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBuZXcg
KHByaXYpIFdlYktpdFdlYlZpZXdQcml2YXRlKCk7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB3ZWJr
aXRXZWJWaWV3QWNjdW11bGF0b3JPYmplY3RIYW5kbGVkKEdTaWduYWxJbnZvY2F0aW9uSGludCos
IEdWYWx1ZSogcmV0dXJuVmFsdWUsIGNvbnN0IEdWYWx1ZSogaGFuZGxlclJldHVybiwgZ3BvaW50
ZXIpCi17Ci0gICAgdm9pZCogb2JqZWN0ID0gZ192YWx1ZV9nZXRfb2JqZWN0KGhhbmRsZXJSZXR1
cm4pOwotICAgIGlmIChvYmplY3QpCi0gICAgICAgIGdfdmFsdWVfc2V0X29iamVjdChyZXR1cm5W
YWx1ZSwgb2JqZWN0KTsKLQotICAgIHJldHVybiAhb2JqZWN0OwotfQotCiBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFz
cykKIHsKICAgICBHT2JqZWN0Q2xhc3MqIGdPYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKHdl
YlZpZXdDbGFzcyk7CkBAIC0yMjYsMTEgKzE0Nyw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJf
dmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgIGdP
YmplY3RDbGFzcy0+Z2V0X3Byb3BlcnR5ID0gd2Via2l0V2ViVmlld0dldFByb3BlcnR5OwogICAg
IGdPYmplY3RDbGFzcy0+ZmluYWxpemUgPSB3ZWJraXRXZWJWaWV3RmluYWxpemU7CiAKLSAgICB3
ZWJWaWV3Q2xhc3MtPmNyZWF0ZSA9IHdlYmtpdFdlYlZpZXdDcmVhdGU7Ci0gICAgd2ViVmlld0Ns
YXNzLT5zY3JpcHRfYWxlcnQgPSB3ZWJraXRXZWJWaWV3U2NyaXB0QWxlcnQ7Ci0gICAgd2ViVmll
d0NsYXNzLT5zY3JpcHRfY29uZmlybSA9IHdlYmtpdFdlYlZpZXdTY3JpcHRDb25maXJtOwotICAg
IHdlYlZpZXdDbGFzcy0+c2NyaXB0X3Byb21wdCA9IHdlYmtpdFdlYlZpZXdTY3JpcHRQcm9tcHQ7
Ci0KICAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUod2ViVmlld0NsYXNzLCBzaXplb2YoV2Vi
S2l0V2ViVmlld1ByaXZhdGUpKTsKIAogICAgIC8qKgpAQCAtMjkxLDEzOCArMjA3LDYgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3
ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJUaGUgY3VycmVudCBhY3RpdmUgVVJJIG9mIHRoZSB2aWV3IiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VC
S0lUX1BBUkFNX1JFQURBQkxFKSk7Ci0KLSAgICAvKioKLSAgICAgKiBXZWJLaXRXZWJWaWV3Ojpj
cmVhdGU6Ci0gICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhl
IHNpZ25hbCBpcyBlbWl0dGVkCi0gICAgICoKLSAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIGNyZWF0
aW9uIG9mIGEgbmV3ICNXZWJLaXRXZWJWaWV3IGlzIHJlcXVlc3RlZC4KLSAgICAgKiBJZiB0aGlz
IHNpZ25hbCBpcyBoYW5kbGVkIHRoZSBzaWduYWwgaGFuZGxlciBzaG91bGQgcmV0dXJuIHRoZQot
ICAgICAqIG5ld2x5IGNyZWF0ZWQgI1dlYktpdFdlYlZpZXcuCi0gICAgICoKLSAgICAgKiBUaGUg
bmV3ICNXZWJLaXRXZWJWaWV3IHNob3VsZCBub3QgYmUgZGlzcGxheWVkIHRvIHRoZSB1c2VyCi0g
ICAgICogdW50aWwgdGhlICNXZWJLaXRXZWJWaWV3OjpyZWFkeS10by1zaG93IHNpZ25hbCBpcyBl
bWl0dGVkLgotICAgICAqCi0gICAgICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhIG5ld2x5
IGFsbG9jYXRlZCAjV2ViS2l0V2ViVmlldyB3aWRnZXQKLSAgICAgKiAgICBvciAlTlVMTCB0byBw
cm9wYWdhdGUgdGhlIGV2ZW50IGZ1cnRoZXIuCi0gICAgICovCi0gICAgc2lnbmFsc1tDUkVBVEVd
ID0KLSAgICAgICAgZ19zaWduYWxfbmV3KCJjcmVhdGUiLAotICAgICAgICAgICAgICAgICAgICAg
R19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNzKSwKLSAgICAgICAgICAgICAgICAgICAgIEdf
U0lHTkFMX1JVTl9MQVNULAotICAgICAgICAgICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdl
YktpdFdlYlZpZXdDbGFzcywgY3JlYXRlKSwKLSAgICAgICAgICAgICAgICAgICAgIHdlYmtpdFdl
YlZpZXdBY2N1bXVsYXRvck9iamVjdEhhbmRsZWQsIDAsCi0gICAgICAgICAgICAgICAgICAgICB3
ZWJraXRfbWFyc2hhbF9PQkpFQ1RfX1ZPSUQsCi0gICAgICAgICAgICAgICAgICAgICBHVEtfVFlQ
RV9XSURHRVQsIDApOwotCi0gICAgLyoqCi0gICAgICogV2ViS2l0V2ViVmlldzo6cmVhZHktdG8t
c2hvdzoKLSAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUg
c2lnbmFsIGlzIGVtaXR0ZWQKLSAgICAgKgotICAgICAqIEVtaXR0ZWQgYWZ0ZXIgI1dlYktpdFdl
YlZpZXc6OmNyZWF0ZSBvbiB0aGUgbmV3bHkgY3JlYXRlZCAjV2ViS2l0V2ViVmlldwotICAgICAq
IHdoZW4gaXQgc2hvdWxkIGJlIGRpc3BsYXllZCB0byB0aGUgdXNlci4gV2hlbiB0aGlzIHNpZ25h
bCBpcyBlbWl0dGVkCi0gICAgICogYWxsIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBob3cgdGhlIHdp
bmRvdyBzaG91bGQgbG9vaywgaW5jbHVkaW5nCi0gICAgICogc2l6ZSwgcG9zaXRpb24sIHdoZXRo
ZXIgdGhlIGxvY2F0aW9uLCBzdGF0dXMgYW5kIHNjcm9sbGJhcnMKLSAgICAgKiBzaG91bGQgYmUg
ZGlzcGxheWVkLCBpcyBhbHJlYWR5IHNldC4KLSAgICAgKi8KLSAgICBzaWduYWxzW1JFQURZX1RP
X1NIT1ddID0KLSAgICAgICAgZ19zaWduYWxfbmV3KCJyZWFkeS10by1zaG93IiwKLSAgICAgICAg
ICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTKHdlYlZpZXdDbGFzcyksCi0gICAgICAgICAg
ICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKLSAgICAgICAgICAgICAgICAgICAgIEdfU1RS
VUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIHJlYWR5X3RvX3Nob3cpLAotICAgICAgICAg
ICAgICAgICAgICAgMCwgMCwKLSAgICAgICAgICAgICAgICAgICAgIGdfY2Nsb3N1cmVfbWFyc2hh
bF9WT0lEX19WT0lELAotICAgICAgICAgICAgICAgICAgICAgR19UWVBFX05PTkUsIDApOwotCi0g
ICAgLyoqCi0gICAgICogV2ViS2l0V2ViVmlldzo6Y2xvc2U6Ci0gICAgICogQHdlYlZpZXc6IHRo
ZSAjV2ViS2l0V2ViVmlldyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKLSAgICAgKgot
ICAgICAqIEVtaXR0ZWQgd2hlbiBjbG9zaW5nIGEgI1dlYktpdFdlYlZpZXcgaXMgcmVxdWVzdGVk
LiBUaGlzIG9jY3VycyB3aGVuIGEKLSAgICAgKiBjYWxsIGlzIG1hZGUgZnJvbSBKYXZhU2NyaXB0
J3MgPGZ1bmN0aW9uPndpbmRvdy5jbG9zZTwvZnVuY3Rpb24+IGZ1bmN0aW9uLgotICAgICAqIEl0
IGlzIHRoZSBvd25lcidzIHJlc3BvbnNpYmlsaXR5IHRvIGhhbmRsZSB0aGlzIHNpZ25hbCB0byBo
aWRlIG9yCi0gICAgICogZGVzdHJveSB0aGUgI1dlYktpdFdlYlZpZXcsIGlmIG5lY2Vzc2FyeS4K
LSAgICAgKi8KLSAgICBzaWduYWxzW0NMT1NFXSA9Ci0gICAgICAgIGdfc2lnbmFsX25ldygiY2xv
c2UiLAotICAgICAgICAgICAgICAgICAgICAgR19UWVBFX0ZST01fQ0xBU1Mod2ViVmlld0NsYXNz
KSwKLSAgICAgICAgICAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAotICAgICAgICAgICAg
ICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYlZpZXdDbGFzcywgY2xvc2UpLAotICAg
ICAgICAgICAgICAgICAgICAgMCwgMCwKLSAgICAgICAgICAgICAgICAgICAgIGdfY2Nsb3N1cmVf
bWFyc2hhbF9WT0lEX19WT0lELAotICAgICAgICAgICAgICAgICAgICAgR19UWVBFX05PTkUsIDAp
OwotCi0gICAgLyoqCi0gICAgICogV2ViS2l0V2ViVmlldzo6c2NyaXB0LWFsZXJ0OgotICAgICAq
IEB3ZWJfdmlldzogdGhlICNXZWJLaXRXZWJWaWV3IG9uIHdoaWNoIHRoZSBzaWduYWwgaXMgZW1p
dHRlZAotICAgICAqIEBtZXNzYWdlOiB0aGUgbWVzc2FnZSB0ZXh0Ci0gICAgICoKLSAgICAgKiBF
bWl0dGVkIHdoZW4gSmF2YVNjcmlwdCBjb2RlIGNhbGxzIDxmdW5jdGlvbj53aW5kb3cuYWxlcnQ8
L2Z1bmN0aW9uPi4gSWYgdGhlCi0gICAgICogc2lnbmFsIGlzIG5vdCBoYW5kbGVkIGEgbWVzc2Fn
ZSBkaWFsb2cgd2l0aCBhIHNpbmdsZSBDbG9zZSBidXR0b24gd2lsbCBiZQotICAgICAqIHNob3du
IHdpdGggdGhlIG1lc3NhZ2UgdGV4dC4KLSAgICAgKgotICAgICAqIFJldHVybnM6ICVUUlVFIHRv
IHN0b3Agb3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUgZXZlbnQuCi0g
ICAgICogICAgJUZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVydGhlci4KLSAgICAgKi8K
LSAgICBzaWduYWxzW1NDUklQVF9BTEVSVF0gPQotICAgICAgICAgICAgZ19zaWduYWxfbmV3KCJz
Y3JpcHQtYWxlcnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9GUk9NX0NMQVNT
KHdlYlZpZXdDbGFzcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xB
U1QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUKFdlYktpdFdlYlZp
ZXdDbGFzcywgc2NyaXB0X2FsZXJ0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBnX3NpZ25h
bF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
d2Via2l0X21hcnNoYWxfQk9PTEVBTl9fU1RSSU5HLAotICAgICAgICAgICAgICAgICAgICAgICAg
IEdfVFlQRV9CT09MRUFOLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgIEdfVFlQRV9TVFJJ
TkcpOwotCi0gICAgLyoqCi0gICAgICogV2ViS2l0V2ViVmlldzo6c2NyaXB0LWNvbmZpcm06Ci0g
ICAgICogQHdlYl92aWV3OiB0aGUgI1dlYktpdFdlYlZpZXcgb24gd2hpY2ggdGhlIHNpZ25hbCBp
cyBlbWl0dGVkCi0gICAgICogQG1lc3NhZ2U6IHRoZSBtZXNzYWdlIHRleHQKLSAgICAgKiBAY29u
ZmlybWVkOiAob3V0KTogcmV0dXJuIGxvY2F0aW9uIGZvciBjb25maXJtIGRpYWxvZyByZXNwb25z
ZQotICAgICAqCi0gICAgICogRW1pdHRlZCB3aGVuIEphdmFTY3JpcHQgY29kZSBjYWxscyA8ZnVu
Y3Rpb24+Y29uZmlybTwvZnVuY3Rpb24+LiBJZiB0aGUKLSAgICAgKiBzaWduYWwgaXMgbm90IGhh
bmRsZWQgYSBtZXNzYWdlIGRpYWxvZyB3aXRoIE9LIGFuZCBDYW5jZWwgYnV0dG9ucyB3aWxsIGJl
Ci0gICAgICogc2hvd24gd2l0aCB0aGUgbWVzc2FnZSB0ZXh0LiBJZiBPSyBidXR0b24gaXMgY2xp
Y2tlZCBAY29uZmlybWVkIHdpbGwgYmUKLSAgICAgKiBzZXQgdG8gJVRSVUUsIG90aGVyd2lzZSBp
dCB3aWxsIGJlICVGQUxTRS4KLSAgICAgKgotICAgICAqIFJldHVybnM6ICVUUlVFIHRvIHN0b3Ag
b3RoZXIgaGFuZGxlcnMgZnJvbSBiZWluZyBpbnZva2VkIGZvciB0aGUgZXZlbnQuCi0gICAgICog
ICAgJUZBTFNFIHRvIHByb3BhZ2F0ZSB0aGUgZXZlbnQgZnVydGhlci4KLSAgICAgKi8KLSAgICBz
aWduYWxzW1NDUklQVF9DT05GSVJNXSA9Ci0gICAgICAgICAgICBnX3NpZ25hbF9uZXcoInNjcmlw
dC1jb25maXJtIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3
ZWJWaWV3Q2xhc3MpLAotICAgICAgICAgICAgICAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNU
LAotICAgICAgICAgICAgICAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3
Q2xhc3MsIHNjcmlwdF9jb25maXJtKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBnX3NpZ25h
bF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
d2Via2l0X21hcnNoYWxfQk9PTEVBTl9fU1RSSU5HX1BPSU5URVIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgR19UWVBFX0JPT0xFQU4sIDIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgR19U
WVBFX1NUUklORywgR19UWVBFX1BPSU5URVIpOwotCi0gICAgLyoqCi0gICAgICogV2ViS2l0V2Vi
Vmlldzo6c2NyaXB0LXByb21wdDoKLSAgICAgKiBAd2ViX3ZpZXc6IHRoZSAjV2ViS2l0V2ViVmll
dyBvbiB3aGljaCB0aGUgc2lnbmFsIGlzIGVtaXR0ZWQKLSAgICAgKiBAbWVzc2FnZTogdGhlIG1l
c3NhZ2UgdGV4dAotICAgICAqIEBkZWZhdWx0IChhbGxvdy1ub25lKTogdGhlIGRlZmF1bHQgdGV4
dAotICAgICAqIEB0ZXh0OiAob3V0KTogcmV0dXJuIGxvY2F0aW9uIGZvciBwcm9tcHQgZGlhbG9n
IHRleHQgcmVzcG9uc2UKLSAgICAgKgotICAgICAqIEVtaXR0ZWQgd2hlbiBKYXZhU2NyaXB0IGNv
ZGUgY2FsbHMgPGZ1bmN0aW9uPnByb21wdDwvZnVuY3Rpb24+LiBJZiB0aGUKLSAgICAgKiBzaWdu
YWwgaXMgbm90IGhhbmRsZWQgYSBtZXNzYWdlIGRpYWxvZyB3aXRoIE9LIGFuZCBDYW5jZWwgYnV0
dG9ucyBhbmQKLSAgICAgKiBhIHRleHQgZW50cnkgd2lsbCBiZSBzaG93biB3aXRoIHRoZSBtZXNz
YWdlIHRleHQuIElmIE9LIGJ1dHRvbiBpcyBjbGlja2VkCi0gICAgICogQHRleHQgd2lsbCBjb250
YWluIHRoZSB0ZXh0IGVudGVyZWQgYnkgdGhlIHVzZXIsIG90aGVyd2lzZSBpdCB3aWxsIGJlICVO
VUxMLgotICAgICAqCi0gICAgICogUmV0dXJuczogJVRSVUUgdG8gc3RvcCBvdGhlciBoYW5kbGVy
cyBmcm9tIGJlaW5nIGludm9rZWQgZm9yIHRoZSBldmVudC4KLSAgICAgKiAgICAlRkFMU0UgdG8g
cHJvcGFnYXRlIHRoZSBldmVudCBmdXJ0aGVyLgotICAgICAqLwotICAgIHNpZ25hbHNbU0NSSVBU
X1BST01QVF0gPQotICAgICAgICAgICAgZ19zaWduYWxfbmV3KCJzY3JpcHQtcHJvbXB0IiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyh3ZWJWaWV3Q2xhc3MpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAotICAgICAgICAgICAg
ICAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVChXZWJLaXRXZWJWaWV3Q2xhc3MsIHNjcmlwdF9w
cm9tcHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGdfc2lnbmFsX2FjY3VtdWxhdG9yX3Ry
dWVfaGFuZGxlZCwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJraXRfbWFyc2hhbF9C
T09MRUFOX19TVFJJTkdfU1RSSU5HX1BPSU5URVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
R19UWVBFX0JPT0xFQU4sIDMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgR19UWVBFX1NUUklO
RywgR19UWVBFX1NUUklORywgR19UWVBFX1BPSU5URVIpOwotCiB9CiAKIHZvaWQgd2Via2l0V2Vi
Vmlld1NldFRpdGxlKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IENTdHJpbmcmIHRpdGxl
KQpAQCAtNDU4LDQ3ICsyNDIsNiBAQCB2b2lkIHdlYmtpdFdlYlZpZXdVcGRhdGVVUkkoV2ViS2l0
V2ViVmlldyogd2ViVmlldykKICAgICBnX29iamVjdF9ub3RpZnkoR19PQkpFQ1Qod2ViVmlldyks
ICJ1cmkiKTsKIH0KIAotV0tQYWdlUmVmIHdlYmtpdFdlYlZpZXdDcmVhdGVOZXdQYWdlKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCi17Ci0gICAgV2ViS2l0V2ViVmlldyogbmV3V2ViVmlldzsKLSAg
ICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbQ1JFQVRFXSwgMCwgJm5ld1dlYlZpZXcp
OwotICAgIGlmICghbmV3V2ViVmlldykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8V0tQYWdlUmVmPihXS1JldGFpbih0b0FQSSh3ZWJraXRXZWJWaWV3QmFzZUdl
dFBhZ2UoV0VCS0lUX1dFQl9WSUVXX0JBU0UobmV3V2ViVmlldykpKSkpOwotfQotCi12b2lkIHdl
YmtpdFdlYlZpZXdSZWFkeVRvU2hvd1BhZ2UoV2ViS2l0V2ViVmlldyogd2ViVmlldykKLXsKLSAg
ICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbUkVBRFlfVE9fU0hPV10sIDAsIE5VTEwp
OwotfQotCi12b2lkIHdlYmtpdFdlYlZpZXdDbG9zZVBhZ2UoV2ViS2l0V2ViVmlldyogd2ViVmll
dykKLXsKLSAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHNpZ25hbHNbQ0xPU0VdLCAwLCBOVUxM
KTsKLX0KLQotdm9pZCB3ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdEFsZXJ0KFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIGNvbnN0IENTdHJpbmcmIG1lc3NhZ2UpCi17Ci0gICAgZ2Jvb2xlYW4gcmV0
dXJuVmFsdWU7Ci0gICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW1NDUklQVF9BTEVS
VF0sIDAsIG1lc3NhZ2UuZGF0YSgpLCAmcmV0dXJuVmFsdWUpOwotfQotCi1ib29sIHdlYmtpdFdl
YlZpZXdSdW5KYXZhU2NyaXB0Q29uZmlybShXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBD
U3RyaW5nJiBtZXNzYWdlKQotewotICAgIGdib29sZWFuIHJldHVyblZhbHVlLCBjb25maXJtZWQ7
Ci0gICAgZ19zaWduYWxfZW1pdCh3ZWJWaWV3LCBzaWduYWxzW1NDUklQVF9DT05GSVJNXSwgMCwg
bWVzc2FnZS5kYXRhKCksICZjb25maXJtZWQsICZyZXR1cm5WYWx1ZSk7Ci0gICAgcmV0dXJuIGNv
bmZpcm1lZDsKLX0KLQotV0tTdHJpbmdSZWYgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRQcm9t
cHQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgQ1N0cmluZyYgbWVzc2FnZSwgY29uc3Qg
Q1N0cmluZyYgZGVmYXVsdFRleHQpCi17Ci0gICAgZ2Jvb2xlYW4gcmV0dXJuVmFsdWU7Ci0gICAg
R093blB0cjxjaGFyPiB0ZXh0OwotICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgc2lnbmFsc1tT
Q1JJUFRfUFJPTVBUXSwgMCwgbWVzc2FnZS5kYXRhKCksIGRlZmF1bHRUZXh0LmRhdGEoKSwgJnRl
eHQub3V0UHRyKCksICZyZXR1cm5WYWx1ZSk7Ci0gICAgcmV0dXJuIHRleHQgPyBXS1N0cmluZ0Ny
ZWF0ZVdpdGhVVEY4Q1N0cmluZyh0ZXh0LmdldCgpKSA6IDA7Ci19Ci0KIC8qKgogICogd2Via2l0
X3dlYl92aWV3X25ldzoKICAqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJWaWV3LmgKaW5kZXggZWJmY2ZjNy4uOTUzNDBkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuaApAQCAtNTcsMjAgKzU3
LDYgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3IHsKIHN0cnVjdCBfV2ViS2l0V2ViVmlld0NsYXNz
IHsKICAgICBXZWJLaXRXZWJWaWV3QmFzZUNsYXNzIHBhcmVudDsKIAotICAgIEd0a1dpZGdldCAq
KCogY3JlYXRlKSAgICAgICAgIChXZWJLaXRXZWJWaWV3ICp3ZWJfdmlldyk7Ci0gICAgdm9pZCAg
ICAgICAoKiByZWFkeV90b19zaG93KSAgKFdlYktpdFdlYlZpZXcgKndlYl92aWV3KTsKLSAgICB2
b2lkICAgICAgICgqIGNsb3NlKSAgICAgICAgICAoV2ViS2l0V2ViVmlldyAqd2ViX3ZpZXcpOwot
Ci0gICAgZ2Jvb2xlYW4gICAoKiBzY3JpcHRfYWxlcnQpICAgKFdlYktpdFdlYlZpZXcgKndlYl92
aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICpt
ZXNzYWdlKTsKLSAgICBnYm9vbGVhbiAgICgqIHNjcmlwdF9jb25maXJtKSAoV2ViS2l0V2ViVmll
dyAqd2ViX3ZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdj
aGFyICAgKm1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29s
ZWFuICAgICAgKmNvbmZpcm1lZCk7Ci0gICAgZ2Jvb2xlYW4gICAoKiBzY3JpcHRfcHJvbXB0KSAg
KFdlYktpdFdlYlZpZXcgKndlYl92aWV3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBnY2hhciAgICptZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBnY2hhciAgICpkZWZhdWx0X3RleHQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGdjaGFyICAgICAgICAqKnRleHQpOwotCiAgICAgLyogUGFkZGluZyBm
b3IgZnV0dXJlIGV4cGFuc2lvbiAqLwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMCkgKHZv
aWQpOwogICAgIHZvaWQgKCpfd2Via2l0X3Jlc2VydmVkMSkgKHZvaWQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdQcml2YXRlLmgK
aW5kZXggZTgxMDc2MS4uZjdlYTFmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3UHJpdmF0ZS5oCkBAIC0yOCwxOCArMjgsMTEg
QEAKICNkZWZpbmUgV2ViS2l0V2ViVmlld1ByaXZhdGVfaAogCiAjaW5jbHVkZSAiV2ViS2l0V2Vi
Vmlldy5oIgotI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDxXZWJLaXQy
L1dlYktpdDIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKIHZvaWQgd2Via2l0
V2ViVmlld1NldEVzdGltYXRlZExvYWRQcm9ncmVzcyhXZWJLaXRXZWJWaWV3KiwgZG91YmxlIGVz
dGltYXRlZExvYWRQcm9ncmVzcyk7CiB2b2lkIHdlYmtpdFdlYlZpZXdTZXRUaXRsZShXZWJLaXRX
ZWJWaWV3KiwgY29uc3QgQ1N0cmluZyYpOwogdm9pZCB3ZWJraXRXZWJWaWV3VXBkYXRlVVJJKFdl
YktpdFdlYlZpZXcqKTsKLVdLUGFnZVJlZiB3ZWJraXRXZWJWaWV3Q3JlYXRlTmV3UGFnZShXZWJL
aXRXZWJWaWV3Kik7Ci12b2lkIHdlYmtpdFdlYlZpZXdSZWFkeVRvU2hvd1BhZ2UoV2ViS2l0V2Vi
VmlldyopOwotdm9pZCB3ZWJraXRXZWJWaWV3Q2xvc2VQYWdlKFdlYktpdFdlYlZpZXcqKTsKLXZv
aWQgd2Via2l0V2ViVmlld1J1bkphdmFTY3JpcHRBbGVydChXZWJLaXRXZWJWaWV3KiwgY29uc3Qg
Q1N0cmluZyYgbWVzc2FnZSk7Ci1ib29sIHdlYmtpdFdlYlZpZXdSdW5KYXZhU2NyaXB0Q29uZmly
bShXZWJLaXRXZWJWaWV3KiwgY29uc3QgQ1N0cmluZyYgbWVzc2FnZSk7Ci1XS1N0cmluZ1JlZiB3
ZWJraXRXZWJWaWV3UnVuSmF2YVNjcmlwdFByb21wdChXZWJLaXRXZWJWaWV3KiwgY29uc3QgQ1N0
cmluZyYgbWVzc2FnZSwgY29uc3QgQ1N0cmluZyYgZGVmYXVsdFRleHQpOwogCiAjZW5kaWYgLy8g
V2ViS2l0V2ViVmlld1ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvdGVzdHMvVGVzdFdlYktpdFdlYlZpZXcuY3BwCmluZGV4IGNiNTc4
MTYuLmRkODVlMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L3Rlc3RzL1Rlc3RXZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2d0ay90ZXN0cy9UZXN0V2ViS2l0V2ViVmlldy5jcHAKQEAgLTE5LDYgKzE5LDcgQEAK
IAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlZpZXdUZXN0LmgiCisjaW5jbHVk
ZSAiTG9hZFRyYWNraW5nVGVzdC5oIgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQdHIuaD4K
IAogc3RhdGljIHZvaWQgdGVzdFdlYlZpZXdEZWZhdWx0Q29udGV4dChXZWJWaWV3VGVzdCogdGVz
dCwgZ2NvbnN0cG9pbnRlcikKQEAgLTc1LDE3MiArNzYsMTIgQEAgc3RhdGljIHZvaWQgdGVzdFdl
YlZpZXdTZXR0aW5ncyhXZWJWaWV3VGVzdCogdGVzdCwgZ2NvbnN0cG9pbnRlcikKICAgICBnX2Fz
c2VydCh3ZWJraXRfc2V0dGluZ3NfZ2V0X2VuYWJsZV9qYXZhc2NyaXB0KHNldHRpbmdzKSk7CiB9
CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBrQWxlcnREaWFsb2dNZXNzYWdlID0gIldlYktpdEdUSysg
YWxlcnQgZGlhbG9nIG1lc3NhZ2UiOwotc3RhdGljIGNvbnN0IGNoYXIqIGtDb25maXJtRGlhbG9n
TWVzc2FnZSA9ICJXZWJLaXRHVEsrIGNvbmZpcm0gZGlhbG9nIG1lc3NhZ2UiOwotc3RhdGljIGNv
bnN0IGNoYXIqIGtQcm9tcHREaWFsb2dNZXNzYWdlID0gIldlYktpdEdUSysgcHJvbXB0IGRpYWxv
ZyBtZXNzYWdlIjsKLXN0YXRpYyBjb25zdCBjaGFyKiBrUHJvbXB0RGlhbG9nUmV0dXJuZWRUZXh0
ID0gIldlYktpdEdUSysgcHJvbXB0IGRpYWxvZyByZXR1cm5lZCB0ZXh0IjsKLQotY2xhc3MgVUlD
bGllbnRUZXN0OiBwdWJsaWMgV2ViVmlld1Rlc3QgewotcHVibGljOgotICAgIE1BS0VfR0xJQl9U
RVNUX0ZJWFRVUkUoVUlDbGllbnRUZXN0KTsKLQotICAgIGVudW0gV2ViVmlld0V2ZW50cyB7Ci0g
ICAgICAgIENyZWF0ZSwKLSAgICAgICAgUmVhZHlUb1Nob3csCi0gICAgICAgIENsb3NlCi0gICAg
fTsKLQotICAgIGVudW0gU2NyaXB0VHlwZSB7Ci0gICAgICAgIEFsZXJ0LAotICAgICAgICBDb25m
aXJtLAotICAgICAgICBQcm9tcHQKLSAgICB9OwotCi0gICAgc3RhdGljIHZvaWQgdmlld0Nsb3Nl
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIFVJQ2xpZW50VGVzdCogdGVzdCkKLSAgICB7Ci0gICAg
ICAgIGdfYXNzZXJ0KHdlYlZpZXcgIT0gdGVzdC0+bV93ZWJWaWV3KTsKLQotICAgICAgICB0ZXN0
LT5tX3dlYlZpZXdFdmVudHMuYXBwZW5kKENsb3NlKTsKLSAgICAgICAgZ19vYmplY3RfdW5yZWYo
d2ViVmlldyk7Ci0KLSAgICAgICAgZ19tYWluX2xvb3BfcXVpdCh0ZXN0LT5tX21haW5Mb29wKTsK
LSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCB2aWV3UmVhZHlUb1Nob3coV2ViS2l0V2ViVmlldyog
d2ViVmlldywgVUlDbGllbnRUZXN0KiB0ZXN0KQotICAgIHsKLSAgICAgICAgZ19hc3NlcnQod2Vi
VmlldyAhPSB0ZXN0LT5tX3dlYlZpZXcpOwotCi0gICAgICAgIHRlc3QtPm1fd2ViVmlld0V2ZW50
cy5hcHBlbmQoUmVhZHlUb1Nob3cpOwotICAgIH0KLQotICAgIHN0YXRpYyBHdGtXaWRnZXQqIHZp
ZXdDcmVhdGUoV2ViS2l0V2ViVmlldyogd2ViVmlldywgVUlDbGllbnRUZXN0KiB0ZXN0KQotICAg
IHsKLSAgICAgICAgZ19hc3NlcnQod2ViVmlldyA9PSB0ZXN0LT5tX3dlYlZpZXcpOwotCi0gICAg
ICAgIEd0a1dpZGdldCogbmV3V2ViVmlldyA9IHdlYmtpdF93ZWJfdmlld19uZXdfd2l0aF9jb250
ZXh0KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh3ZWJWaWV3KSk7Ci0gICAgICAgIGdfb2Jq
ZWN0X3JlZl9zaW5rKG5ld1dlYlZpZXcpOwotCi0gICAgICAgIHRlc3QtPm1fd2ViVmlld0V2ZW50
cy5hcHBlbmQoQ3JlYXRlKTsKLQotICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG5ld1dlYlZpZXcs
ICJyZWFkeS10by1zaG93IiwgR19DQUxMQkFDSyh2aWV3UmVhZHlUb1Nob3cpLCB0ZXN0KTsKLSAg
ICAgICAgZ19zaWduYWxfY29ubmVjdChuZXdXZWJWaWV3LCAiY2xvc2UiLCBHX0NBTExCQUNLKHZp
ZXdDbG9zZSksIHRlc3QpOwotCi0gICAgICAgIHJldHVybiBuZXdXZWJWaWV3OwotICAgIH0KLQot
ICAgIHN0YXRpYyBnYm9vbGVhbiBzY3JpcHRBbGVydChXZWJLaXRXZWJWaWV3KiwgY29uc3QgY2hh
ciogbWVzc2FnZSwgVUlDbGllbnRUZXN0KiB0ZXN0KQotICAgIHsKLSAgICAgICAgc3dpdGNoICh0
ZXN0LT5tX3NjcmlwdFR5cGUpIHsKLSAgICAgICAgY2FzZSBVSUNsaWVudFRlc3Q6OkFsZXJ0Ogot
ICAgICAgICAgICAgZ19hc3NlcnRfY21wc3RyKG1lc3NhZ2UsID09LCBrQWxlcnREaWFsb2dNZXNz
YWdlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFVJQ2xpZW50VGVzdDo6Q29u
ZmlybToKLSAgICAgICAgICAgIGdfYXNzZXJ0KHRlc3QtPm1fc2NyaXB0RGlhbG9nQ29uZmlybWVk
KTsKLSAgICAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihtZXNzYWdlLCA9PSwgImNvbmZpcm1lZCIp
OwotCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBVSUNsaWVudFRlc3Q6OlByb21w
dDoKLSAgICAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihtZXNzYWdlLCA9PSwga1Byb21wdERpYWxv
Z1JldHVybmVkVGV4dCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAg
IGdfbWFpbl9sb29wX3F1aXQodGVzdC0+bV9tYWluTG9vcCk7Ci0KLSAgICAgICAgcmV0dXJuIFRS
VUU7Ci0gICAgfQotCi0gICAgc3RhdGljIGdib29sZWFuIHNjcmlwdENvbmZpcm0oV2ViS2l0V2Vi
VmlldyosIGNvbnN0IGNoYXIqIG1lc3NhZ2UsIGdib29sZWFuKiBjb25maXJtZWQsIFVJQ2xpZW50
VGVzdCogdGVzdCkKLSAgICB7Ci0gICAgICAgIGdfYXNzZXJ0X2NtcHN0cihtZXNzYWdlLCA9PSwg
a0NvbmZpcm1EaWFsb2dNZXNzYWdlKTsKLSAgICAgICAgZ19hc3NlcnQoY29uZmlybWVkKTsKLSAg
ICAgICAgdGVzdC0+bV9zY3JpcHREaWFsb2dDb25maXJtZWQgPSAhdGVzdC0+bV9zY3JpcHREaWFs
b2dDb25maXJtZWQ7Ci0gICAgICAgICpjb25maXJtZWQgPSB0ZXN0LT5tX3NjcmlwdERpYWxvZ0Nv
bmZpcm1lZDsKLQotICAgICAgICByZXR1cm4gVFJVRTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgZ2Jv
b2xlYW4gc2NyaXB0UHJvbXB0KFdlYktpdFdlYlZpZXcqLCBjb25zdCBjaGFyKiBtZXNzYWdlLCBj
b25zdCBjaGFyKiBkZWZhdWx0VGV4dCwgY2hhciAqKnRleHQsIFVJQ2xpZW50VGVzdCogdGVzdCkK
LSAgICB7Ci0gICAgICAgIGdfYXNzZXJ0X2NtcHN0cihtZXNzYWdlLCA9PSwga1Byb21wdERpYWxv
Z01lc3NhZ2UpOwotICAgICAgICBnX2Fzc2VydF9jbXBzdHIoZGVmYXVsdFRleHQsID09LCAiZGVm
YXVsdCIpOwotICAgICAgICBnX2Fzc2VydCh0ZXh0KTsKLSAgICAgICAgKnRleHQgPSBnX3N0cmR1
cChrUHJvbXB0RGlhbG9nUmV0dXJuZWRUZXh0KTsKLQotICAgICAgICByZXR1cm4gVFJVRTsKLSAg
ICB9Ci0KLSAgICBVSUNsaWVudFRlc3QoKQotICAgICAgICA6IG1fc2NyaXB0VHlwZShBbGVydCkK
LSAgICAgICAgLCBtX3NjcmlwdERpYWxvZ0NvbmZpcm1lZCh0cnVlKQotICAgIHsKLSAgICAgICAg
d2Via2l0X3NldHRpbmdzX3NldF9qYXZhc2NyaXB0X2Nhbl9vcGVuX3dpbmRvd3NfYXV0b21hdGlj
YWxseSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKG1fd2ViVmlldyksIFRSVUUpOwotICAg
ICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgImNyZWF0ZSIsIEdfQ0FMTEJBQ0sodmll
d0NyZWF0ZSksIHRoaXMpOwotICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywgInNj
cmlwdC1hbGVydCIsIEdfQ0FMTEJBQ0soc2NyaXB0QWxlcnQpLCB0aGlzKTsKLSAgICAgICAgZ19z
aWduYWxfY29ubmVjdChtX3dlYlZpZXcsICJzY3JpcHQtY29uZmlybSIsIEdfQ0FMTEJBQ0soc2Ny
aXB0Q29uZmlybSksIHRoaXMpOwotICAgICAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2ViVmlldywg
InNjcmlwdC1wcm9tcHQiLCBHX0NBTExCQUNLKHNjcmlwdFByb21wdCksIHRoaXMpOwotICAgIH0K
LQotICAgIH5VSUNsaWVudFRlc3QoKQotICAgIHsKLSAgICAgICAgZ19zaWduYWxfaGFuZGxlcnNf
ZGlzY29ubmVjdF9tYXRjaGVkKG1fd2ViVmlldywgR19TSUdOQUxfTUFUQ0hfREFUQSwgMCwgMCwg
MCwgMCwgdGhpcyk7Ci0gICAgfQotCi0gICAgdm9pZCB3YWl0VW50aWxNYWluTG9vcEZpbmlzaGVz
KCkKLSAgICB7Ci0gICAgICAgIGdfbWFpbl9sb29wX3J1bihtX21haW5Mb29wKTsKLSAgICB9Ci0K
LSAgICBWZWN0b3I8V2ViVmlld0V2ZW50cz4gbV93ZWJWaWV3RXZlbnRzOwotICAgIFNjcmlwdFR5
cGUgbV9zY3JpcHRUeXBlOwotICAgIGJvb2wgbV9zY3JpcHREaWFsb2dDb25maXJtZWQ7Ci19Owot
Ci1zdGF0aWMgdm9pZCB0ZXN0V2ViVmlld0NyZWF0ZVJlYWR5Q2xvc2UoVUlDbGllbnRUZXN0KiB0
ZXN0LCBnY29uc3Rwb2ludGVyKQotewotICAgIHRlc3QtPmxvYWRIdG1sKCI8aHRtbD48Ym9keSBv
bkxvYWQ9XCJ3aW5kb3cub3BlbigpLmNsb3NlKCk7XCI+PC9odG1sPiIsIDApOwotICAgIHRlc3Qt
PndhaXRVbnRpbE1haW5Mb29wRmluaXNoZXMoKTsKLQotICAgIFZlY3RvcjxVSUNsaWVudFRlc3Q6
OldlYlZpZXdFdmVudHM+JiBldmVudHMgPSB0ZXN0LT5tX3dlYlZpZXdFdmVudHM7Ci0gICAgZ19h
c3NlcnRfY21waW50KGV2ZW50cy5zaXplKCksID09LCAzKTsKLSAgICBnX2Fzc2VydF9jbXBpbnQo
ZXZlbnRzWzBdLCA9PSwgVUlDbGllbnRUZXN0OjpDcmVhdGUpOwotICAgIGdfYXNzZXJ0X2NtcGlu
dChldmVudHNbMV0sID09LCBVSUNsaWVudFRlc3Q6OlJlYWR5VG9TaG93KTsKLSAgICBnX2Fzc2Vy
dF9jbXBpbnQoZXZlbnRzWzJdLCA9PSwgVUlDbGllbnRUZXN0OjpDbG9zZSk7Ci19Ci0KLXN0YXRp
YyB2b2lkIHRlc3RXZWJWaWV3SmF2YVNjcmlwdERpYWxvZ3MoVUlDbGllbnRUZXN0KiB0ZXN0LCBn
Y29uc3Rwb2ludGVyKQotewotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBodG1sT25Mb2FkRm9ybWF0
ID0gIjxodG1sPjxib2R5IG9uTG9hZD1cIiVzXCI+PC9ib2R5PjwvaHRtbD4iOwotICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBqc0FsZXJ0Rm9ybWF0ID0gImFsZXJ0KCclcycpIjsKLSAgICBzdGF0aWMg
Y29uc3QgY2hhcioganNDb25maXJtRm9ybWF0ID0gImRvIHsgY29uZmlybWVkID0gY29uZmlybSgn
JXMnKTsgfSB3aGlsZSAoIWNvbmZpcm1lZCk7IGFsZXJ0KCdjb25maXJtZWQnKTsiOwotICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBqc1Byb21wdEZvcm1hdCA9ICJhbGVydChwcm9tcHQoJyVzJywgJ2Rl
ZmF1bHQnKSk7IjsKLQotICAgIHRlc3QtPm1fc2NyaXB0VHlwZSA9IFVJQ2xpZW50VGVzdDo6QWxl
cnQ7Ci0gICAgR093blB0cjxjaGFyPiBhbGVydERpYWxvZ01lc3NhZ2UoZ19zdHJkdXBfcHJpbnRm
KGpzQWxlcnRGb3JtYXQsIGtBbGVydERpYWxvZ01lc3NhZ2UpKTsKLSAgICBHT3duUHRyPGNoYXI+
IGFsZXJ0SFRNTChnX3N0cmR1cF9wcmludGYoaHRtbE9uTG9hZEZvcm1hdCwgYWxlcnREaWFsb2dN
ZXNzYWdlLmdldCgpKSk7Ci0gICAgdGVzdC0+bG9hZEh0bWwoYWxlcnRIVE1MLmdldCgpLCAwKTsK
LSAgICB0ZXN0LT53YWl0VW50aWxNYWluTG9vcEZpbmlzaGVzKCk7Ci0KLSAgICB0ZXN0LT5tX3Nj
cmlwdFR5cGUgPSBVSUNsaWVudFRlc3Q6OkNvbmZpcm07Ci0gICAgR093blB0cjxjaGFyPiBjb25m
aXJtRGlhbG9nTWVzc2FnZShnX3N0cmR1cF9wcmludGYoanNDb25maXJtRm9ybWF0LCBrQ29uZmly
bURpYWxvZ01lc3NhZ2UpKTsKLSAgICBHT3duUHRyPGNoYXI+IGNvbmZpcm1IVE1MKGdfc3RyZHVw
X3ByaW50ZihodG1sT25Mb2FkRm9ybWF0LCBjb25maXJtRGlhbG9nTWVzc2FnZS5nZXQoKSkpOwot
ICAgIHRlc3QtPmxvYWRIdG1sKGNvbmZpcm1IVE1MLmdldCgpLCAwKTsKLSAgICB0ZXN0LT53YWl0
VW50aWxNYWluTG9vcEZpbmlzaGVzKCk7Ci0KLSAgICB0ZXN0LT5tX3NjcmlwdFR5cGUgPSBVSUNs
aWVudFRlc3Q6OlByb21wdDsKLSAgICBHT3duUHRyPGNoYXI+IHByb21wdERpYWxvZ01lc3NhZ2Uo
Z19zdHJkdXBfcHJpbnRmKGpzUHJvbXB0Rm9ybWF0LCBrUHJvbXB0RGlhbG9nTWVzc2FnZSkpOwot
ICAgIEdPd25QdHI8Y2hhcj4gcHJvbXB0SFRNTChnX3N0cmR1cF9wcmludGYoaHRtbE9uTG9hZEZv
cm1hdCwgcHJvbXB0RGlhbG9nTWVzc2FnZS5nZXQoKSkpOwotICAgIHRlc3QtPmxvYWRIdG1sKHBy
b21wdEhUTUwuZ2V0KCksIDApOwotICAgIHRlc3QtPndhaXRVbnRpbE1haW5Mb29wRmluaXNoZXMo
KTsKLX0KLQogdm9pZCBiZWZvcmVBbGwoKQogewogICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktp
dFdlYlZpZXciLCAiZGVmYXVsdC1jb250ZXh0IiwgdGVzdFdlYlZpZXdEZWZhdWx0Q29udGV4dCk7
CiAgICAgV2ViVmlld1Rlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJjdXN0b20tY2hhcnNldCIs
IHRlc3RXZWJWaWV3Q3VzdG9tQ2hhcnNldCk7CiAgICAgVGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3
IiwgIndlYnZpZXdzLXNoYXJlLWNsaWVudHMiLCB0ZXN0V2ViVmlld3NTaGFyZUNsaWVudHMpOwog
ICAgIFdlYlZpZXdUZXN0OjphZGQoIldlYktpdFdlYlZpZXciLCAic2V0dGluZ3MiLCB0ZXN0V2Vi
Vmlld1NldHRpbmdzKTsKLSAgICBVSUNsaWVudFRlc3Q6OmFkZCgiV2ViS2l0V2ViVmlldyIsICJj
cmVhdGUtcmVhZHktY2xvc2UiLCB0ZXN0V2ViVmlld0NyZWF0ZVJlYWR5Q2xvc2UpOwotICAgIFVJ
Q2xpZW50VGVzdDo6YWRkKCJXZWJLaXRXZWJWaWV3IiwgImphdmFzY3JpcHQtZGlhbG9ncyIsIHRl
c3RXZWJWaWV3SmF2YVNjcmlwdERpYWxvZ3MpOwogfQogCiB2b2lkIGFmdGVyQWxsKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFsLmxp
c3QgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay93ZWJraXQybWFyc2hhbC5saXN0
CmluZGV4IGM5NGQ5YzIuLmI3MDY5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL3dlYmtpdDJtYXJzaGFsLmxpc3QKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9ndGsvd2Via2l0Mm1hcnNoYWwubGlzdApAQCAtMSw5ICsxLDUgQEAKIEJPT0xF
QU46T0JKRUNULFNUUklORyxQT0lOVEVSCiBCT09MRUFOOk9CSkVDVAotQk9PTEVBTjpTVFJJTkcK
LUJPT0xFQU46U1RSSU5HLFBPSU5URVIKLUJPT0xFQU46U1RSSU5HLFNUUklORyxQT0lOVEVSCiBC
T09MRUFOOlZPSUQKLU9CSkVDVDpWT0lECiBWT0lEOk9CSkVDVCxQT0lOVEVSCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2VicGFnZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnBhZ2UuY3BwCmluZGV4IGZm
YmYxYjAuLjVlMWEzYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXF1aWNrd2VicGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJwYWdlLmNwcApAQCAtMTU2LDcgKzE1Niw2IEBAIGJvb2wgUVF1aWNrV2ViUGFn
ZTo6ZXZlbnQoUUV2ZW50KiBldikKIAogdm9pZCBRUXVpY2tXZWJQYWdlOjp0b3VjaEV2ZW50KFFU
b3VjaEV2ZW50KiBldmVudCkKIHsKLSAgICBmb3JjZUFjdGl2ZUZvY3VzKCk7CiAgICAgdGhpcy0+
ZXZlbnQoZXZlbnQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC9xcXVpY2t3ZWJ2aWV3LmNwcAppbmRleCBiYmMxODgzLi4xMWRjODlkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlldy5jcHAKQEAgLTI0LDcg
KzI0LDYgQEAKICNpbmNsdWRlICJRdERpYWxvZ1J1bm5lci5oIgogI2luY2x1ZGUgIlF0V2ViUGFn
ZVByb3h5LmgiCiAjaW5jbHVkZSAiVXRpbHNRdC5oIgotI2luY2x1ZGUgIldlYkJhY2tGb3J3YXJk
TGlzdC5oIgogI2luY2x1ZGUgIldlYlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgIldlYlByZWZlcmVu
Y2VzLmgiCiAKQEAgLTM2LDEwICszNSwxMSBAQAogCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SW5pdGlhbGl6ZVRocmVhZGluZy5oPgogI2luY2x1ZGUgPFFGaWxlRGlhbG9nPgorI2luY2x1ZGUg
PFFJbnB1dERpYWxvZz4KICNpbmNsdWRlIDxRdFF1aWNrL1FRdWlja0NhbnZhcz4KICNpbmNsdWRl
IDxXS09wZW5QYW5lbFJlc3VsdExpc3RlbmVyLmg+CiAKLVFRdWlja1dlYlZpZXdQcml2YXRlOjpR
UXVpY2tXZWJWaWV3UHJpdmF0ZShRUXVpY2tXZWJWaWV3KiB2aWV3cG9ydCkKK1FRdWlja1dlYlZp
ZXdQcml2YXRlOjpRUXVpY2tXZWJWaWV3UHJpdmF0ZShRUXVpY2tXZWJWaWV3KiB2aWV3cG9ydCwg
V0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKICAg
ICA6IHFfcHRyKHZpZXdwb3J0KQogICAgICwgYWxlcnREaWFsb2coMCkKICAgICAsIGNvbmZpcm1E
aWFsb2coMCkKQEAgLTUwLDIxICs1MCwxNCBAQCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6UVF1aWNr
V2ViVmlld1ByaXZhdGUoUVF1aWNrV2ViVmlldyogdmlld3BvcnQpCiAgICAgLCBwYWdlSXNTdXNw
ZW5kZWQoZmFsc2UpCiB7CiAgICAgdmlld3BvcnQtPnNldEZsYWdzKFFRdWlja0l0ZW06Okl0ZW1D
bGlwc0NoaWxkcmVuVG9TaGFwZSk7CisKICAgICBRT2JqZWN0Ojpjb25uZWN0KHZpZXdwb3J0LCBT
SUdOQUwodmlzaWJsZUNoYW5nZWQoKSksIHZpZXdwb3J0LCBTTE9UKF9xX29uVmlzaWJsZUNoYW5n
ZWQoKSkpOwogICAgIHBhZ2VWaWV3LnJlc2V0KG5ldyBRUXVpY2tXZWJQYWdlKHZpZXdwb3J0KSk7
Ci19CiAKLVFRdWlja1dlYlZpZXdQcml2YXRlOjp+UVF1aWNrV2ViVmlld1ByaXZhdGUoKQotewot
ICAgIGlmIChpbnRlcmFjdGlvbkVuZ2luZSkKLSAgICAgICAgaW50ZXJhY3Rpb25FbmdpbmUtPmRp
c2Nvbm5lY3QoKTsKLX0KKyAgICBwYWdlQ2xpZW50LnJlc2V0KG5ldyBRdFBhZ2VDbGllbnQoKSk7
CiAKLS8vIE5vdGU6IHdlIGRlbGF5IHRoaXMgaW5pdGlhbGl6YXRpb24gdG8gbWFrZSBzdXJlIHRo
YXQgUVF1aWNrV2ViVmlldyBoYXMgaXRzIGQtcHRyIGluLXBsYWNlLgotdm9pZCBRUXVpY2tXZWJW
aWV3UHJpdmF0ZTo6aW5pdGlhbGl6ZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3Jv
dXBSZWYgcGFnZUdyb3VwUmVmKQotewogICAgIFFRdWlja1dlYlBhZ2VQcml2YXRlKiBjb25zdCBw
YWdlVmlld1ByaXZhdGUgPSBwYWdlVmlldy5kYXRhKCktPmQ7Ci0gICAgc2V0UGFnZVByb3h5KG5l
dyBRdFdlYlBhZ2VQcm94eShxX3B0ciwgJnBhZ2VDbGllbnQsIGNvbnRleHRSZWYsIHBhZ2VHcm91
cFJlZikpOworICAgIHNldFBhZ2VQcm94eShuZXcgUXRXZWJQYWdlUHJveHkocGFnZVZpZXcuZGF0
YSgpLCBxX3B0ciwgcGFnZUNsaWVudC5kYXRhKCksIGNvbnRleHRSZWYsIHBhZ2VHcm91cFJlZikp
OwogICAgIHBhZ2VWaWV3UHJpdmF0ZS0+c2V0UGFnZVByb3h5KHBhZ2VQcm94eS5kYXRhKCkpOwog
CiAgICAgcGFnZUxvYWRDbGllbnQucmVzZXQobmV3IFF0V2ViUGFnZUxvYWRDbGllbnQocGFnZVBy
b3h5LT5wYWdlUmVmKCksIHFfcHRyKSk7CkBAIC03Niw3ICs2OSw4IEBAIHZvaWQgUVF1aWNrV2Vi
Vmlld1ByaXZhdGU6OmluaXRpYWxpemUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdy
b3VwUmVmIHBhCiAgICAgc2V0VXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKGZhbHNlKTsK
ICAgICBRV2ViUHJlZmVyZW5jZXNQcml2YXRlOjpnZXQocGFnZVByb3h5LT5wcmVmZXJlbmNlcygp
KS0+c2V0QXR0cmlidXRlKFFXZWJQcmVmZXJlbmNlc1ByaXZhdGU6OkFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdFbmFibGVkLCB0cnVlKTsKIAotICAgIHBhZ2VDbGllbnQuaW5pdGlhbGl6ZShxX3B0ciwg
cGFnZVByb3h5LmRhdGEoKSwgZXZlbnRIYW5kbGVyLmRhdGEoKSwgJnVuZG9Db250cm9sbGVyKTsK
KyAgICBwYWdlQ2xpZW50LT5zZXRFdmVudEhhbmRsZXIoZXZlbnRIYW5kbGVyLmRhdGEoKSk7Cisg
ICAgcGFnZUNsaWVudC0+c2V0UGFnZVByb3h5KHBhZ2VQcm94eS5kYXRhKCkpOwogCiAgICAgLy8g
Q3JlYXRlcyBhIHBhZ2Ugd2l0aCB0aGUgcGFnZSBjcmVhdGlvbiBwYXJhbWV0ZXJzLgogICAgIHBh
Z2VQcm94eS0+aW5pdChldmVudEhhbmRsZXIuZGF0YSgpKTsKQEAgLTg1LDYgKzc5LDEyIEBAIHZv
aWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmluaXRpYWxpemUoV0tDb250ZXh0UmVmIGNvbnRleHRS
ZWYsIFdLUGFnZUdyb3VwUmVmIHBhCiAgICAgX3Ffb25WaXNpYmxlQ2hhbmdlZCgpOwogfQogCitR
UXVpY2tXZWJWaWV3UHJpdmF0ZTo6flFRdWlja1dlYlZpZXdQcml2YXRlKCkKK3sKKyAgICBpZiAo
aW50ZXJhY3Rpb25FbmdpbmUpCisgICAgICAgIGludGVyYWN0aW9uRW5naW5lLT5kaXNjb25uZWN0
KCk7Cit9CisKIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OmVuYWJsZU1vdXNlRXZlbnRzKCkK
IHsKICAgICBRX1EoUVF1aWNrV2ViVmlldyk7CkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBRUXVp
Y2tXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KCkKICAgICBwYWdlUHJv
eHktPm5hdmlnYXRpb25IaXN0b3J5KCktPmQtPnJlc2V0KCk7CiB9CiAKLXZvaWQgUVF1aWNrV2Vi
Vmlld1ByaXZhdGU6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFFQb2ludCYgcG9zKQordm9p
ZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6c2Nyb2xsUG9zaXRpb25SZXF1ZXN0ZWQoY29uc3QgUVBv
aW50JiBwb3MpCiB7CiAgICAgaWYgKHVzZVRyYWRpdGlvbmFsRGVza3RvcEJlaGF2aW91cikKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjExLDIxICsyMTEsNiBAQCB2b2lkIFFRdWlja1dlYlZpZXdQcml2
YXRlOjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBRUG9pbnQmIHBvcykKICAgICBpbnRlcmFj
dGlvbkVuZ2luZS0+cGFnZVBvc2l0aW9uUmVxdWVzdChwb3MpOwogfQogCi12b2lkIFFRdWlja1dl
YlZpZXdQcml2YXRlOjpwcm9jZXNzRGlkQ3Jhc2goKQotewotICAgIGVtaXQgcV9wdHItPm5hdmln
YXRpb25TdGF0ZUNoYW5nZWQoKTsKLSAgICBldmVudEhhbmRsZXItPnJlc2V0R2VzdHVyZVJlY29n
bml6ZXJzKCk7Ci0gICAgV2ViQ29yZTo6S1VSTCB1cmwoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5n
LCB3ZWJQYWdlUHJveHkoKS0+dXJsQXRQcm9jZXNzRXhpdCgpKTsKLSAgICBxV2FybmluZygiV0FS
TklORzogVGhlIHdlYiBwcm9jZXNzIGV4cGVyaWVuY2VkIGEgY3Jhc2ggb24gJyVzJy4iLCBxUHJp
bnRhYmxlKFFVcmwodXJsKS50b1N0cmluZyhRVXJsOjpSZW1vdmVVc2VySW5mbykpKTsKLX0KLQot
dm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlkUmVsYXVuY2hQcm9jZXNzKCkKLXsKLSAgICBl
bWl0IHFfcHRyLT5uYXZpZ2F0aW9uU3RhdGVDaGFuZ2VkKCk7Ci0gICAgcVdhcm5pbmcoIldBUk5J
Tkc6IFRoZSB3ZWIgcHJvY2VzcyBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgcmVzdGFydGVkLiIpOwot
ICAgIHBhZ2VQcm94eS0+c2V0RHJhd2luZ0FyZWFTaXplKHZpZXdTaXplKCkpOwotfQotCiB2b2lk
IFFRdWlja1dlYlZpZXdQcml2YXRlOjp1cGRhdGVWaXNpYmxlQ29udGVudFJlY3QoKQogewogICAg
IFFfUShRUXVpY2tXZWJWaWV3KTsKQEAgLTI0MSw3ICsyMjYsOSBAQCB2b2lkIFFRdWlja1dlYlZp
ZXdQcml2YXRlOjpfcV92aWV3cG9ydFRyYWplY3RvcnlWZWN0b3JDaGFuZ2VkKGNvbnN0IFFQb2lu
dEYmIHRyYQogCiB2b2lkIFFRdWlja1dlYlZpZXdQcml2YXRlOjpfcV9vblZpc2libGVDaGFuZ2Vk
KCkKIHsKLSAgICB3ZWJQYWdlUHJveHkoKS0+dmlld1N0YXRlRGlkQ2hhbmdlKFdlYlBhZ2VQcm94
eTo6Vmlld0lzVmlzaWJsZSk7CisgICAgV2ViUGFnZVByb3h5KiB3a1BhZ2UgPSB0b0ltcGwocGFn
ZVByb3h5LT5wYWdlUmVmKCkpOworCisgICAgd2tQYWdlLT52aWV3U3RhdGVEaWRDaGFuZ2UoV2Vi
UGFnZVByb3h5OjpWaWV3SXNWaXNpYmxlKTsKIH0KIAogdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0
ZTo6dXBkYXRlVmlld3BvcnRTaXplKCkKQEAgLTI1Miw5ICsyMzksMTAgQEAgdm9pZCBRUXVpY2tX
ZWJWaWV3UHJpdmF0ZTo6dXBkYXRlVmlld3BvcnRTaXplKCkKICAgICBpZiAodmlld3BvcnRTaXpl
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCisgICAgV2ViUGFnZVByb3h5KiB3a1BhZ2Ug
PSB0b0ltcGwocGFnZVByb3h5LT5wYWdlUmVmKCkpOwogICAgIC8vIExldCB0aGUgV2ViUHJvY2Vz
cyBrbm93IGFib3V0IHRoZSBuZXcgdmlld3BvcnQgc2l6ZSwgc28gdGhhdAogICAgIC8vIGl0IGNh
biByZXNpemUgdGhlIGNvbnRlbnQgYWNjb3JkaW5nbHkuCi0gICAgd2ViUGFnZVByb3h5KCktPnNl
dFZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUpOworICAgIHdrUGFnZS0+c2V0Vmlld3BvcnRTaXpl
KHZpZXdwb3J0U2l6ZSk7CiAKICAgICBpbnRlcmFjdGlvbkVuZ2luZS0+YXBwbHlDb25zdHJhaW50
cyhjb21wdXRlVmlld3BvcnRDb25zdHJhaW50cygpKTsKICAgICB1cGRhdGVWaXNpYmxlQ29udGVu
dFJlY3QoKTsKQEAgLTI3MSw3ICsyNTksOCBAQCBRdFZpZXdwb3J0SW50ZXJhY3Rpb25FbmdpbmU6
OkNvbnN0cmFpbnRzIFFRdWlja1dlYlZpZXdQcml2YXRlOjpjb21wdXRlVmlld3BvcnRDbwogICAg
IGlmIChhdmFpbGFibGVTaXplLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIG5ld0NvbnN0cmFp
bnRzOwogCi0gICAgV2ViUHJlZmVyZW5jZXMqIHdrUHJlZnMgPSB3ZWJQYWdlUHJveHkoKS0+cGFn
ZUdyb3VwKCktPnByZWZlcmVuY2VzKCk7CisgICAgV2ViUGFnZVByb3h5KiB3a1BhZ2UgPSB0b0lt
cGwocGFnZVByb3h5LT5wYWdlUmVmKCkpOworICAgIFdlYlByZWZlcmVuY2VzKiB3a1ByZWZzID0g
d2tQYWdlLT5wYWdlR3JvdXAoKS0+cHJlZmVyZW5jZXMoKTsKIAogICAgIC8vIEZJWE1FOiBSZW1v
dmUgbGF0ZXI7IEhhcmRjb2RlIHNvbWUgdmFsdWVzIGZvciBub3cgdG8gbWFrZSBzdXJlIHRoZSBE
UEkgYWRqdXN0bWVudCBpcyBiZWluZyB0ZXN0ZWQuCiAgICAgd2tQcmVmcy0+c2V0RGV2aWNlRFBJ
KDI0MCk7CkBAIC00MDQsNyArMzkzLDcgQEAgdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6c2V0
VXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3VyKGJvb2wgZW5hYmxlKQogCiAgICAgLy8gRG8g
bm90IGd1YXJkLCB0ZXN0aW5nIGZvciB0aGUgc2FtZSB2YWx1ZSwgYXMgd2UgY2FsbCB0aGlzIGZy
b20gdGhlIGNvbnN0cnVjdG9yLgogCi0gICAgd2ViUGFnZVByb3h5KCktPnNldFVzZUZpeGVkTGF5
b3V0KCFlbmFibGUpOworICAgIHRvSW1wbChwYWdlUHJveHktPnBhZ2VSZWYoKSktPnNldFVzZUZp
eGVkTGF5b3V0KCFlbmFibGUpOwogCiAgICAgdXNlVHJhZGl0aW9uYWxEZXNrdG9wQmVoYXZpb3Vy
ID0gZW5hYmxlOwogICAgIGlmICh1c2VUcmFkaXRpb25hbERlc2t0b3BCZWhhdmlvdXIpCkBAIC00
MjAsMjUgKzQwOSw2IEBAIHZvaWQgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnNldFZpZXdJbkF0dGFj
aGVkUHJvcGVydGllcyhRT2JqZWN0KiBvYmplY3QpCiAgICAgYXR0YWNoZWQtPnNldFZpZXcocSk7
CiB9CiAKLS8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIFF0V2ViUGFnZVByb3h5IGlzIHJlbW92
ZWQuCi1XZWJLaXQ6OldlYlBhZ2VQcm94eSogUVF1aWNrV2ViVmlld1ByaXZhdGU6OndlYlBhZ2VQ
cm94eSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHRvSW1wbChwYWdlUHJveHktPnBhZ2VSZWYoKSk7
Ci19Ci0KLVdlYkNvcmU6OkludFNpemUgUVF1aWNrV2ViVmlld1ByaXZhdGU6OnZpZXdTaXplKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gV2ViQ29yZTo6SW50U2l6ZShwYWdlVmlldy0+d2lkdGgoKSwg
cGFnZVZpZXctPmhlaWdodCgpKTsKLX0KLQotdm9pZCBRUXVpY2tXZWJWaWV3UHJpdmF0ZTo6ZGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQotewotICAgIFFWYXJpYW50TWFwIHZhcmlhbnRNYXA7Ci0gICAgdmFyaWFudE1hcC5pbnNlcnQo
UUxhdGluMVN0cmluZygiZGF0YSIpLCBRU3RyaW5nKG1lc3NhZ2UpKTsKLSAgICB2YXJpYW50TWFw
Lmluc2VydChRTGF0aW4xU3RyaW5nKCJvcmlnaW4iKSwgcV9wdHItPnVybCgpKTsKLSAgICBlbWl0
IHFfcHRyLT5leHBlcmltZW50YWwoKS0+bWVzc2FnZVJlY2VpdmVkKHZhcmlhbnRNYXApOwotfQot
CiAvKiEKICAgICBccW1sc2lnbmFsIFdlYlZpZXc6Om9uTmF2aWdhdGlvblJlcXVlc3RlZChyZXF1
ZXN0KQogCkBAIC00NzYsNiArNDQ2LDggQEAgUVF1aWNrV2ViVmlld0V4cGVyaW1lbnRhbDo6UVF1
aWNrV2ViVmlld0V4cGVyaW1lbnRhbChRUXVpY2tXZWJWaWV3ICp3ZWJWaWV3KQogICAgICwgcV9w
dHIod2ViVmlldykKICAgICAsIGRfcHRyKHdlYlZpZXctPmRfcHRyLmRhdGEoKSkKIHsKKyAgICBR
X0QoUVF1aWNrV2ViVmlldyk7CisgICAgUU9iamVjdDo6Y29ubmVjdChkLT5wYWdlUHJveHkuZGF0
YSgpLCBTSUdOQUwocmVjZWl2ZWRNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0KFFWYXJpYW50
TWFwKSksIHRoaXMsIFNJR05BTChtZXNzYWdlUmVjZWl2ZWQoUVZhcmlhbnRNYXApKSk7CiB9CiAK
IFFRdWlja1dlYlZpZXdFeHBlcmltZW50YWw6On5RUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFsKCkK
QEAgLTU4NSwxNyArNTU3LDE0IEBAIFFRdWlja1dlYlZpZXc6OlFRdWlja1dlYlZpZXcoUVF1aWNr
SXRlbSogcGFyZW50KQogICAgICwgbV9leHBlcmltZW50YWwobmV3IFFRdWlja1dlYlZpZXdFeHBl
cmltZW50YWwodGhpcykpCiB7CiAgICAgUV9EKFFRdWlja1dlYlZpZXcpOwotICAgIGQtPmluaXRp
YWxpemUoKTsKICAgICBkLT5pbml0aWFsaXplVG91Y2godGhpcyk7CiB9CiAKIFFRdWlja1dlYlZp
ZXc6OlFRdWlja1dlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVm
IHBhZ2VHcm91cFJlZiwgUVF1aWNrSXRlbSogcGFyZW50KQogICAgIDogUVF1aWNrSXRlbShwYXJl
bnQpCi0gICAgLCBkX3B0cihuZXcgUVF1aWNrV2ViVmlld1ByaXZhdGUodGhpcykpCisgICAgLCBk
X3B0cihuZXcgUVF1aWNrV2ViVmlld1ByaXZhdGUodGhpcywgY29udGV4dFJlZiwgcGFnZUdyb3Vw
UmVmKSkKICAgICAsIG1fZXhwZXJpbWVudGFsKG5ldyBRUXVpY2tXZWJWaWV3RXhwZXJpbWVudGFs
KHRoaXMpKQogewotICAgIFFfRChRUXVpY2tXZWJWaWV3KTsKLSAgICBkLT5pbml0aWFsaXplKGNv
bnRleHRSZWYsIHBhZ2VHcm91cFJlZik7CiB9CiAKIFFRdWlja1dlYlZpZXc6On5RUXVpY2tXZWJW
aWV3KCkKQEAgLTYxMSw0MSArNTgwLDM3IEBAIFFRdWlja1dlYlBhZ2UqIFFRdWlja1dlYlZpZXc6
OnBhZ2UoKQogdm9pZCBRUXVpY2tXZWJWaWV3Ojpsb2FkKGNvbnN0IFFVcmwmIHVybCkKIHsKICAg
ICBRX0QoUVF1aWNrV2ViVmlldyk7Ci0gICAgZC0+d2ViUGFnZVByb3h5KCktPmxvYWRVUkwodXJs
LnRvU3RyaW5nKCkpOworICAgIGQtPnBhZ2VQcm94eS0+bG9hZCh1cmwpOwogfQogCiB2b2lkIFFR
dWlja1dlYlZpZXc6OmdvQmFjaygpCiB7CiAgICAgUV9EKFFRdWlja1dlYlZpZXcpOwotICAgIGQt
PndlYlBhZ2VQcm94eSgpLT5nb0JhY2soKTsKKyAgICBkLT5wYWdlUHJveHktPmdvQmFjaygpOwog
fQogCiB2b2lkIFFRdWlja1dlYlZpZXc6OmdvRm9yd2FyZCgpCiB7CiAgICAgUV9EKFFRdWlja1dl
YlZpZXcpOwotICAgIGQtPndlYlBhZ2VQcm94eSgpLT5nb0ZvcndhcmQoKTsKKyAgICBkLT5wYWdl
UHJveHktPmdvRm9yd2FyZCgpOwogfQogCiB2b2lkIFFRdWlja1dlYlZpZXc6OnN0b3AoKQogewog
ICAgIFFfRChRUXVpY2tXZWJWaWV3KTsKLSAgICBkLT53ZWJQYWdlUHJveHkoKS0+c3RvcExvYWRp
bmcoKTsKKyAgICBkLT5wYWdlUHJveHktPnN0b3AoKTsKIH0KIAogdm9pZCBRUXVpY2tXZWJWaWV3
OjpyZWxvYWQoKQogewogICAgIFFfRChRUXVpY2tXZWJWaWV3KTsKLSAgICBjb25zdCBib29sIHJl
bG9hZEZyb21PcmlnaW4gPSB0cnVlOwotICAgIGQtPndlYlBhZ2VQcm94eSgpLT5yZWxvYWQocmVs
b2FkRnJvbU9yaWdpbik7CisgICAgZC0+cGFnZVByb3h5LT5yZWxvYWQoKTsKIH0KIAogUVVybCBR
UXVpY2tXZWJWaWV3Ojp1cmwoKSBjb25zdAogewogICAgIFFfRChjb25zdCBRUXVpY2tXZWJWaWV3
KTsKLSAgICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gbWFpbkZyYW1lID0gZC0+d2ViUGFnZVByb3h5
KCktPm1haW5GcmFtZSgpOwotICAgIGlmICghbWFpbkZyYW1lKQotICAgICAgICByZXR1cm4gUVVy
bCgpOwotICAgIHJldHVybiBRVXJsKFFTdHJpbmcobWFpbkZyYW1lLT51cmwoKSkpOworICAgIHJl
dHVybiBkLT5wYWdlUHJveHktPnVybCgpOwogfQogCiBpbnQgUVF1aWNrV2ViVmlldzo6bG9hZFBy
b2dyZXNzKCkgY29uc3QKQEAgLTY1NywzNSArNjIyLDMxIEBAIGludCBRUXVpY2tXZWJWaWV3Ojps
b2FkUHJvZ3Jlc3MoKSBjb25zdAogYm9vbCBRUXVpY2tXZWJWaWV3OjpjYW5Hb0JhY2soKSBjb25z
dAogewogICAgIFFfRChjb25zdCBRUXVpY2tXZWJWaWV3KTsKLSAgICByZXR1cm4gZC0+d2ViUGFn
ZVByb3h5KCktPmNhbkdvQmFjaygpOworICAgIHJldHVybiBkLT5wYWdlUHJveHktPmNhbkdvQmFj
aygpOwogfQogCiBib29sIFFRdWlja1dlYlZpZXc6OmNhbkdvRm9yd2FyZCgpIGNvbnN0CiB7CiAg
ICAgUV9EKGNvbnN0IFFRdWlja1dlYlZpZXcpOwotICAgIHJldHVybiBkLT53ZWJQYWdlUHJveHko
KS0+Y2FuR29Gb3J3YXJkKCk7CisgICAgcmV0dXJuIGQtPnBhZ2VQcm94eS0+Y2FuR29Gb3J3YXJk
KCk7CiB9CiAKIGJvb2wgUVF1aWNrV2ViVmlldzo6bG9hZGluZygpIGNvbnN0CiB7CiAgICAgUV9E
KGNvbnN0IFFRdWlja1dlYlZpZXcpOwotICAgIFJlZlB0cjxXZWJLaXQ6OldlYkZyYW1lUHJveHk+
IG1haW5GcmFtZSA9IGQtPndlYlBhZ2VQcm94eSgpLT5tYWluRnJhbWUoKTsKLSAgICByZXR1cm4g
bWFpbkZyYW1lICYmICEoV2ViRnJhbWVQcm94eTo6TG9hZFN0YXRlRmluaXNoZWQgPT0gbWFpbkZy
YW1lLT5sb2FkU3RhdGUoKSk7CisgICAgcmV0dXJuIGQtPnBhZ2VQcm94eS0+bG9hZGluZygpOwog
fQogCiBib29sIFFRdWlja1dlYlZpZXc6OmNhblJlbG9hZCgpIGNvbnN0CiB7CiAgICAgUV9EKGNv
bnN0IFFRdWlja1dlYlZpZXcpOwotICAgIFJlZlB0cjxXZWJLaXQ6OldlYkZyYW1lUHJveHk+IG1h
aW5GcmFtZSA9IGQtPndlYlBhZ2VQcm94eSgpLT5tYWluRnJhbWUoKTsKLSAgICBpZiAobWFpbkZy
YW1lKQotICAgICAgICByZXR1cm4gKFdlYkZyYW1lUHJveHk6OkxvYWRTdGF0ZUZpbmlzaGVkID09
IG1haW5GcmFtZS0+bG9hZFN0YXRlKCkpOwotICAgIHJldHVybiBkLT53ZWJQYWdlUHJveHkoKS0+
YmFja0ZvcndhcmRMaXN0KCktPmN1cnJlbnRJdGVtKCk7CisgICAgcmV0dXJuIGQtPnBhZ2VQcm94
eS0+Y2FuUmVsb2FkKCk7CiB9CiAKIFFTdHJpbmcgUVF1aWNrV2ViVmlldzo6dGl0bGUoKSBjb25z
dAogewogICAgIFFfRChjb25zdCBRUXVpY2tXZWJWaWV3KTsKLSAgICByZXR1cm4gZC0+d2ViUGFn
ZVByb3h5KCktPnBhZ2VUaXRsZSgpOworICAgIHJldHVybiBkLT5wYWdlUHJveHktPnRpdGxlKCk7
CiB9CiAKIFFXZWJQcmVmZXJlbmNlcyogUVF1aWNrV2ViVmlldzo6cHJlZmVyZW5jZXMoKSBjb25z
dApAQCAtNzM1LDYgKzY5NiwxMiBAQCB2b2lkIFFRdWlja1dlYlZpZXc6OmZvY3VzT3V0RXZlbnQo
UUZvY3VzRXZlbnQqIGV2ZW50KQogICAgIGQtPnBhZ2VWaWV3LT5ldmVudChldmVudCk7CiB9CiAK
K3ZvaWQgUVF1aWNrV2ViVmlldzo6dG91Y2hFdmVudChRVG91Y2hFdmVudCogZXZlbnQpCit7Cisg
ICAgZm9yY2VBY3RpdmVGb2N1cygpOworICAgIFFRdWlja0l0ZW06OnRvdWNoRXZlbnQoZXZlbnQp
OworfQorCiBXS1BhZ2VSZWYgUVF1aWNrV2ViVmlldzo6cGFnZVJlZigpIGNvbnN0CiB7CiAgICAg
UV9EKGNvbnN0IFFRdWlja1dlYlZpZXcpOwpAQCAtNzUyLDcgKzcxOSw3IEBAIFdLUGFnZVJlZiBR
UXVpY2tXZWJWaWV3OjpwYWdlUmVmKCkgY29uc3QKIHZvaWQgUVF1aWNrV2ViVmlldzo6bG9hZEh0
bWwoY29uc3QgUVN0cmluZyYgaHRtbCwgY29uc3QgUVVybCYgYmFzZVVybCkKIHsKICAgICBRX0Qo
UVF1aWNrV2ViVmlldyk7Ci0gICAgZC0+d2ViUGFnZVByb3h5KCktPmxvYWRIVE1MU3RyaW5nKGh0
bWwsIGJhc2VVcmwudG9TdHJpbmcoKSk7CisgICAgZC0+cGFnZVByb3h5LT5sb2FkSFRNTFN0cmlu
ZyhodG1sLCBiYXNlVXJsKTsKIH0KIAogI2luY2x1ZGUgIm1vY19xcXVpY2t3ZWJ2aWV3X3AuY3Bw
IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2
aWV3X3AuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNrd2Vidmlld19w
LmgKaW5kZXggNTM5NWU2ZC4uZWNjZjFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3FxdWlja3dlYnZpZXdfcC5oCkBAIC0xMjAsNiArMTIwLDcgQEAgcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCBnZW9tZXRyeUNoYW5nZWQoY29uc3QgUVJlY3RGJiwgY29u
c3QgUVJlY3RGJik7CiAgICAgdmlydHVhbCB2b2lkIGZvY3VzSW5FdmVudChRRm9jdXNFdmVudCop
OwogICAgIHZpcnR1YWwgdm9pZCBmb2N1c091dEV2ZW50KFFGb2N1c0V2ZW50Kik7CisgICAgdmly
dHVhbCB2b2lkIHRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqIGV2ZW50KTsKIAogcHJpdmF0ZToKICAg
ICBRX0RFQ0xBUkVfUFJJVkFURShRUXVpY2tXZWJWaWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xcXVpY2t3ZWJ2aWV3X3BfcC5oCmluZGV4IGExOTc4NWQuLmI3
MGViYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXF1aWNr
d2Vidmlld19wX3AuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FxdWlj
a3dlYnZpZXdfcF9wLmgKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJRdFdlYlBhZ2VQb2xp
Y3lDbGllbnQuaCIKICNpbmNsdWRlICJRdFdlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIlF0V2Vi
UGFnZVVJQ2xpZW50LmgiCi0jaW5jbHVkZSAiUXRXZWJVbmRvQ29udHJvbGxlci5oIgogCiAjaW5j
bHVkZSAicXF1aWNrd2Vidmlld19wLmgiCiAjaW5jbHVkZSAicXF1aWNrd2VicGFnZV9wLmgiCkBA
IC0zNyw5ICszNiw2IEBACiAjaW5jbHVkZSA8UXRDb3JlL1FTY29wZWRQb2ludGVyPgogI2luY2x1
ZGUgPHd0Zi9Pd25QdHIuaD4KIAotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJQYWdlUHJv
eHk7Ci19CiBjbGFzcyBRdFdlYlBhZ2VQcm94eTsKIAogUVRfQkVHSU5fTkFNRVNQQUNFCkBAIC01
NCwxMiArNTAsOSBAQCBjbGFzcyBRUXVpY2tXZWJWaWV3UHJpdmF0ZSB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFFRdWlja1dlYlZpZXdQcml2YXRlKiBnZXQoUVF1aWNrV2ViVmlldyogcSkgeyByZXR1
cm4gcS0+ZF9wdHIuZGF0YSgpOyB9CiAKLSAgICBRUXVpY2tXZWJWaWV3UHJpdmF0ZShRUXVpY2tX
ZWJWaWV3KiB2aWV3cG9ydCk7Ci0gICAgdmlydHVhbCB+UVF1aWNrV2ViVmlld1ByaXZhdGUoKTsK
LQotICAgIHZvaWQgaW5pdGlhbGl6ZShXS0NvbnRleHRSZWYgY29udGV4dFJlZiA9IDAsIFdLUGFn
ZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiA9IDApOworICAgIFFRdWlja1dlYlZpZXdQcml2YXRlKFFR
dWlja1dlYlZpZXcqIHZpZXdwb3J0LCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiA9IDAsIFdLUGFn
ZUdyb3VwUmVmIHBhZ2VHcm91cFJlZiA9IDApOworICAgIHZpcnR1YWwgflFRdWlja1dlYlZpZXdQ
cml2YXRlKCk7IAogICAgIHZvaWQgc2V0UGFnZVByb3h5KFF0V2ViUGFnZVByb3h5Kik7Ci0KICAg
ICB2b2lkIGluaXRpYWxpemVUb3VjaChRUXVpY2tXZWJWaWV3KiB2aWV3cG9ydCk7CiAgICAgdm9p
ZCBpbml0aWFsaXplRGVza3RvcChRUXVpY2tXZWJWaWV3KiB2aWV3cG9ydCk7CiAgICAgdm9pZCBl
bmFibGVNb3VzZUV2ZW50cygpOwpAQCAtNjgsOSArNjEsMTEgQEAgcHVibGljOgogICAgIHZvaWQg
bG9hZERpZENvbW1pdCgpOwogCiAgICAgdm9pZCBkaWRGaW5pc2hGaXJzdE5vbkVtcHR5TGF5b3V0
KCk7CisgICAgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgUVNpemUmIG5ld1NpemUp
OwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZp
ZXdwb3J0QXJndW1lbnRzJiBhcmdzKTsKICAgICB2b2lkIGRpZENoYW5nZUJhY2tGb3J3YXJkTGlz
dCgpOwogCisgICAgdm9pZCBzY3JvbGxQb3NpdGlvblJlcXVlc3RlZChjb25zdCBRUG9pbnQmIHBv
cyk7CiAgICAgdm9pZCB1cGRhdGVWaWV3cG9ydFNpemUoKTsKICAgICBRdFZpZXdwb3J0SW50ZXJh
Y3Rpb25FbmdpbmU6OkNvbnN0cmFpbnRzIGNvbXB1dGVWaWV3cG9ydENvbnN0cmFpbnRzKCk7CiAK
QEAgLTkxLDE3ICs4Niw2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFVzZVRyYWRpdGlvbmFsRGVz
a3RvcEJlaGF2aW91cihib29sIGVuYWJsZSk7CiAgICAgdm9pZCBzZXRWaWV3SW5BdHRhY2hlZFBy
b3BlcnRpZXMoUU9iamVjdCopOwogCi0gICAgV2ViS2l0OjpXZWJQYWdlUHJveHkqIHdlYlBhZ2VQ
cm94eSgpIGNvbnN0OwotCi0gICAgLy8gUGFnZUNsaWVudC4KLSAgICBXZWJDb3JlOjpJbnRTaXpl
IHZpZXdTaXplKCkgY29uc3Q7Ci0gICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21OYXZpZ2F0
b3JRdE9iamVjdChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpOwotICAgIHZvaWQgcGFnZURpZFJlcXVl
c3RTY3JvbGwoY29uc3QgUVBvaW50JiBwb3MpOwotICAgIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNT
aXplKGNvbnN0IFFTaXplJiBuZXdTaXplKTsKLSAgICB2b2lkIHByb2Nlc3NEaWRDcmFzaCgpOwot
ICAgIHZvaWQgZGlkUmVsYXVuY2hQcm9jZXNzKCk7Ci0KLQogcHJpdmF0ZToKICAgICAvLyBUaGlz
IGNsYXNzIGlzIHJlc3BvbnNpYmxlIGZvciBjb2xsZWN0aW5nIGFuZCBhcHBseWluZyBhbGwgcHJv
cGVydGllcwogICAgIC8vIG9uIHRoZSB2aWV3cG9ydCBpdGVtLCB3aGVuIHRyYW5zaXRpb25pbmcg
ZnJvbSBwYWdlIEEgdG8gcGFnZSBCIGlzIGZpbmlzaGVkLgpAQCAtMTMyLDkgKzExNiw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIFFQb2ludCBwb3NpdGlvbjsKICAgICB9OwogCi0gICAgUXRQYWdlQ2xp
ZW50IHBhZ2VDbGllbnQ7Ci0gICAgUXRXZWJVbmRvQ29udHJvbGxlciB1bmRvQ29udHJvbGxlcjsK
LQorICAgIFFTY29wZWRQb2ludGVyPFF0UGFnZUNsaWVudD4gcGFnZUNsaWVudDsKICAgICBRU2Nv
cGVkUG9pbnRlcjxRdFdlYlBhZ2VFdmVudEhhbmRsZXI+IGV2ZW50SGFuZGxlcjsKIAogICAgIFFT
Y29wZWRQb2ludGVyPFF0V2ViUGFnZUxvYWRDbGllbnQ+IHBhZ2VMb2FkQ2xpZW50OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFnZUNsaWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmNwcAppbmRleCA1ZDc2ZjgwLi5l
N2JhODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdlQ2xp
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRQYWdlQ2xpZW50LmNw
cApAQCAtMjMsMTMgKzIzLDExIEBACiAKICNpbmNsdWRlICJRdFdlYlBhZ2VFdmVudEhhbmRsZXIu
aCIKICNpbmNsdWRlICJRdFdlYlBhZ2VQcm94eS5oIgotI2luY2x1ZGUgIlF0V2ViVW5kb0NvbnRy
b2xsZXIuaCIKKyNpbmNsdWRlICJRdFdlYlVuZG9Db21tYW5kLmgiCiAjaW5jbHVkZSAiV2ViQ29u
dGV4dE1lbnVQcm94eVF0LmgiCiAjaW5jbHVkZSAiV2ViRWRpdENvbW1hbmRQcm94eS5oIgotI2lu
Y2x1ZGUgIldlYlBvcHVwTWVudVByb3h5UXQuaCIKLSNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3Au
aCIKLSNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3BfcC5oIgogI2luY2x1ZGUgPFFHdWlBcHBsaWNh
dGlvbj4KKyNpbmNsdWRlIDxRVW5kb1N0YWNrPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Vyc29yLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRS
ZWN0Lmg+CkBAIC0zOSwxMCArMzcsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIFF0UGFnZUNsaWVudDo6UXRQYWdlQ2xpZW50KCkKLSAgICA6
IG1fd2ViVmlldygwKQotICAgICwgbV9xdFdlYlBhZ2VQcm94eSgwKQotICAgICwgbV9ldmVudEhh
bmRsZXIoMCkKLSAgICAsIG1fdW5kb0NvbnRyb2xsZXIoMCkKKyAgICA6IG1fcXRXZWJQYWdlUHJv
eHkoMCkKIHsKIH0KIApAQCAtNTcsMzIgKzUyLDMyIEBAIFBhc3NPd25QdHI8RHJhd2luZ0FyZWFQ
cm94eT4gUXRQYWdlQ2xpZW50OjpjcmVhdGVEcmF3aW5nQXJlYVByb3h5KCkKIAogdm9pZCBRdFBh
Z2VDbGllbnQ6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgcmVj
dCkKIHsKLSAgICBtX3dlYlZpZXctPnBhZ2UoKS0+dXBkYXRlKCk7CisgICAgbV9xdFdlYlBhZ2VQ
cm94eS0+c2V0Vmlld05lZWRzRGlzcGxheShyZWN0KTsKIH0KIAogdm9pZCBRdFBhZ2VDbGllbnQ6
OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IEludFBvaW50JiBwb3MpCiB7Ci0gICAgUVF1aWNr
V2ViVmlld1ByaXZhdGU6OmdldChtX3dlYlZpZXcpLT5wYWdlRGlkUmVxdWVzdFNjcm9sbChwb3Mp
OworICAgIG1fcXRXZWJQYWdlUHJveHktPnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKHBvcyk7CiB9CiAK
IHZvaWQgUXRQYWdlQ2xpZW50Ojpwcm9jZXNzRGlkQ3Jhc2goKQogewotICAgIFFRdWlja1dlYlZp
ZXdQcml2YXRlOjpnZXQobV93ZWJWaWV3KS0+cHJvY2Vzc0RpZENyYXNoKCk7CisgICAgbV9xdFdl
YlBhZ2VQcm94eS0+cHJvY2Vzc0RpZENyYXNoKCk7CiB9CiAKIHZvaWQgUXRQYWdlQ2xpZW50Ojpk
aWRSZWxhdW5jaFByb2Nlc3MoKQogewotICAgIFFRdWlja1dlYlZpZXdQcml2YXRlOjpnZXQobV93
ZWJWaWV3KS0+ZGlkUmVsYXVuY2hQcm9jZXNzKCk7CisgICAgbV9xdFdlYlBhZ2VQcm94eS0+ZGlk
UmVsYXVuY2hQcm9jZXNzKCk7CiB9CiAKIHZvaWQgUXRQYWdlQ2xpZW50OjpkaWRDaGFuZ2VDb250
ZW50c1NpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKIHsKLSAgICBRUXVpY2tXZWJWaWV3UHJp
dmF0ZTo6Z2V0KG1fd2ViVmlldyktPmRpZENoYW5nZUNvbnRlbnRzU2l6ZShuZXdTaXplKTsKKyAg
ICBtX3F0V2ViUGFnZVByb3h5LT5kaWRDaGFuZ2VDb250ZW50c1NpemUobmV3U2l6ZSk7CiB9CiAK
IHZvaWQgUXRQYWdlQ2xpZW50OjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2Vi
Q29yZTo6Vmlld3BvcnRBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgUVF1aWNrV2ViVmlld1ByaXZh
dGU6OmdldChtX3dlYlZpZXcpLT5kaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoYXJncyk7Cisg
ICAgbV9xdFdlYlBhZ2VQcm94eS0+ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGFyZ3MpOwog
fQogCiB2b2lkIFF0UGFnZUNsaWVudDo6c3RhcnREcmFnKGNvbnN0IFdlYkNvcmU6OkRyYWdEYXRh
JiBkcmFnRGF0YSwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGRyYWdJbWFnZSkKQEAgLTEx
MywyMiArMTA4LDIyIEBAIHZvaWQgUXRQYWdlQ2xpZW50Ojp0b29sVGlwQ2hhbmdlZChjb25zdCBT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIG5ld1Rvb2x0aXApCiAKIHZvaWQgUXRQYWdlQ2xpZW50Ojpy
ZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4gY29tbWFu
ZCwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pCiB7Ci0gICAgbV91bmRvQ29u
dHJvbGxlci0+cmVnaXN0ZXJFZGl0Q29tbWFuZChjb21tYW5kLCB1bmRvT3JSZWRvKTsKKyAgICBt
X3F0V2ViUGFnZVByb3h5LT5yZWdpc3RlckVkaXRDb21tYW5kKGNvbW1hbmQsIHVuZG9PclJlZG8p
OwogfQogCiB2b2lkIFF0UGFnZUNsaWVudDo6Y2xlYXJBbGxFZGl0Q29tbWFuZHMoKQogewotICAg
IG1fdW5kb0NvbnRyb2xsZXItPmNsZWFyQWxsRWRpdENvbW1hbmRzKCk7CisgICAgbV9xdFdlYlBh
Z2VQcm94eS0+Y2xlYXJBbGxFZGl0Q29tbWFuZHMoKTsKIH0KIAogYm9vbCBRdFBhZ2VDbGllbnQ6
OmNhblVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKQogewotICAg
IHJldHVybiBtX3VuZG9Db250cm9sbGVyLT5jYW5VbmRvUmVkbyh1bmRvT3JSZWRvKTsKKyAgICBy
ZXR1cm4gbV9xdFdlYlBhZ2VQcm94eS0+Y2FuVW5kb1JlZG8odW5kb09yUmVkbyk7CiB9CiAKIHZv
aWQgUXRQYWdlQ2xpZW50OjpleGVjdXRlVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRv
IHVuZG9PclJlZG8pCiB7Ci0gICAgbV91bmRvQ29udHJvbGxlci0+ZXhlY3V0ZVVuZG9SZWRvKHVu
ZG9PclJlZG8pOworICAgIG1fcXRXZWJQYWdlUHJveHktPmV4ZWN1dGVVbmRvUmVkbyh1bmRvT3JS
ZWRvKTsKIH0KIAogRmxvYXRSZWN0IFF0UGFnZUNsaWVudDo6Y29udmVydFRvRGV2aWNlU3BhY2Uo
Y29uc3QgRmxvYXRSZWN0JiByZWN0KQpAQCAtMTUzLDcgKzE0OCw3IEBAIEludFJlY3QgUXRQYWdl
Q2xpZW50Ojp3aW5kb3dUb1NjcmVlbihjb25zdCBJbnRSZWN0JiByZWN0KQogCiBQYXNzUmVmUHRy
PFdlYlBvcHVwTWVudVByb3h5PiBRdFBhZ2VDbGllbnQ6OmNyZWF0ZVBvcHVwTWVudVByb3h5KFdl
YlBhZ2VQcm94eSogd2ViUGFnZVByb3h5KQogewotICAgIHJldHVybiBXZWJQb3B1cE1lbnVQcm94
eVF0OjpjcmVhdGUodG9JbXBsKG1fcXRXZWJQYWdlUHJveHktPnBhZ2VSZWYoKSksIG1fd2ViVmll
dyk7CisgICAgcmV0dXJuIG1fcXRXZWJQYWdlUHJveHktPmNyZWF0ZVBvcHVwTWVudVByb3h5KHdl
YlBhZ2VQcm94eSk7CiB9CiAKIFBhc3NSZWZQdHI8V2ViQ29udGV4dE1lbnVQcm94eT4gUXRQYWdl
Q2xpZW50OjpjcmVhdGVDb250ZXh0TWVudVByb3h5KFdlYlBhZ2VQcm94eSopCkBAIC0xODAsNyAr
MTc1LDcgQEAgdm9pZCBRdFBhZ2VDbGllbnQ6OmZvY3VzRWRpdGFibGVBcmVhKGNvbnN0IEludFJl
Y3QmIGNhcmV0LCBjb25zdCBJbnRSZWN0JiBhcmVhKQogCiB2b2lkIFF0UGFnZUNsaWVudDo6ZGlk
UmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QoY29uc3QgU3RyaW5nJiBtZXNzYWdl
KQogewotICAgIFFRdWlja1dlYlZpZXdQcml2YXRlOjpnZXQobV93ZWJWaWV3KS0+ZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QobWVzc2FnZSk7CisgICAgbV9xdFdlYlBhZ2VQ
cm94eS0+ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QobWVzc2FnZSk7CiB9
CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQpAQCAtMjAzLDcgKzE5OCw3IEBAIHZvaWQgUXRQ
YWdlQ2xpZW50OjpzY3JvbGxWaWV3KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHNjcm9sbFJlY3Qs
IGNvbnN0IFdlYkNvcmU6CiAKIFdlYkNvcmU6OkludFNpemUgUXRQYWdlQ2xpZW50Ojp2aWV3U2l6
ZSgpCiB7Ci0gICAgcmV0dXJuIFFRdWlja1dlYlZpZXdQcml2YXRlOjpnZXQobV93ZWJWaWV3KS0+
dmlld1NpemUoKTsKKyAgICByZXR1cm4gbV9xdFdlYlBhZ2VQcm94eS0+dmlld1NpemUoKTsKIH0K
IAogYm9vbCBRdFBhZ2VDbGllbnQ6OmlzVmlld1dpbmRvd0FjdGl2ZSgpCkBAIC0yMTQsMTYgKzIw
OSwxOCBAQCBib29sIFF0UGFnZUNsaWVudDo6aXNWaWV3V2luZG93QWN0aXZlKCkKIAogYm9vbCBR
dFBhZ2VDbGllbnQ6OmlzVmlld0ZvY3VzZWQoKQogewotICAgIGlmICghbV93ZWJWaWV3KQorICAg
IGlmICghbV9xdFdlYlBhZ2VQcm94eSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVy
biBtX3dlYlZpZXctPmhhc0ZvY3VzKCk7CisKKyAgICByZXR1cm4gbV9xdFdlYlBhZ2VQcm94eS0+
aXNWaWV3Rm9jdXNlZCgpOwogfQogCiBib29sIFF0UGFnZUNsaWVudDo6aXNWaWV3VmlzaWJsZSgp
CiB7Ci0gICAgaWYgKCFtX3dlYlZpZXcpCisgICAgaWYgKCFtX3F0V2ViUGFnZVByb3h5KQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIG1fd2ViVmlldy0+aXNWaXNpYmxlKCkgJiYg
bV93ZWJWaWV3LT5wYWdlKCktPmlzVmlzaWJsZSgpOworCisgICAgcmV0dXJuIG1fcXRXZWJQYWdl
UHJveHktPmlzVmlld1Zpc2libGUoKTsKIH0KIAogYm9vbCBRdFBhZ2VDbGllbnQ6OmlzVmlld0lu
V2luZG93KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhZ2VD
bGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFBhZ2VDbGllbnQuaAppbmRl
eCA3NmM0YzUwLi4wODU5ZWZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvUXRQYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0UGFn
ZUNsaWVudC5oCkBAIC0yOCw4ICsyOCw2IEBACiAjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMu
aCIKIAogY2xhc3MgUXRXZWJQYWdlRXZlbnRIYW5kbGVyOwotY2xhc3MgUXRXZWJVbmRvQ29udHJv
bGxlcjsKLWNsYXNzIFFRdWlja1dlYlZpZXc7CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAK
QEAgLTM4LDM5ICszNiwzMyBAQCBwdWJsaWM6CiAgICAgUXRQYWdlQ2xpZW50KCk7CiAgICAgflF0
UGFnZUNsaWVudCgpOwogCi0gICAgLy8gUVF1aWNrV2ViVmlldy4KLSAgICB2aXJ0dWFsIHZvaWQg
c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jik7Ci0gICAgdmlydHVh
bCBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCk7Ci0gICAgdmlydHVhbCBib29sIGlzVmlld0Zv
Y3VzZWQoKTsKLSAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3VmlzaWJsZSgpOwotICAgIHZpcnR1YWwg
dm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChjb25zdCBTdHJpbmcm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQ
cm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzJik7Ci0gICAgdmlydHVh
bCB2b2lkIHByb2Nlc3NEaWRDcmFzaCgpOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWxhdW5jaFBy
b2Nlc3MoKTsKLQogICAgIHZpcnR1YWwgUGFzc093blB0cjxEcmF3aW5nQXJlYVByb3h5PiBjcmVh
dGVEcmF3aW5nQXJlYVByb3h5KCk7CisgICAgdmlydHVhbCB2b2lkIHNldFZpZXdOZWVkc0Rpc3Bs
YXkoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwbGF5Vmll
dygpOwogICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxWaWV3KGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IHNjcm9sbFJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNjcm9sbE9mZnNldCk7CisgICAg
dmlydHVhbCBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCk7CiAgICAgdmlydHVhbCBib29sIGlz
Vmlld1dpbmRvd0FjdGl2ZSgpOworICAgIHZpcnR1YWwgYm9vbCBpc1ZpZXdGb2N1c2VkKCk7Cisg
ICAgdmlydHVhbCBib29sIGlzVmlld1Zpc2libGUoKTsKICAgICB2aXJ0dWFsIGJvb2wgaXNWaWV3
SW5XaW5kb3coKTsKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgdmlydHVh
bCB2b2lkIGVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29u
dGV4dCYpOwogICAgIHZpcnR1YWwgdm9pZCBleGl0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUo
KTsKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisgICAgdmlydHVhbCB2
b2lkIHBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAg
dmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaCgpOwogICAgIHZpcnR1YWwgdm9pZCBwYWdlQ2xv
c2VkKCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlbGF1bmNoUHJvY2VzcygpOworICAgIHZp
cnR1YWwgdm9pZCBkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYp
OworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2Vi
Q29yZTo6Vmlld3BvcnRBcmd1bWVudHMmKTsKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnREcmFnKGNv
bnN0IFdlYkNvcmU6OkRyYWdEYXRhJiwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGRyYWdJ
bWFnZSk7CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3Im
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wp
OwogICAgIHZpcnR1YWwgdm9pZCB0b29sVGlwQ2hhbmdlZChjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmKTsKLQotICAgIC8vIFF0V2ViVW5kb0NvbnRyb2xsZXIKICAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+LCBXZWJQ
YWdlUHJveHk6OlVuZG9PclJlZG8pOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckFsbEVkaXRDb21t
YW5kcygpOwogICAgIHZpcnR1YWwgYm9vbCBjYW5VbmRvUmVkbyhXZWJQYWdlUHJveHk6OlVuZG9P
clJlZG8pOwogICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpV
bmRvT3JSZWRvKTsKLQogICAgIHZpcnR1YWwgV2ViQ29yZTo6RmxvYXRSZWN0IGNvbnZlcnRUb0Rl
dmljZVNwYWNlKGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOwogICAgIHZpcnR1YWwgV2ViQ29y
ZTo6RmxvYXRSZWN0IGNvbnZlcnRUb1VzZXJTcGFjZShjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3Qm
KTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblRvV2luZG93KGNvbnN0IFdl
YkNvcmU6OkludFBvaW50Jik7CkBAIC04OSwyNSArODEsMTkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBjb3VudFN0cmluZ01hdGNoZXNJbkN1c3RvbVJlcHJlc2VudGF0aW9uKGNvbnN0IFN0
cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KSB7IH0KICAgICB2aXJ0
dWFsIHZvaWQgZGlkRmluZFpvb21hYmxlQXJlYShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICAgICB2aXJ0dWFsIHZvaWQgZm9jdXNFZGl0YWJsZUFy
ZWEoY29uc3QgV2ViQ29yZTo6SW50UmVjdCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QoY29u
c3QgU3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZURvd25sb2FkUmVxdWVzdChEb3du
bG9hZFByb3h5Kik7CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIHZpcnR1YWwgdm9p
ZCBkb25lV2l0aFRvdWNoRXZlbnQoY29uc3QgTmF0aXZlV2ViVG91Y2hFdmVudCYsIGJvb2wgd2Fz
RXZlbnRIYW5kbGVkKTsKICNlbmRpZgogCi0gICAgdm9pZCBpbml0aWFsaXplKFFRdWlja1dlYlZp
ZXcqIHdlYlZpZXcsIFF0V2ViUGFnZVByb3h5KiBwYWdlUHJveHksIFF0V2ViUGFnZUV2ZW50SGFu
ZGxlciogZXZlbnRIYW5kbGVyLCBRdFdlYlVuZG9Db250cm9sbGVyKiB1bmRvQ29udHJvbGxlcikK
LSAgICB7Ci0gICAgICAgIG1fd2ViVmlldyA9IHdlYlZpZXc7Ci0gICAgICAgIG1fZXZlbnRIYW5k
bGVyID0gZXZlbnRIYW5kbGVyOwotICAgICAgICBtX3F0V2ViUGFnZVByb3h5ID0gcGFnZVByb3h5
OwotICAgICAgICBtX3VuZG9Db250cm9sbGVyID0gdW5kb0NvbnRyb2xsZXI7Ci0gICAgfQorICAg
IHZvaWQgc2V0RXZlbnRIYW5kbGVyKFF0V2ViUGFnZUV2ZW50SGFuZGxlciogZXZlbnRIYW5kbGVy
KSB7IG1fZXZlbnRIYW5kbGVyID0gZXZlbnRIYW5kbGVyOyB9CisgICAgdm9pZCBzZXRQYWdlUHJv
eHkoUXRXZWJQYWdlUHJveHkqIHBhZ2VQcm94eSkgeyBtX3F0V2ViUGFnZVByb3h5ID0gcGFnZVBy
b3h5OyB9CiAKIHByaXZhdGU6Ci0gICAgUVF1aWNrV2ViVmlldyogbV93ZWJWaWV3OwogICAgIFF0
V2ViUGFnZVByb3h5KiBtX3F0V2ViUGFnZVByb3h5OwogICAgIFF0V2ViUGFnZUV2ZW50SGFuZGxl
ciogbV9ldmVudEhhbmRsZXI7Ci0gICAgUXRXZWJVbmRvQ29udHJvbGxlciogbV91bmRvQ29udHJv
bGxlcjsKIH07CiAKICNlbmRpZiAvKiBRdFBhZ2VDbGllbnRfaCAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGRmNGQ0Ny4uMDg2ZTNi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuY3Bw
CkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSA8UXRRdWljay9xcXVpY2tjYW52YXMuaD4KICNp
bmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3AuaCIKICNpbmNsdWRlICJxcXVpY2t3ZWJ2aWV3X3BfcC5o
IgorI2luY2x1ZGUgInFxdWlja3dlYnBhZ2VfcC5oIgogI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0
ZW1fcC5oIgogI2luY2x1ZGUgInF3ZWJkb3dubG9hZGl0ZW1fcF9wLmgiCiAjaW5jbHVkZSAicXdl
Ym5hdmlnYXRpb25oaXN0b3J5X3AuaCIKQEAgLTM4LDkgKzM5LDEzIEBACiAjaW5jbHVkZSAiUXRE
b3dubG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJRdFBhZ2VDbGllbnQuaCIKICNpbmNsdWRlICJR
dFdlYlBhZ2VFdmVudEhhbmRsZXIuaCIKKyNpbmNsdWRlICJRdFdlYlVuZG9Db21tYW5kLmgiCiAj
aW5jbHVkZSAiV2ViQmFja0ZvcndhcmRMaXN0LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVQ
cm94eVF0LmgiCisjaW5jbHVkZSAiV2ViUG9wdXBNZW51UHJveHlRdC5oIgogI2luY2x1ZGUgIldL
U3RyaW5nUXQuaCIKKyNpbmNsdWRlICJXS1VSTFF0LmgiCisjaW5jbHVkZSA8UVVuZG9TdGFjaz4K
ICNpbmNsdWRlIDxXZWJLaXQyL1dLRnJhbWUuaD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLUGFnZUdy
b3VwLmg+CiAjaW5jbHVkZSA8V2ViS2l0Mi9XS1JldGFpblB0ci5oPgpAQCAtNDgsOSArNTMsMTEg
QEAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAot
UXRXZWJQYWdlUHJveHk6OlF0V2ViUGFnZVByb3h5KFFRdWlja1dlYlZpZXcqIHFtbFdlYlZpZXcs
IFF0UGFnZUNsaWVudCAqcGFnZUNsaWVudCwgV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFn
ZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKLSAgICA6IG1fcW1sV2ViVmlldyhxbWxXZWJWaWV3KQor
UXRXZWJQYWdlUHJveHk6OlF0V2ViUGFnZVByb3h5KFFRdWlja1dlYlBhZ2UqIHFtbFdlYlBhZ2Us
IFFRdWlja1dlYlZpZXcqIHFtbFdlYlZpZXcsIFF0UGFnZUNsaWVudCAqcGFnZUNsaWVudCwgV0tD
b250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJlZikKKyAgICA6
IG1fcW1sV2ViUGFnZShxbWxXZWJQYWdlKQorICAgICwgbV9xbWxXZWJWaWV3KHFtbFdlYlZpZXcp
CiAgICAgLCBtX2NvbnRleHQoY29udGV4dFJlZiA/IFF0V2ViQ29udGV4dDo6Y3JlYXRlKHRvSW1w
bChjb250ZXh0UmVmKSkgOiBRdFdlYkNvbnRleHQ6OmRlZmF1bHRDb250ZXh0KCkpCisgICAgLCBt
X3VuZG9TdGFjayhhZG9wdFB0cihuZXcgUVVuZG9TdGFjayh0aGlzKSkpCiAgICAgLCBtX25hdmln
YXRvclF0T2JqZWN0RW5hYmxlZChmYWxzZSkKIHsKICAgICBtX3dlYlBhZ2VQcm94eSA9IG1fY29u
dGV4dC0+Y3JlYXRlV2ViUGFnZShwYWdlQ2xpZW50LCB0b0ltcGwocGFnZUdyb3VwUmVmKSk7CkBA
IC0xMDAsMjEgKzEwNywxNjYgQEAgdm9pZCBRdFdlYlBhZ2VQcm94eTo6aGlkZUNvbnRleHRNZW51
KCkKICAgICAgICAgYWN0aXZlTWVudS0+aGlkZSgpOwogfQogCit2b2lkIFF0V2ViUGFnZVByb3h5
OjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKQoreworICAgIG1f
cW1sV2ViUGFnZS0+dXBkYXRlKCk7Cit9CisKK1dlYkNvcmU6OkludFNpemUgUXRXZWJQYWdlUHJv
eHk6OnZpZXdTaXplKCkKK3sKKyAgICByZXR1cm4gV2ViQ29yZTo6SW50U2l6ZShtX3FtbFdlYlBh
Z2UtPndpZHRoKCksIG1fcW1sV2ViUGFnZS0+aGVpZ2h0KCkpOworfQorCitib29sIFF0V2ViUGFn
ZVByb3h5Ojppc1ZpZXdGb2N1c2VkKCkKK3sKKyAgICByZXR1cm4gbV9xbWxXZWJWaWV3LT5oYXNG
b2N1cygpOworfQorCitib29sIFF0V2ViUGFnZVByb3h5Ojppc1ZpZXdWaXNpYmxlKCkKK3sKKyAg
ICByZXR1cm4gbV9xbWxXZWJWaWV3LT5pc1Zpc2libGUoKSAmJiBtX3FtbFdlYlBhZ2UtPmlzVmlz
aWJsZSgpOworfQorCit2b2lkIFF0V2ViUGFnZVByb3h5OjpwYWdlRGlkUmVxdWVzdFNjcm9sbChj
b25zdCBJbnRQb2ludCYgcG9zKQoreworICAgIG1fcW1sV2ViVmlldy0+ZF9mdW5jKCktPnNjcm9s
bFBvc2l0aW9uUmVxdWVzdGVkKHBvcyk7Cit9CisKK3ZvaWQgUXRXZWJQYWdlUHJveHk6OmRpZENo
YW5nZUNvbnRlbnRzU2l6ZShjb25zdCBJbnRTaXplJiBuZXdTaXplKQoreworICAgIG1fcW1sV2Vi
Vmlldy0+ZF9mdW5jKCktPmRpZENoYW5nZUNvbnRlbnRzU2l6ZShuZXdTaXplKTsKK30KKwordm9p
ZCBRdFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNv
cmU6OlZpZXdwb3J0QXJndW1lbnRzJiBhcmdzKQoreworICAgIG1fcW1sV2ViVmlldy0+ZF9mdW5j
KCktPmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhhcmdzKTsKK30KKwordm9pZCBRdFdlYlBh
Z2VQcm94eTo6cmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJv
eHk+IGNvbW1hbmQsIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKQoreworICAg
IGlmICh1bmRvT3JSZWRvID09IFdlYlBhZ2VQcm94eTo6VW5kbykgeworICAgICAgICBjb25zdCBR
dFdlYlVuZG9Db21tYW5kKiB3ZWJVbmRvQ29tbWFuZCA9IHN0YXRpY19jYXN0PGNvbnN0IFF0V2Vi
VW5kb0NvbW1hbmQqPihtX3VuZG9TdGFjay0+Y29tbWFuZChtX3VuZG9TdGFjay0+aW5kZXgoKSkp
OworICAgICAgICBpZiAod2ViVW5kb0NvbW1hbmQgJiYgd2ViVW5kb0NvbW1hbmQtPmluVW5kb1Jl
ZG8oKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV91bmRvU3RhY2stPnB1c2gobmV3
IFF0V2ViVW5kb0NvbW1hbmQoY29tbWFuZCkpOworICAgIH0KK30KKwordm9pZCBRdFdlYlBhZ2VQ
cm94eTo6Y2xlYXJBbGxFZGl0Q29tbWFuZHMoKQoreworICAgIG1fdW5kb1N0YWNrLT5jbGVhcigp
OworfQorCitib29sIFF0V2ViUGFnZVByb3h5OjpjYW5VbmRvUmVkbyhXZWJQYWdlUHJveHk6OlVu
ZG9PclJlZG8gdW5kb09yUmVkbykKK3sKKyAgICBpZiAodW5kb09yUmVkbyA9PSBXZWJQYWdlUHJv
eHk6OlVuZG8pCisgICAgICAgIHJldHVybiBtX3VuZG9TdGFjay0+Y2FuVW5kbygpOworICAgIHJl
dHVybiBtX3VuZG9TdGFjay0+Y2FuUmVkbygpOworfQorCit2b2lkIFF0V2ViUGFnZVByb3h5Ojpl
eGVjdXRlVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pCit7Cisg
ICAgaWYgKHVuZG9PclJlZG8gPT0gV2ViUGFnZVByb3h5OjpVbmRvKQorICAgICAgICBtX3VuZG9T
dGFjay0+dW5kbygpOworICAgIGVsc2UKKyAgICAgICAgbV91bmRvU3RhY2stPnJlZG8oKTsKK30K
KworUGFzc1JlZlB0cjxXZWJQb3B1cE1lbnVQcm94eT4gUXRXZWJQYWdlUHJveHk6OmNyZWF0ZVBv
cHVwTWVudVByb3h5KFdlYlBhZ2VQcm94eSopCit7CisgICAgcmV0dXJuIFdlYlBvcHVwTWVudVBy
b3h5UXQ6OmNyZWF0ZShtX3dlYlBhZ2VQcm94eS5nZXQoKSwgbV9xbWxXZWJWaWV3KTsKK30KKwog
V0tQYWdlUmVmIFF0V2ViUGFnZVByb3h5OjpwYWdlUmVmKCkgY29uc3QKIHsKICAgICByZXR1cm4g
dG9BUEkobV93ZWJQYWdlUHJveHkuZ2V0KCkpOzsKIH0KIAordm9pZCBRdFdlYlBhZ2VQcm94eTo6
ZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQoreworICAgIFFWYXJpYW50TWFwIHZhcmlhbnRNYXA7CisgICAgdmFyaWFudE1hcC5pbnNl
cnQoUUxhdGluMVN0cmluZygiZGF0YSIpLCBRU3RyaW5nKG1lc3NhZ2UpKTsKKyAgICB2YXJpYW50
TWFwLmluc2VydChRTGF0aW4xU3RyaW5nKCJvcmlnaW4iKSwgdXJsKCkpOworICAgIGVtaXQgcmVj
ZWl2ZWRNZXNzYWdlRnJvbU5hdmlnYXRvclF0T2JqZWN0KHZhcmlhbnRNYXApOworfQorCitib29s
IFF0V2ViUGFnZVByb3h5OjpjYW5Hb0JhY2soKSBjb25zdAoreworICAgIHJldHVybiBtX3dlYlBh
Z2VQcm94eS0+Y2FuR29CYWNrKCk7Cit9CisKK3ZvaWQgUXRXZWJQYWdlUHJveHk6OmdvQmFjaygp
Cit7CisgICAgbV93ZWJQYWdlUHJveHktPmdvQmFjaygpOworfQorCiB2b2lkIFF0V2ViUGFnZVBy
b3h5Ojpnb0JhY2tUbyhpbnQgaW5kZXgpCiB7CiAgICAgbV9uYXZpZ2F0aW9uSGlzdG9yeS0+ZC0+
Z29CYWNrVG8oaW5kZXgpOwogfQogCitib29sIFF0V2ViUGFnZVByb3h5OjpjYW5Hb0ZvcndhcmQo
KSBjb25zdAoreworICAgIHJldHVybiBtX3dlYlBhZ2VQcm94eS0+Y2FuR29Gb3J3YXJkKCk7Cit9
CisKK3ZvaWQgUXRXZWJQYWdlUHJveHk6OmdvRm9yd2FyZCgpCit7CisgICAgbV93ZWJQYWdlUHJv
eHktPmdvRm9yd2FyZCgpOworfQorCiB2b2lkIFF0V2ViUGFnZVByb3h5Ojpnb0ZvcndhcmRUbyhp
bnQgaW5kZXgpCiB7CiAgICAgbV9uYXZpZ2F0aW9uSGlzdG9yeS0+ZC0+Z29Gb3J3YXJkVG8oaW5k
ZXgpOwogfQogCitib29sIFF0V2ViUGFnZVByb3h5Ojpsb2FkaW5nKCkgY29uc3QKK3sKKyAgICBS
ZWZQdHI8V2ViS2l0OjpXZWJGcmFtZVByb3h5PiBtYWluRnJhbWUgPSBtX3dlYlBhZ2VQcm94eS0+
bWFpbkZyYW1lKCk7CisgICAgcmV0dXJuIG1haW5GcmFtZSAmJiAhKFdlYkZyYW1lUHJveHk6Okxv
YWRTdGF0ZUZpbmlzaGVkID09IG1haW5GcmFtZS0+bG9hZFN0YXRlKCkpOworfQorCit2b2lkIFF0
V2ViUGFnZVByb3h5OjpzdG9wKCkKK3sKKyAgICBtX3dlYlBhZ2VQcm94eS0+c3RvcExvYWRpbmco
KTsKK30KKworYm9vbCBRdFdlYlBhZ2VQcm94eTo6Y2FuUmVsb2FkKCkgY29uc3QKK3sKKyAgICBS
ZWZQdHI8V2ViS2l0OjpXZWJGcmFtZVByb3h5PiBtYWluRnJhbWUgPSBtX3dlYlBhZ2VQcm94eS0+
bWFpbkZyYW1lKCk7CisgICAgaWYgKG1haW5GcmFtZSkKKyAgICAgICAgcmV0dXJuIChXZWJGcmFt
ZVByb3h5OjpMb2FkU3RhdGVGaW5pc2hlZCA9PSBtYWluRnJhbWUtPmxvYWRTdGF0ZSgpKTsKKyAg
ICByZXR1cm4gbV93ZWJQYWdlUHJveHktPmJhY2tGb3J3YXJkTGlzdCgpLT5jdXJyZW50SXRlbSgp
OworfQorCit2b2lkIFF0V2ViUGFnZVByb3h5OjpyZWxvYWQoKQoreworICAgIG1fd2ViUGFnZVBy
b3h5LT5yZWxvYWQoLyogcmVsb2FkRnJvbU9yaWdpbiAqLyB0cnVlKTsKK30KKwordm9pZCBRdFdl
YlBhZ2VQcm94eTo6dXBkYXRlTmF2aWdhdGlvblN0YXRlKCkKK3sKKyAgICBlbWl0IG1fcW1sV2Vi
Vmlldy0+bmF2aWdhdGlvblN0YXRlQ2hhbmdlZCgpOworfQorCit2b2lkIFF0V2ViUGFnZVByb3h5
OjpkaWRSZWxhdW5jaFByb2Nlc3MoKQoreworICAgIHVwZGF0ZU5hdmlnYXRpb25TdGF0ZSgpOwor
ICAgIHFXYXJuaW5nKCJXQVJOSU5HOiBUaGUgd2ViIHByb2Nlc3MgaGFzIGJlZW4gc3VjY2Vzc2Z1
bGx5IHJlc3RhcnRlZC4iKTsKKyAgICBzZXREcmF3aW5nQXJlYVNpemUodmlld1NpemUoKSk7Cit9
CisKK3ZvaWQgUXRXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRDcmFzaCgpCit7CisgICAgdXBkYXRl
TmF2aWdhdGlvblN0YXRlKCk7CisKKyAgICBBU1NFUlQobV9ldmVudEhhbmRsZXIpOworICAgIG1f
ZXZlbnRIYW5kbGVyLT5yZXNldEdlc3R1cmVSZWNvZ25pemVycygpOworCisgICAgV2ViQ29yZTo6
S1VSTCB1cmwoV2ViQ29yZTo6UGFyc2VkVVJMU3RyaW5nLCBtX3dlYlBhZ2VQcm94eS0+dXJsQXRQ
cm9jZXNzRXhpdCgpKTsKKyAgICBxV2FybmluZygiV0FSTklORzogVGhlIHdlYiBwcm9jZXNzIGV4
cGVyaWVuY2VkIGEgY3Jhc2ggb24gJyVzJy4iLCBxUHJpbnRhYmxlKFFVcmwodXJsKS50b1N0cmlu
ZyhRVXJsOjpSZW1vdmVVc2VySW5mbykpKTsKK30KKwogUVdlYlByZWZlcmVuY2VzKiBRdFdlYlBh
Z2VQcm94eTo6cHJlZmVyZW5jZXMoKSBjb25zdAogewogICAgIGlmICghbV9wcmVmZXJlbmNlcykK
QEAgLTE0Niw2ICsyOTgsMzMgQEAgdm9pZCBRdFdlYlBhZ2VQcm94eTo6cG9zdE1lc3NhZ2VUb05h
dmlnYXRvclF0T2JqZWN0KGNvbnN0IFFTdHJpbmcmIG1lc3NhZ2UpCiAgICAgbV9jb250ZXh0LT5w
b3N0TWVzc2FnZVRvTmF2aWdhdG9yUXRPYmplY3QobV93ZWJQYWdlUHJveHkuZ2V0KCksIG1lc3Nh
Z2UpOwogfQogCit2b2lkIFF0V2ViUGFnZVByb3h5Ojpsb2FkSFRNTFN0cmluZyhjb25zdCBRU3Ry
aW5nJiBodG1sLCBjb25zdCBRVXJsJiBiYXNlVXJsKQoreworICAgIFdLUmV0YWluUHRyPFdLVVJM
UmVmPiB3a1VybChXS1VSTENyZWF0ZVdpdGhRVXJsKGJhc2VVcmwpKTsKKyAgICBXS1JldGFpblB0
cjxXS1N0cmluZ1JlZj4gd2tIdG1sU3RyaW5nKFdLU3RyaW5nQ3JlYXRlV2l0aFFTdHJpbmcoaHRt
bCkpOworCisgICAgV0tQYWdlTG9hZEhUTUxTdHJpbmcocGFnZVJlZigpLCB3a0h0bWxTdHJpbmcu
Z2V0KCksIHdrVXJsLmdldCgpKTsKK30KKwordm9pZCBRdFdlYlBhZ2VQcm94eTo6bG9hZChjb25z
dCBRVXJsJiB1cmwpCit7CisgICAgV0tSZXRhaW5QdHI8V0tVUkxSZWY+IHdrdXJsID0gYWRvcHRX
SyhXS1VSTENyZWF0ZVdpdGhRVXJsKHVybCkpOworICAgIFdLUGFnZUxvYWRVUkwocGFnZVJlZigp
LCB3a3VybC5nZXQoKSk7Cit9CisKK1FVcmwgUXRXZWJQYWdlUHJveHk6OnVybCgpIGNvbnN0Cit7
CisgICAgV0tSZXRhaW5QdHI8V0tGcmFtZVJlZj4gZnJhbWUgPSBXS1BhZ2VHZXRNYWluRnJhbWUo
cGFnZVJlZigpKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm4gUVVybCgpOworICAg
IHJldHVybiBXS1VSTENvcHlRVXJsKGFkb3B0V0soV0tGcmFtZUNvcHlVUkwoZnJhbWUuZ2V0KCkp
KS5nZXQoKSk7Cit9CisKK1FTdHJpbmcgUXRXZWJQYWdlUHJveHk6OnRpdGxlKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gV0tTdHJpbmdDb3B5UVN0cmluZyhhZG9wdFdLKFdLUGFnZUNvcHlUaXRsZSh0
b0FQSShtX3dlYlBhZ2VQcm94eS5nZXQoKSkpKS5nZXQoKSk7Cit9CisKIHZvaWQgUXRXZWJQYWdl
UHJveHk6OnNldERyYXdpbmdBcmVhU2l6ZShjb25zdCBRU2l6ZSYgc2l6ZSkKIHsKICAgICBpZiAo
IW1fd2ViUGFnZVByb3h5LT5kcmF3aW5nQXJlYSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL3F0L1F0V2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvcXQvUXRXZWJQYWdlUHJveHkuaAppbmRleCAyZmQ3Y2MwLi45YTcxMmQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvUXRXZWJQYWdlUHJveHkuaApAQCAtMjMsMTEgKzIzLDE2
IEBACiAKICNpbmNsdWRlICJEcmF3aW5nQXJlYVByb3h5LmgiCiAjaW5jbHVkZSAiUXRXZWJDb250
ZXh0LmgiCisjaW5jbHVkZSAiVmlld3BvcnRBcmd1bWVudHMuaCIKICNpbmNsdWRlICJXZWJQYWdl
UHJveHkuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8UU1lbnU+CiAjaW5j
bHVkZSA8UVNoYXJlZFBvaW50ZXI+CiAKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUVVuZG9T
dGFjazsKK1FUX0VORF9OQU1FU1BBQ0UKKwogY2xhc3MgUXRQYWdlQ2xpZW50OwogY2xhc3MgUVF1
aWNrV2ViUGFnZTsKIGNsYXNzIFFRdWlja1dlYlZpZXc7CkBAIC00NywyMCArNTIsNTcgQEAgY2xh
c3MgUXRXZWJQYWdlUHJveHkgOiBwdWJsaWMgUU9iamVjdCB7CiAgICAgUV9PQkpFQ1QKIAogcHVi
bGljOgotICAgIFF0V2ViUGFnZVByb3h5KFFRdWlja1dlYlZpZXcqLCBRdFBhZ2VDbGllbnQqLCBX
S0NvbnRleHRSZWYgPSAwLCBXS1BhZ2VHcm91cFJlZiA9IDApOworICAgIFF0V2ViUGFnZVByb3h5
KFFRdWlja1dlYlBhZ2UqLCBRUXVpY2tXZWJWaWV3KiwgUXRQYWdlQ2xpZW50KiwgV0tDb250ZXh0
UmVmID0gMCwgV0tQYWdlR3JvdXBSZWYgPSAwKTsKICAgICB+UXRXZWJQYWdlUHJveHkoKTsKIAog
ICAgIFBhc3NPd25QdHI8RHJhd2luZ0FyZWFQcm94eT4gY3JlYXRlRHJhd2luZ0FyZWFQcm94eSgp
OwogCisgICAgdm9pZCBzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KTsKKyAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCk7CisgICAgYm9vbCBpc1ZpZXdGb2N1
c2VkKCk7CisgICAgYm9vbCBpc1ZpZXdWaXNpYmxlKCk7CisKKyAgICB2b2lkIHBhZ2VEaWRSZXF1
ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jik7CisgICAgdm9pZCBwcm9jZXNzRGlk
Q3Jhc2goKTsKKyAgICB2b2lkIGRpZFJlbGF1bmNoUHJvY2VzcygpOworCisgICAgdm9pZCBkaWRD
aGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpOworICAgIHZvaWQgZGlk
Q2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRz
Jik7CisKKyAgICB2b2lkIHJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJLaXQ6Oldl
YkVkaXRDb21tYW5kUHJveHk+LCBXZWJLaXQ6OldlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyk7Cisg
ICAgdm9pZCBjbGVhckFsbEVkaXRDb21tYW5kcygpOworICAgIGJvb2wgY2FuVW5kb1JlZG8oV2Vi
UGFnZVByb3h5OjpVbmRvT3JSZWRvKTsKKyAgICB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhXZWJQYWdl
UHJveHk6OlVuZG9PclJlZG8pOworCisgICAgUGFzc1JlZlB0cjxXZWJLaXQ6OldlYlBvcHVwTWVu
dVByb3h5PiBjcmVhdGVQb3B1cE1lbnVQcm94eShXZWJLaXQ6OldlYlBhZ2VQcm94eSopOworCisg
ICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChjb25zdCBTdHJp
bmcmKTsKKworICAgIGJvb2wgY2FuR29CYWNrKCkgY29uc3Q7CisgICAgdm9pZCBnb0JhY2soKTsK
ICAgICB2b2lkIGdvQmFja1RvKGludCBpbmRleCk7CisgICAgYm9vbCBjYW5Hb0ZvcndhcmQoKSBj
b25zdDsKKyAgICB2b2lkIGdvRm9yd2FyZCgpOwogICAgIHZvaWQgZ29Gb3J3YXJkVG8oaW50IGlu
ZGV4KTsKKyAgICBib29sIGxvYWRpbmcoKSBjb25zdDsKKyAgICB2b2lkIHN0b3AoKTsKKyAgICBi
b29sIGNhblJlbG9hZCgpIGNvbnN0OworICAgIHZvaWQgcmVsb2FkKCk7CisKKyAgICB2b2lkIHVw
ZGF0ZU5hdmlnYXRpb25TdGF0ZSgpOwogCiAgICAgV0tQYWdlUmVmIHBhZ2VSZWYoKSBjb25zdDsK
IAorICAgIHZvaWQgbG9hZChjb25zdCBRVXJsJiB1cmwpOworICAgIHZvaWQgbG9hZEhUTUxTdHJp
bmcoY29uc3QgUVN0cmluZyYgaHRtbCwgY29uc3QgUVVybCYgYmFzZVVybCk7CisgICAgUVVybCB1
cmwoKSBjb25zdDsKKwogICAgIHZvaWQgc2V0RHJhd2luZ0FyZWFTaXplKGNvbnN0IFFTaXplJik7
CiAKICAgICBRV2ViUHJlZmVyZW5jZXMqIHByZWZlcmVuY2VzKCkgY29uc3Q7CiAKKyAgICBRU3Ry
aW5nIHRpdGxlKCkgY29uc3Q7CisKICAgICB2b2lkIHNldEN1c3RvbVVzZXJBZ2VudChjb25zdCBR
U3RyaW5nJik7CiAgICAgUVN0cmluZyBjdXN0b21Vc2VyQWdlbnQoKSBjb25zdDsKIApAQCAtMTAw
LDggKzE0MiwxMCBAQCBwdWJsaWMgUV9TTE9UUzoKIAogcHVibGljOgogICAgIFFfU0lHTkFMIHZv
aWQgem9vbWFibGVBcmVhRm91bmQoY29uc3QgUVJlY3QmKTsKKyAgICBRX1NJR05BTCB2b2lkIHJl
Y2VpdmVkTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9iamVjdChjb25zdCBRVmFyaWFudE1hcCYpOwog
CiBwcm90ZWN0ZWQ6CisgICAgUVF1aWNrV2ViUGFnZSogbV9xbWxXZWJQYWdlOwogICAgIFFRdWlj
a1dlYlZpZXcqIG1fcW1sV2ViVmlldzsKICAgICBSZWZQdHI8V2ViS2l0OjpXZWJQYWdlUHJveHk+
IG1fd2ViUGFnZVByb3h5OwogCkBAIC0xMTEsNiArMTU1LDggQEAgcHJpdmF0ZToKIAogICAgIG11
dGFibGUgT3duUHRyPFFXZWJQcmVmZXJlbmNlcz4gbV9wcmVmZXJlbmNlczsKIAorICAgIE93blB0
cjxRVW5kb1N0YWNrPiBtX3VuZG9TdGFjazsKKwogICAgIGJvb2wgbV9uYXZpZ2F0b3JRdE9iamVj
dEVuYWJsZWQ7CiAKICAgICBRU2hhcmVkUG9pbnRlcjxRTWVudT4gYWN0aXZlTWVudTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlVuZG9Db21tYW5kLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlVuZG9Db21tYW5kLmNwcApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmQwZWJjCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViVW5kb0NvbW1hbmQuY3BwCkBAIC0wLDAg
KzEsNjIgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDExIE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICAgIENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29z
IENvbXB1dGluZyBTZXJ2aWNlcyBJbmMuCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAg
ICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIlF0V2ViVW5kb0NvbW1hbmQuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworUXRX
ZWJVbmRvQ29tbWFuZDo6UXRXZWJVbmRvQ29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5k
UHJveHk+IGNvbW1hbmQsIFFVbmRvQ29tbWFuZCogcGFyZW50KQorICAgIDogUVVuZG9Db21tYW5k
KHBhcmVudCkKKyAgICAsIG1fY29tbWFuZChjb21tYW5kKQorICAgICwgbV9maXJzdCh0cnVlKQor
ICAgICwgbV9pblVuZG9SZWRvKGZhbHNlKQoreworfQorCitRdFdlYlVuZG9Db21tYW5kOjp+UXRX
ZWJVbmRvQ29tbWFuZCgpCit7Cit9CisKK3ZvaWQgUXRXZWJVbmRvQ29tbWFuZDo6cmVkbygpCit7
CisgICAgbV9pblVuZG9SZWRvID0gdHJ1ZTsKKworICAgIC8vIElnbm9yZSB0aGUgZmlyc3QgcmVk
byBjYWxsZWQgZnJvbSBRVW5kb1N0YWNrOjpwdXNoKCkuCisgICAgaWYgKG1fZmlyc3QpIHsKKyAg
ICAgICAgbV9maXJzdCA9IGZhbHNlOworICAgICAgICBtX2luVW5kb1JlZG8gPSBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAobV9jb21tYW5kKQorICAgICAgICBtX2NvbW1h
bmQtPnJlYXBwbHkoKTsKKworICAgIG1faW5VbmRvUmVkbyA9IGZhbHNlOworfQorCit2b2lkIFF0
V2ViVW5kb0NvbW1hbmQ6OnVuZG8oKQoreworICAgIG1faW5VbmRvUmVkbyA9IHRydWU7CisKKyAg
ICBpZiAobV9jb21tYW5kKQorICAgICAgICBtX2NvbW1hbmQtPnVuYXBwbHkoKTsKKworICAgIG1f
aW5VbmRvUmVkbyA9IGZhbHNlOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1F0V2ViVW5kb0NvbW1hbmQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9R
dFdlYlVuZG9Db21tYW5kLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMw
MGI0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdl
YlVuZG9Db21tYW5kLmgKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIw
MTEgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgICAgQ29w
eXJpZ2h0IChDKSAyMDA3IFN0YWlrb3MgQ29tcHV0aW5nIFNlcnZpY2VzIEluYy4KKworICAgIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAg
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZu
ZGVmIFF0V2ViVW5kb0NvbW1hbmRfaAorI2RlZmluZSBRdFdlYlVuZG9Db21tYW5kX2gKKworI2lu
Y2x1ZGUgIldlYkVkaXRDb21tYW5kUHJveHkuaCIKKyNpbmNsdWRlIDxRVW5kb0NvbW1hbmQ+Cisj
aW5jbHVkZSA8cWdsb2JhbC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworY2xhc3MgUXRX
ZWJVbmRvQ29tbWFuZCA6IHB1YmxpYyBRVW5kb0NvbW1hbmQgeworcHVibGljOgorICAgIFF0V2Vi
VW5kb0NvbW1hbmQoUGFzc1JlZlB0cjxXZWJLaXQ6OldlYkVkaXRDb21tYW5kUHJveHk+LCBRVW5k
b0NvbW1hbmQqIHBhcmVudCA9IDApOworICAgIH5RdFdlYlVuZG9Db21tYW5kKCk7CisKKyAgICB2
b2lkIHJlZG8oKTsKKyAgICB2b2lkIHVuZG8oKTsKKworICAgIGJvb2wgaW5VbmRvUmVkbygpIGNv
bnN0IHsgcmV0dXJuIG1faW5VbmRvUmVkbzsgfTsKKworcHJpdmF0ZToKKyAgICBSZWZQdHI8V2Vi
S2l0OjpXZWJFZGl0Q29tbWFuZFByb3h5PiBtX2NvbW1hbmQ7CisgICAgYm9vbCBtX2ZpcnN0Owor
ICAgIGJvb2wgbV9pblVuZG9SZWRvOworfTsKKworI2VuZGlmIC8vIFF0V2ViVW5kb0NvbW1hbmRf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViVW5kb0NvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViVW5kb0NvbnRyb2xs
ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDY3MTk5Li4wMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlVuZG9Db250cm9sbGVyLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDExNiArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAx
MSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAgICBDb3B5
cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMgSW5jLgotCi0gICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
LSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpbmNs
dWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJRdFdlYlVuZG9Db250cm9sbGVyLmgiCi0KLSNpbmNs
dWRlICJXZWJFZGl0Q29tbWFuZFByb3h5LmgiCi0jaW5jbHVkZSA8cWdsb2JhbC5oPgotI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQotY2xhc3MgUXRX
ZWJVbmRvQ29tbWFuZCA6IHB1YmxpYyBRVW5kb0NvbW1hbmQgewotcHVibGljOgotICAgIFF0V2Vi
VW5kb0NvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiwgUVVuZG9Db21tYW5k
KiBwYXJlbnQgPSAwKTsKLSAgICB+UXRXZWJVbmRvQ29tbWFuZCgpOwotCi0gICAgdm9pZCByZWRv
KCk7Ci0gICAgdm9pZCB1bmRvKCk7Ci0KLSAgICBib29sIGluVW5kb1JlZG8oKSBjb25zdCB7IHJl
dHVybiBtX2luVW5kb1JlZG87IH07Ci0KLXByaXZhdGU6Ci0gICAgUmVmUHRyPFdlYkVkaXRDb21t
YW5kUHJveHk+IG1fY29tbWFuZDsKLSAgICBib29sIG1fZmlyc3Q7Ci0gICAgYm9vbCBtX2luVW5k
b1JlZG87Ci19OwotCi1RdFdlYlVuZG9Db21tYW5kOjpRdFdlYlVuZG9Db21tYW5kKFBhc3NSZWZQ
dHI8V2ViRWRpdENvbW1hbmRQcm94eT4gY29tbWFuZCwgUVVuZG9Db21tYW5kKiBwYXJlbnQpCi0g
ICAgOiBRVW5kb0NvbW1hbmQocGFyZW50KQotICAgICwgbV9jb21tYW5kKGNvbW1hbmQpCi0gICAg
LCBtX2ZpcnN0KHRydWUpCi0gICAgLCBtX2luVW5kb1JlZG8oZmFsc2UpCi17Ci19Ci0KLVF0V2Vi
VW5kb0NvbW1hbmQ6On5RdFdlYlVuZG9Db21tYW5kKCkKLXsKLX0KLQotdm9pZCBRdFdlYlVuZG9D
b21tYW5kOjpyZWRvKCkKLXsKLSAgICBtX2luVW5kb1JlZG8gPSB0cnVlOwotCi0gICAgLy8gSWdu
b3JlIHRoZSBmaXJzdCByZWRvIGNhbGxlZCBmcm9tIFFVbmRvU3RhY2s6OnB1c2goKS4KLSAgICBp
ZiAobV9maXJzdCkgewotICAgICAgICBtX2ZpcnN0ID0gZmFsc2U7Ci0gICAgICAgIG1faW5VbmRv
UmVkbyA9IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChtX2NvbW1hbmQp
Ci0gICAgICAgIG1fY29tbWFuZC0+cmVhcHBseSgpOwotCi0gICAgbV9pblVuZG9SZWRvID0gZmFs
c2U7Ci19Ci0KLXZvaWQgUXRXZWJVbmRvQ29tbWFuZDo6dW5kbygpCi17Ci0gICAgbV9pblVuZG9S
ZWRvID0gdHJ1ZTsKLQotICAgIGlmIChtX2NvbW1hbmQpCi0gICAgICAgIG1fY29tbWFuZC0+dW5h
cHBseSgpOwotCi0gICAgbV9pblVuZG9SZWRvID0gZmFsc2U7Ci19Ci0KLVF0V2ViVW5kb0NvbnRy
b2xsZXI6OlF0V2ViVW5kb0NvbnRyb2xsZXIoKQotewotfQotCi12b2lkIFF0V2ViVW5kb0NvbnRy
b2xsZXI6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5
PiBjb21tYW5kLCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8gdW5kb09yUmVkbykKLXsKLSAgICBp
ZiAodW5kb09yUmVkbyA9PSBXZWJQYWdlUHJveHk6OlVuZG8pIHsKLSAgICAgICAgY29uc3QgUXRX
ZWJVbmRvQ29tbWFuZCogd2ViVW5kb0NvbW1hbmQgPSBzdGF0aWNfY2FzdDxjb25zdCBRdFdlYlVu
ZG9Db21tYW5kKj4obV91bmRvU3RhY2suY29tbWFuZChtX3VuZG9TdGFjay5pbmRleCgpKSk7Ci0g
ICAgICAgIGlmICh3ZWJVbmRvQ29tbWFuZCAmJiB3ZWJVbmRvQ29tbWFuZC0+aW5VbmRvUmVkbygp
KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBtX3VuZG9TdGFjay5wdXNoKG5ldyBRdFdl
YlVuZG9Db21tYW5kKGNvbW1hbmQpKTsKLSAgICB9Ci19Ci0KLXZvaWQgUXRXZWJVbmRvQ29udHJv
bGxlcjo6Y2xlYXJBbGxFZGl0Q29tbWFuZHMoKQotewotICAgIG1fdW5kb1N0YWNrLmNsZWFyKCk7
Ci19Ci0KLWJvb2wgUXRXZWJVbmRvQ29udHJvbGxlcjo6Y2FuVW5kb1JlZG8oV2ViUGFnZVByb3h5
OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pCi17Ci0gICAgaWYgKHVuZG9PclJlZG8gPT0gV2ViUGFn
ZVByb3h5OjpVbmRvKQotICAgICAgICByZXR1cm4gbV91bmRvU3RhY2suY2FuVW5kbygpOwotICAg
IHJldHVybiBtX3VuZG9TdGFjay5jYW5SZWRvKCk7Ci19Ci0KLXZvaWQgUXRXZWJVbmRvQ29udHJv
bGxlcjo6ZXhlY3V0ZVVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRv
KQotewotICAgIGlmICh1bmRvT3JSZWRvID09IFdlYlBhZ2VQcm94eTo6VW5kbykKLSAgICAgICAg
bV91bmRvU3RhY2sudW5kbygpOwotICAgIGVsc2UKLSAgICAgICAgbV91bmRvU3RhY2sucmVkbygp
OwotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViVW5kb0Nv
bnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9RdFdlYlVuZG9Db250cm9s
bGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwNGY3MTQuLjAwMDAwMDAKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1F0V2ViVW5kb0NvbnRyb2xsZXIuaAorKysg
L2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDExIE5v
a2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICAgIENvcHlyaWdo
dCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBTZXJ2aWNlcyBJbmMuCi0KLSAgICBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0g
ICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3Vy
IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAg
IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl
ZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2lmbmRlZiBR
dFdlYlVuZG9Db250cm9sbGVyX2gKLSNkZWZpbmUgUXRXZWJVbmRvQ29udHJvbGxlcl9oCi0KLSNp
bmNsdWRlICJQYWdlQ2xpZW50LmgiCi0jaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCi0jaW5jbHVk
ZSA8UVVuZG9TdGFjaz4KLQotY2xhc3MgUXRXZWJVbmRvQ29udHJvbGxlciB7Ci1wdWJsaWM6Ci0g
ICAgUXRXZWJVbmRvQ29udHJvbGxlcigpOwotCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBR
dFBhZ2VDbGllbnQ7Ci0KLSAgICAvLyBQYWdlIENsaWVudC4KLSAgICB2b2lkIHJlZ2lzdGVyRWRp
dENvbW1hbmQoUGFzc1JlZlB0cjxXZWJLaXQ6OldlYkVkaXRDb21tYW5kUHJveHk+LCBXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyk7Ci0gICAgdm9pZCBjbGVhckFsbEVkaXRDb21tYW5k
cygpOwotICAgIGJvb2wgY2FuVW5kb1JlZG8oV2ViS2l0OjpXZWJQYWdlUHJveHk6OlVuZG9PclJl
ZG8pOwotICAgIHZvaWQgZXhlY3V0ZVVuZG9SZWRvKFdlYktpdDo6V2ViUGFnZVByb3h5OjpVbmRv
T3JSZWRvKTsKLQotICAgIFFVbmRvU3RhY2sgbV91bmRvU3RhY2s7Ci19OwotCi0jZW5kaWYgLy8g
UXRXZWJVbmRvQ29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXBpLnByaSBiL1NvdXJj
ZS9hcGkucHJpCmluZGV4IGJhNDk5MzEuLjliNjQyNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hcGku
cHJpCisrKyBiL1NvdXJjZS9hcGkucHJpCkBAIC03OSw4ICs3OSw2IEBAIEhFQURFUlMgKz0gXAog
ICAgICQkUFdEL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9UZXh0Q2hlY2tlckNsaWVudFF0Lmgg
XAogICAgICQkUFdEL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QbGF0Zm9ybVN0cmF0ZWdpZXNR
dC5oCiAKLUlOQ0xVREVQQVRIICs9ICQkUFdEL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydAotCiBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfVklERU89MSkgewogICAgICFjb250YWlucyhERUZJTkVT
LCBXVEZfVVNFX1FUS0lUPTEpOiFjb250YWlucyhERUZJTkVTLCBXVEZfVVNFX0dTVFJFQU1FUj0x
KTpjb250YWlucyhERUZJTkVTLCBXVEZfVVNFX1FUX01VTFRJTUVESUE9MSkgewogICAgICAgICBI
RUFERVJTICs9ICQkUFdEL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GdWxsU2NyZWVuVmlkZW9X
aWRnZXQuaApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDg1NzQ1NjQuLjIzMDVmYjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMTAzICsxLDMgQEAKLTIwMTEtMTItMTMgIFJhcGhhZWwgS3Vi
byBkYSBDb3N0YSAgPGt1Ym9AcHJvZnVzaW9uLm1vYmk+Ci0KLSAgICAgICAgd2F0Y2hsaXN0OiBB
ZGQgd2F0Y2hsaXN0IGZvciBFRkwsIENNYWtlIGFuZCBsaWJzb3VwIGNvZGUgYW5kIHB1dCBteXNl
bGYgb24gaXQuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NDQzMAotCi0gICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgotCi0gICAgICAgICog
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3dhdGNobGlzdDoKLQotMjAxMS0xMi0xMyAg
UGV0ZXIgQmV2ZXJsb28gIDxwZXRlckBjaHJvbWl1bS5vcmc+Ci0KLSAgICAgICAgW0Nocm9taXVt
XSBQdWxsIGluIEZyZWVUeXBlIGFuZCBkZWNyZWFzZSBjaGVjay1vdXQgY29tcGxleGl0eSBmb3Ig
QW5kcm9pZAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzQ0MDEKLQotICAgICAgICBEZWNyZWFzZSB0aGUgY2hlY2stb3V0IGNvbXBsZXhpdHkgYnkgcmVt
b3ZpbmcgdGhlIG5lZWQgdG8gZmlyc3QgcnVuCi0gICAgICAgICJ1cGRhdGUtd2Via2l0LWNocm9t
aXVtIC0tY2hyb21pdW0iIHByaW9yIHRvIHJ1bm5pbmcgaXQgd2l0aAotICAgICAgICAiLS1jaHJv
bWl1bS1hbmRyb2lkIiwgd2hpY2ggd2FzIGNhdXNlZCBieSBhbiB1bnZlcnNpb25lZCB0aGlyZF9w
YXJ0eS8KLSAgICAgICAgZGlyZWN0b3J5IGJlaW5nIGNyZWF0ZWQuIFRoaXMgbW92ZXMgdGhlIEFu
ZHJvaWQgTkRLIHRvIFNvdXJjZS9XZWJLaXQvCi0gICAgICAgIGNocm9taXVtLywgY29taW5nIGZy
b20gdGhpcmRfcGFydHkvIGluIHRoYXQgZGlyZWN0b3J5LgotCi0gICAgICAgIFJldmlld2VkIGJ5
IEFkYW0gQmFydGguCi0KLSAgICAgICAgKiBTY3JpcHRzL3VwZGF0ZS13ZWJraXQtY2hyb21pdW06
Ci0gICAgICAgICogU2NyaXB0cy93ZWJraXRkaXJzLnBtOgotICAgICAgICAoYnVpbGRDaHJvbWl1
bU1ha2VmaWxlKToKLQotMjAxMS0xMi0xMyAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+
IGFuZCBNYXJ0aW4gUm9iaW5zb24gPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgotCi0gICAgICAgIGJ1
aWxkLWpzYyBwYXNzaW5nIGluY29ycmVjdCBhcmdzIHRvIGJ1aWxkR3RrUHJvamVjdAotICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzMDgKLQotICAgICAg
ICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEgU2lsdmEuCi0KLSAgICAgICAgKiBTY3JpcHRz
L2J1aWxkLXdlYmtpdDogSW5zdGVhZCBvZiBpbnZva2luZyBidWlsZEd0a1Byb2plY3Qgd2l0aAot
ICAgICAgICBhbm90aGVyIGFyZ3VtZW50IGFib3V0IHdlYmtpdDIsIHVuc2hpZnQgYSAtLWRpc2Fi
bGUtd2Via2l0MgotICAgICAgICBhcmd1bWVudCBvbnRvIHRoZSBidWlsZEFyZ3MuCi0gICAgICAg
ICogU2NyaXB0cy93ZWJraXRkaXJzLnBtOiBSZW1vdmUgJGVuYWJsZVdlYktpdDIgYXJnLiBPbmx5
IHNhdmUgYXV0b2dlbi5zaAotICAgICAgICBhcmd1bWVudHMgZm9yIFdlYktpdCB0byBwcmV2ZW50
IHVubmVjZXNzYXJ5IHJlY29uZmlndXJhdGlvbiB3aGVuIGJ1aWxkLXdlYmtpdAotICAgICAgICBh
bmQgYnVpbGQtanNjIGFyZSBydW4gb25lIGFmdGVyIHRoZSBvdGhlci4KLQotMjAxMS0xMi0xMyAg
Q3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgotCi0gICAgICAgIFtRdF0gUkVH
UkVTU0lPTigxMDI2NzkpOiBJdCBicm9rZSBRdDUtV0sxIGJ1aWxkCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQxMwotCi0gICAgICAgIFVucmV2aWV3
ZWQgYnVpbGRmaXguCi0KLSAgICAgICAgKiBxbWFrZS9ta3NwZWNzL2ZlYXR1cmVzL3dlYmNvcmUu
cHJmOiBUZW1wb3JhcmlseSByZXZlcnQgYSBwYXJ0IG9mIHIxMDI2NzkgdW50aWwgYSBwcm9wZXIg
Zml4LgotCi0yMDExLTEyLTEzICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5QHdlYmtpdC5vcmc+
Ci0KLSAgICAgICAgW1F0XSBVbnJldmlld2VkIHNwZWN1bGF0aXYgZGVidWcgYnVpbGRmaXggYWZ0
ZXIgcjEwMjY3OS4KLQotICAgICAgICAqIFF0VGVzdEJyb3dzZXIvUXRUZXN0QnJvd3Nlci5wcm86
Ci0gICAgICAgICogUXRUZXN0QnJvd3Nlci9tYWluLmNwcDoKLQotMjAxMS0xMi0xMyAgVG9yIEFy
bmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+Ci0KLSAgICAgICAgW1F0XSBH
ZXQgcmlkIG9mIGxheWVyaW5nIHZpb2xhdGlvbnMgaW4gaW5jbHVkZXMKLQotICAgICAgICBXZWJL
aXQvcXQvQVBJIGFuZCBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQgc2hvdWxkIG5vdCBiZSBpbmNs
dWRlZAotICAgICAgICBpbiB0aGUgd2ViY29yZS5wcmYsIGJ1dCByYXRoZXIgaW4gZWFjaCB0YXJn
ZXQgdGhhdCBzcGVjaWZpY2x5IG5lZWRzCi0gICAgICAgIGhlYWRlcnMgaW4gdGhlc2UgbG9jYXRp
b24uIFdlIHVzZWQgdG8gaW5jbHVkZSB0aGVtIGRpcmVjdGx5IGluIHdlYmNvcmUKLSAgICAgICAg
c2luY2Ugd2UgaGFkIGxheWVyaW5nIHZpb2xhdGlvbnMgYmV0d2VlbiBXZWJDb3JlIGFuZCBXZWJL
aXQsIGJ1dCBub3cKLSAgICAgICAgdGhhdCB0aGV5IGFyZSBnb25lIHRoZXJlJ3Mgbm8gcmVhc29u
IHRvIGRvIHRoYXQuCi0KLSAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCi0KLSAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5wcm86Ci0gICAgICAgICog
UXRUZXN0QnJvd3Nlci9sYXVuY2hlcndpbmRvdy5oOgotICAgICAgICAqIFdlYktpdFRlc3RSdW5u
ZXIvSW5qZWN0ZWRCdW5kbGUvVGFyZ2V0LnByaToKLSAgICAgICAgKiBxbWFrZS9ta3NwZWNzL2Zl
YXR1cmVzL3dlYmNvcmUucHJmOgotICAgICAgICAqIHFtYWtlL21rc3BlY3MvZmVhdHVyZXMvd2Vi
a2l0Mi5wcmY6Ci0KLTIwMTEtMTItMTMgIErDoW5vcyBCYWRpY3MgIDxkaWNza2FAZ21haWwuY29t
PgotCi0gICAgICAgIFtOUldUXSBJdCBjcmFzaGVzIGludGVybWl0dGVudGx5IHdoZW4gdGhlcmUg
YXJlIFdlYlByb2Nlc3MgY3Jhc2hlcwotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzM0NTEKLQotICAgICAgICBVc2Ugc2VsZi5wb2xsKCkgaW5zdGVhZCBv
ZiBzZWxmLl9wcm9jLnBvbGwoKSBiZWNhdXNlIGl0IGNoZWNrcyBpZiBzZWxmLl9wcm9jIGlzIE5v
bmUgb3Igbm90LgotCi0gICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFu
c2VuLgotCi0gICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2
ZXJfcHJvY2Vzcy5weToKLSAgICAgICAgKFNlcnZlclByb2Nlc3MuX2NoZWNrX2Zvcl9jcmFzaCk6
Ci0KLTIwMTEtMTItMTMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29t
PgotCi0gICAgICAgIFVucmV2aWV3ZWQuIEZpeCBHVEsrIEFQSSBkb2NzIGJ1aWxkLgotCi0gICAg
ICAgICogZ3RrL2dlbmVyYXRlLWd0a2RvYzoKLSAgICAgICAgKGdldF93ZWJraXQyX29wdGlvbnMp
OiBJZ25vcmUgV2ViS2l0VUlDbGllbnQgc2luY2UgaXQncyBwcml2YXRlCi0gICAgICAgIEFQSS4K
LQotMjAxMS0xMi0xMyAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBjaHJvbWl1bS5vcmc+Ci0K
LSAgICAgICAgUmV2aWV3ZWQsIHJlbW92ZWQgb25lIG9mIG15IGVtYWlsIGFkZHJlc3NlcyB0byB1
c2UgdGhlIGFwcHJwcmlhdGUgb25lLgotCi0gICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY29uZmlnL2NvbW1pdHRlcnMucHk6Ci0KIDIwMTEtMTItMTIgIMOBZMOhbSBLYWxsYWkgIDxL
YWxsYWkuQWRhbUBzdHVkLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIFtRdF0gRml4IHNraXAgbGlz
dCBzZWFyY2ggcGF0aCBhbmQgZXhwZWN0ZWQgZmlsZSBzZWFyY2ggcGF0aCBpbiBPUldUCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5wcm8gYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9xdC9EdW1wUmVuZGVyVHJlZS5wcm8KaW5kZXggMDcwOGJmZS4uMTQ0
NTdhMSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvcXQvRHVtcFJlbmRlclRyZWUu
cHJvCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3F0L0R1bXBSZW5kZXJUcmVlLnBybwpAQCAt
MTYsOSArMTYsNyBAQCBsb2FkKHdlYmNvcmUpCiAKIENPTkZJRyArPSBxdHdlYmtpdAogCi1JTkNM
VURFUEFUSCArPSBcCi0gICAgJCRQV0QvLi4gXAotICAgICQke1JPT1RfV0VCS0lUX0RJUn0vU291
cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydAorSU5DTFVERVBBVEggKz0gJCRQV0QvLi4KIAog
IWVtYmVkZGVkOiBQS0dDT05GSUcgKz0gZm9udGNvbmZpZwogCmRpZmYgLS1naXQgYS9Ub29scy9R
dFRlc3RCcm93c2VyL1F0VGVzdEJyb3dzZXIucHJvIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci9RdFRl
c3RCcm93c2VyLnBybwppbmRleCBhZmY0ZDFiLi40ZTM2YzRkIDEwMDY0NAotLS0gYS9Ub29scy9R
dFRlc3RCcm93c2VyL1F0VGVzdEJyb3dzZXIucHJvCisrKyBiL1Rvb2xzL1F0VGVzdEJyb3dzZXIv
UXRUZXN0QnJvd3Nlci5wcm8KQEAgLTYsOCArNiw2IEBACiAKIFRFTVBMQVRFID0gYXBwCiAKLUlO
Q0xVREVQQVRIICs9ICQke1JPT1RfV0VCS0lUX0RJUn0vU291cmNlL1dlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydAotCiBTT1VSQ0VTICs9IFwKICAgICBsb2NhdGlvbmVkaXQuY3BwIFwKICAgICBsYXVu
Y2hlcndpbmRvdy5jcHAgXApkaWZmIC0tZ2l0IGEvVG9vbHMvUXRUZXN0QnJvd3Nlci9sYXVuY2hl
cndpbmRvdy5oIGIvVG9vbHMvUXRUZXN0QnJvd3Nlci9sYXVuY2hlcndpbmRvdy5oCmluZGV4IGI1
NjA5YzUuLjA2NzhmMWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1F0VGVzdEJyb3dzZXIvbGF1bmNoZXJ3
aW5kb3cuaAorKysgYi9Ub29scy9RdFRlc3RCcm93c2VyL2xhdW5jaGVyd2luZG93LmgKQEAgLTU2
LDYgKzU2LDcgQEAKICNpbmNsdWRlIDxxd2ViaW5zcGVjdG9yLmg+CiAjaW5jbHVkZSA8cXdlYnNl
dHRpbmdzLmg+CiAKKyNpbmNsdWRlICJEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oIgogI2luY2x1
ZGUgIm1haW53aW5kb3cuaCIKICNpbmNsdWRlICJ1cmxsb2FkZXIuaCIKICNpbmNsdWRlICJ1dGls
cy5oIgpkaWZmIC0tZ2l0IGEvVG9vbHMvUXRUZXN0QnJvd3Nlci9tYWluLmNwcCBiL1Rvb2xzL1F0
VGVzdEJyb3dzZXIvbWFpbi5jcHAKaW5kZXggNjAzYWQ2MS4uYTlmN2QxMyAxMDA2NDQKLS0tIGEv
VG9vbHMvUXRUZXN0QnJvd3Nlci9tYWluLmNwcAorKysgYi9Ub29scy9RdFRlc3RCcm93c2VyL21h
aW4uY3BwCkBAIC0zMCw3ICszMCw2IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpbmNsdWRl
ICJEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5oIgogI2luY2x1ZGUgImxhdW5jaGVyd2luZG93Lmgi
CiAjaW5jbHVkZSAidXJsbG9hZGVyLmgiCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvYnVp
bGQtd2Via2l0IGIvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKaW5kZXggZTdkYWYyNC4uZWVk
MjhmZiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXQKKysrIGIvVG9vbHMv
U2NyaXB0cy9idWlsZC13ZWJraXQKQEAgLTc0OSwxMCArNzQ5LDcgQEAgZm9yIG15ICRkaXIgKEBw
cm9qZWN0cykgewogCiAgICAgbXkgJHByb2plY3QgPSBiYXNlbmFtZSgkZGlyKTsKICAgICBpZiAo
aXNHdGsoKSkgewotICAgICAgICBpZiAoISRub1dlYktpdDIpIHsKLSAgICAgICAgICAgIHVuc2hp
ZnQoQG9wdGlvbnMsICItLWVuYWJsZS13ZWJraXQyIik7Ci0gICAgICAgIH0KLSAgICAgICAgJHJl
c3VsdCA9IGJ1aWxkR3RrUHJvamVjdCgkcHJvamVjdCwgJGNsZWFuLCBAb3B0aW9ucyk7CisgICAg
ICAgICRyZXN1bHQgPSBidWlsZEd0a1Byb2plY3QoJHByb2plY3QsICRjbGVhbiwgISRub1dlYktp
dDIsIEBvcHRpb25zKTsKICAgICB9IGVsc2lmIChpc1F0KCkpIHsKICAgICAgICAgI0ZJWE1FOiAk
ZGlyIHNob3VsZCBwcm9iYWJseSBiZSAkcHJvamVjdC4KICAgICAgICAgJHJlc3VsdCA9IGJ1aWxk
UU1ha2VRdFByb2plY3QoJGRpciwgJGNsZWFuLCBAb3B0aW9ucyk7CmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3VwZGF0ZS13ZWJraXQtY2hyb21pdW0gYi9Ub29scy9TY3JpcHRzL3VwZGF0ZS13
ZWJraXQtY2hyb21pdW0KaW5kZXggODQwNmIxZC4uMmU2YzE1YiAxMDA3NTUKLS0tIGEvVG9vbHMv
U2NyaXB0cy91cGRhdGUtd2Via2l0LWNocm9taXVtCisrKyBiL1Rvb2xzL1NjcmlwdHMvdXBkYXRl
LXdlYmtpdC1jaHJvbWl1bQpAQCAtNjEsMTcgKzYxLDIwIEBAIGlmICghIC1lICIuZ2NsaWVudCIp
IHsKICMgV2hlbiBidWlsZGluZyBXZWJLaXQncyBDaHJvbWl1bSBwb3J0IGZvciBBbmRyb2lkLCB3
ZSBuZWVkIHRoZSBBbmRyb2lkIE5ESyBhcwogIyBpdCB3aWxsIGFsbG93IHVzIHRvIGNyb3NzLWNv
bXBpbGUgYWxsIHNvdXJjZXMgdG8gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCiBpZiAoaXNDaHJv
bWl1bUFuZHJvaWQoKSkgewotICAgIGlmICghIC1lICJhbmRyb2lkLW5kay1yNyIpIHsKKyAgICBp
ZiAoISAtZSAidGhpcmRfcGFydHkvYW5kcm9pZC1uZGstcjciKSB7CiAgICAgICAgIHByaW50ICJJ
bnN0YWxsaW5nIHRoZSBBbmRyb2lkIE5ESywgdmVyc2lvbiA3Li4uXG4iOworICAgICAgICBpZiAo
ISAtZSAidGhpcmRfcGFydHkvIikgeworICAgICAgICAgICAgbWtkaXIgInRoaXJkX3BhcnR5IjsK
KyAgICAgICAgfQogICAgICAgICBteSAkaG9zdF9vcyA9IGlzTGludXgoKSA/ICJsaW51eCIgOiAi
ZGFyd2luIjsKLSAgICAgICAgbXkgJHJlc3VsdCA9IHN5c3RlbSgiY3VybCIsICItbyIsICJhbmRy
b2lkLW5kay1yNy50YXIuYnoyIiwgImh0dHA6Ly9kbC5nb29nbGUuY29tL2FuZHJvaWQvbmRrL2Fu
ZHJvaWQtbmRrLXI3LSIgLiAkaG9zdF9vcyAuICIteDg2LnRhci5iejIiKTsKKyAgICAgICAgbXkg
JHJlc3VsdCA9IHN5c3RlbSgiY3VybCIsICItbyIsICJ0aGlyZF9wYXJ0eS9hbmRyb2lkLW5kay1y
Ny50YXIuYnoyIiwgImh0dHA6Ly9kbC5nb29nbGUuY29tL2FuZHJvaWQvbmRrL2FuZHJvaWQtbmRr
LXI3LSIgLiAkaG9zdF9vcyAuICIteDg2LnRhci5iejIiKTsKICAgICAgICAgZGllICJDb3VsZG4n
dCBkb3dubG9hZCB0aGUgQW5kcm9pZCBOREsuIiBpZiAkcmVzdWx0OwogCi0gICAgICAgICRyZXN1
bHQgPSBzeXN0ZW0oInRhciIsICJqeCIsICItZiIsICJhbmRyb2lkLW5kay1yNy50YXIuYnoyIik7
CisgICAgICAgICRyZXN1bHQgPSBzeXN0ZW0oInRhciIsICJqeEMiLCAidGhpcmRfcGFydHkiLCAi
LWYiLCAidGhpcmRfcGFydHkvYW5kcm9pZC1uZGstcjcudGFyLmJ6MiIpOwogICAgICAgICBkaWUg
IkNvdWxkbid0IGV4dHJhY3QgdGhlIEFuZHJvaWQgTkRLLiIgaWYgJHJlc3VsdDsKICAgICB9CiAK
LSAgICAkRU5We0FORFJPSURfTkRLX1JPT1R9ID0gc291cmNlRGlyKCkgLiAiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vYW5kcm9pZC1uZGstcjciOworICAgICRFTlZ7QU5EUk9JRF9OREtfUk9PVH0g
PSBzb3VyY2VEaXIoKSAuICIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90aGlyZF9wYXJ0eS9hbmRy
b2lkLW5kay1yNyI7CiAgICAgJEVOVntXRUJLSVRfQU5EUk9JRF9CVUlMRH0gPSAxOwogfQogCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0gYi9Ub29scy9TY3JpcHRzL3dl
YmtpdGRpcnMucG0KaW5kZXggOTVhMTVkYS4uOGNlZDRmMyAxMDA3NTUKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRkaXJzLnBtCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbQpAQCAt
MTU4MCwyMyArMTU4MCw5IEBAIHN1YiBnZXRNRDVIYXNoRm9yRmlsZSgkKQogICAgIHJldHVybiBt
ZDVfaGV4KCRjb250ZW50cyk7CiB9CiAKLXN1YiBydW5BdXRvZ2VuRm9yQXV0b3Rvb2xzUHJvamVj
dElmTmVjZXNzYXJ5KCRAKQorc3ViIHJ1bkF1dG9nZW5Gb3JBdXRvdG9vbHNQcm9qZWN0KCRAKQog
ewotICAgIG15ICgkZGlyLCAkcHJlZml4LCAkc291cmNlRGlyLCAkcHJvamVjdCwgQGJ1aWxkQXJn
cykgPSBAXzsKLQotICAgIG15ICRhcmd1bWVudHNGaWxlID0gInByZXZpb3VzLWF1dG9nZW4tYXJn
dW1lbnRzLnR4dCI7Ci0gICAgaWYgKC1lICJHTlVtYWtlZmlsZSIpIHsKLSAgICAgICAgIyBKdXN0
IGFzc3VtZSB0aGF0IGJ1aWxkLWpzYyB3aWxsIG5ldmVyIGJlIHVzZWQgdG8gcmVjb25maWd1cmUg
SlNDLiBMYXRlcgotICAgICAgICAjIHdlIGNhbiBnbyBiYWNrIGFuZCBtYWtlIHRoaXMgbW9yZSBj
b21wbGljYXRlZCBpZiB0aGUgZGVtYW5kIGlzIHRoZXJlLgotICAgICAgICBpZiAoJHByb2plY3Qg
bmUgIldlYktpdCIpIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
ICMgV2Ugb25seSBydW4gYXV0b2dlbi5zaCBhZ2FpbiBpZiB0aGUgYXJndW1lbnRzIHBhc3NlZCBo
YXZlIGNoYW5nZWQuCi0gICAgICAgIGlmICghbXVzdFJlUnVuQXV0b2dlbigkc291cmNlRGlyLCAk
YXJndW1lbnRzRmlsZSwgQGJ1aWxkQXJncykpIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotICAgIH0KKyAgICBteSAoJGRpciwgJHByZWZpeCwgJHNvdXJjZURpciwgJHNhdmVBcmd1
bWVudHMsICRhcmd1bWVudHNGaWxlLCBAYnVpbGRBcmdzKSA9IEBfOwogCiAgICAgcHJpbnQgIkNh
bGxpbmcgYXV0b2dlbi5zaCBpbiAiIC4gJGRpciAuICJcblxuIjsKICAgICBwcmludCAiSW5zdGFs
bGF0aW9uIHByZWZpeCBkaXJlY3Rvcnk6ICRwcmVmaXhcbiIgaWYoZGVmaW5lZCgkcHJlZml4KSk7
CkBAIC0xNjA5LDkgKzE1OTUsOSBAQCBzdWIgcnVuQXV0b2dlbkZvckF1dG90b29sc1Byb2plY3RJ
Zk5lY2Vzc2FyeSgkQCkKICAgICAgICAgY2xvc2UoU1VNKTsKICAgICB9CiAKLSAgICAjIE9ubHkg
Zm9yIFdlYktpdCwgd3JpdGUgdGhlIGF1dG9nZW4uc2ggYXJndW1lbnRzIHRvIGEgZmlsZSBzbyB0
aGF0IHdlIGNhbiBkZXRlY3QKLSAgICAjIHdoZW4gdGhleSBjaGFuZ2UgYW5kIGF1dG9tYXRpY2Fs
bHkgcmUtcnVuIGl0LgotICAgIGlmICgkcHJvamVjdCBlcSAnV2ViS2l0JykgeworICAgIGlmICgk
c2F2ZUFyZ3VtZW50cykgeworICAgICAgICAjIFdyaXRlIGF1dG9nZW4uc2ggYXJndW1lbnRzIHRv
IGEgZmlsZSBzbyB0aGF0IHdlIGNhbiBkZXRlY3QKKyAgICAgICAgIyB3aGVuIHRoZXkgY2hhbmdl
IGFuZCBhdXRvbWF0aWNhbGx5IHJlLXJ1biBpdC4KICAgICAgICAgb3BlbihBVVRPVE9PTFNfQVJH
VU1FTlRTLCAiPiRhcmd1bWVudHNGaWxlIik7CiAgICAgICAgIHByaW50IEFVVE9UT09MU19BUkdV
TUVOVFMgam9pbigiICIsIEBidWlsZEFyZ3MpOwogICAgICAgICBjbG9zZShBVVRPVE9PTFNfQVJH
VU1FTlRTKTsKQEAgLTE2NDEsMTAgKzE2MjcsNiBAQCBzdWIgbXVzdFJlUnVuQXV0b2dlbigkQCkK
ICAgICBjaG9tcChteSAkcHJldmlvdXNBcmd1bWVudHMgPSA8QVVUT1RPT0xTX0FSR1VNRU5UUz4p
OwogICAgIGNsb3NlKEFVVE9UT09MU19BUkdVTUVOVFMpOwogCi0gICAgIyBXZSBvbmx5IGNhcmUg
YWJvdXQgdGhlIFdlYktpdDIgYXJndW1lbnQgd2hlbiB3ZSBhcmUgYnVpbGRpbmcgV2ViS2l0IGl0
c2VsZi4KLSAgICAjIGJ1aWxkLWpzYyBuZXZlciBwYXNzZXMgLS1lbmFibGUtd2Via2l0Miwgc28g
aWYgd2UgZGlkbid0IGRvIHRoaXMsIGF1dG9nZW4uc2gKLSAgICAjIHdvdWxkIHJ1biBmb3IgZXZl
cnkgc2luZ2xlIGJ1aWxkIG9uIHRoZSBib3RzLCBzaW5jZSBpdCBydW5zIGJvdGggYnVpbGQtd2Vi
a2l0Ci0gICAgIyBhbmQgYnVpbGQtanNjLgogICAgIG15ICRqb2luZWRDdXJyZW50QXJndW1lbnRz
ID0gam9pbigiICIsIEBjdXJyZW50QXJndW1lbnRzKTsKICAgICBpZiAoJHByZXZpb3VzQXJndW1l
bnRzIG5lICRqb2luZWRDdXJyZW50QXJndW1lbnRzKSB7CiAgICAgICAgIHByaW50ICJQcmV2aW91
cyBhdXRvZ2VuIGFyZ3VtZW50cyB3ZXJlOiAkcHJldmlvdXNBcmd1bWVudHNcblxuIjsKQEAgLTE2
NzgsNyArMTY2MCw3IEBAIHN1YiBtdXN0UmVSdW5BdXRvZ2VuKCRAKQogCiBzdWIgYnVpbGRBdXRv
dG9vbHNQcm9qZWN0KCRAKQogewotICAgIG15ICgkcHJvamVjdCwgJGNsZWFuLCBAYnVpbGRQYXJh
bXMpID0gQF87CisgICAgbXkgKCRwcm9qZWN0LCAkY2xlYW4sICRlbmFibGVXZWJLaXQyLCBAYnVp
bGRQYXJhbXMpID0gQF87CiAKICAgICBteSAkbWFrZSA9ICdtYWtlJzsKICAgICBteSAkZGlyID0g
cHJvZHVjdERpcigpOwpAQCAtMTcwOSw2ICsxNjkxLDEyIEBAIHN1YiBidWlsZEF1dG90b29sc1By
b2plY3QoJEApCiAgICAgICAgICRtYWtlQXJncyAuPSAiIGpzYyI7CiAgICAgfQogCisgICAgIyBU
aGlzIGlzIGEgdGVtcG9yYXJ5IHdvcmstYXJvdW5kIHRvIGVuYWJsZSBidWlsZGluZyBXZWJLaXQy
IG9uIHRoZSBib3RzLAorICAgICMgYnV0IGVuc3VyaW5nIHRoYXQgaXQgZG9lcyBub3Qgc2hpcCB1
bnRpbCB0aGUgQVBJIGlzIHN0YWJsZS4KKyAgICBpZiAoJHByb2plY3QgZXEgIldlYktpdCIgYW5k
IGlzR3RrKCkgYW5kICRlbmFibGVXZWJLaXQyKSB7CisgICAgICAgIHB1c2ggQGJ1aWxkQXJncywg
Ii0tZW5hYmxlLXdlYmtpdDIiOworICAgIH0KKwogICAgICRwcmVmaXggPSAkRU5WeyJXZWJLaXRJ
bnN0YWxsYXRpb25QcmVmaXgifSBpZiAhZGVmaW5lZCgkcHJlZml4KTsKICAgICBwdXNoIEBidWls
ZEFyZ3MsICItLXByZWZpeD0iIC4gJHByZWZpeCBpZiBkZWZpbmVkKCRwcmVmaXgpOwogCkBAIC0x
NzM3LDcgKzE3MjUsMTUgQEAgc3ViIGJ1aWxkQXV0b3Rvb2xzUHJvamVjdCgkQCkKICAgICAjIElm
IEdOVW1ha2VmaWxlIGV4aXN0cywgZG9uJ3QgcnVuIGF1dG9nZW4uc2ggdW5sZXNzIGl0cyBhcmd1
bWVudHMKICAgICAjIGhhdmUgY2hhbmdlZC4gVGhlIG1ha2VmaWxlIHNob3VsZCBiZSBzbWFydCBl
bm91Z2ggdG8gdHJhY2sgYXV0b3Rvb2xzCiAgICAgIyBkZXBlbmRlbmNpZXMgYW5kIHJlLXJ1biBh
dXRvZ2VuLnNoIHdoZW4gYnVpbGQgZmlsZXMgY2hhbmdlLgotICAgIHJ1bkF1dG9nZW5Gb3JBdXRv
dG9vbHNQcm9qZWN0SWZOZWNlc3NhcnkoJGRpciwgJHByZWZpeCwgJHNvdXJjZURpciwgJHByb2pl
Y3QsIEBidWlsZEFyZ3MpOworICAgIG15ICRhdXRvZ2VuQXJndW1lbnRzRmlsZSA9ICJwcmV2aW91
cy1hdXRvZ2VuLWFyZ3VtZW50cy50eHQiOworICAgIG15ICRidWlsZGluZ1dlYktpdCA9ICRwcm9q
ZWN0IGVxICJXZWJLaXQiOworICAgIGlmICghKC1lICJHTlVtYWtlZmlsZSIpKSB7CisgICAgICAg
IHJ1bkF1dG9nZW5Gb3JBdXRvdG9vbHNQcm9qZWN0KCRkaXIsICRwcmVmaXgsICRzb3VyY2VEaXIs
ICRidWlsZGluZ1dlYktpdCwgJGF1dG9nZW5Bcmd1bWVudHNGaWxlLCBAYnVpbGRBcmdzKTsKKyAg
ICB9CisKKyAgICBpZiAoJGJ1aWxkaW5nV2ViS2l0IGFuZCBtdXN0UmVSdW5BdXRvZ2VuKCRzb3Vy
Y2VEaXIsICRhdXRvZ2VuQXJndW1lbnRzRmlsZSwgQGJ1aWxkQXJncykpIHsKKyAgICAgICAgcnVu
QXV0b2dlbkZvckF1dG90b29sc1Byb2plY3QoJGRpciwgJHByZWZpeCwgJHNvdXJjZURpciwgJGJ1
aWxkaW5nV2ViS2l0LCAkYXV0b2dlbkFyZ3VtZW50c0ZpbGUsIEBidWlsZEFyZ3MpOworICAgIH0K
IAogICAgIG15ICRndGtTY3JpcHRzUGF0aCA9ICIkc291cmNlRGlyL1Rvb2xzL2d0ayI7CiAgICAg
bXkgJHJ1bldpdGhKaGJ1aWxkID0gIiRndGtTY3JpcHRzUGF0aC9ydW4td2l0aC1qaGJ1aWxkIjsK
QEAgLTE3NDcsNyArMTc0Myw3IEBAIHN1YiBidWlsZEF1dG90b29sc1Byb2plY3QoJEApCiAKICAg
ICBjaGRpciAiLi4iIG9yIGRpZTsKIAotICAgIGlmICgkcHJvamVjdCBlcSAnV2ViS2l0Jykgewor
ICAgIGlmICgkYnVpbGRpbmdXZWJLaXQpIHsKICAgICAgICAgbXkgQGRvY0dlbmVyYXRpb25PcHRp
b25zID0gKCRydW5XaXRoSmhidWlsZCwgIiRndGtTY3JpcHRzUGF0aC9nZW5lcmF0ZS1ndGtkb2Mi
LCAiLS1za2lwLWh0bWwiKTsKICAgICAgICAgaWYgKCRkZWJ1ZykgewogICAgICAgICAgICAgcHVz
aChAZG9jR2VuZXJhdGlvbk9wdGlvbnMsICItLWRlYnVnIik7CkBAIC0xOTkzLDEzICsxOTg5LDEz
IEBAIHN1YiBidWlsZFFNYWtlUXRQcm9qZWN0KCQkQCkKIAogc3ViIGJ1aWxkR3RrUHJvamVjdAog
ewotICAgIG15ICgkcHJvamVjdCwgJGNsZWFuLCBAYnVpbGRBcmdzKSA9IEBfOworICAgIG15ICgk
cHJvamVjdCwgJGNsZWFuLCAkZW5hYmxlV2ViS2l0MiwgQGJ1aWxkQXJncykgPSBAXzsKIAogICAg
IGlmICgkcHJvamVjdCBuZSAiV2ViS2l0IiBhbmQgJHByb2plY3QgbmUgIkphdmFTY3JpcHRDb3Jl
IikgewogICAgICAgICBkaWUgIlVuc3VwcG9ydGVkIHByb2plY3Q6ICRwcm9qZWN0LiBTdXBwb3J0
ZWQgcHJvamVjdHM6IFdlYktpdCwgSmF2YVNjcmlwdENvcmVcbiI7CiAgICAgfQogCi0gICAgcmV0
dXJuIGJ1aWxkQXV0b3Rvb2xzUHJvamVjdCgkcHJvamVjdCwgJGNsZWFuLCBAYnVpbGRBcmdzKTsK
KyAgICByZXR1cm4gYnVpbGRBdXRvdG9vbHNQcm9qZWN0KCRwcm9qZWN0LCAkY2xlYW4sICRlbmFi
bGVXZWJLaXQyLCBAYnVpbGRBcmdzKTsKIH0KIAogc3ViIGJ1aWxkQ2hyb21pdW1NYWtlZmlsZSgk
JEApCkBAIC0yMDIyLDcgKzIwMTgsNyBAQCBzdWIgYnVpbGRDaHJvbWl1bU1ha2VmaWxlKCQkQCkK
ICAgICAjIHdpbGwgdmVyaWZ5IHRoYXQgdGhlIGluc3RhbGxlZCBOREsgaXMgaW5kZWVkIGF2YWls
YWJsZS4KICAgICBpZiAoaXNDaHJvbWl1bUFuZHJvaWQoKSkgewogICAgICAgICAkY29tbWFuZCAu
PSAiYmFzaCAtYyBcInNvdXJjZSAiIC4gc291cmNlRGlyKCkgLiAiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vYnVpbGQvYW5kcm9pZC9lbnZzZXR1cC5zaCAmJiAiOwotICAgICAgICAkRU5We0FORFJP
SURfTkRLX1JPT1R9ID0gc291cmNlRGlyKCkgLiAiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vYW5k
cm9pZC1uZGstcjciOworICAgICAgICAkRU5We0FORFJPSURfTkRLX1JPT1R9ID0gc291cmNlRGly
KCkgLiAiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGhpcmRfcGFydHkvYW5kcm9pZC1uZGstcjci
OwogICAgICAgICAkRU5We1dFQktJVF9BTkRST0lEX0JVSUxEfSA9IDE7CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jb25maWcvY29tbWl0dGVycy5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy9jb21taXR0ZXJzLnB5Cmlu
ZGV4IGEwMzUxOGYuLmQ3MWM2MzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NvbmZpZy9jb21taXR0ZXJzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NvbmZpZy9jb21taXR0ZXJzLnB5CkBAIC0yNTgsNyArMjU4LDcgQEAgY29tbWl0dGVy
c191bmFibGVfdG9fcmV2aWV3ID0gWwogICAgIENvbW1pdHRlcigiSnVzdGluIFNjaHVoIiwgImpz
Y2h1aEBjaHJvbWl1bS5vcmciLCAianNjaHVoIiksCiAgICAgQ29tbWl0dGVyKCJLZWlzaGkgSGF0
dG9yaSIsICJrZWlzaGlAd2Via2l0Lm9yZyIsICJrZWlzaGkiKSwKICAgICBDb21taXR0ZXIoIktl
bGx5IE5vcnRvbiIsICJrbm9ydG9uQGdvb2dsZS5jb20iKSwKLSAgICBDb21taXR0ZXIoIktlbmlj
aGkgSXNoaWJhc2hpIiwgImJhc2hpQGNocm9taXVtLm9yZyIsICJiYXNoaSIpLAorICAgIENvbW1p
dHRlcigiS2VuaWNoaSBJc2hpYmFzaGkiLCBbImJhc2hpQGNocm9taXVtLm9yZyIsICJiYXNoaUBn
b29nbGUuY29tIl0sICJiYXNoaSIpLAogICAgIENvbW1pdHRlcigiS2VuamkgSW1hc2FraSIsICJp
bWFzYWtpQGNocm9taXVtLm9yZyIsICJpbWFzYWtpIiksCiAgICAgQ29tbWl0dGVyKCJLZW50IEhh
bnNlbiIsICJrZW50LmhhbnNlbkBub2tpYS5jb20iLCAia2hhbnNlbiIpLAogICAgIENvbW1pdHRl
cigiS2VudGFybyBIYXJhIiwgWyJoYXJha2VuQGNocm9taXVtLm9yZyJdLCAiaGFyYWtlbiIpLApk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3dhdGNobGlz
dCBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3QKaW5kZXgg
MDM1NGZkYS4uYjI2ZGY3ZiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY29uZmlnL3dhdGNobGlzdAorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
b25maWcvd2F0Y2hsaXN0CkBAIC0xMDksMjAgKzEwOSw2IEBACiAgICAgICAgICJDU1MiOiB7CiAg
ICAgICAgICAgICAiZmlsZW5hbWUiOiByIlNvdXJjZS9XZWJDb3JlL2Nzcy8iLAogICAgICAgICB9
LAotICAgICAgICAiRUZMIjogewotICAgICAgICAgICAgImZpbGVuYW1lIjogciJTb3VyY2UvV2Vi
S2l0L2VmbC8iCi0gICAgICAgICAgICAgICAgICAgICAgICByInxTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9lZmwvIgotICAgICAgICAgICAgICAgICAgICAgICAgciJ8VG9vbHMvRVdlYkxhdW5jaGVy
IgotICAgICAgICAgICAgICAgICAgICAgICAgciJ8VG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsLyIs
Ci0gICAgICAgIH0sCi0gICAgICAgICJDTWFrZSI6IHsKLSAgICAgICAgICAgICJmaWxlbmFtZSI6
IHIiLipDTWFrZUxpc3RzXHcqXC50eHQiCi0gICAgICAgICAgICAgICAgICAgICAgICByInwuKlx3
K1wuY21ha2UiCi0gICAgICAgICAgICAgICAgICAgICAgICByInxTb3VyY2UvY21ha2UvIiwKLSAg
ICAgICAgfSwKLSAgICAgICAgIlNvdXBOZXR3b3JrIjogewotICAgICAgICAgICAgImZpbGVuYW1l
IjogciJTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvIiwKLSAgICAgICAgfSwK
ICAgICB9LAogICAgICJDQ19SVUxFUyI6IHsKICAgICAgICAgIyBOb3RlOiBBbGwgZW1haWwgYWRk
cmVzc2VzIGxpc3RlZCBtdXN0IGJlIHJlZ2lzdGVyZWQgd2l0aCBidWd6aWxsYS4KQEAgLTE0Nyw5
ICsxMzMsNiBAQAogICAgICAgICAiUXRXZWJLaXQyUHVibGljQVBJIjogWyAiem9sdGFuQHdlYmtp
dC5vcmciLCBdLAogICAgICAgICAiUXRXZWJLaXQyUGxhdGZvcm1TcGVjaWZpYyI6IFsgInpvbHRh
bkB3ZWJraXQub3JnIiwgXSwKICAgICAgICAgIkNTUyI6IFsgIm1hY3BoZXJzb25AY2hyb21pdW0u
b3JnIiwgXSwKLSAgICAgICAgIkVGTCI6IFsgImt1Ym9AcHJvZnVzaW9uLm1vYmkiLCBdLAotICAg
ICAgICAiQ01ha2UiOiBbICJrdWJvQHByb2Z1c2lvbi5tb2JpIiwgXSwKLSAgICAgICAgIlNvdXBO
ZXR3b3JrIjogWyAia3Vib0Bwcm9mdXNpb24ubW9iaSIsIF0sCiAgICAgfSwKICAgICAiTUVTU0FH
RV9SVUxFUyI6IHsKICAgICAgICAgIkNocm9taXVtUHVibGljQXBpIjogWyAiUGxlYXNlIHdhaXQg
Zm9yIGFwcHJvdmFsIGZyb20gZmlzaGRAY2hyb21pdW0ub3JnIGJlZm9yZSBzdWJtaXR0aW5nICIK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2Vy
dmVyX3Byb2Nlc3MucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3NlcnZlcl9wcm9jZXNzLnB5CmluZGV4IGE2NWQzZDMuLjhmOWExMGYgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJv
Y2Vzcy5weQpAQCAtMTc5LDcgKzE3OSw3IEBAIGNsYXNzIFNlcnZlclByb2Nlc3M6CiAgICAgICAg
IHJldHVybiBzZWxmLl9yZWFkKGRlYWRsaW5lLCByZXRyaWV2ZV9ieXRlc19mcm9tX3N0ZG91dF9i
dWZmZXIpCiAKICAgICBkZWYgX2NoZWNrX2Zvcl9jcmFzaChzZWxmLCB3YWl0X2Zvcl9jcmFzaF9y
ZXBvcnRlcj1UcnVlKToKLSAgICAgICAgaWYgc2VsZi5wb2xsKCkgIT0gTm9uZToKKyAgICAgICAg
aWYgc2VsZi5fcHJvYy5wb2xsKCkgIT0gTm9uZToKICAgICAgICAgICAgIHNlbGYuc2V0X2NyYXNo
ZWQoVHJ1ZSwgd2FpdF9mb3JfY3Jhc2hfcmVwb3J0ZXIpCiAgICAgICAgICAgICBzZWxmLmhhbmRs
ZV9pbnRlcnJ1cHQoKQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL1RhcmdldC5wcmkgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL1RhcmdldC5wcmkKaW5kZXggOTY5M2ZiMi4uZTQ1ZDE4NyAxMDA2NDQKLS0tIGEvVG9vbHMv
V2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9UYXJnZXQucHJpCisrKyBiL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvVGFyZ2V0LnByaQpAQCAtNjIsOCArNjIsNyBA
QCBDT05GSUcgKz0gcGx1Z2luIHF0d2Via2l0CiBJTkNMVURFUEFUSCArPSBcCiAgICAgJCRQV0Qv
Li4gXAogICAgICQkUFdEL0JpbmRpbmdzIFwKLSAgICAkJHtST09UX1dFQktJVF9ESVJ9L1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvanMgXAotICAgICQke1JPT1RfV0VCS0lUX0RJUn0vU291cmNlL1dl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydAorICAgICQke1JPT1RfV0VCS0lUX0RJUn0vU291cmNlL1dl
YkNvcmUvdGVzdGluZy9qcwogCiBQUkVGSVhfSEVBREVSID0gJCRQV0QvLi4vV2ViS2l0VGVzdFJ1
bm5lclByZWZpeC5oCiAqLWcrKyo6UU1BS0VfQ1hYRkxBR1MgKz0gIi1pbmNsdWRlICQkUFJFRklY
X0hFQURFUiIKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MgYi9Ub29scy9n
dGsvZ2VuZXJhdGUtZ3RrZG9jCmluZGV4IDc5NzFjMGYuLjkyMTlmZGEgMTAwNzU1Ci0tLSBhL1Rv
b2xzL2d0ay9nZW5lcmF0ZS1ndGtkb2MKKysrIGIvVG9vbHMvZ3RrL2dlbmVyYXRlLWd0a2RvYwpA
QCAtNjAsNyArNjAsNiBAQCBkZWYgZ2V0X3dlYmtpdDJfb3B0aW9ucygpOgogICAgICAgICAgICAg
ICAgICAgICcgLUknICsgc3JjX3BhdGgoKSwKICAgICAgICAgJ2lnbm9yZWRfZmlsZXMnOiBnbG9i
Lmdsb2Ioc3JjX3BhdGgoJypQcml2YXRlLmgnKSkgKyBcCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgZ2xvYi5nbG9iKHNyY19wYXRoKCdQYWdlQ2xpZW50SW1wbC4qJykpICsgXAotICAgICAgICAg
ICAgICAgICAgICAgICAgIGdsb2IuZ2xvYihzcmNfcGF0aCgnV2ViS2l0VUlDbGllbnQuKicpKSAr
IFwKICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iLmdsb2Ioc3JjX3BhdGgoJ3Rlc3RzLyou
aCcpKQogICAgIH0pCiAgICAgcmV0dXJuIChjb21tb24uYnVpbGRfcGF0aCgnU291cmNlJywgJ1dl
YktpdDInLCAnd2Via2l0Mmd0ay0zLjAucGMnKSwgb3B0aW9ucykKZGlmZiAtLWdpdCBhL1Rvb2xz
L3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvd2Via2l0Mi5wcmYgYi9Ub29scy9xbWFrZS9ta3NwZWNz
L2ZlYXR1cmVzL3dlYmtpdDIucHJmCmluZGV4IGZjYzcwYmEuLmJmNzNlMzMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL3FtYWtlL21rc3BlY3MvZmVhdHVyZXMvd2Via2l0Mi5wcmYKKysrIGIvVG9vbHMvcW1h
a2UvbWtzcGVjcy9mZWF0dXJlcy93ZWJraXQyLnByZgpAQCAtNjQsOSArNjQsNiBAQCBXRUJLSVQy
X0lOQ0xVREVQQVRIID0gXAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1dlYlByb2Nlc3MvcXQg
XAogICAgICQkU09VUkNFX0RJUi9XZWJLaXQyL1BsdWdpblByb2Nlc3MKIAotIyBUaGUgV2ViS2l0
MiBRdCBBUElzIGRlcGVuZCBvbiBxd2Via2l0Z2xvYmFsLmgsIHdoaWNoIGxpdmVzIGluIFdlYktp
dAotV0VCS0lUMl9JTkNMVURFUEFUSCArPSAkJHtST09UX1dFQktJVF9ESVJ9L1NvdXJjZS9XZWJL
aXQvcXQvQXBpCi0KIElOQ0xVREVQQVRIID0gJCRXRUJLSVQyX0lOQ0xVREVQQVRIICQkV0VCS0lU
Ml9HRU5FUkFURURfU09VUkNFU19ESVIgJCRJTkNMVURFUEFUSAogCiBuZWVkVG9MaW5rTGlicmFy
eShXZWJLaXQyKSB7CmRpZmYgLS1naXQgYS9XZWJzaXRlcy9idWdzLndlYmtpdC5vcmcvQ2hhbmdl
TG9nIGIvV2Vic2l0ZXMvYnVncy53ZWJraXQub3JnL0NoYW5nZUxvZwppbmRleCA3MGU4N2M2Li4y
ODlkYmE1IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9idWdzLndlYmtpdC5vcmcvQ2hhbmdlTG9nCisr
KyBiL1dlYnNpdGVzL2J1Z3Mud2Via2l0Lm9yZy9DaGFuZ2VMb2cKQEAgLTEsMjQgKzEsMyBAQAot
MjAxMS0xMi0xMyAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgotCi0gICAgICAgIEZp
eCBidWcgaW4gdGhlIGNvZGUgcmV2aWV3IHRvb2wgd2hlbiByZWFkZGluZyBhIGRpc2NhcmRlZCBj
b21tZW50Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NDQ1MAotCi0gICAgICAgIFJldmlld2VkIGJ5IEFkYW0gQmFydGguCi0KLSAgICAgICAgSWYgeW91
IGRpc2NhcmQgYSBjb21tZW50IHRoYXQgaGFzIGEgY29ycmVzcG9uZGluZyBwcmV2aW91c0NvbW1l
bnQsCi0gICAgICAgIHRoZW4gd2Ugd291bGQgaW5jb3JyZWN0bHkgcmVtb3ZlIHRoZSBjb21tZW50
IGJhc2VsaW5lLiBTbywgdGhlIG5leHQKLSAgICAgICAgdGltZSB5b3UgYWRkZWQgYSBjb21tZW50
IGJ5IGNsaWNraW5nIG9uIHRoZSBwcmV2aW91c0NvbW1lbnQsIHdlCi0gICAgICAgIHdvdWxkIGdl
dCB1bmRlZmluZWQgYXMgdGhlIHN0YXJ0IGxpbmUgZm9yIHRoZSBuZXcgY29tbWVudC4KLQotICAg
ICAgICBBbGwgb2YgdGhpcyB3b3JrcyBmaW5lIHVudGlsIHlvdSB0cnkgdG8gcmVzdG9yZSB0aGUg
Y29tbWVudCBmcm9tCi0gICAgICAgIGxvY2FsU3RvcmFnZSwgYXQgd2hpY2ggcG9pbnQgd2UgdGhy
b3cgYW4gZXJyb3IgYmVjYXVzZSB0aGUgc3RhcnQKLSAgICAgICAgbGluZSBpcyB1bmRlZmluZWQu
Ci0KLSAgICAgICAgQWxzbyBhZGRlZCBzb21lIGZhaWxzYWZlcyB0byBiZXR0ZXIgaGFuZGxlIHRo
ZSBjYXNlIG9mIGNvcnJ1cHRlZCBjb21tZW50cy4KLQotICAgICAgICAqIGNvZGUtcmV2aWV3LXRl
c3QuaHRtbDoKLSAgICAgICAgKiBjb2RlLXJldmlldy5qczoKLQogMjAxMS0xMS0xNSAgVG9ueSBD
aGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIHNldCBhIG1heC13aWR0aCBvbiB0
aGUgY29kZXJldmlldyBvdmVyYWxsIGNvbW1lbnRzIHRleHRhcmVhCmRpZmYgLS1naXQgYS9XZWJz
aXRlcy9idWdzLndlYmtpdC5vcmcvY29kZS1yZXZpZXctdGVzdC5odG1sIGIvV2Vic2l0ZXMvYnVn
cy53ZWJraXQub3JnL2NvZGUtcmV2aWV3LXRlc3QuaHRtbAppbmRleCBlNDZjZTY0Li40ODM0MmM2
IDEwMDY0NAotLS0gYS9XZWJzaXRlcy9idWdzLndlYmtpdC5vcmcvY29kZS1yZXZpZXctdGVzdC5o
dG1sCisrKyBiL1dlYnNpdGVzL2J1Z3Mud2Via2l0Lm9yZy9jb2RlLXJldmlldy10ZXN0Lmh0bWwK
QEAgLTEsMTkgKzEsMTIgQEAKLTxkaXY+VGVzdHMgZm9yIHNvbWUgb2YgdGhlIGVhc2lseSB1bml0
dGVzdGFibGUgcGFydHMgb2YgY29kZS1yZXZpZXcuanMuIFlvdSBzaG91bGQgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBsaW5lcy48L2Rpdj4KKzxkaXY+VGVzdHMgZm9yIHNvbWUgb2YgdGhlIGVhc2ls
eSB1bml0dGVzdGFibGUgcGFydHMgb2YgY29kZS1yZXZpZXcuanMuIFlvdSBzaG91bGQgc2VlIGEg
c2VyaWVzIG9mICJQQVNTRUQiIGxpbmVzLjwvZGl2PgogPGRpdj5GSVhNRTogUnVuIHRoZXNlIGFz
IHBhcnQgb2YgdGhlIGxheW91dCB0ZXN0IHN1aXRlPzwvZGl2PgogCi08c2NyaXB0PgotQ09ERV9S
RVZJRVdfVU5JVFRFU1QgPSB0cnVlOwotCi13aW5kb3cub25lcnJvciA9IGZ1bmN0aW9uKGVycm9y
TXNnLCB1cmwsIGxpbmVOdW1iZXIpIHsKLSAgbG9nKCdGQUlMOiBSZWNlaXZlZCBhbiBlcnJvciBh
dCBsaW5lICcgKyBsaW5lTnVtYmVyKTsKLSAgcmV0dXJuIGZhbHNlOwotfQotPC9zY3JpcHQ+Cis8
c2NyaXB0PkNPREVfUkVWSUVXX1VOSVRURVNUID0gdHJ1ZTwvc2NyaXB0PgogPHNjcmlwdCBzcmM9
Imh0dHBzOi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvanF1ZXJ5LzEuNC4yL2pxdWVy
eS5taW4uanMiPjwvc2NyaXB0PiAKIDxzY3JpcHQgc3JjPSJjb2RlLXJldmlldy5qcyI+PC9zY3Jp
cHQ+CiA8cHJlIGlkPSJvdXRwdXQiPjwvcHJlPgotPGRpdiBpZD0iZGlmZi1jb250ZW50Ij48L2Rp
dj4KIDxzY3JpcHQ+CisKIGZ1bmN0aW9uIGluaGVyaXRzKGNoaWxkQ29uc3RydWN0b3IsIHBhcmVu
dENvbnN0cnVjdG9yKSB7CiAgIGZ1bmN0aW9uIHRlbXBDb25zdHJ1Y3RvcigpIHt9OwogICB0ZW1w
Q29uc3RydWN0b3IucHJvdG90eXBlID0gcGFyZW50Q29uc3RydWN0b3IucHJvdG90eXBlOwpAQCAt
NzYsMTggKzY5LDExIEBAIGZ1bmN0aW9uIGxvZyhtc2cpIHsKICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnb3V0cHV0JykuaW5uZXJIVE1MICs9IG1zZyArICdcblxuJzsKIH0KIAotZnVuY3Rp
b24gQVNTRVJUKG1zZywgYXNzZXJ0aW9uKSB7Ci0gICAgaWYgKGFzc2VydGlvbikKLSAgICAgICAg
bG9nKCdQQVNTJyk7Ci0gICAgZWxzZQotICAgICAgICBsb2coJ0ZBSUw6ICcgKyBtc2cpOwotfQot
CiBmdW5jdGlvbiBBU1NFUlRfRVFVQUwoYWN0dWFsLCBleHBlY3RlZCkgewogICAgIGlmIChhY3R1
YWwgPT0gZXhwZWN0ZWQpCi0gICAgICAgIGxvZygnUEFTUycpOworICAgICAgICBsb2coJ1BBU1NF
RCcpOwogICAgIGVsc2UKLSAgICAgICAgbG9nKCdGQUlMOlxuZ290OlxuJyArIGFjdHVhbCArICdc
bmV4cGVjdGVkOlxuJyArIGV4cGVjdGVkICsgJycpOworICAgICAgICBsb2coJ0ZBSUxFRDpcbmdv
dDpcbicgKyBhY3R1YWwgKyAnXG5leHBlY3RlZDpcbicgKyBleHBlY3RlZCArICcnKTsKIH0KIAog
dmFyIGxpbmtzID0gdHJhY0xpbmtzKCdmb28vYmFyL2Jhei5jcHAnLCAnJyk7CkBAIC0xODIsODAg
KzE2OCw0IEBAIHZhciBjb21tZW50cyA9IG5ldyBNb2NrRHJhZnRDb21tZW50U2F2ZXIoJzEnLCBs
cykuc2F2ZWRfY29tbWVudHMoKS5jb21tZW50czsKIEFTU0VSVF9FUVVBTChscy5sb2dfc3RyaW5n
KCksICdnZXRJdGVtOmRyYWZ0LWNvbW1lbnRzLWZvci1hdHRhY2htZW50LTFcbnJlbW92ZUl0ZW06
ZHJhZnQtY29tbWVudHMtZm9yLWF0dGFjaG1lbnQtMScpOwogCiAKLWZ1bmN0aW9uIHN0cmlwQm9y
bk9uKGpzb24pIHsKLSAgcmV0dXJuIGpzb24ucmVwbGFjZSgvXCJib3JuXC1vblwiXDpcZCssLywg
IiIpOwotfQotCi1mdW5jdGlvbiBzdHJpcHBlZFNhdmVkQ29tbWVudHMoKSB7Ci0gIHJldHVybiBz
dHJpcEJvcm5Pbihsb2NhbFN0b3JhZ2VbZ19kcmFmdENvbW1lbnRTYXZlci5sb2NhbFN0b3JhZ2VL
ZXkoKV0pOwotfQotCi1mdW5jdGlvbiBzeW5jU2xpZGVVcCh0eXBlLCBoYW5kbGVyKSB7Ci0gIGhh
bmRsZXIuY2FsbCh0aGlzKTsKLX0KLQotZnVuY3Rpb24gdGVzdFJlYWRkRGlzY2FyZGVkQ29tbWVu
dFdpdGhQcmV2aW91c0NvbW1lbnQoKSB7Ci0gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaWZm
LWNvbnRlbnQnKS5pbm5lckhUTUwgPQotICAgICAgJzxkaXYgY2xhc3M9IkZpbGVEaWZmIj4nICsK
LSAgICAgICAgJzxoMT48YSBocmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Jyb3dzZXIvdHJ1
bmsvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIj5Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2c8L2E+
PC9oMT4nICsKLSAgICAgICAgJzxkaXYgY2xhc3M9IkRpZmZTZWN0aW9uIj4nICsKLSAgICAgICAg
ICAnPGRpdiBjbGFzcz0iRGlmZkJsb2NrIj4nICsKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJE
aWZmQmxvY2tQYXJ0IGFkZCI+JyArCi0gICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJMaW5lIExp
bmVDb250YWluZXIgYWRkIj4nICsKLSAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImZyb20g
bGluZU51bWJlciI+Jm5ic3A7PC9zcGFuPjxzcGFuIGNsYXNzPSJ0byBsaW5lTnVtYmVyIj4xPC9z
cGFuPjxzcGFuIGNsYXNzPSJ0ZXh0Ij5maXJzdCBkaWZmIGJsb2NrIGZpcnN0IGxpbmU8L3NwYW4+
JyArCi0gICAgICAgICAgICAgICc8L2Rpdj4nICsKLSAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9
IkxpbmUgTGluZUNvbnRhaW5lciBhZGQiPicgKwotICAgICAgICAgICAgICAgICc8c3BhbiBjbGFz
cz0iZnJvbSBsaW5lTnVtYmVyIj4mbmJzcDs8L3NwYW4+PHNwYW4gY2xhc3M9InRvIGxpbmVOdW1i
ZXIiPjI8L3NwYW4+PHNwYW4gY2xhc3M9InRleHQiPjwvc3Bhbj4nICsKLSAgICAgICAgICAgICAg
JzwvZGl2PicgKwotICAgICAgICAgICAgJzwvZGl2PicgKwotICAgICAgICAgICAgJzxkaXYgY2xh
c3M9ImNsZWFyX2Zsb2F0Ij48L2Rpdj4nICsKLSAgICAgICAgICAnPC9kaXY+JyArCi0gICAgICAg
ICAgJzxkaXYgY2xhc3M9IkRpZmZCbG9jayI+JyArCi0gICAgICAgICAgICAnPGRpdiBjbGFzcz0i
RGlmZkJsb2NrUGFydCBzaGFyZWQiPicgKwotICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iTGlu
ZSBMaW5lQ29udGFpbmVyIj4nICsKLSAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImZyb20g
bGluZU51bWJlciI+MTwvc3Bhbj48c3BhbiBjbGFzcz0idG8gbGluZU51bWJlciI+MTI8L3NwYW4+
PHNwYW4gY2xhc3M9InRleHQiPnNlY29uZCBkaWZmIGJsb2NrIGZpcnN0IGxpbmU8L3NwYW4+JyAr
Ci0gICAgICAgICAgICAgICc8L2Rpdj4nICsKLSAgICAgICAgICAgICAgJzwvZGl2PjxkaXYgY2xh
c3M9ImNsZWFyX2Zsb2F0Ij4nICsKLSAgICAgICAgICAgICc8L2Rpdj4nICsKLSAgICAgICAgICAn
PC9kaXY+JyArCi0gICAgICAgICc8L2Rpdj4nICsKLSAgICAgICc8L2Rpdj4nOwotCi0gIGVyYXNl
RHJhZnRDb21tZW50cygpOwotICBjcmF3bERpZmYoKTsKLSAgYXBwZW5kVG9vbGJhcigpOwotCi0g
IHZhciBsaW5lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xpbmUwJykKLSAgdmFyIGF1dGhv
ciA9ICJvamFuQGNocm9taXVtLm9yZyI7Ci0gIHZhciBjb21tZW50X3RleHQgPSAiVGhpcyBjaGFu
Z2Ugc3V4LiI7Ci0gIGFkZFByZXZpb3VzQ29tbWVudChsaW5lLCBhdXRob3IsIGNvbW1lbnRfdGV4
dCk7Ci0gIHZhciBwcmV2aW91c19jb21tZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnBy
ZXZpb3VzQ29tbWVudCcpOwotICBBU1NFUlQoIkxpbmUgd2l0aCBvbmx5IGEgcHJldmlvdXMgY29t
bWVudCBzaG91bGQgbm90IGhhdmUgJ2RhdGEtaGFzLWNvbW1lbnQnIGF0dHJpYnV0ZS4iLCAhbGlu
ZS5nZXRBdHRyaWJ1dGUoJ2RhdGEtaGFzLWNvbW1lbnQnKSk7Ci0KLSAgdmFyIG5ld19jb21tZW50
ID0gYWRkQ29tbWVudEZpZWxkKHByZXZpb3VzX2NvbW1lbnQpOwotICBuZXdfY29tbWVudC5maW5k
KCd0ZXh0YXJlYScpLnZhbCgiZHVtbXkgY29udGVudCIpOwotICB2YXIgZnJvemVuX2NvbW1lbnQg
PSBhY2NlcHRDb21tZW50KG5ld19jb21tZW50KTsKLQotICBBU1NFUlRfRVFVQUwoZG9jdW1lbnQu
cXVlcnlTZWxlY3RvckFsbCgnLmNvbW1lbnQnKS5sZW5ndGgsIDEpOwotICBBU1NFUlRfRVFVQUwo
c3RyaXBwZWRTYXZlZENvbW1lbnRzKCksICd7ImNvbW1lbnRzIjpbeyJzdGFydF9saW5lX2lkIjoi
bGluZTAiLCJlbmRfbGluZV9pZCI6ImxpbmUwIiwiY29udGVudHMiOiJkdW1teSBjb250ZW50In1d
LCJvdmVyYWxsLWNvbW1lbnRzIjoiIn0nKTsKLQotICB1bmZyZWV6ZUNvbW1lbnQoZnJvemVuX2Nv
bW1lbnQpOwotICAvLyBUaGlzIGlzIGEgaGFjayB0byBtYWtlIHNsaWRlVXAgc3luY2hyb25vdXMg
c28gdGhhdCB3ZSBjYW4ga2VlcCB0aGlzIHRlc3QgZnJvbSBuZWVkaW5nIHRvIGJlIGFzeW5jLgot
ICBqUXVlcnkuZm4uc2xpZGVVcCA9IHN5bmNTbGlkZVVwOwotICBkaXNjYXJkQ29tbWVudChuZXdf
Y29tbWVudCk7Ci0KLSAgQVNTRVJUKCdUaGVyZSBzaG91bGQgYmUgbm8gZHJhZnQgY29tbWVudHMu
JywgIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jb21tZW50JykpOwotICBBU1NFUlRfRVFVQUwo
c3RyaXBwZWRTYXZlZENvbW1lbnRzKCksICd7ImNvbW1lbnRzIjpbXSwib3ZlcmFsbC1jb21tZW50
cyI6IiJ9Jyk7Ci0gIEFTU0VSVCgiTGluZSB3aXRoIG9ubHkgYSBwcmV2aW91cyBjb21tZW50IHNo
b3VsZCBub3QgaGF2ZSAnZGF0YS1oYXMtY29tbWVudCcgYXR0cmlidXRlLiIsICFsaW5lLmdldEF0
dHJpYnV0ZSgnZGF0YS1oYXMtY29tbWVudCcpKTsKLQotICBuZXdfY29tbWVudCA9IGFkZENvbW1l
bnRGaWVsZChwcmV2aW91c19jb21tZW50KTsKLSAgbmV3X2NvbW1lbnQuZmluZCgndGV4dGFyZWEn
KS52YWwoImR1bW15IGNvbnRlbnQiKTsKLSAgYWNjZXB0Q29tbWVudChuZXdfY29tbWVudCk7Ci0K
LSAgQVNTRVJUX0VRVUFMKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jb21tZW50JykubGVu
Z3RoLCAxKTsKLSAgQVNTRVJUX0VRVUFMKHN0cmlwcGVkU2F2ZWRDb21tZW50cygpLCAneyJjb21t
ZW50cyI6W3sic3RhcnRfbGluZV9pZCI6ImxpbmUwIiwiZW5kX2xpbmVfaWQiOiJsaW5lMCIsImNv
bnRlbnRzIjoiZHVtbXkgY29udGVudCJ9XSwib3ZlcmFsbC1jb21tZW50cyI6IiJ9Jyk7Ci0KLSAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpZmYtY29udGVudCcpLmlubmVySFRNTCA9ICcnOwot
fQotdGVzdFJlYWRkRGlzY2FyZGVkQ29tbWVudFdpdGhQcmV2aW91c0NvbW1lbnQoKTsKIDwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvV2Vic2l0ZXMvYnVncy53ZWJraXQub3JnL2NvZGUtcmV2aWV3Lmpz
IGIvV2Vic2l0ZXMvYnVncy53ZWJraXQub3JnL2NvZGUtcmV2aWV3LmpzCmluZGV4IDc4MjIzYmQu
LmJhYzIyMjQgMTAwNjQ0Ci0tLSBhL1dlYnNpdGVzL2J1Z3Mud2Via2l0Lm9yZy9jb2RlLXJldmll
dy5qcworKysgYi9XZWJzaXRlcy9idWdzLndlYmtpdC5vcmcvY29kZS1yZXZpZXcuanMKQEAgLTE2
NSwyMCArMTY1LDEwIEBAIHZhciBDT0RFX1JFVklFV19VTklUVEVTVDsKICAgICBnX2Rpc3BsYXll
ZF9kcmFmdF9jb21tZW50cyA9IHRydWU7CiAKICAgICB2YXIgY29tbWVudHMgPSBnX2RyYWZ0Q29t
bWVudFNhdmVyLnNhdmVkX2NvbW1lbnRzKCk7Ci0gICAgdmFyIGVycm9ycyA9IFtdOwogICAgICQo
Y29tbWVudHMuY29tbWVudHMpLmVhY2goZnVuY3Rpb24oKSB7Ci0gICAgICB0cnkgewotICAgICAg
ICBhZGREcmFmdENvbW1lbnQodGhpcy5zdGFydF9saW5lX2lkLCB0aGlzLmVuZF9saW5lX2lkLCB0
aGlzLmNvbnRlbnRzKTsKLSAgICAgIH0gY2F0Y2ggKGUpIHsKLSAgICAgICAgZXJyb3JzLnB1c2go
eydzdGFydCc6IHRoaXMuc3RhcnRfbGluZV9pZCwgJ2VuZCc6IHRoaXMuZW5kX2xpbmVfaWQsICdj
b250ZW50cyc6IHRoaXMuY29udGVudHN9KTsKLSAgICAgIH0KKyAgICAgIGFkZERyYWZ0Q29tbWVu
dCh0aGlzLnN0YXJ0X2xpbmVfaWQsIHRoaXMuZW5kX2xpbmVfaWQsIHRoaXMuY29udGVudHMpOwog
ICAgIH0pOwogICAgIAotICAgIGlmIChlcnJvcnMubGVuZ3RoKSB7Ci0gICAgICBjb25zb2xlLmxv
ZygnRFJBRlQgQ09NTUVOVFMgV0lUSCBFUlJPUlM6JywgSlNPTi5zdHJpbmdpZnkoZXJyb3JzKSk7
Ci0gICAgICBhbGVydCgnU29tZSBkcmFmdCBjb21tZW50cyBmYWlsZWQgdG8gYmUgYWRkZWQuIFNl
ZSB0aGUgY29uc29sZSB0byBtYW51YWxseSByZXNvbHZlLicpOwotICAgIH0KLSAgICAKICAgICB2
YXIgb3ZlcmFsbF9jb21tZW50cyA9IGNvbW1lbnRzWydvdmVyYWxsLWNvbW1lbnRzJ107CiAgICAg
aWYgKG92ZXJhbGxfY29tbWVudHMpIHsKICAgICAgIG9wZW5PdmVyYWxsQ29tbWVudHMoKTsKQEAg
LTE5Miw2ICsxODIsOSBAQCB2YXIgQ09ERV9SRVZJRVdfVU5JVFRFU1Q7CiAgICAgdGhpcy5fc2F2
ZV9jb21tZW50cyA9IHRydWU7CiAgIH0KIAorICBpZiAoQ09ERV9SRVZJRVdfVU5JVFRFU1QpCisg
ICAgd2luZG93WydEcmFmdENvbW1lbnRTYXZlciddID0gRHJhZnRDb21tZW50U2F2ZXI7CisKICAg
RHJhZnRDb21tZW50U2F2ZXIucHJvdG90eXBlLl9qc29uID0gZnVuY3Rpb24oKSB7CiAgICAgdmFy
IGNvbW1lbnRzID0gJCgnLmNvbW1lbnQnKTsKICAgICB2YXIgY29tbWVudF9zdG9yZSA9IFtdOwpA
QCAtMjE3LDEyICsyMTAsOCBAQCB2YXIgQ09ERV9SRVZJRVdfVU5JVFRFU1Q7CiAgICAgcmV0dXJu
IEpTT04uc3RyaW5naWZ5KHsnYm9ybi1vbic6IERhdGUubm93KCksICdjb21tZW50cyc6IGNvbW1l
bnRfc3RvcmUsICdvdmVyYWxsLWNvbW1lbnRzJzogb3ZlcmFsbF9jb21tZW50c30pOwogICB9CiAg
IAotICBEcmFmdENvbW1lbnRTYXZlci5wcm90b3R5cGUubG9jYWxTdG9yYWdlS2V5ID0gZnVuY3Rp
b24oKSB7Ci0gICAgcmV0dXJuIERyYWZ0Q29tbWVudFNhdmVyLl9rZXlQcmVmaXggKyB0aGlzLl9h
dHRhY2htZW50X2lkOwotICB9Ci0gIAogICBEcmFmdENvbW1lbnRTYXZlci5wcm90b3R5cGUuc2F2
ZWRfY29tbWVudHMgPSBmdW5jdGlvbigpIHsKLSAgICB2YXIgc2VyaWFsaXplZF9jb21tZW50cyA9
IHRoaXMuX2xvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMubG9jYWxTdG9yYWdlS2V5KCkpOworICAg
IHZhciBzZXJpYWxpemVkX2NvbW1lbnRzID0gdGhpcy5fbG9jYWxTdG9yYWdlLmdldEl0ZW0oRHJh
ZnRDb21tZW50U2F2ZXIuX2tleVByZWZpeCArIHRoaXMuX2F0dGFjaG1lbnRfaWQpOwogICAgIGlm
ICghc2VyaWFsaXplZF9jb21tZW50cykKICAgICAgIHJldHVybiBbXTsKIApAQCAtMjMzLDEyICsy
MjIsMTcgQEAgdmFyIENPREVfUkVWSUVXX1VOSVRURVNUOwogICAgICAgdGhpcy5fZXJhc2VfY29y
cnVwdF9jb21tZW50cygpOwogICAgICAgcmV0dXJuIHt9OwogICAgIH0KLQorICAgIAogICAgIHZh
ciBpbmRpdmlkdWFsX2NvbW1lbnRzID0gY29tbWVudHMuY29tbWVudHM7Ci0gICAgaWYgKCFjb21t
ZW50cyB8fCAhY29tbWVudHNbJ2Jvcm4tb24nXSB8fCAhaW5kaXZpZHVhbF9jb21tZW50cyB8fCAo
aW5kaXZpZHVhbF9jb21tZW50cy5sZW5ndGggJiYgIWluZGl2aWR1YWxfY29tbWVudHNbMF0uY29u
dGVudHMpKSB7CisgICAgaWYgKGNvbW1lbnRzICYmICFpbmRpdmlkdWFsX2NvbW1lbnRzLmxlbmd0
aCkKKyAgICAgIHJldHVybiBjb21tZW50czsKKyAgICAKKyAgICAvLyBTYW5pdHkgY2hlY2sgY29t
bWVudHMgYXJlIGFzIGV4cGVjdGVkLgorICAgIGlmICghY29tbWVudHMgfHwgIWluZGl2aWR1YWxf
Y29tbWVudHNbMF0uY29udGVudHMpIHsKICAgICAgIHRoaXMuX2VyYXNlX2NvcnJ1cHRfY29tbWVu
dHMoKTsKICAgICAgIHJldHVybiB7fTsKLSAgICB9ICAgIAorICAgIH0KKyAgICAKICAgICByZXR1
cm4gY29tbWVudHM7CiAgIH0KICAgCkBAIC0yNTIsNyArMjQ2LDcgQEAgdmFyIENPREVfUkVWSUVX
X1VOSVRURVNUOwogICAgIGlmICghdGhpcy5fc2F2ZV9jb21tZW50cykKICAgICAgIHJldHVybjsK
IAotICAgIHZhciBrZXkgPSB0aGlzLmxvY2FsU3RvcmFnZUtleSgpOworICAgIHZhciBrZXkgPSBE
cmFmdENvbW1lbnRTYXZlci5fa2V5UHJlZml4ICsgdGhpcy5fYXR0YWNobWVudF9pZDsKICAgICB2
YXIgdmFsdWUgPSB0aGlzLl9qc29uKCk7CiAKICAgICBpZiAodGhpcy5fYXR0ZW1wdFRvV3JpdGUo
a2V5LCB2YWx1ZSkpCkBAIC0yOTIsNyArMjg2LDcgQEAgdmFyIENPREVfUkVWSUVXX1VOSVRURVNU
OwogICBEcmFmdENvbW1lbnRTYXZlci5fa2V5UHJlZml4ID0gJ2RyYWZ0LWNvbW1lbnRzLWZvci1h
dHRhY2htZW50LSc7CiAKICAgRHJhZnRDb21tZW50U2F2ZXIucHJvdG90eXBlLmVyYXNlID0gZnVu
Y3Rpb24oKSB7Ci0gICAgdGhpcy5fbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5sb2NhbFN0
b3JhZ2VLZXkoKSk7CisgICAgdGhpcy5fbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oRHJhZnRDb21t
ZW50U2F2ZXIuX2tleVByZWZpeCArIHRoaXMuX2F0dGFjaG1lbnRfaWQpOwogICB9CiAKICAgRHJh
ZnRDb21tZW50U2F2ZXIucHJvdG90eXBlLl9lcmFzZU9sZENvbW1lbnRzRm9yQWxsUmV2aWV3cyA9
IGZ1bmN0aW9uKCkgewpAQCAtMzQ4LDkgKzM0Miw5IEBAIHZhciBDT0RFX1JFVklFV19VTklUVEVT
VDsKICAgfQogICAKICAgZnVuY3Rpb24gdW5mcmVlemVDb21tZW50Rm9yKGxpbmUpIHsKLSAgICAv
LyBGSVhNRTogVGhpcyBxdWVyeSBpcyBvdmVybHkgY29tcGxleCBiZWNhdXNlIHdlIHBsYWNlIGNv
bW1lbnQgYmxvY2tzCi0gICAgLy8gYWZ0ZXIgTGluZXMuICBJbnN0ZWFkLCBjb21tZW50IGJsb2Nr
cyBzaG91bGQgYmUgY2hpbGRyZW4gb2YgTGluZXMuCi0gICAgZmluZENvbW1lbnRQb3NpdGlvbkZv
cihsaW5lKS5uZXh0KCkubmV4dCgpLmZpbHRlcignLmZyb3plbkNvbW1lbnQnKS5lYWNoKGhhbmRs
ZVVuZnJlZXplQ29tbWVudCk7CisgICAgICAvLyBGSVhNRTogVGhpcyBxdWVyeSBpcyBvdmVybHkg
Y29tcGxleCBiZWNhdXNlIHdlIHBsYWNlIGNvbW1lbnQgYmxvY2tzCisgICAgICAvLyBhZnRlciBM
aW5lcy4gIEluc3RlYWQsIGNvbW1lbnQgYmxvY2tzIHNob3VsZCBiZSBjaGlsZHJlbiBvZiBMaW5l
cy4KKyAgICAgIGZpbmRDb21tZW50UG9zaXRpb25Gb3IobGluZSkubmV4dCgpLm5leHQoKS5maWx0
ZXIoJy5mcm96ZW5Db21tZW50JykuZWFjaChoYW5kbGVVbmZyZWV6ZUNvbW1lbnQpOwogICB9CiAK
ICAgZnVuY3Rpb24gY3JlYXRlQ29tbWVudEZvcihsaW5lKSB7CkBAIC0zNzUsMTQgKzM2OSwxMyBA
QCB2YXIgQ09ERV9SRVZJRVdfVU5JVFRFU1Q7CiAgICAgY29tbWVudF9ibG9jay5oaWRlKCkuc2xp
ZGVEb3duKCdmYXN0JywgZnVuY3Rpb24oKSB7CiAgICAgICAkKHRoaXMpLmNoaWxkcmVuKCd0ZXh0
YXJlYScpLmZvY3VzKCk7CiAgICAgfSk7Ci0gICAgcmV0dXJuIGNvbW1lbnRfYmxvY2s7CiAgIH0K
IAogICBmdW5jdGlvbiBhZGRDb21tZW50RmllbGQoY29tbWVudF9ibG9jaykgewogICAgIHZhciBp
ZCA9ICQoY29tbWVudF9ibG9jaykuYXR0cignZGF0YS1jb21tZW50LWZvcicpOwogICAgIGlmICgh
aWQpCiAgICAgICBpZCA9IGNvbW1lbnRfYmxvY2suaWQ7Ci0gICAgcmV0dXJuIGFkZENvbW1lbnRG
b3IoJCgnIycgKyBpZCkpOworICAgIGFkZENvbW1lbnRGb3IoJCgnIycgKyBpZCkpOwogICB9CiAg
IAogICBmdW5jdGlvbiBoYW5kbGVBZGRDb21tZW50RmllbGQoKSB7CkBAIC0zOTAsMTMgKzM4Mywx
MyBAQCB2YXIgQ09ERV9SRVZJRVdfVU5JVFRFU1Q7CiAgIH0KIAogICBmdW5jdGlvbiBhZGRQcmV2
aW91c0NvbW1lbnQobGluZSwgYXV0aG9yLCBjb21tZW50X3RleHQpIHsKLSAgICB2YXIgbGluZV9p
ZCA9ICQobGluZSkuYXR0cignaWQnKTsKKyAgICB2YXIgbGluZV9pZCA9IGxpbmUuYXR0cignaWQn
KTsKICAgICB2YXIgY29tbWVudF9ibG9jayA9ICQoJzxkaXYgZGF0YS1jb21tZW50LWZvcj0iJyAr
IGxpbmVfaWQgKyAnIiBjbGFzcz0icHJldmlvdXNDb21tZW50Ij48L2Rpdj4nKTsKICAgICB2YXIg
YXV0aG9yX2Jsb2NrID0gJCgnPGRpdiBjbGFzcz0iYXV0aG9yIj48L2Rpdj4nKS50ZXh0KGF1dGhv
ciArICc6Jyk7CiAgICAgdmFyIHRleHRfYmxvY2sgPSAkKCc8ZGl2IGNsYXNzPSJjb250ZW50Ij48
L2Rpdj4nKS50ZXh0KGNvbW1lbnRfdGV4dCk7CiAgICAgY29tbWVudF9ibG9jay5hcHBlbmQoYXV0
aG9yX2Jsb2NrKS5hcHBlbmQodGV4dF9ibG9jaykuZWFjaChob3ZlcmlmeSkuY2xpY2soaGFuZGxl
QWRkQ29tbWVudEZpZWxkKTsKLSAgICBhZGREYXRhQ29tbWVudEJhc2VMaW5lKCQobGluZSksIGxp
bmVfaWQpOwotICAgIGluc2VydENvbW1lbnRGb3IoJChsaW5lKSwgY29tbWVudF9ibG9jayk7Cisg
ICAgYWRkRGF0YUNvbW1lbnRCYXNlTGluZShsaW5lLCBsaW5lX2lkKTsKKyAgICBpbnNlcnRDb21t
ZW50Rm9yKGxpbmUsIGNvbW1lbnRfYmxvY2spOwogICB9CiAKICAgZnVuY3Rpb24gZGlzcGxheVBy
ZXZpb3VzQ29tbWVudHMoY29tbWVudHMpIHsKQEAgLTY0Miw2ICs2MzUsOSBAQCB2YXIgQ09ERV9S
RVZJRVdfVU5JVFRFU1Q7CiAgICAgcmV0dXJuIHRyYWNfbGlua3M7CiAgIH0KIAorICBpZiAoQ09E
RV9SRVZJRVdfVU5JVFRFU1QpCisgICAgd2luZG93LnRyYWNMaW5rcyA9IHRyYWNMaW5rczsKKwog
ICBmdW5jdGlvbiBhZGRFeHBhbmRMaW5rcyhmaWxlX25hbWUpIHsKICAgICBpZiAoZmlsZV9uYW1l
LmluZGV4T2YoJ0NoYW5nZUxvZycpICE9IC0xKQogICAgICAgcmV0dXJuOwpAQCAtMTA3NCwyOCAr
MTA3MCw5IEBAIHZhciBDT0RFX1JFVklFV19VTklUVEVTVDsKICAgICAgICc8YSBocmVmPSJqYXZh
c2NyaXB0OiIgY2xhc3M9InNpZGUtYnktc2lkZS1saW5rIj5zaWRlLWJ5LXNpZGU8L2E+JzsKICAg
fQogCi0gIGZ1bmN0aW9uIGFwcGVuZFRvb2xiYXIoKSB7Ci0gICAgJChkb2N1bWVudC5ib2R5KS5h
cHBlbmQoJzxkaXYgaWQ9InRvb2xiYXIiPicgKwotICAgICAgICAnPGRpdiBjbGFzcz0ib3ZlcmFs
bENvbW1lbnRzIj4nICsKLSAgICAgICAgICAnPHRleHRhcmVhIHBsYWNlaG9sZGVyPSJPdmVyYWxs
IGNvbW1lbnRzIj48L3RleHRhcmVhPicgKwotICAgICAgICAnPC9kaXY+JyArCi0gICAgICAgICc8
ZGl2PicgKwotICAgICAgICAgICc8c3BhbiBpZD0ic3RhdHVzQnViYmxlQ29udGFpbmVyIj48L3Nw
YW4+JyArCi0gICAgICAgICAgJzxzcGFuIGNsYXNzPSJhY3Rpb25zIj4nICsKLSAgICAgICAgICAg
ICc8c3BhbiBjbGFzcz0ibGlua3MiPjxzcGFuIGNsYXNzPSJidWdMaW5rIj48L3NwYW4+PC9zcGFu
PicgKwotICAgICAgICAgICAgJzxzcGFuIGlkPSJmbGFnQ29udGFpbmVyIj48L3NwYW4+JyArCi0g
ICAgICAgICAgICAnPGJ1dHRvbiBpZD0icHJldmlld19jb21tZW50cyI+UHJldmlldzwvYnV0dG9u
PicgKwotICAgICAgICAgICAgJzxidXR0b24gaWQ9InBvc3RfY29tbWVudHMiPlB1Ymxpc2g8L2J1
dHRvbj4gJyArCi0gICAgICAgICAgJzwvc3Bhbj4nICsKLSAgICAgICAgJzwvZGl2PicgKwotICAg
ICAgICAnPGRpdiBjbGFzcz0iYXV0b3NhdmUtc3RhdGUiPjwvZGl2PicgKwotICAgICAgICAnPC9k
aXY+Jyk7Ci0KLSAgICAkKCcub3ZlcmFsbENvbW1lbnRzIHRleHRhcmVhJykuYmluZCgnY2xpY2sn
LCBvcGVuT3ZlcmFsbENvbW1lbnRzKTsKLSAgICAkKCcub3ZlcmFsbENvbW1lbnRzIHRleHRhcmVh
JykuYmluZCgnaW5wdXQnLCBoYW5kbGVPdmVyYWxsQ29tbWVudHNJbnB1dCk7Ci0gIH0KLQotICBm
dW5jdGlvbiBoYW5kbGVEb2N1bWVudFJlYWR5KCkgeworICAkKGRvY3VtZW50KS5yZWFkeShmdW5j
dGlvbigpIHsKKyAgICBpZiAoQ09ERV9SRVZJRVdfVU5JVFRFU1QpCisgICAgICByZXR1cm47CiAg
ICAgY3Jhd2xEaWZmKCk7CiAgICAgZmV0Y2hIaXN0b3J5KCk7CiAgICAgJChkb2N1bWVudC5ib2R5
KS5wcmVwZW5kKCc8ZGl2IGlkPSJtZXNzYWdlIj4nICsKQEAgLTExMjAsOCArMTA5NywyNCBAQCB2
YXIgQ09ERV9SRVZJRVdfVU5JVFRFU1Q7CiAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAn
PC9kaXY+JyArCiAgICAgICAgICc8L2Rpdj4nKTsKKyAgICAkKGRvY3VtZW50LmJvZHkpLmFwcGVu
ZCgnPGRpdiBpZD0idG9vbGJhciI+JyArCisgICAgICAgICc8ZGl2IGNsYXNzPSJvdmVyYWxsQ29t
bWVudHMiPicgKworICAgICAgICAgICAgJzx0ZXh0YXJlYSBwbGFjZWhvbGRlcj0iT3ZlcmFsbCBj
b21tZW50cyI+PC90ZXh0YXJlYT4nICsKKyAgICAgICAgJzwvZGl2PicgKworICAgICAgICAnPGRp
dj4nICsKKyAgICAgICAgICAnPHNwYW4gaWQ9InN0YXR1c0J1YmJsZUNvbnRhaW5lciI+PC9zcGFu
PicgKworICAgICAgICAgICc8c3BhbiBjbGFzcz0iYWN0aW9ucyI+JyArCisgICAgICAgICAgICAg
ICc8c3BhbiBjbGFzcz0ibGlua3MiPjxzcGFuIGNsYXNzPSJidWdMaW5rIj48L3NwYW4+PC9zcGFu
PicgKworICAgICAgICAgICAgICAnPHNwYW4gaWQ9ImZsYWdDb250YWluZXIiPjwvc3Bhbj4nICsK
KyAgICAgICAgICAgICAgJzxidXR0b24gaWQ9InByZXZpZXdfY29tbWVudHMiPlByZXZpZXc8L2J1
dHRvbj4nICsKKyAgICAgICAgICAgICAgJzxidXR0b24gaWQ9InBvc3RfY29tbWVudHMiPlB1Ymxp
c2g8L2J1dHRvbj4gJyArCisgICAgICAgICAgJzwvc3Bhbj4nICsKKyAgICAgICAgJzwvZGl2Picg
KworICAgICAgICAnPGRpdiBjbGFzcz0iYXV0b3NhdmUtc3RhdGUiPjwvZGl2PicgKworICAgICAg
ICAnPC9kaXY+Jyk7CiAKLSAgICBhcHBlbmRUb29sYmFyKCk7CisgICAgJCgnLm92ZXJhbGxDb21t
ZW50cyB0ZXh0YXJlYScpLmJpbmQoJ2NsaWNrJywgb3Blbk92ZXJhbGxDb21tZW50cyk7CisgICAg
JCgnLm92ZXJhbGxDb21tZW50cyB0ZXh0YXJlYScpLmJpbmQoJ2lucHV0JywgaGFuZGxlT3ZlcmFs
bENvbW1lbnRzSW5wdXQpOwogCiAgICAgJChkb2N1bWVudC5ib2R5KS5wcmVwZW5kKCc8ZGl2IGlk
PSJjb21tZW50X2Zvcm0iIGNsYXNzPSJpbmFjdGl2ZSI+PGRpdiBjbGFzcz0id2ludGVyIj48L2Rp
dj48ZGl2IGNsYXNzPSJsaWdodGJveCI+PGlmcmFtZSBpZD0icmV2aWV3Zm9ybSIgc3JjPSJhdHRh
Y2htZW50LmNnaT9pZD0nICsgYXR0YWNobWVudF9pZCArICcmYWN0aW9uPXJldmlld2Zvcm0iPjwv
aWZyYW1lPjwvZGl2PjwvZGl2PicpOwogICAgICQoJyNyZXZpZXdmb3JtJykuYmluZCgnbG9hZCcs
IGhhbmRsZVJldmlld0Zvcm1Mb2FkKTsKQEAgLTExMzUsNyArMTEyOCw3IEBAIHZhciBDT0RFX1JF
VklFV19VTklUVEVTVDsKIAogICAgIHVwZGF0ZVRvb2xiYXJBbmNob3JTdGF0ZSgpOwogICAgIGxv
YWREaWZmU3RhdGUoKTsKLSAgfTsKKyAgfSk7CiAKICAgZnVuY3Rpb24gaGFuZGxlUmV2aWV3Rm9y
bUxvYWQoKSB7CiAgICAgdmFyIHJldmlld19mb3JtX2NvbnRlbnRzID0gJCgnI3Jldmlld2Zvcm0n
KS5jb250ZW50cygpOwpAQCAtMTMzNywxMiArMTMzMCwxMiBAQCB2YXIgQ09ERV9SRVZJRVdfVU5J
VFRFU1Q7CiAgIH0KIAogICBmdW5jdGlvbiBkaXNjYXJkQ29tbWVudChjb21tZW50X2Jsb2NrKSB7
Ci0gICAgdmFyIGxpbmVfaWQgPSAkKGNvbW1lbnRfYmxvY2spLmZpbmQoJ3RleHRhcmVhJykuYXR0
cignZGF0YS1jb21tZW50LWZvcicpOworICAgIHZhciBsaW5lX2lkID0gY29tbWVudF9ibG9jay5m
aW5kKCd0ZXh0YXJlYScpLmF0dHIoJ2RhdGEtY29tbWVudC1mb3InKTsKICAgICB2YXIgbGluZSA9
ICQoJyMnICsgbGluZV9pZCkKLSAgICAkKGNvbW1lbnRfYmxvY2spLnNsaWRlVXAoJ2Zhc3QnLCBm
dW5jdGlvbigpIHsKKyAgICBmaW5kQ29tbWVudEJsb2NrRm9yKGxpbmUpLnNsaWRlVXAoJ2Zhc3Qn
LCBmdW5jdGlvbigpIHsKICAgICAgICQodGhpcykucmVtb3ZlKCk7CiAgICAgICBsaW5lLnJlbW92
ZUF0dHIoJ2RhdGEtaGFzLWNvbW1lbnQnKTsKLSAgICAgIHRyaW1Db21tZW50Q29udGV4dFRvQmVm
b3JlKGxpbmUsIGxpbmVfaWQpOworICAgICAgdHJpbUNvbW1lbnRDb250ZXh0VG9CZWZvcmUobGlu
ZSwgbGluZS5hdHRyKCdkYXRhLWNvbW1lbnQtYmFzZS1saW5lJykpOwogICAgICAgc2F2ZURyYWZ0
Q29tbWVudHMoKTsKICAgICB9KTsKICAgfQpAQCAtMTM3NSwxMCArMTM2OCw5IEBAIHZhciBDT0RF
X1JFVklFV19VTklUVEVTVDsKICAgfQogICAKICAgZnVuY3Rpb24gYWNjZXB0Q29tbWVudChjb21t
ZW50KSB7Ci0gICAgdmFyIGZyb3plbl9jb21tZW50ID0gZnJlZXplQ29tbWVudCgkKGNvbW1lbnQp
KTsKKyAgICB2YXIgZnJvemVuX2NvbW1lbnQgPSBmcmVlemVDb21tZW50KGNvbW1lbnQpOwogICAg
IGZvY3VzT24oZnJvemVuX2NvbW1lbnQpOwogICAgIHNhdmVEcmFmdENvbW1lbnRzKCk7Ci0gICAg
cmV0dXJuIGZyb3plbl9jb21tZW50OwogICB9CiAKICAgJCgnLkZpbGVEaWZmJykubGl2ZSgnbW91
c2VlbnRlcicsIHNob3dGaWxlRGlmZkxpbmtzKTsKQEAgLTE2ODcsOCArMTY3OSw3IEBAIHZhciBD
T0RFX1JFVklFV19VTklUVEVTVDsKICAgICAgIGlmIChudW1iZXJGcm9tKGlkKSA+IGxpbmVfdG9f
dHJpbV90bykKICAgICAgICAgcmV0dXJuOwogCi0gICAgICBpZiAoISQoJ1tkYXRhLWNvbW1lbnQt
Zm9yPScgKyBjb21tZW50X2Jhc2VfbGluZSArICddJykubGVuZ3RoKQotICAgICAgICByZW1vdmVE
YXRhQ29tbWVudEJhc2VMaW5lKHRoaXMsIGNvbW1lbnRfYmFzZV9saW5lKTsKKyAgICAgIHJlbW92
ZURhdGFDb21tZW50QmFzZUxpbmUodGhpcywgY29tbWVudF9iYXNlX2xpbmUpOwogICAgIH0pOwog
ICB9CiAKQEAgLTE5ODEsMjAgKzE5NzIsNCBAQCB2YXIgQ09ERV9SRVZJRVdfVU5JVFRFU1Q7CiAg
ICAgZmlsbEluUmV2aWV3Rm9ybSgpOwogICAgICQoJyNyZXZpZXdmb3JtJykuY29udGVudHMoKS5m
aW5kKCdmb3JtJykuc3VibWl0KCk7CiAgIH0pOwotICAKLSAgaWYgKENPREVfUkVWSUVXX1VOSVRU
RVNUKSB7Ci0gICAgd2luZG93LkRyYWZ0Q29tbWVudFNhdmVyID0gRHJhZnRDb21tZW50U2F2ZXI7
Ci0gICAgd2luZG93LmFkZFByZXZpb3VzQ29tbWVudCA9IGFkZFByZXZpb3VzQ29tbWVudDsKLSAg
ICB3aW5kb3cudHJhY0xpbmtzID0gdHJhY0xpbmtzOwotICAgIHdpbmRvdy5jcmF3bERpZmYgPSBj
cmF3bERpZmY7Ci0gICAgd2luZG93LmRpc2NhcmRDb21tZW50ID0gZGlzY2FyZENvbW1lbnQ7Ci0g
ICAgd2luZG93LmFkZENvbW1lbnRGaWVsZCA9IGFkZENvbW1lbnRGaWVsZDsKLSAgICB3aW5kb3cu
YWNjZXB0Q29tbWVudCA9IGFjY2VwdENvbW1lbnQ7Ci0gICAgd2luZG93LmFwcGVuZFRvb2xiYXIg
PSBhcHBlbmRUb29sYmFyOwotICAgIHdpbmRvdy5lcmFzZURyYWZ0Q29tbWVudHMgPSBlcmFzZURy
YWZ0Q29tbWVudHM7Ci0gICAgd2luZG93LnVuZnJlZXplQ29tbWVudCA9IHVuZnJlZXplQ29tbWVu
dDsKLSAgICB3aW5kb3cuZ19kcmFmdENvbW1lbnRTYXZlciA9IGdfZHJhZnRDb21tZW50U2F2ZXI7
Ci0gIH0gZWxzZSB7Ci0gICAgJChkb2N1bWVudCkucmVhZHkoaGFuZGxlRG9jdW1lbnRSZWFkeSkK
LSAgfQogfSkoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119117</attachid>
            <date>2011-12-13 17:18:47 -0800</date>
            <delta_ts>2011-12-13 18:56:31 -0800</delta_ts>
            <desc>Rebased</desc>
            <filename>74456.patch</filename>
            <type>text/plain</type>
            <size>7794</size>
            <attacher name="Dmitry Lomov">dslomov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1YTJhNDdhLi5kNmUyNDI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTIt
MTMgIERtaXRyeSBMb21vdiAgPGRzbG9tb3ZAZ29vZ2xlLmNvbT4KKworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0NTYKKyAgICAgICAgW1Y4XVtDaHJv
bWl1bV0gUmVlbmFibGUgZGVkaWNhdGVkIHdvcmtlciBsYXlvdXQgdGVzdHMuCisKKyAgICAgICAg
Q2hyb21pdW0tc3BlY2lmaWMgcmVzdWx0cyBhcmUgY2F1c2VkIGJ5IGV4Y2VwdGlvbiBtZXNzYWdl
IHRleHQgZGlmZmVyZW5jZXMgYmV0d2VlbiBKU0MgYW5kIFY4LgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZmFzdC93
b3JrZXJzL3VzZS1tYWNoaW5lLXN0YWNrLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vZmFzdC93b3JrZXJzL3dvcmtlci1jb25zdHJ1Y3Rvci1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2Zhc3Qvd29ya2Vycy93
b3JrZXItbG9jYXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9j
aHJvbWl1bS9mYXN0L3dvcmtlcnMvd29ya2VyLXNjcmlwdC1lcnJvci1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoK
KwogMjAxMS0xMi0xMyAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJvbGxpbmcgb3V0IHIxMDI0NjEsIGEgY2hhbmdlIHRvIGEgbGF5b3V0IHRlc3QgdG8gdHJ5IHRv
IHJlbW92ZSBmbGFraW5lc3Mgb24gQ2hyb21pdW0uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9mYXN0L3dvcmtlcnMvdXNlLW1hY2hpbmUtc3RhY2stZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC93b3JrZXJzL3VzZS1tYWNo
aW5lLXN0YWNrLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li43NTUwMWY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vZmFzdC93b3JrZXJzL3VzZS1tYWNoaW5lLXN0YWNrLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDQgQEAKK1Rlc3Qgd29ya2VyIHRocmVhZCBzdGFjayB1c2FnZS4gU2hvdWxkIG5vdCBjcmFzaC4K
KworUEFTUyAoUmFuZ2VFcnJvcjogTWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWQpCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qvd29ya2Vycy93
b3JrZXItY29uc3RydWN0b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0vZmFzdC93b3JrZXJzL3dvcmtlci1jb25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI5Yjg0MwotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qvd29ya2Vycy93b3JrZXItY29uc3Ry
dWN0b3ItZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEgQEAKK1Rlc3QgV29ya2VyIGNvbnN0cnVj
dG9yIGZ1bmN0aW9uYWxpdHkuIFNob3VsZCBwcmludCBhIHNlcmllcyBvZiBQQVNTIG1lc3NhZ2Vz
LCBmb2xsb3dlZCB3aXRoIERPTkUuCisKK1BBU1M6IHRvU3RyaW5nIGV4Y2VwdGlvbiBwcm9wYWdh
dGVkIGNvcnJlY3RseS4KK1BBU1M6IHRyeWluZyB0byBjcmVhdGUgd29ya2VycyByZWN1cnNpdmVs
eSByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24gKFJhbmdlRXJyb3I6IE1heGltdW0gY2FsbCBzdGFj
ayBzaXplIGV4Y2VlZGVkKQorUEFTUzogaW52b2tpbmcgV29ya2VyIGNvbnN0cnVjdG9yIHdpdGhv
dXQgYXJndW1lbnRzIHJlc3VsdGVkIGluIGFuIGV4Y2VwdGlvbiAoVHlwZUVycm9yOiBOb3QgZW5v
dWdoIGFyZ3VtZW50cykKK1BBU1M6IGludm9raW5nIFdvcmtlciBjb25zdHJ1Y3RvciB3aXRoIGVt
cHR5IHNjcmlwdCBVUkwgcmVzdWx0ZWQgaW4gYW4gZXhjZXB0aW9uIChFcnJvcjogU1lOVEFYX0VS
UjogRE9NIEV4Y2VwdGlvbiAxMikKK1BBU1M6IGludm9raW5nIFdvcmtlciBjb25zdHJ1Y3RvciB3
aXRoIGludmFsaWQgc2NyaXB0IFVSTCByZXN1bHRlZCBpbiBhbiBleGNlcHRpb24gKEVycm9yOiBT
WU5UQVhfRVJSOiBET00gRXhjZXB0aW9uIDEyKQorUEFTUzogb25lcnJvciBpbnZva2VkIGZvciBh
IHNjcmlwdCB0aGF0IGNvdWxkIG5vdCBiZSBsb2FkZWQuCitQQVNTOiBTdWNjZXNzZnVsbHkgY3Jl
YXRlZCB3b3JrZXIuCitET05FCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL2Zhc3Qvd29ya2Vycy93b3JrZXItbG9jYXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZmFzdC93b3JrZXJzL3dvcmtlci1sb2NhdGlvbi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ3ZGQ0NgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qvd29ya2Vy
cy93b3JrZXItbG9jYXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1Rlc3QgV29y
a2VyTG9jYXRpb24gcHJvcGVydGllcy4KKworV29ya2VyTG9jYXRpb246IGZ1bmN0aW9uIFdvcmtl
ckxvY2F0aW9uKCkgeyBbbmF0aXZlIGNvZGVdIH0KK3R5cGVvZiBsb2NhdGlvbjogb2JqZWN0Cits
b2NhdGlvbjogZmlsZTo8Li4uPi9mYXN0L3dvcmtlcnMvcmVzb3VyY2VzL3dvcmtlci1jb21tb24u
anMKK2xvY2F0aW9uLmhyZWY6IGZpbGU6PC4uLj4vZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3Jr
ZXItY29tbW9uLmpzCitsb2NhdGlvbi5wcm90b2NvbDogZmlsZToKK2xvY2F0aW9uLmhvc3Q6IAor
bG9jYXRpb24uaG9zdG5hbWU6IAorbG9jYXRpb24ucG9ydDogCitsb2NhdGlvbi5wYXRobmFtZTog
PC4uLj4vZmFzdC93b3JrZXJzL3Jlc291cmNlcy93b3JrZXItY29tbW9uLmpzCitsb2NhdGlvbi5z
ZWFyY2g6IAorbG9jYXRpb24uaGFzaDogCitET05FCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qvd29ya2Vycy93b3JrZXItc2NyaXB0LWVycm9yLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Zhc3Qvd29ya2Vycy93b3Jr
ZXItc2NyaXB0LWVycm9yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5lODMxZDA4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vZmFzdC93b3JrZXJzL3dvcmtlci1zY3JpcHQtZXJyb3ItZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTUgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMDogVW5jYXVnaHQgUmVmZXJl
bmNlRXJyb3I6IGZvbyBpcyBub3QgZGVmaW5lZAorVGVzdCBXb3JrZXIgc2NyaXB0IGVycm9yIGhh
bmRsaW5nIGZ1bmN0aW9uYWxpdHkuIFNob3VsZCBwcmludCBhIHNlcmllcyBvZiBQQVNTIG1lc3Nh
Z2VzLCBmb2xsb3dlZCB3aXRoIERPTkUuCisKK1BBU1M6IG9uZXJyb3IgaW52b2tlZCBmb3IgYSBz
Y3JpcHQgdGhhdCBoYXMgaW52YWxpZCBzeW50YXguCitQQVNTOiBvbmVycm9yIGludm9rZWQgZm9y
IGEgc2NyaXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJvciAnVW5jYXVnaHQgUmVmZXJlbmNlRXJyb3I6
IGZvbyBpcyBub3QgZGVmaW5lZCcgYXQgbGluZSAxLgorUEFTUzogZXZlbnQgbGlzdGVuZXIgaW52
b2tlZCBmb3IgYSBzY3JpcHQgdGhhdCBoYXMgc2NyaXB0IGVycm9yICdVbmNhdWdodCBSZWZlcmVu
Y2VFcnJvcjogZm9vIGlzIG5vdCBkZWZpbmVkJyBhdCBsaW5lIDEuCitQQVNTOiBvbmVycm9yIGlu
dm9rZWQgZm9yIGEgc2NyaXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJvciAnVW5jYXVnaHQgUmVmZXJl
bmNlRXJyb3I6IGZvbyBpcyBub3QgZGVmaW5lZCcgYXQgbGluZSA3LgorUEFTUzogb25lcnJvciBp
bnZva2VkIGZvciBhIHNjcmlwdCB0aGF0IGhhcyBzY3JpcHQgZXJyb3IgJ1VuY2F1Z2h0IFJlZmVy
ZW5jZUVycm9yOiBiYXIgaXMgbm90IGRlZmluZWQnIGF0IGxpbmUgMy4KK21lc3NhZ2UgZnJvbSB3
b3JrZXI6ICJQQVNTOiBvbmVycm9yIGluIHdvcmtlciBjb250ZXh0IGludm9rZWQgZm9yIGEgc2Ny
aXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJvciAnVW5jYXVnaHQgUmVmZXJlbmNlRXJyb3I6IGZvbyBp
cyBub3QgZGVmaW5lZCcgYXQgbGluZSAxMCBpbiB3b3JrZXItc2NyaXB0LWVycm9yLWJ1YmJsZWQu
anMiLgorUEFTUzogb25lcnJvciBpbnZva2VkIGZvciBhIHNjcmlwdCB0aGF0IGhhcyBzY3JpcHQg
ZXJyb3IgJ1VuY2F1Z2h0IFJlZmVyZW5jZUVycm9yOiBmb28gaXMgbm90IGRlZmluZWQnIGF0IGxp
bmUgMTAuCitQQVNTOiBvbmVycm9yIGludm9rZWQgZm9yIGEgc2NyaXB0IHRoYXQgaGFzIHNjcmlw
dCBlcnJvciAnVW5jYXVnaHQgUmVmZXJlbmNlRXJyb3I6IGZvbyBpcyBub3QgZGVmaW5lZCcgYXQg
bGluZSAxMC4KK1BBU1M6IG1lc3NhZ2UgcmVjZWl2ZWQgZnJvbSBXb3JrZXJHbG9iYWxTY29wZS5v
bmVycm9yOiBvbmVycm9yIGludm9rZWQgZm9yIGEgc2NyaXB0IHRoYXQgaGFzIHNjcmlwdCBlcnJv
ciAnVW5jYXVnaHQgUmVmZXJlbmNlRXJyb3I6IGZvbyBpcyBub3QgZGVmaW5lZCcgYXQgbGluZSA3
LgorUEFTUzogb25lcnJvciBpbnZva2VkIGZvciBhbiBleGNlcHRpb24gaW4gc2V0VGltZW91dCBj
YWxsYmFjay4KK0RPTkUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
dGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IGFlOTY3NTQuLjgyZDkwOWEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAg
LTEzNiw4ICsxMzYsNDIgQEAgV09OVEZJWCBTS0lQIDogZmFzdC9wcm9maWxlciA9IEZBSUwgVElN
RU9VVAogLy8gaXMgaW1wbGVtZW50ZWQuCiBXT05URklYIFNLSVAgOiBzdG9yYWdlL2RvbXN0b3Jh
Z2UvbG9jYWxzdG9yYWdlL3N0b3JhZ2V0cmFja2VyID0gUEFTUyBUSU1FT1VUIEZBSUwKIAotLy8g
V2UgdXNlIHdvcmtlcl91aXRlc3RzIHRvIHJ1biB3b3JrZXJzIHRlc3RzLiBEb24ndCBydW4gdGhl
bSBpbiB0ZXN0X3NoZWxsLgotV09OVEZJWCBTS0lQIDogZmFzdC93b3JrZXJzID0gUEFTUyBUSU1F
T1VUIEZBSUwKKy8vIHRlc3Rfc2hlbGwgZG9lcyBub3Qgc3VwcG9ydCBzaGFyZWQgd29ya2Vycwor
V09OVEZJWCBTS0lQIDogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItY29udGV4dC1nYy5odG1s
ID0gVElNRU9VVAorV09OVEZJWCBTS0lQIDogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItZXZl
bnQtbGlzdGVuZXIuaHRtbCA9IFRJTUVPVVQKK1dPTlRGSVggU0tJUCA6IGZhc3Qvd29ya2Vycy9z
aGFyZWQtd29ya2VyLWV4Y2VwdGlvbi5odG1sID0gVElNRU9VVAorV09OVEZJWCBTS0lQIDogZmFz
dC93b3JrZXJzL3NoYXJlZC13b3JrZXItZnJhbWUtbGlmZWN5Y2xlLmh0bWwgPSBUSU1FT1VUCitX
T05URklYIFNLSVAgOiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1nYy5odG1sID0gVElNRU9V
VAorV09OVEZJWCBTS0lQIDogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItaW4taWZyYW1lLmh0
bWwgPSBUSU1FT1VUCitXT05URklYIFNLSVAgOiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1s
aWZlY3ljbGUuaHRtbCA9IFRJTUVPVVQKK1dPTlRGSVggU0tJUCA6IGZhc3Qvd29ya2Vycy9zaGFy
ZWQtd29ya2VyLWxvYWQtZXJyb3IuaHRtbCA9IFRJTUVPVVQKK1dPTlRGSVggU0tJUCA6IGZhc3Qv
d29ya2Vycy9zaGFyZWQtd29ya2VyLWxvY2F0aW9uLmh0bWwgPSBUSU1FT1VUCitXT05URklYIFNL
SVAgOiBmYXN0L3dvcmtlcnMvc2hhcmVkLXdvcmtlci1uYXZpZ2F0b3IuaHRtbCA9IFRJTUVPVVQK
K1dPTlRGSVggU0tJUCA6IGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXJlcGxhY2UtZ2xvYmFs
LWNvbnN0cnVjdG9yLmh0bWwgPSBUSU1FT1VUCitXT05URklYIFNLSVAgOiBmYXN0L3dvcmtlcnMv
c2hhcmVkLXdvcmtlci1yZXBsYWNlLXNlbGYuaHRtbCA9IFRJTUVPVVQKK1dPTlRGSVggU0tJUCA6
IGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXNoYXJlZC5odG1sID0gVElNRU9VVAorV09OVEZJ
WCBTS0lQIDogZmFzdC93b3JrZXJzL3NoYXJlZC13b3JrZXItY29uc3RydWN0b3IuaHRtbCA9IFRF
WFQKK1dPTlRGSVggU0tJUCA6IGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLW5hbWUuaHRtbCA9
IFRFWFQKK1dPTlRGSVggU0tJUCA6IGZhc3Qvd29ya2Vycy9zaGFyZWQtd29ya2VyLXNjcmlwdC1l
cnJvci5odG1sID0gVEVYVAorV09OVEZJWCBTS0lQIDogZmFzdC93b3JrZXJzL3NoYXJlZC13b3Jr
ZXItc2ltcGxlLmh0bWwgPSBUSU1FT1VUCitXT05URklYIFNLSVAgOiBmYXN0L3dvcmtlcnMvd29y
a2VyLWNyYXNoLXdpdGgtaW52YWxpZC1sb2NhdGlvbi5odG1sID0gVEVYVAorCisvLyB0ZXN0X3No
ZWxsIGRvZXMgbm90IHN1cHBvcnQgbWVzc2FnZSBwb3J0cworQlVHV0s3NDQ1OSBTS0lQIDogZmFz
dC93b3JrZXJzL3Rlcm1pbmF0aW9uLXdpdGgtcG9ydC1tZXNzYWdlcy5odG1sID0gQ1JBU0gKK0JV
R1dLNzQ0NTkgU0tJUCA6IGZhc3Qvd29ya2Vycy93b3JrZXItY2xvbmVwb3J0Lmh0bWwgPSBDUkFT
SAorQlVHV0s3NDQ1OSBTS0lQIDogZmFzdC93b3JrZXJzL3dvcmtlci1jb250ZXh0LW11bHRpLXBv
cnQuaHRtbCA9IENSQVNICitCVUdXSzc0NDU5IFNLSVAgOiBmYXN0L3dvcmtlcnMvd29ya2VyLW1l
c3NhZ2Vwb3J0LWdjLmh0bWwgPSBDUkFTSAorQlVHV0s3NDQ1OSBTS0lQIDogZmFzdC93b3JrZXJz
L3dvcmtlci1tZXNzYWdlcG9ydC5odG1sID0gQ1JBU0gKK0JVR1dLNzQ0NTkgU0tJUCA6IGZhc3Qv
d29ya2Vycy93b3JrZXItbXVsdGktcG9ydC5odG1sID0gQ1JBU0gKKworQlVHV0s3NDQ0OSBTS0lQ
IDogZmFzdC93b3JrZXJzL3N0b3JhZ2UgPSBDUkFTSCBUSU1FT1VUCisKK0JVR1dLNzQ0NDkgU0tJ
UCA6IGZhc3Qvd29ya2Vycy9kZWRpY2F0ZWQtd29ya2VyLWxpZmVjeWNsZS5odG1sID0gVElNRU9V
VAorQlVHV0s3NDQ0OSBTS0lQIDogZmFzdC93b3JrZXJzL3dvcmtlci1jbG9zZS1tb3JlLmh0bWwg
PSBUSU1FT1VUCitCVUdXSzc0NDQ5IFNLSVAgOiBmYXN0L3dvcmtlcnMvd29ya2VyLWxpZmVjeWNs
ZS5odG1sID0gVElNRU9VVAorQlVHV0s3NDQ2NiA6IGZhc3Qvd29ya2Vycy93b3JrZXItc2NyaXB0
LWVycm9yLmh0bWwgPSBQQVNTIFRJTUVPVVQgRkFJTAorCisvLyB0ZXN0X3NoZWxsIGRvZXMgbm90
IHN1cHBvcnQgd29ya2VycwogV09OVEZJWCBTS0lQIDogZmFzdC9maWxlcy93b3JrZXJzID0gUEFT
UyBUSU1FT1VUIEZBSUwKIFdPTlRGSVggU0tJUCA6IGZhc3QvZmlsZXN5c3RlbS93b3JrZXJzID0g
UEFTUyBUSU1FT1VUIEZBSUwKIFdPTlRGSVggU0tJUCA6IGZhc3QvY2FudmFzL3dlYmdsL3dvcmtl
ci1kYXRhLXZpZXctdGVzdC5odG1sID0gUEFTUyBUSU1FT1VUIEZBSUwK
</data>

          </attachment>
      

    </bug>

</bugzilla>