<?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>130061</bug_id>
          
          <creation_ts>2014-03-10 18:59:05 -0700</creation_ts>
          <short_desc>Convert MiniBrowser to use WKWebView API</short_desc>
          <delta_ts>2014-03-17 13:10:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>andersca</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>989163</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-03-10 18:59:05 -0700</bug_when>
    <thetext>Convert MiniBrowser to use WKWebView API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989164</commentid>
    <comment_count>1</comment_count>
      <attachid>226365</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-03-10 19:01:42 -0700</bug_when>
    <thetext>Created attachment 226365
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989165</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-03-10 19:02:12 -0700</bug_when>
    <thetext>I know there is some commented-out code in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989204</commentid>
    <comment_count>3</comment_count>
      <attachid>226365</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-03-10 20:44:41 -0700</bug_when>
    <thetext>Comment on attachment 226365
Patch

You still need to use the WK_API_ENABLED guards otherwise you&apos;ll break the 32-bit MiniBrowser build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>989743</commentid>
    <comment_count>4</comment_count>
      <attachid>226537</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-03-12 11:18:45 -0700</bug_when>
    <thetext>Created attachment 226537
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>990106</commentid>
    <comment_count>5</comment_count>
      <attachid>226537</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2014-03-13 12:14:05 -0700</bug_when>
    <thetext>Comment on attachment 226537
Patch

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

&gt; Tools/MiniBrowser/mac/WK2BrowserWindowController.m:-71
&gt; -    [_webView.browsingContextController removeObserver:self forKeyPath:@&quot;title&quot; context:keyValueObservingContext];
&gt; -    [_webView.browsingContextController removeObserver:self forKeyPath:@&quot;activeURL&quot; context:keyValueObservingContext];

You still need to remove these observers from the web view.

&gt; Tools/MiniBrowser/mac/WK2BrowserWindowController.m:-136
&gt; -    [_webView.browsingContextController reload];

Pretty sure we have SPI to call reload.

&gt; Tools/MiniBrowser/mac/WK2BrowserWindowController.m:179
&gt; -        return _webView &amp;&amp; [_webView.browsingContextController canGoBack];
&gt; +        return _webView &amp;&amp; [_webView canGoBack];
&gt;      
&gt;      if (action == @selector(goForward:))
&gt; -        return _webView &amp;&amp; [_webView.browsingContextController canGoForward];
&gt; +        return _webView &amp;&amp; [_webView canGoForward];

No need to null check _webView here.

&gt; Tools/MiniBrowser/mac/WK2BrowserWindowController.m:202
&gt;  - (void)applicationTerminating
&gt;  {
&gt; -    // FIXME: Why are we bothering to close the page? This doesn&apos;t even prevent LEAK output.
&gt; -    WKPageClose(_webView.pageRef);
&gt;  }

Just remove this.

&gt; Tools/MiniBrowser/mac/WK2BrowserWindowController.m:280
&gt; +    [alert beginSheetModalForWindow:self.window completionHandler:^void (NSModalResponse response) {

No need for void here.

&gt; Tools/MiniBrowser/mac/WK2BrowserWindowController.m:296
&gt; +    [alert beginSheetModalForWindow:self.window completionHandler:^void (NSModalResponse response) {

No need for void here.

&gt; Tools/MiniBrowser/mac/WK2BrowserWindowController.m:297
&gt; +        completionHandler(response == NSModalResponseStop);

Is stop really the right response here?

&gt; Tools/MiniBrowser/mac/WK2BrowserWindowController.m:320
&gt; +        // FIXME: need to send OK/Cancel back.
&gt; +        completionHandler([input stringValue]);

Passing null implies cancel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>991351</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-03-17 13:10:53 -0700</bug_when>
    <thetext>https://trac.webkit.org/r165749</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226365</attachid>
            <date>2014-03-10 19:01:42 -0700</date>
            <delta_ts>2014-03-12 11:18:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130061-20140310190142.patch</filename>
            <type>text/plain</type>
            <size>37888</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1NDEyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWY4ZmUxOTc4NWQ0ODM4NGI4ODQ2MmI4NTRjNzZkYzE2
MmZjNDhmZS4uOGZmZmQxNjJjZGEwMjE2MmNiZGFjYTlmMzBlODQ4ZmY5ZDFhMjc0NiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1
IEBACisyMDE0LTAzLTEwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIENvbnZlcnQgTWluaUJyb3dzZXIgdG8gdXNlIFdLV2ViVmlldyBBUEkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA2MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQ29udmVy
dCB0aGUgTWluaUJyb3dzZXIgV0syIHdpbmRvdyB0byB1c2UgV2ViS2l0MiBBUEkgYXMgbXVjaAor
ICAgICAgICBhcyBwb3NzaWJsZS4KKyAgICAgICAgCisgICAgICAgIFNvbWUgZnVuY3Rpb25hbGl0
eSB3YXMgcmVtb3ZlZCB0ZW1wb3JhcmlseToKKyAgICAgICAgICAgIC0gdGV4dCB6b29tLCBwYWdl
IHpvb20KKyAgICAgICAgICAgIC0gcmVsb2FkCisgICAgICAgICAgICAtIHBhZ2luYXRpb24gbW9k
ZQorICAgICAgICAgICAgLSB0cmFuc3BhcmVudCB3aW5kb3cKKyAgICAgICAgICAgIC0gZHVtcGlu
ZyBzb3VyY2UKKyAgICAgICAgICAgIC0gd2luZG93Lm9wZW4gc3VwcG9ydAorICAgICAgICAgICAg
LSBiZWZvcmVVbmxvYWQgcGFuZWwKKyAgICAgICAgICAgIC0gZmluZCBpbiBwYWdlCisKKyAgICAg
ICAgKiBNaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUuaDoKKyAgICAgICAgKiBNaW5pQnJvd3Nl
ci9tYWMvQXBwRGVsZWdhdGUubToKKyAgICAgICAgKC1bQnJvd3NlckFwcERlbGVnYXRlIGluaXRd
KToKKyAgICAgICAgKC1bQnJvd3NlckFwcERlbGVnYXRlIG5ld1dpbmRvdzpdKToKKyAgICAgICAg
KC1bQnJvd3NlckFwcERlbGVnYXRlIGFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZTpdKToKKyAgICAg
ICAgKC1bQnJvd3NlckFwcERlbGVnYXRlIG9wZW5Eb2N1bWVudDpdKToKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bV0sy
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgYXdha2VGcm9tTmliXSk6CisgICAgICAgICgtW1dLMkJy
b3dzZXJXaW5kb3dDb250cm9sbGVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0syQnJvd3Nlcldp
bmRvd0NvbnRyb2xsZXIgZmV0Y2g6XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250
cm9sbGVyIHZhbGlkYXRlTWVudUl0ZW06XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dD
b250cm9sbGVyIHJlbG9hZDpdKToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xs
ZXIgZ29CYWNrOl0pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBnb0Zv
cndhcmQ6XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHRvZ2dsZVpv
b21Nb2RlOl0pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciByZXNldFpv
b206XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGNhblJlc2V0Wm9v
bV0pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBkdW1wU291cmNlVG9D
b25zb2xlOl0pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB0b2dnbGVQ
YWdpbmF0aW9uTW9kZTpdKToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIg
dmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbTpdKToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIgd2luZG93U2hvdWxkQ2xvc2U6XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJX
aW5kb3dDb250cm9sbGVyIGFwcGxpY2F0aW9uVGVybWluYXRpbmddKToKKyAgICAgICAgKC1bV0sy
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgY3VycmVudFpvb21GYWN0b3JdKToKKyAgICAgICAgKC1b
V0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgc2V0Q3VycmVudFpvb21GYWN0b3I6XSk6CisgICAg
ICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHRvZ2dsZVRyYW5zcGFyZW50V2luZG93
Ol0pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBvYnNlcnZlVmFsdWVG
b3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAoLVtXSzJCcm93
c2VyV2luZG93Q29udHJvbGxlciB3ZWJWaWV3OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1l
c3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1b
V0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgd2ViVmlldzpydW5KYXZhU2NyaXB0Q29uZmlybVBh
bmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgd2ViVmlldzpydW5KYXZhU2NyaXB0
VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0OmRlZmF1bHRUZXh0OmluaXRpYXRlZEJ5RnJhbWU6Y29t
cGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVy
IGZpbmQ6XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHdlYlZpZXc6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgd2ViVmlldzpkaWRTdGFydFByb3Zp
c2lvbmFsTmF2aWdhdGlvbjpdKToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xs
ZXIgd2ViVmlldzpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRp
b246XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHdlYlZpZXc6ZGlk
RmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjp3aXRoRXJyb3I6XSk6CisgICAgICAgICgtW1dLMkJy
b3dzZXJXaW5kb3dDb250cm9sbGVyIHdlYlZpZXc6ZGlkQ29tbWl0TmF2aWdhdGlvbjpdKToKKyAg
ICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgd2ViVmlldzpkaWRGaW5pc2hMb2Fk
aW5nTmF2aWdhdGlvbjpdKToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIg
d2ViVmlldzpkaWRGYWlsTmF2aWdhdGlvbjp3aXRoRXJyb3I6XSk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW06CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9t
YWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tOgorCiAyMDE0LTAzLTEwICBCcmVudCBGdWxnaGFtICA8
YmZ1bGdoYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIFBhc3MgZW52aXJvbm1lbnQgdG8g
UHJlLUJ1aWxkLCBQcmUtTGluaywgYW5kIFBvc3QtQnVpbGQgU3RhZ2VzLgpkaWZmIC0tZ2l0IGEv
VG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLmggYi9Ub29scy9NaW5pQnJvd3Nlci9t
YWMvQXBwRGVsZWdhdGUuaAppbmRleCA3ZDE0YTUxYWMxZTQ2ZWQ0MzIxZmYwNTg2ZWU3MDI4NjIz
NzIzMGNjLi44MzM3Y2I1YzQyZWVkZjIyYmMwNjQ4ZGRkYWI2NTgyODkyY2M2N2VhIDEwMDY0NAot
LS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUuaAorKysgYi9Ub29scy9NaW5p
QnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUuaApAQCAtMjMsMTMgKzIzLDcgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaW1wb3J0IDxXZWJLaXQyL1dlYktpdDIu
aD4KLQogQGludGVyZmFjZSBCcm93c2VyQXBwRGVsZWdhdGUgOiBOU09iamVjdCA8TlNBcHBsaWNh
dGlvbkRlbGVnYXRlPiB7Ci0jaWYgV0tfQVBJX0VOQUJMRUQKLSAgICBXS1Byb2Nlc3NHcm91cCAq
X3Byb2Nlc3NHcm91cDsKLSAgICBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwICpfYnJvd3NpbmdDb250
ZXh0R3JvdXA7Ci0jZW5kaWYKICAgICBOU011dGFibGVTZXQgKl9icm93c2VyV2luZG93czsKIH0K
IApkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0gYi9Ub29s
cy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQppbmRleCA1ZDgzN2ZjZGQ5MThhY2Y2NWNl
NjZjYTllYzkxY2Q1YTc5NzA2Mjc5Li43ZGQzYTJlY2EwYjkxMDZiMGQxYzVjMjgxYWZjZGZlNmQ4
MmY5MTMwIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQor
KysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUubQpAQCAtNDUsMTEgKzQ1LDYg
QEAgLSAoaWQpaW5pdAogewogICAgIHNlbGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKHNlbGYp
IHsKLSNpZiBXS19BUElfRU5BQkxFRAotICAgICAgICBOU1VSTCAqdXJsID0gW05TVVJMIGZpbGVV
UkxXaXRoUGF0aDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIHBhdGhGb3JBdXhpbGlhcnlFeGVjdXRh
YmxlOkAiTWluaUJyb3dzZXIud2tidW5kbGUiXV07Ci0gICAgICAgIF9wcm9jZXNzR3JvdXAgPSBb
W1dLUHJvY2Vzc0dyb3VwIGFsbG9jXSBpbml0V2l0aEluamVjdGVkQnVuZGxlVVJMOnVybF07Ci0g
ICAgICAgIF9icm93c2luZ0NvbnRleHRHcm91cCA9IFtbV0tCcm93c2luZ0NvbnRleHRHcm91cCBh
bGxvY10gaW5pdFdpdGhJZGVudGlmaWVyOkAiTWluaUJyb3dzZXIiXTsKLSNlbmRpZgogICAgICAg
ICBfYnJvd3NlcldpbmRvd3MgPSBbW05TTXV0YWJsZVNldCBhbGxvY10gaW5pdF07CiAgICAgfQog
CkBAIC02MiwxMSArNTcsOSBAQCAtIChJQkFjdGlvbiluZXdXaW5kb3c6KGlkKXNlbmRlcgogICAg
IAogICAgIGlmICghW3NlbmRlciByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHRhZyldIHx8
IFtzZW5kZXIgdGFnXSA9PSBXZWJLaXQxTmV3V2luZG93VGFnKQogICAgICAgICBjb250cm9sbGVy
ID0gW1tXSzFCcm93c2VyV2luZG93Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhXaW5kb3dOaWJO
YW1lOkAiQnJvd3NlcldpbmRvdyJdOwotI2lmIFdLX0FQSV9FTkFCTEVECiAgICAgZWxzZSBpZiAo
W3NlbmRlciB0YWddID09IFdlYktpdDJOZXdXaW5kb3dUYWcpCi0gICAgICAgIGNvbnRyb2xsZXIg
PSBbW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0aFByb2Nlc3NHcm91
cDpfcHJvY2Vzc0dyb3VwIGJyb3dzaW5nQ29udGV4dEdyb3VwOl9icm93c2luZ0NvbnRleHRHcm91
cF07Ci0jZW5kaWYKLQorICAgICAgICBjb250cm9sbGVyID0gW1tXSzJCcm93c2VyV2luZG93Q29u
dHJvbGxlciBhbGxvY10gaW5pdFdpdGhXaW5kb3dOaWJOYW1lOkAiQnJvd3NlcldpbmRvdyJdOwor
ICAgIAogICAgIGlmICghY29udHJvbGxlcikKICAgICAgICAgcmV0dXJuOwogCkBAIC05OCwxNCAr
OTEsNiBAQCAtICh2b2lkKWFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZTooTlNOb3RpZmljYXRpb24g
Kilub3RpZmljYXRpb24KICAgICAgICAgQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgKmNvbnRyb2xs
ZXIgPSAoQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgKilkZWxlZ2F0ZTsKICAgICAgICAgW2NvbnRy
b2xsZXIgYXBwbGljYXRpb25UZXJtaW5hdGluZ107CiAgICAgfQotCi0jaWYgV0tfQVBJX0VOQUJM
RUQKLSAgICBbX3Byb2Nlc3NHcm91cCByZWxlYXNlXTsKLSAgICBfcHJvY2Vzc0dyb3VwID0gbmls
OwotCi0gICAgW19icm93c2luZ0NvbnRleHRHcm91cCByZWxlYXNlXTsKLSAgICBfYnJvd3NpbmdD
b250ZXh0R3JvdXAgPSBuaWw7Ci0jZW5kaWYKIH0KIAogLSAoQnJvd3NlcldpbmRvd0NvbnRyb2xs
ZXIgKilmcm9udG1vc3RCcm93c2VyV2luZG93Q29udHJvbGxlcgpAQCAtMTQwLDIwICsxMjUsMTkg
QEAgLSAoSUJBY3Rpb24pb3BlbkRvY3VtZW50OihpZClzZW5kZXIKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAotI2lmIFdLX0FQSV9FTkFCTEVECiAgICAgTlNPcGVuUGFuZWwgKm9wZW5QYW5lbCA9
IFtOU09wZW5QYW5lbCBvcGVuUGFuZWxdOwogICAgIFtvcGVuUGFuZWwgYmVnaW5XaXRoQ29tcGxl
dGlvbkhhbmRsZXI6XihOU0ludGVnZXIgcmVzdWx0KSB7CiAgICAgICAgIGlmIChyZXN1bHQgIT0g
TlNPS0J1dHRvbikKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAvLyBGSVhNRTogYWRk
IGEgd2F5IHRvIG9wZW4gaW4gV0sxIGFsc28uCi0gICAgICAgIEJyb3dzZXJXaW5kb3dDb250cm9s
bGVyICpuZXdCcm93c2VyV2luZG93Q29udHJvbGxlciA9IFtbV0syQnJvd3NlcldpbmRvd0NvbnRy
b2xsZXIgYWxsb2NdIGluaXRXaXRoUHJvY2Vzc0dyb3VwOl9wcm9jZXNzR3JvdXAgYnJvd3NpbmdD
b250ZXh0R3JvdXA6X2Jyb3dzaW5nQ29udGV4dEdyb3VwXTsKKyAgICAgICAgCisgICAgICAgIEJy
b3dzZXJXaW5kb3dDb250cm9sbGVyICpuZXdCcm93c2VyV2luZG93Q29udHJvbGxlciA9IFtbV0sy
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoV2luZG93TmliTmFtZTpAIkJy
b3dzZXJXaW5kb3ciXTsKICAgICAgICAgW25ld0Jyb3dzZXJXaW5kb3dDb250cm9sbGVyLndpbmRv
dyBtYWtlS2V5QW5kT3JkZXJGcm9udDpzZWxmXTsKIAogICAgICAgICBOU1VSTCAqdXJsID0gW29w
ZW5QYW5lbC5VUkxzIG9iamVjdEF0SW5kZXg6MF07CiAgICAgICAgIFtuZXdCcm93c2VyV2luZG93
Q29udHJvbGxlciBsb2FkVVJMU3RyaW5nOlt1cmwgYWJzb2x1dGVTdHJpbmddXTsKICAgICB9XTsK
LSNlbmRpZiAvLyBXS19BUElfRU5BQkxFRAogfQogCiBAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9N
aW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIuaCBiL1Rvb2xzL01pbmlC
cm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5oCmluZGV4IGJjN2U0ZTJhZWQ0
ZTkxYjU4NzljNTgyMWIzOTU3Njc0MGUyODkxZTYuLmZmYTFkMWVlMTMzNWIzMTk0ODFhMmNlMGNm
NjA5MWRhODM2MmIwZDUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93
c2VyV2luZG93Q29udHJvbGxlci5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93
c2VyV2luZG93Q29udHJvbGxlci5oCkBAIC0yOCw5ICsyOCw2IEBACiAjaWYgV0tfQVBJX0VOQUJM
RUQKIAogQGludGVyZmFjZSBXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciA6IEJyb3dzZXJXaW5k
b3dDb250cm9sbGVyIDxCcm93c2VyQ29udHJvbGxlcj4KLQotLSAoaWQpaW5pdFdpdGhQcm9jZXNz
R3JvdXA6KFdLUHJvY2Vzc0dyb3VwICopcHJvY2Vzc0dyb3VwIGJyb3dzaW5nQ29udGV4dEdyb3Vw
OihXS0Jyb3dzaW5nQ29udGV4dEdyb3VwICopYnJvd3NpbmdDb250ZXh0R3JvdXA7Ci0KIEBlbmQK
IAogI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nl
ci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubSBiL1Rvb2xzL01pbmlCcm93c2VyL21h
Yy9XSzJCcm93c2VyV2luZG93Q29udHJvbGxlci5tCmluZGV4IDg2N2FiZDRkNDJiYzU1ZTJkZTll
NzI1N2VjOTRmNzAwYWUyYjM4ODQuLmIyZDE4MWYxOTJmODU3MDFhM2UwZTY5MDk0ODVlY2JhYmJi
ZThhMGUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93
Q29udHJvbGxlci5tCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL21hYy9XSzJCcm93c2VyV2luZG93
Q29udHJvbGxlci5tCkBAIC0yOCwzOCArMjgsNDAgQEAKICNpZiBXS19BUElfRU5BQkxFRAogCiAj
aW1wb3J0ICJBcHBEZWxlZ2F0ZS5oIgotI2ltcG9ydCA8V2ViS2l0Mi9XS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXJQcml2YXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQyL1dLQnJvd3NpbmdDb250ZXh0
SGlzdG9yeURlbGVnYXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQyL1dLQnJvd3NpbmdDb250ZXh0TG9h
ZERlbGVnYXRlUHJpdmF0ZS5oPgotI2ltcG9ydCA8V2ViS2l0Mi9XS0Jyb3dzaW5nQ29udGV4dFBv
bGljeURlbGVnYXRlLmg+Ci0jaW1wb3J0IDxXZWJLaXQyL1dLTmF2aWdhdGlvbkRhdGEuaD4KLSNp
bXBvcnQgPFdlYktpdDIvV0tTdHJpbmdDRi5oPgotI2ltcG9ydCA8V2ViS2l0Mi9XS1VSTENGLmg+
Ci0jaW1wb3J0IDxXZWJLaXQyL1dLVmlldy5oPgotI2ltcG9ydCA8V2ViS2l0Mi9XS1ZpZXdQcml2
YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQyL1dLRnJhbWVJbmZvLmg+CisjaW1wb3J0IDxXZWJLaXQy
L1dLV2ViVmlldy5oPgorI2ltcG9ydCA8V2ViS2l0Mi9XS05hdmlnYXRpb25EZWxlZ2F0ZS5oPgor
I2ltcG9ydCA8V2ViS2l0Mi9XS1VJRGVsZWdhdGUuaD4KIAogc3RhdGljIHZvaWQqIGtleVZhbHVl
T2JzZXJ2aW5nQ29udGV4dCA9ICZrZXlWYWx1ZU9ic2VydmluZ0NvbnRleHQ7CiBzdGF0aWMgTlNT
dHJpbmcgKiBjb25zdCBXZWJLaXQyVXNlUmVtb3RlTGF5ZXJUcmVlRHJhd2luZ0FyZWFLZXkgPSBA
IldlYktpdDJVc2VSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYSI7CiAKLUBpbnRlcmZhY2UgV0sy
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgKCkgPFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRl
UHJpdmF0ZSwgV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZSwgV0tCcm93c2luZ0NvbnRl
eHRIaXN0b3J5RGVsZWdhdGU+CitAaW50ZXJmYWNlIFdLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVy
ICgpIDxXS05hdmlnYXRpb25EZWxlZ2F0ZSwgV0tVSURlbGVnYXRlPgogQGVuZAogCiBAaW1wbGVt
ZW50YXRpb24gV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgewotICAgIFdLUHJvY2Vzc0dyb3Vw
ICpfcHJvY2Vzc0dyb3VwOwotICAgIFdLQnJvd3NpbmdDb250ZXh0R3JvdXAgKl9icm93c2luZ0Nv
bnRleHRHcm91cDsKLQotICAgIFdLVmlldyAqX3dlYlZpZXc7CisgICAgV0tXZWJWaWV3ICpfd2Vi
VmlldzsKIH0KIAotLSAoaWQpaW5pdFdpdGhQcm9jZXNzR3JvdXA6KFdLUHJvY2Vzc0dyb3VwICop
cHJvY2Vzc0dyb3VwIGJyb3dzaW5nQ29udGV4dEdyb3VwOihXS0Jyb3dzaW5nQ29udGV4dEdyb3Vw
ICopYnJvd3NpbmdDb250ZXh0R3JvdXAKKy0gKHZvaWQpYXdha2VGcm9tTmliCiB7Ci0gICAgaWYg
KChzZWxmID0gW3N1cGVyIGluaXRXaXRoV2luZG93TmliTmFtZTpAIkJyb3dzZXJXaW5kb3ciXSkp
IHsKLSAgICAgICAgX3Byb2Nlc3NHcm91cCA9IFtwcm9jZXNzR3JvdXAgcmV0YWluXTsKLSAgICAg
ICAgX2Jyb3dzaW5nQ29udGV4dEdyb3VwID0gW2Jyb3dzaW5nQ29udGV4dEdyb3VwIHJldGFpbl07
Ci0gICAgICAgIF96b29tVGV4dE9ubHkgPSBOTzsKLSAgICB9CisgICAgX3pvb21UZXh0T25seSA9
IE5POwogICAgIAotICAgIHJldHVybiBzZWxmOworICAgIF93ZWJWaWV3ID0gW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6W2NvbnRhaW5lclZpZXcgYm91bmRzXV07CisKKyAgICBfd2Vi
Vmlldy5hbGxvd3NNYWduaWZpY2F0aW9uID0gWUVTOworICAgIF93ZWJWaWV3LmFsbG93c0JhY2tG
b3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzID0gWUVTOworCisgICAgW193ZWJWaWV3IHNldEF1dG9y
ZXNpemluZ01hc2s6KE5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGUpXTsK
KyAgICBbY29udGFpbmVyVmlldyBhZGRTdWJ2aWV3Ol93ZWJWaWV3XTsKKworICAgIFtwcm9ncmVz
c0luZGljYXRvciBiaW5kOk5TSGlkZGVuQmluZGluZyB0b09iamVjdDpfd2ViVmlldyB3aXRoS2V5
UGF0aDpAImxvYWRpbmciIG9wdGlvbnM6QHsgTlNWYWx1ZVRyYW5zZm9ybWVyTmFtZUJpbmRpbmdP
cHRpb24gOiBOU05lZ2F0ZUJvb2xlYW5UcmFuc2Zvcm1lck5hbWUgfV07CisgICAgW3Byb2dyZXNz
SW5kaWNhdG9yIGJpbmQ6TlNWYWx1ZUJpbmRpbmcgdG9PYmplY3Q6X3dlYlZpZXcgd2l0aEtleVBh
dGg6QCJlc3RpbWF0ZWRQcm9ncmVzcyIgb3B0aW9uczpuaWxdOworCisgICAgW193ZWJWaWV3IGFk
ZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInRpdGxlIiBvcHRpb25zOjAgY29udGV4dDprZXlW
YWx1ZU9ic2VydmluZ0NvbnRleHRdOworICAgIFtfd2ViVmlldyBhZGRPYnNlcnZlcjpzZWxmIGZv
cktleVBhdGg6QCJhY3RpdmVVUkwiIG9wdGlvbnM6MCBjb250ZXh0OmtleVZhbHVlT2JzZXJ2aW5n
Q29udGV4dF07CisKKyAgICBfd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUgPSBzZWxmOwogfQog
CiAtICh2b2lkKWRlYWxsb2MKQEAgLTY3LDE1ICs2OSw4IEBAIC0gKHZvaWQpZGVhbGxvYwogICAg
IFtwcm9ncmVzc0luZGljYXRvciB1bmJpbmQ6TlNIaWRkZW5CaW5kaW5nXTsKICAgICBbcHJvZ3Jl
c3NJbmRpY2F0b3IgdW5iaW5kOk5TVmFsdWVCaW5kaW5nXTsKIAotICAgIFtfd2ViVmlldy5icm93
c2luZ0NvbnRleHRDb250cm9sbGVyIHJlbW92ZU9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInRp
dGxlIiBjb250ZXh0OmtleVZhbHVlT2JzZXJ2aW5nQ29udGV4dF07Ci0gICAgW193ZWJWaWV3LmJy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXIgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAi
YWN0aXZlVVJMIiBjb250ZXh0OmtleVZhbHVlT2JzZXJ2aW5nQ29udGV4dF07Ci0gICAgX3dlYlZp
ZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBuaWw7Ci0gICAgX3dl
YlZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5wb2xpY3lEZWxlZ2F0ZSA9IG5pbDsKICAg
ICBbX3dlYlZpZXcgcmVsZWFzZV07CiAKLSAgICBbX2Jyb3dzaW5nQ29udGV4dEdyb3VwIHJlbGVh
c2VdOwotICAgIFtfcHJvY2Vzc0dyb3VwIHJlbGVhc2VdOwotCiAgICAgW3N1cGVyIGRlYWxsb2Nd
OwogfQogCkBAIC04Myw3ICs3OCw3IEBAIC0gKElCQWN0aW9uKWZldGNoOihpZClzZW5kZXIKIHsK
ICAgICBbdXJsVGV4dCBzZXRTdHJpbmdWYWx1ZTpbc2VsZiBhZGRQcm90b2NvbElmTmVjZXNzYXJ5
Olt1cmxUZXh0IHN0cmluZ1ZhbHVlXV1dOwogCi0gICAgW193ZWJWaWV3LmJyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNV
UkwgVVJMV2l0aFN0cmluZzpbdXJsVGV4dCBzdHJpbmdWYWx1ZV1dXV07CisgICAgW193ZWJWaWV3
IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhT
dHJpbmc6W3VybFRleHQgc3RyaW5nVmFsdWVdXV1dOwogfQogCiAtIChJQkFjdGlvbilzaG93SGlk
ZVdlYlZpZXc6KGlkKXNlbmRlcgpAQCAtMTE5LDEwICsxMTQsNiBAQCAtIChCT09MKXZhbGlkYXRl
TWVudUl0ZW06KE5TTWVudUl0ZW0gKiltZW51SXRlbQogICAgICAgICBbbWVudUl0ZW0gc2V0VGl0
bGU6W193ZWJWaWV3IGlzSGlkZGVuXSA/IEAiU2hvdyBXZWIgVmlldyIgOiBAIkhpZGUgV2ViIFZp
ZXciXTsKICAgICBlbHNlIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHJlbW92ZVJlaW5zZXJ0V2Vi
VmlldzopKQogICAgICAgICBbbWVudUl0ZW0gc2V0VGl0bGU6W193ZWJWaWV3IHdpbmRvd10gPyBA
IlJlbW92ZSBXZWIgVmlldyIgOiBAIkluc2VydCBXZWIgVmlldyJdOwotICAgIGVsc2UgaWYgKGFj
dGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlWm9vbU1vZGU6KSkKLSAgICAgICAgW21lbnVJdGVtIHNl
dFN0YXRlOl96b29tVGV4dE9ubHkgPyBOU09uU3RhdGUgOiBOU09mZlN0YXRlXTsKLSAgICBlbHNl
IGlmIChbbWVudUl0ZW0gYWN0aW9uXSA9PSBAc2VsZWN0b3IodG9nZ2xlUGFnaW5hdGlvbk1vZGU6
KSkKLSAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOltzZWxmIGlzUGFnaW5hdGVkXSA/IE5TT25T
dGF0ZSA6IE5TT2ZmU3RhdGVdOwogICAgIGVsc2UgaWYgKFttZW51SXRlbSBhY3Rpb25dID09IEBz
ZWxlY3Rvcih0b2dnbGVUcmFuc3BhcmVudFdpbmRvdzopKQogICAgICAgICBbbWVudUl0ZW0gc2V0
U3RhdGU6W1tzZWxmIHdpbmRvd10gaXNPcGFxdWVdID8gTlNPZmZTdGF0ZSA6IE5TT25TdGF0ZV07
CiAgICAgZWxzZSBpZiAoW21lbnVJdGVtIGFjdGlvbl0gPT0gQHNlbGVjdG9yKHRvZ2dsZVVJU2lk
ZUNvbXBvc2l0aW5nOikpCkBAIC0xMzMsNyArMTI0LDcgQEAgLSAoQk9PTCl2YWxpZGF0ZU1lbnVJ
dGVtOihOU01lbnVJdGVtICopbWVudUl0ZW0KIAogLSAoSUJBY3Rpb24pcmVsb2FkOihpZClzZW5k
ZXIKIHsKLSAgICBbX3dlYlZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciByZWxvYWRdOwor
Ly8gICAgW193ZWJWaWV3IHJlbG9hZF07CiB9CiAKIC0gKElCQWN0aW9uKWZvcmNlUmVwYWludDoo
aWQpc2VuZGVyCkBAIC0xNDMsMTIgKzEzNCwzMyBAQCAtIChJQkFjdGlvbilmb3JjZVJlcGFpbnQ6
KGlkKXNlbmRlcgogCiAtIChJQkFjdGlvbilnb0JhY2s6KGlkKXNlbmRlcgogewotICAgIFtfd2Vi
Vmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyIGdvQmFja107CisgICAgW193ZWJWaWV3IGdv
QmFja107CiB9CiAKIC0gKElCQWN0aW9uKWdvRm9yd2FyZDooaWQpc2VuZGVyCiB7Ci0gICAgW193
ZWJWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgZ29Gb3J3YXJkXTsKKyAgICBbX3dlYlZp
ZXcgZ29Gb3J3YXJkXTsKK30KKworLSAoSUJBY3Rpb24pdG9nZ2xlWm9vbU1vZGU6KGlkKXNlbmRl
cgoreworfQorCistIChJQkFjdGlvbilyZXNldFpvb206KGlkKXNlbmRlcgoreworfQorCistIChC
T09MKWNhblJlc2V0Wm9vbQoreworICAgIHJldHVybiBOTzsKK30KKworLSAoSUJBY3Rpb24pZHVt
cFNvdXJjZVRvQ29uc29sZTooaWQpc2VuZGVyCit7Cit9CisKKy0gKElCQWN0aW9uKXRvZ2dsZVBh
Z2luYXRpb25Nb2RlOihpZClzZW5kZXIKK3sKIH0KIAogLSAoQk9PTCl2YWxpZGF0ZVVzZXJJbnRl
cmZhY2VJdGVtOihpZCA8TlNWYWxpZGF0ZWRVc2VySW50ZXJmYWNlSXRlbT4paXRlbQpAQCAtMTU2
LDEwICsxNjgsMTcgQEAgLSAoQk9PTCl2YWxpZGF0ZVVzZXJJbnRlcmZhY2VJdGVtOihpZCA8TlNW
YWxpZGF0ZWRVc2VySW50ZXJmYWNlSXRlbT4paXRlbQogICAgIFNFTCBhY3Rpb24gPSBbaXRlbSBh
Y3Rpb25dOwogCiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IoZ29CYWNrOikpCi0gICAgICAg
IHJldHVybiBfd2ViVmlldyAmJiBbX3dlYlZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBj
YW5Hb0JhY2tdOworICAgICAgICByZXR1cm4gX3dlYlZpZXcgJiYgW193ZWJWaWV3IGNhbkdvQmFj
a107CiAgICAgCiAgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IoZ29Gb3J3YXJkOikpCi0gICAg
ICAgIHJldHVybiBfd2ViVmlldyAmJiBbX3dlYlZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ciBjYW5Hb0ZvcndhcmRdOworICAgICAgICByZXR1cm4gX3dlYlZpZXcgJiYgW193ZWJWaWV3IGNh
bkdvRm9yd2FyZF07CisgICAgCisgICAgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IodG9nZ2xlWm9v
bU1vZGU6KQorICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHJlc2V0Wm9vbTopCisgICAg
ICAgIHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoZHVtcFNvdXJjZVRvQ29uc29sZTopCisgICAgICAg
IHx8IGFjdGlvbiA9PSBAc2VsZWN0b3IoZmluZDopCisgICAgICAgIHx8IGFjdGlvbiA9PSBAc2Vs
ZWN0b3IodG9nZ2xlUGFnaW5hdGlvbk1vZGU6KSkKKyAgICAgICAgcmV0dXJuIE5POwogICAgIAog
ICAgIHJldHVybiBZRVM7CiB9CkBAIC0xNzEsOSArMTkwLDcgQEAgLSAodm9pZCl2YWxpZGF0ZVRv
b2xiYXIKIAogLSAoQk9PTCl3aW5kb3dTaG91bGRDbG9zZTooaWQpc2VuZGVyCiB7Ci0gICAgTE9H
KEAid2luZG93U2hvdWxkQ2xvc2UiKTsKLSAgICBCT09MIGNhbkNsb3NlSW1tZWRpYXRlbHkgPSBX
S1BhZ2VUcnlDbG9zZShfd2ViVmlldy5wYWdlUmVmKTsKLSAgICByZXR1cm4gY2FuQ2xvc2VJbW1l
ZGlhdGVseTsKKyAgICByZXR1cm4gWUVTOwogfQogCiAtICh2b2lkKXdpbmRvd1dpbGxDbG9zZToo
TlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KQEAgLTE4NCw4ICsyMDEsNiBAQCAtICh2b2lk
KXdpbmRvd1dpbGxDbG9zZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KIAogLSAodm9p
ZClhcHBsaWNhdGlvblRlcm1pbmF0aW5nCiB7Ci0gICAgLy8gRklYTUU6IFdoeSBhcmUgd2UgYm90
aGVyaW5nIHRvIGNsb3NlIHRoZSBwYWdlPyBUaGlzIGRvZXNuJ3QgZXZlbiBwcmV2ZW50IExFQUsg
b3V0cHV0LgotICAgIFdLUGFnZUNsb3NlKF93ZWJWaWV3LnBhZ2VSZWYpOwogfQogCiAjZGVmaW5l
IERlZmF1bHRNaW5pbXVtWm9vbUZhY3RvciAoLjUpCkBAIC0xOTQsMTUgKzIwOSwxMSBAQCAtICh2
b2lkKWFwcGxpY2F0aW9uVGVybWluYXRpbmcKIAogLSAoQ0dGbG9hdCljdXJyZW50Wm9vbUZhY3Rv
cgogewotICAgIHJldHVybiBfem9vbVRleHRPbmx5ID8gX3dlYlZpZXcuYnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlci50ZXh0Wm9vbSA6IF93ZWJWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIu
cGFnZVpvb207CisgICAgcmV0dXJuIDE7CiB9CiAKIC0gKHZvaWQpc2V0Q3VycmVudFpvb21GYWN0
b3I6KENHRmxvYXQpZmFjdG9yCiB7Ci0gICAgaWYgKF96b29tVGV4dE9ubHkpCi0gICAgICAgIF93
ZWJWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIudGV4dFpvb20gPSBmYWN0b3I7Ci0gICAg
ZWxzZQotICAgICAgICBfd2ViVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLnBhZ2Vab29t
ID0gZmFjdG9yOwogfQogCiAtIChCT09MKWNhblpvb21JbgpAQCAtMjMzLDYyICsyNDQsMTcgQEAg
LSAodm9pZCl6b29tT3V0OihpZClzZW5kZXIKICAgICBbc2VsZiBzZXRDdXJyZW50Wm9vbUZhY3Rv
cjpmYWN0b3JdOwogfQogCi0tIChCT09MKWNhblJlc2V0Wm9vbQotewotICAgIHJldHVybiBfem9v
bVRleHRPbmx5ID8gKF93ZWJWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIudGV4dFpvb20g
IT0gMSkgOiAoX3dlYlZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5wYWdlWm9vbSAhPSAx
KTsKLX0KLQotLSAodm9pZClyZXNldFpvb206KGlkKXNlbmRlcgotewotICAgIGlmICghW3NlbGYg
Y2FuUmVzZXRab29tXSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKF96b29tVGV4dE9ubHkp
Ci0gICAgICAgIF93ZWJWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIudGV4dFpvb20gPSAx
OwotICAgIGVsc2UKLSAgICAgICAgX3dlYlZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5w
YWdlWm9vbSA9IDE7Ci19Ci0KLS0gKElCQWN0aW9uKXRvZ2dsZVpvb21Nb2RlOihpZClzZW5kZXIK
LXsKLSAgICBpZiAoX3pvb21UZXh0T25seSkgewotICAgICAgICBfem9vbVRleHRPbmx5ID0gTk87
Ci0gICAgICAgIGRvdWJsZSBjdXJyZW50VGV4dFpvb20gPSBfd2ViVmlldy5icm93c2luZ0NvbnRl
eHRDb250cm9sbGVyLnRleHRab29tOwotICAgICAgICBXS1BhZ2VTZXRQYWdlQW5kVGV4dFpvb21G
YWN0b3JzKF93ZWJWaWV3LnBhZ2VSZWYsIGN1cnJlbnRUZXh0Wm9vbSwgMSk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgX3pvb21UZXh0T25seSA9IFlFUzsKLSAgICAgICAgZG91YmxlIGN1cnJlbnRQ
YWdlWm9vbSA9IF93ZWJWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIucGFnZVpvb207Ci0g
ICAgICAgIFdLUGFnZVNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoX3dlYlZpZXcucGFnZVJlZiwg
MSwgY3VycmVudFBhZ2Vab29tKTsKLSAgICB9Ci19Ci0KLS0gKEJPT0wpaXNQYWdpbmF0ZWQKLXsK
LSAgICByZXR1cm4gX3dlYlZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5wYWdpbmF0aW9u
TW9kZSAhPSBXS1BhZ2luYXRpb25Nb2RlVW5wYWdpbmF0ZWQ7Ci19Ci0KLS0gKElCQWN0aW9uKXRv
Z2dsZVBhZ2luYXRpb25Nb2RlOihpZClzZW5kZXIKLXsKLSAgICBpZiAoW3NlbGYgaXNQYWdpbmF0
ZWRdKQotICAgICAgICBfd2ViVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLnBhZ2luYXRp
b25Nb2RlID0gV0tQYWdpbmF0aW9uTW9kZVVucGFnaW5hdGVkOwotICAgIGVsc2UgewotICAgICAg
ICBfd2ViVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLnBhZ2luYXRpb25Nb2RlID0gV0tQ
YWdpbmF0aW9uTW9kZUxlZnRUb1JpZ2h0OwotICAgICAgICBfd2ViVmlldy5icm93c2luZ0NvbnRl
eHRDb250cm9sbGVyLnBhZ2VMZW5ndGggPSBfd2ViVmlldy5ib3VuZHMuc2l6ZS53aWR0aCAvIDI7
Ci0gICAgICAgIF93ZWJWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIuZ2FwQmV0d2VlblBh
Z2VzID0gMTA7Ci0gICAgfQotfQotCiAtIChJQkFjdGlvbil0b2dnbGVUcmFuc3BhcmVudFdpbmRv
dzooaWQpc2VuZGVyCiB7Ci0gICAgQk9PTCBpc1RyYW5zcGFyZW50ID0gX3dlYlZpZXcuZHJhd3NU
cmFuc3BhcmVudEJhY2tncm91bmQ7Ci0gICAgaXNUcmFuc3BhcmVudCA9ICFpc1RyYW5zcGFyZW50
OwotCi0gICAgW1tzZWxmIHdpbmRvd10gc2V0T3BhcXVlOiFpc1RyYW5zcGFyZW50XTsKLSAgICBb
W3NlbGYgd2luZG93XSBzZXRIYXNTaGFkb3c6IWlzVHJhbnNwYXJlbnRdOwotCi0gICAgX3dlYlZp
ZXcuZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQgPSBpc1RyYW5zcGFyZW50OwotCi0gICAgW1tz
ZWxmIHdpbmRvd10gZGlzcGxheV07ICAgIAorLy8gICAgQk9PTCBpc1RyYW5zcGFyZW50ID0gX3dl
YlZpZXcuZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQ7CisvLyAgICBpc1RyYW5zcGFyZW50ID0g
IWlzVHJhbnNwYXJlbnQ7CisvLworLy8gICAgW1tzZWxmIHdpbmRvd10gc2V0T3BhcXVlOiFpc1Ry
YW5zcGFyZW50XTsKKy8vICAgIFtbc2VsZiB3aW5kb3ddIHNldEhhc1NoYWRvdzohaXNUcmFuc3Bh
cmVudF07CisvLworLy8gICAgX3dlYlZpZXcuZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQgPSBp
c1RyYW5zcGFyZW50OworLy8KKy8vICAgIFtbc2VsZiB3aW5kb3ddIGRpc3BsYXldOyAgICAKIH0K
IAogLSAoQk9PTClpc1VJU2lkZUNvbXBvc2l0aW5nRW5hYmxlZApAQCAtMzAzLDI5MCArMjY5LDcw
IEBAIC0gKElCQWN0aW9uKXRvZ2dsZVVJU2lkZUNvbXBvc2l0aW5nOihpZClzZW5kZXIKICAgICBb
dXNlckRlZmF1bHRzIHNldEJvb2w6bmV3VmFsdWUgZm9yS2V5OldlYktpdDJVc2VSZW1vdGVMYXll
clRyZWVEcmF3aW5nQXJlYUtleV07CiB9CiAKLXN0YXRpYyB2b2lkIGR1bXBTb3VyY2UoV0tTdHJp
bmdSZWYgc291cmNlLCBXS0Vycm9yUmVmIGVycm9yLCB2b2lkKiBjb250ZXh0KQotewotICAgIGlm
ICghc291cmNlKQotICAgICAgICByZXR1cm47Ci0KLSAgICBMT0coQCJNYWluIGZyYW1lIHNvdXJj
ZVxuIFwiJUBcIiIsIENGQnJpZGdpbmdSZWxlYXNlKFdLU3RyaW5nQ29weUNGU3RyaW5nKDAsIHNv
dXJjZSkpKTsKLX0KLQotLSAoSUJBY3Rpb24pZHVtcFNvdXJjZVRvQ29uc29sZTooaWQpc2VuZGVy
Ci17Ci0gICAgV0tQYWdlR2V0U291cmNlRm9yRnJhbWUoX3dlYlZpZXcucGFnZVJlZiwgV0tQYWdl
R2V0TWFpbkZyYW1lKF93ZWJWaWV3LnBhZ2VSZWYpLCBOVUxMLCBkdW1wU291cmNlKTsKLX0KLQog
LSAodm9pZClvYnNlcnZlVmFsdWVGb3JLZXlQYXRoOihOU1N0cmluZyAqKWtleVBhdGggb2ZPYmpl
Y3Q6KGlkKW9iamVjdCBjaGFuZ2U6KE5TRGljdGlvbmFyeSAqKWNoYW5nZSBjb250ZXh0Oih2b2lk
ICopY29udGV4dAogewotICAgIGlmIChjb250ZXh0ICE9IGtleVZhbHVlT2JzZXJ2aW5nQ29udGV4
dCB8fCBvYmplY3QgIT0gX3dlYlZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcikKKyAgICBp
ZiAoY29udGV4dCAhPSBrZXlWYWx1ZU9ic2VydmluZ0NvbnRleHQgfHwgb2JqZWN0ICE9IF93ZWJW
aWV3KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoW2tleVBhdGggaXNFcXVhbFRvU3RyaW5n
OkAidGl0bGUiXSkKLSAgICAgICAgc2VsZi53aW5kb3cudGl0bGUgPSBbX3dlYlZpZXcuYnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlci50aXRsZSBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpfd2ViVmll
dy5pc1VzaW5nVUlTaWRlQ29tcG9zaXRpbmcgPyBAIiBbV0syIFVJXSIgOiBAIiBbV0syXSJdOwor
ICAgICAgICBzZWxmLndpbmRvdy50aXRsZSA9IF93ZWJWaWV3LnRpdGxlOyAvLyBbX3dlYlZpZXcu
dGl0bGUgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6X3dlYlZpZXcuaXNVc2luZ1VJU2lkZUNvbXBv
c2l0aW5nID8gQCIgW1dLMiBVSV0iIDogQCIgW1dLMl0iXTsKICAgICBlbHNlIGlmIChba2V5UGF0
aCBpc0VxdWFsVG9TdHJpbmc6QCJhY3RpdmVVUkwiXSkKLSAgICAgICAgW3NlbGYgdXBkYXRlVGV4
dEZpZWxkRnJvbVVSTDpfd2ViVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmFjdGl2ZVVS
TF07Ci19Ci0KLS8vIE1BUks6IFVJIENsaWVudCBDYWxsYmFja3MKLQotc3RhdGljIFdLUGFnZVJl
ZiBjcmVhdGVOZXdQYWdlKFdLUGFnZVJlZiBwYWdlLCBXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdCwg
V0tEaWN0aW9uYXJ5UmVmIGZlYXR1cmVzLCBXS0V2ZW50TW9kaWZpZXJzIG1vZGlmaWVycywgV0tF
dmVudE1vdXNlQnV0dG9uIGJ1dHRvbiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBM
T0coQCJjcmVhdGVOZXdQYWdlIik7Ci0gICAgV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgKm9y
aWdpbmF0b3IgPSAoV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgKiljbGllbnRJbmZvOwotICAg
IFdLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyICpjb250cm9sbGVyID0gW1tXSzJCcm93c2VyV2lu
ZG93Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhQcm9jZXNzR3JvdXA6b3JpZ2luYXRvci0+X3By
b2Nlc3NHcm91cCBicm93c2luZ0NvbnRleHRHcm91cDpvcmlnaW5hdG9yLT5fYnJvd3NpbmdDb250
ZXh0R3JvdXBdOwotICAgIFtjb250cm9sbGVyIGxvYWRXaW5kb3ddOwotCi0gICAgcmV0dXJuIFdL
UmV0YWluKGNvbnRyb2xsZXItPl93ZWJWaWV3LnBhZ2VSZWYpOwotfQotCi1zdGF0aWMgdm9pZCBz
aG93UGFnZShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKLXsKLSAgICBM
T0coQCJzaG93UGFnZSIpOwotICAgIFtbKEJyb3dzZXJXaW5kb3dDb250cm9sbGVyICopY2xpZW50
SW5mbyB3aW5kb3ddIG9yZGVyRnJvbnQ6bmlsXTsKLX0KLQotc3RhdGljIHZvaWQgY2xvc2VQYWdl
KFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQotewotICAgIExPRyhAImNs
b3NlUGFnZSIpOwotICAgIFdLUGFnZUNsb3NlKHBhZ2UpOwotICAgIFtbKEJyb3dzZXJXaW5kb3dD
b250cm9sbGVyICopY2xpZW50SW5mbyB3aW5kb3ddIGNsb3NlXTsKKyAgICAgICAgW3NlbGYgdXBk
YXRlVGV4dEZpZWxkRnJvbVVSTDpfd2ViVmlldy5hY3RpdmVVUkxdOwogfQogCi1zdGF0aWMgdm9p
ZCBydW5KYXZhU2NyaXB0QWxlcnQoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2Us
IFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCistICh2b2lkKXdlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2Fn
ZTooTlNTdHJpbmcgKiltZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJh
bWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKCkpY29tcGxldGlvbkhhbmRsZXIKIHsKICAg
ICBOU0FsZXJ0KiBhbGVydCA9IFtbTlNBbGVydCBhbGxvY10gaW5pdF07CiAKLSAgICBXS1VSTFJl
ZiB3a1VSTCA9IFdLRnJhbWVDb3B5VVJMKGZyYW1lKTsKLSAgICBDRlVSTFJlZiBjZlVSTCA9IFdL
VVJMQ29weUNGVVJMKDAsIHdrVVJMKTsKLSAgICBXS1JlbGVhc2Uod2tVUkwpOwotCi0gICAgW2Fs
ZXJ0IHNldE1lc3NhZ2VUZXh0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSmF2YVNjcmlw
dCBhbGVydCBkaWFsb2cgZnJvbSAlQC4iLCBbKE5TVVJMICopY2ZVUkwgYWJzb2x1dGVTdHJpbmdd
XV07Ci0gICAgQ0ZSZWxlYXNlKGNmVVJMKTsKLQotICAgIENGU3RyaW5nUmVmIGNmTWVzc2FnZSA9
IFdLU3RyaW5nQ29weUNGU3RyaW5nKDAsIG1lc3NhZ2UpOwotICAgIFthbGVydCBzZXRJbmZvcm1h
dGl2ZVRleHQ6KE5TU3RyaW5nICopY2ZNZXNzYWdlXTsKLSAgICBDRlJlbGVhc2UoY2ZNZXNzYWdl
KTsKLQorICAgIFthbGVydCBzZXRNZXNzYWdlVGV4dDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAIkphdmFTY3JpcHQgYWxlcnQgZGlhbG9nIGZyb20gJUAuIiwgW2ZyYW1lLnJlcXVlc3QuVVJM
IGFic29sdXRlU3RyaW5nXV1dOworICAgIFthbGVydCBzZXRJbmZvcm1hdGl2ZVRleHQ6bWVzc2Fn
ZV07CiAgICAgW2FsZXJ0IGFkZEJ1dHRvbldpdGhUaXRsZTpAIk9LIl07CiAKLSAgICBbYWxlcnQg
cnVuTW9kYWxdOwotICAgIFthbGVydCByZWxlYXNlXTsKKyAgICBbYWxlcnQgYmVnaW5TaGVldE1v
ZGFsRm9yV2luZG93OnNlbGYud2luZG93IGNvbXBsZXRpb25IYW5kbGVyOl52b2lkIChOU01vZGFs
UmVzcG9uc2UgcmVzcG9uc2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKKyAgICAg
ICAgW2FsZXJ0IHJlbGVhc2VdOworICAgIH1dOwogfQogCi1zdGF0aWMgYm9vbCBydW5KYXZhU2Ny
aXB0Q29uZmlybShXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZSwgV0tGcmFtZVJl
ZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBydW5KYXZhU2NyaXB0Q29uZmlybVBhbmVsV2l0aE1lc3NhZ2U6KE5TU3Ry
aW5nICopbWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShCT09MIHJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXIKIHsK
ICAgICBOU0FsZXJ0KiBhbGVydCA9IFtbTlNBbGVydCBhbGxvY10gaW5pdF07CiAKLSAgICBXS1VS
TFJlZiB3a1VSTCA9IFdLRnJhbWVDb3B5VVJMKGZyYW1lKTsKLSAgICBDRlVSTFJlZiBjZlVSTCA9
IFdLVVJMQ29weUNGVVJMKDAsIHdrVVJMKTsKLSAgICBXS1JlbGVhc2Uod2tVUkwpOwotCi0gICAg
W2FsZXJ0IHNldE1lc3NhZ2VUZXh0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSmF2YVNj
cmlwdCBjb25maXJtIGRpYWxvZyBmcm9tICVALiIsIFsoTlNVUkwgKiljZlVSTCBhYnNvbHV0ZVN0
cmluZ11dXTsKLSAgICBDRlJlbGVhc2UoY2ZVUkwpOwotCi0gICAgQ0ZTdHJpbmdSZWYgY2ZNZXNz
YWdlID0gV0tTdHJpbmdDb3B5Q0ZTdHJpbmcoMCwgbWVzc2FnZSk7Ci0gICAgW2FsZXJ0IHNldElu
Zm9ybWF0aXZlVGV4dDooTlNTdHJpbmcgKiljZk1lc3NhZ2VdOwotICAgIENGUmVsZWFzZShjZk1l
c3NhZ2UpOwotCisgICAgW2FsZXJ0IHNldE1lc3NhZ2VUZXh0OltOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiSmF2YVNjcmlwdCBjb25maXJtIGRpYWxvZyBmcm9tICVALiIsIFtmcmFtZS5yZXF1
ZXN0LlVSTCAgYWJzb2x1dGVTdHJpbmddXV07CisgICAgW2FsZXJ0IHNldEluZm9ybWF0aXZlVGV4
dDptZXNzYWdlXTsKKyAgICAKICAgICBbYWxlcnQgYWRkQnV0dG9uV2l0aFRpdGxlOkAiT0siXTsK
ICAgICBbYWxlcnQgYWRkQnV0dG9uV2l0aFRpdGxlOkAiQ2FuY2VsIl07CiAKLSAgICBOU0ludGVn
ZXIgYnV0dG9uID0gW2FsZXJ0IHJ1bk1vZGFsXTsKLSAgICBbYWxlcnQgcmVsZWFzZV07Ci0KLSAg
ICByZXR1cm4gYnV0dG9uID09IE5TQWxlcnRGaXJzdEJ1dHRvblJldHVybjsKKyAgICBbYWxlcnQg
YmVnaW5TaGVldE1vZGFsRm9yV2luZG93OnNlbGYud2luZG93IGNvbXBsZXRpb25IYW5kbGVyOl52
b2lkIChOU01vZGFsUmVzcG9uc2UgcmVzcG9uc2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIocmVzcG9uc2UgPT0gTlNNb2RhbFJlc3BvbnNlU3RvcCk7CisgICAgICAgIFthbGVydCByZWxl
YXNlXTsKKyAgICB9XTsKIH0KIAotc3RhdGljIFdLU3RyaW5nUmVmIHJ1bkphdmFTY3JpcHRQcm9t
cHQoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLU3RyaW5nUmVmIGRlZmF1
bHRWYWx1ZSwgV0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKKy0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5KYXZhU2NyaXB0VGV4dElucHV0UGFu
ZWxXaXRoUHJvbXB0OihOU1N0cmluZyAqKXByb21wdCBkZWZhdWx0VGV4dDooTlNTdHJpbmcgKilk
ZWZhdWx0VGV4dCBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShOU1N0cmluZyAqcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgog
ewogICAgIE5TQWxlcnQqIGFsZXJ0ID0gW1tOU0FsZXJ0IGFsbG9jXSBpbml0XTsKIAotICAgIFdL
VVJMUmVmIHdrVVJMID0gV0tGcmFtZUNvcHlVUkwoZnJhbWUpOwotICAgIENGVVJMUmVmIGNmVVJM
ID0gV0tVUkxDb3B5Q0ZVUkwoMCwgd2tVUkwpOwotICAgIFdLUmVsZWFzZSh3a1VSTCk7Ci0KLSAg
ICBbYWxlcnQgc2V0TWVzc2FnZVRleHQ6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJKYXZh
U2NyaXB0IHByb21wdCBkaWFsb2cgZnJvbSAlQC4iLCBbKE5TVVJMICopY2ZVUkwgYWJzb2x1dGVT
dHJpbmddXV07Ci0gICAgQ0ZSZWxlYXNlKGNmVVJMKTsKLQotICAgIENGU3RyaW5nUmVmIGNmTWVz
c2FnZSA9IFdLU3RyaW5nQ29weUNGU3RyaW5nKDAsIG1lc3NhZ2UpOwotICAgIFthbGVydCBzZXRJ
bmZvcm1hdGl2ZVRleHQ6KE5TU3RyaW5nICopY2ZNZXNzYWdlXTsKLSAgICBDRlJlbGVhc2UoY2ZN
ZXNzYWdlKTsKLQorICAgIFthbGVydCBzZXRNZXNzYWdlVGV4dDpbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIkphdmFTY3JpcHQgcHJvbXB0IGRpYWxvZyBmcm9tICVALiIsIFtmcmFtZS5yZXF1
ZXN0LlVSTCBhYnNvbHV0ZVN0cmluZ11dXTsKKyAgICBbYWxlcnQgc2V0SW5mb3JtYXRpdmVUZXh0
OnByb21wdF07CisgICAgCiAgICAgW2FsZXJ0IGFkZEJ1dHRvbldpdGhUaXRsZTpAIk9LIl07CiAg
ICAgW2FsZXJ0IGFkZEJ1dHRvbldpdGhUaXRsZTpAIkNhbmNlbCJdOwotCisgICAgCiAgICAgTlNU
ZXh0RmllbGQqIGlucHV0ID0gW1tOU1RleHRGaWVsZCBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01h
a2VSZWN0KDAsIDAsIDIwMCwgMjQpXTsKLSAgICBDRlN0cmluZ1JlZiBjZkRlZmF1bHRWYWx1ZSA9
IFdLU3RyaW5nQ29weUNGU3RyaW5nKDAsIGRlZmF1bHRWYWx1ZSk7Ci0gICAgW2lucHV0IHNldFN0
cmluZ1ZhbHVlOihOU1N0cmluZyAqKWNmRGVmYXVsdFZhbHVlXTsKLSAgICBDRlJlbGVhc2UoY2ZE
ZWZhdWx0VmFsdWUpOwotCisgICAgW2lucHV0IHNldFN0cmluZ1ZhbHVlOmRlZmF1bHRUZXh0XTsK
ICAgICBbYWxlcnQgc2V0QWNjZXNzb3J5VmlldzppbnB1dF07Ci0KLSAgICBOU0ludGVnZXIgYnV0
dG9uID0gW2FsZXJ0IHJ1bk1vZGFsXTsKLQotICAgIE5TU3RyaW5nKiByZXN1bHQgPSBuaWw7Ci0g
ICAgaWYgKGJ1dHRvbiA9PSBOU0FsZXJ0Rmlyc3RCdXR0b25SZXR1cm4pIHsKKyAgICAKKyAgICAK
KyAgICBbYWxlcnQgYmVnaW5TaGVldE1vZGFsRm9yV2luZG93OnNlbGYud2luZG93IGNvbXBsZXRp
b25IYW5kbGVyOl52b2lkIChOU01vZGFsUmVzcG9uc2UgcmVzcG9uc2UpIHsKICAgICAgICAgW2lu
cHV0IHZhbGlkYXRlRWRpdGluZ107Ci0gICAgICAgIHJlc3VsdCA9IFtpbnB1dCBzdHJpbmdWYWx1
ZV07Ci0gICAgfQotCi0gICAgW2FsZXJ0IHJlbGVhc2VdOwotCi0gICAgaWYgKCFyZXN1bHQpCi0g
ICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygo
Q0ZTdHJpbmdSZWYpcmVzdWx0KTsKLX0KLQotc3RhdGljIHZvaWQgc2V0U3RhdHVzVGV4dChXS1Bh
Z2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgdGV4dCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsK
LSAgICBMT0coQCJzZXRTdGF0dXNUZXh0Iik7Ci19Ci0KLXN0YXRpYyB2b2lkIG1vdXNlRGlkTW92
ZU92ZXJFbGVtZW50KFdLUGFnZVJlZiBwYWdlLCBXS0hpdFRlc3RSZXN1bHRSZWYgaGl0VGVzdFJl
c3VsdCwgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29u
c3Qgdm9pZCAqY2xpZW50SW5mbykKLXsKLSAgICBMT0coQCJtb3VzZURpZE1vdmVPdmVyRWxlbWVu
dCIpOwotfQotCi1zdGF0aWMgV0tSZWN0IGdldFdpbmRvd0ZyYW1lKFdLUGFnZVJlZiBwYWdlLCBj
b25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIE5TUmVjdCByZWN0ID0gW1soQnJvd3Nlcldp
bmRvd0NvbnRyb2xsZXIgKiljbGllbnRJbmZvIHdpbmRvd10gZnJhbWVdOwotICAgIFdLUmVjdCB3
a1JlY3Q7Ci0gICAgd2tSZWN0Lm9yaWdpbi54ID0gcmVjdC5vcmlnaW4ueDsKLSAgICB3a1JlY3Qu
b3JpZ2luLnkgPSByZWN0Lm9yaWdpbi55OwotICAgIHdrUmVjdC5zaXplLndpZHRoID0gcmVjdC5z
aXplLndpZHRoOwotICAgIHdrUmVjdC5zaXplLmhlaWdodCA9IHJlY3Quc2l6ZS5oZWlnaHQ7Ci0g
ICAgcmV0dXJuIHdrUmVjdDsKLX0KLQotc3RhdGljIHZvaWQgc2V0V2luZG93RnJhbWUoV0tQYWdl
UmVmIHBhZ2UsIFdLUmVjdCByZWN0LCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQotewotICAgIFtb
KEJyb3dzZXJXaW5kb3dDb250cm9sbGVyICopY2xpZW50SW5mbyB3aW5kb3ddIHNldEZyYW1lOk5T
TWFrZVJlY3QocmVjdC5vcmlnaW4ueCwgcmVjdC5vcmlnaW4ueSwgcmVjdC5zaXplLndpZHRoLCBy
ZWN0LnNpemUuaGVpZ2h0KSBkaXNwbGF5OllFU107Ci19Ci0KLXN0YXRpYyBib29sIHJ1bkJlZm9y
ZVVubG9hZENvbmZpcm1QYW5lbChXS1BhZ2VSZWYgcGFnZSwgV0tTdHJpbmdSZWYgbWVzc2FnZSwg
V0tGcmFtZVJlZiBmcmFtZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBOU0FsZXJ0
ICphbGVydCA9IFtbTlNBbGVydCBhbGxvY10gaW5pdF07Ci0KLSAgICBXS1VSTFJlZiB3a1VSTCA9
IFdLRnJhbWVDb3B5VVJMKGZyYW1lKTsKLSAgICBDRlVSTFJlZiBjZlVSTCA9IFdLVVJMQ29weUNG
VVJMKDAsIHdrVVJMKTsKLSAgICBXS1JlbGVhc2Uod2tVUkwpOwotCi0gICAgW2FsZXJ0IHNldE1l
c3NhZ2VUZXh0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiQmVmb3JlVW5sb2FkIGNvbmZp
cm0gZGlhbG9nIGZyb20gJUAuIiwgWyhOU1VSTCAqKWNmVVJMIGFic29sdXRlU3RyaW5nXV1dOwot
ICAgIENGUmVsZWFzZShjZlVSTCk7Ci0KLSAgICBDRlN0cmluZ1JlZiBjZk1lc3NhZ2UgPSBXS1N0
cmluZ0NvcHlDRlN0cmluZygwLCBtZXNzYWdlKTsKLSAgICBbYWxlcnQgc2V0SW5mb3JtYXRpdmVU
ZXh0OihOU1N0cmluZyAqKWNmTWVzc2FnZV07Ci0gICAgQ0ZSZWxlYXNlKGNmTWVzc2FnZSk7Ci0K
LSAgICBbYWxlcnQgYWRkQnV0dG9uV2l0aFRpdGxlOkAiT0siXTsKLSAgICBbYWxlcnQgYWRkQnV0
dG9uV2l0aFRpdGxlOkAiQ2FuY2VsIl07Ci0KLSAgICBOU0ludGVnZXIgYnV0dG9uID0gW2FsZXJ0
IHJ1bk1vZGFsXTsKLSAgICBbYWxlcnQgcmVsZWFzZV07Ci0KLSAgICByZXR1cm4gYnV0dG9uID09
IE5TQWxlcnRGaXJzdEJ1dHRvblJldHVybjsKLX0KLQotc3RhdGljIHZvaWQgcnVuT3BlblBhbmVs
KFdLUGFnZVJlZiBwYWdlLCBXS0ZyYW1lUmVmIGZyYW1lLCBXS09wZW5QYW5lbFBhcmFtZXRlcnNS
ZWYgcGFyYW1ldGVycywgV0tPcGVuUGFuZWxSZXN1bHRMaXN0ZW5lclJlZiBsaXN0ZW5lciwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBOU09wZW5QYW5lbCAqb3BlblBhbmVsID0gW05T
T3BlblBhbmVsIG9wZW5QYW5lbF07Ci0gICAgW29wZW5QYW5lbCBzZXRBbGxvd3NNdWx0aXBsZVNl
bGVjdGlvbjpXS09wZW5QYW5lbFBhcmFtZXRlcnNHZXRBbGxvd3NNdWx0aXBsZUZpbGVzKHBhcmFt
ZXRlcnMpXTsKLQotICAgIFdLUmV0YWluKGxpc3RlbmVyKTsKLQotICAgIFtvcGVuUGFuZWwgYmVn
aW5TaGVldE1vZGFsRm9yV2luZG93OlsoQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgKiljbGllbnRJ
bmZvIHdpbmRvd10gY29tcGxldGlvbkhhbmRsZXI6XihOU0ludGVnZXIgcmVzdWx0KSB7Ci0gICAg
ICAgIGlmIChyZXN1bHQgPT0gTlNGaWxlSGFuZGxpbmdQYW5lbE9LQnV0dG9uKSB7Ci0gICAgICAg
ICAgICBXS011dGFibGVBcnJheVJlZiBmaWxlVVJMcyA9IFdLTXV0YWJsZUFycmF5Q3JlYXRlKCk7
Ci0KLSAgICAgICAgICAgIE5TVVJMICpuc1VSTDsKLSAgICAgICAgICAgIGZvciAobnNVUkwgaW4g
W29wZW5QYW5lbCBVUkxzXSkgewotICAgICAgICAgICAgICAgIFdLVVJMUmVmIHdrVVJMID0gV0tV
UkxDcmVhdGVXaXRoQ0ZVUkwoKENGVVJMUmVmKW5zVVJMKTsKLSAgICAgICAgICAgICAgICBXS0Fy
cmF5QXBwZW5kSXRlbShmaWxlVVJMcywgd2tVUkwpOwotICAgICAgICAgICAgICAgIFdLUmVsZWFz
ZSh3a1VSTCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIFdLT3BlblBhbmVsUmVzdWx0
TGlzdGVuZXJDaG9vc2VGaWxlcyhsaXN0ZW5lciwgZmlsZVVSTHMpOwotCi0gICAgICAgICAgICBX
S1JlbGVhc2UoZmlsZVVSTHMpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIFdLT3BlblBh
bmVsUmVzdWx0TGlzdGVuZXJDYW5jZWwobGlzdGVuZXIpOwotICAgICAgICAKLSAgICAgICAgV0tS
ZWxlYXNlKGxpc3RlbmVyKTsKKyAgICAgICAgLy8gRklYTUU6IG5lZWQgdG8gc2VuZCBPSy9DYW5j
ZWwgYmFjay4KKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW2lucHV0IHN0cmluZ1ZhbHVlXSk7
CisgICAgICAgIFthbGVydCByZWxlYXNlXTsKICAgICB9XTsKIH0KIAotLSAodm9pZClhd2FrZUZy
b21OaWIKLXsKLSAgICBfd2ViVmlldyA9IFtbV0tWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOltj
b250YWluZXJWaWV3IGJvdW5kc10gcHJvY2Vzc0dyb3VwOl9wcm9jZXNzR3JvdXAgYnJvd3NpbmdD
b250ZXh0R3JvdXA6X2Jyb3dzaW5nQ29udGV4dEdyb3VwXTsKLQotICAgIF93ZWJWaWV3LmFsbG93
c01hZ25pZmljYXRpb24gPSBZRVM7Ci0gICAgX3dlYlZpZXcuYWxsb3dzQmFja0ZvcndhcmROYXZp
Z2F0aW9uR2VzdHVyZXMgPSBZRVM7Ci0KLSAgICBbX3dlYlZpZXcgc2V0QXV0b3Jlc2l6aW5nTWFz
azooTlNWaWV3V2lkdGhTaXphYmxlIHwgTlNWaWV3SGVpZ2h0U2l6YWJsZSldOwotICAgIFtjb250
YWluZXJWaWV3IGFkZFN1YnZpZXc6X3dlYlZpZXddOwotCi0gICAgW3Byb2dyZXNzSW5kaWNhdG9y
IGJpbmQ6TlNIaWRkZW5CaW5kaW5nIHRvT2JqZWN0Ol93ZWJWaWV3LmJyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIgd2l0aEtleVBhdGg6QCJsb2FkaW5nIiBvcHRpb25zOkB7IE5TVmFsdWVUcmFuc2Zv
cm1lck5hbWVCaW5kaW5nT3B0aW9uIDogTlNOZWdhdGVCb29sZWFuVHJhbnNmb3JtZXJOYW1lIH1d
OwotICAgIFtwcm9ncmVzc0luZGljYXRvciBiaW5kOk5TVmFsdWVCaW5kaW5nIHRvT2JqZWN0Ol93
ZWJWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgd2l0aEtleVBhdGg6QCJlc3RpbWF0ZWRQ
cm9ncmVzcyIgb3B0aW9uczpuaWxdOwotCi0gICAgW193ZWJWaWV3LmJyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIgYWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAidGl0bGUiIG9wdGlvbnM6MCBj
b250ZXh0OmtleVZhbHVlT2JzZXJ2aW5nQ29udGV4dF07Ci0gICAgW193ZWJWaWV3LmJyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIgYWRkT2JzZXJ2ZXI6c2VsZiBmb3JLZXlQYXRoOkAiYWN0aXZlVVJM
IiBvcHRpb25zOjAgY29udGV4dDprZXlWYWx1ZU9ic2VydmluZ0NvbnRleHRdOwotCi0gICAgX3dl
YlZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBzZWxmOwotICAg
IF93ZWJWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIucG9saWN5RGVsZWdhdGUgPSBzZWxm
OwotICAgIF93ZWJWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIuaGlzdG9yeURlbGVnYXRl
ID0gc2VsZjsKLQotICAgIFdLUGFnZVVJQ2xpZW50VjIgdWlDbGllbnQgPSB7Ci0gICAgICAgIHsg
Miwgc2VsZiB9LAotICAgICAgICAwLCAgICAgICAgICAvKiBjcmVhdGVOZXdQYWdlX2RlcHJlY2F0
ZWRGb3JVc2VXaXRoVjAgKi8KLSAgICAgICAgc2hvd1BhZ2UsCi0gICAgICAgIGNsb3NlUGFnZSwK
LSAgICAgICAgMCwgICAgICAgICAgLyogdGFrZUZvY3VzICovCi0gICAgICAgIDAsICAgICAgICAg
IC8qIGZvY3VzICovCi0gICAgICAgIDAsICAgICAgICAgIC8qIHVuZm9jdXMgKi8KLSAgICAgICAg
cnVuSmF2YVNjcmlwdEFsZXJ0LAotICAgICAgICBydW5KYXZhU2NyaXB0Q29uZmlybSwKLSAgICAg
ICAgcnVuSmF2YVNjcmlwdFByb21wdCwKLSAgICAgICAgc2V0U3RhdHVzVGV4dCwKLSAgICAgICAg
MCwgICAgICAgICAgLyogbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRfZGVwcmVjYXRlZEZvclVzZVdp
dGhWMCAqLwotICAgICAgICAwLCAgICAgICAgICAvKiBtaXNzaW5nUGx1Z2luQnV0dG9uQ2xpY2tl
ZCAqLwotICAgICAgICAwLCAgICAgICAgICAvKiBkaWROb3RIYW5kbGVLZXlFdmVudCAqLwotICAg
ICAgICAwLCAgICAgICAgICAvKiBkaWROb3RIYW5kbGVXaGVlbEV2ZW50ICovCi0gICAgICAgIDAs
ICAgICAgICAgIC8qIHRvb2xiYXJzQXJlVmlzaWJsZSAqLwotICAgICAgICAwLCAgICAgICAgICAv
KiBzZXRUb29sYmFyc0FyZVZpc2libGUgKi8KLSAgICAgICAgMCwgICAgICAgICAgLyogbWVudUJh
cklzVmlzaWJsZSAqLwotICAgICAgICAwLCAgICAgICAgICAvKiBzZXRNZW51QmFySXNWaXNpYmxl
ICovCi0gICAgICAgIDAsICAgICAgICAgIC8qIHN0YXR1c0JhcklzVmlzaWJsZSAqLwotICAgICAg
ICAwLCAgICAgICAgICAvKiBzZXRTdGF0dXNCYXJJc1Zpc2libGUgKi8KLSAgICAgICAgMCwgICAg
ICAgICAgLyogaXNSZXNpemFibGUgKi8KLSAgICAgICAgMCwgICAgICAgICAgLyogc2V0SXNSZXNp
emFibGUgKi8KLSAgICAgICAgZ2V0V2luZG93RnJhbWUsCi0gICAgICAgIHNldFdpbmRvd0ZyYW1l
LAotICAgICAgICBydW5CZWZvcmVVbmxvYWRDb25maXJtUGFuZWwsCi0gICAgICAgIDAsICAgICAg
ICAgIC8qIGRpZERyYXcgKi8KLSAgICAgICAgMCwgICAgICAgICAgLyogcGFnZURpZFNjcm9sbCAq
LwotICAgICAgICAwLCAgICAgICAgICAvKiBleGNlZWRlZERhdGFiYXNlUXVvdGEgKi8KLSAgICAg
ICAgcnVuT3BlblBhbmVsLAotICAgICAgICAwLCAgICAgICAgICAvKiBkZWNpZGVQb2xpY3lGb3JH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0ICovCi0gICAgICAgIDAsIC8vIGhlYWRlckhlaWdo
dAotICAgICAgICAwLCAvLyBmb290ZXJIZWlnaHQKLSAgICAgICAgMCwgLy8gZHJhd0hlYWRlcgot
ICAgICAgICAwLCAvLyBkcmF3Rm9vdGVyCi0gICAgICAgIDAsIC8vIHByaW50RnJhbWUKLSAgICAg
ICAgMCwgLy8gc2hvd01vZGFsCi0gICAgICAgIDAsIC8vIGRpZENvbXBsZXRlUnViYmVyQmFuZEZv
ck1haW5GcmFtZQotICAgICAgICAwLCAvLyBzYXZlRGF0YVRvRmlsZUluRG93bmxvYWRzRm9sZGVy
Ci0gICAgICAgIDAsIC8vIHNob3VsZEludGVycnVwdEphdmFTY3JpcHQKLSAgICAgICAgY3JlYXRl
TmV3UGFnZSwKLSAgICAgICAgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnQsCi0gICAgICAgIDAsIC8v
IGRlY2lkZVBvbGljeUZvck5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0Ci0gICAgICAgIDAs
IC8vIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZF9kZXByZWNhdGVkRm9yVXNlV2l0aFYx
Ci0gICAgICAgIDAsIC8vIHNob3dDb2xvclBpY2tlcgotICAgICAgICAwLCAvLyBoaWRlQ29sb3JQ
aWNrZXIKLSAgICAgICAgMCwgLy8gdW5hdmFpbGFibGVQbHVnaW5CdXR0b25DbGlja2VkCi0gICAg
fTsKLSAgICBXS1BhZ2VTZXRQYWdlVUlDbGllbnQoX3dlYlZpZXcucGFnZVJlZiwgJnVpQ2xpZW50
LmJhc2UpOwotfQotCiAtICh2b2lkKXVwZGF0ZVRleHRGaWVsZEZyb21VUkw6KE5TVVJMICopVVJM
CiB7CiAgICAgaWYgKCFVUkwpCkBAIC02MTIsMTAxICszNTgsNDcgQEAgLSAoSUJBY3Rpb24pcGVy
Zm9ybUZpbmRQYW5lbEFjdGlvbjooaWQpc2VuZGVyCiAKIC0gKElCQWN0aW9uKWZpbmQ6KGlkKXNl
bmRlcgogewotICAgIFdLU3RyaW5nUmVmIHN0cmluZyA9IFdLU3RyaW5nQ3JlYXRlV2l0aENGU3Ry
aW5nKChDRlN0cmluZ1JlZilbc2VuZGVyIHN0cmluZ1ZhbHVlXSk7Ci0KLSAgICBXS1BhZ2VGaW5k
U3RyaW5nKF93ZWJWaWV3LnBhZ2VSZWYsIHN0cmluZywga1dLRmluZE9wdGlvbnNDYXNlSW5zZW5z
aXRpdmUgfCBrV0tGaW5kT3B0aW9uc1dyYXBBcm91bmQgfCBrV0tGaW5kT3B0aW9uc1Nob3dGaW5k
SW5kaWNhdG9yIHwga1dLRmluZE9wdGlvbnNTaG93T3ZlcmxheSwgMTAwKTsKLX0KLQotI3ByYWdt
YSBtYXJrIFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlCi0KLS0gKHZvaWQpYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlckRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkOihXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgKilzZW5kZXIKLXsKLSAgICBMT0coQCJkaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZCIpOwotfQotCi0tICh2b2lkKWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXJEaWRSZWNlaXZlU2Vy
dmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWQ6KFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxl
ciAqKXNlbmRlcgotewotICAgIExPRyhAImRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zp
c2lvbmFsTG9hZCIpOwotfQotCi0tICh2b2lkKWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI6KFdL
QnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKXNlbmRlciBkaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
V2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKLXsKLSAgICBMT0coQCJkaWRGYWlsUHJvdmlzaW9u
YWxMb2FkV2l0aEVycm9yOiAlQCIsIGVycm9yKTsKLX0KLQotLSAodm9pZClicm93c2luZ0NvbnRl
eHRDb250cm9sbGVyRGlkQ29tbWl0TG9hZDooV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICop
c2VuZGVyCi17Ci0gICAgTE9HKEAiZGlkQ29tbWl0TG9hZCIpOwotfQotCi0tICh2b2lkKWJyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXJEaWRGaW5pc2hMb2FkOihXS0Jyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIgKilzZW5kZXIKLXsKLSAgICBMT0coQCJkaWRGaW5pc2hMb2FkIik7Ci19Ci0KLS0gKHZv
aWQpYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcjooV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
ICopc2VuZGVyIGRpZEZhaWxMb2FkV2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKLXsKLSAgICBM
T0coQCJkaWRGYWlsTG9hZFdpdGhFcnJvcjogJUAiLCBlcnJvcik7Ci19Ci0KLS0gKHZvaWQpYnJv
d3NpbmdDb250ZXh0Q29udHJvbGxlckRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdDooV0tCcm93c2lu
Z0NvbnRleHRDb250cm9sbGVyICopc2VuZGVyIGFkZGVkSXRlbTooV0tCYWNrRm9yd2FyZExpc3RJ
dGVtICopYWRkZWRJdGVtIHJlbW92ZWRJdGVtczooTlNBcnJheSAqKXJlbW92ZWRJdGVtcwotewot
ICAgIFtzZWxmIHZhbGlkYXRlVG9vbGJhcl07CisvLyAgICBXS1N0cmluZ1JlZiBzdHJpbmcgPSBX
S1N0cmluZ0NyZWF0ZVdpdGhDRlN0cmluZygoQ0ZTdHJpbmdSZWYpW3NlbmRlciBzdHJpbmdWYWx1
ZV0pOworLy8KKy8vICAgIFdLUGFnZUZpbmRTdHJpbmcoX3dlYlZpZXcucGFnZVJlZiwgc3RyaW5n
LCBrV0tGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZSB8IGtXS0ZpbmRPcHRpb25zV3JhcEFyb3Vu
ZCB8IGtXS0ZpbmRPcHRpb25zU2hvd0ZpbmRJbmRpY2F0b3IgfCBrV0tGaW5kT3B0aW9uc1Nob3dP
dmVybGF5LCAxMDApOwogfQogCi0jcHJhZ21hIG1hcmsgV0tCcm93c2luZ0NvbnRleHRMb2FkRGVs
ZWdhdGVQcml2YXRlCisjcHJhZ21hIG1hcmsgV0tOYXZpZ2F0aW9uRGVsZWdhdGUKIAotLSAoQk9P
TClicm93c2luZ0NvbnRleHRDb250cm9sbGVyOihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIg
KilzZW5kZXIgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZTooTlNVUkxQcm90
ZWN0aW9uU3BhY2UgKilwcm90ZWN0aW9uU3BhY2UKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2U6KFdLTmF2aWdhdGlv
blJlc3BvbnNlICopbmF2aWdhdGlvblJlc3BvbnNlIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXiko
V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lEZWNpc2lvbikpZGVjaXNpb25IYW5kbGVyCiB7Ci0g
ICAgTE9HKEAiY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZTogJUAiLCBwcm90
ZWN0aW9uU3BhY2UpOwotICAgIHJldHVybiBZRVM7CisgICAgTE9HKEAiZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvblJlc3BvbnNlIik7CisgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5RGVjaXNpb25BbGxvdyk7CiB9CiAKLS0gKHZvaWQpYnJvd3NpbmdDb250ZXh0
Q29udHJvbGxlcjooV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICopc2VuZGVyIGRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAq
KWNoYWxsZW5nZQorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFN0YXJ0
UHJvdmlzaW9uYWxOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCiB7Ci0gICAg
TE9HKEAiZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOiAlQCIsIGNoYWxsZW5nZSk7
Ci0gICAgW2NoYWxsZW5nZS5zZW5kZXIgY29udGludWVXaXRob3V0Q3JlZGVudGlhbEZvckF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOmNoYWxsZW5nZV07CisgICAgTE9HKEAiZGlkU3RhcnRQcm92aXNp
b25hbE5hdmlnYXRpb24iKTsKIH0KIAotI3ByYWdtYSBtYXJrIFdLQnJvd3NpbmdDb250ZXh0UG9s
aWN5RGVsZWdhdGUKLQotLSAodm9pZClicm93c2luZ0NvbnRleHRDb250cm9sbGVyOihXS0Jyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIgKilicm93c2luZ0NvbnRleHQgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbjooTlNEaWN0aW9uYXJ5ICopYWN0aW9uSW5mb3JtYXRpb24gZGVjaXNpb25I
YW5kbGVyOihXS1BvbGljeURlY2lzaW9uSGFuZGxlcilkZWNpc2lvbkhhbmRsZXIKKy0gKHZvaWQp
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQ
cm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KIHsKLSAgICBM
T0coQCJkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uIik7Ci0gICAgZGVjaXNpb25IYW5k
bGVyKFdLUG9saWN5RGVjaXNpb25BbGxvdyk7CisgICAgTE9HKEAiZGlkUmVjZWl2ZVNlcnZlclJl
ZGlyZWN0Rm9yUHJvdmlzaW9uYWxOYXZpZ2F0aW9uIik7CiB9CiAKLS0gKHZvaWQpYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlcjooV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICopYnJvd3NpbmdD
b250ZXh0IGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbjooTlNEaWN0aW9uYXJ5ICopYWN0
aW9uSW5mb3JtYXRpb24gZGVjaXNpb25IYW5kbGVyOihXS1BvbGljeURlY2lzaW9uSGFuZGxlcilk
ZWNpc2lvbkhhbmRsZXIKLXsKLSAgICBMT0coQCJkZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rp
b24iKTsKLSAgICBkZWNpc2lvbkhhbmRsZXIoV0tQb2xpY3lEZWNpc2lvbkFsbG93KTsKLX0KLQot
LSAodm9pZClicm93c2luZ0NvbnRleHRDb250cm9sbGVyOihXS0Jyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIgKilicm93c2luZ0NvbnRleHQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VBY3Rpb246KE5T
RGljdGlvbmFyeSAqKWFjdGlvbkluZm9ybWF0aW9uIGRlY2lzaW9uSGFuZGxlcjooV0tQb2xpY3lE
ZWNpc2lvbkhhbmRsZXIpZGVjaXNpb25IYW5kbGVyCi17Ci0gICAgZGVjaXNpb25IYW5kbGVyKFdL
UG9saWN5RGVjaXNpb25BbGxvdyk7Ci19Ci0KLSNwcmFnbWEgbWFyayBXS0Jyb3dzaW5nQ29udGV4
dEhpc3RvcnlEZWxlZ2F0ZQotCi0tICh2b2lkKWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI6KFdL
QnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgZGlk
TmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGE6KFdLTmF2aWdhdGlvbkRhdGEgKiluYXZpZ2F0aW9u
RGF0YQorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZhaWxQcm92aXNp
b25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24gd2l0aEVycm9yOihOU0Vy
cm9yICopZXJyb3IKIHsKLSAgICBMT0coQCJXS0Jyb3dzaW5nQ29udGV4dEhpc3RvcnlEZWxlZ2F0
ZSAtIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhIC0gdGl0bGU6ICVAIC0gdXJsOiAlQCIs
IG5hdmlnYXRpb25EYXRhLnRpdGxlLCBuYXZpZ2F0aW9uRGF0YS5vcmlnaW5hbFJlcXVlc3QuVVJM
KTsKKyAgICBMT0coQCJkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOiAlQCIsIGVycm9yKTsK
IH0KIAotLSAodm9pZClicm93c2luZ0NvbnRleHRDb250cm9sbGVyOihXS0Jyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgKilicm93c2luZ0NvbnRleHRDb250cm9sbGVyIGRpZFBlcmZvcm1DbGllbnRS
ZWRpcmVjdEZyb21VUkw6KE5TVVJMICopc291cmNlVVJMIHRvVVJMOihOU1VSTCAqKWRlc3RpbmF0
aW9uVVJMCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkQ29tbWl0TmF2
aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgogewotICAgIExPRyhAIldLQnJvd3Np
bmdDb250ZXh0SGlzdG9yeURlbGVnYXRlIC0gZGlkUGVyZm9ybUNsaWVudFJlZGlyZWN0IC0gZnJv
bVVSTDogJUAgLSB0b1VSTDogJUAiLCBzb3VyY2VVUkwsIGRlc3RpbmF0aW9uVVJMKTsKKyAgICBM
T0coQCJkaWRDb21taXROYXZpZ2F0aW9uOiAlQCIsIGVycm9yKTsKIH0KIAotLSAodm9pZClicm93
c2luZ0NvbnRleHRDb250cm9sbGVyOihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKilicm93
c2luZ0NvbnRleHRDb250cm9sbGVyIGRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdEZyb21VUkw6KE5T
VVJMICopc291cmNlVVJMIHRvVVJMOihOU1VSTCAqKWRlc3RpbmF0aW9uVVJMCistICh2b2lkKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTG9hZGluZ05hdmlnYXRpb246KFdL
TmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KIHsKLSAgICBMT0coQCJXS0Jyb3dzaW5nQ29udGV4dEhp
c3RvcnlEZWxlZ2F0ZSAtIGRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdCAtIGZyb21VUkw6ICVAIC0g
dG9VUkw6ICVAIiwgc291cmNlVVJMLCBkZXN0aW5hdGlvblVSTCk7CisgICAgTE9HKEAiZGlkRmlu
aXNoTG9hZGluZ05hdmlnYXRpb24iKTsKIH0KIAotLSAodm9pZClicm93c2luZ0NvbnRleHRDb250
cm9sbGVyOihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKilicm93c2luZ0NvbnRleHRDb250
cm9sbGVyIGRpZFVwZGF0ZUhpc3RvcnlUaXRsZTooTlNTdHJpbmcgKil0aXRsZSBmb3JVUkw6KE5T
VVJMICopVVJMCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmFpbE5h
dmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24gd2l0aEVycm9yOihOU0Vycm9yICop
ZXJyb3IKIHsKLSAgICBMT0coQCJicm93c2luZ0NvbnRleHRDb250cm9sbGVyIC0gZGlkVXBkYXRl
SGlzdG9yeVRpdGxlIC0gdGl0bGU6ICVAIC0gVVJMOiAlQCIsIHRpdGxlLCBVUkwpOworICAgIExP
RyhAImRpZEZhaWxOYXZpZ2F0aW9uOiAlQCIsIGVycm9yKTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0
IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvUGxhdGZvcm1XZWJWaWV3LmgKaW5kZXggODNkOTUyMTU3YTJkOGJlNTE0Mjgz
ZTBmZmUxMzhmMGQ2MTEwY2RkMy4uZDM4YzZkYmRjNTYyZWY0YmU4MDVjNGI0Y2Y3NWEyNWMxMmZk
ZTEyOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcu
aAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1BsYXRmb3JtV2ViVmlldy5oCkBAIC0zMCwx
MyArMzAsMTMgQEAKIAogI2lmIGRlZmluZWQoX19BUFBMRV9fKSAmJiBfX0FQUExFX18KICNpZmRl
ZiBfX09CSkNfXwotQGNsYXNzIFdLVmlldzsKK0BjbGFzcyBXS1dlYlZpZXc7CiBAY2xhc3MgV2Vi
S2l0VGVzdFJ1bm5lcldpbmRvdzsKICNlbHNlCi1jbGFzcyBXS1ZpZXc7CitjbGFzcyBXS1dlYlZp
ZXc7CiBjbGFzcyBXZWJLaXRUZXN0UnVubmVyV2luZG93OwogI2VuZGlmCi10eXBlZGVmIFdLVmll
dyogUGxhdGZvcm1XS1ZpZXc7Cit0eXBlZGVmIFdLV2ViVmlldyogUGxhdGZvcm1XS1ZpZXc7CiB0
eXBlZGVmIFdlYktpdFRlc3RSdW5uZXJXaW5kb3cqIFBsYXRmb3JtV2luZG93OwogI2VsaWYgZGVm
aW5lZChCVUlMRElOR19HVEtfXykKIHR5cGVkZWYgc3RydWN0IF9HdGtXaWRnZXQgR3RrV2lkZ2V0
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3
SU9TLm1tIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9pb3MvUGxhdGZvcm1XZWJWaWV3SU9TLm1t
CmluZGV4IDAyOWY3YTRkNDYxMjUwZmY5ODE1YjA5NTNjYmFiYjZkNmJhZjU2ZTAuLmExY2FkNjI0
NWY4ZDEzN2NjY2FjYzU5ZGI1ZGRmYjhkNjM0ZDhmNmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvaW9zL1BsYXRmb3JtV2ViVmlld0lPUy5tbQorKysgYi9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW0KQEAgLTM5LDcgKzM5LDcgQEAgQGlu
dGVyZmFjZSBXZWJLaXRUZXN0UnVubmVyV2luZG93IDogVUlXaW5kb3cgewogQHByb3BlcnR5IChu
b25hdG9taWMsIGFzc2lnbikgV1RSOjpQbGF0Zm9ybVdlYlZpZXcqIHBsYXRmb3JtV2ViVmlldzsK
IEBlbmQKIAotQGludGVyZmFjZSBUZXN0UnVubmVyV0tWaWV3IDogV0tWaWV3IHsKK0BpbnRlcmZh
Y2UgVGVzdFJ1bm5lcldLVmlldyA6IFdLV2ViVmlldyB7CiAgICAgQk9PTCBfdXNlVGlsZWREcmF3
aW5nOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9y
bVdlYlZpZXdNYWMubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL21hYy9QbGF0Zm9ybVdlYlZp
ZXdNYWMubW0KaW5kZXggNmI3NzMxZGFhMDE5NmI2MTI5MDQwMmNhOWFhZWFlYTU1NWQwNmYyYS4u
OTlkZGU3ZDcwYmE1YWRiODg5YTk4N2NlY2ViNmZhNjRmMmRkMDdhMSAxMDA2NDQKLS0tIGEvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9tYWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tCisrKyBiL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvbWFjL1BsYXRmb3JtV2ViVmlld01hYy5tbQpAQCAtMzAsNyArMzAs
NyBAQAogI2ltcG9ydCAiV2ViS2l0VGVzdFJ1bm5lckRyYWdnaW5nSW5mby5oIgogI2ltcG9ydCA8
V2ViS2l0Mi9XS0ltYWdlQ0cuaD4KICNpbXBvcnQgPFdlYktpdDIvV0tQcmVmZXJlbmNlc1ByaXZh
dGUuaD4KLSNpbXBvcnQgPFdlYktpdDIvV0tWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0
Mi9XS1dlYlZpZXcuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdUUjsKQEAgLTQ2LDcgKzQ2LDcgQEAgQGludGVyZmFjZSBXZWJLaXRUZXN0UnVubmVyV2lu
ZG93IDogTlNXaW5kb3cgewogQHByb3BlcnR5IChub25hdG9taWMsIGFzc2lnbikgUGxhdGZvcm1X
ZWJWaWV3KiBwbGF0Zm9ybVdlYlZpZXc7CiBAZW5kCiAKLUBpbnRlcmZhY2UgVGVzdFJ1bm5lcldL
VmlldyA6IFdLVmlldyB7CitAaW50ZXJmYWNlIFRlc3RSdW5uZXJXS1ZpZXcgOiBXS1dlYlZpZXcg
ewogICAgIEJPT0wgX3VzZVRocmVhZGVkU2Nyb2xsaW5nOwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>226537</attachid>
            <date>2014-03-12 11:18:45 -0700</date>
            <delta_ts>2014-03-13 12:14:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-130061-20140312111821.patch</filename>
            <type>text/plain</type>
            <size>36086</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY1NDUyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWU2MTJjZTY0NGUzOWI2ZjhiMzM2YWRjNGY0ZTdmNTU1
MzU0NmQwMC4uMzcyYWZlODQxZTYwNzE4N2MzYTIwYmI1NDJkNjlhYWFiNWZhNTNkMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1
IEBACisyMDE0LTAzLTEwICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgor
CisgICAgICAgIENvbnZlcnQgTWluaUJyb3dzZXIgdG8gdXNlIFdLV2ViVmlldyBBUEkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMDA2MQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgQ29udmVy
dCB0aGUgTWluaUJyb3dzZXIgV0syIHdpbmRvdyB0byB1c2UgV2ViS2l0MiBBUEkgYXMgbXVjaAor
ICAgICAgICBhcyBwb3NzaWJsZS4KKyAgICAgICAgCisgICAgICAgIFNvbWUgZnVuY3Rpb25hbGl0
eSB3YXMgcmVtb3ZlZCB0ZW1wb3JhcmlseToKKyAgICAgICAgICAgIC0gdGV4dCB6b29tLCBwYWdl
IHpvb20KKyAgICAgICAgICAgIC0gcmVsb2FkCisgICAgICAgICAgICAtIHBhZ2luYXRpb24gbW9k
ZQorICAgICAgICAgICAgLSB0cmFuc3BhcmVudCB3aW5kb3cKKyAgICAgICAgICAgIC0gZHVtcGlu
ZyBzb3VyY2UKKyAgICAgICAgICAgIC0gd2luZG93Lm9wZW4gc3VwcG9ydAorICAgICAgICAgICAg
LSBiZWZvcmVVbmxvYWQgcGFuZWwKKyAgICAgICAgICAgIC0gZmluZCBpbiBwYWdlCisKKyAgICAg
ICAgKiBNaW5pQnJvd3Nlci9tYWMvQXBwRGVsZWdhdGUuaDoKKyAgICAgICAgKiBNaW5pQnJvd3Nl
ci9tYWMvQXBwRGVsZWdhdGUubToKKyAgICAgICAgKC1bQnJvd3NlckFwcERlbGVnYXRlIGluaXRd
KToKKyAgICAgICAgKC1bQnJvd3NlckFwcERlbGVnYXRlIG5ld1dpbmRvdzpdKToKKyAgICAgICAg
KC1bQnJvd3NlckFwcERlbGVnYXRlIGFwcGxpY2F0aW9uV2lsbFRlcm1pbmF0ZTpdKToKKyAgICAg
ICAgKC1bQnJvd3NlckFwcERlbGVnYXRlIG9wZW5Eb2N1bWVudDpdKToKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubToKKyAgICAgICAgKC1bV0sy
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgYXdha2VGcm9tTmliXSk6CisgICAgICAgICgtW1dLMkJy
b3dzZXJXaW5kb3dDb250cm9sbGVyIGRlYWxsb2NdKToKKyAgICAgICAgKC1bV0syQnJvd3Nlcldp
bmRvd0NvbnRyb2xsZXIgZmV0Y2g6XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250
cm9sbGVyIHZhbGlkYXRlTWVudUl0ZW06XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dD
b250cm9sbGVyIHJlbG9hZDpdKToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xs
ZXIgZ29CYWNrOl0pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBnb0Zv
cndhcmQ6XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHRvZ2dsZVpv
b21Nb2RlOl0pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciByZXNldFpv
b206XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGNhblJlc2V0Wm9v
bV0pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBkdW1wU291cmNlVG9D
b25zb2xlOl0pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciB0b2dnbGVQ
YWdpbmF0aW9uTW9kZTpdKToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIg
dmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbTpdKToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIgd2luZG93U2hvdWxkQ2xvc2U6XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJX
aW5kb3dDb250cm9sbGVyIGFwcGxpY2F0aW9uVGVybWluYXRpbmddKToKKyAgICAgICAgKC1bV0sy
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgY3VycmVudFpvb21GYWN0b3JdKToKKyAgICAgICAgKC1b
V0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgc2V0Q3VycmVudFpvb21GYWN0b3I6XSk6CisgICAg
ICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHRvZ2dsZVRyYW5zcGFyZW50V2luZG93
Ol0pOgorICAgICAgICAoLVtXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBvYnNlcnZlVmFsdWVG
b3JLZXlQYXRoOm9mT2JqZWN0OmNoYW5nZTpjb250ZXh0Ol0pOgorICAgICAgICAoLVtXSzJCcm93
c2VyV2luZG93Q29udHJvbGxlciB3ZWJWaWV3OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1l
c3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1b
V0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgd2ViVmlldzpydW5KYXZhU2NyaXB0Q29uZmlybVBh
bmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgd2ViVmlldzpydW5KYXZhU2NyaXB0
VGV4dElucHV0UGFuZWxXaXRoUHJvbXB0OmRlZmF1bHRUZXh0OmluaXRpYXRlZEJ5RnJhbWU6Y29t
cGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVy
IGZpbmQ6XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHdlYlZpZXc6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgd2ViVmlldzpkaWRTdGFydFByb3Zp
c2lvbmFsTmF2aWdhdGlvbjpdKToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xs
ZXIgd2ViVmlldzpkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5hdmlnYXRp
b246XSk6CisgICAgICAgICgtW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIHdlYlZpZXc6ZGlk
RmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjp3aXRoRXJyb3I6XSk6CisgICAgICAgICgtW1dLMkJy
b3dzZXJXaW5kb3dDb250cm9sbGVyIHdlYlZpZXc6ZGlkQ29tbWl0TmF2aWdhdGlvbjpdKToKKyAg
ICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgd2ViVmlldzpkaWRGaW5pc2hMb2Fk
aW5nTmF2aWdhdGlvbjpdKToKKyAgICAgICAgKC1bV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIg
d2ViVmlldzpkaWRGYWlsTmF2aWdhdGlvbjp3aXRoRXJyb3I6XSk6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9QbGF0Zm9ybVdlYlZpZXcuaDoKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L2lvcy9QbGF0Zm9ybVdlYlZpZXdJT1MubW06CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9t
YWMvUGxhdGZvcm1XZWJWaWV3TWFjLm1tOgorCiAyMDE0LTAzLTExICBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBUaGUgamhidWlsZCBlbnZp
cm9ubWVudCBzaG91bGQgc2V0IENNQUtFX1BSRUZJWF9QQVRIIGFuZCBDTUFLRV9MSUJSQVJZX1BB
VEgKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9BcHBEZWxlZ2F0ZS5oIGIvVG9v
bHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLmgKaW5kZXggN2QxNGE1MWFjMWU0NmVkNDMy
MWZmMDU4NmVlNzAyODYyMzcyMzBjYy4uODMzN2NiNWM0MmVlZGYyMmJjMDY0OGRkZGFiNjU4Mjg5
MmNjNjdlYSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLmgK
KysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLmgKQEAgLTIzLDEzICsyMyw3
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2ltcG9ydCA8
V2ViS2l0Mi9XZWJLaXQyLmg+Ci0KIEBpbnRlcmZhY2UgQnJvd3NlckFwcERlbGVnYXRlIDogTlNP
YmplY3QgPE5TQXBwbGljYXRpb25EZWxlZ2F0ZT4gewotI2lmIFdLX0FQSV9FTkFCTEVECi0gICAg
V0tQcm9jZXNzR3JvdXAgKl9wcm9jZXNzR3JvdXA7Ci0gICAgV0tCcm93c2luZ0NvbnRleHRHcm91
cCAqX2Jyb3dzaW5nQ29udGV4dEdyb3VwOwotI2VuZGlmCiAgICAgTlNNdXRhYmxlU2V0ICpfYnJv
d3NlcldpbmRvd3M7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL21hYy9BcHBE
ZWxlZ2F0ZS5tIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0KaW5kZXggNWQ4
MzdmY2RkOTE4YWNmNjVjZTY2Y2E5ZWM5MWNkNWE3OTcwNjI3OS4uMjZhMDhlODliNTAyNWEzNzg2
ZjY2MDg5Y2JmZDgzNDMzOThmY2YwYSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvbWFj
L0FwcERlbGVnYXRlLm0KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvbWFjL0FwcERlbGVnYXRlLm0K
QEAgLTI5LDggKzI5LDYgQEAKICNpbXBvcnQgIldLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyLmgi
CiAjaW1wb3J0IDxXZWJLaXQvV2ViSGlzdG9yeS5oPgogI2ltcG9ydCA8V2ViS2l0Mi9XZWJLaXQy
Lmg+Ci0jaW1wb3J0IDxXZWJLaXQyL1dLU3RyaW5nQ0YuaD4KLSNpbXBvcnQgPFdlYktpdDIvV0tV
UkxDRi5oPgogCiBzdGF0aWMgTlNTdHJpbmcgKmRlZmF1bHRVUkwgPSBAImh0dHA6Ly93d3cud2Vi
a2l0Lm9yZy8iOwogCkBAIC00NSwxMSArNDMsNiBAQCAtIChpZClpbml0CiB7CiAgICAgc2VsZiA9
IFtzdXBlciBpbml0XTsKICAgICBpZiAoc2VsZikgewotI2lmIFdLX0FQSV9FTkFCTEVECi0gICAg
ICAgIE5TVVJMICp1cmwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltbTlNCdW5kbGUgbWFpbkJ1
bmRsZV0gcGF0aEZvckF1eGlsaWFyeUV4ZWN1dGFibGU6QCJNaW5pQnJvd3Nlci53a2J1bmRsZSJd
XTsKLSAgICAgICAgX3Byb2Nlc3NHcm91cCA9IFtbV0tQcm9jZXNzR3JvdXAgYWxsb2NdIGluaXRX
aXRoSW5qZWN0ZWRCdW5kbGVVUkw6dXJsXTsKLSAgICAgICAgX2Jyb3dzaW5nQ29udGV4dEdyb3Vw
ID0gW1tXS0Jyb3dzaW5nQ29udGV4dEdyb3VwIGFsbG9jXSBpbml0V2l0aElkZW50aWZpZXI6QCJN
aW5pQnJvd3NlciJdOwotI2VuZGlmCiAgICAgICAgIF9icm93c2VyV2luZG93cyA9IFtbTlNNdXRh
YmxlU2V0IGFsbG9jXSBpbml0XTsKICAgICB9CiAKQEAgLTY0LDkgKzU3LDggQEAgLSAoSUJBY3Rp
b24pbmV3V2luZG93OihpZClzZW5kZXIKICAgICAgICAgY29udHJvbGxlciA9IFtbV0sxQnJvd3Nl
cldpbmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoV2luZG93TmliTmFtZTpAIkJyb3dzZXJX
aW5kb3ciXTsKICNpZiBXS19BUElfRU5BQkxFRAogICAgIGVsc2UgaWYgKFtzZW5kZXIgdGFnXSA9
PSBXZWJLaXQyTmV3V2luZG93VGFnKQotICAgICAgICBjb250cm9sbGVyID0gW1tXSzJCcm93c2Vy
V2luZG93Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhQcm9jZXNzR3JvdXA6X3Byb2Nlc3NHcm91
cCBicm93c2luZ0NvbnRleHRHcm91cDpfYnJvd3NpbmdDb250ZXh0R3JvdXBdOworICAgICAgICBj
b250cm9sbGVyID0gW1tXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhX
aW5kb3dOaWJOYW1lOkAiQnJvd3NlcldpbmRvdyJdOwogI2VuZGlmCi0KICAgICBpZiAoIWNvbnRy
b2xsZXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtOTgsMTQgKzkwLDYgQEAgLSAodm9pZClhcHBs
aWNhdGlvbldpbGxUZXJtaW5hdGU6KE5TTm90aWZpY2F0aW9uICopbm90aWZpY2F0aW9uCiAgICAg
ICAgIEJyb3dzZXJXaW5kb3dDb250cm9sbGVyICpjb250cm9sbGVyID0gKEJyb3dzZXJXaW5kb3dD
b250cm9sbGVyICopZGVsZWdhdGU7CiAgICAgICAgIFtjb250cm9sbGVyIGFwcGxpY2F0aW9uVGVy
bWluYXRpbmddOwogICAgIH0KLQotI2lmIFdLX0FQSV9FTkFCTEVECi0gICAgW19wcm9jZXNzR3Jv
dXAgcmVsZWFzZV07Ci0gICAgX3Byb2Nlc3NHcm91cCA9IG5pbDsKLQotICAgIFtfYnJvd3NpbmdD
b250ZXh0R3JvdXAgcmVsZWFzZV07Ci0gICAgX2Jyb3dzaW5nQ29udGV4dEdyb3VwID0gbmlsOwot
I2VuZGlmCiB9CiAKIC0gKEJyb3dzZXJXaW5kb3dDb250cm9sbGVyICopZnJvbnRtb3N0QnJvd3Nl
cldpbmRvd0NvbnRyb2xsZXIKQEAgLTE0MCwyMCArMTI0LDE5IEBAIC0gKElCQWN0aW9uKW9wZW5E
b2N1bWVudDooaWQpc2VuZGVyCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSNpZiBXS19BUElf
RU5BQkxFRAogICAgIE5TT3BlblBhbmVsICpvcGVuUGFuZWwgPSBbTlNPcGVuUGFuZWwgb3BlblBh
bmVsXTsKICAgICBbb3BlblBhbmVsIGJlZ2luV2l0aENvbXBsZXRpb25IYW5kbGVyOl4oTlNJbnRl
Z2VyIHJlc3VsdCkgewogICAgICAgICBpZiAocmVzdWx0ICE9IE5TT0tCdXR0b24pCiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgLy8gRklYTUU6IGFkZCBhIHdheSB0byBvcGVuIGluIFdL
MSBhbHNvLgotICAgICAgICBCcm93c2VyV2luZG93Q29udHJvbGxlciAqbmV3QnJvd3NlcldpbmRv
d0NvbnRyb2xsZXIgPSBbW1dLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyIGFsbG9jXSBpbml0V2l0
aFByb2Nlc3NHcm91cDpfcHJvY2Vzc0dyb3VwIGJyb3dzaW5nQ29udGV4dEdyb3VwOl9icm93c2lu
Z0NvbnRleHRHcm91cF07CisgICAgICAgIAorICAgICAgICBCcm93c2VyV2luZG93Q29udHJvbGxl
ciAqbmV3QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgPSBbW1dLMkJyb3dzZXJXaW5kb3dDb250cm9s
bGVyIGFsbG9jXSBpbml0V2l0aFdpbmRvd05pYk5hbWU6QCJCcm93c2VyV2luZG93Il07CiAgICAg
ICAgIFtuZXdCcm93c2VyV2luZG93Q29udHJvbGxlci53aW5kb3cgbWFrZUtleUFuZE9yZGVyRnJv
bnQ6c2VsZl07CiAKICAgICAgICAgTlNVUkwgKnVybCA9IFtvcGVuUGFuZWwuVVJMcyBvYmplY3RB
dEluZGV4OjBdOwogICAgICAgICBbbmV3QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgbG9hZFVSTFN0
cmluZzpbdXJsIGFic29sdXRlU3RyaW5nXV07CiAgICAgfV07Ci0jZW5kaWYgLy8gV0tfQVBJX0VO
QUJMRUQKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJy
b3dzZXJXaW5kb3dDb250cm9sbGVyLmggYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3Nl
cldpbmRvd0NvbnRyb2xsZXIuaAppbmRleCBiYzdlNGUyYWVkNGU5MWI1ODc5YzU4MjFiMzk1NzY3
NDBlMjg5MWU2Li5mZmExZDFlZTEzMzViMzE5NDgxYTJjZTBjZjYwOTFkYTgzNjJiMGQ1IDEwMDY0
NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIu
aAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIu
aApAQCAtMjgsOSArMjgsNiBAQAogI2lmIFdLX0FQSV9FTkFCTEVECiAKIEBpbnRlcmZhY2UgV0sy
QnJvd3NlcldpbmRvd0NvbnRyb2xsZXIgOiBCcm93c2VyV2luZG93Q29udHJvbGxlciA8QnJvd3Nl
ckNvbnRyb2xsZXI+Ci0KLS0gKGlkKWluaXRXaXRoUHJvY2Vzc0dyb3VwOihXS1Byb2Nlc3NHcm91
cCAqKXByb2Nlc3NHcm91cCBicm93c2luZ0NvbnRleHRHcm91cDooV0tCcm93c2luZ0NvbnRleHRH
cm91cCAqKWJyb3dzaW5nQ29udGV4dEdyb3VwOwotCiBAZW5kCiAKICNlbmRpZiAvLyBXS19BUElf
RU5BQkxFRApkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvbWFjL1dLMkJyb3dzZXJXaW5k
b3dDb250cm9sbGVyLm0gYi9Ub29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0Nv
bnRyb2xsZXIubQppbmRleCA4NjdhYmQ0ZDQyYmM1NWUyZGU5ZTcyNTdlYzk0ZjcwMGFlMmIzODg0
Li43NGY1ODU1ZjRmMTZkM2Y1ZGE0NmFkZjY5NGI3ZmM1MTk5Mjc5MmY0IDEwMDY0NAotLS0gYS9U
b29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQorKysgYi9U
b29scy9NaW5pQnJvd3Nlci9tYWMvV0syQnJvd3NlcldpbmRvd0NvbnRyb2xsZXIubQpAQCAtMjgs
MzggKzI4LDM4IEBACiAjaWYgV0tfQVBJX0VOQUJMRUQKIAogI2ltcG9ydCAiQXBwRGVsZWdhdGUu
aCIKLSNpbXBvcnQgPFdlYktpdDIvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5o
PgotI2ltcG9ydCA8V2ViS2l0Mi9XS0Jyb3dzaW5nQ29udGV4dEhpc3RvcnlEZWxlZ2F0ZS5oPgot
I2ltcG9ydCA8V2ViS2l0Mi9XS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZVByaXZhdGUuaD4K
LSNpbXBvcnQgPFdlYktpdDIvV0tCcm93c2luZ0NvbnRleHRQb2xpY3lEZWxlZ2F0ZS5oPgotI2lt
cG9ydCA8V2ViS2l0Mi9XS05hdmlnYXRpb25EYXRhLmg+Ci0jaW1wb3J0IDxXZWJLaXQyL1dLU3Ry
aW5nQ0YuaD4KLSNpbXBvcnQgPFdlYktpdDIvV0tVUkxDRi5oPgotI2ltcG9ydCA8V2ViS2l0Mi9X
S1ZpZXcuaD4KLSNpbXBvcnQgPFdlYktpdDIvV0tWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2Vi
S2l0Mi9XS0ZyYW1lSW5mby5oPgorI2ltcG9ydCA8V2ViS2l0Mi9XS1dlYlZpZXcuaD4KKyNpbXBv
cnQgPFdlYktpdDIvV0tOYXZpZ2F0aW9uRGVsZWdhdGUuaD4KKyNpbXBvcnQgPFdlYktpdDIvV0tV
SURlbGVnYXRlLmg+CiAKIHN0YXRpYyB2b2lkKiBrZXlWYWx1ZU9ic2VydmluZ0NvbnRleHQgPSAm
a2V5VmFsdWVPYnNlcnZpbmdDb250ZXh0Owogc3RhdGljIE5TU3RyaW5nICogY29uc3QgV2ViS2l0
MlVzZVJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhS2V5ID0gQCJXZWJLaXQyVXNlUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWEiOwogCi1AaW50ZXJmYWNlIFdLMkJyb3dzZXJXaW5kb3dDb250cm9s
bGVyICgpIDxXS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZVByaXZhdGUsIFdLQnJvd3NpbmdD
b250ZXh0UG9saWN5RGVsZWdhdGUsIFdLQnJvd3NpbmdDb250ZXh0SGlzdG9yeURlbGVnYXRlPgor
QGludGVyZmFjZSBXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciAoKSA8V0tOYXZpZ2F0aW9uRGVs
ZWdhdGUsIFdLVUlEZWxlZ2F0ZT4KIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLMkJyb3dzZXJX
aW5kb3dDb250cm9sbGVyIHsKLSAgICBXS1Byb2Nlc3NHcm91cCAqX3Byb2Nlc3NHcm91cDsKLSAg
ICBXS0Jyb3dzaW5nQ29udGV4dEdyb3VwICpfYnJvd3NpbmdDb250ZXh0R3JvdXA7Ci0KLSAgICBX
S1ZpZXcgKl93ZWJWaWV3OworICAgIFdLV2ViVmlldyAqX3dlYlZpZXc7CiB9CiAKLS0gKGlkKWlu
aXRXaXRoUHJvY2Vzc0dyb3VwOihXS1Byb2Nlc3NHcm91cCAqKXByb2Nlc3NHcm91cCBicm93c2lu
Z0NvbnRleHRHcm91cDooV0tCcm93c2luZ0NvbnRleHRHcm91cCAqKWJyb3dzaW5nQ29udGV4dEdy
b3VwCistICh2b2lkKWF3YWtlRnJvbU5pYgogewotICAgIGlmICgoc2VsZiA9IFtzdXBlciBpbml0
V2l0aFdpbmRvd05pYk5hbWU6QCJCcm93c2VyV2luZG93Il0pKSB7Ci0gICAgICAgIF9wcm9jZXNz
R3JvdXAgPSBbcHJvY2Vzc0dyb3VwIHJldGFpbl07Ci0gICAgICAgIF9icm93c2luZ0NvbnRleHRH
cm91cCA9IFticm93c2luZ0NvbnRleHRHcm91cCByZXRhaW5dOwotICAgICAgICBfem9vbVRleHRP
bmx5ID0gTk87Ci0gICAgfQotICAgIAotICAgIHJldHVybiBzZWxmOworICAgIF93ZWJWaWV3ID0g
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6W2NvbnRhaW5lclZpZXcgYm91bmRzXV07
CisKKyAgICBfd2ViVmlldy5hbGxvd3NNYWduaWZpY2F0aW9uID0gWUVTOworICAgIF93ZWJWaWV3
LmFsbG93c0JhY2tGb3J3YXJkTmF2aWdhdGlvbkdlc3R1cmVzID0gWUVTOworCisgICAgW193ZWJW
aWV3IHNldEF1dG9yZXNpemluZ01hc2s6KE5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdo
dFNpemFibGUpXTsKKyAgICBbY29udGFpbmVyVmlldyBhZGRTdWJ2aWV3Ol93ZWJWaWV3XTsKKwor
ICAgIFtwcm9ncmVzc0luZGljYXRvciBiaW5kOk5TSGlkZGVuQmluZGluZyB0b09iamVjdDpfd2Vi
VmlldyB3aXRoS2V5UGF0aDpAImxvYWRpbmciIG9wdGlvbnM6QHsgTlNWYWx1ZVRyYW5zZm9ybWVy
TmFtZUJpbmRpbmdPcHRpb24gOiBOU05lZ2F0ZUJvb2xlYW5UcmFuc2Zvcm1lck5hbWUgfV07Cisg
ICAgW3Byb2dyZXNzSW5kaWNhdG9yIGJpbmQ6TlNWYWx1ZUJpbmRpbmcgdG9PYmplY3Q6X3dlYlZp
ZXcgd2l0aEtleVBhdGg6QCJlc3RpbWF0ZWRQcm9ncmVzcyIgb3B0aW9uczpuaWxdOworCisgICAg
W193ZWJWaWV3IGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInRpdGxlIiBvcHRpb25zOjAg
Y29udGV4dDprZXlWYWx1ZU9ic2VydmluZ0NvbnRleHRdOworICAgIFtfd2ViVmlldyBhZGRPYnNl
cnZlcjpzZWxmIGZvcktleVBhdGg6QCJhY3RpdmVVUkwiIG9wdGlvbnM6MCBjb250ZXh0OmtleVZh
bHVlT2JzZXJ2aW5nQ29udGV4dF07CisKKyAgICBfd2ViVmlldy5uYXZpZ2F0aW9uRGVsZWdhdGUg
PSBzZWxmOwogfQogCiAtICh2b2lkKWRlYWxsb2MKQEAgLTY3LDE1ICs2Nyw4IEBAIC0gKHZvaWQp
ZGVhbGxvYwogICAgIFtwcm9ncmVzc0luZGljYXRvciB1bmJpbmQ6TlNIaWRkZW5CaW5kaW5nXTsK
ICAgICBbcHJvZ3Jlc3NJbmRpY2F0b3IgdW5iaW5kOk5TVmFsdWVCaW5kaW5nXTsKIAotICAgIFtf
d2ViVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyIHJlbW92ZU9ic2VydmVyOnNlbGYgZm9y
S2V5UGF0aDpAInRpdGxlIiBjb250ZXh0OmtleVZhbHVlT2JzZXJ2aW5nQ29udGV4dF07Ci0gICAg
W193ZWJWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgcmVtb3ZlT2JzZXJ2ZXI6c2VsZiBm
b3JLZXlQYXRoOkAiYWN0aXZlVVJMIiBjb250ZXh0OmtleVZhbHVlT2JzZXJ2aW5nQ29udGV4dF07
Ci0gICAgX3dlYlZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdhdGUgPSBu
aWw7Ci0gICAgX3dlYlZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5wb2xpY3lEZWxlZ2F0
ZSA9IG5pbDsKICAgICBbX3dlYlZpZXcgcmVsZWFzZV07CiAKLSAgICBbX2Jyb3dzaW5nQ29udGV4
dEdyb3VwIHJlbGVhc2VdOwotICAgIFtfcHJvY2Vzc0dyb3VwIHJlbGVhc2VdOwotCiAgICAgW3N1
cGVyIGRlYWxsb2NdOwogfQogCkBAIC04Myw3ICs3Niw3IEBAIC0gKElCQWN0aW9uKWZldGNoOihp
ZClzZW5kZXIKIHsKICAgICBbdXJsVGV4dCBzZXRTdHJpbmdWYWx1ZTpbc2VsZiBhZGRQcm90b2Nv
bElmTmVjZXNzYXJ5Olt1cmxUZXh0IHN0cmluZ1ZhbHVlXV1dOwogCi0gICAgW193ZWJWaWV3LmJy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXIgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbdXJsVGV4dCBzdHJpbmdWYWx1ZV1dXV07Cisg
ICAgW193ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05T
VVJMIFVSTFdpdGhTdHJpbmc6W3VybFRleHQgc3RyaW5nVmFsdWVdXV1dOwogfQogCiAtIChJQkFj
dGlvbilzaG93SGlkZVdlYlZpZXc6KGlkKXNlbmRlcgpAQCAtMTE0LDE3ICsxMDcsMjEgQEAgLSAo
Qk9PTCl2YWxpZGF0ZU1lbnVJdGVtOihOU01lbnVJdGVtICopbWVudUl0ZW0KICAgICAgICAgcmV0
dXJuIFtzZWxmIGNhblpvb21PdXRdOwogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKHJlc2V0
Wm9vbTopKQogICAgICAgICByZXR1cm4gW3NlbGYgY2FuUmVzZXRab29tXTsKLQorICAgIAorICAg
IC8vIERpc2FibGVkIHVudGlsIG1pc3NpbmcgV0syIGZ1bmN0aW9uYWxpdHkgaXMgZXhwb3NlZCB2
aWEgQVBJL1NQSS4KKyAgICBpZiAoYWN0aW9uID09IEBzZWxlY3RvcihyZWxvYWQ6KQorICAgICAg
ICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZVpvb21Nb2RlOikKKyAgICAgICAgfHwgYWN0
aW9uID09IEBzZWxlY3RvcihyZXNldFpvb206KQorICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVj
dG9yKGR1bXBTb3VyY2VUb0NvbnNvbGU6KQorICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9y
KGZpbmQ6KQorICAgICAgICB8fCBhY3Rpb24gPT0gQHNlbGVjdG9yKHRvZ2dsZVBhZ2luYXRpb25N
b2RlOikKKyAgICAgICAgfHwgYWN0aW9uID09IEBzZWxlY3Rvcih0b2dnbGVUcmFuc3BhcmVudFdp
bmRvdzopKQorICAgICAgICByZXR1cm4gTk87CisgICAgCiAgICAgaWYgKGFjdGlvbiA9PSBAc2Vs
ZWN0b3Ioc2hvd0hpZGVXZWJWaWV3OikpCiAgICAgICAgIFttZW51SXRlbSBzZXRUaXRsZTpbX3dl
YlZpZXcgaXNIaWRkZW5dID8gQCJTaG93IFdlYiBWaWV3IiA6IEAiSGlkZSBXZWIgVmlldyJdOwog
ICAgIGVsc2UgaWYgKGFjdGlvbiA9PSBAc2VsZWN0b3IocmVtb3ZlUmVpbnNlcnRXZWJWaWV3Oikp
CiAgICAgICAgIFttZW51SXRlbSBzZXRUaXRsZTpbX3dlYlZpZXcgd2luZG93XSA/IEAiUmVtb3Zl
IFdlYiBWaWV3IiA6IEAiSW5zZXJ0IFdlYiBWaWV3Il07Ci0gICAgZWxzZSBpZiAoYWN0aW9uID09
IEBzZWxlY3Rvcih0b2dnbGVab29tTW9kZTopKQotICAgICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6
X3pvb21UZXh0T25seSA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOwotICAgIGVsc2UgaWYgKFtt
ZW51SXRlbSBhY3Rpb25dID09IEBzZWxlY3Rvcih0b2dnbGVQYWdpbmF0aW9uTW9kZTopKQotICAg
ICAgICBbbWVudUl0ZW0gc2V0U3RhdGU6W3NlbGYgaXNQYWdpbmF0ZWRdID8gTlNPblN0YXRlIDog
TlNPZmZTdGF0ZV07Ci0gICAgZWxzZSBpZiAoW21lbnVJdGVtIGFjdGlvbl0gPT0gQHNlbGVjdG9y
KHRvZ2dsZVRyYW5zcGFyZW50V2luZG93OikpCi0gICAgICAgIFttZW51SXRlbSBzZXRTdGF0ZTpb
W3NlbGYgd2luZG93XSBpc09wYXF1ZV0gPyBOU09mZlN0YXRlIDogTlNPblN0YXRlXTsKICAgICBl
bHNlIGlmIChbbWVudUl0ZW0gYWN0aW9uXSA9PSBAc2VsZWN0b3IodG9nZ2xlVUlTaWRlQ29tcG9z
aXRpbmc6KSkKICAgICAgICAgW21lbnVJdGVtIHNldFN0YXRlOltzZWxmIGlzVUlTaWRlQ29tcG9z
aXRpbmdFbmFibGVkXSA/IE5TT25TdGF0ZSA6IE5TT2ZmU3RhdGVdOwogCkBAIC0xMzMsNyArMTMw
LDYgQEAgLSAoQk9PTCl2YWxpZGF0ZU1lbnVJdGVtOihOU01lbnVJdGVtICopbWVudUl0ZW0KIAog
LSAoSUJBY3Rpb24pcmVsb2FkOihpZClzZW5kZXIKIHsKLSAgICBbX3dlYlZpZXcuYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlciByZWxvYWRdOwogfQogCiAtIChJQkFjdGlvbilmb3JjZVJlcGFpbnQ6
KGlkKXNlbmRlcgpAQCAtMTQzLDEyICsxMzksMzMgQEAgLSAoSUJBY3Rpb24pZm9yY2VSZXBhaW50
OihpZClzZW5kZXIKIAogLSAoSUJBY3Rpb24pZ29CYWNrOihpZClzZW5kZXIKIHsKLSAgICBbX3dl
YlZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciBnb0JhY2tdOworICAgIFtfd2ViVmlldyBn
b0JhY2tdOwogfQogCiAtIChJQkFjdGlvbilnb0ZvcndhcmQ6KGlkKXNlbmRlcgogewotICAgIFtf
d2ViVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyIGdvRm9yd2FyZF07CisgICAgW193ZWJW
aWV3IGdvRm9yd2FyZF07Cit9CisKKy0gKElCQWN0aW9uKXRvZ2dsZVpvb21Nb2RlOihpZClzZW5k
ZXIKK3sKK30KKworLSAoSUJBY3Rpb24pcmVzZXRab29tOihpZClzZW5kZXIKK3sKK30KKworLSAo
Qk9PTCljYW5SZXNldFpvb20KK3sKKyAgICByZXR1cm4gTk87Cit9CisKKy0gKElCQWN0aW9uKWR1
bXBTb3VyY2VUb0NvbnNvbGU6KGlkKXNlbmRlcgoreworfQorCistIChJQkFjdGlvbil0b2dnbGVQ
YWdpbmF0aW9uTW9kZTooaWQpc2VuZGVyCit7CiB9CiAKIC0gKEJPT0wpdmFsaWRhdGVVc2VySW50
ZXJmYWNlSXRlbTooaWQgPE5TVmFsaWRhdGVkVXNlckludGVyZmFjZUl0ZW0+KWl0ZW0KQEAgLTE1
NiwxMCArMTczLDEwIEBAIC0gKEJPT0wpdmFsaWRhdGVVc2VySW50ZXJmYWNlSXRlbTooaWQgPE5T
VmFsaWRhdGVkVXNlckludGVyZmFjZUl0ZW0+KWl0ZW0KICAgICBTRUwgYWN0aW9uID0gW2l0ZW0g
YWN0aW9uXTsKIAogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKGdvQmFjazopKQotICAgICAg
ICByZXR1cm4gX3dlYlZpZXcgJiYgW193ZWJWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIg
Y2FuR29CYWNrXTsKKyAgICAgICAgcmV0dXJuIF93ZWJWaWV3ICYmIFtfd2ViVmlldyBjYW5Hb0Jh
Y2tdOwogICAgIAogICAgIGlmIChhY3Rpb24gPT0gQHNlbGVjdG9yKGdvRm9yd2FyZDopKQotICAg
ICAgICByZXR1cm4gX3dlYlZpZXcgJiYgW193ZWJWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIgY2FuR29Gb3J3YXJkXTsKKyAgICAgICAgcmV0dXJuIF93ZWJWaWV3ICYmIFtfd2ViVmlldyBj
YW5Hb0ZvcndhcmRdOwogICAgIAogICAgIHJldHVybiBZRVM7CiB9CkBAIC0xNzEsOSArMTg4LDcg
QEAgLSAodm9pZCl2YWxpZGF0ZVRvb2xiYXIKIAogLSAoQk9PTCl3aW5kb3dTaG91bGRDbG9zZToo
aWQpc2VuZGVyCiB7Ci0gICAgTE9HKEAid2luZG93U2hvdWxkQ2xvc2UiKTsKLSAgICBCT09MIGNh
bkNsb3NlSW1tZWRpYXRlbHkgPSBXS1BhZ2VUcnlDbG9zZShfd2ViVmlldy5wYWdlUmVmKTsKLSAg
ICByZXR1cm4gY2FuQ2xvc2VJbW1lZGlhdGVseTsKKyAgICByZXR1cm4gWUVTOwogfQogCiAtICh2
b2lkKXdpbmRvd1dpbGxDbG9zZTooTlNOb3RpZmljYXRpb24gKilub3RpZmljYXRpb24KQEAgLTE4
NCw4ICsxOTksNiBAQCAtICh2b2lkKXdpbmRvd1dpbGxDbG9zZTooTlNOb3RpZmljYXRpb24gKilu
b3RpZmljYXRpb24KIAogLSAodm9pZClhcHBsaWNhdGlvblRlcm1pbmF0aW5nCiB7Ci0gICAgLy8g
RklYTUU6IFdoeSBhcmUgd2UgYm90aGVyaW5nIHRvIGNsb3NlIHRoZSBwYWdlPyBUaGlzIGRvZXNu
J3QgZXZlbiBwcmV2ZW50IExFQUsgb3V0cHV0LgotICAgIFdLUGFnZUNsb3NlKF93ZWJWaWV3LnBh
Z2VSZWYpOwogfQogCiAjZGVmaW5lIERlZmF1bHRNaW5pbXVtWm9vbUZhY3RvciAoLjUpCkBAIC0x
OTQsMjAgKzIwNywxNiBAQCAtICh2b2lkKWFwcGxpY2F0aW9uVGVybWluYXRpbmcKIAogLSAoQ0dG
bG9hdCljdXJyZW50Wm9vbUZhY3RvcgogewotICAgIHJldHVybiBfem9vbVRleHRPbmx5ID8gX3dl
YlZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci50ZXh0Wm9vbSA6IF93ZWJWaWV3LmJyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIucGFnZVpvb207CisgICAgcmV0dXJuIDE7CiB9CiAKIC0gKHZv
aWQpc2V0Q3VycmVudFpvb21GYWN0b3I6KENHRmxvYXQpZmFjdG9yCiB7Ci0gICAgaWYgKF96b29t
VGV4dE9ubHkpCi0gICAgICAgIF93ZWJWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIudGV4
dFpvb20gPSBmYWN0b3I7Ci0gICAgZWxzZQotICAgICAgICBfd2ViVmlldy5icm93c2luZ0NvbnRl
eHRDb250cm9sbGVyLnBhZ2Vab29tID0gZmFjdG9yOwogfQogCiAtIChCT09MKWNhblpvb21Jbgog
ewotICAgIHJldHVybiBbc2VsZiBjdXJyZW50Wm9vbUZhY3Rvcl0gKiBEZWZhdWx0Wm9vbUZhY3Rv
clJhdGlvIDwgRGVmYXVsdE1heGltdW1ab29tRmFjdG9yOworICAgIHJldHVybiBOTzsKIH0KIAog
LSAodm9pZCl6b29tSW46KGlkKXNlbmRlcgpAQCAtMjIxLDcgKzIzMCw3IEBAIC0gKHZvaWQpem9v
bUluOihpZClzZW5kZXIKIAogLSAoQk9PTCljYW5ab29tT3V0CiB7Ci0gICAgcmV0dXJuIFtzZWxm
IGN1cnJlbnRab29tRmFjdG9yXSAvIERlZmF1bHRab29tRmFjdG9yUmF0aW8gPiBEZWZhdWx0TWlu
aW11bVpvb21GYWN0b3I7CisgICAgcmV0dXJuIE5POwogfQogCiAtICh2b2lkKXpvb21PdXQ6KGlk
KXNlbmRlcgpAQCAtMjMzLDYyICsyNDIsOCBAQCAtICh2b2lkKXpvb21PdXQ6KGlkKXNlbmRlcgog
ICAgIFtzZWxmIHNldEN1cnJlbnRab29tRmFjdG9yOmZhY3Rvcl07CiB9CiAKLS0gKEJPT0wpY2Fu
UmVzZXRab29tCi17Ci0gICAgcmV0dXJuIF96b29tVGV4dE9ubHkgPyAoX3dlYlZpZXcuYnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlci50ZXh0Wm9vbSAhPSAxKSA6IChfd2ViVmlldy5icm93c2luZ0Nv
bnRleHRDb250cm9sbGVyLnBhZ2Vab29tICE9IDEpOwotfQotCi0tICh2b2lkKXJlc2V0Wm9vbToo
aWQpc2VuZGVyCi17Ci0gICAgaWYgKCFbc2VsZiBjYW5SZXNldFpvb21dKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBpZiAoX3pvb21UZXh0T25seSkKLSAgICAgICAgX3dlYlZpZXcuYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlci50ZXh0Wm9vbSA9IDE7Ci0gICAgZWxzZQotICAgICAgICBfd2ViVmll
dy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLnBhZ2Vab29tID0gMTsKLX0KLQotLSAoSUJBY3Rp
b24pdG9nZ2xlWm9vbU1vZGU6KGlkKXNlbmRlcgotewotICAgIGlmIChfem9vbVRleHRPbmx5KSB7
Ci0gICAgICAgIF96b29tVGV4dE9ubHkgPSBOTzsKLSAgICAgICAgZG91YmxlIGN1cnJlbnRUZXh0
Wm9vbSA9IF93ZWJWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIudGV4dFpvb207Ci0gICAg
ICAgIFdLUGFnZVNldFBhZ2VBbmRUZXh0Wm9vbUZhY3RvcnMoX3dlYlZpZXcucGFnZVJlZiwgY3Vy
cmVudFRleHRab29tLCAxKTsKLSAgICB9IGVsc2UgewotICAgICAgICBfem9vbVRleHRPbmx5ID0g
WUVTOwotICAgICAgICBkb3VibGUgY3VycmVudFBhZ2Vab29tID0gX3dlYlZpZXcuYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlci5wYWdlWm9vbTsKLSAgICAgICAgV0tQYWdlU2V0UGFnZUFuZFRleHRa
b29tRmFjdG9ycyhfd2ViVmlldy5wYWdlUmVmLCAxLCBjdXJyZW50UGFnZVpvb20pOwotICAgIH0K
LX0KLQotLSAoQk9PTClpc1BhZ2luYXRlZAotewotICAgIHJldHVybiBfd2ViVmlldy5icm93c2lu
Z0NvbnRleHRDb250cm9sbGVyLnBhZ2luYXRpb25Nb2RlICE9IFdLUGFnaW5hdGlvbk1vZGVVbnBh
Z2luYXRlZDsKLX0KLQotLSAoSUJBY3Rpb24pdG9nZ2xlUGFnaW5hdGlvbk1vZGU6KGlkKXNlbmRl
cgotewotICAgIGlmIChbc2VsZiBpc1BhZ2luYXRlZF0pCi0gICAgICAgIF93ZWJWaWV3LmJyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIucGFnaW5hdGlvbk1vZGUgPSBXS1BhZ2luYXRpb25Nb2RlVW5w
YWdpbmF0ZWQ7Ci0gICAgZWxzZSB7Ci0gICAgICAgIF93ZWJWaWV3LmJyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIucGFnaW5hdGlvbk1vZGUgPSBXS1BhZ2luYXRpb25Nb2RlTGVmdFRvUmlnaHQ7Ci0g
ICAgICAgIF93ZWJWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIucGFnZUxlbmd0aCA9IF93
ZWJWaWV3LmJvdW5kcy5zaXplLndpZHRoIC8gMjsKLSAgICAgICAgX3dlYlZpZXcuYnJvd3NpbmdD
b250ZXh0Q29udHJvbGxlci5nYXBCZXR3ZWVuUGFnZXMgPSAxMDsKLSAgICB9Ci19Ci0KIC0gKElC
QWN0aW9uKXRvZ2dsZVRyYW5zcGFyZW50V2luZG93OihpZClzZW5kZXIKIHsKLSAgICBCT09MIGlz
VHJhbnNwYXJlbnQgPSBfd2ViVmlldy5kcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZDsKLSAgICBp
c1RyYW5zcGFyZW50ID0gIWlzVHJhbnNwYXJlbnQ7Ci0KLSAgICBbW3NlbGYgd2luZG93XSBzZXRP
cGFxdWU6IWlzVHJhbnNwYXJlbnRdOwotICAgIFtbc2VsZiB3aW5kb3ddIHNldEhhc1NoYWRvdzoh
aXNUcmFuc3BhcmVudF07Ci0KLSAgICBfd2ViVmlldy5kcmF3c1RyYW5zcGFyZW50QmFja2dyb3Vu
ZCA9IGlzVHJhbnNwYXJlbnQ7Ci0KLSAgICBbW3NlbGYgd2luZG93XSBkaXNwbGF5XTsgICAgCiB9
CiAKIC0gKEJPT0wpaXNVSVNpZGVDb21wb3NpdGluZ0VuYWJsZWQKQEAgLTMwMywyOTAgKzI1OCw3
MCBAQCAtIChJQkFjdGlvbil0b2dnbGVVSVNpZGVDb21wb3NpdGluZzooaWQpc2VuZGVyCiAgICAg
W3VzZXJEZWZhdWx0cyBzZXRCb29sOm5ld1ZhbHVlIGZvcktleTpXZWJLaXQyVXNlUmVtb3RlTGF5
ZXJUcmVlRHJhd2luZ0FyZWFLZXldOwogfQogCi1zdGF0aWMgdm9pZCBkdW1wU291cmNlKFdLU3Ry
aW5nUmVmIHNvdXJjZSwgV0tFcnJvclJlZiBlcnJvciwgdm9pZCogY29udGV4dCkKLXsKLSAgICBp
ZiAoIXNvdXJjZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTE9HKEAiTWFpbiBmcmFtZSBzb3Vy
Y2VcbiBcIiVAXCIiLCBDRkJyaWRnaW5nUmVsZWFzZShXS1N0cmluZ0NvcHlDRlN0cmluZygwLCBz
b3VyY2UpKSk7Ci19Ci0KLS0gKElCQWN0aW9uKWR1bXBTb3VyY2VUb0NvbnNvbGU6KGlkKXNlbmRl
cgotewotICAgIFdLUGFnZUdldFNvdXJjZUZvckZyYW1lKF93ZWJWaWV3LnBhZ2VSZWYsIFdLUGFn
ZUdldE1haW5GcmFtZShfd2ViVmlldy5wYWdlUmVmKSwgTlVMTCwgZHVtcFNvdXJjZSk7Ci19Ci0K
IC0gKHZvaWQpb2JzZXJ2ZVZhbHVlRm9yS2V5UGF0aDooTlNTdHJpbmcgKilrZXlQYXRoIG9mT2Jq
ZWN0OihpZClvYmplY3QgY2hhbmdlOihOU0RpY3Rpb25hcnkgKiljaGFuZ2UgY29udGV4dDoodm9p
ZCAqKWNvbnRleHQKIHsKLSAgICBpZiAoY29udGV4dCAhPSBrZXlWYWx1ZU9ic2VydmluZ0NvbnRl
eHQgfHwgb2JqZWN0ICE9IF93ZWJWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIpCisgICAg
aWYgKGNvbnRleHQgIT0ga2V5VmFsdWVPYnNlcnZpbmdDb250ZXh0IHx8IG9iamVjdCAhPSBfd2Vi
VmlldykKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFtrZXlQYXRoIGlzRXF1YWxUb1N0cmlu
ZzpAInRpdGxlIl0pCi0gICAgICAgIHNlbGYud2luZG93LnRpdGxlID0gW193ZWJWaWV3LmJyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIudGl0bGUgc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6X3dlYlZp
ZXcuaXNVc2luZ1VJU2lkZUNvbXBvc2l0aW5nID8gQCIgW1dLMiBVSV0iIDogQCIgW1dLMl0iXTsK
KyAgICAgICAgc2VsZi53aW5kb3cudGl0bGUgPSBfd2ViVmlldy50aXRsZTsgLy8gW193ZWJWaWV3
LnRpdGxlIHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOl93ZWJWaWV3LmlzVXNpbmdVSVNpZGVDb21w
b3NpdGluZyA/IEAiIFtXSzIgVUldIiA6IEAiIFtXSzJdIl07CiAgICAgZWxzZSBpZiAoW2tleVBh
dGggaXNFcXVhbFRvU3RyaW5nOkAiYWN0aXZlVVJMIl0pCi0gICAgICAgIFtzZWxmIHVwZGF0ZVRl
eHRGaWVsZEZyb21VUkw6X3dlYlZpZXcuYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5hY3RpdmVV
UkxdOwotfQotCi0vLyBNQVJLOiBVSSBDbGllbnQgQ2FsbGJhY2tzCi0KLXN0YXRpYyBXS1BhZ2VS
ZWYgY3JlYXRlTmV3UGFnZShXS1BhZ2VSZWYgcGFnZSwgV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3Qs
IFdLRGljdGlvbmFyeVJlZiBmZWF0dXJlcywgV0tFdmVudE1vZGlmaWVycyBtb2RpZmllcnMsIFdL
RXZlbnRNb3VzZUJ1dHRvbiBidXR0b24sIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAg
TE9HKEAiY3JlYXRlTmV3UGFnZSIpOwotICAgIFdLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyICpv
cmlnaW5hdG9yID0gKFdLMkJyb3dzZXJXaW5kb3dDb250cm9sbGVyICopY2xpZW50SW5mbzsKLSAg
ICBXSzJCcm93c2VyV2luZG93Q29udHJvbGxlciAqY29udHJvbGxlciA9IFtbV0syQnJvd3Nlcldp
bmRvd0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoUHJvY2Vzc0dyb3VwOm9yaWdpbmF0b3ItPl9w
cm9jZXNzR3JvdXAgYnJvd3NpbmdDb250ZXh0R3JvdXA6b3JpZ2luYXRvci0+X2Jyb3dzaW5nQ29u
dGV4dEdyb3VwXTsKLSAgICBbY29udHJvbGxlciBsb2FkV2luZG93XTsKLQotICAgIHJldHVybiBX
S1JldGFpbihjb250cm9sbGVyLT5fd2ViVmlldy5wYWdlUmVmKTsKLX0KLQotc3RhdGljIHZvaWQg
c2hvd1BhZ2UoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQgKmNsaWVudEluZm8pCi17Ci0gICAg
TE9HKEAic2hvd1BhZ2UiKTsKLSAgICBbWyhCcm93c2VyV2luZG93Q29udHJvbGxlciAqKWNsaWVu
dEluZm8gd2luZG93XSBvcmRlckZyb250Om5pbF07CisgICAgICAgIFtzZWxmIHVwZGF0ZVRleHRG
aWVsZEZyb21VUkw6X3dlYlZpZXcuYWN0aXZlVVJMXTsKIH0KIAotc3RhdGljIHZvaWQgY2xvc2VQ
YWdlKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQotewotICAgIExPRyhA
ImNsb3NlUGFnZSIpOwotICAgIFdLUGFnZUNsb3NlKHBhZ2UpOwotICAgIFtbKEJyb3dzZXJXaW5k
b3dDb250cm9sbGVyICopY2xpZW50SW5mbyB3aW5kb3ddIGNsb3NlXTsKLX0KLQotc3RhdGljIHZv
aWQgcnVuSmF2YVNjcmlwdEFsZXJ0KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdl
LCBXS0ZyYW1lUmVmIGZyYW1lLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQorLSAodm9pZCl3ZWJW
aWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3Nh
Z2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZy
YW1lIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKSgpKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAg
ICAgTlNBbGVydCogYWxlcnQgPSBbW05TQWxlcnQgYWxsb2NdIGluaXRdOwogCi0gICAgV0tVUkxS
ZWYgd2tVUkwgPSBXS0ZyYW1lQ29weVVSTChmcmFtZSk7Ci0gICAgQ0ZVUkxSZWYgY2ZVUkwgPSBX
S1VSTENvcHlDRlVSTCgwLCB3a1VSTCk7Ci0gICAgV0tSZWxlYXNlKHdrVVJMKTsKLQotICAgIFth
bGVydCBzZXRNZXNzYWdlVGV4dDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkphdmFTY3Jp
cHQgYWxlcnQgZGlhbG9nIGZyb20gJUAuIiwgWyhOU1VSTCAqKWNmVVJMIGFic29sdXRlU3RyaW5n
XV1dOwotICAgIENGUmVsZWFzZShjZlVSTCk7Ci0KLSAgICBDRlN0cmluZ1JlZiBjZk1lc3NhZ2Ug
PSBXS1N0cmluZ0NvcHlDRlN0cmluZygwLCBtZXNzYWdlKTsKLSAgICBbYWxlcnQgc2V0SW5mb3Jt
YXRpdmVUZXh0OihOU1N0cmluZyAqKWNmTWVzc2FnZV07Ci0gICAgQ0ZSZWxlYXNlKGNmTWVzc2Fn
ZSk7Ci0KKyAgICBbYWxlcnQgc2V0TWVzc2FnZVRleHQ6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJKYXZhU2NyaXB0IGFsZXJ0IGRpYWxvZyBmcm9tICVALiIsIFtmcmFtZS5yZXF1ZXN0LlVS
TCBhYnNvbHV0ZVN0cmluZ11dXTsKKyAgICBbYWxlcnQgc2V0SW5mb3JtYXRpdmVUZXh0Om1lc3Nh
Z2VdOwogICAgIFthbGVydCBhZGRCdXR0b25XaXRoVGl0bGU6QCJPSyJdOwogCi0gICAgW2FsZXJ0
IHJ1bk1vZGFsXTsKLSAgICBbYWxlcnQgcmVsZWFzZV07CisgICAgW2FsZXJ0IGJlZ2luU2hlZXRN
b2RhbEZvcldpbmRvdzpzZWxmLndpbmRvdyBjb21wbGV0aW9uSGFuZGxlcjpedm9pZCAoTlNNb2Rh
bFJlc3BvbnNlIHJlc3BvbnNlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAg
ICAgIFthbGVydCByZWxlYXNlXTsKKyAgICB9XTsKIH0KIAotc3RhdGljIGJvb2wgcnVuSmF2YVNj
cmlwdENvbmZpcm0oV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2UsIFdLRnJhbWVS
ZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCistICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgcnVuSmF2YVNjcmlwdENvbmZpcm1QYW5lbFdpdGhNZXNzYWdlOihOU1N0
cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoQk9PTCByZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyCiB7
CiAgICAgTlNBbGVydCogYWxlcnQgPSBbW05TQWxlcnQgYWxsb2NdIGluaXRdOwogCi0gICAgV0tV
UkxSZWYgd2tVUkwgPSBXS0ZyYW1lQ29weVVSTChmcmFtZSk7Ci0gICAgQ0ZVUkxSZWYgY2ZVUkwg
PSBXS1VSTENvcHlDRlVSTCgwLCB3a1VSTCk7Ci0gICAgV0tSZWxlYXNlKHdrVVJMKTsKLQotICAg
IFthbGVydCBzZXRNZXNzYWdlVGV4dDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkphdmFT
Y3JpcHQgY29uZmlybSBkaWFsb2cgZnJvbSAlQC4iLCBbKE5TVVJMICopY2ZVUkwgYWJzb2x1dGVT
dHJpbmddXV07Ci0gICAgQ0ZSZWxlYXNlKGNmVVJMKTsKLQotICAgIENGU3RyaW5nUmVmIGNmTWVz
c2FnZSA9IFdLU3RyaW5nQ29weUNGU3RyaW5nKDAsIG1lc3NhZ2UpOwotICAgIFthbGVydCBzZXRJ
bmZvcm1hdGl2ZVRleHQ6KE5TU3RyaW5nICopY2ZNZXNzYWdlXTsKLSAgICBDRlJlbGVhc2UoY2ZN
ZXNzYWdlKTsKLQorICAgIFthbGVydCBzZXRNZXNzYWdlVGV4dDpbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAIkphdmFTY3JpcHQgY29uZmlybSBkaWFsb2cgZnJvbSAlQC4iLCBbZnJhbWUucmVx
dWVzdC5VUkwgIGFic29sdXRlU3RyaW5nXV1dOworICAgIFthbGVydCBzZXRJbmZvcm1hdGl2ZVRl
eHQ6bWVzc2FnZV07CisgICAgCiAgICAgW2FsZXJ0IGFkZEJ1dHRvbldpdGhUaXRsZTpAIk9LIl07
CiAgICAgW2FsZXJ0IGFkZEJ1dHRvbldpdGhUaXRsZTpAIkNhbmNlbCJdOwogCi0gICAgTlNJbnRl
Z2VyIGJ1dHRvbiA9IFthbGVydCBydW5Nb2RhbF07Ci0gICAgW2FsZXJ0IHJlbGVhc2VdOwotCi0g
ICAgcmV0dXJuIGJ1dHRvbiA9PSBOU0FsZXJ0Rmlyc3RCdXR0b25SZXR1cm47CisgICAgW2FsZXJ0
IGJlZ2luU2hlZXRNb2RhbEZvcldpbmRvdzpzZWxmLndpbmRvdyBjb21wbGV0aW9uSGFuZGxlcjpe
dm9pZCAoTlNNb2RhbFJlc3BvbnNlIHJlc3BvbnNlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKHJlc3BvbnNlID09IE5TTW9kYWxSZXNwb25zZVN0b3ApOworICAgICAgICBbYWxlcnQgcmVs
ZWFzZV07CisgICAgfV07CiB9CiAKLXN0YXRpYyBXS1N0cmluZ1JlZiBydW5KYXZhU2NyaXB0UHJv
bXB0KFdLUGFnZVJlZiBwYWdlLCBXS1N0cmluZ1JlZiBtZXNzYWdlLCBXS1N0cmluZ1JlZiBkZWZh
dWx0VmFsdWUsIFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCistICh2
b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuSmF2YVNjcmlwdFRleHRJbnB1dFBh
bmVsV2l0aFByb21wdDooTlNTdHJpbmcgKilwcm9tcHQgZGVmYXVsdFRleHQ6KE5TU3RyaW5nICop
ZGVmYXVsdFRleHQgaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKnJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXIK
IHsKICAgICBOU0FsZXJ0KiBhbGVydCA9IFtbTlNBbGVydCBhbGxvY10gaW5pdF07CiAKLSAgICBX
S1VSTFJlZiB3a1VSTCA9IFdLRnJhbWVDb3B5VVJMKGZyYW1lKTsKLSAgICBDRlVSTFJlZiBjZlVS
TCA9IFdLVVJMQ29weUNGVVJMKDAsIHdrVVJMKTsKLSAgICBXS1JlbGVhc2Uod2tVUkwpOwotCi0g
ICAgW2FsZXJ0IHNldE1lc3NhZ2VUZXh0OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSmF2
YVNjcmlwdCBwcm9tcHQgZGlhbG9nIGZyb20gJUAuIiwgWyhOU1VSTCAqKWNmVVJMIGFic29sdXRl
U3RyaW5nXV1dOwotICAgIENGUmVsZWFzZShjZlVSTCk7Ci0KLSAgICBDRlN0cmluZ1JlZiBjZk1l
c3NhZ2UgPSBXS1N0cmluZ0NvcHlDRlN0cmluZygwLCBtZXNzYWdlKTsKLSAgICBbYWxlcnQgc2V0
SW5mb3JtYXRpdmVUZXh0OihOU1N0cmluZyAqKWNmTWVzc2FnZV07Ci0gICAgQ0ZSZWxlYXNlKGNm
TWVzc2FnZSk7Ci0KKyAgICBbYWxlcnQgc2V0TWVzc2FnZVRleHQ6W05TU3RyaW5nIHN0cmluZ1dp
dGhGb3JtYXQ6QCJKYXZhU2NyaXB0IHByb21wdCBkaWFsb2cgZnJvbSAlQC4iLCBbZnJhbWUucmVx
dWVzdC5VUkwgYWJzb2x1dGVTdHJpbmddXV07CisgICAgW2FsZXJ0IHNldEluZm9ybWF0aXZlVGV4
dDpwcm9tcHRdOworICAgIAogICAgIFthbGVydCBhZGRCdXR0b25XaXRoVGl0bGU6QCJPSyJdOwog
ICAgIFthbGVydCBhZGRCdXR0b25XaXRoVGl0bGU6QCJDYW5jZWwiXTsKLQorICAgIAogICAgIE5T
VGV4dEZpZWxkKiBpbnB1dCA9IFtbTlNUZXh0RmllbGQgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCAyMDAsIDI0KV07Ci0gICAgQ0ZTdHJpbmdSZWYgY2ZEZWZhdWx0VmFsdWUg
PSBXS1N0cmluZ0NvcHlDRlN0cmluZygwLCBkZWZhdWx0VmFsdWUpOwotICAgIFtpbnB1dCBzZXRT
dHJpbmdWYWx1ZTooTlNTdHJpbmcgKiljZkRlZmF1bHRWYWx1ZV07Ci0gICAgQ0ZSZWxlYXNlKGNm
RGVmYXVsdFZhbHVlKTsKLQorICAgIFtpbnB1dCBzZXRTdHJpbmdWYWx1ZTpkZWZhdWx0VGV4dF07
CiAgICAgW2FsZXJ0IHNldEFjY2Vzc29yeVZpZXc6aW5wdXRdOwotCi0gICAgTlNJbnRlZ2VyIGJ1
dHRvbiA9IFthbGVydCBydW5Nb2RhbF07Ci0KLSAgICBOU1N0cmluZyogcmVzdWx0ID0gbmlsOwot
ICAgIGlmIChidXR0b24gPT0gTlNBbGVydEZpcnN0QnV0dG9uUmV0dXJuKSB7CisgICAgCisgICAg
CisgICAgW2FsZXJ0IGJlZ2luU2hlZXRNb2RhbEZvcldpbmRvdzpzZWxmLndpbmRvdyBjb21wbGV0
aW9uSGFuZGxlcjpedm9pZCAoTlNNb2RhbFJlc3BvbnNlIHJlc3BvbnNlKSB7CiAgICAgICAgIFtp
bnB1dCB2YWxpZGF0ZUVkaXRpbmddOwotICAgICAgICByZXN1bHQgPSBbaW5wdXQgc3RyaW5nVmFs
dWVdOwotICAgIH0KLQotICAgIFthbGVydCByZWxlYXNlXTsKLQotICAgIGlmICghcmVzdWx0KQot
ICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gV0tTdHJpbmdDcmVhdGVXaXRoQ0ZTdHJpbmco
KENGU3RyaW5nUmVmKXJlc3VsdCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldFN0YXR1c1RleHQoV0tQ
YWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHRleHQsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17
Ci0gICAgTE9HKEAic2V0U3RhdHVzVGV4dCIpOwotfQotCi1zdGF0aWMgdm9pZCBtb3VzZURpZE1v
dmVPdmVyRWxlbWVudChXS1BhZ2VSZWYgcGFnZSwgV0tIaXRUZXN0UmVzdWx0UmVmIGhpdFRlc3RS
ZXN1bHQsIFdLRXZlbnRNb2RpZmllcnMgbW9kaWZpZXJzLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNv
bnN0IHZvaWQgKmNsaWVudEluZm8pCi17Ci0gICAgTE9HKEAibW91c2VEaWRNb3ZlT3ZlckVsZW1l
bnQiKTsKLX0KLQotc3RhdGljIFdLUmVjdCBnZXRXaW5kb3dGcmFtZShXS1BhZ2VSZWYgcGFnZSwg
Y29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBOU1JlY3QgcmVjdCA9IFtbKEJyb3dzZXJX
aW5kb3dDb250cm9sbGVyICopY2xpZW50SW5mbyB3aW5kb3ddIGZyYW1lXTsKLSAgICBXS1JlY3Qg
d2tSZWN0OwotICAgIHdrUmVjdC5vcmlnaW4ueCA9IHJlY3Qub3JpZ2luLng7Ci0gICAgd2tSZWN0
Lm9yaWdpbi55ID0gcmVjdC5vcmlnaW4ueTsKLSAgICB3a1JlY3Quc2l6ZS53aWR0aCA9IHJlY3Qu
c2l6ZS53aWR0aDsKLSAgICB3a1JlY3Quc2l6ZS5oZWlnaHQgPSByZWN0LnNpemUuaGVpZ2h0Owot
ICAgIHJldHVybiB3a1JlY3Q7Ci19Ci0KLXN0YXRpYyB2b2lkIHNldFdpbmRvd0ZyYW1lKFdLUGFn
ZVJlZiBwYWdlLCBXS1JlY3QgcmVjdCwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKLXsKLSAgICBb
WyhCcm93c2VyV2luZG93Q29udHJvbGxlciAqKWNsaWVudEluZm8gd2luZG93XSBzZXRGcmFtZTpO
U01ha2VSZWN0KHJlY3Qub3JpZ2luLngsIHJlY3Qub3JpZ2luLnksIHJlY3Quc2l6ZS53aWR0aCwg
cmVjdC5zaXplLmhlaWdodCkgZGlzcGxheTpZRVNdOwotfQotCi1zdGF0aWMgYm9vbCBydW5CZWZv
cmVVbmxvYWRDb25maXJtUGFuZWwoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIG1lc3NhZ2Us
IFdLRnJhbWVSZWYgZnJhbWUsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgTlNBbGVy
dCAqYWxlcnQgPSBbW05TQWxlcnQgYWxsb2NdIGluaXRdOwotCi0gICAgV0tVUkxSZWYgd2tVUkwg
PSBXS0ZyYW1lQ29weVVSTChmcmFtZSk7Ci0gICAgQ0ZVUkxSZWYgY2ZVUkwgPSBXS1VSTENvcHlD
RlVSTCgwLCB3a1VSTCk7Ci0gICAgV0tSZWxlYXNlKHdrVVJMKTsKLQotICAgIFthbGVydCBzZXRN
ZXNzYWdlVGV4dDpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIkJlZm9yZVVubG9hZCBjb25m
aXJtIGRpYWxvZyBmcm9tICVALiIsIFsoTlNVUkwgKiljZlVSTCBhYnNvbHV0ZVN0cmluZ11dXTsK
LSAgICBDRlJlbGVhc2UoY2ZVUkwpOwotCi0gICAgQ0ZTdHJpbmdSZWYgY2ZNZXNzYWdlID0gV0tT
dHJpbmdDb3B5Q0ZTdHJpbmcoMCwgbWVzc2FnZSk7Ci0gICAgW2FsZXJ0IHNldEluZm9ybWF0aXZl
VGV4dDooTlNTdHJpbmcgKiljZk1lc3NhZ2VdOwotICAgIENGUmVsZWFzZShjZk1lc3NhZ2UpOwot
Ci0gICAgW2FsZXJ0IGFkZEJ1dHRvbldpdGhUaXRsZTpAIk9LIl07Ci0gICAgW2FsZXJ0IGFkZEJ1
dHRvbldpdGhUaXRsZTpAIkNhbmNlbCJdOwotCi0gICAgTlNJbnRlZ2VyIGJ1dHRvbiA9IFthbGVy
dCBydW5Nb2RhbF07Ci0gICAgW2FsZXJ0IHJlbGVhc2VdOwotCi0gICAgcmV0dXJuIGJ1dHRvbiA9
PSBOU0FsZXJ0Rmlyc3RCdXR0b25SZXR1cm47Ci19Ci0KLXN0YXRpYyB2b2lkIHJ1bk9wZW5QYW5l
bChXS1BhZ2VSZWYgcGFnZSwgV0tGcmFtZVJlZiBmcmFtZSwgV0tPcGVuUGFuZWxQYXJhbWV0ZXJz
UmVmIHBhcmFtZXRlcnMsIFdLT3BlblBhbmVsUmVzdWx0TGlzdGVuZXJSZWYgbGlzdGVuZXIsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAgTlNPcGVuUGFuZWwgKm9wZW5QYW5lbCA9IFtO
U09wZW5QYW5lbCBvcGVuUGFuZWxdOwotICAgIFtvcGVuUGFuZWwgc2V0QWxsb3dzTXVsdGlwbGVT
ZWxlY3Rpb246V0tPcGVuUGFuZWxQYXJhbWV0ZXJzR2V0QWxsb3dzTXVsdGlwbGVGaWxlcyhwYXJh
bWV0ZXJzKV07Ci0KLSAgICBXS1JldGFpbihsaXN0ZW5lcik7Ci0KLSAgICBbb3BlblBhbmVsIGJl
Z2luU2hlZXRNb2RhbEZvcldpbmRvdzpbKEJyb3dzZXJXaW5kb3dDb250cm9sbGVyICopY2xpZW50
SW5mbyB3aW5kb3ddIGNvbXBsZXRpb25IYW5kbGVyOl4oTlNJbnRlZ2VyIHJlc3VsdCkgewotICAg
ICAgICBpZiAocmVzdWx0ID09IE5TRmlsZUhhbmRsaW5nUGFuZWxPS0J1dHRvbikgewotICAgICAg
ICAgICAgV0tNdXRhYmxlQXJyYXlSZWYgZmlsZVVSTHMgPSBXS011dGFibGVBcnJheUNyZWF0ZSgp
OwotCi0gICAgICAgICAgICBOU1VSTCAqbnNVUkw7Ci0gICAgICAgICAgICBmb3IgKG5zVVJMIGlu
IFtvcGVuUGFuZWwgVVJMc10pIHsKLSAgICAgICAgICAgICAgICBXS1VSTFJlZiB3a1VSTCA9IFdL
VVJMQ3JlYXRlV2l0aENGVVJMKChDRlVSTFJlZiluc1VSTCk7Ci0gICAgICAgICAgICAgICAgV0tB
cnJheUFwcGVuZEl0ZW0oZmlsZVVSTHMsIHdrVVJMKTsKLSAgICAgICAgICAgICAgICBXS1JlbGVh
c2Uod2tVUkwpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBXS09wZW5QYW5lbFJlc3Vs
dExpc3RlbmVyQ2hvb3NlRmlsZXMobGlzdGVuZXIsIGZpbGVVUkxzKTsKLQotICAgICAgICAgICAg
V0tSZWxlYXNlKGZpbGVVUkxzKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBXS09wZW5Q
YW5lbFJlc3VsdExpc3RlbmVyQ2FuY2VsKGxpc3RlbmVyKTsKLSAgICAgICAgCi0gICAgICAgIFdL
UmVsZWFzZShsaXN0ZW5lcik7CisgICAgICAgIC8vIEZJWE1FOiBuZWVkIHRvIHNlbmQgT0svQ2Fu
Y2VsIGJhY2suCisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFtpbnB1dCBzdHJpbmdWYWx1ZV0p
OworICAgICAgICBbYWxlcnQgcmVsZWFzZV07CiAgICAgfV07CiB9CiAKLS0gKHZvaWQpYXdha2VG
cm9tTmliCi17Ci0gICAgX3dlYlZpZXcgPSBbW1dLVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpb
Y29udGFpbmVyVmlldyBib3VuZHNdIHByb2Nlc3NHcm91cDpfcHJvY2Vzc0dyb3VwIGJyb3dzaW5n
Q29udGV4dEdyb3VwOl9icm93c2luZ0NvbnRleHRHcm91cF07Ci0KLSAgICBfd2ViVmlldy5hbGxv
d3NNYWduaWZpY2F0aW9uID0gWUVTOwotICAgIF93ZWJWaWV3LmFsbG93c0JhY2tGb3J3YXJkTmF2
aWdhdGlvbkdlc3R1cmVzID0gWUVTOwotCi0gICAgW193ZWJWaWV3IHNldEF1dG9yZXNpemluZ01h
c2s6KE5TVmlld1dpZHRoU2l6YWJsZSB8IE5TVmlld0hlaWdodFNpemFibGUpXTsKLSAgICBbY29u
dGFpbmVyVmlldyBhZGRTdWJ2aWV3Ol93ZWJWaWV3XTsKLQotICAgIFtwcm9ncmVzc0luZGljYXRv
ciBiaW5kOk5TSGlkZGVuQmluZGluZyB0b09iamVjdDpfd2ViVmlldy5icm93c2luZ0NvbnRleHRD
b250cm9sbGVyIHdpdGhLZXlQYXRoOkAibG9hZGluZyIgb3B0aW9uczpAeyBOU1ZhbHVlVHJhbnNm
b3JtZXJOYW1lQmluZGluZ09wdGlvbiA6IE5TTmVnYXRlQm9vbGVhblRyYW5zZm9ybWVyTmFtZSB9
XTsKLSAgICBbcHJvZ3Jlc3NJbmRpY2F0b3IgYmluZDpOU1ZhbHVlQmluZGluZyB0b09iamVjdDpf
d2ViVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyIHdpdGhLZXlQYXRoOkAiZXN0aW1hdGVk
UHJvZ3Jlc3MiIG9wdGlvbnM6bmlsXTsKLQotICAgIFtfd2ViVmlldy5icm93c2luZ0NvbnRleHRD
b250cm9sbGVyIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAInRpdGxlIiBvcHRpb25zOjAg
Y29udGV4dDprZXlWYWx1ZU9ic2VydmluZ0NvbnRleHRdOwotICAgIFtfd2ViVmlldy5icm93c2lu
Z0NvbnRleHRDb250cm9sbGVyIGFkZE9ic2VydmVyOnNlbGYgZm9yS2V5UGF0aDpAImFjdGl2ZVVS
TCIgb3B0aW9uczowIGNvbnRleHQ6a2V5VmFsdWVPYnNlcnZpbmdDb250ZXh0XTsKLQotICAgIF93
ZWJWaWV3LmJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gc2VsZjsKLSAg
ICBfd2ViVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLnBvbGljeURlbGVnYXRlID0gc2Vs
ZjsKLSAgICBfd2ViVmlldy5icm93c2luZ0NvbnRleHRDb250cm9sbGVyLmhpc3RvcnlEZWxlZ2F0
ZSA9IHNlbGY7Ci0KLSAgICBXS1BhZ2VVSUNsaWVudFYyIHVpQ2xpZW50ID0gewotICAgICAgICB7
IDIsIHNlbGYgfSwKLSAgICAgICAgMCwgICAgICAgICAgLyogY3JlYXRlTmV3UGFnZV9kZXByZWNh
dGVkRm9yVXNlV2l0aFYwICovCi0gICAgICAgIHNob3dQYWdlLAotICAgICAgICBjbG9zZVBhZ2Us
Ci0gICAgICAgIDAsICAgICAgICAgIC8qIHRha2VGb2N1cyAqLwotICAgICAgICAwLCAgICAgICAg
ICAvKiBmb2N1cyAqLwotICAgICAgICAwLCAgICAgICAgICAvKiB1bmZvY3VzICovCi0gICAgICAg
IHJ1bkphdmFTY3JpcHRBbGVydCwKLSAgICAgICAgcnVuSmF2YVNjcmlwdENvbmZpcm0sCi0gICAg
ICAgIHJ1bkphdmFTY3JpcHRQcm9tcHQsCi0gICAgICAgIHNldFN0YXR1c1RleHQsCi0gICAgICAg
IDAsICAgICAgICAgIC8qIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50X2RlcHJlY2F0ZWRGb3JVc2VX
aXRoVjAgKi8KLSAgICAgICAgMCwgICAgICAgICAgLyogbWlzc2luZ1BsdWdpbkJ1dHRvbkNsaWNr
ZWQgKi8KLSAgICAgICAgMCwgICAgICAgICAgLyogZGlkTm90SGFuZGxlS2V5RXZlbnQgKi8KLSAg
ICAgICAgMCwgICAgICAgICAgLyogZGlkTm90SGFuZGxlV2hlZWxFdmVudCAqLwotICAgICAgICAw
LCAgICAgICAgICAvKiB0b29sYmFyc0FyZVZpc2libGUgKi8KLSAgICAgICAgMCwgICAgICAgICAg
Lyogc2V0VG9vbGJhcnNBcmVWaXNpYmxlICovCi0gICAgICAgIDAsICAgICAgICAgIC8qIG1lbnVC
YXJJc1Zpc2libGUgKi8KLSAgICAgICAgMCwgICAgICAgICAgLyogc2V0TWVudUJhcklzVmlzaWJs
ZSAqLwotICAgICAgICAwLCAgICAgICAgICAvKiBzdGF0dXNCYXJJc1Zpc2libGUgKi8KLSAgICAg
ICAgMCwgICAgICAgICAgLyogc2V0U3RhdHVzQmFySXNWaXNpYmxlICovCi0gICAgICAgIDAsICAg
ICAgICAgIC8qIGlzUmVzaXphYmxlICovCi0gICAgICAgIDAsICAgICAgICAgIC8qIHNldElzUmVz
aXphYmxlICovCi0gICAgICAgIGdldFdpbmRvd0ZyYW1lLAotICAgICAgICBzZXRXaW5kb3dGcmFt
ZSwKLSAgICAgICAgcnVuQmVmb3JlVW5sb2FkQ29uZmlybVBhbmVsLAotICAgICAgICAwLCAgICAg
ICAgICAvKiBkaWREcmF3ICovCi0gICAgICAgIDAsICAgICAgICAgIC8qIHBhZ2VEaWRTY3JvbGwg
Ki8KLSAgICAgICAgMCwgICAgICAgICAgLyogZXhjZWVkZWREYXRhYmFzZVF1b3RhICovCi0gICAg
ICAgIHJ1bk9wZW5QYW5lbCwKLSAgICAgICAgMCwgICAgICAgICAgLyogZGVjaWRlUG9saWN5Rm9y
R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdCAqLwotICAgICAgICAwLCAvLyBoZWFkZXJIZWln
aHQKLSAgICAgICAgMCwgLy8gZm9vdGVySGVpZ2h0Ci0gICAgICAgIDAsIC8vIGRyYXdIZWFkZXIK
LSAgICAgICAgMCwgLy8gZHJhd0Zvb3RlcgotICAgICAgICAwLCAvLyBwcmludEZyYW1lCi0gICAg
ICAgIDAsIC8vIHNob3dNb2RhbAotICAgICAgICAwLCAvLyBkaWRDb21wbGV0ZVJ1YmJlckJhbmRG
b3JNYWluRnJhbWUKLSAgICAgICAgMCwgLy8gc2F2ZURhdGFUb0ZpbGVJbkRvd25sb2Fkc0ZvbGRl
cgotICAgICAgICAwLCAvLyBzaG91bGRJbnRlcnJ1cHRKYXZhU2NyaXB0Ci0gICAgICAgIGNyZWF0
ZU5ld1BhZ2UsCi0gICAgICAgIG1vdXNlRGlkTW92ZU92ZXJFbGVtZW50LAotICAgICAgICAwLCAv
LyBkZWNpZGVQb2xpY3lGb3JOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdAotICAgICAgICAw
LCAvLyB1bmF2YWlsYWJsZVBsdWdpbkJ1dHRvbkNsaWNrZWRfZGVwcmVjYXRlZEZvclVzZVdpdGhW
MQotICAgICAgICAwLCAvLyBzaG93Q29sb3JQaWNrZXIKLSAgICAgICAgMCwgLy8gaGlkZUNvbG9y
UGlja2VyCi0gICAgICAgIDAsIC8vIHVuYXZhaWxhYmxlUGx1Z2luQnV0dG9uQ2xpY2tlZAotICAg
IH07Ci0gICAgV0tQYWdlU2V0UGFnZVVJQ2xpZW50KF93ZWJWaWV3LnBhZ2VSZWYsICZ1aUNsaWVu
dC5iYXNlKTsKLX0KLQogLSAodm9pZCl1cGRhdGVUZXh0RmllbGRGcm9tVVJMOihOU1VSTCAqKVVS
TAogewogICAgIGlmICghVVJMKQpAQCAtNjEyLDEwMSArMzQ3LDQ0IEBAIC0gKElCQWN0aW9uKXBl
cmZvcm1GaW5kUGFuZWxBY3Rpb246KGlkKXNlbmRlcgogCiAtIChJQkFjdGlvbilmaW5kOihpZClz
ZW5kZXIKIHsKLSAgICBXS1N0cmluZ1JlZiBzdHJpbmcgPSBXS1N0cmluZ0NyZWF0ZVdpdGhDRlN0
cmluZygoQ0ZTdHJpbmdSZWYpW3NlbmRlciBzdHJpbmdWYWx1ZV0pOwotCi0gICAgV0tQYWdlRmlu
ZFN0cmluZyhfd2ViVmlldy5wYWdlUmVmLCBzdHJpbmcsIGtXS0ZpbmRPcHRpb25zQ2FzZUluc2Vu
c2l0aXZlIHwga1dLRmluZE9wdGlvbnNXcmFwQXJvdW5kIHwga1dLRmluZE9wdGlvbnNTaG93Rmlu
ZEluZGljYXRvciB8IGtXS0ZpbmRPcHRpb25zU2hvd092ZXJsYXksIDEwMCk7Ci19Ci0KLSNwcmFn
bWEgbWFyayBXS0Jyb3dzaW5nQ29udGV4dExvYWREZWxlZ2F0ZQotCi0tICh2b2lkKWJyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXJEaWRTdGFydFByb3Zpc2lvbmFsTG9hZDooV0tCcm93c2luZ0NvbnRl
eHRDb250cm9sbGVyICopc2VuZGVyCi17Ci0gICAgTE9HKEAiZGlkU3RhcnRQcm92aXNpb25hbExv
YWQiKTsKIH0KIAotLSAodm9pZClicm93c2luZ0NvbnRleHRDb250cm9sbGVyRGlkUmVjZWl2ZVNl
cnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkOihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xs
ZXIgKilzZW5kZXIKLXsKLSAgICBMT0coQCJkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWQiKTsKLX0KLQotLSAodm9pZClicm93c2luZ0NvbnRleHRDb250cm9sbGVyOihX
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKilzZW5kZXIgZGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZFdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCi17Ci0gICAgTE9HKEAiZGlkRmFpbFByb3Zpc2lv
bmFsTG9hZFdpdGhFcnJvcjogJUAiLCBlcnJvcik7Ci19CisjcHJhZ21hIG1hcmsgV0tOYXZpZ2F0
aW9uRGVsZWdhdGUKIAotLSAodm9pZClicm93c2luZ0NvbnRleHRDb250cm9sbGVyRGlkQ29tbWl0
TG9hZDooV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyICopc2VuZGVyCistICh2b2lkKXdlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNl
OihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRs
ZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5RGVjaXNpb24pKWRlY2lzaW9u
SGFuZGxlcgogewotICAgIExPRyhAImRpZENvbW1pdExvYWQiKTsKKyAgICBMT0coQCJkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UiKTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZp
Z2F0aW9uUmVzcG9uc2VQb2xpY3lEZWNpc2lvbkFsbG93KTsKIH0KIAotLSAodm9pZClicm93c2lu
Z0NvbnRleHRDb250cm9sbGVyRGlkRmluaXNoTG9hZDooV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyICopc2VuZGVyCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkU3Rh
cnRQcm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KIHsKLSAg
ICBMT0coQCJkaWRGaW5pc2hMb2FkIik7CisgICAgTE9HKEAiZGlkU3RhcnRQcm92aXNpb25hbE5h
dmlnYXRpb24iKTsKIH0KIAotLSAodm9pZClicm93c2luZ0NvbnRleHRDb250cm9sbGVyOihXS0Jy
b3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKilzZW5kZXIgZGlkRmFpbExvYWRXaXRoRXJyb3I6KE5T
RXJyb3IgKillcnJvcgorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9u
ICopbmF2aWdhdGlvbgogewotICAgIExPRyhAImRpZEZhaWxMb2FkV2l0aEVycm9yOiAlQCIsIGVy
cm9yKTsKKyAgICBMT0coQCJkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbE5h
dmlnYXRpb24iKTsKIH0KIAotLSAodm9pZClicm93c2luZ0NvbnRleHRDb250cm9sbGVyRGlkQ2hh
bmdlQmFja0ZvcndhcmRMaXN0OihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKilzZW5kZXIg
YWRkZWRJdGVtOihXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKilhZGRlZEl0ZW0gcmVtb3ZlZEl0ZW1z
OihOU0FycmF5ICopcmVtb3ZlZEl0ZW1zCi17Ci0gICAgW3NlbGYgdmFsaWRhdGVUb29sYmFyXTsK
LX0KLQotI3ByYWdtYSBtYXJrIFdLQnJvd3NpbmdDb250ZXh0TG9hZERlbGVnYXRlUHJpdmF0ZQot
Ci0tIChCT09MKWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI6KFdLQnJvd3NpbmdDb250ZXh0Q29u
dHJvbGxlciAqKXNlbmRlciBjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlOihO
U1VSTFByb3RlY3Rpb25TcGFjZSAqKXByb3RlY3Rpb25TcGFjZQotewotICAgIExPRyhAImNhbkF1
dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2U6ICVAIiwgcHJvdGVjdGlvblNwYWNlKTsK
LSAgICByZXR1cm4gWUVTOwotfQotCi0tICh2b2lkKWJyb3dzaW5nQ29udGV4dENvbnRyb2xsZXI6
KFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKXNlbmRlciBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVuZ2UK
LXsKLSAgICBMT0coQCJkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6ICVAIiwgY2hh
bGxlbmdlKTsKLSAgICBbY2hhbGxlbmdlLnNlbmRlciBjb250aW51ZVdpdGhvdXRDcmVkZW50aWFs
Rm9yQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y2hhbGxlbmdlXTsKLX0KLQotI3ByYWdtYSBtYXJr
IFdLQnJvd3NpbmdDb250ZXh0UG9saWN5RGVsZWdhdGUKLQotLSAodm9pZClicm93c2luZ0NvbnRl
eHRDb250cm9sbGVyOihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKilicm93c2luZ0NvbnRl
eHQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooTlNEaWN0aW9uYXJ5ICopYWN0aW9u
SW5mb3JtYXRpb24gZGVjaXNpb25IYW5kbGVyOihXS1BvbGljeURlY2lzaW9uSGFuZGxlcilkZWNp
c2lvbkhhbmRsZXIKLXsKLSAgICBMT0coQCJkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
Iik7Ci0gICAgZGVjaXNpb25IYW5kbGVyKFdLUG9saWN5RGVjaXNpb25BbGxvdyk7Ci19Ci0KLS0g
KHZvaWQpYnJvd3NpbmdDb250ZXh0Q29udHJvbGxlcjooV0tCcm93c2luZ0NvbnRleHRDb250cm9s
bGVyICopYnJvd3NpbmdDb250ZXh0IGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbjooTlNE
aWN0aW9uYXJ5ICopYWN0aW9uSW5mb3JtYXRpb24gZGVjaXNpb25IYW5kbGVyOihXS1BvbGljeURl
Y2lzaW9uSGFuZGxlcilkZWNpc2lvbkhhbmRsZXIKLXsKLSAgICBMT0coQCJkZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24iKTsKLSAgICBkZWNpc2lvbkhhbmRsZXIoV0tQb2xpY3lEZWNpc2lv
bkFsbG93KTsKLX0KLQotLSAodm9pZClicm93c2luZ0NvbnRleHRDb250cm9sbGVyOihXS0Jyb3dz
aW5nQ29udGV4dENvbnRyb2xsZXIgKilicm93c2luZ0NvbnRleHQgZGVjaWRlUG9saWN5Rm9yUmVz
cG9uc2VBY3Rpb246KE5TRGljdGlvbmFyeSAqKWFjdGlvbkluZm9ybWF0aW9uIGRlY2lzaW9uSGFu
ZGxlcjooV0tQb2xpY3lEZWNpc2lvbkhhbmRsZXIpZGVjaXNpb25IYW5kbGVyCi17Ci0gICAgZGVj
aXNpb25IYW5kbGVyKFdLUG9saWN5RGVjaXNpb25BbGxvdyk7Ci19Ci0KLSNwcmFnbWEgbWFyayBX
S0Jyb3dzaW5nQ29udGV4dEhpc3RvcnlEZWxlZ2F0ZQotCi0tICh2b2lkKWJyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXI6KFdLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlciAqKWJyb3dzaW5nQ29udGV4
dENvbnRyb2xsZXIgZGlkTmF2aWdhdGVXaXRoTmF2aWdhdGlvbkRhdGE6KFdLTmF2aWdhdGlvbkRh
dGEgKiluYXZpZ2F0aW9uRGF0YQorLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24g
d2l0aEVycm9yOihOU0Vycm9yICopZXJyb3IKIHsKLSAgICBMT0coQCJXS0Jyb3dzaW5nQ29udGV4
dEhpc3RvcnlEZWxlZ2F0ZSAtIGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhIC0gdGl0bGU6
ICVAIC0gdXJsOiAlQCIsIG5hdmlnYXRpb25EYXRhLnRpdGxlLCBuYXZpZ2F0aW9uRGF0YS5vcmln
aW5hbFJlcXVlc3QuVVJMKTsKKyAgICBMT0coQCJkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9u
OiAlQCIsIGVycm9yKTsKIH0KIAotLSAodm9pZClicm93c2luZ0NvbnRleHRDb250cm9sbGVyOihX
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKilicm93c2luZ0NvbnRleHRDb250cm9sbGVyIGRp
ZFBlcmZvcm1DbGllbnRSZWRpcmVjdEZyb21VUkw6KE5TVVJMICopc291cmNlVVJMIHRvVVJMOihO
U1VSTCAqKWRlc3RpbmF0aW9uVVJMCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgZGlkQ29tbWl0TmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgogewotICAg
IExPRyhAIldLQnJvd3NpbmdDb250ZXh0SGlzdG9yeURlbGVnYXRlIC0gZGlkUGVyZm9ybUNsaWVu
dFJlZGlyZWN0IC0gZnJvbVVSTDogJUAgLSB0b1VSTDogJUAiLCBzb3VyY2VVUkwsIGRlc3RpbmF0
aW9uVVJMKTsKKyAgICBMT0coQCJkaWRDb21taXROYXZpZ2F0aW9uOiAlQCIsIGVycm9yKTsKIH0K
IAotLSAodm9pZClicm93c2luZ0NvbnRleHRDb250cm9sbGVyOihXS0Jyb3dzaW5nQ29udGV4dENv
bnRyb2xsZXIgKilicm93c2luZ0NvbnRleHRDb250cm9sbGVyIGRpZFBlcmZvcm1TZXJ2ZXJSZWRp
cmVjdEZyb21VUkw6KE5TVVJMICopc291cmNlVVJMIHRvVVJMOihOU1VSTCAqKWRlc3RpbmF0aW9u
VVJMCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTG9hZGlu
Z05hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KIHsKLSAgICBMT0coQCJXS0Jy
b3dzaW5nQ29udGV4dEhpc3RvcnlEZWxlZ2F0ZSAtIGRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdCAt
IGZyb21VUkw6ICVAIC0gdG9VUkw6ICVAIiwgc291cmNlVVJMLCBkZXN0aW5hdGlvblVSTCk7Cisg
ICAgTE9HKEAiZGlkRmluaXNoTG9hZGluZ05hdmlnYXRpb24iKTsKIH0KIAotLSAodm9pZClicm93
c2luZ0NvbnRleHRDb250cm9sbGVyOihXS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIgKilicm93
c2luZ0NvbnRleHRDb250cm9sbGVyIGRpZFVwZGF0ZUhpc3RvcnlUaXRsZTooTlNTdHJpbmcgKil0
aXRsZSBmb3JVUkw6KE5TVVJMICopVVJMCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdl
YlZpZXcgZGlkRmFpbE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24gd2l0aEVy
cm9yOihOU0Vycm9yICopZXJyb3IKIHsKLSAgICBMT0coQCJicm93c2luZ0NvbnRleHRDb250cm9s
bGVyIC0gZGlkVXBkYXRlSGlzdG9yeVRpdGxlIC0gdGl0bGU6ICVAIC0gVVJMOiAlQCIsIHRpdGxl
LCBVUkwpOworICAgIExPRyhAImRpZEZhaWxOYXZpZ2F0aW9uOiAlQCIsIGVycm9yKTsKIH0KIAog
QGVuZAo=
</data>
<flag name="review"
          id="250774"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>