<?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>236545</bug_id>
          
          <creation_ts>2022-02-12 17:13:32 -0800</creation_ts>
          <short_desc>Implement ServiceWorkerRegistration.getNotifications()</short_desc>
          <delta_ts>2022-02-15 17:27:18 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>22722</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>nham</cc>
    
    <cc>simon.bluhm</cc>
    
    <cc>tomac</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1840747</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-12 17:13:32 -0800</bug_when>
    <thetext>Implement ServiceWorkerRegistration.getNotifications()

Obvious and required followup to https://bugs.webkit.org/show_bug.cgi?id=22722</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841491</commentid>
    <comment_count>1</comment_count>
      <attachid>451965</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-14 17:08:07 -0800</bug_when>
    <thetext>Created attachment 451965
EWS v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841521</commentid>
    <comment_count>2</comment_count>
      <attachid>451975</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-14 18:30:53 -0800</bug_when>
    <thetext>Created attachment 451975
EWS v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841745</commentid>
    <comment_count>3</comment_count>
      <attachid>452032</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-15 09:15:33 -0800</bug_when>
    <thetext>Created attachment 452032
EWS v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841759</commentid>
    <comment_count>4</comment_count>
      <attachid>452032</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-02-15 09:32:25 -0800</bug_when>
    <thetext>Comment on attachment 452032
EWS v3

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

&gt; Source/WebCore/workers/service/ServiceWorkerRegistration.h:132
&gt; +    ListHashSet&lt;Notification*&gt; m_notificationList;

Can this use WeakPtr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841770</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-15 09:51:46 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #4)
&gt; Comment on attachment 452032 [details]
&gt; EWS v3
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=452032&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/workers/service/ServiceWorkerRegistration.h:132
&gt; &gt; +    ListHashSet&lt;Notification*&gt; m_notificationList;
&gt; 
&gt; Can this use WeakPtr?

Yah that&apos;s probably better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841793</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-15 10:34:39 -0800</bug_when>
    <thetext>(In reply to Brady Eidson from comment #5)
&gt; (In reply to Alex Christensen from comment #4)
&gt; &gt; Comment on attachment 452032 [details]
&gt; &gt; EWS v3
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=452032&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/workers/service/ServiceWorkerRegistration.h:132
&gt; &gt; &gt; +    ListHashSet&lt;Notification*&gt; m_notificationList;
&gt; &gt; 
&gt; &gt; Can this use WeakPtr?
&gt; 
&gt; Yah that&apos;s probably better.

But also can&apos;t work - Can&apos;t use WeakPtr&lt;&gt; as a HashKey for obvious reasons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841852</commentid>
    <comment_count>7</comment_count>
      <attachid>452071</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-15 11:55:05 -0800</bug_when>
    <thetext>Created attachment 452071
PFR</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841859</commentid>
    <comment_count>8</comment_count>
      <attachid>452071</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2022-02-15 12:04:53 -0800</bug_when>
    <thetext>Comment on attachment 452071
PFR

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

&gt; Source/WebCore/Modules/notifications/Notification.cpp:88
&gt; +Notification::Notification(const Notification&amp; other)

After calling the copy constructor, do we not need to call addNotificationToList?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1841861</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2022-02-15 12:08:05 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #8)
&gt; Comment on attachment 452071 [details]
&gt; PFR
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=452071&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/notifications/Notification.cpp:88
&gt; &gt; +Notification::Notification(const Notification&amp; other)
&gt; 
&gt; After calling the copy constructor, do we not need to call
&gt; addNotificationToList?

We definitely *DON&apos;T* want the copies to be in the list.

They don&apos;t represent a live notification object the same way the ones in the list do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842061</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-02-15 17:26:37 -0800</bug_when>
    <thetext>Committed r289866 (247306@main): &lt;https://commits.webkit.org/247306@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 452071.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1842063</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-02-15 17:27:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/88997342&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451965</attachid>
            <date>2022-02-14 17:08:07 -0800</date>
            <delta_ts>2022-02-14 18:30:53 -0800</delta_ts>
            <desc>EWS v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>15787</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkMjIwM2UyNmU0OTUuLjQ2MjU0NmEwODQyMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDIyLTAyLTE0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbXBsZW1lbnQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5nZXROb3RpZmljYXRpb25zKCku
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1NDUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL2dldG5vdGlmaWNhdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9nZXRub3RpZmljYXRpb25z
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291
cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qczoKKyAgICAgICAgKGFzeW5jIHRyeVNob3cp
OgorICAgICAgICAoYXN5bmMgZ2V0Tm90ZXMpOgorICAgICAgICAoYXN5bmMgZXZlbnQpOgorCiAy
MDIyLTAyLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBJ
bXBsZW1lbnQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5zaG93Tm90aWZpY2F0aW9uKCkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2dldG5vdGlm
aWNhdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Nl
cnZpY2UvZ2V0bm90aWZpY2F0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5mODEwOGM2ZDkwZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9nZXRub3RpZmljYXRpb25zLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDQzIEBACitUaGlzIHRlc3RzIHRoYXQgcGVyc2lzdGVudCBub3Rp
ZmljYXRpb25zIGNyZWF0ZWQgYnkgYSBzZXJ2aWNlIHdvcmtlciBhcmUgdmlzaWJsZSB0byBnZXRO
b3RpZmljYXRpb25zKCkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgTm90
aWZpY2F0aW9uLnBlcm1pc3Npb24gaXMgImdyYW50ZWQiCitHb3Qgbm90aWZpY2F0aW9ucworVGhl
cmUgYXJlIDAgbm90aWZpY2F0aW9ucworCitOb3RpZmljYXRpb24gd2FzIHNob3duCitOb3RpZmlj
YXRpb24gd2FzIHNob3duCitOb3RpZmljYXRpb24gd2FzIHNob3duCitHb3Qgbm90aWZpY2F0aW9u
cworVGhlcmUgYXJlIDMgbm90aWZpY2F0aW9ucworVGl0bGU6IEhlbGxvCitCb2R5OiBCb2R5MQor
VGFnOiB0YWctYQorVGl0bGU6IFRoZXJlCitCb2R5OiBCb2R5MgorVGFnOiB0YWctYgorVGl0bGU6
IEJ1ZGR5CitCb2R5OiBCb2R5MworVGFnOiB0YWctYgorCitHb3Qgbm90aWZpY2F0aW9ucworVGhl
cmUgYXJlIDEgbm90aWZpY2F0aW9ucworVGl0bGU6IEhlbGxvCitCb2R5OiBCb2R5MQorVGFnOiB0
YWctYQorCitHb3Qgbm90aWZpY2F0aW9ucworVGhlcmUgYXJlIDIgbm90aWZpY2F0aW9ucworVGl0
bGU6IFRoZXJlCitCb2R5OiBCb2R5MgorVGFnOiB0YWctYgorVGl0bGU6IEJ1ZGR5CitCb2R5OiBC
b2R5MworVGFnOiB0YWctYgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2UvZ2V0bm90aWZpY2F0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2UvZ2V0bm90aWZpY2F0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uMDQzZDQzMDU0MjYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvZ2V0bm90aWZpY2F0aW9ucy5odG1s
CkBAIC0wLDAgKzEsOTEgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvbm90aWZpY2F0aW9u
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBmYWlsVGhlVGVz
dChtc2cpCit7CisgICAgdGVzdEZhaWxlZChtc2cpOworICAgIGlmICh0ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5ncmFu
dFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24odGVzdFVSTCk7Cit9CisKK2Rlc2NyaXB0aW9uKCJU
aGlzIHRlc3RzIHRoYXQgcGVyc2lzdGVudCBub3RpZmljYXRpb25zIGNyZWF0ZWQgYnkgYSBzZXJ2
aWNlIHdvcmtlciBhcmUgdmlzaWJsZSB0byBnZXROb3RpZmljYXRpb25zKCkiKTsKKworc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJOb3RpZmljYXRpb24ucGVybWlzc2lvbiIsICJncmFudGVkIik7CisK
K2FzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyU2VydmljZVdvcmtlcigpIHsKKyAgICB2YXIgcmVnaXN0
cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJ3Jlc291cmNl
cy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcycpOworICAgIAorICAgIGlmICghcmVnaXN0cmF0
aW9uKQorICAgICAgICByZXR1cm4gdGVzdEZhaWxlZCgiTm8gcmVnaXN0cmF0aW9uIik7CisgICAg
CisgICAgaWYgKHJlZ2lzdHJhdGlvbi5hY3RpdmUpIHsKKyAgICAgICAgcmVnaXN0cmF0aW9uLmFj
dGl2ZS5wb3N0TWVzc2FnZSgiU3RhcnQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHZhciBpbnN0YWxsaW5nV29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisgICAgaWYg
KCFpbnN0YWxsaW5nV29ya2VyKQorICAgICAgICBmYWlsVGhlVGVzdCgiTm8gYWN0aXZlICpvciog
aW5zdGFsbGluZyB3b3JrZXIiKTsKKworICAgIGluc3RhbGxpbmdXb3JrZXIuYWRkRXZlbnRMaXN0
ZW5lcigic3RhdGVjaGFuZ2UiLCAoKSA9PiB7CisgICAgICAgIGlmIChpbnN0YWxsaW5nV29ya2Vy
LnN0YXRlID09PSAiYWN0aXZhdGVkIikgeworICAgICAgICAgICAgaW5zdGFsbGluZ1dvcmtlci5w
b3N0TWVzc2FnZSgiZ2V0bm90ZXMiKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCit2YXIgbnVt
YmVyU2hvd24gPSAwOwordmFyIG51bWJlckdvdCA9IDA7CisKK2Z1bmN0aW9uIGdvdE5vdGVzKGV2
ZW50KQoreworICAgICsrbnVtYmVyR290OworCisgICAgZGVidWcoIkdvdCBub3RpZmljYXRpb25z
Iik7CisgICAgbWVzc2FnZSA9IGV2ZW50LmRhdGEuc3BsaXQoJ3wnKQorICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgbWVzc2FnZS5sZW5ndGg7ICsraSkKKyAgICAgICAgZGVidWcobWVzc2FnZVtpXSk7
CisKKyAgICBpZiAobnVtYmVyR290ID09IDEpIHsKKyAgICAgICAgZXZlbnQuc291cmNlLnBvc3RN
ZXNzYWdlKCJ0cnlzaG93fEhlbGxvfEJvZHkxfHRhZy1hIik7CisgICAgICAgIGV2ZW50LnNvdXJj
ZS5wb3N0TWVzc2FnZSgidHJ5c2hvd3xUaGVyZXxCb2R5Mnx0YWctYiIpOworICAgICAgICBldmVu
dC5zb3VyY2UucG9zdE1lc3NhZ2UoInRyeXNob3d8QnVkZHl8Qm9keTN8dGFnLWIiKTsKKyAgICB9
IGVsc2UgaWYgKG51bWJlckdvdCA9PSA0KSB7CisgICAgICAgIHRlc3RDb21wbGV0ZWQoKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHNob3duKGV2ZW50KQoreworICAgIGRlYnVnKCJOb3RpZmljYXRp
b24gd2FzIHNob3duIik7CisgICAgKytudW1iZXJTaG93bjsKKyAgICBpZiAobnVtYmVyU2hvd24g
PT0gMikgeworICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoImdldG5vdGVzIik7Cisg
ICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiZ2V0bm90ZXN8dGFnLWEiKTsKKyAgICAg
ICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJnZXRub3Rlc3x0YWctYiIpOworICAgIH0KK30K
KworbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGV2
ZW50ID0+IHsKKyAgICB2YXIgbWVzc2FnZU5hbWUgPSBldmVudC5kYXRhLnNwbGl0KCd8JylbMF07
CisKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gImdvdG5vdGVzIikgeworICAgICAgICBnb3ROb3Rl
cyhldmVudCk7CisgICAgfSBlbHNlIGlmIChtZXNzYWdlTmFtZSA9PSAic2hvd24iKSB7CisgICAg
ICAgIHNob3duKGV2ZW50KTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygiVW5leHBlY3Rl
ZCBtZXNzYWdlOiAiICsgZXZlbnQuZGF0YSk7CisgICAgfQorfSk7CisKKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJyZWdpc3RlclNlcnZpY2VXb3JrZXIoKSI+Cis8L2JvZHk+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJj
ZXMvc2hvd25vdGlmaWNhdGlvbi13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlvbi13b3JrZXIuanMKaW5kZXgg
MTE2NzMwOTI0OGJhLi43MTI4Zjk0MDhkMTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5q
cworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMv
c2hvd25vdGlmaWNhdGlvbi13b3JrZXIuanMKQEAgLTE3LDE0ICsxNyw2MCBAQCBzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoJ25vdGlmaWNhdGlvbmNsb3NlJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsK
ICAgICBhd2FpdCBtZXNzYWdlQ2xpZW50cygiY2xvc2VkIik7CiB9KTsKIAotc2VsZi5hZGRFdmVu
dExpc3RlbmVyKCdtZXNzYWdlJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAvLyBSZXBs
eSBpZiB0aGUgc2hvdyBzdWNjZWVkZWQgb3IgZmFpbGVkLgorYXN5bmMgZnVuY3Rpb24gdHJ5U2hv
dyhtZXNzYWdlKQoreworICAgIHZhciB0aXRsZSwgYm9keSwgdGFnOworICAgIHZhciBjb21wb25l
bnRzID0gbWVzc2FnZS5zcGxpdCgnfCcpOworCisgICAgaWYgKGNvbXBvbmVudHMubGVuZ3RoID09
IDEpIHsKKyAgICAgICAgdGl0bGUgPSAiVGhpcyBpcyBhIG5vdGlmaWNhdGlvbiI7ICAgICAgICAK
KyAgICB9IGVsc2UgeworICAgICAgICB0aXRsZSA9IGNvbXBvbmVudHNbMV07CisgICAgICAgIGJv
ZHkgPSBjb21wb25lbnRzWzJdOworICAgICAgICB0YWcgPSBjb21wb25lbnRzWzNdOworICAgIH0K
KyAgICAKICAgICB0cnkgewotICAgICAgICBhd2FpdCByZWdpc3RyYXRpb24uc2hvd05vdGlmaWNh
dGlvbigiVGhpcyBpcyBhIG5vdGlmaWNhdGlvbiIpOworICAgICAgICBhd2FpdCByZWdpc3RyYXRp
b24uc2hvd05vdGlmaWNhdGlvbih0aXRsZSwgeworICAgICAgICAgICAgYm9keTogYm9keSwKKyAg
ICAgICAgICAgIHRhZzogdGFnCisgICAgICAgIH0pOwogICAgIH0gY2F0Y2goZXJyb3IpIHsKICAg
ICAgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMoInNob3dGYWlsZWQiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKICAgICBhd2FpdCBtZXNzYWdlQ2xpZW50cygic2hvd24iKTsKK30KKwor
dmFyIHNlZW5Ob3RlcyA9IG5ldyBTZXQoKTsKKworYXN5bmMgZnVuY3Rpb24gZ2V0Tm90ZXMobWVz
c2FnZSkKK3sKKyAgICB2YXIgdGFnID0gdW5kZWZpbmVkOworICAgIHZhciBjb21wb25lbnRzID0g
bWVzc2FnZS5zcGxpdCgnfCcpOworICAgIGlmIChjb21wb25lbnRzLmxlbmd0aCA9PSAyKQorICAg
ICAgICB0YWcgPSBjb21wb25lbnRzWzFdOworCisgICAgdmFyIG5vdGlmaWNhdGlvbnMgPSBhd2Fp
dCByZWdpc3RyYXRpb24uZ2V0Tm90aWZpY2F0aW9ucyh7IHRhZzogdGFnIH0pOworICAgIHZhciBy
ZXBseSA9ICJnb3Rub3Rlc3xUaGVyZSBhcmUgIiArIG5vdGlmaWNhdGlvbnMubGVuZ3RoICsgIiBu
b3RpZmljYXRpb25zfCI7CisKKyAgICBmb3IgKG5vdGlmaWNhdGlvbiBvZiBub3RpZmljYXRpb25z
KSB7CisgICAgICAgIGlmIChzZWVuTm90ZXMuaGFzKG5vdGlmaWNhdGlvbikpCisgICAgICAgICAg
ICBtZXNzYWdlQ2xpZW50cygiU2F3IHRoZSBzYW1lIG5vdGlmY2F0aW9uIHR3aWNlIHRocm91Z2gg
Z2V0Tm90aWZpY2F0aW9ucygpLCB0aGlzIHNob3VsZCBub3QgaGFwcGVuIik7CisgICAgICAgIHNl
ZW5Ob3Rlcy5hZGQobm90aWZpY2F0aW9uKQorICAgICAgICAKKyAgICAgICAgcmVwbHkgKz0gIlRp
dGxlOiAiICsgbm90aWZpY2F0aW9uLnRpdGxlICsgInwiOworICAgICAgICByZXBseSArPSAiQm9k
eTogIiArIG5vdGlmaWNhdGlvbi5ib2R5ICsgInwiOworICAgICAgICByZXBseSArPSAiVGFnOiAi
ICsgbm90aWZpY2F0aW9uLnRhZyArICJ8IjsKKyAgICB9CisgICAgYXdhaXQgbWVzc2FnZUNsaWVu
dHMocmVwbHkpOworfQorCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyBm
dW5jdGlvbihldmVudCkgeworICAgIHZhciBtZXNzYWdlTmFtZSA9IGV2ZW50LmRhdGEuc3BsaXQo
J3wnKVswXTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gInRyeXNob3ciKQorICAgICAgICBhd2Fp
dCB0cnlTaG93KGV2ZW50LmRhdGEpOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSAiZ2V0bm90ZXMi
KQorICAgICAgICBhd2FpdCBnZXROb3RlcyhldmVudC5kYXRhKTsKIH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDY1ODE5NTRjNTcyMC4uOWVkZDEzZGFkMmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMjItMDItMTQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAg
IEltcGxlbWVudCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmdldE5vdGlmaWNhdGlvbnMoKS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU0NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2dldG5vdGlmaWNhdGlvbnMuaHRtbAorCisgICAgICAg
IFVudGlsIHdlIGZpZ3VyZSBvdXQganVzdCBob3cgInBlcnNpc3RlbnQiIHdlIHdhbnQgcGVyc2lz
dGVudCBub3RpZmljYXRpb25zIGZyb20gc2VydmljZSB3b3JrZXJzIHRvIGJlLAorICAgICAgICB0
aGlzIGlzIGFuIGltcGVtZW50YXRpb24gb2YgZ2V0Tm90aWZpY2F0aW9ucygpIHRoYXQgd29ya3Mg
Zm9yIHRoZSBjdXJyZW50IHJ1bm5pbmcgb2YgdGhlIHVzZXIgYWdlbnQuCisgICAgICAgIAorICAg
ICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbjo6Y29weUZvckdldE5vdGlmaWNhdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpjb250ZXh0RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbjo6Y2xvc2UpOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaDoKKyAgICAgICAgCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbjo6Z2V0Tm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uOjphZGROb3RpZmljYXRpb25Ub0xpc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6cmVtb3ZlTm90aWZpY2F0aW9uRnJvbUxpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6ZmlsdGVyZWRO
b3RpZmljYXRpb25MaXN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbi5oOgorCiAyMDIyLTAyLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5z
aG93Tm90aWZpY2F0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKaW5kZXggYzczMGQ5NTYzOTkxLi5lYWY5Y2I3YTE1
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uY3BwCkBAIC03Miw5ICs3MiwxMCBAQCBOb3RpZmljYXRpb246Ok5vdGlmaWNh
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRpdGxl
LAogewogICAgIGlmIChjb250ZXh0LmlzRG9jdW1lbnQoKSkKICAgICAgICAgbV9ub3RpZmljYXRp
b25Tb3VyY2UgPSBOb3RpZmljYXRpb25Tb3VyY2U6OkRvY3VtZW50OwotICAgIGVsc2UgaWYgKGNv
bnRleHQuaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSkKKyAgICBlbHNlIGlmIChjb250ZXh0
LmlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKCkpIHsKICAgICAgICAgbV9ub3RpZmljYXRpb25T
b3VyY2UgPSBOb3RpZmljYXRpb25Tb3VyY2U6OlNlcnZpY2VXb3JrZXI7Ci0gICAgZWxzZQorICAg
ICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnJlZ2lzdHJh
dGlvbigpLmFkZE5vdGlmaWNhdGlvblRvTGlzdCgqdGhpcyk7CisgICAgfSBlbHNlCiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKICAgICBpZiAoIW9wdGlvbnMuaWNvbi5p
c0VtcHR5KCkpIHsKQEAgLTg0LDcgKzg1LDQwIEBAIE5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGl0bGUsCiAg
ICAgfQogfQogCi1Ob3RpZmljYXRpb246On5Ob3RpZmljYXRpb24oKSA9IGRlZmF1bHQ7CitOb3Rp
ZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBOb3RpZmljYXRpb24mIG90aGVyKQorICAgIDog
QWN0aXZlRE9NT2JqZWN0KG90aGVyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAsIG1f
dGl0bGUob3RoZXIubV90aXRsZS5pc29sYXRlZENvcHkoKSkKKyAgICAsIG1fZGlyZWN0aW9uKG90
aGVyLm1fZGlyZWN0aW9uKQorICAgICwgbV9sYW5nKG90aGVyLm1fbGFuZy5pc29sYXRlZENvcHko
KSkKKyAgICAsIG1fYm9keShvdGhlci5tX2JvZHkuaXNvbGF0ZWRDb3B5KCkpCisgICAgLCBtX3Rh
ZyhvdGhlci5tX3RhZy5pc29sYXRlZENvcHkoKSkKKyAgICAsIG1faWNvbihvdGhlci5tX2ljb24u
aXNvbGF0ZWRDb3B5KCkpCisgICAgLCBtX3N0YXRlKG90aGVyLm1fc3RhdGUpCisgICAgLCBtX25v
dGlmaWNhdGlvblNvdXJjZShvdGhlci5tX25vdGlmaWNhdGlvblNvdXJjZSkKKyAgICAsIG1fY29u
dGV4dElkZW50aWZpZXIob3RoZXIubV9jb250ZXh0SWRlbnRpZmllcikKK3sKKyAgICBzdXNwZW5k
SWZOZWVkZWQoKTsKK30KKworTm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKCkKK3sKKyAgICBp
ZiAoYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgZG93
bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS0+cmVnaXN0cmF0aW9uKCku
cmVtb3ZlTm90aWZpY2F0aW9uRnJvbUxpc3QoKnRoaXMpOworfQorCitSZWY8Tm90aWZpY2F0aW9u
PiBOb3RpZmljYXRpb246OmNvcHlGb3JHZXROb3RpZmljYXRpb25zKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBOb3RpZmljYXRpb24oKnRoaXMpKTsKK30KKwordm9pZCBOb3Rp
ZmljYXRpb246OmNvbnRleHREZXN0cm95ZWQoKQoreworICAgIGF1dG8qIGNvbnRleHQgPSBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgUkVMRUFTRV9BU1NFUlQoY29udGV4dCk7CisgICAg
ZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS0+cmVnaXN0cmF0aW9u
KCkucmVtb3ZlTm90aWZpY2F0aW9uRnJvbUxpc3QoKnRoaXMpOworCisgICAgQWN0aXZlRE9NT2Jq
ZWN0Ojpjb250ZXh0RGVzdHJveWVkKCk7Cit9CiAKIAogdm9pZCBOb3RpZmljYXRpb246OnNob3dT
b29uKCkKQEAgLTEzMCw2ICsxNjQsOCBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6Y2xvc2UoKQogICAg
IGNhc2UgU2hvd2luZzogewogICAgICAgICBpZiAoYXV0byogY2xpZW50ID0gY2xpZW50RnJvbUNv
bnRleHQoKSkKICAgICAgICAgICAgIGNsaWVudC0+Y2FuY2VsKCp0aGlzKTsKKyAgICAgICAgaWYg
KGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgICAgICBk
b3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLT5yZWdpc3RyYXRpb24o
KS5yZW1vdmVOb3RpZmljYXRpb25Gcm9tTGlzdCgqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBjYXNlIENsb3NlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAppbmRleCAxMWZhOWZlYzE5MDQuLjAyYTM3YmZjNzZj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uaApAQCAtOTQsMTEgKzk0LDE2IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIE5vdGlmaWNhdGlvbkRhdGEgZGF0YSgpIGNvbnN0OwogCisgICAgUmVmPE5vdGlmaWNhdGlv
bj4gY29weUZvckdldE5vdGlmaWNhdGlvbnMoKSBjb25zdDsKKwogICAgIHVzaW5nIFRocmVhZFNh
ZmVSZWZDb3VudGVkOjpyZWY7CiAgICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OmRlcmVm
OwogCiBwcml2YXRlOgogICAgIE5vdGlmaWNhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgT3B0aW9ucyYpOworICAgIE5vdGlmaWNhdGlvbihj
b25zdCBOb3RpZmljYXRpb24mKTsKKworICAgIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIGZpbmFs
OwogCiAgICAgTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnRGcm9tQ29udGV4dCgpOwogICAgIEV2
ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gTm90aWZpY2F0aW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbi5jcHAKaW5kZXggNTM4OTI1NjQ2OGFlLi43MTJmNjkyNGIyNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbi5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJFdmVudExvb3AuaCIK
ICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQu
aCIKKyNpbmNsdWRlICJKU05vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJOYXZpZ2F0aW9uUHJlbG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJOb3RpZmljYXRp
b25DbGllbnQuaCIKQEAgLTI5NCwxMiArMjk1LDM3IEBAIHZvaWQgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbjo6c2hvd05vdGlmaWNhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
CiAgICAgfSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0Tm90aWZp
Y2F0aW9ucyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgR2V0Tm90aWZpY2F0aW9uT3B0
aW9ucyYgZmlsdGVyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5n
Pj4gcHJvbWlzZSkKK3ZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0Tm90aWZpY2F0
aW9ucyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBHZXROb3RpZmljYXRp
b25PcHRpb25zJiBmaWx0ZXIsIERPTVByb21pc2VEZWZlcnJlZDxJRExTZXF1ZW5jZTxJRExJbnRl
cmZhY2U8Tm90aWZpY2F0aW9uPj4+IHByb21pc2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGZpbHRl
cik7CisgICAgYXV0byBub3RpZmljYXRpb25zID0gZmlsdGVyZWROb3RpZmljYXRpb25MaXN0KGZp
bHRlci50YWcpOworICAgIGNvbnRleHQuZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6
OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBub3RpZmljYXRp
b25zID0gV1RGTW92ZShub3RpZmljYXRpb25zKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKFdURk1vdmUobm90aWZpY2F0aW9ucykpOworICAgIH0pOworfQorCit2b2lkIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmFkZE5vdGlmaWNhdGlvblRvTGlzdChOb3RpZmljYXRp
b24mIG5vdGlmaWNhdGlvbikKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fbm90aWZpY2F0aW9uTGlz
dC5hZGQoJm5vdGlmaWNhdGlvbik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5p
c05ld0VudHJ5KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpyZW1vdmVO
b3RpZmljYXRpb25Gcm9tTGlzdChOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKK3sKKyAgICAv
LyBUaGUgc2FtZSBub3RpZmljYXRpb24gbWlnaHQgdHJ5IHRvIHJlbW92ZSBpdHNlbGYgZnJvbSB0
aGlzIGxpc3QgbW9yZSB0aGFuIG9uY2UsIGFuZCB0aGF0J3MgZmluZS4KKyAgICBtX25vdGlmaWNh
dGlvbkxpc3QucmVtb3ZlKCZub3RpZmljYXRpb24pOworfQorCitWZWN0b3I8UmVmPE5vdGlmaWNh
dGlvbj4+IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmZpbHRlcmVkTm90aWZpY2F0aW9uTGlz
dChjb25zdCBTdHJpbmcmIGZpbHRlcmVkVGFnKQoreworICAgIFZlY3RvcjxSZWY8Tm90aWZpY2F0
aW9uPj4gcmVzdWx0czsKKyAgICBmb3IgKGF1dG8qIG5vdGlmaWNhdGlvbiA6IG1fbm90aWZpY2F0
aW9uTGlzdCkgeworICAgICAgICBpZiAoZmlsdGVyZWRUYWcuaXNFbXB0eSgpIHx8IG5vdGlmaWNh
dGlvbi0+dGFnKCkgPT0gZmlsdGVyZWRUYWcpCisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChu
b3RpZmljYXRpb24tPmNvcHlGb3JHZXROb3RpZmljYXRpb25zKCkpOworICAgIH0KIAotICAgIHBy
b21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbi5nZXROb3RpZmljYXRpb25zIG5vdCB5ZXQgaW1wbGVtZW50ZWQiX3MgfSk7
CisgICAgcmV0dXJuIHJlc3VsdHM7CiB9CisKICNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9O
X0VWRU5UKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaAppbmRl
eCBhM2E0YWU0NGNkZWUuLjRkOTY4ODBhZmExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRXZl
bnRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbk9wdGlvbnMuaCIKICNpbmNs
dWRlICJQdXNoUGVybWlzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbi5o
IgpAQCAtMzcsNiArMzgsOCBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
YXRhLmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRlICJUaW1lci5oIgor
I2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC05Niw3ICs5OSwxMSBAQCBwdWJsaWM6CiAgICAgfTsK
IAogICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29u
c3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgTm90aWZpY2F0aW9uT3B0aW9ucyYsIERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmKTsKLSAgICB2b2lkIGdldE5vdGlmaWNhdGlvbnMoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIGNvbnN0IEdldE5vdGlmaWNhdGlvbk9wdGlvbnMmIGZpbHRlciwgRE9NUHJv
bWlzZURlZmVycmVkPElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KTsKKyAgICB2b2lkIGdldE5v
dGlmaWNhdGlvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEdldE5vdGlmaWNhdGlv
bk9wdGlvbnMmIGZpbHRlciwgRE9NUHJvbWlzZURlZmVycmVkPElETFNlcXVlbmNlPElETEludGVy
ZmFjZTxOb3RpZmljYXRpb24+Pj4pOworCisgICAgdm9pZCBhZGROb3RpZmljYXRpb25Ub0xpc3Qo
Tm90aWZpY2F0aW9uJik7CisgICAgdm9pZCByZW1vdmVOb3RpZmljYXRpb25Gcm9tTGlzdChOb3Rp
ZmljYXRpb24mKTsKKyAgICBWZWN0b3I8UmVmPE5vdGlmaWNhdGlvbj4+IGZpbHRlcmVkTm90aWZp
Y2F0aW9uTGlzdChjb25zdCBTdHJpbmcmIGZpbHRlcmVkVGFnKTsKICNlbmRpZgogCiBwcml2YXRl
OgpAQCAtMTIwLDYgKzEyNyw3IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPFNlcnZpY2VXb3JrZXI+
IG1fYWN0aXZlV29ya2VyOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPE5hdmlnYXRpb25QcmVsb2Fk
TWFuYWdlcj4gbV9uYXZpZ2F0aW9uUHJlbG9hZDsKKyAgICBMaXN0SGFzaFNldDxOb3RpZmljYXRp
b24qPiBtX25vdGlmaWNhdGlvbkxpc3Q7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="commit-queue"
          id="478872"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>451975</attachid>
            <date>2022-02-14 18:30:53 -0800</date>
            <delta_ts>2022-02-15 09:15:33 -0800</delta_ts>
            <desc>EWS v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>15830</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkMjIwM2UyNmU0OTUuLjQ2MjU0NmEwODQyMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDIyLTAyLTE0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbXBsZW1lbnQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5nZXROb3RpZmljYXRpb25zKCku
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1NDUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL2dldG5vdGlmaWNhdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9nZXRub3RpZmljYXRpb25z
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291
cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qczoKKyAgICAgICAgKGFzeW5jIHRyeVNob3cp
OgorICAgICAgICAoYXN5bmMgZ2V0Tm90ZXMpOgorICAgICAgICAoYXN5bmMgZXZlbnQpOgorCiAy
MDIyLTAyLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBJ
bXBsZW1lbnQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5zaG93Tm90aWZpY2F0aW9uKCkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2dldG5vdGlm
aWNhdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Nl
cnZpY2UvZ2V0bm90aWZpY2F0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5mODEwOGM2ZDkwZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9nZXRub3RpZmljYXRpb25zLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDQzIEBACitUaGlzIHRlc3RzIHRoYXQgcGVyc2lzdGVudCBub3Rp
ZmljYXRpb25zIGNyZWF0ZWQgYnkgYSBzZXJ2aWNlIHdvcmtlciBhcmUgdmlzaWJsZSB0byBnZXRO
b3RpZmljYXRpb25zKCkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgTm90
aWZpY2F0aW9uLnBlcm1pc3Npb24gaXMgImdyYW50ZWQiCitHb3Qgbm90aWZpY2F0aW9ucworVGhl
cmUgYXJlIDAgbm90aWZpY2F0aW9ucworCitOb3RpZmljYXRpb24gd2FzIHNob3duCitOb3RpZmlj
YXRpb24gd2FzIHNob3duCitOb3RpZmljYXRpb24gd2FzIHNob3duCitHb3Qgbm90aWZpY2F0aW9u
cworVGhlcmUgYXJlIDMgbm90aWZpY2F0aW9ucworVGl0bGU6IEhlbGxvCitCb2R5OiBCb2R5MQor
VGFnOiB0YWctYQorVGl0bGU6IFRoZXJlCitCb2R5OiBCb2R5MgorVGFnOiB0YWctYgorVGl0bGU6
IEJ1ZGR5CitCb2R5OiBCb2R5MworVGFnOiB0YWctYgorCitHb3Qgbm90aWZpY2F0aW9ucworVGhl
cmUgYXJlIDEgbm90aWZpY2F0aW9ucworVGl0bGU6IEhlbGxvCitCb2R5OiBCb2R5MQorVGFnOiB0
YWctYQorCitHb3Qgbm90aWZpY2F0aW9ucworVGhlcmUgYXJlIDIgbm90aWZpY2F0aW9ucworVGl0
bGU6IFRoZXJlCitCb2R5OiBCb2R5MgorVGFnOiB0YWctYgorVGl0bGU6IEJ1ZGR5CitCb2R5OiBC
b2R5MworVGFnOiB0YWctYgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2UvZ2V0bm90aWZpY2F0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2UvZ2V0bm90aWZpY2F0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uMDQzZDQzMDU0MjYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvZ2V0bm90aWZpY2F0aW9ucy5odG1s
CkBAIC0wLDAgKzEsOTEgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvbm90aWZpY2F0aW9u
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBmYWlsVGhlVGVz
dChtc2cpCit7CisgICAgdGVzdEZhaWxlZChtc2cpOworICAgIGlmICh0ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5ncmFu
dFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24odGVzdFVSTCk7Cit9CisKK2Rlc2NyaXB0aW9uKCJU
aGlzIHRlc3RzIHRoYXQgcGVyc2lzdGVudCBub3RpZmljYXRpb25zIGNyZWF0ZWQgYnkgYSBzZXJ2
aWNlIHdvcmtlciBhcmUgdmlzaWJsZSB0byBnZXROb3RpZmljYXRpb25zKCkiKTsKKworc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJOb3RpZmljYXRpb24ucGVybWlzc2lvbiIsICJncmFudGVkIik7CisK
K2FzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyU2VydmljZVdvcmtlcigpIHsKKyAgICB2YXIgcmVnaXN0
cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJ3Jlc291cmNl
cy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcycpOworICAgIAorICAgIGlmICghcmVnaXN0cmF0
aW9uKQorICAgICAgICByZXR1cm4gdGVzdEZhaWxlZCgiTm8gcmVnaXN0cmF0aW9uIik7CisgICAg
CisgICAgaWYgKHJlZ2lzdHJhdGlvbi5hY3RpdmUpIHsKKyAgICAgICAgcmVnaXN0cmF0aW9uLmFj
dGl2ZS5wb3N0TWVzc2FnZSgiU3RhcnQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHZhciBpbnN0YWxsaW5nV29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisgICAgaWYg
KCFpbnN0YWxsaW5nV29ya2VyKQorICAgICAgICBmYWlsVGhlVGVzdCgiTm8gYWN0aXZlICpvciog
aW5zdGFsbGluZyB3b3JrZXIiKTsKKworICAgIGluc3RhbGxpbmdXb3JrZXIuYWRkRXZlbnRMaXN0
ZW5lcigic3RhdGVjaGFuZ2UiLCAoKSA9PiB7CisgICAgICAgIGlmIChpbnN0YWxsaW5nV29ya2Vy
LnN0YXRlID09PSAiYWN0aXZhdGVkIikgeworICAgICAgICAgICAgaW5zdGFsbGluZ1dvcmtlci5w
b3N0TWVzc2FnZSgiZ2V0bm90ZXMiKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCit2YXIgbnVt
YmVyU2hvd24gPSAwOwordmFyIG51bWJlckdvdCA9IDA7CisKK2Z1bmN0aW9uIGdvdE5vdGVzKGV2
ZW50KQoreworICAgICsrbnVtYmVyR290OworCisgICAgZGVidWcoIkdvdCBub3RpZmljYXRpb25z
Iik7CisgICAgbWVzc2FnZSA9IGV2ZW50LmRhdGEuc3BsaXQoJ3wnKQorICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgbWVzc2FnZS5sZW5ndGg7ICsraSkKKyAgICAgICAgZGVidWcobWVzc2FnZVtpXSk7
CisKKyAgICBpZiAobnVtYmVyR290ID09IDEpIHsKKyAgICAgICAgZXZlbnQuc291cmNlLnBvc3RN
ZXNzYWdlKCJ0cnlzaG93fEhlbGxvfEJvZHkxfHRhZy1hIik7CisgICAgICAgIGV2ZW50LnNvdXJj
ZS5wb3N0TWVzc2FnZSgidHJ5c2hvd3xUaGVyZXxCb2R5Mnx0YWctYiIpOworICAgICAgICBldmVu
dC5zb3VyY2UucG9zdE1lc3NhZ2UoInRyeXNob3d8QnVkZHl8Qm9keTN8dGFnLWIiKTsKKyAgICB9
IGVsc2UgaWYgKG51bWJlckdvdCA9PSA0KSB7CisgICAgICAgIHRlc3RDb21wbGV0ZWQoKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHNob3duKGV2ZW50KQoreworICAgIGRlYnVnKCJOb3RpZmljYXRp
b24gd2FzIHNob3duIik7CisgICAgKytudW1iZXJTaG93bjsKKyAgICBpZiAobnVtYmVyU2hvd24g
PT0gMikgeworICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoImdldG5vdGVzIik7Cisg
ICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiZ2V0bm90ZXN8dGFnLWEiKTsKKyAgICAg
ICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJnZXRub3Rlc3x0YWctYiIpOworICAgIH0KK30K
KworbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGV2
ZW50ID0+IHsKKyAgICB2YXIgbWVzc2FnZU5hbWUgPSBldmVudC5kYXRhLnNwbGl0KCd8JylbMF07
CisKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gImdvdG5vdGVzIikgeworICAgICAgICBnb3ROb3Rl
cyhldmVudCk7CisgICAgfSBlbHNlIGlmIChtZXNzYWdlTmFtZSA9PSAic2hvd24iKSB7CisgICAg
ICAgIHNob3duKGV2ZW50KTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygiVW5leHBlY3Rl
ZCBtZXNzYWdlOiAiICsgZXZlbnQuZGF0YSk7CisgICAgfQorfSk7CisKKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJyZWdpc3RlclNlcnZpY2VXb3JrZXIoKSI+Cis8L2JvZHk+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJj
ZXMvc2hvd25vdGlmaWNhdGlvbi13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlvbi13b3JrZXIuanMKaW5kZXgg
MTE2NzMwOTI0OGJhLi43MTI4Zjk0MDhkMTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5q
cworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMv
c2hvd25vdGlmaWNhdGlvbi13b3JrZXIuanMKQEAgLTE3LDE0ICsxNyw2MCBAQCBzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoJ25vdGlmaWNhdGlvbmNsb3NlJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsK
ICAgICBhd2FpdCBtZXNzYWdlQ2xpZW50cygiY2xvc2VkIik7CiB9KTsKIAotc2VsZi5hZGRFdmVu
dExpc3RlbmVyKCdtZXNzYWdlJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAvLyBSZXBs
eSBpZiB0aGUgc2hvdyBzdWNjZWVkZWQgb3IgZmFpbGVkLgorYXN5bmMgZnVuY3Rpb24gdHJ5U2hv
dyhtZXNzYWdlKQoreworICAgIHZhciB0aXRsZSwgYm9keSwgdGFnOworICAgIHZhciBjb21wb25l
bnRzID0gbWVzc2FnZS5zcGxpdCgnfCcpOworCisgICAgaWYgKGNvbXBvbmVudHMubGVuZ3RoID09
IDEpIHsKKyAgICAgICAgdGl0bGUgPSAiVGhpcyBpcyBhIG5vdGlmaWNhdGlvbiI7ICAgICAgICAK
KyAgICB9IGVsc2UgeworICAgICAgICB0aXRsZSA9IGNvbXBvbmVudHNbMV07CisgICAgICAgIGJv
ZHkgPSBjb21wb25lbnRzWzJdOworICAgICAgICB0YWcgPSBjb21wb25lbnRzWzNdOworICAgIH0K
KyAgICAKICAgICB0cnkgewotICAgICAgICBhd2FpdCByZWdpc3RyYXRpb24uc2hvd05vdGlmaWNh
dGlvbigiVGhpcyBpcyBhIG5vdGlmaWNhdGlvbiIpOworICAgICAgICBhd2FpdCByZWdpc3RyYXRp
b24uc2hvd05vdGlmaWNhdGlvbih0aXRsZSwgeworICAgICAgICAgICAgYm9keTogYm9keSwKKyAg
ICAgICAgICAgIHRhZzogdGFnCisgICAgICAgIH0pOwogICAgIH0gY2F0Y2goZXJyb3IpIHsKICAg
ICAgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMoInNob3dGYWlsZWQiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKICAgICBhd2FpdCBtZXNzYWdlQ2xpZW50cygic2hvd24iKTsKK30KKwor
dmFyIHNlZW5Ob3RlcyA9IG5ldyBTZXQoKTsKKworYXN5bmMgZnVuY3Rpb24gZ2V0Tm90ZXMobWVz
c2FnZSkKK3sKKyAgICB2YXIgdGFnID0gdW5kZWZpbmVkOworICAgIHZhciBjb21wb25lbnRzID0g
bWVzc2FnZS5zcGxpdCgnfCcpOworICAgIGlmIChjb21wb25lbnRzLmxlbmd0aCA9PSAyKQorICAg
ICAgICB0YWcgPSBjb21wb25lbnRzWzFdOworCisgICAgdmFyIG5vdGlmaWNhdGlvbnMgPSBhd2Fp
dCByZWdpc3RyYXRpb24uZ2V0Tm90aWZpY2F0aW9ucyh7IHRhZzogdGFnIH0pOworICAgIHZhciBy
ZXBseSA9ICJnb3Rub3Rlc3xUaGVyZSBhcmUgIiArIG5vdGlmaWNhdGlvbnMubGVuZ3RoICsgIiBu
b3RpZmljYXRpb25zfCI7CisKKyAgICBmb3IgKG5vdGlmaWNhdGlvbiBvZiBub3RpZmljYXRpb25z
KSB7CisgICAgICAgIGlmIChzZWVuTm90ZXMuaGFzKG5vdGlmaWNhdGlvbikpCisgICAgICAgICAg
ICBtZXNzYWdlQ2xpZW50cygiU2F3IHRoZSBzYW1lIG5vdGlmY2F0aW9uIHR3aWNlIHRocm91Z2gg
Z2V0Tm90aWZpY2F0aW9ucygpLCB0aGlzIHNob3VsZCBub3QgaGFwcGVuIik7CisgICAgICAgIHNl
ZW5Ob3Rlcy5hZGQobm90aWZpY2F0aW9uKQorICAgICAgICAKKyAgICAgICAgcmVwbHkgKz0gIlRp
dGxlOiAiICsgbm90aWZpY2F0aW9uLnRpdGxlICsgInwiOworICAgICAgICByZXBseSArPSAiQm9k
eTogIiArIG5vdGlmaWNhdGlvbi5ib2R5ICsgInwiOworICAgICAgICByZXBseSArPSAiVGFnOiAi
ICsgbm90aWZpY2F0aW9uLnRhZyArICJ8IjsKKyAgICB9CisgICAgYXdhaXQgbWVzc2FnZUNsaWVu
dHMocmVwbHkpOworfQorCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyBm
dW5jdGlvbihldmVudCkgeworICAgIHZhciBtZXNzYWdlTmFtZSA9IGV2ZW50LmRhdGEuc3BsaXQo
J3wnKVswXTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gInRyeXNob3ciKQorICAgICAgICBhd2Fp
dCB0cnlTaG93KGV2ZW50LmRhdGEpOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSAiZ2V0bm90ZXMi
KQorICAgICAgICBhd2FpdCBnZXROb3RlcyhldmVudC5kYXRhKTsKIH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDY1ODE5NTRjNTcyMC4uOWVkZDEzZGFkMmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMjItMDItMTQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAg
IEltcGxlbWVudCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmdldE5vdGlmaWNhdGlvbnMoKS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU0NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2dldG5vdGlmaWNhdGlvbnMuaHRtbAorCisgICAgICAg
IFVudGlsIHdlIGZpZ3VyZSBvdXQganVzdCBob3cgInBlcnNpc3RlbnQiIHdlIHdhbnQgcGVyc2lz
dGVudCBub3RpZmljYXRpb25zIGZyb20gc2VydmljZSB3b3JrZXJzIHRvIGJlLAorICAgICAgICB0
aGlzIGlzIGFuIGltcGVtZW50YXRpb24gb2YgZ2V0Tm90aWZpY2F0aW9ucygpIHRoYXQgd29ya3Mg
Zm9yIHRoZSBjdXJyZW50IHJ1bm5pbmcgb2YgdGhlIHVzZXIgYWdlbnQuCisgICAgICAgIAorICAg
ICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbjo6Y29weUZvckdldE5vdGlmaWNhdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpjb250ZXh0RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbjo6Y2xvc2UpOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaDoKKyAgICAgICAgCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbjo6Z2V0Tm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uOjphZGROb3RpZmljYXRpb25Ub0xpc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6cmVtb3ZlTm90aWZpY2F0aW9uRnJvbUxpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6ZmlsdGVyZWRO
b3RpZmljYXRpb25MaXN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbi5oOgorCiAyMDIyLTAyLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5z
aG93Tm90aWZpY2F0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKaW5kZXggYzczMGQ5NTYzOTkxLi5lYWY5Y2I3YTE1
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uY3BwCkBAIC03Miw5ICs3MiwxMCBAQCBOb3RpZmljYXRpb246Ok5vdGlmaWNh
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRpdGxl
LAogewogICAgIGlmIChjb250ZXh0LmlzRG9jdW1lbnQoKSkKICAgICAgICAgbV9ub3RpZmljYXRp
b25Tb3VyY2UgPSBOb3RpZmljYXRpb25Tb3VyY2U6OkRvY3VtZW50OwotICAgIGVsc2UgaWYgKGNv
bnRleHQuaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSkKKyAgICBlbHNlIGlmIChjb250ZXh0
LmlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKCkpIHsKICAgICAgICAgbV9ub3RpZmljYXRpb25T
b3VyY2UgPSBOb3RpZmljYXRpb25Tb3VyY2U6OlNlcnZpY2VXb3JrZXI7Ci0gICAgZWxzZQorICAg
ICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnJlZ2lzdHJh
dGlvbigpLmFkZE5vdGlmaWNhdGlvblRvTGlzdCgqdGhpcyk7CisgICAgfSBlbHNlCiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKICAgICBpZiAoIW9wdGlvbnMuaWNvbi5p
c0VtcHR5KCkpIHsKQEAgLTg0LDcgKzg1LDQwIEBAIE5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGl0bGUsCiAg
ICAgfQogfQogCi1Ob3RpZmljYXRpb246On5Ob3RpZmljYXRpb24oKSA9IGRlZmF1bHQ7CitOb3Rp
ZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBOb3RpZmljYXRpb24mIG90aGVyKQorICAgIDog
QWN0aXZlRE9NT2JqZWN0KG90aGVyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAsIG1f
dGl0bGUob3RoZXIubV90aXRsZS5pc29sYXRlZENvcHkoKSkKKyAgICAsIG1fZGlyZWN0aW9uKG90
aGVyLm1fZGlyZWN0aW9uKQorICAgICwgbV9sYW5nKG90aGVyLm1fbGFuZy5pc29sYXRlZENvcHko
KSkKKyAgICAsIG1fYm9keShvdGhlci5tX2JvZHkuaXNvbGF0ZWRDb3B5KCkpCisgICAgLCBtX3Rh
ZyhvdGhlci5tX3RhZy5pc29sYXRlZENvcHkoKSkKKyAgICAsIG1faWNvbihvdGhlci5tX2ljb24u
aXNvbGF0ZWRDb3B5KCkpCisgICAgLCBtX3N0YXRlKG90aGVyLm1fc3RhdGUpCisgICAgLCBtX25v
dGlmaWNhdGlvblNvdXJjZShvdGhlci5tX25vdGlmaWNhdGlvblNvdXJjZSkKKyAgICAsIG1fY29u
dGV4dElkZW50aWZpZXIob3RoZXIubV9jb250ZXh0SWRlbnRpZmllcikKK3sKKyAgICBzdXNwZW5k
SWZOZWVkZWQoKTsKK30KKworTm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKCkKK3sKKyAgICBp
ZiAoYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgZG93
bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS0+cmVnaXN0cmF0aW9uKCku
cmVtb3ZlTm90aWZpY2F0aW9uRnJvbUxpc3QoKnRoaXMpOworfQorCitSZWY8Tm90aWZpY2F0aW9u
PiBOb3RpZmljYXRpb246OmNvcHlGb3JHZXROb3RpZmljYXRpb25zKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBOb3RpZmljYXRpb24oKnRoaXMpKTsKK30KKwordm9pZCBOb3Rp
ZmljYXRpb246OmNvbnRleHREZXN0cm95ZWQoKQoreworICAgIGF1dG8qIGNvbnRleHQgPSBzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAgUkVMRUFTRV9BU1NFUlQoY29udGV4dCk7CisgICAg
ZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS0+cmVnaXN0cmF0aW9u
KCkucmVtb3ZlTm90aWZpY2F0aW9uRnJvbUxpc3QoKnRoaXMpOworCisgICAgQWN0aXZlRE9NT2Jq
ZWN0Ojpjb250ZXh0RGVzdHJveWVkKCk7Cit9CiAKIAogdm9pZCBOb3RpZmljYXRpb246OnNob3dT
b29uKCkKQEAgLTEzMCw2ICsxNjQsOCBAQCB2b2lkIE5vdGlmaWNhdGlvbjo6Y2xvc2UoKQogICAg
IGNhc2UgU2hvd2luZzogewogICAgICAgICBpZiAoYXV0byogY2xpZW50ID0gY2xpZW50RnJvbUNv
bnRleHQoKSkKICAgICAgICAgICAgIGNsaWVudC0+Y2FuY2VsKCp0aGlzKTsKKyAgICAgICAgaWYg
KGF1dG8qIGNvbnRleHQgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgICAgICBk
b3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLT5yZWdpc3RyYXRpb24o
KS5yZW1vdmVOb3RpZmljYXRpb25Gcm9tTGlzdCgqdGhpcyk7CiAgICAgICAgIGJyZWFrOwogICAg
IH0KICAgICBjYXNlIENsb3NlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAppbmRleCAxMWZhOWZlYzE5MDQuLjAyYTM3YmZjNzZj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlm
aWNhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uaApAQCAtOTQsMTEgKzk0LDE2IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQ
T1JUIE5vdGlmaWNhdGlvbkRhdGEgZGF0YSgpIGNvbnN0OwogCisgICAgUmVmPE5vdGlmaWNhdGlv
bj4gY29weUZvckdldE5vdGlmaWNhdGlvbnMoKSBjb25zdDsKKwogICAgIHVzaW5nIFRocmVhZFNh
ZmVSZWZDb3VudGVkOjpyZWY7CiAgICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OmRlcmVm
OwogCiBwcml2YXRlOgogICAgIE5vdGlmaWNhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgT3B0aW9ucyYpOworICAgIE5vdGlmaWNhdGlvbihj
b25zdCBOb3RpZmljYXRpb24mKTsKKworICAgIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIGZpbmFs
OwogCiAgICAgTm90aWZpY2F0aW9uQ2xpZW50KiBjbGllbnRGcm9tQ29udGV4dCgpOwogICAgIEV2
ZW50VGFyZ2V0SW50ZXJmYWNlIGV2ZW50VGFyZ2V0SW50ZXJmYWNlKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gTm90aWZpY2F0aW9uRXZlbnRUYXJnZXRJbnRlcmZhY2VUeXBlOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbi5jcHAKaW5kZXggNTM4OTI1NjQ2OGFlLi43MTJmNjkyNGIyNzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJl
Z2lzdHJhdGlvbi5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJFdmVudExvb3AuaCIK
ICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQu
aCIKKyNpbmNsdWRlICJKU05vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJOYXZpZ2F0aW9uUHJlbG9hZE1hbmFnZXIuaCIKICNpbmNsdWRlICJOb3RpZmljYXRp
b25DbGllbnQuaCIKQEAgLTI5NCwxMiArMjk1LDM3IEBAIHZvaWQgU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbjo6c2hvd05vdGlmaWNhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
CiAgICAgfSk7CiB9CiAKLXZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0Tm90aWZp
Y2F0aW9ucyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgR2V0Tm90aWZpY2F0aW9uT3B0
aW9ucyYgZmlsdGVyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5n
Pj4gcHJvbWlzZSkKK3ZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Z2V0Tm90aWZpY2F0
aW9ucyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBHZXROb3RpZmljYXRp
b25PcHRpb25zJiBmaWx0ZXIsIERPTVByb21pc2VEZWZlcnJlZDxJRExTZXF1ZW5jZTxJRExJbnRl
cmZhY2U8Tm90aWZpY2F0aW9uPj4+IHByb21pc2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGZpbHRl
cik7CisgICAgYXV0byBub3RpZmljYXRpb25zID0gZmlsdGVyZWROb3RpZmljYXRpb25MaXN0KGZp
bHRlci50YWcpOworICAgIGNvbnRleHQuZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6
OkRPTU1hbmlwdWxhdGlvbiwgW3Byb21pc2UgPSBXVEZNb3ZlKHByb21pc2UpLCBub3RpZmljYXRp
b25zID0gV1RGTW92ZShub3RpZmljYXRpb25zKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgcHJvbWlz
ZS5yZXNvbHZlKFdURk1vdmUobm90aWZpY2F0aW9ucykpOworICAgIH0pOworfQorCit2b2lkIFNl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmFkZE5vdGlmaWNhdGlvblRvTGlzdChOb3RpZmljYXRp
b24mIG5vdGlmaWNhdGlvbikKK3sKKyAgICBhdXRvIHJlc3VsdCA9IG1fbm90aWZpY2F0aW9uTGlz
dC5hZGQoJm5vdGlmaWNhdGlvbik7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5p
c05ld0VudHJ5KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpyZW1vdmVO
b3RpZmljYXRpb25Gcm9tTGlzdChOb3RpZmljYXRpb24mIG5vdGlmaWNhdGlvbikKK3sKKyAgICAv
LyBUaGUgc2FtZSBub3RpZmljYXRpb24gbWlnaHQgdHJ5IHRvIHJlbW92ZSBpdHNlbGYgZnJvbSB0
aGlzIGxpc3QgbW9yZSB0aGFuIG9uY2UsIGFuZCB0aGF0J3MgZmluZS4KKyAgICBtX25vdGlmaWNh
dGlvbkxpc3QucmVtb3ZlKCZub3RpZmljYXRpb24pOworfQorCitWZWN0b3I8UmVmPE5vdGlmaWNh
dGlvbj4+IFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb246OmZpbHRlcmVkTm90aWZpY2F0aW9uTGlz
dChjb25zdCBTdHJpbmcmIGZpbHRlcmVkVGFnKQoreworICAgIFZlY3RvcjxSZWY8Tm90aWZpY2F0
aW9uPj4gcmVzdWx0czsKKyAgICBmb3IgKGF1dG8qIG5vdGlmaWNhdGlvbiA6IG1fbm90aWZpY2F0
aW9uTGlzdCkgeworICAgICAgICBpZiAoZmlsdGVyZWRUYWcuaXNFbXB0eSgpIHx8IG5vdGlmaWNh
dGlvbi0+dGFnKCkgPT0gZmlsdGVyZWRUYWcpCisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChu
b3RpZmljYXRpb24tPmNvcHlGb3JHZXROb3RpZmljYXRpb25zKCkpOworICAgIH0KIAotICAgIHBy
b21pc2UucmVqZWN0KEV4Y2VwdGlvbiB7IE5vdFN1cHBvcnRlZEVycm9yLCAiU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbi5nZXROb3RpZmljYXRpb25zIG5vdCB5ZXQgaW1wbGVtZW50ZWQiX3MgfSk7
CisgICAgcmV0dXJuIHJlc3VsdHM7CiB9CisKICNlbmRpZiAvLyBFTkFCTEUoTk9USUZJQ0FUSU9O
X0VWRU5UKQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaAppbmRl
eCBhM2E0YWU0NGNkZWUuLjEzNGJiZGY2YTRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5oCkBAIC0z
MCw2ICszMCw3IEBACiAjaW5jbHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCiAjaW5jbHVkZSAiRXZl
bnRUYXJnZXQuaCIKICNpbmNsdWRlICJKU0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUg
Ik5vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbk9wdGlvbnMuaCIKICNpbmNs
dWRlICJQdXNoUGVybWlzc2lvblN0YXRlLmgiCiAjaW5jbHVkZSAiUHVzaFN1YnNjcmlwdGlvbi5o
IgpAQCAtMzcsNiArMzgsOCBAQAogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25E
YXRhLmgiCiAjaW5jbHVkZSAiU3VwcGxlbWVudGFibGUuaCIKICNpbmNsdWRlICJUaW1lci5oIgor
I2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC05Niw3ICs5OSwxMSBAQCBwdWJsaWM6CiAgICAgfTsK
IAogICAgIHZvaWQgc2hvd05vdGlmaWNhdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29u
c3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgTm90aWZpY2F0aW9uT3B0aW9ucyYsIERPTVByb21pc2VE
ZWZlcnJlZDx2b2lkPiYmKTsKLSAgICB2b2lkIGdldE5vdGlmaWNhdGlvbnMoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYsIGNvbnN0IEdldE5vdGlmaWNhdGlvbk9wdGlvbnMmIGZpbHRlciwgRE9NUHJv
bWlzZURlZmVycmVkPElETFNlcXVlbmNlPElETERPTVN0cmluZz4+KTsKKyAgICB2b2lkIGdldE5v
dGlmaWNhdGlvbnMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IEdldE5vdGlmaWNhdGlv
bk9wdGlvbnMmIGZpbHRlciwgRE9NUHJvbWlzZURlZmVycmVkPElETFNlcXVlbmNlPElETEludGVy
ZmFjZTxOb3RpZmljYXRpb24+Pj4pOworCisgICAgdm9pZCBhZGROb3RpZmljYXRpb25Ub0xpc3Qo
Tm90aWZpY2F0aW9uJik7CisgICAgdm9pZCByZW1vdmVOb3RpZmljYXRpb25Gcm9tTGlzdChOb3Rp
ZmljYXRpb24mKTsKKyAgICBWZWN0b3I8UmVmPE5vdGlmaWNhdGlvbj4+IGZpbHRlcmVkTm90aWZp
Y2F0aW9uTGlzdChjb25zdCBTdHJpbmcmIGZpbHRlcmVkVGFnKTsKICNlbmRpZgogCiBwcml2YXRl
OgpAQCAtMTIwLDYgKzEyNywxMCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxTZXJ2aWNlV29ya2Vy
PiBtX2FjdGl2ZVdvcmtlcjsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxOYXZpZ2F0aW9uUHJlbG9h
ZE1hbmFnZXI+IG1fbmF2aWdhdGlvblByZWxvYWQ7CisKKyNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
X0VWRU5UKQorICAgIExpc3RIYXNoU2V0PE5vdGlmaWNhdGlvbio+IG1fbm90aWZpY2F0aW9uTGlz
dDsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>
<flag name="commit-queue"
          id="478892"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452032</attachid>
            <date>2022-02-15 09:15:33 -0800</date>
            <delta_ts>2022-02-15 11:55:05 -0800</delta_ts>
            <desc>EWS v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>16021</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkMjIwM2UyNmU0OTUuLjQ2MjU0NmEwODQyMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDIyLTAyLTE0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbXBsZW1lbnQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5nZXROb3RpZmljYXRpb25zKCku
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1NDUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL2dldG5vdGlmaWNhdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9nZXRub3RpZmljYXRpb25z
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291
cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qczoKKyAgICAgICAgKGFzeW5jIHRyeVNob3cp
OgorICAgICAgICAoYXN5bmMgZ2V0Tm90ZXMpOgorICAgICAgICAoYXN5bmMgZXZlbnQpOgorCiAy
MDIyLTAyLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBJ
bXBsZW1lbnQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5zaG93Tm90aWZpY2F0aW9uKCkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2dldG5vdGlm
aWNhdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Nl
cnZpY2UvZ2V0bm90aWZpY2F0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5mODEwOGM2ZDkwZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9nZXRub3RpZmljYXRpb25zLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDQzIEBACitUaGlzIHRlc3RzIHRoYXQgcGVyc2lzdGVudCBub3Rp
ZmljYXRpb25zIGNyZWF0ZWQgYnkgYSBzZXJ2aWNlIHdvcmtlciBhcmUgdmlzaWJsZSB0byBnZXRO
b3RpZmljYXRpb25zKCkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgTm90
aWZpY2F0aW9uLnBlcm1pc3Npb24gaXMgImdyYW50ZWQiCitHb3Qgbm90aWZpY2F0aW9ucworVGhl
cmUgYXJlIDAgbm90aWZpY2F0aW9ucworCitOb3RpZmljYXRpb24gd2FzIHNob3duCitOb3RpZmlj
YXRpb24gd2FzIHNob3duCitOb3RpZmljYXRpb24gd2FzIHNob3duCitHb3Qgbm90aWZpY2F0aW9u
cworVGhlcmUgYXJlIDMgbm90aWZpY2F0aW9ucworVGl0bGU6IEhlbGxvCitCb2R5OiBCb2R5MQor
VGFnOiB0YWctYQorVGl0bGU6IFRoZXJlCitCb2R5OiBCb2R5MgorVGFnOiB0YWctYgorVGl0bGU6
IEJ1ZGR5CitCb2R5OiBCb2R5MworVGFnOiB0YWctYgorCitHb3Qgbm90aWZpY2F0aW9ucworVGhl
cmUgYXJlIDEgbm90aWZpY2F0aW9ucworVGl0bGU6IEhlbGxvCitCb2R5OiBCb2R5MQorVGFnOiB0
YWctYQorCitHb3Qgbm90aWZpY2F0aW9ucworVGhlcmUgYXJlIDIgbm90aWZpY2F0aW9ucworVGl0
bGU6IFRoZXJlCitCb2R5OiBCb2R5MgorVGFnOiB0YWctYgorVGl0bGU6IEJ1ZGR5CitCb2R5OiBC
b2R5MworVGFnOiB0YWctYgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2UvZ2V0bm90aWZpY2F0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2UvZ2V0bm90aWZpY2F0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uMDQzZDQzMDU0MjYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvZ2V0bm90aWZpY2F0aW9ucy5odG1s
CkBAIC0wLDAgKzEsOTEgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvbm90aWZpY2F0aW9u
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBmYWlsVGhlVGVz
dChtc2cpCit7CisgICAgdGVzdEZhaWxlZChtc2cpOworICAgIGlmICh0ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5ncmFu
dFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24odGVzdFVSTCk7Cit9CisKK2Rlc2NyaXB0aW9uKCJU
aGlzIHRlc3RzIHRoYXQgcGVyc2lzdGVudCBub3RpZmljYXRpb25zIGNyZWF0ZWQgYnkgYSBzZXJ2
aWNlIHdvcmtlciBhcmUgdmlzaWJsZSB0byBnZXROb3RpZmljYXRpb25zKCkiKTsKKworc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJOb3RpZmljYXRpb24ucGVybWlzc2lvbiIsICJncmFudGVkIik7CisK
K2FzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyU2VydmljZVdvcmtlcigpIHsKKyAgICB2YXIgcmVnaXN0
cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJ3Jlc291cmNl
cy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcycpOworICAgIAorICAgIGlmICghcmVnaXN0cmF0
aW9uKQorICAgICAgICByZXR1cm4gdGVzdEZhaWxlZCgiTm8gcmVnaXN0cmF0aW9uIik7CisgICAg
CisgICAgaWYgKHJlZ2lzdHJhdGlvbi5hY3RpdmUpIHsKKyAgICAgICAgcmVnaXN0cmF0aW9uLmFj
dGl2ZS5wb3N0TWVzc2FnZSgiU3RhcnQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHZhciBpbnN0YWxsaW5nV29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisgICAgaWYg
KCFpbnN0YWxsaW5nV29ya2VyKQorICAgICAgICBmYWlsVGhlVGVzdCgiTm8gYWN0aXZlICpvciog
aW5zdGFsbGluZyB3b3JrZXIiKTsKKworICAgIGluc3RhbGxpbmdXb3JrZXIuYWRkRXZlbnRMaXN0
ZW5lcigic3RhdGVjaGFuZ2UiLCAoKSA9PiB7CisgICAgICAgIGlmIChpbnN0YWxsaW5nV29ya2Vy
LnN0YXRlID09PSAiYWN0aXZhdGVkIikgeworICAgICAgICAgICAgaW5zdGFsbGluZ1dvcmtlci5w
b3N0TWVzc2FnZSgiZ2V0bm90ZXMiKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCit2YXIgbnVt
YmVyU2hvd24gPSAwOwordmFyIG51bWJlckdvdCA9IDA7CisKK2Z1bmN0aW9uIGdvdE5vdGVzKGV2
ZW50KQoreworICAgICsrbnVtYmVyR290OworCisgICAgZGVidWcoIkdvdCBub3RpZmljYXRpb25z
Iik7CisgICAgbWVzc2FnZSA9IGV2ZW50LmRhdGEuc3BsaXQoJ3wnKQorICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgbWVzc2FnZS5sZW5ndGg7ICsraSkKKyAgICAgICAgZGVidWcobWVzc2FnZVtpXSk7
CisKKyAgICBpZiAobnVtYmVyR290ID09IDEpIHsKKyAgICAgICAgZXZlbnQuc291cmNlLnBvc3RN
ZXNzYWdlKCJ0cnlzaG93fEhlbGxvfEJvZHkxfHRhZy1hIik7CisgICAgICAgIGV2ZW50LnNvdXJj
ZS5wb3N0TWVzc2FnZSgidHJ5c2hvd3xUaGVyZXxCb2R5Mnx0YWctYiIpOworICAgICAgICBldmVu
dC5zb3VyY2UucG9zdE1lc3NhZ2UoInRyeXNob3d8QnVkZHl8Qm9keTN8dGFnLWIiKTsKKyAgICB9
IGVsc2UgaWYgKG51bWJlckdvdCA9PSA0KSB7CisgICAgICAgIHRlc3RDb21wbGV0ZWQoKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHNob3duKGV2ZW50KQoreworICAgIGRlYnVnKCJOb3RpZmljYXRp
b24gd2FzIHNob3duIik7CisgICAgKytudW1iZXJTaG93bjsKKyAgICBpZiAobnVtYmVyU2hvd24g
PT0gMikgeworICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoImdldG5vdGVzIik7Cisg
ICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiZ2V0bm90ZXN8dGFnLWEiKTsKKyAgICAg
ICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJnZXRub3Rlc3x0YWctYiIpOworICAgIH0KK30K
KworbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGV2
ZW50ID0+IHsKKyAgICB2YXIgbWVzc2FnZU5hbWUgPSBldmVudC5kYXRhLnNwbGl0KCd8JylbMF07
CisKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gImdvdG5vdGVzIikgeworICAgICAgICBnb3ROb3Rl
cyhldmVudCk7CisgICAgfSBlbHNlIGlmIChtZXNzYWdlTmFtZSA9PSAic2hvd24iKSB7CisgICAg
ICAgIHNob3duKGV2ZW50KTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygiVW5leHBlY3Rl
ZCBtZXNzYWdlOiAiICsgZXZlbnQuZGF0YSk7CisgICAgfQorfSk7CisKKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJyZWdpc3RlclNlcnZpY2VXb3JrZXIoKSI+Cis8L2JvZHk+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJj
ZXMvc2hvd25vdGlmaWNhdGlvbi13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlvbi13b3JrZXIuanMKaW5kZXgg
MTE2NzMwOTI0OGJhLi43MTI4Zjk0MDhkMTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5q
cworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMv
c2hvd25vdGlmaWNhdGlvbi13b3JrZXIuanMKQEAgLTE3LDE0ICsxNyw2MCBAQCBzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoJ25vdGlmaWNhdGlvbmNsb3NlJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsK
ICAgICBhd2FpdCBtZXNzYWdlQ2xpZW50cygiY2xvc2VkIik7CiB9KTsKIAotc2VsZi5hZGRFdmVu
dExpc3RlbmVyKCdtZXNzYWdlJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAvLyBSZXBs
eSBpZiB0aGUgc2hvdyBzdWNjZWVkZWQgb3IgZmFpbGVkLgorYXN5bmMgZnVuY3Rpb24gdHJ5U2hv
dyhtZXNzYWdlKQoreworICAgIHZhciB0aXRsZSwgYm9keSwgdGFnOworICAgIHZhciBjb21wb25l
bnRzID0gbWVzc2FnZS5zcGxpdCgnfCcpOworCisgICAgaWYgKGNvbXBvbmVudHMubGVuZ3RoID09
IDEpIHsKKyAgICAgICAgdGl0bGUgPSAiVGhpcyBpcyBhIG5vdGlmaWNhdGlvbiI7ICAgICAgICAK
KyAgICB9IGVsc2UgeworICAgICAgICB0aXRsZSA9IGNvbXBvbmVudHNbMV07CisgICAgICAgIGJv
ZHkgPSBjb21wb25lbnRzWzJdOworICAgICAgICB0YWcgPSBjb21wb25lbnRzWzNdOworICAgIH0K
KyAgICAKICAgICB0cnkgewotICAgICAgICBhd2FpdCByZWdpc3RyYXRpb24uc2hvd05vdGlmaWNh
dGlvbigiVGhpcyBpcyBhIG5vdGlmaWNhdGlvbiIpOworICAgICAgICBhd2FpdCByZWdpc3RyYXRp
b24uc2hvd05vdGlmaWNhdGlvbih0aXRsZSwgeworICAgICAgICAgICAgYm9keTogYm9keSwKKyAg
ICAgICAgICAgIHRhZzogdGFnCisgICAgICAgIH0pOwogICAgIH0gY2F0Y2goZXJyb3IpIHsKICAg
ICAgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMoInNob3dGYWlsZWQiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKICAgICBhd2FpdCBtZXNzYWdlQ2xpZW50cygic2hvd24iKTsKK30KKwor
dmFyIHNlZW5Ob3RlcyA9IG5ldyBTZXQoKTsKKworYXN5bmMgZnVuY3Rpb24gZ2V0Tm90ZXMobWVz
c2FnZSkKK3sKKyAgICB2YXIgdGFnID0gdW5kZWZpbmVkOworICAgIHZhciBjb21wb25lbnRzID0g
bWVzc2FnZS5zcGxpdCgnfCcpOworICAgIGlmIChjb21wb25lbnRzLmxlbmd0aCA9PSAyKQorICAg
ICAgICB0YWcgPSBjb21wb25lbnRzWzFdOworCisgICAgdmFyIG5vdGlmaWNhdGlvbnMgPSBhd2Fp
dCByZWdpc3RyYXRpb24uZ2V0Tm90aWZpY2F0aW9ucyh7IHRhZzogdGFnIH0pOworICAgIHZhciBy
ZXBseSA9ICJnb3Rub3Rlc3xUaGVyZSBhcmUgIiArIG5vdGlmaWNhdGlvbnMubGVuZ3RoICsgIiBu
b3RpZmljYXRpb25zfCI7CisKKyAgICBmb3IgKG5vdGlmaWNhdGlvbiBvZiBub3RpZmljYXRpb25z
KSB7CisgICAgICAgIGlmIChzZWVuTm90ZXMuaGFzKG5vdGlmaWNhdGlvbikpCisgICAgICAgICAg
ICBtZXNzYWdlQ2xpZW50cygiU2F3IHRoZSBzYW1lIG5vdGlmY2F0aW9uIHR3aWNlIHRocm91Z2gg
Z2V0Tm90aWZpY2F0aW9ucygpLCB0aGlzIHNob3VsZCBub3QgaGFwcGVuIik7CisgICAgICAgIHNl
ZW5Ob3Rlcy5hZGQobm90aWZpY2F0aW9uKQorICAgICAgICAKKyAgICAgICAgcmVwbHkgKz0gIlRp
dGxlOiAiICsgbm90aWZpY2F0aW9uLnRpdGxlICsgInwiOworICAgICAgICByZXBseSArPSAiQm9k
eTogIiArIG5vdGlmaWNhdGlvbi5ib2R5ICsgInwiOworICAgICAgICByZXBseSArPSAiVGFnOiAi
ICsgbm90aWZpY2F0aW9uLnRhZyArICJ8IjsKKyAgICB9CisgICAgYXdhaXQgbWVzc2FnZUNsaWVu
dHMocmVwbHkpOworfQorCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyBm
dW5jdGlvbihldmVudCkgeworICAgIHZhciBtZXNzYWdlTmFtZSA9IGV2ZW50LmRhdGEuc3BsaXQo
J3wnKVswXTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gInRyeXNob3ciKQorICAgICAgICBhd2Fp
dCB0cnlTaG93KGV2ZW50LmRhdGEpOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSAiZ2V0bm90ZXMi
KQorICAgICAgICBhd2FpdCBnZXROb3RlcyhldmVudC5kYXRhKTsKIH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDY1ODE5NTRjNTcyMC4uOWVkZDEzZGFkMmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMjItMDItMTQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAg
IEltcGxlbWVudCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmdldE5vdGlmaWNhdGlvbnMoKS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU0NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2dldG5vdGlmaWNhdGlvbnMuaHRtbAorCisgICAgICAg
IFVudGlsIHdlIGZpZ3VyZSBvdXQganVzdCBob3cgInBlcnNpc3RlbnQiIHdlIHdhbnQgcGVyc2lz
dGVudCBub3RpZmljYXRpb25zIGZyb20gc2VydmljZSB3b3JrZXJzIHRvIGJlLAorICAgICAgICB0
aGlzIGlzIGFuIGltcGVtZW50YXRpb24gb2YgZ2V0Tm90aWZpY2F0aW9ucygpIHRoYXQgd29ya3Mg
Zm9yIHRoZSBjdXJyZW50IHJ1bm5pbmcgb2YgdGhlIHVzZXIgYWdlbnQuCisgICAgICAgIAorICAg
ICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbjo6Y29weUZvckdldE5vdGlmaWNhdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpjb250ZXh0RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbjo6Y2xvc2UpOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaDoKKyAgICAgICAgCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbjo6Z2V0Tm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uOjphZGROb3RpZmljYXRpb25Ub0xpc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6cmVtb3ZlTm90aWZpY2F0aW9uRnJvbUxpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6ZmlsdGVyZWRO
b3RpZmljYXRpb25MaXN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbi5oOgorCiAyMDIyLTAyLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5z
aG93Tm90aWZpY2F0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKaW5kZXggYzczMGQ5NTYzOTkxLi41NmMzMjQzMjlh
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uY3BwCkBAIC03Miw5ICs3MiwxMCBAQCBOb3RpZmljYXRpb246Ok5vdGlmaWNh
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRpdGxl
LAogewogICAgIGlmIChjb250ZXh0LmlzRG9jdW1lbnQoKSkKICAgICAgICAgbV9ub3RpZmljYXRp
b25Tb3VyY2UgPSBOb3RpZmljYXRpb25Tb3VyY2U6OkRvY3VtZW50OwotICAgIGVsc2UgaWYgKGNv
bnRleHQuaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSkKKyAgICBlbHNlIGlmIChjb250ZXh0
LmlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKCkpIHsKICAgICAgICAgbV9ub3RpZmljYXRpb25T
b3VyY2UgPSBOb3RpZmljYXRpb25Tb3VyY2U6OlNlcnZpY2VXb3JrZXI7Ci0gICAgZWxzZQorICAg
ICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnJlZ2lzdHJh
dGlvbigpLmFkZE5vdGlmaWNhdGlvblRvTGlzdCgqdGhpcyk7CisgICAgfSBlbHNlCiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKICAgICBpZiAoIW9wdGlvbnMuaWNvbi5p
c0VtcHR5KCkpIHsKQEAgLTg0LDcgKzg1LDQzIEBAIE5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGl0bGUsCiAg
ICAgfQogfQogCi1Ob3RpZmljYXRpb246On5Ob3RpZmljYXRpb24oKSA9IGRlZmF1bHQ7CitOb3Rp
ZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBOb3RpZmljYXRpb24mIG90aGVyKQorICAgIDog
QWN0aXZlRE9NT2JqZWN0KG90aGVyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAsIG1f
dGl0bGUob3RoZXIubV90aXRsZS5pc29sYXRlZENvcHkoKSkKKyAgICAsIG1fZGlyZWN0aW9uKG90
aGVyLm1fZGlyZWN0aW9uKQorICAgICwgbV9sYW5nKG90aGVyLm1fbGFuZy5pc29sYXRlZENvcHko
KSkKKyAgICAsIG1fYm9keShvdGhlci5tX2JvZHkuaXNvbGF0ZWRDb3B5KCkpCisgICAgLCBtX3Rh
ZyhvdGhlci5tX3RhZy5pc29sYXRlZENvcHkoKSkKKyAgICAsIG1faWNvbihvdGhlci5tX2ljb24u
aXNvbGF0ZWRDb3B5KCkpCisgICAgLCBtX3N0YXRlKG90aGVyLm1fc3RhdGUpCisgICAgLCBtX25v
dGlmaWNhdGlvblNvdXJjZShvdGhlci5tX25vdGlmaWNhdGlvblNvdXJjZSkKKyAgICAsIG1fY29u
dGV4dElkZW50aWZpZXIob3RoZXIubV9jb250ZXh0SWRlbnRpZmllcikKK3sKKyAgICBzdXNwZW5k
SWZOZWVkZWQoKTsKK30KKworTm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKCkKK3sKKyAgICBp
ZiAoYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgeworICAgICAgICBp
ZiAoY29udGV4dC0+aXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSkKKyAgICAgICAgICAgIGRv
d25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCktPnJlZ2lzdHJhdGlvbigp
LnJlbW92ZU5vdGlmaWNhdGlvbkZyb21MaXN0KCp0aGlzKTsKKyAgICB9Cit9CisKK1JlZjxOb3Rp
ZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y29weUZvckdldE5vdGlmaWNhdGlvbnMoKSBjb25zdAor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5vdGlmaWNhdGlvbigqdGhpcykpOworfQorCit2
b2lkIE5vdGlmaWNhdGlvbjo6Y29udGV4dERlc3Ryb3llZCgpCit7CisgICAgYXV0byogY29udGV4
dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjb250ZXh0
KTsKKyAgICBpZiAoY29udGV4dC0+aXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSkKKyAgICAg
ICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS0+cmVnaXN0cmF0
aW9uKCkucmVtb3ZlTm90aWZpY2F0aW9uRnJvbUxpc3QoKnRoaXMpOworCisgICAgQWN0aXZlRE9N
T2JqZWN0Ojpjb250ZXh0RGVzdHJveWVkKCk7Cit9CiAKIAogdm9pZCBOb3RpZmljYXRpb246OnNo
b3dTb29uKCkKQEAgLTEzMCw2ICsxNjcsMTAgQEAgdm9pZCBOb3RpZmljYXRpb246OmNsb3NlKCkK
ICAgICBjYXNlIFNob3dpbmc6IHsKICAgICAgICAgaWYgKGF1dG8qIGNsaWVudCA9IGNsaWVudEZy
b21Db250ZXh0KCkpCiAgICAgICAgICAgICBjbGllbnQtPmNhbmNlbCgqdGhpcyk7CisgICAgICAg
IGlmIChhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CisgICAgICAg
ICAgICBpZiAoY29udGV4dC0+aXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSkKKyAgICAgICAg
ICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLT5yZWdp
c3RyYXRpb24oKS5yZW1vdmVOb3RpZmljYXRpb25Gcm9tTGlzdCgqdGhpcyk7CisgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ2xvc2VkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCmluZGV4IDExZmE5
ZmVjMTkwNC4uMDJhMzdiZmM3NmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCkBAIC05NCwxMSArOTQsMTYgQEAgcHVibGlj
OgogCiAgICAgV0VCQ09SRV9FWFBPUlQgTm90aWZpY2F0aW9uRGF0YSBkYXRhKCkgY29uc3Q7CiAK
KyAgICBSZWY8Tm90aWZpY2F0aW9uPiBjb3B5Rm9yR2V0Tm90aWZpY2F0aW9ucygpIGNvbnN0Owor
CiAgICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBUaHJlYWRT
YWZlUmVmQ291bnRlZDo6ZGVyZWY7CiAKIHByaXZhdGU6CiAgICAgTm90aWZpY2F0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBPcHRpb25zJik7
CisgICAgTm90aWZpY2F0aW9uKGNvbnN0IE5vdGlmaWNhdGlvbiYpOworCisgICAgdm9pZCBjb250
ZXh0RGVzdHJveWVkKCkgZmluYWw7CiAKICAgICBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudEZy
b21Db250ZXh0KCk7CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZh
Y2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBOb3RpZmljYXRpb25FdmVudFRhcmdldEludGVyZmFj
ZVR5cGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcAppbmRleCA1Mzg5MjU2NDY4YWUuLjcxMmY2
OTI0YjI3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJK
U0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIkpTTm90aWZpY2F0aW9uLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25QcmVsb2FkTWFuYWdlci5oIgog
I2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgpAQCAtMjk0LDEyICsyOTUsMzcgQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQKICAgICB9KTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uOjpnZXROb3RpZmljYXRpb25zKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25z
dCBHZXROb3RpZmljYXRpb25PcHRpb25zJiBmaWx0ZXIsIERPTVByb21pc2VEZWZlcnJlZDxJRExT
ZXF1ZW5jZTxJRExET01TdHJpbmc+PiBwcm9taXNlKQordm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uOjpnZXROb3RpZmljYXRpb25zKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEdldE5vdGlmaWNhdGlvbk9wdGlvbnMmIGZpbHRlciwgRE9NUHJvbWlzZURlZmVycmVk
PElETFNlcXVlbmNlPElETEludGVyZmFjZTxOb3RpZmljYXRpb24+Pj4gcHJvbWlzZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oZmlsdGVyKTsKKyAgICBhdXRvIG5vdGlmaWNhdGlvbnMgPSBmaWx0ZXJl
ZE5vdGlmaWNhdGlvbkxpc3QoZmlsdGVyLnRhZyk7CisgICAgY29udGV4dC5ldmVudExvb3AoKS5x
dWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIG5vdGlmaWNhdGlvbnMgPSBXVEZNb3ZlKG5vdGlmaWNhdGlvbnMpXSgpIG11dGFi
bGUgeworICAgICAgICBwcm9taXNlLnJlc29sdmUoV1RGTW92ZShub3RpZmljYXRpb25zKSk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6YWRkTm90aWZpY2F0
aW9uVG9MaXN0KE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uKQoreworICAgIGF1dG8gcmVzdWx0
ID0gbV9ub3RpZmljYXRpb25MaXN0LmFkZCgmbm90aWZpY2F0aW9uKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb246OnJlbW92ZU5vdGlmaWNhdGlvbkZyb21MaXN0KE5vdGlmaWNhdGlvbiYgbm90
aWZpY2F0aW9uKQoreworICAgIC8vIFRoZSBzYW1lIG5vdGlmaWNhdGlvbiBtaWdodCB0cnkgdG8g
cmVtb3ZlIGl0c2VsZiBmcm9tIHRoaXMgbGlzdCBtb3JlIHRoYW4gb25jZSwgYW5kIHRoYXQncyBm
aW5lLgorICAgIG1fbm90aWZpY2F0aW9uTGlzdC5yZW1vdmUoJm5vdGlmaWNhdGlvbik7Cit9CisK
K1ZlY3RvcjxSZWY8Tm90aWZpY2F0aW9uPj4gU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6Zmls
dGVyZWROb3RpZmljYXRpb25MaXN0KGNvbnN0IFN0cmluZyYgZmlsdGVyZWRUYWcpCit7CisgICAg
VmVjdG9yPFJlZjxOb3RpZmljYXRpb24+PiByZXN1bHRzOworICAgIGZvciAoYXV0byogbm90aWZp
Y2F0aW9uIDogbV9ub3RpZmljYXRpb25MaXN0KSB7CisgICAgICAgIGlmIChmaWx0ZXJlZFRhZy5p
c0VtcHR5KCkgfHwgbm90aWZpY2F0aW9uLT50YWcoKSA9PSBmaWx0ZXJlZFRhZykKKyAgICAgICAg
ICAgIHJlc3VsdHMuYXBwZW5kKG5vdGlmaWNhdGlvbi0+Y29weUZvckdldE5vdGlmaWNhdGlvbnMo
KSk7CisgICAgfQogCi0gICAgcHJvbWlzZS5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVk
RXJyb3IsICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmdldE5vdGlmaWNhdGlvbnMgbm90IHll
dCBpbXBsZW1lbnRlZCJfcyB9KTsKKyAgICByZXR1cm4gcmVzdWx0czsKIH0KKwogI2VuZGlmIC8v
IEVOQUJMRShOT1RJRklDQVRJT05fRVZFTlQpCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbi5oCmluZGV4IGEzYTRhZTQ0Y2RlZS4uMTM0YmJkZjZhNGRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJh
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2Vy
UmVnaXN0cmF0aW9uLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJBY3RpdmVET01PYmpl
Y3QuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkpTRE9NUHJvbWlzZURl
ZmVycmVkLmgiCisjaW5jbHVkZSAiTm90aWZpY2F0aW9uLmgiCiAjaW5jbHVkZSAiTm90aWZpY2F0
aW9uT3B0aW9ucy5oIgogI2luY2x1ZGUgIlB1c2hQZXJtaXNzaW9uU3RhdGUuaCIKICNpbmNsdWRl
ICJQdXNoU3Vic2NyaXB0aW9uLmgiCkBAIC0zNyw2ICszOCw4IEBACiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEuaCIKICNpbmNsdWRlICJTdXBwbGVtZW50YWJsZS5oIgog
I2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTk2LDcgKzk5LDEx
IEBAIHB1YmxpYzoKICAgICB9OwogCiAgICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBOb3RpZmljYXRpb25P
cHRpb25zJiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwotICAgIHZvaWQgZ2V0Tm90aWZp
Y2F0aW9ucyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgR2V0Tm90aWZpY2F0aW9uT3B0
aW9ucyYgZmlsdGVyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5n
Pj4pOworICAgIHZvaWQgZ2V0Tm90aWZpY2F0aW9ucyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
Y29uc3QgR2V0Tm90aWZpY2F0aW9uT3B0aW9ucyYgZmlsdGVyLCBET01Qcm9taXNlRGVmZXJyZWQ8
SURMU2VxdWVuY2U8SURMSW50ZXJmYWNlPE5vdGlmaWNhdGlvbj4+Pik7CisKKyAgICB2b2lkIGFk
ZE5vdGlmaWNhdGlvblRvTGlzdChOb3RpZmljYXRpb24mKTsKKyAgICB2b2lkIHJlbW92ZU5vdGlm
aWNhdGlvbkZyb21MaXN0KE5vdGlmaWNhdGlvbiYpOworICAgIFZlY3RvcjxSZWY8Tm90aWZpY2F0
aW9uPj4gZmlsdGVyZWROb3RpZmljYXRpb25MaXN0KGNvbnN0IFN0cmluZyYgZmlsdGVyZWRUYWcp
OwogI2VuZGlmCiAKIHByaXZhdGU6CkBAIC0xMjAsNiArMTI3LDEwIEBAIHByaXZhdGU6CiAgICAg
UmVmUHRyPFNlcnZpY2VXb3JrZXI+IG1fYWN0aXZlV29ya2VyOwogCiAgICAgc3RkOjp1bmlxdWVf
cHRyPE5hdmlnYXRpb25QcmVsb2FkTWFuYWdlcj4gbV9uYXZpZ2F0aW9uUHJlbG9hZDsKKworI2lm
IEVOQUJMRShOT1RJRklDQVRJT05fRVZFTlQpCisgICAgTGlzdEhhc2hTZXQ8Tm90aWZpY2F0aW9u
Kj4gbV9ub3RpZmljYXRpb25MaXN0OworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>452071</attachid>
            <date>2022-02-15 11:55:05 -0800</date>
            <delta_ts>2022-02-15 17:26:40 -0800</delta_ts>
            <desc>PFR</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>16692</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkMjIwM2UyNmU0OTUuLjQ2MjU0NmEwODQyMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDIyLTAyLTE0ICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAg
ICBJbXBsZW1lbnQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5nZXROb3RpZmljYXRpb25zKCku
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY1NDUK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGh0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL2dldG5vdGlmaWNhdGlvbnMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9nZXRub3RpZmljYXRpb25z
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291
cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qczoKKyAgICAgICAgKGFzeW5jIHRyeVNob3cp
OgorICAgICAgICAoYXN5bmMgZ2V0Tm90ZXMpOgorICAgICAgICAoYXN5bmMgZXZlbnQpOgorCiAy
MDIyLTAyLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBJ
bXBsZW1lbnQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5zaG93Tm90aWZpY2F0aW9uKCkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2dldG5vdGlm
aWNhdGlvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3Nl
cnZpY2UvZ2V0bm90aWZpY2F0aW9ucy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwLi5mODEwOGM2ZDkwZTIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9nZXRub3RpZmljYXRpb25zLWV4cGVj
dGVkLnR4dApAQCAtMCwwICsxLDQzIEBACitUaGlzIHRlc3RzIHRoYXQgcGVyc2lzdGVudCBub3Rp
ZmljYXRpb25zIGNyZWF0ZWQgYnkgYSBzZXJ2aWNlIHdvcmtlciBhcmUgdmlzaWJsZSB0byBnZXRO
b3RpZmljYXRpb25zKCkKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgTm90
aWZpY2F0aW9uLnBlcm1pc3Npb24gaXMgImdyYW50ZWQiCitHb3Qgbm90aWZpY2F0aW9ucworVGhl
cmUgYXJlIDAgbm90aWZpY2F0aW9ucworCitOb3RpZmljYXRpb24gd2FzIHNob3duCitOb3RpZmlj
YXRpb24gd2FzIHNob3duCitOb3RpZmljYXRpb24gd2FzIHNob3duCitHb3Qgbm90aWZpY2F0aW9u
cworVGhlcmUgYXJlIDMgbm90aWZpY2F0aW9ucworVGl0bGU6IEhlbGxvCitCb2R5OiBCb2R5MQor
VGFnOiB0YWctYQorVGl0bGU6IFRoZXJlCitCb2R5OiBCb2R5MgorVGFnOiB0YWctYgorVGl0bGU6
IEJ1ZGR5CitCb2R5OiBCb2R5MworVGFnOiB0YWctYgorCitHb3Qgbm90aWZpY2F0aW9ucworVGhl
cmUgYXJlIDEgbm90aWZpY2F0aW9ucworVGl0bGU6IEhlbGxvCitCb2R5OiBCb2R5MQorVGFnOiB0
YWctYQorCitHb3Qgbm90aWZpY2F0aW9ucworVGhlcmUgYXJlIDIgbm90aWZpY2F0aW9ucworVGl0
bGU6IFRoZXJlCitCb2R5OiBCb2R5MgorVGFnOiB0YWctYgorVGl0bGU6IEJ1ZGR5CitCb2R5OiBC
b2R5MworVGFnOiB0YWctYgorCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RF
U1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJz
L3NlcnZpY2UvZ2V0bm90aWZpY2F0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy93
b3JrZXJzL3NlcnZpY2UvZ2V0bm90aWZpY2F0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMC4uMDQzZDQzMDU0MjYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy93b3JrZXJzL3NlcnZpY2UvZ2V0bm90aWZpY2F0aW9ucy5odG1s
CkBAIC0wLDAgKzEsOTEgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvbm90aWZpY2F0aW9u
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBmYWlsVGhlVGVz
dChtc2cpCit7CisgICAgdGVzdEZhaWxlZChtc2cpOworICAgIGlmICh0ZXN0UnVubmVyKQorICAg
ICAgICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KKworaWYgKHdpbmRvdy50ZXN0UnVubmVy
KSB7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5ncmFu
dFdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24odGVzdFVSTCk7Cit9CisKK2Rlc2NyaXB0aW9uKCJU
aGlzIHRlc3RzIHRoYXQgcGVyc2lzdGVudCBub3RpZmljYXRpb25zIGNyZWF0ZWQgYnkgYSBzZXJ2
aWNlIHdvcmtlciBhcmUgdmlzaWJsZSB0byBnZXROb3RpZmljYXRpb25zKCkiKTsKKworc2hvdWxk
QmVFcXVhbFRvU3RyaW5nKCJOb3RpZmljYXRpb24ucGVybWlzc2lvbiIsICJncmFudGVkIik7CisK
K2FzeW5jIGZ1bmN0aW9uIHJlZ2lzdGVyU2VydmljZVdvcmtlcigpIHsKKyAgICB2YXIgcmVnaXN0
cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJ3Jlc291cmNl
cy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5qcycpOworICAgIAorICAgIGlmICghcmVnaXN0cmF0
aW9uKQorICAgICAgICByZXR1cm4gdGVzdEZhaWxlZCgiTm8gcmVnaXN0cmF0aW9uIik7CisgICAg
CisgICAgaWYgKHJlZ2lzdHJhdGlvbi5hY3RpdmUpIHsKKyAgICAgICAgcmVnaXN0cmF0aW9uLmFj
dGl2ZS5wb3N0TWVzc2FnZSgiU3RhcnQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHZhciBpbnN0YWxsaW5nV29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisgICAgaWYg
KCFpbnN0YWxsaW5nV29ya2VyKQorICAgICAgICBmYWlsVGhlVGVzdCgiTm8gYWN0aXZlICpvciog
aW5zdGFsbGluZyB3b3JrZXIiKTsKKworICAgIGluc3RhbGxpbmdXb3JrZXIuYWRkRXZlbnRMaXN0
ZW5lcigic3RhdGVjaGFuZ2UiLCAoKSA9PiB7CisgICAgICAgIGlmIChpbnN0YWxsaW5nV29ya2Vy
LnN0YXRlID09PSAiYWN0aXZhdGVkIikgeworICAgICAgICAgICAgaW5zdGFsbGluZ1dvcmtlci5w
b3N0TWVzc2FnZSgiZ2V0bm90ZXMiKTsKKyAgICAgICAgfQorICAgIH0pOworfQorCit2YXIgbnVt
YmVyU2hvd24gPSAwOwordmFyIG51bWJlckdvdCA9IDA7CisKK2Z1bmN0aW9uIGdvdE5vdGVzKGV2
ZW50KQoreworICAgICsrbnVtYmVyR290OworCisgICAgZGVidWcoIkdvdCBub3RpZmljYXRpb25z
Iik7CisgICAgbWVzc2FnZSA9IGV2ZW50LmRhdGEuc3BsaXQoJ3wnKQorICAgIGZvciAodmFyIGkg
PSAxOyBpIDwgbWVzc2FnZS5sZW5ndGg7ICsraSkKKyAgICAgICAgZGVidWcobWVzc2FnZVtpXSk7
CisKKyAgICBpZiAobnVtYmVyR290ID09IDEpIHsKKyAgICAgICAgZXZlbnQuc291cmNlLnBvc3RN
ZXNzYWdlKCJ0cnlzaG93fEhlbGxvfEJvZHkxfHRhZy1hIik7CisgICAgICAgIGV2ZW50LnNvdXJj
ZS5wb3N0TWVzc2FnZSgidHJ5c2hvd3xUaGVyZXxCb2R5Mnx0YWctYiIpOworICAgICAgICBldmVu
dC5zb3VyY2UucG9zdE1lc3NhZ2UoInRyeXNob3d8QnVkZHl8Qm9keTN8dGFnLWIiKTsKKyAgICB9
IGVsc2UgaWYgKG51bWJlckdvdCA9PSA0KSB7CisgICAgICAgIHRlc3RDb21wbGV0ZWQoKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHNob3duKGV2ZW50KQoreworICAgIGRlYnVnKCJOb3RpZmljYXRp
b24gd2FzIHNob3duIik7CisgICAgKytudW1iZXJTaG93bjsKKyAgICBpZiAobnVtYmVyU2hvd24g
PT0gMikgeworICAgICAgICBldmVudC5zb3VyY2UucG9zdE1lc3NhZ2UoImdldG5vdGVzIik7Cisg
ICAgICAgIGV2ZW50LnNvdXJjZS5wb3N0TWVzc2FnZSgiZ2V0bm90ZXN8dGFnLWEiKTsKKyAgICAg
ICAgZXZlbnQuc291cmNlLnBvc3RNZXNzYWdlKCJnZXRub3Rlc3x0YWctYiIpOworICAgIH0KK30K
KworbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGV2
ZW50ID0+IHsKKyAgICB2YXIgbWVzc2FnZU5hbWUgPSBldmVudC5kYXRhLnNwbGl0KCd8JylbMF07
CisKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gImdvdG5vdGVzIikgeworICAgICAgICBnb3ROb3Rl
cyhldmVudCk7CisgICAgfSBlbHNlIGlmIChtZXNzYWdlTmFtZSA9PSAic2hvd24iKSB7CisgICAg
ICAgIHNob3duKGV2ZW50KTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZWJ1ZygiVW5leHBlY3Rl
ZCBtZXNzYWdlOiAiICsgZXZlbnQuZGF0YSk7CisgICAgfQorfSk7CisKKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJyZWdpc3RlclNlcnZpY2VXb3JrZXIoKSI+Cis8L2JvZHk+CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJj
ZXMvc2hvd25vdGlmaWNhdGlvbi13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dv
cmtlcnMvc2VydmljZS9yZXNvdXJjZXMvc2hvd25vdGlmaWNhdGlvbi13b3JrZXIuanMKaW5kZXgg
MTE2NzMwOTI0OGJhLi43MTI4Zjk0MDhkMTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvd29ya2Vycy9zZXJ2aWNlL3Jlc291cmNlcy9zaG93bm90aWZpY2F0aW9uLXdvcmtlci5q
cworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3dvcmtlcnMvc2VydmljZS9yZXNvdXJjZXMv
c2hvd25vdGlmaWNhdGlvbi13b3JrZXIuanMKQEAgLTE3LDE0ICsxNyw2MCBAQCBzZWxmLmFkZEV2
ZW50TGlzdGVuZXIoJ25vdGlmaWNhdGlvbmNsb3NlJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsK
ICAgICBhd2FpdCBtZXNzYWdlQ2xpZW50cygiY2xvc2VkIik7CiB9KTsKIAotc2VsZi5hZGRFdmVu
dExpc3RlbmVyKCdtZXNzYWdlJywgYXN5bmMgZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAvLyBSZXBs
eSBpZiB0aGUgc2hvdyBzdWNjZWVkZWQgb3IgZmFpbGVkLgorYXN5bmMgZnVuY3Rpb24gdHJ5U2hv
dyhtZXNzYWdlKQoreworICAgIHZhciB0aXRsZSwgYm9keSwgdGFnOworICAgIHZhciBjb21wb25l
bnRzID0gbWVzc2FnZS5zcGxpdCgnfCcpOworCisgICAgaWYgKGNvbXBvbmVudHMubGVuZ3RoID09
IDEpIHsKKyAgICAgICAgdGl0bGUgPSAiVGhpcyBpcyBhIG5vdGlmaWNhdGlvbiI7ICAgICAgICAK
KyAgICB9IGVsc2UgeworICAgICAgICB0aXRsZSA9IGNvbXBvbmVudHNbMV07CisgICAgICAgIGJv
ZHkgPSBjb21wb25lbnRzWzJdOworICAgICAgICB0YWcgPSBjb21wb25lbnRzWzNdOworICAgIH0K
KyAgICAKICAgICB0cnkgewotICAgICAgICBhd2FpdCByZWdpc3RyYXRpb24uc2hvd05vdGlmaWNh
dGlvbigiVGhpcyBpcyBhIG5vdGlmaWNhdGlvbiIpOworICAgICAgICBhd2FpdCByZWdpc3RyYXRp
b24uc2hvd05vdGlmaWNhdGlvbih0aXRsZSwgeworICAgICAgICAgICAgYm9keTogYm9keSwKKyAg
ICAgICAgICAgIHRhZzogdGFnCisgICAgICAgIH0pOwogICAgIH0gY2F0Y2goZXJyb3IpIHsKICAg
ICAgICAgYXdhaXQgbWVzc2FnZUNsaWVudHMoInNob3dGYWlsZWQiKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICAKICAgICBhd2FpdCBtZXNzYWdlQ2xpZW50cygic2hvd24iKTsKK30KKwor
dmFyIHNlZW5Ob3RlcyA9IG5ldyBTZXQoKTsKKworYXN5bmMgZnVuY3Rpb24gZ2V0Tm90ZXMobWVz
c2FnZSkKK3sKKyAgICB2YXIgdGFnID0gdW5kZWZpbmVkOworICAgIHZhciBjb21wb25lbnRzID0g
bWVzc2FnZS5zcGxpdCgnfCcpOworICAgIGlmIChjb21wb25lbnRzLmxlbmd0aCA9PSAyKQorICAg
ICAgICB0YWcgPSBjb21wb25lbnRzWzFdOworCisgICAgdmFyIG5vdGlmaWNhdGlvbnMgPSBhd2Fp
dCByZWdpc3RyYXRpb24uZ2V0Tm90aWZpY2F0aW9ucyh7IHRhZzogdGFnIH0pOworICAgIHZhciBy
ZXBseSA9ICJnb3Rub3Rlc3xUaGVyZSBhcmUgIiArIG5vdGlmaWNhdGlvbnMubGVuZ3RoICsgIiBu
b3RpZmljYXRpb25zfCI7CisKKyAgICBmb3IgKG5vdGlmaWNhdGlvbiBvZiBub3RpZmljYXRpb25z
KSB7CisgICAgICAgIGlmIChzZWVuTm90ZXMuaGFzKG5vdGlmaWNhdGlvbikpCisgICAgICAgICAg
ICBtZXNzYWdlQ2xpZW50cygiU2F3IHRoZSBzYW1lIG5vdGlmY2F0aW9uIHR3aWNlIHRocm91Z2gg
Z2V0Tm90aWZpY2F0aW9ucygpLCB0aGlzIHNob3VsZCBub3QgaGFwcGVuIik7CisgICAgICAgIHNl
ZW5Ob3Rlcy5hZGQobm90aWZpY2F0aW9uKQorICAgICAgICAKKyAgICAgICAgcmVwbHkgKz0gIlRp
dGxlOiAiICsgbm90aWZpY2F0aW9uLnRpdGxlICsgInwiOworICAgICAgICByZXBseSArPSAiQm9k
eTogIiArIG5vdGlmaWNhdGlvbi5ib2R5ICsgInwiOworICAgICAgICByZXBseSArPSAiVGFnOiAi
ICsgbm90aWZpY2F0aW9uLnRhZyArICJ8IjsKKyAgICB9CisgICAgYXdhaXQgbWVzc2FnZUNsaWVu
dHMocmVwbHkpOworfQorCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCBhc3luYyBm
dW5jdGlvbihldmVudCkgeworICAgIHZhciBtZXNzYWdlTmFtZSA9IGV2ZW50LmRhdGEuc3BsaXQo
J3wnKVswXTsKKyAgICBpZiAobWVzc2FnZU5hbWUgPT0gInRyeXNob3ciKQorICAgICAgICBhd2Fp
dCB0cnlTaG93KGV2ZW50LmRhdGEpOworICAgIGlmIChtZXNzYWdlTmFtZSA9PSAiZ2V0bm90ZXMi
KQorICAgICAgICBhd2FpdCBnZXROb3RlcyhldmVudC5kYXRhKTsKIH0pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4
IDY1ODE5NTRjNTcyMC4uOWVkZDEzZGFkMmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAK
KzIwMjItMDItMTQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAg
IEltcGxlbWVudCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmdldE5vdGlmaWNhdGlvbnMoKS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjU0NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IGh0
dHAvdGVzdHMvd29ya2Vycy9zZXJ2aWNlL2dldG5vdGlmaWNhdGlvbnMuaHRtbAorCisgICAgICAg
IFVudGlsIHdlIGZpZ3VyZSBvdXQganVzdCBob3cgInBlcnNpc3RlbnQiIHdlIHdhbnQgcGVyc2lz
dGVudCBub3RpZmljYXRpb25zIGZyb20gc2VydmljZSB3b3JrZXJzIHRvIGJlLAorICAgICAgICB0
aGlzIGlzIGFuIGltcGVtZW50YXRpb24gb2YgZ2V0Tm90aWZpY2F0aW9ucygpIHRoYXQgd29ya3Mg
Zm9yIHRoZSBjdXJyZW50IHJ1bm5pbmcgb2YgdGhlIHVzZXIgYWdlbnQuCisgICAgICAgIAorICAg
ICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Tm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbjo6Y29weUZvckdldE5vdGlmaWNhdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
Tm90aWZpY2F0aW9uOjpjb250ZXh0RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vdGlm
aWNhdGlvbjo6Y2xvc2UpOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb24uaDoKKyAgICAgICAgCisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbjo6Z2V0Tm90aWZpY2F0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uOjphZGROb3RpZmljYXRpb25Ub0xpc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6cmVtb3ZlTm90aWZpY2F0aW9uRnJvbUxpc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6ZmlsdGVyZWRO
b3RpZmljYXRpb25MaXN0KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbi5oOgorCiAyMDIyLTAyLTEzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbi5z
aG93Tm90aWZpY2F0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90
aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbi5jcHAKaW5kZXggYzczMGQ5NTYzOTkxLi41NmMzMjQzMjlh
ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9O
b3RpZmljYXRpb24uY3BwCkBAIC03Miw5ICs3MiwxMCBAQCBOb3RpZmljYXRpb246Ok5vdGlmaWNh
dGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRpdGxl
LAogewogICAgIGlmIChjb250ZXh0LmlzRG9jdW1lbnQoKSkKICAgICAgICAgbV9ub3RpZmljYXRp
b25Tb3VyY2UgPSBOb3RpZmljYXRpb25Tb3VyY2U6OkRvY3VtZW50OwotICAgIGVsc2UgaWYgKGNv
bnRleHQuaXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSkKKyAgICBlbHNlIGlmIChjb250ZXh0
LmlzU2VydmljZVdvcmtlckdsb2JhbFNjb3BlKCkpIHsKICAgICAgICAgbV9ub3RpZmljYXRpb25T
b3VyY2UgPSBOb3RpZmljYXRpb25Tb3VyY2U6OlNlcnZpY2VXb3JrZXI7Ci0gICAgZWxzZQorICAg
ICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLnJlZ2lzdHJh
dGlvbigpLmFkZE5vdGlmaWNhdGlvblRvTGlzdCgqdGhpcyk7CisgICAgfSBlbHNlCiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAKICAgICBpZiAoIW9wdGlvbnMuaWNvbi5p
c0VtcHR5KCkpIHsKQEAgLTg0LDcgKzg1LDQzIEBAIE5vdGlmaWNhdGlvbjo6Tm90aWZpY2F0aW9u
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGl0bGUsCiAg
ICAgfQogfQogCi1Ob3RpZmljYXRpb246On5Ob3RpZmljYXRpb24oKSA9IGRlZmF1bHQ7CitOb3Rp
ZmljYXRpb246Ok5vdGlmaWNhdGlvbihjb25zdCBOb3RpZmljYXRpb24mIG90aGVyKQorICAgIDog
QWN0aXZlRE9NT2JqZWN0KG90aGVyLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAsIG1f
dGl0bGUob3RoZXIubV90aXRsZS5pc29sYXRlZENvcHkoKSkKKyAgICAsIG1fZGlyZWN0aW9uKG90
aGVyLm1fZGlyZWN0aW9uKQorICAgICwgbV9sYW5nKG90aGVyLm1fbGFuZy5pc29sYXRlZENvcHko
KSkKKyAgICAsIG1fYm9keShvdGhlci5tX2JvZHkuaXNvbGF0ZWRDb3B5KCkpCisgICAgLCBtX3Rh
ZyhvdGhlci5tX3RhZy5pc29sYXRlZENvcHkoKSkKKyAgICAsIG1faWNvbihvdGhlci5tX2ljb24u
aXNvbGF0ZWRDb3B5KCkpCisgICAgLCBtX3N0YXRlKG90aGVyLm1fc3RhdGUpCisgICAgLCBtX25v
dGlmaWNhdGlvblNvdXJjZShvdGhlci5tX25vdGlmaWNhdGlvblNvdXJjZSkKKyAgICAsIG1fY29u
dGV4dElkZW50aWZpZXIob3RoZXIubV9jb250ZXh0SWRlbnRpZmllcikKK3sKKyAgICBzdXNwZW5k
SWZOZWVkZWQoKTsKK30KKworTm90aWZpY2F0aW9uOjp+Tm90aWZpY2F0aW9uKCkKK3sKKyAgICBp
ZiAoYXV0byogY29udGV4dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgeworICAgICAgICBp
ZiAoY29udGV4dC0+aXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSkKKyAgICAgICAgICAgIGRv
d25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCktPnJlZ2lzdHJhdGlvbigp
LnJlbW92ZU5vdGlmaWNhdGlvbkZyb21MaXN0KCp0aGlzKTsKKyAgICB9Cit9CisKK1JlZjxOb3Rp
ZmljYXRpb24+IE5vdGlmaWNhdGlvbjo6Y29weUZvckdldE5vdGlmaWNhdGlvbnMoKSBjb25zdAor
eworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE5vdGlmaWNhdGlvbigqdGhpcykpOworfQorCit2
b2lkIE5vdGlmaWNhdGlvbjo6Y29udGV4dERlc3Ryb3llZCgpCit7CisgICAgYXV0byogY29udGV4
dCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBSRUxFQVNFX0FTU0VSVChjb250ZXh0
KTsKKyAgICBpZiAoY29udGV4dC0+aXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSkKKyAgICAg
ICAgZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS0+cmVnaXN0cmF0
aW9uKCkucmVtb3ZlTm90aWZpY2F0aW9uRnJvbUxpc3QoKnRoaXMpOworCisgICAgQWN0aXZlRE9N
T2JqZWN0Ojpjb250ZXh0RGVzdHJveWVkKCk7Cit9CiAKIAogdm9pZCBOb3RpZmljYXRpb246OnNo
b3dTb29uKCkKQEAgLTEzMCw2ICsxNjcsMTAgQEAgdm9pZCBOb3RpZmljYXRpb246OmNsb3NlKCkK
ICAgICBjYXNlIFNob3dpbmc6IHsKICAgICAgICAgaWYgKGF1dG8qIGNsaWVudCA9IGNsaWVudEZy
b21Db250ZXh0KCkpCiAgICAgICAgICAgICBjbGllbnQtPmNhbmNlbCgqdGhpcyk7CisgICAgICAg
IGlmIChhdXRvKiBjb250ZXh0ID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CisgICAgICAg
ICAgICBpZiAoY29udGV4dC0+aXNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUoKSkKKyAgICAgICAg
ICAgICAgICBkb3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpLT5yZWdp
c3RyYXRpb24oKS5yZW1vdmVOb3RpZmljYXRpb25Gcm9tTGlzdCgqdGhpcyk7CisgICAgICAgIH0K
ICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgQ2xvc2VkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCmluZGV4IDExZmE5
ZmVjMTkwNC4uMDJhMzdiZmM3NmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbi5oCkBAIC05NCwxMSArOTQsMTYgQEAgcHVibGlj
OgogCiAgICAgV0VCQ09SRV9FWFBPUlQgTm90aWZpY2F0aW9uRGF0YSBkYXRhKCkgY29uc3Q7CiAK
KyAgICBSZWY8Tm90aWZpY2F0aW9uPiBjb3B5Rm9yR2V0Tm90aWZpY2F0aW9ucygpIGNvbnN0Owor
CiAgICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNvdW50ZWQ6OnJlZjsKICAgICB1c2luZyBUaHJlYWRT
YWZlUmVmQ291bnRlZDo6ZGVyZWY7CiAKIHByaXZhdGU6CiAgICAgTm90aWZpY2F0aW9uKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBPcHRpb25zJik7
CisgICAgTm90aWZpY2F0aW9uKGNvbnN0IE5vdGlmaWNhdGlvbiYpOworCisgICAgdm9pZCBjb250
ZXh0RGVzdHJveWVkKCkgZmluYWw7CiAKICAgICBOb3RpZmljYXRpb25DbGllbnQqIGNsaWVudEZy
b21Db250ZXh0KCk7CiAgICAgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRUYXJnZXRJbnRlcmZh
Y2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiBOb3RpZmljYXRpb25FdmVudFRhcmdldEludGVyZmFj
ZVR5cGU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcAppbmRleCA1Mzg5MjU2NDY4YWUuLmQ4ODQ1
YWIyNGMzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZp
Y2VXb3JrZXJSZWdpc3RyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2lu
Y2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJK
U0RPTVByb21pc2VEZWZlcnJlZC5oIgorI2luY2x1ZGUgIkpTTm90aWZpY2F0aW9uLmgiCiAjaW5j
bHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIk5hdmlnYXRpb25QcmVsb2FkTWFuYWdlci5oIgog
I2luY2x1ZGUgIk5vdGlmaWNhdGlvbkNsaWVudC5oIgpAQCAtMjk0LDEyICsyOTUsNDkgQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uOjpzaG93Tm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQKICAgICB9KTsKIH0KIAotdm9pZCBTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uOjpnZXROb3RpZmljYXRpb25zKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25z
dCBHZXROb3RpZmljYXRpb25PcHRpb25zJiBmaWx0ZXIsIERPTVByb21pc2VEZWZlcnJlZDxJRExT
ZXF1ZW5jZTxJRExET01TdHJpbmc+PiBwcm9taXNlKQordm9pZCBTZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uOjpnZXROb3RpZmljYXRpb25zKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQs
IGNvbnN0IEdldE5vdGlmaWNhdGlvbk9wdGlvbnMmIGZpbHRlciwgRE9NUHJvbWlzZURlZmVycmVk
PElETFNlcXVlbmNlPElETEludGVyZmFjZTxOb3RpZmljYXRpb24+Pj4gcHJvbWlzZSkKIHsKLSAg
ICBVTlVTRURfUEFSQU0oZmlsdGVyKTsKKyAgICBhdXRvIG5vdGlmaWNhdGlvbnMgPSBmaWx0ZXJl
ZE5vdGlmaWNhdGlvbkxpc3QoZmlsdGVyLnRhZyk7CisgICAgY29udGV4dC5ldmVudExvb3AoKS5x
dWV1ZVRhc2soVGFza1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbcHJvbWlzZSA9IFdURk1vdmUo
cHJvbWlzZSksIG5vdGlmaWNhdGlvbnMgPSBXVEZNb3ZlKG5vdGlmaWNhdGlvbnMpXSgpIG11dGFi
bGUgeworICAgICAgICBwcm9taXNlLnJlc29sdmUoV1RGTW92ZShub3RpZmljYXRpb25zKSk7Cisg
ICAgfSk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6YWRkTm90aWZpY2F0
aW9uVG9MaXN0KE5vdGlmaWNhdGlvbiYgbm90aWZpY2F0aW9uKQoreworICAgIC8vIEEgTm90aWZp
Y2F0aW9uIGF0IHRoaXMgZXhhY3QgYWRkcmVzcyBtaWdodCBwcmV2aW91c2x5IGhhdmUgYmVlbiBp
biB0aGUgbGlzdCBidXQgbm90IHN1Y2Nlc3NmdWxseSByZW1vdmVkLgorICAgIC8vIFRoZSBXZWFr
SGFzaFNldCBjYXB0dXJlcyB0aGF0IHBvc3NpYmlsaXR5IGhlcmUgdG8gaGVscCB1cyBtYWludGFp
biBjb25zaXN0ZW5jeS4KKyAgICBhdXRvIGl0ZXIgPSBtX25vdGlmaWNhdGlvbkxpc3QuZmluZCgm
bm90aWZpY2F0aW9uKTsKKyAgICBpZiAoaXRlciAhPSBtX25vdGlmaWNhdGlvbkxpc3QuZW5kKCkp
IHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIW1fbm90aWZpY2F0aW9uU2V0LmNvbnRhaW5zKG5v
dGlmaWNhdGlvbikpOworICAgICAgICBtX25vdGlmaWNhdGlvbkxpc3QucmVtb3ZlKGl0ZXIpOwor
ICAgIH0KKworICAgIG1fbm90aWZpY2F0aW9uTGlzdC5hZGQoJm5vdGlmaWNhdGlvbik7CisgICAg
YXV0byByZXN1bHQgPSBtX25vdGlmaWNhdGlvblNldC5hZGQobm90aWZpY2F0aW9uKTsKKyAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOworfQogCi0gICAgcHJvbWlz
ZS5yZWplY3QoRXhjZXB0aW9uIHsgTm90U3VwcG9ydGVkRXJyb3IsICJTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uLmdldE5vdGlmaWNhdGlvbnMgbm90IHlldCBpbXBsZW1lbnRlZCJfcyB9KTsKK3Zv
aWQgU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbjo6cmVtb3ZlTm90aWZpY2F0aW9uRnJvbUxpc3Qo
Tm90aWZpY2F0aW9uJiBub3RpZmljYXRpb24pCit7CisgICAgLy8gVGhlIHNhbWUgbm90aWZpY2F0
aW9uIG1pZ2h0IHRyeSB0byByZW1vdmUgaXRzZWxmIGZyb20gdGhpcyBsaXN0IG1vcmUgdGhhbiBv
bmNlLCBhbmQgdGhhdCdzIGZpbmUuCisgICAgbV9ub3RpZmljYXRpb25MaXN0LnJlbW92ZSgmbm90
aWZpY2F0aW9uKTsKKyAgICBtX25vdGlmaWNhdGlvblNldC5yZW1vdmUobm90aWZpY2F0aW9uKTsK
IH0KKworVmVjdG9yPFJlZjxOb3RpZmljYXRpb24+PiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
OjpmaWx0ZXJlZE5vdGlmaWNhdGlvbkxpc3QoY29uc3QgU3RyaW5nJiBmaWx0ZXJlZFRhZykKK3sK
KyAgICBWZWN0b3I8UmVmPE5vdGlmaWNhdGlvbj4+IHJlc3VsdHM7CisgICAgZm9yIChhdXRvKiBu
b3RpZmljYXRpb24gOiBtX25vdGlmaWNhdGlvbkxpc3QpIHsKKyAgICAgICAgaWYgKCFtX25vdGlm
aWNhdGlvblNldC5jb250YWlucygqbm90aWZpY2F0aW9uKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBpZiAoZmlsdGVyZWRUYWcuaXNFbXB0eSgpIHx8IG5vdGlmaWNhdGlvbi0+dGFn
KCkgPT0gZmlsdGVyZWRUYWcpCisgICAgICAgICAgICByZXN1bHRzLmFwcGVuZChub3RpZmljYXRp
b24tPmNvcHlGb3JHZXROb3RpZmljYXRpb25zKCkpOworICAgIH0KKworICAgIHJldHVybiByZXN1
bHRzOworfQorCiAjZW5kaWYgLy8gRU5BQkxFKE5PVElGSUNBVElPTl9FVkVOVCkKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgKaW5kZXggYTNhNGFlNDRjZGVlLi4z
MzQzMzdhNmJlYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9T
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24uaApAQCAtMzAsNiArMzAsNyBAQAogI2lu
Y2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgogI2luY2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCiAjaW5j
bHVkZSAiSlNET01Qcm9taXNlRGVmZXJyZWQuaCIKKyNpbmNsdWRlICJOb3RpZmljYXRpb24uaCIK
ICNpbmNsdWRlICJOb3RpZmljYXRpb25PcHRpb25zLmgiCiAjaW5jbHVkZSAiUHVzaFBlcm1pc3Np
b25TdGF0ZS5oIgogI2luY2x1ZGUgIlB1c2hTdWJzY3JpcHRpb24uaCIKQEAgLTM3LDYgKzM4LDkg
QEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YS5oIgogI2luY2x1ZGUg
IlN1cHBsZW1lbnRhYmxlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKKyNpbmNsdWRlIDx3dGYvTGlz
dEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtI
YXNoU2V0Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtOTYsNyArMTAwLDExIEBAIHB1
YmxpYzoKICAgICB9OwogCiAgICAgdm9pZCBzaG93Tm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBOb3RpZmljYXRpb25PcHRpb25z
JiwgRE9NUHJvbWlzZURlZmVycmVkPHZvaWQ+JiYpOwotICAgIHZvaWQgZ2V0Tm90aWZpY2F0aW9u
cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgR2V0Tm90aWZpY2F0aW9uT3B0aW9ucyYg
ZmlsdGVyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMU2VxdWVuY2U8SURMRE9NU3RyaW5nPj4pOwor
ICAgIHZvaWQgZ2V0Tm90aWZpY2F0aW9ucyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3Qg
R2V0Tm90aWZpY2F0aW9uT3B0aW9ucyYgZmlsdGVyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMU2Vx
dWVuY2U8SURMSW50ZXJmYWNlPE5vdGlmaWNhdGlvbj4+Pik7CisKKyAgICB2b2lkIGFkZE5vdGlm
aWNhdGlvblRvTGlzdChOb3RpZmljYXRpb24mKTsKKyAgICB2b2lkIHJlbW92ZU5vdGlmaWNhdGlv
bkZyb21MaXN0KE5vdGlmaWNhdGlvbiYpOworICAgIFZlY3RvcjxSZWY8Tm90aWZpY2F0aW9uPj4g
ZmlsdGVyZWROb3RpZmljYXRpb25MaXN0KGNvbnN0IFN0cmluZyYgZmlsdGVyZWRUYWcpOwogI2Vu
ZGlmCiAKIHByaXZhdGU6CkBAIC0xMjAsNiArMTI4LDExIEBAIHByaXZhdGU6CiAgICAgUmVmUHRy
PFNlcnZpY2VXb3JrZXI+IG1fYWN0aXZlV29ya2VyOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPE5h
dmlnYXRpb25QcmVsb2FkTWFuYWdlcj4gbV9uYXZpZ2F0aW9uUHJlbG9hZDsKKworI2lmIEVOQUJM
RShOT1RJRklDQVRJT05fRVZFTlQpCisgICAgTGlzdEhhc2hTZXQ8Tm90aWZpY2F0aW9uKj4gbV9u
b3RpZmljYXRpb25MaXN0OworICAgIFdlYWtIYXNoU2V0PE5vdGlmaWNhdGlvbj4gbV9ub3RpZmlj
YXRpb25TZXQ7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>