<?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>220065</bug_id>
          
          <creation_ts>2020-12-21 12:10:53 -0800</creation_ts>
          <short_desc>REGRESSION (r261157): Crash in WKSelectPopover when running as iPhone app on iPad</short_desc>
          <delta_ts>2021-01-05 19:27:36 -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>Forms</component>
          <version>Other</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Aditya Keerthi">akeerthi</reporter>
          <assigned_to name="Aditya Keerthi">akeerthi</assigned_to>
          <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1716057</commentid>
    <comment_count>0</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2020-12-21 12:10:53 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716058</commentid>
    <comment_count>1</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2020-12-21 12:11:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/71932792&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1716060</commentid>
    <comment_count>2</comment_count>
      <attachid>416619</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2020-12-21 12:14:10 -0800</bug_when>
    <thetext>Created attachment 416619
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717021</commentid>
    <comment_count>3</comment_count>
      <attachid>416619</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-02 15:42:42 -0800</bug_when>
    <thetext>Comment on attachment 416619
Patch

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

I’m doing a review+ here but I have some pretty serious concerns so bordering on a review- maybe.

&gt; Source/WebKit/UIProcess/ios/WKContentView.mm:218
&gt; +    if (![UIApplication sharedApplication])
&gt; +        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_applicationDidFinishLaunching:) name:UIApplicationDidFinishLaunchingNotification object:nil];

Does not seem right to register for this separately for each WKContentView. WebKit only needs to be notified *once*, and we would then probably want to tell all web *processes* about the observed change, not all web *pages*. Not even sure that initializing WKContentView is the exact right bottleneck for this. We need this registration if we ever stored the result of currentUserInterfaceIdiomIsPadOrMac somewhere while [UIApplication sharedApplication]) returns nil, which may *currently* always be tied to allocating WKContentView objects, but that might be an unnecessarily fragile thing to depend on longer term.

&gt; Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:1651
&gt; +    shouldRecommendDesktopClassBrowsing = WTF::nullopt;

This needs to be done once globally, not separately by each web page.

&gt; Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:1656
&gt; +    m_preferences-&gt;setAllowsInlineMediaPlayback(isPadOrMac);
&gt; +    m_preferences-&gt;setInlineMediaPlaybackRequiresPlaysInlineAttribute(!isPadOrMac);
&gt; +    m_preferences-&gt;setAllowsInlineMediaPlaybackAfterFullscreen(!isPadOrMac);

Does this do the right thing for textAutosizingUsesIdempotentMode? I think likely not.

Seems risky that this code here is far away from both the WebPreferencesInternal.yaml and -[WKWebViewConfiguration init], since they need to be kept in sync. At least there should be comments pointing from one to the other, since two different bits of code are trying to do the same thing.

But also, the fact that this modifies preferences directly and not WKWebViewConfiguration points to the fact that this is a different semantic from the existing code. The existing code sets a *default* for a newly created WKWebViewConfiguration object. But change will *override* the current setting. So if a program sets the allowsInlineMediaPlayback flag on their WKWebViewConfiguration explicitly, for example, this will ignore that setting and override any change they have made. That’s not consistent with what we do otherwise and not really great; it’s also not great that the configuration will be &quot;wrong&quot; if they read the WKWebViewConfiguration, so that’s another small our solution is imperfect.

Ideally we should think bout the desired behavior when someone customizes the configuration. Or more generally what we’d want here, if we weren’t working around our ability to function properly before UIApplication is initialized.

I think desired behavior would be to have the correct value even if WebKit code is called super-early, rather than being wrong for a while and trying to fix things after the fact, but I suppose that might be difficult. Worth talking through with UIKit team?

&gt; Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:1659
&gt; +    if (hasRunningProcess())
&gt; +        m_process-&gt;send(Messages::WebPage::UserInterfaceIdiomDidChange(isPadOrMac), m_webPageID);

Inelegant to do this for every web page: it needs to be done once for every web *process*. Ideally could be a WebProcessProxy function instead of a WebPageProxy function.

&gt; Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:1663
&gt; +}
&gt; +
&gt;  
&gt;  } // namespace WebKit

Extra blank line here.

&gt; Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm:3977
&gt; +    WebKit::setCurrentUserInterfaceIdiomIsPadOrMac(isPadOrMac);

Definitely &quot;once per process&quot; code, not &quot;once per page&quot;.

&gt; Tools/TestWebKitAPI/Tests/ios/UserInterfaceIdiomUpdate.mm:51
&gt; +    [webView stringByEvaluatingJavaScript:@&quot;select.focus()&quot;];

This test doesn’t check any of these:

    setAllowsInlineMediaPlayback
    setInlineMediaPlaybackRequiresPlaysInlineAttribute
    setAllowsInlineMediaPlaybackAfterFullscreen

So it would pass even if the code from this patch was wrong. You can delete one or more of those calls and no test would fail. That means we probably need more thorough testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717445</commentid>
    <comment_count>4</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-01-05 13:11:31 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #3)
&gt; Comment on attachment 416619 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=416619&amp;action=review
&gt; 
&gt; I’m doing a review+ here but I have some pretty serious concerns so
&gt; bordering on a review- maybe.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/ios/WKContentView.mm:218
&gt; &gt; +    if (![UIApplication sharedApplication])
&gt; &gt; +        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_applicationDidFinishLaunching:) name:UIApplicationDidFinishLaunchingNotification object:nil];
&gt; 
&gt; Does not seem right to register for this separately for each WKContentView.
&gt; WebKit only needs to be notified *once*, and we would then probably want to
&gt; tell all web *processes* about the observed change, not all web *pages*. Not
&gt; even sure that initializing WKContentView is the exact right bottleneck for
&gt; this. We need this registration if we ever stored the result of
&gt; currentUserInterfaceIdiomIsPadOrMac somewhere while [UIApplication
&gt; sharedApplication]) returns nil, which may *currently* always be tied to
&gt; allocating WKContentView objects, but that might be an unnecessarily fragile
&gt; thing to depend on longer term.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:1651
&gt; &gt; +    shouldRecommendDesktopClassBrowsing = WTF::nullopt;
&gt; 
&gt; This needs to be done once globally, not separately by each web page.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:1656
&gt; &gt; +    m_preferences-&gt;setAllowsInlineMediaPlayback(isPadOrMac);
&gt; &gt; +    m_preferences-&gt;setInlineMediaPlaybackRequiresPlaysInlineAttribute(!isPadOrMac);
&gt; &gt; +    m_preferences-&gt;setAllowsInlineMediaPlaybackAfterFullscreen(!isPadOrMac);
&gt; 
&gt; Does this do the right thing for textAutosizingUsesIdempotentMode? I think
&gt; likely not.
&gt; 
&gt; Seems risky that this code here is far away from both the
&gt; WebPreferencesInternal.yaml and -[WKWebViewConfiguration init], since they
&gt; need to be kept in sync. At least there should be comments pointing from one
&gt; to the other, since two different bits of code are trying to do the same
&gt; thing.
&gt; 
&gt; But also, the fact that this modifies preferences directly and not
&gt; WKWebViewConfiguration points to the fact that this is a different semantic
&gt; from the existing code. The existing code sets a *default* for a newly
&gt; created WKWebViewConfiguration object. But change will *override* the
&gt; current setting. So if a program sets the allowsInlineMediaPlayback flag on
&gt; their WKWebViewConfiguration explicitly, for example, this will ignore that
&gt; setting and override any change they have made. That’s not consistent with
&gt; what we do otherwise and not really great; it’s also not great that the
&gt; configuration will be &quot;wrong&quot; if they read the WKWebViewConfiguration, so
&gt; that’s another small our solution is imperfect.
&gt; 
&gt; Ideally we should think bout the desired behavior when someone customizes
&gt; the configuration. Or more generally what we’d want here, if we weren’t
&gt; working around our ability to function properly before UIApplication is
&gt; initialized.
&gt; 
&gt; I think desired behavior would be to have the correct value even if WebKit
&gt; code is called super-early, rather than being wrong for a while and trying
&gt; to fix things after the fact, but I suppose that might be difficult. Worth
&gt; talking through with UIKit team?

I spoke to the UIKit team, and was told that UIKit provides no guarantee on correctness of any UIKit objects created prior to UIApplicationMain. For the that reason, we cannot guarantee correctness of WKWebViews created prior to UIApplicationMain.

For this reason, I am going to simplify the patch to just fix the crash (which is a regression), and leave the configuration as-is.

I will also make the change per-process rather than per-page.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717450</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-05 13:20:12 -0800</bug_when>
    <thetext>(In reply to Aditya Keerthi from comment #4)
&gt; I spoke to the UIKit team, and was told that UIKit provides no guarantee on
&gt; correctness of any UIKit objects created prior to UIApplicationMain. For the
&gt; that reason, we cannot guarantee correctness of WKWebViews created prior to
&gt; UIApplicationMain.
&gt; 
&gt; For this reason, I am going to simplify the patch to just fix the crash
&gt; (which is a regression), and leave the configuration as-is.
&gt; 
&gt; I will also make the change per-process rather than per-page.

Seems like we should do some other things:

1) document that you must not create a WKWebViewConfiguration until after UIApplicationMain

2) linked-on-or-after some new iOS, throw an exception if you do that wrong, like we do with main thread violations

But I’m not sure how to do that and still support using WebView in daemons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717455</commentid>
    <comment_count>6</comment_count>
      <attachid>417031</attachid>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-01-05 13:34:41 -0800</bug_when>
    <thetext>Created attachment 417031
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717464</commentid>
    <comment_count>7</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-01-05 14:07:58 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; (In reply to Aditya Keerthi from comment #4)
&gt; &gt; I spoke to the UIKit team, and was told that UIKit provides no guarantee on
&gt; &gt; correctness of any UIKit objects created prior to UIApplicationMain. For the
&gt; &gt; that reason, we cannot guarantee correctness of WKWebViews created prior to
&gt; &gt; UIApplicationMain.
&gt; &gt; 
&gt; &gt; For this reason, I am going to simplify the patch to just fix the crash
&gt; &gt; (which is a regression), and leave the configuration as-is.
&gt; &gt; 
&gt; &gt; I will also make the change per-process rather than per-page.
&gt; 
&gt; Seems like we should do some other things:
&gt; 
&gt; 1) document that you must not create a WKWebViewConfiguration until after
&gt; UIApplicationMain
&gt; 
&gt; 2) linked-on-or-after some new iOS, throw an exception if you do that wrong,
&gt; like we do with main thread violations
&gt; 
&gt; But I’m not sure how to do that and still support using WebView in daemons.

Something that we can consider – separate from this fix for a regression – throw an exception if a WKWebView/WKWebViewConfiguration is created before UIApplicationMain and UIApplicationMain is then called.

That way, we&apos;d still support using WKWebView in daemons. The downside is that the exception would only be thrown after UIApplicationMain and not when the object is created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717477</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-01-05 14:25:04 -0800</bug_when>
    <thetext>(In reply to Aditya Keerthi from comment #7)
&gt; That way, we&apos;d still support using WKWebView in daemons. The downside is
&gt; that the exception would only be thrown after UIApplicationMain and not when
&gt; the object is created.

Not sure it’s practical, but I do like that idea.

There might be a reason we shouldn’t throw an exception from WebKit code that registers for a notification and expect it to throw through UIApplicationMain back to the app. That is not quite as clean as throwing an exception from a method that was called. But if not, seems like it would accomplish the goal.

Also, just as Address Sanitizer reports where a block was freed, the developer would probably want to see the backtrace of where they did the wrong thing. It would be neat if we could find a way to store that backtrace and include it in the crash report.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717556</commentid>
    <comment_count>9</comment_count>
    <who name="Aditya Keerthi">akeerthi</who>
    <bug_when>2021-01-05 17:16:54 -0800</bug_when>
    <thetext>I&apos;ve filed &lt;rdar://problem/72835559&gt; to track the exception work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1717576</commentid>
    <comment_count>10</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-01-05 19:27:34 -0800</bug_when>
    <thetext>Committed r271190: &lt;https://trac.webkit.org/changeset/271190&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 417031.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416619</attachid>
            <date>2020-12-21 12:14:10 -0800</date>
            <delta_ts>2021-01-05 13:34:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220065-20201221151427.patch</filename>
            <type>text/plain</type>
            <size>25486</size>
            <attacher name="Aditya Keerthi">akeerthi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDUwZWJlZThmMTUxMThlN2Jl
NTBkYzFlYzE5YzUyZDFhOGQzODNhZWIuLjExNGZiODE2ZjJjMDViZGQ4YmNiNTllY2ZkZmEyYzU5
YTg2YmY3NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTYgQEAKKzIwMjAtMTItMjEgIEFkaXR5YSBL
ZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIyNjEx
NTcpOiBDcmFzaCBpbiBXS1NlbGVjdFBvcG92ZXIgd2hlbiBydW5uaW5nIGFzIGlQaG9uZSBhcHAg
b24gaVBhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIwMDY1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTkzMjc5Mj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICByMjYxMTU3IGNoYW5nZWQgaG93IFdl
YktpdCBkZXRlcm1pbmVkIHRoZSB1c2VyIGludGVyZmFjZSBpZGlvbSBmb3IKKyAgICAgICAgV0tX
ZWJWaWV3cyB0aGF0IHdlcmUgY3JlYXRlZCBpbiBkYWVtb25zLiBTaW5jZSBkYWVtb25zIGRvIG5v
dCBjcmVhdGUKKyAgICAgICAgVUlBcHBsaWNhdGlvbnMsIFdlYktpdCBjYW5ub3QgdXNlIFVJRGV2
aWNlIGluIHRoZXNlIGluc3RhbmNlcy4gSW5zdGVhZCwKKyAgICAgICAgdGhlIHVzZXIgaW50ZXJm
YWNlIGlkaW9tIGRldGVybWluYXRpb24gbG9naWMgd2FzIHVwZGF0ZWQgdG8gaW5jbHVkZQorICAg
ICAgICBhIGNoZWNrIGZvciBkZXZpY2UgaGFyZHdhcmUsIHVzaW5nIE1vYmlsZUdlc3RhbHQsIGlu
IGNhc2VzIHdoZXJlIG5vCisgICAgICAgIFVJQXBwbGljYXRpb24gd2FzIGNyZWF0ZWQuCisKKyAg
ICAgICAgU2luY2UgV2ViS2l0IG9ubHkgZGV0ZXJtaW5lcyB0aGUgdXNlciBpbnRlcmZhY2UgaWRp
b20gb25jZSAodGhlbgorICAgICAgICBzdG9yaW5nIHRoZSBvYnRhaW5lZCB2YWx1ZSksIHRoZSBh
ZGRlZCBkZXRlcm1pbmF0aW9uIGxvZ2ljIGJyZWFrcworICAgICAgICBkb3duIGZvciBpUGhvbmUg
YXBwcyBvbiBpUGFkLiBDb25zaWRlciB0aGUgZm9sbG93aW5nIHNlcXVlbmNlIG9mCisgICAgICAg
IGV2ZW50cywgZXZlbnR1YWxseSBsZWFkaW5nIHRvIGEgY3Jhc2ggd2hlbiBpbnRlcmFjdGluZyB3
aXRoIGEKKyAgICAgICAgPHNlbGVjdD4gZWxlbWVudDoKKworICAgICAgICAxLiBBIFdLV2ViVmll
dyBpcyBjcmVhdGVkIHByaW9yIHRvIFVJQXBwbGljYXRpb24gaW5pdGlhbGl6YXRpb24uIFRoaXMK
KyAgICAgICAgICAgY2FuIGJlIGFjaGlldmVkIGJ5IGNyZWF0aW5nIG9uZSBpbiBhbm90aGVyIGNs
YXNzJ3MgImxvYWQiIG1ldGhvZC4KKworICAgICAgICAyLiBTaW5jZSB0aGUgYXBwIGlzIHBoeXNp
Y2FsbHkgcnVubmluZyBvbiBhbiBpUGFkLCBXZWJLaXQgZGV0ZXJtaW5lcworICAgICAgICAgICB0
aGUgdXNlciBpbnRlcmZhY2UgaWRpb20gdG8gYmUgImlQYWQiIGFuZCBzYXZlcyB0aGlzIGluZm9y
bWF0aW9uLgorCisgICAgICAgIDMuIE9uY2UgdGhlIGFwcCBhY3R1YWxseSBsYXVuY2hlcywgVUlB
cHBsaWNhdGlvbiBpcyBpbml0aWFsaXplZC4KKyAgICAgICAgICAgU2luY2UgdGhpcyBpcyBhbiBp
UGhvbmUgYXBwIG9uIGlQYWQsIHRoZSBhY3R1YWwgdXNlciBpbnRlcmZhY2UKKyAgICAgICAgICAg
aWRpb20gaXMgImlQaG9uZSIuIEhvd2V2ZXIsIFdlYktpdCBkb2VzIG5vdCBrbm93IHRoaXMsIHNp
bmNlCisgICAgICAgICAgIGl0IHVzZXMgdGhlIHNhdmVkIHVzZXIgaW50ZXJmYWNlIGlkaW9tIGZy
b20gKDIpLgorCisgICAgICAgIDQuIFdoZW4gdGFwcGluZyBhIDxzZWxlY3Q+IGVsZW1lbnQsIFdl
YktpdCBjaGVja3MgaXRzIHNhdmVkIGlkaW9tLAorICAgICAgICAgICBhbiBhdHRlbXB0cyB0byBw
cmVzZW50IGEgVUlQb3BvdmVyQ29udHJvbGxlciAodGhlIHN0YW5kYXJkIGJlaGF2aW9yCisgICAg
ICAgICAgIHVuZGVyIHRoZSBpUGFkIGlkaW9tKS4KKworICAgICAgICA1LiBIb3dldmVyLCBzaW5j
ZSB0aGUgYWN0dWFsIGlkaW9tIGlzIGlQaG9uZSwgVUlLaXQgdGhyb3dzIGFuCisgICAgICAgICAg
IE5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uLCBzaW5jZSBVSVBvcG92ZXJDb250cm9sbGVyCisg
ICAgICAgICAgIHNob3VsZCBub3QgYmUgdXNlZCB3aGVuIHJ1bm5pbmcgdW5kZXIgdGhlIGlQaG9u
ZSBpZGlvbS4KKworICAgICAgICBBIHNpbXBsZSBmaXggZm9yIHRoZSBjcmFzaCB3b3VsZCBiZSB0
byBjYWxsIGludG8gVUlLaXQgdG8gY2hlY2sgdGhlCisgICAgICAgIGlkaW9tIGVhY2ggdGltZSBp
dCBpcyByZXF1aXJlZCwgcmF0aGVyIHRoYW4gcmVseWluZyBvbiB0aGUgc2F2ZWQgYml0LgorICAg
ICAgICBIb3dldmVyLCB0aGlzIGRvZXMgbm90IGFkZHJlc3MgdGhlIG1vcmUgZ2VuZXJhbCBpc3N1
ZSwgd2hpY2ggaXMgdGhhdAorICAgICAgICBXZWJLaXQncyBzYXZlZCBpZGlvbSBhbmQgdGhlIGFj
dHVhbCBpZGlvbSBjYW4gYmUgb3V0IG9mIHN5bmMuIFRoaXMKKyAgICAgICAgaXMgcGFydGljdWxh
cmx5IHByb2JsZW1hdGljLCBzaW5jZSB0aGUgV2ViUHJvY2VzcyBhbHNvIHJlbGllcyBvbiB0aGUK
KyAgICAgICAgaWRpb20gZm9yIGNlcnRhaW4gc2V0dGluZ3MuIE5vdGUgdGhhdCB0aGUgV2ViUHJv
Y2VzcyBzaG91bGQgbm90CisgICAgICAgIGNhbGwgaW50byBVSURldmljZSBkaXJlY3RseSAoc2Vl
IHIyNTM2NjEgZm9yIG1vcmUgZGV0YWlscyksIHNvIHdlCisgICAgICAgIGFyZSBzdHVjayB3aXRo
IGZvcndhcmRpbmcgdGhlIGluZm9ybWF0aW9uIGZyb20gdGhlIFVJUHJvY2Vzcy4KKworICAgICAg
ICBDb25zZXF1ZW50bHksIHRoZSBhcHByb2FjaCB0YWtlbiBpcyB0byB1cGRhdGUgdGhlIHNhdmVk
IGlkaW9tIHdoZW4KKyAgICAgICAgaXQgY2hhbmdlcy4gVGhpcyBzaG91bGQgb25seSBvY2N1ciB3
aGVuIGEgVUlBcHBsaWNhdGlvbiBpcyBpbml0aWFsaXplZC4KKyAgICAgICAgSGVuY2UsIHdlIGxp
c3RlbiBmb3IgVUlBcHBsaWNhdGlvbkRpZEZpbmlzaExhdW5jaGluZ05vdGlmaWNhdGlvbiwKKyAg
ICAgICAgYW5kIGlmIHRoZSBhY3R1YWwgaWRpb20gaXMgZGlmZmVyZW50IGZyb20gb3VyIHNhdmVk
IGlkaW9tLCB3ZSB1cGRhdGUgdGhlCisgICAgICAgIHNhdmVkIGlkaW9tIGFuZCBhbHNvIG5vdGlm
eSB0aGUgV2ViUHJvY2Vzcy4KKworICAgICAgICAqIFNoYXJlZC9Vc2VySW50ZXJmYWNlSWRpb20u
aDoKKyAgICAgICAgKiBTaGFyZWQvVXNlckludGVyZmFjZUlkaW9tLm1tOgorICAgICAgICAoV2Vi
S2l0Ojp1cGRhdGVDdXJyZW50VXNlckludGVyZmFjZUlkaW9tKToKKworICAgICAgICBUaGlzIG1l
dGhvZCBjaGVja3MgdGhlIGFjdHVhbCBpZGlvbSBhbmQgdXBkYXRlcyB0aGUgc2F2ZWQgaWRpb20g
aWYKKyAgICAgICAgdGhleSBkaWZmZXIuIFJldHVybnMgdHJ1ZSBvbmx5IGlmIHRoZSBpZGlvbSB3
YXMgdXBkYXRlZC4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW06CisgICAgICAgICgtW1dLQ29udGVu
dFZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aFByb2Nlc3NQb29sOmNvbmZpZ3VyYXRpb246
XSk6CisKKyAgICAgICAgTGlzdGVuIGZvciBVSUFwcGxpY2F0aW9uRGlkRmluaXNoTGF1bmNoaW5n
Tm90aWZpY2F0aW9uIHRvIHNlZSBpZiB3ZSBuZWVkCisgICAgICAgIHRvIGRldGVybWluZSB0aGUg
aWRpb20gYWdhaW4uCisKKyAgICAgICAgKC1bV0tDb250ZW50VmlldyBfYXBwbGljYXRpb25EaWRG
aW5pc2hMYXVuY2hpbmc6XSk6CisKKyAgICAgICAgT25jZSB0aGUgVUlBcHBsaWNhdGlvbiBpcyBp
bml0aWFsaXplZCwgc2VlIGlmIHRoZSBhY3R1YWwgYW5kIHNhdmVkIGlkaW9tCisgICAgICAgIGRp
ZmZlci4gSWYgdGhleSBkbywgbm90aWZ5IFdlYlBhZ2VQcm94eS4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpkZXNrdG9wQ2xh
c3NCcm93c2luZ1JlY29tbWVuZGVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpl
ZmZlY3RpdmVDb250ZW50TW9kZUFmdGVyQWRqdXN0aW5nUG9saWNpZXMpOgorCisgICAgICAgIFNp
bmNlIHRoZSBzYXZlZCBpZGlvbSBjYW4gY2hhbmdlLCB3ZSBzaG91bGQgZW5zdXJlIHRoZSBkZXNr
dG9wIGNsYXNzCisgICAgICAgIGJyb3dzaW5nIHJlY29tbWVuZGF0aW9uIGlzIHVwZGF0ZWQgaWYg
YSBjaGFuZ2Ugb2NjdXJzLgorCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXNlcklu
dGVyZmFjZUlkaW9tRGlkQ2hhbmdlKToKKworICAgICAgICBVcGRhdGUgYWRkaXRpb25hbCBzZXR0
aW5ncyBhbmQgZmVhdHVyZXMgdGhhdCByZWx5IG9uIHRoZSB1c2VyIGludGVyZmFjZQorICAgICAg
ICBpZGlvbS4gTm90aWZ5IHRoZSBXZWJQcm9jZXNzIG9mIHRoZSBjaGFuZ2UuCisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9p
b3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXNlckludGVyZmFj
ZUlkaW9tRGlkQ2hhbmdlKToKKworICAgICAgICBVcGRhdGUgdGhlIHNhdmVkIGlkaW9tIHVzaW5n
IHRoZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBVSVByb2Nlc3MuCisKIDIwMjAtMTItMTQgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBbR1BVUHJvY2Vzc10gQ3Jhc2gg
dW5kZXIgQXVkaW9EZXN0aW5hdGlvbkNvY29hOjpzZXRJc1BsYXlpbmcoYm9vbCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJJbnRlcmZhY2VJZGlvbS5oIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvVXNlckludGVyZmFjZUlkaW9tLmgKaW5kZXggZWJkYzY3ODEwMTk2ODBhZjYx
MWUxMmIwNTQyYzZjNTZhNjI4ZjVjZC4uMjkxZTZhMjUwODg2MmQ2YTgxMjk5ZTYxNjIyZDNiOWJm
OGU5OTBjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckludGVyZmFjZUlk
aW9tLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckludGVyZmFjZUlkaW9tLmgKQEAg
LTMxLDYgKzMxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGJvb2wgY3VycmVudFVzZXJJbnRl
cmZhY2VJZGlvbUlzUGFkT3JNYWMoKTsKIHZvaWQgc2V0Q3VycmVudFVzZXJJbnRlcmZhY2VJZGlv
bUlzUGFkT3JNYWMoYm9vbCk7Citib29sIHVwZGF0ZUN1cnJlbnRVc2VySW50ZXJmYWNlSWRpb20o
KTsKIAogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VySW50ZXJmYWNl
SWRpb20ubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VySW50ZXJmYWNlSWRpb20ubW0KaW5k
ZXggN2FjZTEyOGFmY2MzNmEyNDEzOTFkYmNmNTc2MjJlMmNlOTUyNTJjNy4uNjUzNGE4NDZmZDc1
MWY4MWIwNjA4M2NmMWMwMWU0OTVjYzRkMWY2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvVXNlckludGVyZmFjZUlkaW9tLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1Vz
ZXJJbnRlcmZhY2VJZGlvbS5tbQpAQCAtNzksNiArNzksMTYgQEAgdm9pZCBzZXRDdXJyZW50VXNl
ckludGVyZmFjZUlkaW9tSXNQYWRPck1hYyhib29sIGlzUGFkKQogICAgIHVzZXJJbnRlcmZhY2VJ
ZGlvbUlzUGFkU3RhdGUgPSBpc1BhZCA/IFVzZXJJbnRlcmZhY2VJZGlvbVN0YXRlOjpJc1BhZCA6
IFVzZXJJbnRlcmZhY2VJZGlvbVN0YXRlOjpJc05vdFBhZDsKIH0KIAorYm9vbCB1cGRhdGVDdXJy
ZW50VXNlckludGVyZmFjZUlkaW9tKCkKK3sKKyAgICBib29sIGlzUGFkID0gdXNlckludGVyZmFj
ZUlkaW9tSXNQYWQoKTsKKyAgICBpZiAoY3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkT3JN
YWMoKSA9PSBpc1BhZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc2V0Q3VycmVudFVz
ZXJJbnRlcmZhY2VJZGlvbUlzUGFkT3JNYWMoaXNQYWQpOworICAgIHJldHVybiB0cnVlOworfQor
CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA3
MTQ0ZWVjMDlmMTc1YzViMDA3NDUxY2JjYjg4YTNkZWY3MWExMzU0Li5hMGYyZDBjMDlmZWE1Zjc1
Y2Q3MmU1MTk0OWI2MDQ1N2JjOTk3Zjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaApAQCAtODExLDYgKzgxMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGxpY2F0aW9u
RGlkQmVjb21lQWN0aXZlKCk7CiAgICAgdm9pZCBhcHBsaWNhdGlvbkRpZEVudGVyQmFja2dyb3Vu
ZEZvck1lZGlhKCk7CiAgICAgdm9pZCBhcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmRGb3JN
ZWRpYSgpOworICAgIHZvaWQgdXNlckludGVyZmFjZUlkaW9tRGlkQ2hhbmdlKCk7CiAgICAgdm9p
ZCBjb21taXRQb3RlbnRpYWxUYXBGYWlsZWQoKTsKICAgICB2b2lkIGRpZE5vdEhhbmRsZVRhcEFz
Q2xpY2soY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKICAgICB2b2lkIGRpZENvbXBsZXRlU3lu
dGhldGljQ2xpY2soKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
S0NvbnRlbnRWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZp
ZXcubW0KaW5kZXggYzU3NmE5NWM5ZjNiMTAwZjAxYjJmNGJiYjY1NDUwYTIyYmRkOTc1ZS4uYjk0
MDY3MjE1ZjkzN2UzNGJjY2NjNzcxZmQwMDAyNWUyNTY5ODI1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXcubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBv
cnQgIlJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhUHJveHkuaCIKICNpbXBvcnQgIlNtYXJ0TWFn
bmlmaWNhdGlvbkNvbnRyb2xsZXIuaCIKICNpbXBvcnQgIlVJS2l0U1BJLmgiCisjaW1wb3J0ICJV
c2VySW50ZXJmYWNlSWRpb20uaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ckludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dEdyb3VwUHJpdmF0ZS5oIgog
I2ltcG9ydCAiV0tJbnNwZWN0b3JIaWdobGlnaHRWaWV3LmgiCkBAIC0yMTMsNiArMjE0LDkgQEAg
LSAoaW5zdGFuY2V0eXBlKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhQcm9jZXNzUG9vbDooV2Vi
S2l0OjpXZWJQcm9jZXNzUG9vbCYpcHIKICAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1
bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9yKF9hcHBsaWNhdGlv
bldpbGxFbnRlckZvcmVncm91bmQ6KSBuYW1lOlVJQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3Jv
dW5kTm90aWZpY2F0aW9uIG9iamVjdDpbVUlBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl1d
OwogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2ZXI6
c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX3NjcmVlbkNhcHR1cmVkRGlkQ2hhbmdlOikgbmFtZTpV
SVNjcmVlbkNhcHR1cmVkRGlkQ2hhbmdlTm90aWZpY2F0aW9uIG9iamVjdDpbVUlTY3JlZW4gbWFp
blNjcmVlbl1dOwogCisgICAgaWYgKCFbVUlBcHBsaWNhdGlvbiBzaGFyZWRBcHBsaWNhdGlvbl0p
CisgICAgICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gYWRkT2JzZXJ2
ZXI6c2VsZiBzZWxlY3RvcjpAc2VsZWN0b3IoX2FwcGxpY2F0aW9uRGlkRmluaXNoTGF1bmNoaW5n
OikgbmFtZTpVSUFwcGxpY2F0aW9uRGlkRmluaXNoTGF1bmNoaW5nTm90aWZpY2F0aW9uIG9iamVj
dDpuaWxdOworCiAjaWYgVVNFKFVJS0lUX0tFWUJPQVJEX0FERElUSU9OUykKICAgICBpZiAoV2Vi
Q29yZTo6SU9TQXBwbGljYXRpb246OmlzRXZlcm5vdGUoKSAmJiAhbGlua2VkT25PckFmdGVyKFdl
YkNvcmU6OlNES1ZlcnNpb246OkZpcnN0V2hlcmVXS0NvbnRlbnRWaWV3RG9lc05vdE92ZXJyaWRl
S2V5Q29tbWFuZHMpKQogICAgICAgICBjbGFzc19hZGRNZXRob2Qoc2VsZi5jbGFzcywgQHNlbGVj
dG9yKGtleUNvbW1hbmRzKSwgcmVpbnRlcnByZXRfY2FzdDxJTVA+KCZrZXlDb21tYW5kc1BsYWNl
aG9sZGVySGFja0ZvckV2ZXJub3RlKSwgbWV0aG9kX2dldFR5cGVFbmNvZGluZyhjbGFzc19nZXRJ
bnN0YW5jZU1ldGhvZChzZWxmLmNsYXNzLCBAc2VsZWN0b3Ioa2V5Q29tbWFuZHMpKSkpOwpAQCAt
Nzc3LDYgKzc4MSwxMiBAQCAtICh2b2lkKV9hcHBsaWNhdGlvbldpbGxFbnRlckZvcmVncm91bmQ6
KE5TTm90aWZpY2F0aW9uKilub3RpZmljYXRpb24KICAgICAgICAgX3BhZ2UtPmFwcGxpY2F0aW9u
V2lsbEVudGVyRm9yZWdyb3VuZEZvck1lZGlhKCk7CiB9CiAKKy0gKHZvaWQpX2FwcGxpY2F0aW9u
RGlkRmluaXNoTGF1bmNoaW5nOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgoreworICAg
IGlmIChXZWJLaXQ6OnVwZGF0ZUN1cnJlbnRVc2VySW50ZXJmYWNlSWRpb20oKSkKKyAgICAgICAg
X3BhZ2UtPnVzZXJJbnRlcmZhY2VJZGlvbURpZENoYW5nZSgpOworfQorCiAtICh2b2lkKV9zY3Jl
ZW5DYXB0dXJlZERpZENoYW5nZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KIHsKICAg
ICBfcGFnZS0+c2V0U2NyZWVuSXNCZWluZ0NhcHR1cmVkKFtbW3NlbGYgd2luZG93XSBzY3JlZW5d
IGlzQ2FwdHVyZWRdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tCmluZGV4IGVkNzhkZjM4MjFhMWRmNDc0OTEwNzhjZTFmYjNlYjVhY2VmMzUyYmIu
LmFjZmRhZGNiZjMyMjIxNTIwYzI5ZjA0OWQ0ZWY0MGMzMzQzYTEyNzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpAQCAtMTMzNCwxNiArMTMz
NCw2IEBAIGNvbnN0IFN0cmluZyYgV2ViUGFnZVByb3h5OjpwYXltZW50Q29vcmRpbmF0b3JDVERh
dGFDb25uZWN0aW9uU2VydmljZVR5cGUoY29uc3QKIAogI2VuZGlmIC8vIEVOQUJMRShBUFBMRV9Q
QVkpCiAKLXN0YXRpYyBib29sIGRlc2t0b3BDbGFzc0Jyb3dzaW5nU3VwcG9ydGVkKCkKLXsKLSAg
ICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Rlc2t0b3BDbGFzc0Jyb3dzaW5nID0gZmFsc2U7Ci0gICAg
c3RhdGljIGRpc3BhdGNoX29uY2VfdCBvbmNlVG9rZW47Ci0gICAgZGlzcGF0Y2hfb25jZSgmb25j
ZVRva2VuLCBeewotICAgICAgICBzdXBwb3J0c0Rlc2t0b3BDbGFzc0Jyb3dzaW5nID0gY3VycmVu
dFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkT3JNYWMoKTsKLSAgICB9KTsKLSAgICByZXR1cm4gc3Vw
cG9ydHNEZXNrdG9wQ2xhc3NCcm93c2luZzsKLX0KLQogI2lmICFQTEFURk9STShNQUNDQVRBTFlT
VCkKIAogc3RhdGljIGJvb2wgd2ViVmlld1NpemVJc05hcnJvdyhXZWJDb3JlOjpJbnRTaXplIHZp
ZXdTaXplKQpAQCAtMTQzMiw2ICsxNDIyLDggQEAgc3RhdGljIFJlY29tbWVuZERlc2t0b3BDbGFz
c0Jyb3dzaW5nRm9yUmVxdWVzdCBkZXNrdG9wQ2xhc3NCcm93c2luZ1JlY29tbWVuZGVkRm8KICAg
ICByZXR1cm4gUmVjb21tZW5kRGVza3RvcENsYXNzQnJvd3NpbmdGb3JSZXF1ZXN0OjpBdXRvOwog
fQogCitzdGF0aWMgT3B0aW9uYWw8Ym9vbD4gc2hvdWxkUmVjb21tZW5kRGVza3RvcENsYXNzQnJv
d3NpbmcgPSBXVEY6Om51bGxvcHQ7CisKIGVudW0gY2xhc3MgSWdub3JlQXBwQ29tcGF0aWJpbGl0
eVNhZmVndWFyZHMgOiBib29sIHsgTm8sIFllcyB9Owogc3RhdGljIGJvb2wgZGVza3RvcENsYXNz
QnJvd3NpbmdSZWNvbW1lbmRlZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIHJlcXVl
c3QsIFdlYkNvcmU6OkludFNpemUgdmlld1NpemUsIElnbm9yZUFwcENvbXBhdGliaWxpdHlTYWZl
Z3VhcmRzIGlnbm9yZVNhZmVndWFyZHMpCiB7CkBAIC0xNDQ3LDIzICsxNDM5LDI1IEBAIHN0YXRp
YyBib29sIGRlc2t0b3BDbGFzc0Jyb3dzaW5nUmVjb21tZW5kZWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiByZXF1CiAgICAgICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCi0gICAg
c3RhdGljIGJvb2wgc2hvdWxkUmVjb21tZW5kRGVza3RvcENsYXNzQnJvd3NpbmcgPSBmYWxzZTsK
LSAgICBzdGF0aWMgZGlzcGF0Y2hfb25jZV90IG9uY2VUb2tlbjsKLSAgICBkaXNwYXRjaF9vbmNl
KCZvbmNlVG9rZW4sIF57CisgICAgaWYgKHNob3VsZFJlY29tbWVuZERlc2t0b3BDbGFzc0Jyb3dz
aW5nKQorICAgICAgICByZXR1cm4gc2hvdWxkUmVjb21tZW5kRGVza3RvcENsYXNzQnJvd3Npbmcu
dmFsdWUoKTsKKwogI2lmIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgICAgICBzaG91bGRSZWNv
bW1lbmREZXNrdG9wQ2xhc3NCcm93c2luZyA9IGRlc2t0b3BDbGFzc0Jyb3dzaW5nU3VwcG9ydGVk
KCk7CisgICAgc2hvdWxkUmVjb21tZW5kRGVza3RvcENsYXNzQnJvd3NpbmcgPSBXZWJLaXQ6OmN1
cnJlbnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZE9yTWFjKCk7CiAjZWxzZQotICAgICAgICAvLyBX
aGlsZSBkZXNrdG9wLWNsYXNzIGJyb3dzaW5nIGlzIHN1cHBvcnRlZCBvbiBhbGwgaVBhZCBtb2Rl
bHMsIGl0IGlzIG5vdCByZWNvbW1lbmRlZCBmb3IgaVBhZCBtaW5pLgotICAgICAgICBhdXRvIHNj
cmVlbkNsYXNzID0gTUdHZXRTSW50MzJBbnN3ZXIoa01HUU1haW5TY3JlZW5DbGFzcywgTUdTY3Jl
ZW5DbGFzc1BhZDIpOwotICAgICAgICBzaG91bGRSZWNvbW1lbmREZXNrdG9wQ2xhc3NCcm93c2lu
ZyA9IHNjcmVlbkNsYXNzICE9IE1HU2NyZWVuQ2xhc3NQYWQzICYmIHNjcmVlbkNsYXNzICE9IE1H
U2NyZWVuQ2xhc3NQYWQ0ICYmIGRlc2t0b3BDbGFzc0Jyb3dzaW5nU3VwcG9ydGVkKCk7CisgICAg
c2hvdWxkUmVjb21tZW5kRGVza3RvcENsYXNzQnJvd3NpbmcgPSBmYWxzZTsKKworICAgIC8vIFdo
aWxlIGRlc2t0b3AtY2xhc3MgYnJvd3NpbmcgaXMgc3VwcG9ydGVkIG9uIGFsbCBpUGFkIG1vZGVs
cywgaXQgaXMgbm90IHJlY29tbWVuZGVkIGZvciBpUGFkIG1pbmkuCisgICAgYXV0byBzY3JlZW5D
bGFzcyA9IE1HR2V0U0ludDMyQW5zd2VyKGtNR1FNYWluU2NyZWVuQ2xhc3MsIE1HU2NyZWVuQ2xh
c3NQYWQyKTsKKyAgICBzaG91bGRSZWNvbW1lbmREZXNrdG9wQ2xhc3NCcm93c2luZyA9IHNjcmVl
bkNsYXNzICE9IE1HU2NyZWVuQ2xhc3NQYWQzICYmIHNjcmVlbkNsYXNzICE9IE1HU2NyZWVuQ2xh
c3NQYWQ0ICYmIFdlYktpdDo6Y3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFkT3JNYWMoKTsK
ICNlbmRpZgotICAgICAgICBpZiAoaWdub3JlU2FmZWd1YXJkcyA9PSBJZ25vcmVBcHBDb21wYXRp
YmlsaXR5U2FmZWd1YXJkczo6Tm8gJiYgIWxpbmtlZE9uT3JBZnRlcihXZWJDb3JlOjpTREtWZXJz
aW9uOjpGaXJzdFdpdGhNb2Rlcm5Db21wYWJpbGl0eU1vZGVCeURlZmF1bHQpKSB7Ci0gICAgICAg
ICAgICAvLyBPcHQgb3V0IGFwcHMgdGhhdCBoYXZlbid0IHlldCBidWlsdCBhZ2FpbnN0IHRoZSBp
T1MgMTMgU0RLIHRvIGxpbWl0IGFueSBpbmNvbXBhdGliaWxpdGllcyBhcyBhIHJlc3VsdCBvZiBl
bmFibGluZyBkZXNrdG9wLWNsYXNzIGJyb3dzaW5nIGJ5IGRlZmF1bHQgaW4KLSAgICAgICAgICAg
IC8vIFdLV2ViVmlldyBvbiBhcHByb3ByaWF0ZWx5LXNpemVkIGlQYWQgbW9kZWxzLgotICAgICAg
ICAgICAgc2hvdWxkUmVjb21tZW5kRGVza3RvcENsYXNzQnJvd3NpbmcgPSBmYWxzZTsKLSAgICAg
ICAgfQotICAgIH0pOwotICAgIHJldHVybiBzaG91bGRSZWNvbW1lbmREZXNrdG9wQ2xhc3NCcm93
c2luZzsKKyAgICBpZiAoaWdub3JlU2FmZWd1YXJkcyA9PSBJZ25vcmVBcHBDb21wYXRpYmlsaXR5
U2FmZWd1YXJkczo6Tm8gJiYgIWxpbmtlZE9uT3JBZnRlcihXZWJDb3JlOjpTREtWZXJzaW9uOjpG
aXJzdFdpdGhNb2Rlcm5Db21wYWJpbGl0eU1vZGVCeURlZmF1bHQpKSB7CisgICAgICAgIC8vIE9w
dCBvdXQgYXBwcyB0aGF0IGhhdmVuJ3QgeWV0IGJ1aWx0IGFnYWluc3QgdGhlIGlPUyAxMyBTREsg
dG8gbGltaXQgYW55IGluY29tcGF0aWJpbGl0aWVzIGFzIGEgcmVzdWx0IG9mIGVuYWJsaW5nIGRl
c2t0b3AtY2xhc3MgYnJvd3NpbmcgYnkgZGVmYXVsdCBpbgorICAgICAgICAvLyBXS1dlYlZpZXcg
b24gYXBwcm9wcmlhdGVseS1zaXplZCBpUGFkIG1vZGVscy4KKyAgICAgICAgc2hvdWxkUmVjb21t
ZW5kRGVza3RvcENsYXNzQnJvd3NpbmcgPSBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gc2hv
dWxkUmVjb21tZW5kRGVza3RvcENsYXNzQnJvd3NpbmcudmFsdWUoKTsKIH0KIAogV2ViQ29udGVu
dE1vZGUgV2ViUGFnZVByb3h5OjplZmZlY3RpdmVDb250ZW50TW9kZUFmdGVyQWRqdXN0aW5nUG9s
aWNpZXMoQVBJOjpXZWJzaXRlUG9saWNpZXMmIHBvbGljaWVzLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCkBAIC0xNTEzLDcgKzE1MDcsNyBAQCBXZWJDb250ZW50TW9k
ZSBXZWJQYWdlUHJveHk6OmVmZmVjdGl2ZUNvbnRlbnRNb2RlQWZ0ZXJBZGp1c3RpbmdQb2xpY2ll
cyhBUEk6OldlYgogICAgICAgICBwb2xpY2llcy5zZXRDdXN0b21OYXZpZ2F0b3JQbGF0Zm9ybSgi
TWFjSW50ZWwiX3MpOwogICAgIH0KIAotICAgIGlmIChkZXNrdG9wQ2xhc3NCcm93c2luZ1N1cHBv
cnRlZCgpKSB7CisgICAgaWYgKFdlYktpdDo6Y3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbUlzUGFk
T3JNYWMoKSkgewogICAgICAgICAvLyBBcHBseSBzb21lIGFkZGl0aW9uYWwgZGVza3RvcC1jbGFz
cyBicm93c2luZyBiZWhhdmlvcnMgb24gc3VwcG9ydGVkIGRldmljZXMuCiAgICAgICAgIHBvbGlj
aWVzLnNldE1ldGFWaWV3cG9ydFBvbGljeShXZWJzaXRlTWV0YVZpZXdwb3J0UG9saWN5OjpJZ25v
cmUpOwogICAgICAgICBwb2xpY2llcy5zZXRNZWRpYVNvdXJjZVBvbGljeShXZWJzaXRlTWVkaWFT
b3VyY2VQb2xpY3k6OkVuYWJsZSk7CkBAIC0xNjUyLDYgKzE2NDYsMTkgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OnNob3dEYXRhRGV0ZWN0b3JzVUlGb3JQb3NpdGlvbkluZm9ybWF0aW9uKGNvbnN0IElu
dGVyYWN0aW9uSW4KICAgICBwYWdlQ2xpZW50KCkuc2hvd0RhdGFEZXRlY3RvcnNVSUZvclBvc2l0
aW9uSW5mb3JtYXRpb24ocG9zaXRpb25JbmZvKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6OnVz
ZXJJbnRlcmZhY2VJZGlvbURpZENoYW5nZSgpCit7CisgICAgc2hvdWxkUmVjb21tZW5kRGVza3Rv
cENsYXNzQnJvd3NpbmcgPSBXVEY6Om51bGxvcHQ7CisKKyAgICBhdXRvIGlzUGFkT3JNYWMgPSBX
ZWJLaXQ6OmN1cnJlbnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZE9yTWFjKCk7CisgICAgbV9wcmVm
ZXJlbmNlcy0+c2V0QWxsb3dzSW5saW5lTWVkaWFQbGF5YmFjayhpc1BhZE9yTWFjKTsKKyAgICBt
X3ByZWZlcmVuY2VzLT5zZXRJbmxpbmVNZWRpYVBsYXliYWNrUmVxdWlyZXNQbGF5c0lubGluZUF0
dHJpYnV0ZSghaXNQYWRPck1hYyk7CisgICAgbV9wcmVmZXJlbmNlcy0+c2V0QWxsb3dzSW5saW5l
TWVkaWFQbGF5YmFja0FmdGVyRnVsbHNjcmVlbighaXNQYWRPck1hYyk7CisKKyAgICBpZiAoaGFz
UnVubmluZ1Byb2Nlc3MoKSkKKyAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpVc2VySW50ZXJmYWNlSWRpb21EaWRDaGFuZ2UoaXNQYWRPck1hYyksIG1fd2ViUGFnZUlE
KTsKK30KKwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDAzNWVjMmYwMWI0Mzg5NTIyMTIzZDllMTczMTA5
YTIxNWYwOGJiMWEuLjRlOTUxNTJiZDU1NjIzN2UzODMzY2FhNTI3MzkwZmQzY2EzNzUwY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTc2OSw2ICs3
NjksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxBdXRvc2Nyb2xsKCk7CiAgICAgdm9pZCBy
ZXF1ZXN0RXZhc2lvblJlY3RzQWJvdmVTZWxlY3Rpb24oQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBWZWN0b3I8V2ViQ29yZTo6RmxvYXRSZWN0PiYpPiYmKTsKIAorICAgIHZvaWQgdXNlcklu
dGVyZmFjZUlkaW9tRGlkQ2hhbmdlKGJvb2wpOwogICAgIHZvaWQgY29udGVudFNpemVDYXRlZ29y
eURpZENoYW5nZShjb25zdCBTdHJpbmcmKTsKIAogICAgIFNlY29uZHMgZXZlbnRUaHJvdHRsaW5n
RGVsYXkoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDJlYWJkY2Y5NDNiZDAwMDQyMjBjYjAzNjRhMzUx
MzdkMmZlOWUyYmUuLmUyYzZhZWY5ZTcwMmE0NTY4NmNjODljZWU2OThiMGMzYjgyMzYwMGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbgpAQCAtMTAzLDYgKzEwMyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIEFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKICAgICBBcHBsaWNhdGlv
bkRpZEVudGVyQmFja2dyb3VuZEZvck1lZGlhKGJvb2wgaXNTdXNwZW5kZWRVbmRlckxvY2spCiAg
ICAgQXBwbGljYXRpb25XaWxsRW50ZXJGb3JlZ3JvdW5kRm9yTWVkaWEoYm9vbCBpc1N1c3BlbmRl
ZFVuZGVyTG9jaykKKyAgICBVc2VySW50ZXJmYWNlSWRpb21EaWRDaGFuZ2UoYm9vbCBpc1BhZE9y
TWFjKQogICAgIENvbnRlbnRTaXplQ2F0ZWdvcnlEaWRDaGFuZ2UoU3RyaW5nIGNvbnRlbnRTaXpl
Q2F0ZWdvcnkpCiAgICAgR2V0U2VsZWN0aW9uQ29udGV4dChXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKICAgICBTZXRBbGxvd3NNZWRpYURvY3VtZW50SW5saW5lUGxheWJhY2soYm9vbCBh
bGxvd3MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3Mv
V2ViUGFnZUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tCmluZGV4IDBlMjkzZmE0ZGYxOWNiZjhjZDY3OTMxNzZkNzg3ODkyYWQ4ZTEyODEu
LjY4YzEwYjg4N2RlYTdkY2E4NzBlMmM1ZGMyMTJiNGJlM2E1MmJiYTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC00Niw2
ICs0Niw3IEBACiAjaW1wb3J0ICJUZXh0Q2hlY2tpbmdDb250cm9sbGVyUHJveHkuaCIKICNpbXBv
cnQgIlVJS2l0U1BJLmgiCiAjaW1wb3J0ICJVc2VyRGF0YS5oIgorI2ltcG9ydCAiVXNlckludGVy
ZmFjZUlkaW9tLmgiCiAjaW1wb3J0ICJWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgiCiAj
aW1wb3J0ICJWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvLmgiCiAjaW1wb3J0ICJXS0FjY2Vz
c2liaWxpdHlXZWJQYWdlT2JqZWN0SU9TLmgiCkBAIC0zOTcxLDYgKzM5NzIsMTEgQEAgdm9pZCBX
ZWJQYWdlOjpjb21wdXRlUGFnZXNGb3JQcmludGluZ0FuZERyYXdUb1BERihXZWJDb3JlOjpGcmFt
ZUlkZW50aWZpZXIgZnJhbWUKICAgICBlbmRQcmludGluZygpOwogfQogCit2b2lkIFdlYlBhZ2U6
OnVzZXJJbnRlcmZhY2VJZGlvbURpZENoYW5nZShib29sIGlzUGFkT3JNYWMpCit7CisgICAgV2Vi
S2l0OjpzZXRDdXJyZW50VXNlckludGVyZmFjZUlkaW9tSXNQYWRPck1hYyhpc1BhZE9yTWFjKTsK
K30KKwogdm9pZCBXZWJQYWdlOjpjb250ZW50U2l6ZUNhdGVnb3J5RGlkQ2hhbmdlKGNvbnN0IFN0
cmluZyYgY29udGVudFNpemVDYXRlZ29yeSkKIHsKICAgICBSZW5kZXJUaGVtZUlPUzo6c2V0Q29u
dGVudFNpemVDYXRlZ29yeShjb250ZW50U2l6ZUNhdGVnb3J5KTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjZjVkZDhhMTY1YzAxYjcxOTEwM2Mz
OGFlM2Y2ZjJkMDRjZTY0ODliLi45OWUwOTUzMzRkMjI3MzkxODQ4ZTk2YmFkNDUxNjNjODM0Zjhj
MGE3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMjAtMTItMjEgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBw
bGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIyNjExNTcpOiBDcmFzaCBpbiBXS1NlbGVj
dFBvcG92ZXIgd2hlbiBydW5uaW5nIGFzIGlQaG9uZSBhcHAgb24gaVBhZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIwMDY1CisgICAgICAgIDxyZGFy
Oi8vcHJvYmxlbS83MTkzMjc5Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBBZGRlZCBhbiBBUEkgdGVzdCB0byBleGVyY2lzZSB0aGUgcHJldmlvdXNs
eSBjcmFzaGluZywgYW5kIG5vdyBmaXhlZCwKKyAgICAgICAgY29kZXBhdGguIE5vdGUgdGhhdCB0
aGUgdGVzdCB3aWxsIHRyaXZpYWxseSBwYXNzIG9uIGlQaG9uZXMsIHNpbmNlIHRoZQorICAgICAg
ICBjcmFzaCBvbmx5IG9jY3VycyBvbiBpUGFkcy4gU2VlIGJlbG93IGZvciBhbiBleHBsYW5hdGlv
biBvZiBob3cgdGhlCisgICAgICAgIHRlc3QgZnVuY3Rpb25zIG9uIGlQYWRzLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvVXNlckludGVyZmFjZUlkaW9tVXBk
YXRlLm1tOiBBZGRlZC4KKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCisgICAgICAg
IFNpbmNlIFRlc3RXZWJLaXRBUEkgaXMgbm90IGFuIGFwcGxpY2F0aW9uLCBbVUlBcHBsaWNhdGlv
biBzaGFyZWRBcHBsaWNhdGlvbl0KKyAgICAgICAgaXMgbmlsIHdoZW4gdGhlIHRlc3QgY3JlYXRl
cyBhIFdLV2ViVmlldy4gQ29uc2VxdWVudGx5LCB3aGVuIHRoZSBXS1dlYlZpZXcKKyAgICAgICAg
aXMgY3JlYXRlZCwgV2ViS2l0IHVzZXMgdGhlIGRldmljZSBoYXJkd2FyZSBpbmZvcm1hdGlvbiB0
byBkZXRlcm1pbmUgdGhlIHVzZXIKKyAgICAgICAgaW50ZXJmYWNlIGlkaW9tIChpUGFkKS4gTm93
LCBiZWZvcmUgdGhlIHRlc3QgaW50ZXJhY3RzIHdpdGggdGhlIFdLV2ViVmlldywKKyAgICAgICAg
dGhlIHVzZXIgaW50ZXJmYWNlIGlkaW9tIGlzIGNoYW5nZWQgdG8gYW4gaVBob25lIGFuZCB0aGUg
VUlBcHBsaWNhdGlvbiBpcworICAgICAgICBpbml0aWFsaXplZC4gTm90ZSB0aGF0IHRoZSBVSUFw
cGxpY2F0aW9uRGlkRmluaXNoTGF1bmNoaW5nTm90aWZpY2F0aW9uCisgICAgICAgIGlzIG1hbnVh
bGx5IHBvc3RlZCwgc2luY2UgdGhlcmUgaXMgbm8gVUlBcHBsaWNhdGlvbkRlbGVnYXRlLgorCisg
ICAgICAgIFdpdGhvdXQgdGhlIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCwgdGhlIHRlc3Qgd2lsbCBj
cmFzaCwgc2luY2UgdGhlIHVzZXIKKyAgICAgICAgaW50ZXJmYWNlIGlkaW9tIG1haW50YWluZWQg
YnkgV2ViS2l0IHdvdWxkIG5vdCBiZSB1cGRhdGVkLCBhbmQgd291bGQKKyAgICAgICAgcmVtYWlu
IGlQYWQgcmF0aGVyIHRoYW4gaVBob25lLiBIZW5jZSwgd2hlbiBmb2N1c2luZyBhIHNlbGVjdCBl
bGVtZW50LCB0aGUgdGVzdAorICAgICAgICB3b3VsZCBhdHRlbXB0IHRvIHByZXNlbnQgYSBVSVBv
cG92ZXJDb250cm9sbGVyLiBIb3dldmVyLCBzaW5jZSB0aGUgaWRpb20KKyAgICAgICAgaXMgYWN0
dWFsbHkgaVBob25lLCBVSUtpdCB3aWxsIHRocm93IGFuIE5TSW52YWxpZEFyZ3VtZW50RXhjZXB0
aW9uLgorCisgICAgICAgIEFmdGVyIHRoZSBjaGFuZ2VzIGluIHRoaXMgcGF0Y2gsIHRoZSB0ZXN0
IGRvZXMgY3Jhc2gsIGFzIHRoZSBjaGFuZ2UgdG8gdGhlCisgICAgICAgIHVzZXIgaW50ZXJmYWNl
IGlkaW9tIGFmdGVyIFVJQXBwbGljYXRpb24gY3JlYXRpb24gaXMgcmVjb2duaXplZCBieSBXZWJL
aXQsCisgICAgICAgIGFuZCB0aGUgYXR0ZW1wdCB0byBwcmVzZW50IGEgVUlQb3BvdmVyQ29udHJv
bGxlciB1bmRlciB0aGUgaVBob25lIGlkaW9tCisgICAgICAgIGRvZXMgbm90IG9jY3VyLgorCiAy
MDIwLTEyLTE0ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbd2Via2l0c2NtcHldIExvYWQgbW9jayByZXBvc2l0b3J5IGRhdGEgZnJvbSBqc29uIGZpbGUK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZmQ4MThlOWI3NjM4MjBhYTYyNTE5NWQ2YTQwNDFk
NzU1MWU0YWYzOS4uZmNhM2QzYjk1ZTU5ZjBiM2M0YTVlZTNkODA0OWQyNjVlNjQ5YWJjYiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTExMDIsNiArMTEwMiw3IEBACiAJCUUzRjhBQjkyMjQx
QUI5Q0UwMDNFMkE3RSAvKiBBY2Nlc3NpYmlsaXR5UmVtb3RlVUlBcHAubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0Y4QUI5MTI0MUFCOUNFMDAzRTJB
N0UgLyogQWNjZXNzaWJpbGl0eVJlbW90ZVVJQXBwLm1tICovOyB9OwogCQlFNTAzNkY3ODIxMUJD
MjU0MDBCRkRCRTIgLyogY29sb3ItZHJvcC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU1MDM2Rjc3MjExQkMyMjgwMEJGREJFMiAvKiBj
b2xvci1kcm9wLmh0bWwgKi87IH07CiAJCUU1ODkxODNDMjUyQkM5MEEwMDQxREVENSAvKiBEYXRl
VGltZUlucHV0c0FjY2Vzc29yeVZpZXdUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU1ODkxODNCMjUyQkM5MEEwMDQxREVENSAvKiBEYXRlVGlt
ZUlucHV0c0FjY2Vzc29yeVZpZXdUZXN0cy5tbSAqLzsgfTsKKwkJRTVBQTQyRjIyNTkxMjhBRTAw
NDEwQTNEIC8qIFVzZXJJbnRlcmZhY2VJZGlvbVVwZGF0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU1QUE0MkYxMjU5MTI4QUUwMDQxMEEzRCAvKiBV
c2VySW50ZXJmYWNlSWRpb21VcGRhdGUubW0gKi87IH07CiAJCUU1QUE4RDFEMjUxNTFDQzYwMDUx
Q0M0NSAvKiBEYXRlSW5wdXRUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEU1QUE4RDFDMjUxNTFDQzYwMDUxQ0M0NSAvKiBEYXRlSW5wdXRUZXN0
cy5tbSAqLzsgfTsKIAkJRUIyMzBENDAyNDVFNzI3OTAwQzY2QUQxIC8qIElEQkNoZWNrcG9pbnRX
QUwubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjIz
MEQzRTI0NUU3MjYzMDBDNjZBRDEgLyogSURCQ2hlY2twb2ludFdBTC5tbSAqLzsgfTsKIAkJRUIy
MzBENDEyNDVFODEzRjAwQzY2QUQxIC8qIElEQkNoZWNrcG9pbnRXQUwuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQjIzMEQzRDI0NUU3
MjJFMDBDNjZBRDEgLyogSURCQ2hlY2twb2ludFdBTC5odG1sICovOyB9OwpAQCAtMjg0NCw2ICsy
ODQ1LDcgQEAKIAkJRTRDOUFCQzcxQjNEQjE3MTAwNDBBOTg3IC8qIFJ1bkxvb3AuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUnVuTG9vcC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUU1MDM2Rjc3MjExQkMyMjgwMEJGREJFMiAvKiBjb2xvci1kcm9w
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiY29sb3ItZHJvcC5odG1sIjsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTU4OTE4M0IyNTJCQzkwQTAwNDFERUQ1IC8qIERh
dGVUaW1lSW5wdXRzQWNjZXNzb3J5Vmlld1Rlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
RGF0ZVRpbWVJbnB1dHNBY2Nlc3NvcnlWaWV3VGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUU1QUE0MkYxMjU5MTI4QUUwMDQxMEEzRCAvKiBVc2VySW50ZXJmYWNlSWRpb21V
cGRhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVc2VySW50ZXJmYWNlSWRpb21VcGRhdGUu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU1QUE4RDFDMjUxNTFDQzYwMDUxQ0M0
NSAvKiBEYXRlSW5wdXRUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERhdGVJbnB1dFRl
c3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQjIzMEQzRDI0NUU3MjJFMDBD
NjZBRDEgLyogSURCQ2hlY2twb2ludFdBTC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gSURCQ2hlY2twb2ludFdBTC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlF
QjIzMEQzRTI0NUU3MjYzMDBDNjZBRDEgLyogSURCQ2hlY2twb2ludFdBTC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IElEQkNoZWNrcG9pbnRXQUwubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0zNjYwLDYgKzM2NjIsNyBAQAogCQkJCUY0NTAzM0Y0
MjA2QkVDOTUwMDkzNTFDRSAvKiBUZXh0QXV0b3NpemluZ0Jvb3N0Lm1tICovLAogCQkJCUY0Njg0
OUJEMUVFRjU4RTQwMEI5MzdGRSAvKiBVSVBhc3RlYm9hcmRUZXN0cy5tbSAqLywKIAkJCQlGNDAy
RjU2QjIzRUNDMkZCMDA4NjU1NDkgLyogVUlXS0ludGVyYWN0aW9uVmlld1Byb3RvY29sLm1tICov
LAorCQkJCUU1QUE0MkYxMjU5MTI4QUUwMDQxMEEzRCAvKiBVc2VySW50ZXJmYWNlSWRpb21VcGRh
dGUubW0gKi8sCiAJCQkJRjQzRTNCQkUyMERBREExRTAwQTRFN0VEIC8qIFdLU2Nyb2xsVmlld1Rl
c3RzLm1tICovLAogCQkJCTUxNDk1OEJEMUY3NDI3QUMwMEU4N0JBRCAvKiBXS1dlYlZpZXdBdXRv
ZmlsbFRlc3RzLm1tICovLAogCQkJCTFDQUNBREEwMjMwNjIwQUQwMDA3RDU0QyAvKiBXS1dlYlZp
ZXdPcGFxdWUubW0gKi8sCkBAIC01MTg1LDYgKzUxODgsNyBAQAogCQkJCTJEN0ZEMTkzMjI0MTkw
ODcwMDc4ODdGMSAvKiBEb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOTM5MTVBMTcyNERCNjZDNzAwMTlGRjQzIC8qIERvY3VtZW50T3JkZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0NDRTdFRUIxQTQxMUFFNjAwNDQ3QzRDIC8qIERvY3VtZW50U3RhcnRVc2Vy
U2NyaXB0QWxlcnRDcmFzaC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFNUFBNDJGMjI1OTEyOEFF
MDA0MTBBM0QgLyogVXNlckludGVyZmFjZUlkaW9tVXBkYXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0NDRTdFQkIxQTQxMUE3RTAwNDQ3QzRDIC8qIERPTUhUTUxUYWJsZUNlbGxDZWxsQWJvdmUu
bW0gaW4gU291cmNlcyAqLywKIAkJCQkyRDUxQTBDNzFDOEJGMDBDMDA3NjVDNDUgLyogRE9NSFRN
TFZpZGVvRWxlbWVudFdyYXBwZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk0NjM5N0I5NTFEQzJD
ODUwMDA5QTc4QUUgLyogRE9NTm9kZS5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvVXNlckludGVyZmFjZUlkaW9tVXBkYXRlLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvVXNlckludGVyZmFjZUlkaW9tVXBkYXRlLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjJlYWE4NzdjNzdhZmU4YmM4ZWJmYmI1YTNmYmRmNTMxZDQ5MDRlZDQKLS0t
IC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9Vc2VySW50ZXJm
YWNlSWRpb21VcGRhdGUubW0KQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisKKyNpbXBvcnQgIlRlc3RJ
bnB1dERlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0ICJVSUtp
dFNQSS5oIgorI2ltcG9ydCAiVXNlckludGVyZmFjZVN3aXp6bGVyLmgiCisjaW1wb3J0IDxXZWJL
aXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorCituYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CisKK1RF
U1QoVXNlckludGVyZmFjZUlkaW9tVXBkYXRlLCBTZWxlY3RQb3BvdmVyQ3Jhc2gpCit7CisgICAg
YXV0byBpbnB1dERlbGVnYXRlID0gYWRvcHROUyhbVGVzdElucHV0RGVsZWdhdGUgbmV3XSk7Cisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBbd2ViVmlldyBfc2V0SW5w
dXREZWxlZ2F0ZTppbnB1dERlbGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91
c2x5TG9hZEhUTUxTdHJpbmc6QCI8c2VsZWN0IGlkPSdzZWxlY3QnPjxvcHRpb24gc2VsZWN0ZWQ+
Zm9vPC9vcHRpb24+PG9wdGlvbj5iYXI8L29wdGlvbj48L3NlbGVjdD4iXTsKKyAgICBbaW5wdXRE
ZWxlZ2F0ZSBzZXRGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUhhbmRsZXI6WyZdIChXS1dl
YlZpZXcgKiwgaWQgPF9XS0ZvY3VzZWRFbGVtZW50SW5mbz4pIC0+IF9XS0ZvY3VzU3RhcnRzSW5w
dXRTZXNzaW9uUG9saWN5IHsKKyAgICAgICAgcmV0dXJuIF9XS0ZvY3VzU3RhcnRzSW5wdXRTZXNz
aW9uUG9saWN5QWxsb3c7CisgICAgfV07CisKKyAgICBJUGhvbmVVc2VySW50ZXJmYWNlU3dpenps
ZXIgaVBob25lVXNlckludGVyZmFjZTsKKyAgICBbW05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1
bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1lOlVJQXBwbGljYXRpb25EaWRGaW5pc2hMYXVu
Y2hpbmdOb3RpZmljYXRpb24gb2JqZWN0Om5pbCB1c2VySW5mbzpuaWxdOworCisgICAgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInNlbGVjdC5mb2N1cygpIl07Cit9CisK
K30gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIFBMQVRGT1JNKElPU19G
QU1JTFkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>417031</attachid>
            <date>2021-01-05 13:34:41 -0800</date>
            <delta_ts>2021-01-05 19:27:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220065-20210105163439.patch</filename>
            <type>text/plain</type>
            <size>18407</size>
            <attacher name="Aditya Keerthi">akeerthi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwNzY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDUwZWJlZThmMTUxMThlN2Jl
NTBkYzFlYzE5YzUyZDFhOGQzODNhZWIuLmJhMjc5YmJkMTExM2RiNmMwYzljNjE0ZDJkYzhiNWUz
ZWE3M2NkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMjEtMDEtMDUgIEFkaXR5YSBL
ZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04gKHIyNjEx
NTcpOiBDcmFzaCBpbiBXS1NlbGVjdFBvcG92ZXIgd2hlbiBydW5uaW5nIGFzIGlQaG9uZSBhcHAg
b24gaVBhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIwMDY1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MTkzMjc5Mj4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICByMjYxMTU3IGNoYW5nZWQgaG93IFdl
YktpdCBkZXRlcm1pbmVkIHRoZSB1c2VyIGludGVyZmFjZSBpZGlvbSBmb3IKKyAgICAgICAgV0tX
ZWJWaWV3cyB0aGF0IHdlcmUgY3JlYXRlZCBpbiBkYWVtb25zLiBTaW5jZSBkYWVtb25zIGRvIG5v
dCBjcmVhdGUKKyAgICAgICAgVUlBcHBsaWNhdGlvbnMsIFdlYktpdCBjYW5ub3QgdXNlIFVJRGV2
aWNlIGluIHRoZXNlIGluc3RhbmNlcy4gSW5zdGVhZCwKKyAgICAgICAgdGhlIHVzZXIgaW50ZXJm
YWNlIGlkaW9tIGRldGVybWluYXRpb24gbG9naWMgd2FzIHVwZGF0ZWQgdG8gaW5jbHVkZQorICAg
ICAgICBhIGNoZWNrIGZvciBkZXZpY2UgaGFyZHdhcmUsIHVzaW5nIE1vYmlsZUdlc3RhbHQsIGlu
IGNhc2VzIHdoZXJlIG5vCisgICAgICAgIFVJQXBwbGljYXRpb24gd2FzIGNyZWF0ZWQuCisKKyAg
ICAgICAgU2luY2UgV2ViS2l0IG9ubHkgZGV0ZXJtaW5lcyB0aGUgdXNlciBpbnRlcmZhY2UgaWRp
b20gb25jZSAodGhlbgorICAgICAgICBzdG9yaW5nIHRoZSBvYnRhaW5lZCB2YWx1ZSksIHRoZSBh
ZGRlZCBkZXRlcm1pbmF0aW9uIGxvZ2ljIGJyZWFrcworICAgICAgICBkb3duIGZvciBpUGhvbmUg
YXBwcyBvbiBpUGFkLiBDb25zaWRlciB0aGUgZm9sbG93aW5nIHNlcXVlbmNlIG9mCisgICAgICAg
IGV2ZW50cywgZXZlbnR1YWxseSBsZWFkaW5nIHRvIGEgY3Jhc2ggd2hlbiBpbnRlcmFjdGluZyB3
aXRoIGEKKyAgICAgICAgPHNlbGVjdD4gZWxlbWVudDoKKworICAgICAgICAxLiBBIFdLV2ViVmll
dyBpcyBjcmVhdGVkIHByaW9yIHRvIFVJQXBwbGljYXRpb24gaW5pdGlhbGl6YXRpb24uIFRoaXMK
KyAgICAgICAgICAgY2FuIGJlIGFjaGlldmVkIGJ5IGNyZWF0aW5nIG9uZSBpbiBhbm90aGVyIGNs
YXNzJ3MgImxvYWQiIG1ldGhvZC4KKworICAgICAgICAyLiBTaW5jZSB0aGUgYXBwIGlzIHBoeXNp
Y2FsbHkgcnVubmluZyBvbiBhbiBpUGFkLCBXZWJLaXQgZGV0ZXJtaW5lcworICAgICAgICAgICB0
aGUgdXNlciBpbnRlcmZhY2UgaWRpb20gdG8gYmUgImlQYWQiIGFuZCBzYXZlcyB0aGlzIGluZm9y
bWF0aW9uLgorCisgICAgICAgIDMuIE9uY2UgdGhlIGFwcCBhY3R1YWxseSBsYXVuY2hlcywgVUlB
cHBsaWNhdGlvbiBpcyBpbml0aWFsaXplZC4KKyAgICAgICAgICAgU2luY2UgdGhpcyBpcyBhbiBp
UGhvbmUgYXBwIG9uIGlQYWQsIHRoZSBhY3R1YWwgdXNlciBpbnRlcmZhY2UKKyAgICAgICAgICAg
aWRpb20gaXMgImlQaG9uZSIuIEhvd2V2ZXIsIFdlYktpdCBkb2VzIG5vdCBrbm93IHRoaXMsIHNp
bmNlCisgICAgICAgICAgIGl0IHVzZXMgdGhlIHNhdmVkIHVzZXIgaW50ZXJmYWNlIGlkaW9tIGZy
b20gKDIpLgorCisgICAgICAgIDQuIFdoZW4gdGFwcGluZyBhIDxzZWxlY3Q+IGVsZW1lbnQsIFdl
YktpdCBjaGVja3MgaXRzIHNhdmVkIGlkaW9tLAorICAgICAgICAgICBhbiBhdHRlbXB0cyB0byBw
cmVzZW50IGEgVUlQb3BvdmVyQ29udHJvbGxlciAodGhlIHN0YW5kYXJkIGJlaGF2aW9yCisgICAg
ICAgICAgIHVuZGVyIHRoZSBpUGFkIGlkaW9tKS4KKworICAgICAgICA1LiBIb3dldmVyLCBzaW5j
ZSB0aGUgYWN0dWFsIGlkaW9tIGlzIGlQaG9uZSwgVUlLaXQgdGhyb3dzIGFuCisgICAgICAgICAg
IE5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uLCBzaW5jZSBVSVBvcG92ZXJDb250cm9sbGVyCisg
ICAgICAgICAgIHNob3VsZCBub3QgYmUgdXNlZCB3aGVuIHJ1bm5pbmcgdW5kZXIgdGhlIGlQaG9u
ZSBpZGlvbS4KKworICAgICAgICBBIHNpbXBsZSBmaXggZm9yIHRoZSBjcmFzaCB3b3VsZCBiZSB0
byBjYWxsIGludG8gVUlLaXQgdG8gY2hlY2sgdGhlCisgICAgICAgIGlkaW9tIGVhY2ggdGltZSBp
dCBpcyByZXF1aXJlZCwgcmF0aGVyIHRoYW4gcmVseWluZyBvbiB0aGUgc2F2ZWQgYml0LgorICAg
ICAgICBIb3dldmVyLCB0aGlzIGRvZXMgbm90IGFkZHJlc3MgdGhlIG1vcmUgZ2VuZXJhbCBpc3N1
ZSwgd2hpY2ggaXMgdGhhdAorICAgICAgICBXZWJLaXQncyBzYXZlZCBpZGlvbSBhbmQgdGhlIGFj
dHVhbCBpZGlvbSBjYW4gYmUgb3V0IG9mIHN5bmMuCisKKyAgICAgICAgQ29uc2VxdWVudGx5LCB0
aGUgYXBwcm9hY2ggdGFrZW4gaXMgdG8gdXBkYXRlIHRoZSBzYXZlZCBpZGlvbSB3aGVuCisgICAg
ICAgIGl0IGNoYW5nZXMuIFRoaXMgc2hvdWxkIG9ubHkgb2NjdXIgd2hlbiBhIFVJQXBwbGljYXRp
b24gaXMgaW5pdGlhbGl6ZWQuCisgICAgICAgIEhlbmNlLCB3ZSBsaXN0ZW4gZm9yIFVJQXBwbGlj
YXRpb25EaWRGaW5pc2hMYXVuY2hpbmdOb3RpZmljYXRpb24sCisgICAgICAgIGFuZCBpZiB0aGUg
YWN0dWFsIGlkaW9tIGlzIGRpZmZlcmVudCBmcm9tIG91ciBzYXZlZCBpZGlvbSwgd2UgdXBkYXRl
IHRoZQorICAgICAgICBzYXZlZCBpZGlvbSBhbmQgYWxzbyBub3RpZnkgdGhlIFdlYlByb2Nlc3Mu
CisKKyAgICAgICAgKiBTaGFyZWQvVXNlckludGVyZmFjZUlkaW9tLmg6CisgICAgICAgICogU2hh
cmVkL1VzZXJJbnRlcmZhY2VJZGlvbS5tbToKKyAgICAgICAgKFdlYktpdDo6dXBkYXRlQ3VycmVu
dFVzZXJJbnRlcmZhY2VJZGlvbSk6CisKKyAgICAgICAgVGhpcyBtZXRob2QgY2hlY2tzIHRoZSBh
Y3R1YWwgaWRpb20gYW5kIHVwZGF0ZXMgdGhlIHNhdmVkIGlkaW9tIGlmCisgICAgICAgIHRoZXkg
ZGlmZmVyLiBSZXR1cm5zIHRydWUgb25seSBpZiB0aGUgaWRpb20gd2FzIHVwZGF0ZWQuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnJlZ2lzdGVyTm90aWZpY2F0aW9uT2JzZXJ2ZXJzKToK
KworICAgICAgICBMaXN0ZW4gZm9yIFVJQXBwbGljYXRpb25EaWRGaW5pc2hMYXVuY2hpbmdOb3Rp
ZmljYXRpb24gaWYgdGhlIGlkaW9tCisgICAgICAgIGNhbiBjaGFuZ2UgKFVJQXBwbGljYXRpb24g
aXMgdW5pbml0aWFsaXplZCkuIFRoZW4sIGlmIHRoZSBhY3R1YWwKKyAgICAgICAgYW5kIHNhdmVk
IGlkaW9tIGRpZmZlciwgbm90aWZ5IGFsbCBXZWJQcm9jZXNzZXMgb2YgdGhlIGNoYW5nZS4KKwor
ICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3Rlck5vdGlmaWNhdGlvbk9i
c2VydmVycyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjp1c2VySW50ZXJmYWNlSWRpb21E
aWRDaGFuZ2UpOgorCisgICAgICAgIFVwZGF0ZSB0aGUgc2F2ZWQgaWRpb20gdXNpbmcgdGhlIGlu
Zm9ybWF0aW9uIGZyb20gdGhlIFVJUHJvY2Vzcy4KKwogMjAyMC0xMi0xNCAgQ2hyaXMgRHVtZXog
IDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFVQcm9jZXNzXSBDcmFzaCB1bmRlciBB
dWRpb0Rlc3RpbmF0aW9uQ29jb2E6OnNldElzUGxheWluZyhib29sKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvVXNlckludGVyZmFjZUlkaW9tLmggYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Vc2VySW50ZXJmYWNlSWRpb20uaAppbmRleCBlYmRjNjc4MTAxOTY4MGFmNjExZTEyYjA1
NDJjNmM1NmE2MjhmNWNkLi4yOTFlNmEyNTA4ODYyZDZhODEyOTllNjE2MjJkM2I5YmY4ZTk5MGMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VySW50ZXJmYWNlSWRpb20uaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Vc2VySW50ZXJmYWNlSWRpb20uaApAQCAtMzEsNiAr
MzEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogYm9vbCBjdXJyZW50VXNlckludGVyZmFjZUlk
aW9tSXNQYWRPck1hYygpOwogdm9pZCBzZXRDdXJyZW50VXNlckludGVyZmFjZUlkaW9tSXNQYWRP
ck1hYyhib29sKTsKK2Jvb2wgdXBkYXRlQ3VycmVudFVzZXJJbnRlcmZhY2VJZGlvbSgpOwogCiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJJbnRlcmZhY2VJZGlvbS5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1VzZXJJbnRlcmZhY2VJZGlvbS5tbQppbmRleCA3YWNl
MTI4YWZjYzM2YTI0MTM5MWRiY2Y1NzYyMmUyY2U5NTI1MmM3Li42NTM0YTg0NmZkNzUxZjgxYjA2
MDgzY2YxYzAxZTQ5NWNjNGQxZjY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9V
c2VySW50ZXJmYWNlSWRpb20ubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvVXNlckludGVy
ZmFjZUlkaW9tLm1tCkBAIC03OSw2ICs3OSwxNiBAQCB2b2lkIHNldEN1cnJlbnRVc2VySW50ZXJm
YWNlSWRpb21Jc1BhZE9yTWFjKGJvb2wgaXNQYWQpCiAgICAgdXNlckludGVyZmFjZUlkaW9tSXNQ
YWRTdGF0ZSA9IGlzUGFkID8gVXNlckludGVyZmFjZUlkaW9tU3RhdGU6OklzUGFkIDogVXNlcklu
dGVyZmFjZUlkaW9tU3RhdGU6OklzTm90UGFkOwogfQogCitib29sIHVwZGF0ZUN1cnJlbnRVc2Vy
SW50ZXJmYWNlSWRpb20oKQoreworICAgIGJvb2wgaXNQYWQgPSB1c2VySW50ZXJmYWNlSWRpb21J
c1BhZCgpOworICAgIGlmIChjdXJyZW50VXNlckludGVyZmFjZUlkaW9tSXNQYWRPck1hYygpID09
IGlzUGFkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBzZXRDdXJyZW50VXNlckludGVy
ZmFjZUlkaW9tSXNQYWRPck1hYyhpc1BhZCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIH0KIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9j
ZXNzUG9vbENvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vz
c1Bvb2xDb2NvYS5tbQppbmRleCAyYWExYjdmZWJlNWRkOGY3Y2RmNTk2MWUyZWE2M2FlZWNhZjYw
ZWJkLi5kZWQzMTEwMjYxMDI3MWZhMWFiOTU2MTViNzgxYWNmMTg2NzZlZjk4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0K
QEAgLTY4MCw2ICs2ODAsMTQgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVnaXN0ZXJOb3RpZmlj
YXRpb25PYnNlcnZlcnMoKQogICAgICAgICBzdGFydE9ic2VydmluZ1ByZWZlcmVuY2VDaGFuZ2Vz
KCk7CiAgICAgfV07CiAjZW5kaWYKKyAgICBpZiAoIVtVSUFwcGxpY2F0aW9uIHNoYXJlZEFwcGxp
Y2F0aW9uXSkgeworICAgICAgICBtX2FwcGxpY2F0aW9uTGF1bmNoT2JzZXJ2ZXIgPSBbW05TTm90
aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyRm9yTmFtZTpVSUFwcGxp
Y2F0aW9uRGlkRmluaXNoTGF1bmNoaW5nTm90aWZpY2F0aW9uIG9iamVjdDpuaWwgcXVldWU6W05T
T3BlcmF0aW9uUXVldWUgY3VycmVudFF1ZXVlXSB1c2luZ0Jsb2NrOl4oTlNOb3RpZmljYXRpb24g
Km5vdGlmaWNhdGlvbikgeworICAgICAgICAgICAgaWYgKFdlYktpdDo6dXBkYXRlQ3VycmVudFVz
ZXJJbnRlcmZhY2VJZGlvbSgpKSB7CisgICAgICAgICAgICAgICAgYXV0byBpc1BhZE9yTWFjID0g
V2ViS2l0OjpjdXJyZW50VXNlckludGVyZmFjZUlkaW9tSXNQYWRPck1hYygpOworICAgICAgICAg
ICAgICAgIHNlbmRUb0FsbFByb2Nlc3NlcyhNZXNzYWdlczo6V2ViUHJvY2Vzczo6VXNlckludGVy
ZmFjZUlkaW9tRGlkQ2hhbmdlKGlzUGFkT3JNYWMpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fV07CisgICAgfQogI2VuZGlmCiAKICAgICBtX3Bvd2VyU291cmNlTm90aWZpZXIgPSBXVEY6Om1h
a2VVbmlxdWU8V2ViQ29yZTo6UG93ZXJTb3VyY2VOb3RpZmllcj4oW3RoaXNdIChib29sIGhhc0FD
KSB7CkBAIC03MTEsNiArNzE5LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6dW5yZWdpc3Rlck5v
dGlmaWNhdGlvbk9ic2VydmVycygpCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFtb
TlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9hY2Nl
c3NpYmlsaXR5RW5hYmxlZE9ic2VydmVyLmdldCgpXTsKKyAgICBbW05TTm90aWZpY2F0aW9uQ2Vu
dGVyIGRlZmF1bHRDZW50ZXJdIHJlbW92ZU9ic2VydmVyOm1fYXBwbGljYXRpb25MYXVuY2hPYnNl
cnZlci5nZXQoKV07CiAjZW5kaWYKIAogICAgIFtbTlNOb3RpZmljYXRpb25DZW50ZXIgZGVmYXVs
dENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6bV9hY3RpdmF0aW9uT2JzZXJ2ZXIuZ2V0KCldOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggYWNlNTdmZThjYjAxYzY0
NDYzNWRiZDRlYzhjYzQ2OTVhZTUzNTgyMC4uYjBmM2RlMTU1YTYzOTJmNjMwYzgzNzM1Zjk3ZDlh
MGZiNDk2MmM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBA
IC02NjEsNiArNjYxLDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6
UG93ZXJTb3VyY2VOb3RpZmllcj4gbV9wb3dlclNvdXJjZU5vdGlmaWVyOwogICAgIFJldGFpblB0
cjxOU09iamVjdD4gbV9hY3RpdmF0aW9uT2JzZXJ2ZXI7CiAgICAgUmV0YWluUHRyPE5TT2JqZWN0
PiBtX2FjY2Vzc2liaWxpdHlFbmFibGVkT2JzZXJ2ZXI7CisgICAgUmV0YWluUHRyPE5TT2JqZWN0
PiBtX2FwcGxpY2F0aW9uTGF1bmNoT2JzZXJ2ZXI7CiAjZW5kaWYKIAogICAgIGJvb2wgbV9wcm9j
ZXNzVGVybWluYXRpb25FbmFibGVkIHsgdHJ1ZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
cm9jZXNzLmgKaW5kZXggMzFhYmQ0ZjU4YTlhODNmNjc0ODJlZDJkNzZiMDQwOWQxYzhiYWFlMC4u
NDY1NmI2NGRkNjk3ZTZmMWFiNjBiYjQ3NDM0MzgxZWRhMmI3ZjA3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC01MzYsNiArNTM2LDggQEAgcHJpdmF0ZToKICNlbmRp
ZgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICB2b2lkIHVzZXJJbnRlcmZhY2VJZGlv
bURpZENoYW5nZShib29sKTsKKwogICAgIGJvb2wgc2hvdWxkRnJlZXplT25TdXNwZW5zaW9uKCkg
Y29uc3Q7CiAgICAgdm9pZCB1cGRhdGVGcmVlemVyU3RhdHVzKCk7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggNjRkYjg3
YzY1MmUzNTE1ZjIwMGQxYTMzNjUwOTZkOWJhYTIxZTdiOC4uMzEwODM3YmUxNTQyYzVlOTllNGMy
YzExMjI2NmNhNDY1MmMxNzM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTEyMCw2ICsxMjAsMTAgQEAgbWVzc2FnZXMgLT4gV2Vi
UHJvY2VzcyBMZWdhY3lSZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKICAgICBEaXNwbGF5Q29uZmln
dXJhdGlvbkNoYW5nZWQoQ0dEaXJlY3REaXNwbGF5SUQgZGlzcGxheUlELCBDR0Rpc3BsYXlDaGFu
Z2VTdW1tYXJ5RmxhZ3MgZmxhZ3MpCiAjZW5kaWYKIAorI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
CisgICAgVXNlckludGVyZmFjZUlkaW9tRGlkQ2hhbmdlKGJvb2wgaXNQYWRPck1hYykKKyNlbmRp
ZgorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQog
ICAgIEJhY2tsaWdodExldmVsRGlkQ2hhbmdlKGZsb2F0IGJhY2tsaWdodExldmVsKQogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0Nv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5t
bQppbmRleCA4MzQzYjkwNjFmZDc3MDFjYjkxYTZkNTg5YWQ2NjNmNGU3MjQyM2EyLi4zYjY0YWYx
NTM2YjJhZDU2Mzk5MjI0NmJkMTZmZjZkZjk0Yjc0NzViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KQEAgLTg5OCw2ICs4OTgsMTEg
QEAgdm9pZCBXZWJQcm9jZXNzOjphY2Nlc3NpYmlsaXR5UHJvY2Vzc1N1c3BlbmRlZE5vdGlmaWNh
dGlvbihib29sIHN1c3BlbmRlZCkKICAgICBVSUFjY2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9u
KGtBWFBpZFN0YXR1c0NoYW5nZWROb3RpZmljYXRpb24sIEB7IEAicGlkIiA6IEAoZ2V0cGlkKCkp
LCBAInN1c3BlbmRlZCIgOiBAKHN1c3BlbmRlZCkgfSk7CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzczo6
dXNlckludGVyZmFjZUlkaW9tRGlkQ2hhbmdlKGJvb2wgaXNQYWRPck1hYykKK3sKKyAgICBXZWJL
aXQ6OnNldEN1cnJlbnRVc2VySW50ZXJmYWNlSWRpb21Jc1BhZE9yTWFjKGlzUGFkT3JNYWMpOwor
fQorCiBib29sIFdlYlByb2Nlc3M6OnNob3VsZEZyZWV6ZU9uU3VzcGVuc2lvbigpIGNvbnN0CiB7
CiAgICAgc3dpdGNoIChtX3Byb2Nlc3NUeXBlKSB7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggY2Y1ZGQ4YTE2NWMwMWI3MTkxMDNjMzhhZTNmNmYy
ZDA0Y2U2NDg5Yi4uNGM2NDJkYmVlMThkMjFiZWM2NTBiOWZlZmNiZjM3OTg5Y2I5MzQ5YSAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM5IEBACisyMDIwLTAxLTA1ICBBZGl0eWEgS2VlcnRoaSAgPGFrZWVydGhpQGFwcGxlLmNvbT4K
KworICAgICAgICBSRUdSRVNTSU9OIChyMjYxMTU3KTogQ3Jhc2ggaW4gV0tTZWxlY3RQb3BvdmVy
IHdoZW4gcnVubmluZyBhcyBpUGhvbmUgYXBwIG9uIGlQYWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDA2NQorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNzE5MzI3OTI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgYW4gQVBJIHRlc3QgdG8gZXhlcmNpc2UgdGhlIHByZXZpb3VzbHkgY3Jhc2hp
bmcsIGFuZCBub3cgZml4ZWQsCisgICAgICAgIGNvZGVwYXRoLiBOb3RlIHRoYXQgdGhlIHRlc3Qg
d2lsbCB0cml2aWFsbHkgcGFzcyBvbiBpUGhvbmVzLCBzaW5jZSB0aGUKKyAgICAgICAgY3Jhc2gg
b25seSBvY2N1cnMgb24gaVBhZHMuIFNlZSBiZWxvdyBmb3IgYW4gZXhwbGFuYXRpb24gb2YgaG93
IHRoZQorICAgICAgICB0ZXN0IGZ1bmN0aW9ucyBvbiBpUGFkcy4KKworICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL1VzZXJJbnRlcmZhY2VJZGlvbVVwZGF0ZS5tbTog
QWRkZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKworICAgICAgICBTaW5jZSBU
ZXN0V2ViS2l0QVBJIGlzIG5vdCBhbiBhcHBsaWNhdGlvbiwgW1VJQXBwbGljYXRpb24gc2hhcmVk
QXBwbGljYXRpb25dCisgICAgICAgIGlzIG5pbCB3aGVuIHRoZSB0ZXN0IGNyZWF0ZXMgYSBXS1dl
YlZpZXcuIENvbnNlcXVlbnRseSwgd2hlbiB0aGUgV0tXZWJWaWV3CisgICAgICAgIGlzIGNyZWF0
ZWQsIFdlYktpdCB1c2VzIHRoZSBkZXZpY2UgaGFyZHdhcmUgaW5mb3JtYXRpb24gdG8gZGV0ZXJt
aW5lIHRoZSB1c2VyCisgICAgICAgIGludGVyZmFjZSBpZGlvbSAoaVBhZCkuIE5vdywgYmVmb3Jl
IHRoZSB0ZXN0IGludGVyYWN0cyB3aXRoIHRoZSBXS1dlYlZpZXcsCisgICAgICAgIHRoZSB1c2Vy
IGludGVyZmFjZSBpZGlvbSBpcyBjaGFuZ2VkIHRvIGFuIGlQaG9uZSBhbmQgdGhlIFVJQXBwbGlj
YXRpb24gaXMKKyAgICAgICAgaW5pdGlhbGl6ZWQuIE5vdGUgdGhhdCB0aGUgVUlBcHBsaWNhdGlv
bkRpZEZpbmlzaExhdW5jaGluZ05vdGlmaWNhdGlvbgorICAgICAgICBpcyBtYW51YWxseSBwb3N0
ZWQsIHNpbmNlIHRoZXJlIGlzIG5vIFVJQXBwbGljYXRpb25EZWxlZ2F0ZS4KKworICAgICAgICBX
aXRob3V0IHRoZSBjaGFuZ2VzIGluIHRoaXMgcGF0Y2gsIHRoZSB0ZXN0IHdpbGwgY3Jhc2gsIHNp
bmNlIHRoZSB1c2VyCisgICAgICAgIGludGVyZmFjZSBpZGlvbSBtYWludGFpbmVkIGJ5IFdlYktp
dCB3b3VsZCBub3QgYmUgdXBkYXRlZCwgYW5kIHdvdWxkCisgICAgICAgIHJlbWFpbiBpUGFkIHJh
dGhlciB0aGFuIGlQaG9uZS4gSGVuY2UsIHdoZW4gZm9jdXNpbmcgYSBzZWxlY3QgZWxlbWVudCwg
dGhlIHRlc3QKKyAgICAgICAgd291bGQgYXR0ZW1wdCB0byBwcmVzZW50IGEgVUlQb3BvdmVyQ29u
dHJvbGxlci4gSG93ZXZlciwgc2luY2UgdGhlIGlkaW9tCisgICAgICAgIGlzIGFjdHVhbGx5IGlQ
aG9uZSwgVUlLaXQgd2lsbCB0aHJvdyBhbiBOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbi4KKwor
ICAgICAgICBBZnRlciB0aGUgY2hhbmdlcyBpbiB0aGlzIHBhdGNoLCB0aGUgdGVzdCBkb2VzIGNy
YXNoLCBhcyB0aGUgY2hhbmdlIHRvIHRoZQorICAgICAgICB1c2VyIGludGVyZmFjZSBpZGlvbSBh
ZnRlciBVSUFwcGxpY2F0aW9uIGNyZWF0aW9uIGlzIHJlY29nbml6ZWQgYnkgV2ViS2l0LAorICAg
ICAgICBhbmQgdGhlIGF0dGVtcHQgdG8gcHJlc2VudCBhIFVJUG9wb3ZlckNvbnRyb2xsZXIgdW5k
ZXIgdGhlIGlQaG9uZSBpZGlvbQorICAgICAgICBkb2VzIG5vdCBvY2N1ci4KKwogMjAyMC0xMi0x
NCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgW3dlYmtp
dHNjbXB5XSBMb2FkIG1vY2sgcmVwb3NpdG9yeSBkYXRhIGZyb20ganNvbiBmaWxlCmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGZkODE4ZTliNzYzODIwYWE2MjUxOTVkNmE0MDQxZDc1NTFlNGFm
MzkuLmU3ZjQzMDQ5OTZkYTEzOWM4M2RjNWViYWI5ZmVjOWIzZDU4YTlkNWMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCkBAIC0xMTAyLDYgKzExMDIsNyBAQAogCQlFM0Y4QUI5MjI0MUFCOUNFMDAz
RTJBN0UgLyogQWNjZXNzaWJpbGl0eVJlbW90ZVVJQXBwLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTNGOEFCOTEyNDFBQjlDRTAwM0UyQTdFIC8qIEFj
Y2Vzc2liaWxpdHlSZW1vdGVVSUFwcC5tbSAqLzsgfTsKIAkJRTUwMzZGNzgyMTFCQzI1NDAwQkZE
QkUyIC8qIGNvbG9yLWRyb3AuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNTAzNkY3NzIxMUJDMjI4MDBCRkRCRTIgLyogY29sb3ItZHJv
cC5odG1sICovOyB9OwogCQlFNTg5MTgzQzI1MkJDOTBBMDA0MURFRDUgLyogRGF0ZVRpbWVJbnB1
dHNBY2Nlc3NvcnlWaWV3VGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBFNTg5MTgzQjI1MkJDOTBBMDA0MURFRDUgLyogRGF0ZVRpbWVJbnB1dHNB
Y2Nlc3NvcnlWaWV3VGVzdHMubW0gKi87IH07CisJCUU1QUE0MkYyMjU5MTI4QUUwMDQxMEEzRCAv
KiBVc2VySW50ZXJmYWNlSWRpb21VcGRhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBFNUFBNDJGMTI1OTEyOEFFMDA0MTBBM0QgLyogVXNlckludGVy
ZmFjZUlkaW9tVXBkYXRlLm1tICovOyB9OwogCQlFNUFBOEQxRDI1MTUxQ0M2MDA1MUNDNDUgLyog
RGF0ZUlucHV0VGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFNUFBOEQxQzI1MTUxQ0M2MDA1MUNDNDUgLyogRGF0ZUlucHV0VGVzdHMubW0gKi87
IH07CiAJCUVCMjMwRDQwMjQ1RTcyNzkwMEM2NkFEMSAvKiBJREJDaGVja3BvaW50V0FMLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUIyMzBEM0UyNDVF
NzI2MzAwQzY2QUQxIC8qIElEQkNoZWNrcG9pbnRXQUwubW0gKi87IH07CiAJCUVCMjMwRDQxMjQ1
RTgxM0YwMEM2NkFEMSAvKiBJREJDaGVja3BvaW50V0FMLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUIyMzBEM0QyNDVFNzIyRTAwQzY2
QUQxIC8qIElEQkNoZWNrcG9pbnRXQUwuaHRtbCAqLzsgfTsKQEAgLTI4NDQsNiArMjg0NSw3IEBA
CiAJCUU0QzlBQkM3MUIzREIxNzEwMDQwQTk4NyAvKiBSdW5Mb29wLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJ1bkxvb3AuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFNTAzNkY3NzIxMUJDMjI4MDBCRkRCRTIgLyogY29sb3ItZHJvcC5odG1sICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImNvbG9yLWRyb3AuaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUU1ODkxODNCMjUyQkM5MEEwMDQxREVENSAvKiBEYXRlVGltZUlu
cHV0c0FjY2Vzc29yeVZpZXdUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERhdGVUaW1l
SW5wdXRzQWNjZXNzb3J5Vmlld1Rlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlFNUFBNDJGMTI1OTEyOEFFMDA0MTBBM0QgLyogVXNlckludGVyZmFjZUlkaW9tVXBkYXRlLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gVXNlckludGVyZmFjZUlkaW9tVXBkYXRlLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNUFBOEQxQzI1MTUxQ0M2MDA1MUNDNDUgLyogRGF0
ZUlucHV0VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEYXRlSW5wdXRUZXN0cy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUIyMzBEM0QyNDVFNzIyRTAwQzY2QUQxIC8q
IElEQkNoZWNrcG9pbnRXQUwuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IElEQkNo
ZWNrcG9pbnRXQUwuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRUIyMzBEM0Uy
NDVFNzI2MzAwQzY2QUQxIC8qIElEQkNoZWNrcG9pbnRXQUwubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJREJDaGVja3BvaW50V0FMLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMzY2MCw2ICszNjYyLDcgQEAKIAkJCQlGNDUwMzNGNDIwNkJFQzk1
MDA5MzUxQ0UgLyogVGV4dEF1dG9zaXppbmdCb29zdC5tbSAqLywKIAkJCQlGNDY4NDlCRDFFRUY1
OEU0MDBCOTM3RkUgLyogVUlQYXN0ZWJvYXJkVGVzdHMubW0gKi8sCiAJCQkJRjQwMkY1NkIyM0VD
QzJGQjAwODY1NTQ5IC8qIFVJV0tJbnRlcmFjdGlvblZpZXdQcm90b2NvbC5tbSAqLywKKwkJCQlF
NUFBNDJGMTI1OTEyOEFFMDA0MTBBM0QgLyogVXNlckludGVyZmFjZUlkaW9tVXBkYXRlLm1tICov
LAogCQkJCUY0M0UzQkJFMjBEQURBMUUwMEE0RTdFRCAvKiBXS1Njcm9sbFZpZXdUZXN0cy5tbSAq
LywKIAkJCQk1MTQ5NThCRDFGNzQyN0FDMDBFODdCQUQgLyogV0tXZWJWaWV3QXV0b2ZpbGxUZXN0
cy5tbSAqLywKIAkJCQkxQ0FDQURBMDIzMDYyMEFEMDAwN0Q1NEMgLyogV0tXZWJWaWV3T3BhcXVl
Lm1tICovLApAQCAtNTU1NSw2ICs1NTU4LDcgQEAKIAkJCQk3Q0NFN0YyRDFBNDExQjEwMDA0NDdD
NEMgLyogVXNlckNvbnRlbnRUZXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4ODJFMEExQzgw
Qzc2NDAwNkJGNzMxIC8qIFVzZXJDb250ZW50V29ybGQubW0gaW4gU291cmNlcyAqLywKIAkJCQk3
Q0NCOTkyMTFEM0I0MUY2MDAzOTIyRjYgLyogVXNlckluaXRpYXRlZEFjdGlvbkluTmF2aWdhdGlv
bkFjdGlvbi5tbSBpbiBTb3VyY2VzICovLAorCQkJCUU1QUE0MkYyMjU5MTI4QUUwMDQxMEEzRCAv
KiBVc2VySW50ZXJmYWNlSWRpb21VcGRhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0Yx
NzFBNDExQUU2MDA0NDdDNEMgLyogVXNlck1lZGlhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3
OTlDMzQ5MUVCQTJEN0IwMDNCNzUzMiAvKiBVc2VyTWVkaWFEaXNhYmxlZC5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTA3RjRFOTJFMjBBRjU5RTIwMDJFMzgwMyAvKiBVc2VyTWVkaWFTaW11bGF0ZUZh
aWxlZFNhbmRib3gubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvaW9zL1VzZXJJbnRlcmZhY2VJZGlvbVVwZGF0ZS5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvaW9zL1VzZXJJbnRlcmZhY2VJZGlvbVVwZGF0ZS5tbQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yZWFhODc3Yzc3YWZlOGJjOGViZmJiNWEzZmJkZjUzMWQ0OTA0ZWQ0Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvVXNlckludGVyZmFjZUlkaW9tVXBk
YXRlLm1tCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCisjaW1wb3J0ICJUZXN0SW5wdXREZWxlZ2F0
ZS5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCAiVUlLaXRTUEkuaCIKKyNp
bXBvcnQgIlVzZXJJbnRlcmZhY2VTd2l6emxlci5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmll
d1ByaXZhdGUuaD4KKworbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgeworCitURVNUKFVzZXJJbnRl
cmZhY2VJZGlvbVVwZGF0ZSwgU2VsZWN0UG9wb3ZlckNyYXNoKQoreworICAgIGF1dG8gaW5wdXRE
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3RJbnB1dERlbGVnYXRlIG5ld10pOworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgW3dlYlZpZXcgX3NldElucHV0RGVsZWdhdGU6
aW5wdXREZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1M
U3RyaW5nOkAiPHNlbGVjdCBpZD0nc2VsZWN0Jz48b3B0aW9uIHNlbGVjdGVkPmZvbzwvb3B0aW9u
PjxvcHRpb24+YmFyPC9vcHRpb24+PC9zZWxlY3Q+Il07CisgICAgW2lucHV0RGVsZWdhdGUgc2V0
Rm9jdXNTdGFydHNJbnB1dFNlc3Npb25Qb2xpY3lIYW5kbGVyOlsmXSAoV0tXZWJWaWV3ICosIGlk
IDxfV0tGb2N1c2VkRWxlbWVudEluZm8+KSAtPiBfV0tGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBv
bGljeSB7CisgICAgICAgIHJldHVybiBfV0tGb2N1c1N0YXJ0c0lucHV0U2Vzc2lvblBvbGljeUFs
bG93OworICAgIH1dOworCisgICAgSVBob25lVXNlckludGVyZmFjZVN3aXp6bGVyIGlQaG9uZVVz
ZXJJbnRlcmZhY2U7CisgICAgW1tOU05vdGlmaWNhdGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBw
b3N0Tm90aWZpY2F0aW9uTmFtZTpVSUFwcGxpY2F0aW9uRGlkRmluaXNoTGF1bmNoaW5nTm90aWZp
Y2F0aW9uIG9iamVjdDpuaWwgdXNlckluZm86bmlsXTsKKworICAgIFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJzZWxlY3QuZm9jdXMoKSJdOworfQorCit9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRpZiAvLyBQTEFURk9STShJT1NfRkFNSUxZKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>