<?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>181616</bug_id>
          
          <creation_ts>2018-01-12 15:30:08 -0800</creation_ts>
          <short_desc>Blob conversion and sanitization doesn&apos;t work with Microsoft Word for Mac 2011</short_desc>
          <delta_ts>2018-01-22 13:13:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>124391</dependson>
    
    <dependson>181920</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>m.samsel</cc>
    
    <cc>thespyder</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1388980</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-01-12 15:30:08 -0800</bug_when>
    <thetext>The blob conversion &amp; sanitation upon paste doesn&apos;t work
when copying &amp; pasting from Microsoft Word for Mac 2011
as reported by the latest comment on the bug 124391.

I can reproduce this issue locally as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388989</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-12 15:36:06 -0800</bug_when>
    <thetext>&lt;rdar://problem/36484908&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388990</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-01-12 15:39:10 -0800</bug_when>
    <thetext>P1 due to the security/privacy implications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391369</commentid>
    <comment_count>3</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-01-19 23:07:51 -0800</bug_when>
    <thetext>Unfortunately, we can&apos;t make the image available in this case because Microsoft Word is putting only file URLs in the HTML content, and we can&apos;t grant access those files in the web content process.

Supporting this would involve starting a new web content process, parse the HTML to be pasted, then UI process to add sandbox extensions for those files in the web content process in which the content is pasted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391371</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-01-19 23:21:20 -0800</bug_when>
    <thetext>For now, I&apos;m going to address the bug that we&apos;re expoing file URLs in the pasted content.

Since Microsoft Word for Mac 2016 has been out for two years, the recommended path for users who are using 2011 version is to upgrade to 2016 version, which does put webarchive into the pasteboard, and image pasting works as expected in the latest version of Safari.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391383</commentid>
    <comment_count>5</comment_count>
      <attachid>331838</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-01-20 02:05:01 -0800</bug_when>
    <thetext>Created attachment 331838
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391509</commentid>
    <comment_count>6</comment_count>
    <who name="Andrew Herron">thespyder</who>
    <bug_when>2018-01-21 16:26:13 -0800</bug_when>
    <thetext>That&apos;s interesting. I had assumed you solved bug 124391 by reading in the files referenced by the file URLs :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391547</commentid>
    <comment_count>7</comment_count>
      <attachid>331895</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-01-21 22:34:43 -0800</bug_when>
    <thetext>Created attachment 331895
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391552</commentid>
    <comment_count>8</comment_count>
      <attachid>331895</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-01-21 22:45:32 -0800</bug_when>
    <thetext>Comment on attachment 331895
Fixes the bug

Oops, I uploaded this patch too early.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391553</commentid>
    <comment_count>9</comment_count>
      <attachid>331897</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-01-21 22:47:01 -0800</bug_when>
    <thetext>Created attachment 331897
Fixes the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391681</commentid>
    <comment_count>10</comment_count>
      <attachid>331897</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-22 09:52:31 -0800</bug_when>
    <thetext>Comment on attachment 331897
Fixes the bug

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

&gt; Source/WebCore/ChangeLog:27
&gt; +        (WebCore::WebContentReader::readHTML): Fixed the bug by sanitizing the markup, and stripping away file URLs.

Hm...this is a bit more aggressive than just stripping away file URLs, since we&apos;re stripping away all URLs that are not one of { http:, https:, data: } by using shouldReplaceSubresourceURL as the filter.

I understand that maintaining a whitelist of URLs to allow is safer than the reverse approach, though...but let&apos;s make it clear in the ChangeLog.

&gt; Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm:533
&gt; +            removeSubresourceURLAttributes(fragment, [] (const URL&amp; url ) {

Nit - extra space after URL&amp; url

&gt; Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm:552
&gt; +            removeSubresourceURLAttributes(fragment, [] (const URL&amp; url ) {

Nit - extra space after URL&amp; url

&gt; Source/WebCore/editing/markup.h:54
&gt; +String sanitizeMarkup(const String&amp;, std::optional&lt;std::function&lt;void(DocumentFragment&amp;)&gt;&gt; fragmentSanitizer = std::nullopt);

Nit - I think we generally prefer to use WTF::Function over std::function.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteHTML.mm:117
&gt; +TEST(PasteHTML, StripsHTTPURLs)

Did you mean &quot;StripsFileURLs&quot;?

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteHTML.mm:131
&gt; +TEST(PasteHTML, DoesNotStripHTTPURLsWhenCustomPasteboardDataIsDisabled)

Ditto, looks like this was meant to be &quot;DoesNotStripFileURLsWhenCustomPasteboardDataIsDisabled&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391687</commentid>
    <comment_count>11</comment_count>
      <attachid>331940</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-01-22 10:05:15 -0800</bug_when>
    <thetext>Created attachment 331940
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391688</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-01-22 10:06:07 -0800</bug_when>
    <thetext>(In reply to Wenson Hsieh from comment #10)
&gt; Comment on attachment 331897 [details]
&gt; Fixes the bug
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=331897&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:27
&gt; &gt; +        (WebCore::WebContentReader::readHTML): Fixed the bug by sanitizing the markup, and stripping away file URLs.
&gt; 
&gt; Hm...this is a bit more aggressive than just stripping away file URLs, since
&gt; we&apos;re stripping away all URLs that are not one of { http:, https:, data: }
&gt; by using shouldReplaceSubresourceURL as the filter.

Good point. Fixed the change log.

&gt; I understand that maintaining a whitelist of URLs to allow is safer than the
&gt; reverse approach, though...but let&apos;s make it clear in the ChangeLog.
&gt; 
&gt; &gt; Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm:533
&gt; &gt; +            removeSubresourceURLAttributes(fragment, [] (const URL&amp; url ) {
&gt; 
&gt; Nit - extra space after URL&amp; url

Fixed.

&gt; &gt; Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm:552
&gt; &gt; +            removeSubresourceURLAttributes(fragment, [] (const URL&amp; url ) {
&gt; 
&gt; Nit - extra space after URL&amp; url

Fixed.

&gt; &gt; Source/WebCore/editing/markup.h:54
&gt; &gt; +String sanitizeMarkup(const String&amp;, std::optional&lt;std::function&lt;void(DocumentFragment&amp;)&gt;&gt; fragmentSanitizer = std::nullopt);
&gt; 
&gt; Nit - I think we generally prefer to use WTF::Function over std::function.

Really? I thought we wanted to use std::function instead of WTF::Function going forward. Whatever. I&apos;d use WTF::Function.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteHTML.mm:117
&gt; &gt; +TEST(PasteHTML, StripsHTTPURLs)
&gt; 
&gt; Did you mean &quot;StripsFileURLs&quot;?

Fixed.

&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteHTML.mm:131
&gt; &gt; +TEST(PasteHTML, DoesNotStripHTTPURLsWhenCustomPasteboardDataIsDisabled)
&gt; 
&gt; Ditto, looks like this was meant to be
&gt; &quot;DoesNotStripFileURLsWhenCustomPasteboardDataIsDisabled&quot;

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391691</commentid>
    <comment_count>13</comment_count>
      <attachid>331897</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-01-22 10:12:50 -0800</bug_when>
    <thetext>Comment on attachment 331897
Fixes the bug

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

&gt;&gt;&gt; Source/WebCore/editing/markup.h:54
&gt;&gt;&gt; +String sanitizeMarkup(const String&amp;, std::optional&lt;std::function&lt;void(DocumentFragment&amp;)&gt;&gt; fragmentSanitizer = std::nullopt);
&gt;&gt; 
&gt;&gt; Nit - I think we generally prefer to use WTF::Function over std::function.
&gt; 
&gt; Really? I thought we wanted to use std::function instead of WTF::Function going forward. Whatever. I&apos;d use WTF::Function.

Just asked Fil Pizlo — it&apos;s WTF::Function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391699</commentid>
    <comment_count>14</comment_count>
      <attachid>331940</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-22 10:29:51 -0800</bug_when>
    <thetext>Comment on attachment 331940
Patch for landing

Rejecting attachment 331940 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
urce22.cpp -o /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/UnifiedSource22.o

** BUILD FAILED **


The following build commands failed:
	CompileC /Volumes/Data/EWS/WebKit/WebKitBuild/WebCore.build/Release/WebCore.build/Objects-normal/x86_64/UnifiedSource8-mm.o /Volumes/Data/EWS/WebKit/WebKitBuild/Release/DerivedSources/WebCore/unified-sources/UnifiedSource8-mm.mm normal x86_64 objective-c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

Full output: http://webkit-queues.webkit.org/results/6171151</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391748</commentid>
    <comment_count>15</comment_count>
      <attachid>331949</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-01-22 12:38:59 -0800</bug_when>
    <thetext>Created attachment 331949
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391766</commentid>
    <comment_count>16</comment_count>
      <attachid>331949</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-22 13:13:41 -0800</bug_when>
    <thetext>Comment on attachment 331949
Patch for landing

Clearing flags on attachment: 331949

Committed r227351: &lt;https://trac.webkit.org/changeset/227351&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1391767</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-22 13:13:43 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331838</attachid>
            <date>2018-01-20 02:05:01 -0800</date>
            <delta_ts>2018-01-21 22:34:41 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>wip181616.patch</filename>
            <type>text/plain</type>
            <size>19942</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRl
ckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW0KaW5kZXggODA0ODhhOTIyODkuLmY0ZGFmMTk5ODJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAt
NTI4LDcgKzUyOCwxNSBAQCBib29sIFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRIVE1MKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogICAgIGlmIChzdHJpbmdPbWl0dGluZ01pY3Jvc29mdFByZWZpeC5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZy
YWdtZW50RnJvbU1hcmt1cChkb2N1bWVudCwgc3RyaW5nT21pdHRpbmdNaWNyb3NvZnRQcmVmaXgs
IGVtcHR5U3RyaW5nKCksIERpc2FsbG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOworICAg
IFN0cmluZyBtYXJrdXA7CisgICAgaWYgKERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6Y3VzdG9t
UGFzdGVib2FyZERhdGFFbmFibGVkKCkgJiYgc2hvdWxkU2FuaXRpemUoKSkgeworICAgICAgICBt
YXJrdXAgPSBzYW5pdGl6ZU1hcmt1cChzdHJpbmdPbWl0dGluZ01pY3Jvc29mdFByZWZpeCwgc3Rk
OjpmdW5jdGlvbjx2b2lkIChEb2N1bWVudEZyYWdtZW50Jik+IHsgW10gKERvY3VtZW50RnJhZ21l
bnQmIGZyYWdtZW50KSB7CisgICAgICAgICAgICByZW1vdmVTdWJyZXNvdXJjZVVSTEF0dHJpYnV0
ZXMoZnJhZ21lbnQsIFtdIChjb25zdCBVUkwmIHVybCApIHsgcmV0dXJuIHNob3VsZFJlcGxhY2VT
dWJyZXNvdXJjZVVSTCh1cmwpOyB9KTsKKyAgICAgICAgfSB9KTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgbWFya3VwID0gc3RyaW5nT21pdHRpbmdNaWNyb3NvZnRQcmVmaXg7CisKKyAgICBhZGRGcmFn
bWVudChjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoZG9jdW1lbnQsIG1hcmt1cCwgZW1wdHlTdHJp
bmcoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKQEAgLTUzOCw5ICs1NDYsMTEgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVy
OjpyZWFkSFRNTChjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgU3RyaW5nIHJhd0hUTUwgPSBzdHJpcE1pY3Jvc29mdFByZWZpeChzdHJpbmcpOwotICAg
IGlmIChzaG91bGRTYW5pdGl6ZSgpKQotICAgICAgICBtYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cChy
YXdIVE1MKTsKLSAgICBlbHNlCisgICAgaWYgKHNob3VsZFNhbml0aXplKCkpIHsKKyAgICAgICAg
bWFya3VwID0gc2FuaXRpemVNYXJrdXAocmF3SFRNTCwgc3RkOjpmdW5jdGlvbjx2b2lkIChEb2N1
bWVudEZyYWdtZW50Jik+IHsgW10gKERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50KSB7CisgICAg
ICAgICAgICByZW1vdmVTdWJyZXNvdXJjZVVSTEF0dHJpYnV0ZXMoZnJhZ21lbnQsIFtdIChjb25z
dCBVUkwmIHVybCApIHsgcmV0dXJuIHNob3VsZFJlcGxhY2VTdWJyZXNvdXJjZVVSTCh1cmwpOyB9
KTsKKyAgICAgICAgfSB9KTsKKyAgICB9IGVsc2UKICAgICAgICAgbWFya3VwID0gcmF3SFRNTDsK
IAogICAgIHJldHVybiAhbWFya3VwLmlzRW1wdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cAppbmRleCA3YjNiMTkzMWU0MC4uYmExNzU1MTRjZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNs
dWRlICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJVUkwuaCIK
KyNpbmNsdWRlICJVUkxQYXJzZXIuaCIKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCiAj
aW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpA
QCAtMTQ0LDYgKzE0NSwzMCBAQCB2b2lkIHJlcGxhY2VTdWJyZXNvdXJjZVVSTHMoUmVmPERvY3Vt
ZW50RnJhZ21lbnQ+JiYgZnJhZ21lbnQsIEhhc2hNYXA8QXRvbWljU3RyaQogICAgICAgICBjaGFu
Z2UuYXBwbHkoKTsKIH0KIAorc3RydWN0IEVsZW1lbnRBdHRyaWJ1dGUgeworICAgIFJlZjxFbGVt
ZW50PiBlbGVtZW50OworICAgIFF1YWxpZmllZE5hbWUgYXR0cmlidXRlTmFtZTsKK307CisKK3Zv
aWQgcmVtb3ZlU3VicmVzb3VyY2VVUkxBdHRyaWJ1dGVzKFJlZjxEb2N1bWVudEZyYWdtZW50PiYm
IGZyYWdtZW50LCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKGNvbnN0IFVSTCYpPiBzaG91bGRSZW1vdmVV
UkwpCit7CisgICAgVmVjdG9yPEVsZW1lbnRBdHRyaWJ1dGU+IGF0dHJpYnV0ZXNUb1JlbW92ZTsK
KyAgICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50PihmcmFn
bWVudCkpIHsKKyAgICAgICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0ZXMoKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICBmb3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDog
ZWxlbWVudC5hdHRyaWJ1dGVzSXRlcmF0b3IoKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFRo
aXMgd29uJ3Qgd29yayBmb3Igc3Jjc2V0LgorICAgICAgICAgICAgaWYgKGVsZW1lbnQuYXR0cmli
dXRlQ29udGFpbnNVUkwoYXR0cmlidXRlKSAmJiAhYXR0cmlidXRlLnZhbHVlKCkuaXNFbXB0eSgp
KSB7CisgICAgICAgICAgICAgICAgVVJMIHVybCA9IFVSTFBhcnNlciB7IGF0dHJpYnV0ZS52YWx1
ZSgpIH0ucmVzdWx0KCk7CisgICAgICAgICAgICAgICAgaWYgKHNob3VsZFJlbW92ZVVSTCh1cmwp
KQorICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzVG9SZW1vdmUuYXBwZW5kKHsgZWxlbWVu
dCwgYXR0cmlidXRlLm5hbWUoKSB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KyAgICBmb3IgKGF1dG8mIGl0ZW0gOiBhdHRyaWJ1dGVzVG9SZW1vdmUpCisgICAgICAgIGl0ZW0u
ZWxlbWVudC0+cmVtb3ZlQXR0cmlidXRlKGl0ZW0uYXR0cmlidXRlTmFtZSk7Cit9CisKIHN0ZDo6
dW5pcXVlX3B0cjxQYWdlPiBjcmVhdGVQYWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKQogewog
ICAgIFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uKGNyZWF0ZUVtcHR5RWRpdG9y
Q2xpZW50KCksIFNvY2tldFByb3ZpZGVyOjpjcmVhdGUoKSwgTGliV2ViUlRDUHJvdmlkZXI6OmNy
ZWF0ZSgpLCBDYWNoZVN0b3JhZ2VQcm92aWRlcjo6Y3JlYXRlKCkpOwpAQCAtMTcyLDcgKzE5Nyw3
IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBjcmVhdGVQYWdlRm9yU2FuaXRpemluZ1dlYkNvbnRl
bnQoKQogfQogCiAKLVN0cmluZyBzYW5pdGl6ZU1hcmt1cChjb25zdCBTdHJpbmcmIHJhd0hUTUwp
CitTdHJpbmcgc2FuaXRpemVNYXJrdXAoY29uc3QgU3RyaW5nJiByYXdIVE1MLCBzdGQ6Om9wdGlv
bmFsPHN0ZDo6ZnVuY3Rpb248dm9pZCAoRG9jdW1lbnRGcmFnbWVudCYpPj4gZnJhZ21lbnRTYW5p
dGl6ZXIpCiB7CiAgICAgYXV0byBwYWdlID0gY3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250
ZW50KCk7CiAgICAgRG9jdW1lbnQqIHN0YWdpbmdEb2N1bWVudCA9IHBhZ2UtPm1haW5GcmFtZSgp
LmRvY3VtZW50KCk7CkBAIC0xODEsNiArMjA2LDEwIEBAIFN0cmluZyBzYW5pdGl6ZU1hcmt1cChj
b25zdCBTdHJpbmcmIHJhd0hUTUwpCiAgICAgQVNTRVJUKGJvZHlFbGVtZW50KTsKIAogICAgIGF1
dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKnN0YWdpbmdEb2N1bWVudCwg
cmF3SFRNTCwgZW1wdHlTdHJpbmcoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KTsKKworICAgIGlmIChmcmFnbWVudFNhbml0aXplcikKKyAgICAgICAgKCpmcmFnbWVudFNhbml0
aXplcikoZnJhZ21lbnQpOworCiAgICAgYm9keUVsZW1lbnQtPmFwcGVuZENoaWxkKGZyYWdtZW50
LmdldCgpKTsKIAogICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpzdGFnaW5nRG9jdW1l
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKaW5kZXggNmE3ZjZmZmYyYmUuLjNiOWU5N2RiOTk5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJG
cmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKICNpbmNsdWRlICJIVE1MSW50ZXJjaGFuZ2Uu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDgg
KzQ4LDEwIEBAIGNsYXNzIFF1YWxpZmllZE5hbWU7CiBjbGFzcyBSYW5nZTsKIAogdm9pZCByZXBs
YWNlU3VicmVzb3VyY2VVUkxzKFJlZjxEb2N1bWVudEZyYWdtZW50PiYmLCBIYXNoTWFwPEF0b21p
Y1N0cmluZywgQXRvbWljU3RyaW5nPiYmKTsKK3ZvaWQgcmVtb3ZlU3VicmVzb3VyY2VVUkxBdHRy
aWJ1dGVzKFJlZjxEb2N1bWVudEZyYWdtZW50PiYmLCBzdGQ6OmZ1bmN0aW9uPGJvb2wgKGNvbnN0
IFVSTCYpPiBzaG91bGRSZW1vdmVVUkwpOworCiBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4gY3JlYXRl
UGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KCk7Ci1TdHJpbmcgc2FuaXRpemVNYXJrdXAoY29u
c3QgU3RyaW5nJik7CitTdHJpbmcgc2FuaXRpemVNYXJrdXAoY29uc3QgU3RyaW5nJiwgc3RkOjpv
cHRpb25hbDxzdGQ6OmZ1bmN0aW9uPHZvaWQgKERvY3VtZW50RnJhZ21lbnQmKT4+IGZyYWdtZW50
U2FuaXRpemVyID0gc3RkOjpudWxsb3B0KTsKIAogZW51bSBFQ2hpbGRyZW5Pbmx5IHsgSW5jbHVk
ZU5vZGUsIENoaWxkcmVuT25seSB9OwogZW51bSBFQWJzb2x1dGVVUkxzIHsgRG9Ob3RSZXNvbHZl
VVJMcywgUmVzb2x2ZUFsbFVSTHMsIFJlc29sdmVOb25Mb2NhbFVSTHMgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzLmNwcAppbmRleCAwNWJiMTFk
ZjViMS4uNGJmMjBlN2EyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVwcmVj
YXRlZEdsb2JhbFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlcHJlY2F0
ZWRHbG9iYWxTZXR0aW5ncy5jcHAKQEAgLTg0LDEwICs4NCwxNiBAQCBib29sIERlcHJlY2F0ZWRH
bG9iYWxTZXR0aW5nczo6Z1Nob3VsZE9wdE91dE9mTmV0d29ya1N0YXRlT2JzZXJ2YXRpb24gPSBm
YWxzZTsKIGJvb2wgRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpnTWFuYWdlQXVkaW9TZXNzaW9u
ID0gZmFsc2U7CiBib29sIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6Z0N1c3RvbVBhc3RlYm9h
cmREYXRhRW5hYmxlZCA9IGZhbHNlOwogCisvLyBGSVhNRTogUmVwbGFjZSB0aGVzZSB3aXRoIGEg
cnVudGltZSBlbmFibGVkIGZsYWcuCiBib29sIERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6ZGVm
YXVsdEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgpCiB7CiAgICAgaWYgKCFpc0luV2ViUHJv
Y2VzcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGRlZmF1bHRDdXN0b21Q
YXN0ZWJvYXJkRGF0YUVuYWJsZWRJbldlYktpdCgpOworfQorCitib29sIERlcHJlY2F0ZWRHbG9i
YWxTZXR0aW5nczo6ZGVmYXVsdEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZEluV2ViS2l0KCkK
K3sKICNpZiBQTEFURk9STShJT1MpICYmIF9fSVBIT05FX09TX1ZFUlNJT05fTUFYX0FMTE9XRUQg
Pj0gMTEwMzAwCiAgICAgcmV0dXJuIElPU0FwcGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpIHx8
IGR5bGRfZ2V0X3Byb2dyYW1fc2RrX3ZlcnNpb24oKSA+PSBEWUxEX0lPU19WRVJTSU9OXzExXzM7
CiAjZWxpZiBQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA+
PSAxMDEzMDAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVwcmVjYXRlZEdsb2Jh
bFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RlcHJlY2F0ZWRHbG9iYWxTZXR0aW5n
cy5oCmluZGV4IDExZWM3ZWMzNDU2Li4xZGYxYjM2NTM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9EZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RlcHJlY2F0ZWRHbG9iYWxTZXR0aW5ncy5oCkBAIC0xMTIsNiArMTEyLDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyB2b2lkIHNldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZChib29s
IGVuYWJsZWQpIHsgZ0N1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCA9IGVuYWJsZWQ7IH0KICAg
ICBzdGF0aWMgYm9vbCBjdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQoKSB7IHJldHVybiBnQ3Vz
dG9tUGFzdGVib2FyZERhdGFFbmFibGVkOyB9CiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGJv
b2wgZGVmYXVsdEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgpOworICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyBib29sIGRlZmF1bHRDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWRJbldlYktp
dCgpOwogICAgIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAgICAgc3RhdGljIGJvb2wgbW9j
a0NhcHR1cmVEZXZpY2VzRW5hYmxlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVu
Y2VzLnlhbWwKaW5kZXggZTg1NjBhYjJhZTAuLjI2MDBmNWJkZjMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKQEAgLTc3OSw3ICs3NzksNyBAQCBEYXRhVHJhbnNm
ZXJJdGVtc0VuYWJsZWQ6CiAKIEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZDoKICAgdHlwZTog
Ym9vbAotICBkZWZhdWx0VmFsdWU6IFdlYkNvcmU6OkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6
ZGVmYXVsdEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgpCisgIGRlZmF1bHRWYWx1ZTogV2Vi
Q29yZTo6RGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjpkZWZhdWx0Q3VzdG9tUGFzdGVib2FyZERh
dGFFbmFibGVkSW5XZWJLaXQoKQogICBodW1hblJlYWRhYmxlTmFtZTogIkN1c3RvbSBwYXRlYm9h
cmQgZGF0YSIKICAgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uOiAiRW5hYmxlIGN1c3RvbSBjbGlw
Ym9hcmQgdHlwZXMgYW5kIGJldHRlciBzZWN1cml0eSBtb2RlbCBmb3IgY2xpcGJvYXJkIEFQSS4i
CiAgIHdlYmNvcmVCaW5kaW5nOiBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3MKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMzcwN2U4Nzg1NGMuLmY3MjI3MTRiYjNkIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtNTc1LDYgKzU3NSw3IEBACiAJCTlCNjI2MzBDMUY4QzI1QzgwMDdFRTI5QiAv
KiBjb3B5LXVybC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlCNjI2MzBCMUY4QzI1MTAwMDdFRTI5QiAvKiBjb3B5LXVybC5odG1sICov
OyB9OwogCQk5QjdBMzdDNDFGOEFFQkE1MDA0QUEyMjggLyogQ29weVVSTC5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCN0EzN0MyMUY4QUVCQTUwMDRB
QTIyOCAvKiBDb3B5VVJMLm1tICovOyB9OwogCQk5QjdENzQwRjFGODM3ODc3MDAwNkM0MzIgLyog
cGFzdGUtcnRmZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDlCN0Q3NDBFMUY4Mzc3RTYwMDA2QzQzMiAvKiBwYXN0ZS1ydGZkLmh0bWwg
Ki87IH07CisJCTlCQ0I3QzI4MjAxMzA2MDAwMDNFN0MwQyAvKiBQYXN0ZUhUTUwubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkNCN0MyNjIwMTMwNjAw
MDAzRTdDMEMgLyogUGFzdGVIVE1MLm1tICovOyB9OwogCQk5QkQ0MjM5QTFFMDRCRDk4MDAyMDAz
OTUgLyogQXR0cmlidXRlZFN1YnN0cmluZ0ZvclByb3Bvc2VkUmFuZ2VXaXRoSW1hZ2UubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkQ0MjM5OTFFMDRC
RDk4MDAyMDAzOTUgLyogQXR0cmlidXRlZFN1YnN0cmluZ0ZvclByb3Bvc2VkUmFuZ2VXaXRoSW1h
Z2UubW0gKi87IH07CiAJCTlCRDQyMzlDMUUwNEMwMUMwMDIwMDM5NSAvKiBjaGluZXNlLWNoYXJh
Y3Rlci13aXRoLWltYWdlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUJENDIzOUIxRTA0QkZEMDAwMjAwMzk1IC8qIGNoaW5lc2UtY2hh
cmFjdGVyLXdpdGgtaW1hZ2UuaHRtbCAqLzsgfTsKIAkJOUJENTExMUMxRkU4RTExNjAwRDJCNjMw
IC8qIEFjY2Vzc2luZ1Bhc3RlZEltYWdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUJENTExMUIxRkU4RTExNjAwRDJCNjMwIC8qIEFjY2Vzc2luZ1Bh
c3RlZEltYWdlLm1tICovOyB9OwpAQCAtMTU4NSw2ICsxNTg2LDcgQEAKIAkJOUI3OTE2NEYxQkQ4
OUQwRDAwRDUwQjhGIC8qIEZpcnN0UmVzcG9uZGVyU2Nyb2xsaW5nUG9zaXRpb24ubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBGaXJzdFJlc3BvbmRlclNjcm9sbGlu
Z1Bvc2l0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QjdBMzdDMjFGOEFF
QkE1MDA0QUEyMjggLyogQ29weVVSTC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvcHlVUkwu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCN0Q3NDBFMUY4Mzc3RTYwMDA2QzQz
MiAvKiBwYXN0ZS1ydGZkLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAicGFzdGUtcnRmZC5odG1sIjsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOUJDQjdDMjYyMDEzMDYwMDAwM0U3QzBDIC8qIFBhc3Rl
SFRNTC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhc3RlSFRNTC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOUJENDIzOTkxRTA0QkQ5ODAwMjAwMzk1IC8qIEF0dHJpYnV0ZWRT
dWJzdHJpbmdGb3JQcm9wb3NlZFJhbmdlV2l0aEltYWdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gQXR0cmlidXRlZFN1YnN0cmluZ0ZvclByb3Bvc2VkUmFuZ2VX
aXRoSW1hZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCRDQyMzlCMUUwNEJG
RDAwMDIwMDM5NSAvKiBjaGluZXNlLWNoYXJhY3Rlci13aXRoLWltYWdlLmh0bWwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0Lmh0bWw7IHBhdGggPSAiY2hpbmVzZS1jaGFyYWN0ZXItd2l0aC1pbWFnZS5odG1sIjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJENTExMUIxRkU4RTExNjAwRDJCNjMwIC8q
IEFjY2Vzc2luZ1Bhc3RlZEltYWdlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWNjZXNzaW5n
UGFzdGVkSW1hZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTEwLDYgKzIx
MTIsNyBAQAogCQkJCUNFQkNBMTJFMUUzQTY2MDEwMEM3MzI5MyAvKiBPdmVycmlkZUNvbnRlbnRT
ZWN1cml0eVBvbGljeS5tbSAqLywKIAkJCQk5QkRDQ0Q4NTFGN0QwQjA3MDAwMDlBMTggLyogUGFz
dGVJbWFnZS5tbSAqLywKIAkJCQk5QkREOTU1NjFGODM2ODM2MDBEMjBDNjAgLyogUGFzdGVSVEZE
Lm1tICovLAorCQkJCTlCQ0I3QzI2MjAxMzA2MDAwMDNFN0MwQyAvKiBQYXN0ZUhUTUwubW0gKi8s
CiAJCQkJOUIyMzQ2NDExRjk0M0EyNDAwREIxRDIzIC8qIFBhc3RlV2ViQXJjaGl2ZS5tbSAqLywK
IAkJCQkzRkNDNEZFNDFFQzRFODUyMDA3NkUzN0MgLyogUGljdHVyZUluUGljdHVyZURlbGVnYXRl
Lm1tICovLAogCQkJCTgzQkFFRThDMUVGNDYyNTUwMERERTg5NCAvKiBQbHVnaW5Mb2FkQ2xpZW50
UG9saWNpZXMubW0gKi8sCkBAIC0zMzg5LDYgKzMzOTIsNyBAQAogCQkJCTdDQ0U3RUJCMUE0MTFB
N0UwMDQ0N0M0QyAvKiBET01IVE1MVGFibGVDZWxsQ2VsbEFib3ZlLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkQ1MUEwQzcxQzhCRjAwQzAwNzY1QzQ1IC8qIERPTUhUTUxWaWRlb0VsZW1lbnRXcmFw
cGVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDYzOTdCOTUxREMyQzg1MDAwOUE3OEFFIC8qIERP
TU5vZGUubW0gaW4gU291cmNlcyAqLywKKwkJCQk5QkNCN0MyODIwMTMwNjAwMDAzRTdDMEMgLyog
UGFzdGVIVE1MLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQkMxQTQxMUE3RTAwNDQ3QzRD
IC8qIERPTU5vZGVGcm9tSlNPYmplY3QubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCRDFB
NDExQTdFMDA0NDdDNEMgLyogRE9NUmFuZ2VPZlN0cmluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTdDQ0U3RUVDMUE0MTFBRTYwMDQ0N0M0QyAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpYy5jcHAg
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUGFzdGVIVE1MLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9QYXN0ZUhUTUwubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LjQ0NTIzZWRhZDQwCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9QYXN0ZUhUTUwubW0KQEAgLTAsMCArMSwxNTkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRG
T1JNKENPQ09BKQorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVz
dFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViQ29yZS9MZWdhY3lOU1Bhc3RlYm9hcmRUeXBlcy5o
PgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJL
aXQvV0tQcmVmZXJlbmNlc1JlZlByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdD
b25maWd1cmF0aW9uUHJpdmF0ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9y
dCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSA8
TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgorI2VuZGlmCisKK0BpbnRl
cmZhY2UgV0tXZWJWaWV3ICgpCistICh2b2lkKXBhc3RlOihpZClzZW5kZXI7CitAZW5kCisKKyNp
ZiBQTEFURk9STShNQUMpCit2b2lkIHdyaXRlSFRNTFRvUGFzdGVib2FyZChOU1N0cmluZyAqaHRt
bCkKK3sKKyAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gZGVjbGFyZVR5cGVz
OkBbV2ViQ29yZTo6bGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCldIG93bmVyOm5pbF07CisgICAg
W1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNldFN0cmluZzpodG1sIGZvclR5cGU6
V2ViQ29yZTo6bGVnYWN5SFRNTFBhc3RlYm9hcmRUeXBlKCldOworfQorI2Vsc2UKK3ZvaWQgd3Jp
dGVIVE1MVG9QYXN0ZWJvYXJkKE5TU3RyaW5nICpodG1sKQoreworICAgIFtbVUlQYXN0ZWJvYXJk
IGdlbmVyYWxQYXN0ZWJvYXJkXSBzZXRJdGVtczpAW0B7IChOU1N0cmluZyAqKWtVVFR5cGVIVE1M
IDogaHRtbH1dXTsKK30KKyNlbmRpZgorCitzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+
IGNyZWF0ZVdlYlZpZXdXaXRoQ3VzdG9tUGFzdGVib2FyZERhdGFTZXR0aW5nKGJvb2wgZW5hYmxl
ZCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10g
aW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKV0pOworICAgIGF1dG8gcHJl
ZmVyZW5jZXMgPSAoV0tQcmVmZXJlbmNlc1JlZilbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJl
ZmVyZW5jZXNdOworICAgIFdLUHJlZmVyZW5jZXNTZXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQo
cHJlZmVyZW5jZXMsIHRydWUpOworICAgIFdLUHJlZmVyZW5jZXNTZXRDdXN0b21QYXN0ZWJvYXJk
RGF0YUVuYWJsZWQocHJlZmVyZW5jZXMsIGVuYWJsZWQpOworICAgIHJldHVybiB3ZWJWaWV3Owor
fQorCitURVNUKFBhc3RlSFRNTCwgRXhwb3Nlc0hUTUxUeXBlSW5EYXRhVHJhbnNmZXIpCit7Cisg
ICAgYXV0byB3ZWJWaWV3ID0gY3JlYXRlV2ViVmlld1dpdGhDdXN0b21QYXN0ZWJvYXJkRGF0YVNl
dHRpbmcodHJ1ZSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVk
OkAicGFzdGUtcnRmZCJdOworCisgICAgd3JpdGVIVE1MVG9QYXN0ZWJvYXJkKEAiPCFET0NUWVBF
IGh0bWw+PGh0bWw+PGJvZHk+PHA+PHU+aGVsbG88L3U+LCB3b3JsZDwvcD48L2JvZHk+PC9odG1s
PiIpOworICAgIFt3ZWJWaWV3IHBhc3RlOm5pbF07CisKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YS50eXBlcy5pbmNs
dWRlcygndGV4dC9odG1sJykiXSk7CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImVkaXRvci5pbm5lckhUTUwgPSBjbGlwYm9hcmREYXRhLnZhbHVlc1swXTsgZWRp
dG9yLmZvY3VzKCkiXTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlDb21tYW5kU3RhdGUoJ3VuZGVybGluZScpIl0u
Ym9vbFZhbHVlKTsKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
Z2V0U2VsZWN0aW9uKCkubW9kaWZ5KCdtb3ZlJywgJ2ZvcndhcmQnLCAnbGluZWJvdW5kYXJ5Jyki
XTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImRvY3VtZW50LnF1ZXJ5Q29tbWFuZFN0YXRlKCd1bmRlcmxpbmUnKSJdLmJvb2xWYWx1ZSk7
CisgICAgRVhQRUNUX1dLX1NUUkVRKCJoZWxsbywgd29ybGQiLCBbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAiZWRpdG9yLnRleHRDb250ZW50Il0pOworfQorCitURVNUKFBh
c3RlSFRNTCwgU2FuaXRpemVzSFRNTCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBjcmVhdGVXZWJW
aWV3V2l0aEN1c3RvbVBhc3RlYm9hcmREYXRhU2V0dGluZyh0cnVlKTsKKyAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJwYXN0ZS1ydGZkIl07CisKKyAgICB3cml0
ZUhUTUxUb1Bhc3RlYm9hcmQoQCI8IURPQ1RZUEUgaHRtbD48bWV0YSBjb250ZW50PVwic2VjcmV0
XCI+PGIgb25tb3VzZW92ZXI9XCJkYW5nZXJvdXNDb2RlKClcIj5oZWxsbzwvYj4iCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICI8IS0tIHNlY3JldC0tPiwgd29ybGQ8c2NyaXB0PmRhbmdlcm91
c0NvZGUoKTwvc2NyaXB0Pic7Iik7CisgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKKworICAgIEVY
UEVDVF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjbGlwYm9h
cmREYXRhLnR5cGVzLmluY2x1ZGVzKCd0ZXh0L2h0bWwnKSJdLmJvb2xWYWx1ZSk7CisgICAgRVhQ
RUNUX1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2Fy
ZERhdGEudmFsdWVzWzBdLmluY2x1ZGVzKCdoZWxsbycpIl0uYm9vbFZhbHVlKTsKKyAgICBFWFBF
Q1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJk
RGF0YS52YWx1ZXNbMF0uaW5jbHVkZXMoJ3dvcmxkJykiXS5ib29sVmFsdWUpOworICAgIEVYUEVD
VF9GQUxTRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJk
RGF0YS52YWx1ZXNbMF0uaW5jbHVkZXMoJ3NlY3JldCcpIl0uYm9vbFZhbHVlKTsKKyAgICBFWFBF
Q1RfRkFMU0UoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2Fy
ZERhdGEudmFsdWVzWzBdLmluY2x1ZGVzKCdkYW5nZXJvdXNDb2RlJykiXS5ib29sVmFsdWUpOwor
fQorCitURVNUKFBhc3RlSFRNTCwgRG9lc05vdFNhbml0aXplSFRNTFdoZW5DdXN0b21QYXN0ZWJv
YXJkRGF0YUlzRGlzYWJsZWQpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gY3JlYXRlV2ViVmlld1dp
dGhDdXN0b21QYXN0ZWJvYXJkRGF0YVNldHRpbmcoZmFsc2UpOworICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInBhc3RlLXJ0ZmQiXTsKKworICAgIHdyaXRlSFRN
TFRvUGFzdGVib2FyZChAIjwhRE9DVFlQRSBodG1sPjxtZXRhIGNvbnRlbnQ9XCJzZWNyZXRcIj48
YiBvbm1vdXNlb3Zlcj1cImRhbmdlcm91c0NvZGUoKVwiPmhlbGxvPC9iPiIKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIjwhLS0gc2VjcmV0LS0+LCB3b3JsZDxzY3JpcHQ+ZGFuZ2Vyb3VzQ29k
ZSgpPC9zY3JpcHQ+JzsiKTsKKyAgICBbd2ViVmlldyBwYXN0ZTpuaWxdOworCisgICAgRVhQRUNU
X1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERh
dGEudHlwZXMuaW5jbHVkZXMoJ3RleHQvaHRtbCcpIl0uYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1Rf
VFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0
YS52YWx1ZXNbMF0uaW5jbHVkZXMoJ2hlbGxvJykiXS5ib29sVmFsdWUpOworICAgIEVYUEVDVF9U
UlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjbGlwYm9hcmREYXRh
LnZhbHVlc1swXS5pbmNsdWRlcygnd29ybGQnKSJdLmJvb2xWYWx1ZSk7CisgICAgRVhQRUNUX1RS
VUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERhdGEu
dmFsdWVzWzBdLmluY2x1ZGVzKCdzZWNyZXQnKSJdLmJvb2xWYWx1ZSk7CisgICAgRVhQRUNUX1RS
VUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERhdGEu
dmFsdWVzWzBdLmluY2x1ZGVzKCdkYW5nZXJvdXNDb2RlJykiXS5ib29sVmFsdWUpOworfQorCitU
RVNUKFBhc3RlSFRNTCwgU3RyaXBzSFRUUFVSTHMpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gY3Jl
YXRlV2ViVmlld1dpdGhDdXN0b21QYXN0ZWJvYXJkRGF0YVNldHRpbmcodHJ1ZSk7CisgICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAicGFzdGUtcnRmZCJdOworCisg
ICAgd3JpdGVIVE1MVG9QYXN0ZWJvYXJkKEAiPCFET0NUWVBFIGh0bWw+PGh0bWw+PGJvZHk+PGEg
YWx0PSdoZWxsbycgaHJlZj0nZmlsZTovLy9wcml2YXRlL3Zhci9mb2xkZXJzL3NlY3JldC9maWxl
cy8nPndvcmxkPC9hPiIpOworICAgIFt3ZWJWaWV3IHBhc3RlOm5pbF07CisKKyAgICBFWFBFQ1Rf
VFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0
YS50eXBlcy5pbmNsdWRlcygndGV4dC9odG1sJykiXS5ib29sVmFsdWUpOworICAgIEVYUEVDVF9U
UlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjbGlwYm9hcmREYXRh
LnZhbHVlc1swXS5pbmNsdWRlcygnaGVsbG8nKSJdLmJvb2xWYWx1ZSk7CisgICAgRVhQRUNUX1RS
VUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERhdGEu
dmFsdWVzWzBdLmluY2x1ZGVzKCd3b3JsZCcpIl0uYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfRkFM
U0UoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERhdGEu
dmFsdWVzWzBdLmluY2x1ZGVzKCdzZWNyZXQnKSJdLmJvb2xWYWx1ZSk7Cit9CisKK1RFU1QoUGFz
dGVIVE1MLCBEb2VzTm90U3RyaXBIVFRQVVJMc1doZW5DdXN0b21QYXN0ZWJvYXJkRGF0YUlzRGlz
YWJsZWQpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gY3JlYXRlV2ViVmlld1dpdGhDdXN0b21QYXN0
ZWJvYXJkRGF0YVNldHRpbmcoZmFsc2UpOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2Fk
VGVzdFBhZ2VOYW1lZDpAInBhc3RlLXJ0ZmQiXTsKKworICAgIHdyaXRlSFRNTFRvUGFzdGVib2Fy
ZChAIjwhRE9DVFlQRSBodG1sPjxodG1sPjxib2R5PjxhIGFsdD0naGVsbG8nIGhyZWY9J2ZpbGU6
Ly8vcHJpdmF0ZS92YXIvZm9sZGVycy9zZWNyZXQvZmlsZXMvJz53b3JsZDwvYT4iKTsKKyAgICBb
d2ViVmlldyBwYXN0ZTpuaWxdOworCisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERhdGEudHlwZXMuaW5jbHVkZXMoJ3RleHQv
aHRtbCcpIl0uYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YS52YWx1ZXNbMF0uaW5jbHVkZXMoJ2hl
bGxvJykiXS5ib29sVmFsdWUpOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJjbGlwYm9hcmREYXRhLnZhbHVlc1swXS5pbmNsdWRlcygnd29y
bGQnKSJdLmJvb2xWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERhdGEudmFsdWVzWzBdLmluY2x1ZGVzKCdzZWNy
ZXQnKSJdLmJvb2xWYWx1ZSk7Cit9CisKK1RFU1QoUGFzdGVIVE1MLCBLZWVwc0hUVFBVUkxzKQor
eworICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdXaXRoQ3VzdG9tUGFzdGVib2FyZERh
dGFTZXR0aW5nKHRydWUpOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VO
YW1lZDpAInBhc3RlLXJ0ZmQiXTsKKworICAgIHdyaXRlSFRNTFRvUGFzdGVib2FyZChAIjwhRE9D
VFlQRSBodG1sPjxodG1sPjxib2R5PjxhIHRpdGxlPSdoZWxsbycgaHJlZj0naHR0cHM6Ly9zdm4u
d2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVuay9MYXlvdXRUZXN0cy9lZGl0aW5nL3Jl
c291cmNlcy9hYmUucG5nJz53b3JsZDwvYT4iKTsKKyAgICBbd2ViVmlldyBwYXN0ZTpuaWxdOwor
CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
ImNsaXBib2FyZERhdGEudHlwZXMuaW5jbHVkZXMoJ3RleHQvaHRtbCcpIl0uYm9vbFZhbHVlKTsK
KyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
Y2xpcGJvYXJkRGF0YS52YWx1ZXNbMF0uaW5jbHVkZXMoJ2hlbGxvJykiXS5ib29sVmFsdWUpOwor
ICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJj
bGlwYm9hcmREYXRhLnZhbHVlc1swXS5pbmNsdWRlcygnd29ybGQnKSJdLmJvb2xWYWx1ZSk7Cisg
ICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNs
aXBib2FyZERhdGEudmFsdWVzWzBdLmluY2x1ZGVzKCdhYmUucG5nJykiXS5ib29sVmFsdWUpOwor
fQorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oQ09DT0EpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331895</attachid>
            <date>2018-01-21 22:34:43 -0800</date>
            <delta_ts>2018-01-21 22:45:32 -0800</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-181616-20180121223440.patch</filename>
            <type>text/plain</type>
            <size>21135</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI3MjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjI2OGJkNmI1NWEyNmFk
NjZlMTUwYTc2OTFkNWY2N2ZjYmVjNWZkYi4uZDY2NmVhYmNiZjg3Yjg2YTZhYjY2MGI1N2QwMWQ2
YmFjMzIzYzAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE4LTAxLTIxICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEJsb2IgY29udmVyc2lvbiBh
bmQgc2FuaXRpemF0aW9uIGRvZXNuJ3Qgd29yayB3aXRoIE1pY3Jvc29mdCBXb3JkIGZvciBNYWMg
MjAxMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgx
NjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjQ4NDkwOD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgYnVnIHdhcyBjYXVzZWQgYnkgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZEhUTUwgYW5kIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRI
VE1MIG5vdCBzYW5pdGl6aW5nIHBsYWluIEhUTUwgc3RyaW5nCisgICAgICAgIGFzIGRvbmUgZm9y
IHdlYiBhcmNoaXZlcyBldmVuIHdoZW4gY3VzdG9tIHBhc3RlYm9hcmQgZGF0YSBpcyBlbmFibGVk
LiBGaXhlZCB0aGUgYnVnIGJ5IGRvaW5nIHRoZSBzYW5pdGl6YXRpb24uCisKKyAgICAgICAgVW5m
b3J0dW5hdGVseSwgd2UgY2FuJ3QgbWFrZSBmaWxlIFVSTHMgYXZhaWxhYmxlIGluIHRoaXMgY2Fz
ZSBiZWNhdXNlIFdlYkNvbnRlbnQgcHJvY2VzcyBkb2Vzbid0IGhhdmUgc2FuZGJveCBleHRlbnNp
b25zCisgICAgICAgIHRvIGFjY2VzcyBsb2NhbCBmaWxlcyByZWZlcmVuY2VkIGJ5IHRoZSBIVE1M
IHNvdXJjZSBpbiB0aGUgY2xpcGJvYXJkLCBhbmQgd2UgY2FuJ3QgbWFrZSBXZWJDb250ZW50IHBy
b2Nlc3MgcmVxdWVzdCBmb3IKKyAgICAgICAgYSBzYW5kYm94IGV4dGVuc2lvbsK4b24gYW4gYXJi
aXRyYXJ5IGxvY2FsIGZpbGUsIGFzIGl0IHdvdWxkIGRlZmVhdCB0aGUgd2hvbGUgcG9pbnQgb2Yg
c2FuZGJveGluZy4KKworICAgICAgICBJbnN0ZWFkLCB3ZSBzdHJpcCBhd2F5IGFsbCBIVE1MIGF0
dHJpYnV0ZXMgcmVmZXJlbmNpbmcgYSBmaWxlIFVSTCB3aGVuIHNhbml0aXppbmcgdGV4dC9odG1s
IGZyb20gdGhlIGNsaXBib2FyZCB0byBhdm9pZAorICAgICAgICBleHBvc2luZyBsb2NhbCBmaWxl
IHBhdGhzLCB3aGljaCBjYW4gcmV2ZWFsIHByaXZhY3kgJiBzZWN1cml0eSBzZW5zaXRpdmUgaW5m
b3JtYXRpb24gc3VjaCBhcyB0aGUgdXNlcidzIGZ1bGwgbmFtZSwgYW5kCisgICAgICAgIHRoZSBs
b2NhdGlvbiBvZiBwcml2YXRlIGNvbnRhaW5lcnMgb2Ygb3RoZXIgYXBwbGljYXRpb25zIGluIHRo
ZSBzeXN0ZW0uCisKKyAgICAgICAgVGVzdHM6IFBhc3RlSFRNTC5Eb2VzTm90U2FuaXRpemVIVE1M
V2hlbkN1c3RvbVBhc3RlYm9hcmREYXRhSXNEaXNhYmxlZAorICAgICAgICAgICAgICAgUGFzdGVI
VE1MLkRvZXNOb3RTdHJpcEhUVFBVUkxzV2hlbkN1c3RvbVBhc3RlYm9hcmREYXRhSXNEaXNhYmxl
ZAorICAgICAgICAgICAgICAgUGFzdGVIVE1MLkV4cG9zZXNIVE1MVHlwZUluRGF0YVRyYW5zZmVy
CisgICAgICAgICAgICAgICBQYXN0ZUhUTUwuS2VlcHNIVFRQVVJMcworICAgICAgICAgICAgICAg
UGFzdGVIVE1MLlNhbml0aXplc0hUTUwKKworICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6
cmVhZEhUTUwpOiBGaXhlZCB0aGUgYnVnIGJ5IHNhbml0aXppbmcgdGhlIG1hcmt1cCwgYW5kIHN0
cmlwcGluZyBhd2F5IGZpbGUgVVJMcy4KKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRNYXJr
dXBSZWFkZXI6OnJlYWRIVE1MKTogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlU3VicmVzb3VyY2VVUkxBdHRyaWJ1dGVzKTogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cCk6IEFkZGVkLgorICAgICAgICAq
IGVkaXRpbmcvbWFya3VwLmg6CisKIDIwMTgtMDEtMjEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVHVybmluZyBvZmYgY3VzdG9tIHBhc3RlYm9hcmQgZGF0YSBk
b2Vzbid0IGFjdHVhbGx5IHR1cm4gaXQgb2ZmIGluIFdLMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCAyZDU0ZjZl
MWM1ZjcxOGZlNDZhNzgxNTczMmVhYjE0YWJhZDZkZDM2Li4wNmE2ZDE0YzIwNzAyNmEwN2VlODgz
YWRjZjRhYzY5NDI2MGI5N2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtNTI3LDcgKzUyNywxNyBAQCBib29s
IFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRIVE1MKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGlm
IChzdHJpbmdPbWl0dGluZ01pY3Jvc29mdFByZWZpeC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChkb2N1
bWVudCwgc3RyaW5nT21pdHRpbmdNaWNyb3NvZnRQcmVmaXgsIGVtcHR5U3RyaW5nKCksIERpc2Fs
bG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOworICAgIFN0cmluZyBtYXJrdXA7CisgICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3VzdG9tUGFzdGVi
b2FyZERhdGFFbmFibGVkKCkgJiYgc2hvdWxkU2FuaXRpemUoKSkgeworICAgICAgICBtYXJrdXAg
PSBzYW5pdGl6ZU1hcmt1cChzdHJpbmdPbWl0dGluZ01pY3Jvc29mdFByZWZpeCwgc3RkOjpmdW5j
dGlvbjx2b2lkIChEb2N1bWVudEZyYWdtZW50Jik+IHsgW10gKERvY3VtZW50RnJhZ21lbnQmIGZy
YWdtZW50KSB7CisgICAgICAgICAgICByZW1vdmVTdWJyZXNvdXJjZVVSTEF0dHJpYnV0ZXMoZnJh
Z21lbnQsIFtdIChjb25zdCBVUkwmIHVybCApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2hv
dWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHVybCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgbWFya3VwID0gc3RyaW5nT21pdHRpbmdNaWNyb3Nv
ZnRQcmVmaXg7CisKKyAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoZG9j
dW1lbnQsIG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5D
b250ZW50KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTUzNyw5ICs1NDcsMTMgQEAgYm9v
bCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkSFRNTChjb25zdCBTdHJpbmcmIHN0cmluZykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgU3RyaW5nIHJhd0hUTUwgPSBzdHJpcE1pY3Jv
c29mdFByZWZpeChzdHJpbmcpOwotICAgIGlmIChzaG91bGRTYW5pdGl6ZSgpKQotICAgICAgICBt
YXJrdXAgPSBzYW5pdGl6ZU1hcmt1cChyYXdIVE1MKTsKLSAgICBlbHNlCisgICAgaWYgKHNob3Vs
ZFNhbml0aXplKCkpIHsKKyAgICAgICAgbWFya3VwID0gc2FuaXRpemVNYXJrdXAocmF3SFRNTCwg
c3RkOjpmdW5jdGlvbjx2b2lkIChEb2N1bWVudEZyYWdtZW50Jik+IHsgW10gKERvY3VtZW50RnJh
Z21lbnQmIGZyYWdtZW50KSB7CisgICAgICAgICAgICByZW1vdmVTdWJyZXNvdXJjZVVSTEF0dHJp
YnV0ZXMoZnJhZ21lbnQsIFtdIChjb25zdCBVUkwmIHVybCApIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHVybCk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSB9KTsKKyAgICB9IGVsc2UKICAgICAgICAgbWFya3VwID0gcmF3SFRNTDsKIAog
ICAgIHJldHVybiAhbWFya3VwLmlzRW1wdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApp
bmRleCA3YjNiMTkzMWU0MDg4OTZjYjRlNDQ2ZmNiZDE3MzdkOGIxMjJmMjZiLi44ZTZjYzljZjEz
MWFmZTZhZDRkYTg2Y2IzZjY2Nzk0Y2I4NTY0Y2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
Y3BwCkBAIC03Miw2ICs3Miw3IEBACiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2lu
Y2x1ZGUgIlZpc2libGVVbml0cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAg
LTE0NCw2ICsxNDUsMzAgQEAgdm9pZCByZXBsYWNlU3VicmVzb3VyY2VVUkxzKFJlZjxEb2N1bWVu
dEZyYWdtZW50PiYmIGZyYWdtZW50LCBIYXNoTWFwPEF0b21pY1N0cmkKICAgICAgICAgY2hhbmdl
LmFwcGx5KCk7CiB9CiAKK3N0cnVjdCBFbGVtZW50QXR0cmlidXRlIHsKKyAgICBSZWY8RWxlbWVu
dD4gZWxlbWVudDsKKyAgICBRdWFsaWZpZWROYW1lIGF0dHJpYnV0ZU5hbWU7Cit9OworCit2b2lk
IHJlbW92ZVN1YnJlc291cmNlVVJMQXR0cmlidXRlcyhSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiBm
cmFnbWVudCwgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFVSTCYpPiBzaG91bGRSZW1vdmVVUkwp
Cit7CisgICAgVmVjdG9yPEVsZW1lbnRBdHRyaWJ1dGU+IGF0dHJpYnV0ZXNUb1JlbW92ZTsKKyAg
ICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50PihmcmFnbWVu
dCkpIHsKKyAgICAgICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0ZXMoKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICBmb3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDogZWxl
bWVudC5hdHRyaWJ1dGVzSXRlcmF0b3IoKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMg
d29uJ3Qgd29yayBmb3Igc3Jjc2V0LgorICAgICAgICAgICAgaWYgKGVsZW1lbnQuYXR0cmlidXRl
Q29udGFpbnNVUkwoYXR0cmlidXRlKSAmJiAhYXR0cmlidXRlLnZhbHVlKCkuaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICAgICAgVVJMIHVybCA9IFVSTFBhcnNlciB7IGF0dHJpYnV0ZS52YWx1ZSgp
IH0ucmVzdWx0KCk7CisgICAgICAgICAgICAgICAgaWYgKHNob3VsZFJlbW92ZVVSTCh1cmwpKQor
ICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzVG9SZW1vdmUuYXBwZW5kKHsgZWxlbWVudCwg
YXR0cmlidXRlLm5hbWUoKSB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAg
ICBmb3IgKGF1dG8mIGl0ZW0gOiBhdHRyaWJ1dGVzVG9SZW1vdmUpCisgICAgICAgIGl0ZW0uZWxl
bWVudC0+cmVtb3ZlQXR0cmlidXRlKGl0ZW0uYXR0cmlidXRlTmFtZSk7Cit9CisKIHN0ZDo6dW5p
cXVlX3B0cjxQYWdlPiBjcmVhdGVQYWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKQogewogICAg
IFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uKGNyZWF0ZUVtcHR5RWRpdG9yQ2xp
ZW50KCksIFNvY2tldFByb3ZpZGVyOjpjcmVhdGUoKSwgTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0
ZSgpLCBDYWNoZVN0b3JhZ2VQcm92aWRlcjo6Y3JlYXRlKCkpOwpAQCAtMTcyLDcgKzE5Nyw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBjcmVhdGVQYWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQo
KQogfQogCiAKLVN0cmluZyBzYW5pdGl6ZU1hcmt1cChjb25zdCBTdHJpbmcmIHJhd0hUTUwpCitT
dHJpbmcgc2FuaXRpemVNYXJrdXAoY29uc3QgU3RyaW5nJiByYXdIVE1MLCBzdGQ6Om9wdGlvbmFs
PHN0ZDo6ZnVuY3Rpb248dm9pZChEb2N1bWVudEZyYWdtZW50Jik+PiBmcmFnbWVudFNhbml0aXpl
cikKIHsKICAgICBhdXRvIHBhZ2UgPSBjcmVhdGVQYWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQo
KTsKICAgICBEb2N1bWVudCogc3RhZ2luZ0RvY3VtZW50ID0gcGFnZS0+bWFpbkZyYW1lKCkuZG9j
dW1lbnQoKTsKQEAgLTE4MSw2ICsyMDYsMTAgQEAgU3RyaW5nIHNhbml0aXplTWFya3VwKGNvbnN0
IFN0cmluZyYgcmF3SFRNTCkKICAgICBBU1NFUlQoYm9keUVsZW1lbnQpOwogCiAgICAgYXV0byBm
cmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqc3RhZ2luZ0RvY3VtZW50LCByYXdI
VE1MLCBlbXB0eVN0cmluZygpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNvbnRlbnQpOwor
CisgICAgaWYgKGZyYWdtZW50U2FuaXRpemVyKQorICAgICAgICAoKmZyYWdtZW50U2FuaXRpemVy
KShmcmFnbWVudCk7CisKICAgICBib2R5RWxlbWVudC0+YXBwZW5kQ2hpbGQoZnJhZ21lbnQuZ2V0
KCkpOwogCiAgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKnN0YWdpbmdEb2N1bWVudCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuaAppbmRleCA2YTdmNmZmZjJiZWU0NWZmZTg5YjU0NGI5YzA4
ZGJlMWRlOWY2OGVkLi44OGVkOWM4MWIzYzdhNjI2ZGZiMjFhNzUxN2VlOTRmNmY5YzdlZDQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJGcmFn
bWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKICNpbmNsdWRlICJIVE1MSW50ZXJjaGFuZ2UuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDggKzQ4
LDEwIEBAIGNsYXNzIFF1YWxpZmllZE5hbWU7CiBjbGFzcyBSYW5nZTsKIAogdm9pZCByZXBsYWNl
U3VicmVzb3VyY2VVUkxzKFJlZjxEb2N1bWVudEZyYWdtZW50PiYmLCBIYXNoTWFwPEF0b21pY1N0
cmluZywgQXRvbWljU3RyaW5nPiYmKTsKK3ZvaWQgcmVtb3ZlU3VicmVzb3VyY2VVUkxBdHRyaWJ1
dGVzKFJlZjxEb2N1bWVudEZyYWdtZW50PiYmLCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgVVJM
Jik+IHNob3VsZFJlbW92ZVVSTCk7CisKIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBjcmVhdGVQYWdl
Rm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKTsKLVN0cmluZyBzYW5pdGl6ZU1hcmt1cChjb25zdCBT
dHJpbmcmKTsKK1N0cmluZyBzYW5pdGl6ZU1hcmt1cChjb25zdCBTdHJpbmcmLCBzdGQ6Om9wdGlv
bmFsPHN0ZDo6ZnVuY3Rpb248dm9pZChEb2N1bWVudEZyYWdtZW50Jik+PiBmcmFnbWVudFNhbml0
aXplciA9IHN0ZDo6bnVsbG9wdCk7CiAKIGVudW0gRUNoaWxkcmVuT25seSB7IEluY2x1ZGVOb2Rl
LCBDaGlsZHJlbk9ubHkgfTsKIGVudW0gRUFic29sdXRlVVJMcyB7IERvTm90UmVzb2x2ZVVSTHMs
IFJlc29sdmVBbGxVUkxzLCBSZXNvbHZlTm9uTG9jYWxVUkxzIH07CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDliYWY3YWQwZjE3NjI0NTYwOGI3
YjQ1ZGEwNWJmOGU1YzJiNzEyZS4uN2NkZmMxOTQ3OWYxZTk0N2I0ODNlNjA1Y2EzYTdjMTFiYjQ0
NmY1YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE5IEBACisyMDE4LTAxLTIxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgorCisgICAgICAgIEJsb2IgY29udmVyc2lvbiBhbmQgc2FuaXRpemF0aW9uIGRvZXNuJ3Qg
d29yayB3aXRoIE1pY3Jvc29mdCBXb3JkIGZvciBNYWMgMjAxMQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxNjE2CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zNjQ4NDkwOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRlZCB0ZXN0cyB0byBtYWtlIHN1cmUgd2Ugc2FuaXRpemUgcGxhaW4gSFRNTCwg
bm90IGp1c3Qgd2ViIGFyY2hpdmVzLAorICAgICAgICB3aGVuIGFuZCBvbmx5IHdoZW4gY3VzdG9t
IHBhc3RlYm9hcmQgZGF0YSBpcyBlbmFibGVkLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUhUTUwubW06IEFkZGVkLgorICAgICAgICAo
d3JpdGVIVE1MVG9QYXN0ZWJvYXJkKTogQWRkZWQuCisgICAgICAgIChjcmVhdGVXZWJWaWV3V2l0
aEN1c3RvbVBhc3RlYm9hcmREYXRhU2V0dGluZyk6IEFkZGVkLgorCiAyMDE4LTAxLTIxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIG5ldyBm
ZWF0dXJlIGZsYWcgZm9yIEVYVFJBX1pPT01fTU9ERSBhbmQgcmVpbnRyb2R1Y2UgQWRkaXRpb25h
bEZlYXR1cmVEZWZpbmVzLmgKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWZkN2E4ZjQ5ZGNi
Yjk0MTY0ZWI2NDkyM2NhNzk0ZTU3MzUwNDU4MC4uZTczNDAxNTliNTBmYmYyZDk4OWI0MDBmZGRl
YzY0NmQ3NjVlNDJkOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU3Nyw2ICs1NzcsNyBA
QAogCQk5QjYyNjMwQzFGOEMyNUM4MDA3RUUyOUIgLyogY29weS11cmwuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjYyNjMwQjFGOEMy
NTEwMDA3RUUyOUIgLyogY29weS11cmwuaHRtbCAqLzsgfTsKIAkJOUI3QTM3QzQxRjhBRUJBNTAw
NEFBMjI4IC8qIENvcHlVUkwubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5QjdBMzdDMjFGOEFFQkE1MDA0QUEyMjggLyogQ29weVVSTC5tbSAqLzsgfTsK
IAkJOUI3RDc0MEYxRjgzNzg3NzAwMDZDNDMyIC8qIHBhc3RlLXJ0ZmQuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjdENzQwRTFGODM3
N0U2MDAwNkM0MzIgLyogcGFzdGUtcnRmZC5odG1sICovOyB9OworCQk5QkNCN0MyODIwMTMwNjAw
MDAzRTdDMEMgLyogUGFzdGVIVE1MLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUJDQjdDMjYyMDEzMDYwMDAwM0U3QzBDIC8qIFBhc3RlSFRNTC5tbSAq
LzsgfTsKIAkJOUJENDIzOUExRTA0QkQ5ODAwMjAwMzk1IC8qIEF0dHJpYnV0ZWRTdWJzdHJpbmdG
b3JQcm9wb3NlZFJhbmdlV2l0aEltYWdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUJENDIzOTkxRTA0QkQ5ODAwMjAwMzk1IC8qIEF0dHJpYnV0ZWRT
dWJzdHJpbmdGb3JQcm9wb3NlZFJhbmdlV2l0aEltYWdlLm1tICovOyB9OwogCQk5QkQ0MjM5QzFF
MDRDMDFDMDAyMDAzOTUgLyogY2hpbmVzZS1jaGFyYWN0ZXItd2l0aC1pbWFnZS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCRDQyMzlC
MUUwNEJGRDAwMDIwMDM5NSAvKiBjaGluZXNlLWNoYXJhY3Rlci13aXRoLWltYWdlLmh0bWwgKi87
IH07CiAJCTlCRDUxMTFDMUZFOEUxMTYwMEQyQjYzMCAvKiBBY2Nlc3NpbmdQYXN0ZWRJbWFnZS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCRDUxMTFC
MUZFOEUxMTYwMEQyQjYzMCAvKiBBY2Nlc3NpbmdQYXN0ZWRJbWFnZS5tbSAqLzsgfTsKQEAgLTE1
ODksNiArMTU5MCw3IEBACiAJCTlCNzkxNjRGMUJEODlEMEQwMEQ1MEI4RiAvKiBGaXJzdFJlc3Bv
bmRlclNjcm9sbGluZ1Bvc2l0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRmlyc3RSZXNwb25kZXJTY3JvbGxpbmdQb3NpdGlvbi5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOUI3QTM3QzIxRjhBRUJBNTAwNEFBMjI4IC8qIENvcHlVUkwubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb3B5VVJMLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5QjdENzQwRTFGODM3N0U2MDAwNkM0MzIgLyogcGFzdGUtcnRmZC5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gInBhc3RlLXJ0ZmQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlC
Q0I3QzI2MjAxMzA2MDAwMDNFN0MwQyAvKiBQYXN0ZUhUTUwubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBQYXN0ZUhUTUwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCRDQyMzk5
MUUwNEJEOTgwMDIwMDM5NSAvKiBBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yUHJvcG9zZWRSYW5nZVdp
dGhJbWFnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF0dHJp
YnV0ZWRTdWJzdHJpbmdGb3JQcm9wb3NlZFJhbmdlV2l0aEltYWdlLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5QkQ0MjM5QjFFMDRCRkQwMDAyMDAzOTUgLyogY2hpbmVzZS1jaGFy
YWN0ZXItd2l0aC1pbWFnZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImNoaW5l
c2UtY2hhcmFjdGVyLXdpdGgtaW1hZ2UuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTlCRDUxMTFCMUZFOEUxMTYwMEQyQjYzMCAvKiBBY2Nlc3NpbmdQYXN0ZWRJbWFnZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2luZ1Bhc3RlZEltYWdlLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjExNSw2ICsyMTE3LDcgQEAKIAkJCQlDRUJDQTEyRTFFM0E2
NjAxMDBDNzMyOTMgLyogT3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kubW0gKi8sCiAJCQkJ
OUJEQ0NEODUxRjdEMEIwNzAwMDA5QTE4IC8qIFBhc3RlSW1hZ2UubW0gKi8sCiAJCQkJOUJERDk1
NTYxRjgzNjgzNjAwRDIwQzYwIC8qIFBhc3RlUlRGRC5tbSAqLywKKwkJCQk5QkNCN0MyNjIwMTMw
NjAwMDAzRTdDMEMgLyogUGFzdGVIVE1MLm1tICovLAogCQkJCTlCMjM0NjQxMUY5NDNBMjQwMERC
MUQyMyAvKiBQYXN0ZVdlYkFyY2hpdmUubW0gKi8sCiAJCQkJM0ZDQzRGRTQxRUM0RTg1MjAwNzZF
MzdDIC8qIFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5tbSAqLywKIAkJCQk4M0JBRUU4QzFFRjQ2
MjU1MDBEREU4OTQgLyogUGx1Z2luTG9hZENsaWVudFBvbGljaWVzLm1tICovLApAQCAtMzM5Niw2
ICszMzk5LDcgQEAKIAkJCQk3Q0NFN0VCQjFBNDExQTdFMDA0NDdDNEMgLyogRE9NSFRNTFRhYmxl
Q2VsbENlbGxBYm92ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJENTFBMEM3MUM4QkYwMEMwMDc2
NUM0NSAvKiBET01IVE1MVmlkZW9FbGVtZW50V3JhcHBlci5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTQ2Mzk3Qjk1MURDMkM4NTAwMDlBNzhBRSAvKiBET01Ob2RlLm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJOUJDQjdDMjgyMDEzMDYwMDAwM0U3QzBDIC8qIFBhc3RlSFRNTC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTdDQ0U3RUJDMUE0MTFBN0UwMDQ0N0M0QyAvKiBET01Ob2RlRnJvbUpTT2JqZWN0Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQkQxQTQxMUE3RTAwNDQ3QzRDIC8qIERPTVJhbmdl
T2ZTdHJpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VFQzFBNDExQUU2MDA0NDdDNEMg
LyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSFRNTC5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVIVE1MLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmI4YmRhZmEwOWRiZWM0MzFjNTE1MDY5YjcyMzQyZTY2YjUzZGQzNWUKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSFRNTC5t
bQpAQCAtMCwwICsxLDE1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbXBvcnQgIlBs
YXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxX
ZWJDb3JlL0xlZ2FjeU5TUGFzdGVib2FyZFR5cGVzLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQcmVm
ZXJlbmNlc1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0
ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+Cisj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlIDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxl
Q29yZVNlcnZpY2VzLmg+CisjZW5kaWYKKworQGludGVyZmFjZSBXS1dlYlZpZXcgKCkKKy0gKHZv
aWQpcGFzdGU6KGlkKXNlbmRlcjsKK0BlbmQKKworI2lmIFBMQVRGT1JNKE1BQykKK3ZvaWQgd3Jp
dGVIVE1MVG9QYXN0ZWJvYXJkKE5TU3RyaW5nICpodG1sKQoreworICAgIFtbTlNQYXN0ZWJvYXJk
IGdlbmVyYWxQYXN0ZWJvYXJkXSBkZWNsYXJlVHlwZXM6QFtXZWJDb3JlOjpsZWdhY3lIVE1MUGFz
dGVib2FyZFR5cGUoKV0gb3duZXI6bmlsXTsKKyAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFz
dGVib2FyZF0gc2V0U3RyaW5nOmh0bWwgZm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lIVE1MUGFzdGVi
b2FyZFR5cGUoKV07Cit9CisjZWxzZQordm9pZCB3cml0ZUhUTUxUb1Bhc3RlYm9hcmQoTlNTdHJp
bmcgKmh0bWwpCit7CisgICAgW1tVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNldEl0
ZW1zOkBbQHsgKE5TU3RyaW5nICopa1VUVHlwZUhUTUwgOiBodG1sfV1dOworfQorI2VuZGlmCisK
K3N0YXRpYyBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gY3JlYXRlV2ViVmlld1dpdGhDdXN0b21Q
YXN0ZWJvYXJkRGF0YVNldHRpbmcoYm9vbCBlbmFibGVkKQoreworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgNDAwLCA0MDApXSk7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IChXS1ByZWZlcmVuY2Vz
UmVmKVtbd2ViVmlldyBjb25maWd1cmF0aW9uXSBwcmVmZXJlbmNlc107CisgICAgV0tQcmVmZXJl
bmNlc1NldERhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CisgICAg
V0tQcmVmZXJlbmNlc1NldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZChwcmVmZXJlbmNlcywg
ZW5hYmxlZCk7CisgICAgcmV0dXJuIHdlYlZpZXc7Cit9CisKK1RFU1QoUGFzdGVIVE1MLCBFeHBv
c2VzSFRNTFR5cGVJbkRhdGFUcmFuc2ZlcikKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBjcmVhdGVX
ZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9hcmREYXRhU2V0dGluZyh0cnVlKTsKKyAgICBbd2ViVmll
dyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJwYXN0ZS1ydGZkIl07CisKKyAgICB3
cml0ZUhUTUxUb1Bhc3RlYm9hcmQoQCI8IURPQ1RZUEUgaHRtbD48aHRtbD48Ym9keT48cD48dT5o
ZWxsbzwvdT4sIHdvcmxkPC9wPjwvYm9keT48L2h0bWw+Iik7CisgICAgW3dlYlZpZXcgcGFzdGU6
bmlsXTsKKworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJjbGlwYm9hcmREYXRhLnR5cGVzLmluY2x1ZGVzKCd0ZXh0L2h0bWwnKSJdKTsKKyAg
ICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZWRpdG9yLmlubmVySFRN
TCA9IGNsaXBib2FyZERhdGEudmFsdWVzWzBdOyBlZGl0b3IuZm9jdXMoKSJdOworICAgIEVYUEVD
VF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5x
dWVyeUNvbW1hbmRTdGF0ZSgndW5kZXJsaW5lJykiXS5ib29sVmFsdWUpOworICAgIFt3ZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5tb2RpZnkoJ21v
dmUnLCAnZm9yd2FyZCcsICdsaW5lYm91bmRhcnknKSJdOworICAgIEVYUEVDVF9GQUxTRShbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlDb21tYW5k
U3RhdGUoJ3VuZGVybGluZScpIl0uYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImhl
bGxvLCB3b3JsZCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJlZGl0
b3IudGV4dENvbnRlbnQiXSk7Cit9CisKK1RFU1QoUGFzdGVIVE1MLCBTYW5pdGl6ZXNIVE1MKQor
eworICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdXaXRoQ3VzdG9tUGFzdGVib2FyZERh
dGFTZXR0aW5nKHRydWUpOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VO
YW1lZDpAInBhc3RlLXJ0ZmQiXTsKKworICAgIHdyaXRlSFRNTFRvUGFzdGVib2FyZChAIjwhRE9D
VFlQRSBodG1sPjxtZXRhIGNvbnRlbnQ9XCJzZWNyZXRcIj48YiBvbm1vdXNlb3Zlcj1cImRhbmdl
cm91c0NvZGUoKVwiPmhlbGxvPC9iPiIKKyAgICAgICAgIjwhLS0gc2VjcmV0LS0+LCB3b3JsZDxz
Y3JpcHQ+ZGFuZ2Vyb3VzQ29kZSgpPC9zY3JpcHQ+JzsiKTsKKyAgICBbd2ViVmlldyBwYXN0ZTpu
aWxdOworCisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImNsaXBib2FyZERhdGEudHlwZXMuaW5jbHVkZXMoJ3RleHQvaHRtbCcpIl0uYm9vbFZh
bHVlKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiY2xpcGJvYXJkRGF0YS52YWx1ZXNbMF0uaW5jbHVkZXMoJ2hlbGxvJykiXS5ib29sVmFs
dWUpOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJjbGlwYm9hcmREYXRhLnZhbHVlc1swXS5pbmNsdWRlcygnd29ybGQnKSJdLmJvb2xWYWx1
ZSk7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJjbGlwYm9hcmREYXRhLnZhbHVlc1swXS5pbmNsdWRlcygnc2VjcmV0JykiXS5ib29sVmFs
dWUpOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiY2xpcGJvYXJkRGF0YS52YWx1ZXNbMF0uaW5jbHVkZXMoJ2Rhbmdlcm91c0NvZGUnKSJd
LmJvb2xWYWx1ZSk7Cit9CisKK1RFU1QoUGFzdGVIVE1MLCBEb2VzTm90U2FuaXRpemVIVE1MV2hl
bkN1c3RvbVBhc3RlYm9hcmREYXRhSXNEaXNhYmxlZCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBj
cmVhdGVXZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9hcmREYXRhU2V0dGluZyhmYWxzZSk7CisgICAg
W3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAicGFzdGUtcnRmZCJdOwor
CisgICAgd3JpdGVIVE1MVG9QYXN0ZWJvYXJkKEAiPCFET0NUWVBFIGh0bWw+PG1ldGEgY29udGVu
dD1cInNlY3JldFwiPjxiIG9ubW91c2VvdmVyPVwiZGFuZ2Vyb3VzQ29kZSgpXCI+aGVsbG88L2I+
IgorICAgICAgICAiPCEtLSBzZWNyZXQtLT4sIHdvcmxkPHNjcmlwdD5kYW5nZXJvdXNDb2RlKCk8
L3NjcmlwdD4nOyIpOworICAgIFt3ZWJWaWV3IHBhc3RlOm5pbF07CisKKyAgICBFWFBFQ1RfVFJV
RShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YS50
eXBlcy5pbmNsdWRlcygndGV4dC9odG1sJykiXS5ib29sVmFsdWUpOworICAgIEVYUEVDVF9UUlVF
KFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjbGlwYm9hcmREYXRhLnZh
bHVlc1swXS5pbmNsdWRlcygnaGVsbG8nKSJdLmJvb2xWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUo
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERhdGEudmFs
dWVzWzBdLmluY2x1ZGVzKCd3b3JsZCcpIl0uYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YS52YWx1
ZXNbMF0uaW5jbHVkZXMoJ3NlY3JldCcpIl0uYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YS52YWx1
ZXNbMF0uaW5jbHVkZXMoJ2Rhbmdlcm91c0NvZGUnKSJdLmJvb2xWYWx1ZSk7Cit9CisKK1RFU1Qo
UGFzdGVIVE1MLCBTdHJpcHNIVFRQVVJMcykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBjcmVhdGVX
ZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9hcmREYXRhU2V0dGluZyh0cnVlKTsKKyAgICBbd2ViVmll
dyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJwYXN0ZS1ydGZkIl07CisKKyAgICB3
cml0ZUhUTUxUb1Bhc3RlYm9hcmQoQCI8IURPQ1RZUEUgaHRtbD48aHRtbD48Ym9keT48YSBhbHQ9
J2hlbGxvJyBocmVmPSdmaWxlOi8vL3ByaXZhdGUvdmFyL2ZvbGRlcnMvc2VjcmV0L2ZpbGVzLyc+
d29ybGQ8L2E+Iik7CisgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKKworICAgIEVYUEVDVF9UUlVF
KFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjbGlwYm9hcmREYXRhLnR5
cGVzLmluY2x1ZGVzKCd0ZXh0L2h0bWwnKSJdLmJvb2xWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUo
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERhdGEudmFs
dWVzWzBdLmluY2x1ZGVzKCdoZWxsbycpIl0uYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YS52YWx1
ZXNbMF0uaW5jbHVkZXMoJ3dvcmxkJykiXS5ib29sVmFsdWUpOworICAgIEVYUEVDVF9GQUxTRShb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YS52YWx1
ZXNbMF0uaW5jbHVkZXMoJ3NlY3JldCcpIl0uYm9vbFZhbHVlKTsKK30KKworVEVTVChQYXN0ZUhU
TUwsIERvZXNOb3RTdHJpcEhUVFBVUkxzV2hlbkN1c3RvbVBhc3RlYm9hcmREYXRhSXNEaXNhYmxl
ZCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBjcmVhdGVXZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9h
cmREYXRhU2V0dGluZyhmYWxzZSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0
UGFnZU5hbWVkOkAicGFzdGUtcnRmZCJdOworCisgICAgd3JpdGVIVE1MVG9QYXN0ZWJvYXJkKEAi
PCFET0NUWVBFIGh0bWw+PGh0bWw+PGJvZHk+PGEgYWx0PSdoZWxsbycgaHJlZj0nZmlsZTovLy9w
cml2YXRlL3Zhci9mb2xkZXJzL3NlY3JldC9maWxlcy8nPndvcmxkPC9hPiIpOworICAgIFt3ZWJW
aWV3IHBhc3RlOm5pbF07CisKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YS50eXBlcy5pbmNsdWRlcygndGV4dC9odG1s
JykiXS5ib29sVmFsdWUpOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJjbGlwYm9hcmREYXRhLnZhbHVlc1swXS5pbmNsdWRlcygnaGVsbG8n
KSJdLmJvb2xWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERhdGEudmFsdWVzWzBdLmluY2x1ZGVzKCd3b3JsZCcp
Il0uYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YS52YWx1ZXNbMF0uaW5jbHVkZXMoJ3NlY3JldCcp
Il0uYm9vbFZhbHVlKTsKK30KKworVEVTVChQYXN0ZUhUTUwsIEtlZXBzSFRUUFVSTHMpCit7Cisg
ICAgYXV0byB3ZWJWaWV3ID0gY3JlYXRlV2ViVmlld1dpdGhDdXN0b21QYXN0ZWJvYXJkRGF0YVNl
dHRpbmcodHJ1ZSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVk
OkAicGFzdGUtcnRmZCJdOworCisgICAgd3JpdGVIVE1MVG9QYXN0ZWJvYXJkKEAiPCFET0NUWVBF
IGh0bWw+PGh0bWw+PGJvZHk+PGEgdGl0bGU9J2hlbGxvJyBocmVmPSdodHRwczovL3N2bi53ZWJr
aXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rL0xheW91dFRlc3RzL2VkaXRpbmcvcmVzb3Vy
Y2VzL2FiZS5wbmcnPndvcmxkPC9hPiIpOworICAgIFt3ZWJWaWV3IHBhc3RlOm5pbF07CisKKyAg
ICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xp
cGJvYXJkRGF0YS50eXBlcy5pbmNsdWRlcygndGV4dC9odG1sJykiXS5ib29sVmFsdWUpOworICAg
IEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjbGlw
Ym9hcmREYXRhLnZhbHVlc1swXS5pbmNsdWRlcygnaGVsbG8nKSJdLmJvb2xWYWx1ZSk7CisgICAg
RVhQRUNUX1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBi
b2FyZERhdGEudmFsdWVzWzBdLmluY2x1ZGVzKCd3b3JsZCcpIl0uYm9vbFZhbHVlKTsKKyAgICBF
WFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJv
YXJkRGF0YS52YWx1ZXNbMF0uaW5jbHVkZXMoJ2FiZS5wbmcnKSJdLmJvb2xWYWx1ZSk7Cit9CisK
KyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShDT0NPQSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331897</attachid>
            <date>2018-01-21 22:47:01 -0800</date>
            <delta_ts>2018-01-22 10:05:12 -0800</delta_ts>
            <desc>Fixes the bug</desc>
            <filename>bug-181616-20180121224659.patch</filename>
            <type>text/plain</type>
            <size>21135</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI3MjgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjI2OGJkNmI1NWEyNmFk
NjZlMTUwYTc2OTFkNWY2N2ZjYmVjNWZkYi4uZDY2NmVhYmNiZjg3Yjg2YTZhYjY2MGI1N2QwMWQ2
YmFjMzIzYzAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDE4LTAxLTIxICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEJsb2IgY29udmVyc2lvbiBh
bmQgc2FuaXRpemF0aW9uIGRvZXNuJ3Qgd29yayB3aXRoIE1pY3Jvc29mdCBXb3JkIGZvciBNYWMg
MjAxMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgx
NjE2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjQ4NDkwOD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgYnVnIHdhcyBjYXVzZWQgYnkgV2Vi
Q29udGVudFJlYWRlcjo6cmVhZEhUTUwgYW5kIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXI6OnJlYWRI
VE1MIG5vdCBzYW5pdGl6aW5nIHBsYWluIEhUTUwgc3RyaW5nCisgICAgICAgIGFzIGRvbmUgZm9y
IHdlYiBhcmNoaXZlcyBldmVuIHdoZW4gY3VzdG9tIHBhc3RlYm9hcmQgZGF0YSBpcyBlbmFibGVk
LiBGaXhlZCB0aGUgYnVnIGJ5IGRvaW5nIHRoZSBzYW5pdGl6YXRpb24uCisKKyAgICAgICAgVW5m
b3J0dW5hdGVseSwgd2UgY2FuJ3QgbWFrZSBmaWxlIFVSTHMgYXZhaWxhYmxlIGluIHRoaXMgY2Fz
ZSBiZWNhdXNlIFdlYkNvbnRlbnQgcHJvY2VzcyBkb2Vzbid0IGhhdmUgc2FuZGJveCBleHRlbnNp
b25zCisgICAgICAgIHRvIGFjY2VzcyBsb2NhbCBmaWxlcyByZWZlcmVuY2VkIGJ5IHRoZSBIVE1M
IHNvdXJjZSBpbiB0aGUgY2xpcGJvYXJkLCBhbmQgd2UgY2FuJ3QgbWFrZSBXZWJDb250ZW50IHBy
b2Nlc3MgcmVxdWVzdCBmb3IKKyAgICAgICAgYSBzYW5kYm94IGV4dGVuc2lvbsK4b24gYW4gYXJi
aXRyYXJ5IGxvY2FsIGZpbGUsIGFzIGl0IHdvdWxkIGRlZmVhdCB0aGUgd2hvbGUgcG9pbnQgb2Yg
c2FuZGJveGluZy4KKworICAgICAgICBJbnN0ZWFkLCB3ZSBzdHJpcCBhd2F5IGFsbCBIVE1MIGF0
dHJpYnV0ZXMgcmVmZXJlbmNpbmcgYSBmaWxlIFVSTCB3aGVuIHNhbml0aXppbmcgdGV4dC9odG1s
IGZyb20gdGhlIGNsaXBib2FyZCB0byBhdm9pZAorICAgICAgICBleHBvc2luZyBsb2NhbCBmaWxl
IHBhdGhzLCB3aGljaCBjYW4gcmV2ZWFsIHByaXZhY3kgJiBzZWN1cml0eSBzZW5zaXRpdmUgaW5m
b3JtYXRpb24gc3VjaCBhcyB0aGUgdXNlcidzIGZ1bGwgbmFtZSwgYW5kCisgICAgICAgIHRoZSBs
b2NhdGlvbiBvZiBwcml2YXRlIGNvbnRhaW5lcnMgb2Ygb3RoZXIgYXBwbGljYXRpb25zIGluIHRo
ZSBzeXN0ZW0uCisKKyAgICAgICAgVGVzdHM6IFBhc3RlSFRNTC5Eb2VzTm90U2FuaXRpemVIVE1M
V2hlbkN1c3RvbVBhc3RlYm9hcmREYXRhSXNEaXNhYmxlZAorICAgICAgICAgICAgICAgUGFzdGVI
VE1MLkRvZXNOb3RTdHJpcEhUVFBVUkxzV2hlbkN1c3RvbVBhc3RlYm9hcmREYXRhSXNEaXNhYmxl
ZAorICAgICAgICAgICAgICAgUGFzdGVIVE1MLkV4cG9zZXNIVE1MVHlwZUluRGF0YVRyYW5zZmVy
CisgICAgICAgICAgICAgICBQYXN0ZUhUTUwuS2VlcHNIVFRQVVJMcworICAgICAgICAgICAgICAg
UGFzdGVIVE1MLlNhbml0aXplc0hUTUwKKworICAgICAgICAqIGVkaXRpbmcvY29jb2EvV2ViQ29u
dGVudFJlYWRlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29udGVudFJlYWRlcjo6
cmVhZEhUTUwpOiBGaXhlZCB0aGUgYnVnIGJ5IHNhbml0aXppbmcgdGhlIG1hcmt1cCwgYW5kIHN0
cmlwcGluZyBhd2F5IGZpbGUgVVJMcy4KKyAgICAgICAgKFdlYkNvcmU6OldlYkNvbnRlbnRNYXJr
dXBSZWFkZXI6OnJlYWRIVE1MKTogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cmVtb3ZlU3VicmVzb3VyY2VVUkxBdHRyaWJ1dGVzKTogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpzYW5pdGl6ZU1hcmt1cCk6IEFkZGVkLgorICAgICAgICAq
IGVkaXRpbmcvbWFya3VwLmg6CisKIDIwMTgtMDEtMjEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVHVybmluZyBvZmYgY3VzdG9tIHBhc3RlYm9hcmQgZGF0YSBk
b2Vzbid0IGFjdHVhbGx5IHR1cm4gaXQgb2ZmIGluIFdLMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQppbmRleCAyZDU0ZjZl
MWM1ZjcxOGZlNDZhNzgxNTczMmVhYjE0YWJhZDZkZDM2Li4wNmE2ZDE0YzIwNzAyNmEwN2VlODgz
YWRjZjRhYzY5NDI2MGI5N2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nv
Y29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL1dlYkNvbnRlbnRSZWFkZXJDb2NvYS5tbQpAQCAtNTI3LDcgKzUyNywxNyBAQCBib29s
IFdlYkNvbnRlbnRSZWFkZXI6OnJlYWRIVE1MKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIGlm
IChzdHJpbmdPbWl0dGluZ01pY3Jvc29mdFByZWZpeC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAotICAgIGFkZEZyYWdtZW50KGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChkb2N1
bWVudCwgc3RyaW5nT21pdHRpbmdNaWNyb3NvZnRQcmVmaXgsIGVtcHR5U3RyaW5nKCksIERpc2Fs
bG93U2NyaXB0aW5nQW5kUGx1Z2luQ29udGVudCkpOworICAgIFN0cmluZyBtYXJrdXA7CisgICAg
aWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3VzdG9tUGFzdGVi
b2FyZERhdGFFbmFibGVkKCkgJiYgc2hvdWxkU2FuaXRpemUoKSkgeworICAgICAgICBtYXJrdXAg
PSBzYW5pdGl6ZU1hcmt1cChzdHJpbmdPbWl0dGluZ01pY3Jvc29mdFByZWZpeCwgc3RkOjpmdW5j
dGlvbjx2b2lkIChEb2N1bWVudEZyYWdtZW50Jik+IHsgW10gKERvY3VtZW50RnJhZ21lbnQmIGZy
YWdtZW50KSB7CisgICAgICAgICAgICByZW1vdmVTdWJyZXNvdXJjZVVSTEF0dHJpYnV0ZXMoZnJh
Z21lbnQsIFtdIChjb25zdCBVUkwmIHVybCApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2hv
dWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHVybCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgbWFya3VwID0gc3RyaW5nT21pdHRpbmdNaWNyb3Nv
ZnRQcmVmaXg7CisKKyAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoZG9j
dW1lbnQsIG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5D
b250ZW50KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTUzNyw5ICs1NDcsMTMgQEAgYm9v
bCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkSFRNTChjb25zdCBTdHJpbmcmIHN0cmluZykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgU3RyaW5nIHJhd0hUTUwgPSBzdHJpcE1pY3Jv
c29mdFByZWZpeChzdHJpbmcpOwotICAgIGlmIChzaG91bGRTYW5pdGl6ZSgpKQotICAgICAgICBt
YXJrdXAgPSBzYW5pdGl6ZU1hcmt1cChyYXdIVE1MKTsKLSAgICBlbHNlCisgICAgaWYgKHNob3Vs
ZFNhbml0aXplKCkpIHsKKyAgICAgICAgbWFya3VwID0gc2FuaXRpemVNYXJrdXAocmF3SFRNTCwg
c3RkOjpmdW5jdGlvbjx2b2lkIChEb2N1bWVudEZyYWdtZW50Jik+IHsgW10gKERvY3VtZW50RnJh
Z21lbnQmIGZyYWdtZW50KSB7CisgICAgICAgICAgICByZW1vdmVTdWJyZXNvdXJjZVVSTEF0dHJp
YnV0ZXMoZnJhZ21lbnQsIFtdIChjb25zdCBVUkwmIHVybCApIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHVybCk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSB9KTsKKyAgICB9IGVsc2UKICAgICAgICAgbWFya3VwID0gcmF3SFRNTDsKIAog
ICAgIHJldHVybiAhbWFya3VwLmlzRW1wdHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcApp
bmRleCA3YjNiMTkzMWU0MDg4OTZjYjRlNDQ2ZmNiZDE3MzdkOGIxMjJmMjZiLi44ZTZjYzljZjEz
MWFmZTZhZDRkYTg2Y2IzZjY2Nzk0Y2I4NTY0Y2Q1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
Y3BwCkBAIC03Miw2ICs3Miw3IEBACiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVVJMLmgiCisj
aW5jbHVkZSAiVVJMUGFyc2VyLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogI2lu
Y2x1ZGUgIlZpc2libGVVbml0cy5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KQEAg
LTE0NCw2ICsxNDUsMzAgQEAgdm9pZCByZXBsYWNlU3VicmVzb3VyY2VVUkxzKFJlZjxEb2N1bWVu
dEZyYWdtZW50PiYmIGZyYWdtZW50LCBIYXNoTWFwPEF0b21pY1N0cmkKICAgICAgICAgY2hhbmdl
LmFwcGx5KCk7CiB9CiAKK3N0cnVjdCBFbGVtZW50QXR0cmlidXRlIHsKKyAgICBSZWY8RWxlbWVu
dD4gZWxlbWVudDsKKyAgICBRdWFsaWZpZWROYW1lIGF0dHJpYnV0ZU5hbWU7Cit9OworCit2b2lk
IHJlbW92ZVN1YnJlc291cmNlVVJMQXR0cmlidXRlcyhSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiBm
cmFnbWVudCwgc3RkOjpmdW5jdGlvbjxib29sKGNvbnN0IFVSTCYpPiBzaG91bGRSZW1vdmVVUkwp
Cit7CisgICAgVmVjdG9yPEVsZW1lbnRBdHRyaWJ1dGU+IGF0dHJpYnV0ZXNUb1JlbW92ZTsKKyAg
ICBmb3IgKGF1dG8mIGVsZW1lbnQgOiBkZXNjZW5kYW50c09mVHlwZTxFbGVtZW50PihmcmFnbWVu
dCkpIHsKKyAgICAgICAgaWYgKCFlbGVtZW50Lmhhc0F0dHJpYnV0ZXMoKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICBmb3IgKGNvbnN0IEF0dHJpYnV0ZSYgYXR0cmlidXRlIDogZWxl
bWVudC5hdHRyaWJ1dGVzSXRlcmF0b3IoKSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMg
d29uJ3Qgd29yayBmb3Igc3Jjc2V0LgorICAgICAgICAgICAgaWYgKGVsZW1lbnQuYXR0cmlidXRl
Q29udGFpbnNVUkwoYXR0cmlidXRlKSAmJiAhYXR0cmlidXRlLnZhbHVlKCkuaXNFbXB0eSgpKSB7
CisgICAgICAgICAgICAgICAgVVJMIHVybCA9IFVSTFBhcnNlciB7IGF0dHJpYnV0ZS52YWx1ZSgp
IH0ucmVzdWx0KCk7CisgICAgICAgICAgICAgICAgaWYgKHNob3VsZFJlbW92ZVVSTCh1cmwpKQor
ICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzVG9SZW1vdmUuYXBwZW5kKHsgZWxlbWVudCwg
YXR0cmlidXRlLm5hbWUoKSB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAg
ICBmb3IgKGF1dG8mIGl0ZW0gOiBhdHRyaWJ1dGVzVG9SZW1vdmUpCisgICAgICAgIGl0ZW0uZWxl
bWVudC0+cmVtb3ZlQXR0cmlidXRlKGl0ZW0uYXR0cmlidXRlTmFtZSk7Cit9CisKIHN0ZDo6dW5p
cXVlX3B0cjxQYWdlPiBjcmVhdGVQYWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKQogewogICAg
IFBhZ2VDb25maWd1cmF0aW9uIHBhZ2VDb25maWd1cmF0aW9uKGNyZWF0ZUVtcHR5RWRpdG9yQ2xp
ZW50KCksIFNvY2tldFByb3ZpZGVyOjpjcmVhdGUoKSwgTGliV2ViUlRDUHJvdmlkZXI6OmNyZWF0
ZSgpLCBDYWNoZVN0b3JhZ2VQcm92aWRlcjo6Y3JlYXRlKCkpOwpAQCAtMTcyLDcgKzE5Nyw3IEBA
IHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBjcmVhdGVQYWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQo
KQogfQogCiAKLVN0cmluZyBzYW5pdGl6ZU1hcmt1cChjb25zdCBTdHJpbmcmIHJhd0hUTUwpCitT
dHJpbmcgc2FuaXRpemVNYXJrdXAoY29uc3QgU3RyaW5nJiByYXdIVE1MLCBzdGQ6Om9wdGlvbmFs
PHN0ZDo6ZnVuY3Rpb248dm9pZChEb2N1bWVudEZyYWdtZW50Jik+PiBmcmFnbWVudFNhbml0aXpl
cikKIHsKICAgICBhdXRvIHBhZ2UgPSBjcmVhdGVQYWdlRm9yU2FuaXRpemluZ1dlYkNvbnRlbnQo
KTsKICAgICBEb2N1bWVudCogc3RhZ2luZ0RvY3VtZW50ID0gcGFnZS0+bWFpbkZyYW1lKCkuZG9j
dW1lbnQoKTsKQEAgLTE4MSw2ICsyMDYsMTAgQEAgU3RyaW5nIHNhbml0aXplTWFya3VwKGNvbnN0
IFN0cmluZyYgcmF3SFRNTCkKICAgICBBU1NFUlQoYm9keUVsZW1lbnQpOwogCiAgICAgYXV0byBm
cmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cCgqc3RhZ2luZ0RvY3VtZW50LCByYXdI
VE1MLCBlbXB0eVN0cmluZygpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNvbnRlbnQpOwor
CisgICAgaWYgKGZyYWdtZW50U2FuaXRpemVyKQorICAgICAgICAoKmZyYWdtZW50U2FuaXRpemVy
KShmcmFnbWVudCk7CisKICAgICBib2R5RWxlbWVudC0+YXBwZW5kQ2hpbGQoZnJhZ21lbnQuZ2V0
KCkpOwogCiAgICAgYXV0byByYW5nZSA9IFJhbmdlOjpjcmVhdGUoKnN0YWdpbmdEb2N1bWVudCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuaAppbmRleCA2YTdmNmZmZjJiZWU0NWZmZTg5YjU0NGI5YzA4
ZGJlMWRlOWY2OGVkLi44OGVkOWM4MWIzYzdhNjI2ZGZiMjFhNzUxN2VlOTRmNmY5YzdlZDQ0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvbWFya3VwLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJGcmFn
bWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCIKICNpbmNsdWRlICJIVE1MSW50ZXJjaGFuZ2UuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTQ3LDggKzQ4
LDEwIEBAIGNsYXNzIFF1YWxpZmllZE5hbWU7CiBjbGFzcyBSYW5nZTsKIAogdm9pZCByZXBsYWNl
U3VicmVzb3VyY2VVUkxzKFJlZjxEb2N1bWVudEZyYWdtZW50PiYmLCBIYXNoTWFwPEF0b21pY1N0
cmluZywgQXRvbWljU3RyaW5nPiYmKTsKK3ZvaWQgcmVtb3ZlU3VicmVzb3VyY2VVUkxBdHRyaWJ1
dGVzKFJlZjxEb2N1bWVudEZyYWdtZW50PiYmLCBzdGQ6OmZ1bmN0aW9uPGJvb2woY29uc3QgVVJM
Jik+IHNob3VsZFJlbW92ZVVSTCk7CisKIHN0ZDo6dW5pcXVlX3B0cjxQYWdlPiBjcmVhdGVQYWdl
Rm9yU2FuaXRpemluZ1dlYkNvbnRlbnQoKTsKLVN0cmluZyBzYW5pdGl6ZU1hcmt1cChjb25zdCBT
dHJpbmcmKTsKK1N0cmluZyBzYW5pdGl6ZU1hcmt1cChjb25zdCBTdHJpbmcmLCBzdGQ6Om9wdGlv
bmFsPHN0ZDo6ZnVuY3Rpb248dm9pZChEb2N1bWVudEZyYWdtZW50Jik+PiBmcmFnbWVudFNhbml0
aXplciA9IHN0ZDo6bnVsbG9wdCk7CiAKIGVudW0gRUNoaWxkcmVuT25seSB7IEluY2x1ZGVOb2Rl
LCBDaGlsZHJlbk9ubHkgfTsKIGVudW0gRUFic29sdXRlVVJMcyB7IERvTm90UmVzb2x2ZVVSTHMs
IFJlc29sdmVBbGxVUkxzLCBSZXNvbHZlTm9uTG9jYWxVUkxzIH07CmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDliYWY3YWQwZjE3NjI0NTYwOGI3
YjQ1ZGEwNWJmOGU1YzJiNzEyZS4uN2NkZmMxOTQ3OWYxZTk0N2I0ODNlNjA1Y2EzYTdjMTFiYjQ0
NmY1YiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE5IEBACisyMDE4LTAxLTIxICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgorCisgICAgICAgIEJsb2IgY29udmVyc2lvbiBhbmQgc2FuaXRpemF0aW9uIGRvZXNuJ3Qg
d29yayB3aXRoIE1pY3Jvc29mdCBXb3JkIGZvciBNYWMgMjAxMQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxNjE2CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8zNjQ4NDkwOD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRlZCB0ZXN0cyB0byBtYWtlIHN1cmUgd2Ugc2FuaXRpemUgcGxhaW4gSFRNTCwg
bm90IGp1c3Qgd2ViIGFyY2hpdmVzLAorICAgICAgICB3aGVuIGFuZCBvbmx5IHdoZW4gY3VzdG9t
IHBhc3RlYm9hcmQgZGF0YSBpcyBlbmFibGVkLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUhUTUwubW06IEFkZGVkLgorICAgICAgICAo
d3JpdGVIVE1MVG9QYXN0ZWJvYXJkKTogQWRkZWQuCisgICAgICAgIChjcmVhdGVXZWJWaWV3V2l0
aEN1c3RvbVBhc3RlYm9hcmREYXRhU2V0dGluZyk6IEFkZGVkLgorCiAyMDE4LTAxLTIxICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBhIG5ldyBm
ZWF0dXJlIGZsYWcgZm9yIEVYVFJBX1pPT01fTU9ERSBhbmQgcmVpbnRyb2R1Y2UgQWRkaXRpb25h
bEZlYXR1cmVEZWZpbmVzLmgKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZWZkN2E4ZjQ5ZGNi
Yjk0MTY0ZWI2NDkyM2NhNzk0ZTU3MzUwNDU4MC4uZTczNDAxNTliNTBmYmYyZDk4OWI0MDBmZGRl
YzY0NmQ3NjVlNDJkOSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTU3Nyw2ICs1NzcsNyBA
QAogCQk5QjYyNjMwQzFGOEMyNUM4MDA3RUUyOUIgLyogY29weS11cmwuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjYyNjMwQjFGOEMy
NTEwMDA3RUUyOUIgLyogY29weS11cmwuaHRtbCAqLzsgfTsKIAkJOUI3QTM3QzQxRjhBRUJBNTAw
NEFBMjI4IC8qIENvcHlVUkwubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5QjdBMzdDMjFGOEFFQkE1MDA0QUEyMjggLyogQ29weVVSTC5tbSAqLzsgfTsK
IAkJOUI3RDc0MEYxRjgzNzg3NzAwMDZDNDMyIC8qIHBhc3RlLXJ0ZmQuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjdENzQwRTFGODM3
N0U2MDAwNkM0MzIgLyogcGFzdGUtcnRmZC5odG1sICovOyB9OworCQk5QkNCN0MyODIwMTMwNjAw
MDAzRTdDMEMgLyogUGFzdGVIVE1MLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUJDQjdDMjYyMDEzMDYwMDAwM0U3QzBDIC8qIFBhc3RlSFRNTC5tbSAq
LzsgfTsKIAkJOUJENDIzOUExRTA0QkQ5ODAwMjAwMzk1IC8qIEF0dHJpYnV0ZWRTdWJzdHJpbmdG
b3JQcm9wb3NlZFJhbmdlV2l0aEltYWdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOUJENDIzOTkxRTA0QkQ5ODAwMjAwMzk1IC8qIEF0dHJpYnV0ZWRT
dWJzdHJpbmdGb3JQcm9wb3NlZFJhbmdlV2l0aEltYWdlLm1tICovOyB9OwogCQk5QkQ0MjM5QzFF
MDRDMDFDMDAyMDAzOTUgLyogY2hpbmVzZS1jaGFyYWN0ZXItd2l0aC1pbWFnZS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCRDQyMzlC
MUUwNEJGRDAwMDIwMDM5NSAvKiBjaGluZXNlLWNoYXJhY3Rlci13aXRoLWltYWdlLmh0bWwgKi87
IH07CiAJCTlCRDUxMTFDMUZFOEUxMTYwMEQyQjYzMCAvKiBBY2Nlc3NpbmdQYXN0ZWRJbWFnZS5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCRDUxMTFC
MUZFOEUxMTYwMEQyQjYzMCAvKiBBY2Nlc3NpbmdQYXN0ZWRJbWFnZS5tbSAqLzsgfTsKQEAgLTE1
ODksNiArMTU5MCw3IEBACiAJCTlCNzkxNjRGMUJEODlEMEQwMEQ1MEI4RiAvKiBGaXJzdFJlc3Bv
bmRlclNjcm9sbGluZ1Bvc2l0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRmlyc3RSZXNwb25kZXJTY3JvbGxpbmdQb3NpdGlvbi5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOUI3QTM3QzIxRjhBRUJBNTAwNEFBMjI4IC8qIENvcHlVUkwubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb3B5VVJMLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5QjdENzQwRTFGODM3N0U2MDAwNkM0MzIgLyogcGFzdGUtcnRmZC5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBw
YXRoID0gInBhc3RlLXJ0ZmQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlC
Q0I3QzI2MjAxMzA2MDAwMDNFN0MwQyAvKiBQYXN0ZUhUTUwubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBQYXN0ZUhUTUwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCRDQyMzk5
MUUwNEJEOTgwMDIwMDM5NSAvKiBBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yUHJvcG9zZWRSYW5nZVdp
dGhJbWFnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF0dHJp
YnV0ZWRTdWJzdHJpbmdGb3JQcm9wb3NlZFJhbmdlV2l0aEltYWdlLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5QkQ0MjM5QjFFMDRCRkQwMDAyMDAzOTUgLyogY2hpbmVzZS1jaGFy
YWN0ZXItd2l0aC1pbWFnZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImNoaW5l
c2UtY2hhcmFjdGVyLXdpdGgtaW1hZ2UuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTlCRDUxMTFCMUZFOEUxMTYwMEQyQjYzMCAvKiBBY2Nlc3NpbmdQYXN0ZWRJbWFnZS5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2luZ1Bhc3RlZEltYWdlLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjExNSw2ICsyMTE3LDcgQEAKIAkJCQlDRUJDQTEyRTFFM0E2
NjAxMDBDNzMyOTMgLyogT3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kubW0gKi8sCiAJCQkJ
OUJEQ0NEODUxRjdEMEIwNzAwMDA5QTE4IC8qIFBhc3RlSW1hZ2UubW0gKi8sCiAJCQkJOUJERDk1
NTYxRjgzNjgzNjAwRDIwQzYwIC8qIFBhc3RlUlRGRC5tbSAqLywKKwkJCQk5QkNCN0MyNjIwMTMw
NjAwMDAzRTdDMEMgLyogUGFzdGVIVE1MLm1tICovLAogCQkJCTlCMjM0NjQxMUY5NDNBMjQwMERC
MUQyMyAvKiBQYXN0ZVdlYkFyY2hpdmUubW0gKi8sCiAJCQkJM0ZDQzRGRTQxRUM0RTg1MjAwNzZF
MzdDIC8qIFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5tbSAqLywKIAkJCQk4M0JBRUU4QzFFRjQ2
MjU1MDBEREU4OTQgLyogUGx1Z2luTG9hZENsaWVudFBvbGljaWVzLm1tICovLApAQCAtMzM5Niw2
ICszMzk5LDcgQEAKIAkJCQk3Q0NFN0VCQjFBNDExQTdFMDA0NDdDNEMgLyogRE9NSFRNTFRhYmxl
Q2VsbENlbGxBYm92ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJENTFBMEM3MUM4QkYwMEMwMDc2
NUM0NSAvKiBET01IVE1MVmlkZW9FbGVtZW50V3JhcHBlci5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTQ2Mzk3Qjk1MURDMkM4NTAwMDlBNzhBRSAvKiBET01Ob2RlLm1tIGluIFNvdXJjZXMgKi8sCisJ
CQkJOUJDQjdDMjgyMDEzMDYwMDAwM0U3QzBDIC8qIFBhc3RlSFRNTC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTdDQ0U3RUJDMUE0MTFBN0UwMDQ0N0M0QyAvKiBET01Ob2RlRnJvbUpTT2JqZWN0Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQkQxQTQxMUE3RTAwNDQ3QzRDIC8qIERPTVJhbmdl
T2ZTdHJpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VFQzFBNDExQUU2MDA0NDdDNEMg
LyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSFRNTC5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVIVE1MLm1tCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmI4YmRhZmEwOWRiZWM0MzFjNTE1MDY5YjcyMzQyZTY2YjUzZGQzNWUKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSFRNTC5t
bQpAQCAtMCwwICsxLDE1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oQ09DT0EpCisKKyNpbXBvcnQgIlBs
YXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxX
ZWJDb3JlL0xlZ2FjeU5TUGFzdGVib2FyZFR5cGVzLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQcmVm
ZXJlbmNlc1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUmVmUHJpdmF0
ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+Cisj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlIDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxl
Q29yZVNlcnZpY2VzLmg+CisjZW5kaWYKKworQGludGVyZmFjZSBXS1dlYlZpZXcgKCkKKy0gKHZv
aWQpcGFzdGU6KGlkKXNlbmRlcjsKK0BlbmQKKworI2lmIFBMQVRGT1JNKE1BQykKK3ZvaWQgd3Jp
dGVIVE1MVG9QYXN0ZWJvYXJkKE5TU3RyaW5nICpodG1sKQoreworICAgIFtbTlNQYXN0ZWJvYXJk
IGdlbmVyYWxQYXN0ZWJvYXJkXSBkZWNsYXJlVHlwZXM6QFtXZWJDb3JlOjpsZWdhY3lIVE1MUGFz
dGVib2FyZFR5cGUoKV0gb3duZXI6bmlsXTsKKyAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFz
dGVib2FyZF0gc2V0U3RyaW5nOmh0bWwgZm9yVHlwZTpXZWJDb3JlOjpsZWdhY3lIVE1MUGFzdGVi
b2FyZFR5cGUoKV07Cit9CisjZWxzZQordm9pZCB3cml0ZUhUTUxUb1Bhc3RlYm9hcmQoTlNTdHJp
bmcgKmh0bWwpCit7CisgICAgW1tVSVBhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNldEl0
ZW1zOkBbQHsgKE5TU3RyaW5nICopa1VUVHlwZUhUTUwgOiBodG1sfV1dOworfQorI2VuZGlmCisK
K3N0YXRpYyBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gY3JlYXRlV2ViVmlld1dpdGhDdXN0b21Q
YXN0ZWJvYXJkRGF0YVNldHRpbmcoYm9vbCBlbmFibGVkKQoreworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgNDAwLCA0MDApXSk7CisgICAgYXV0byBwcmVmZXJlbmNlcyA9IChXS1ByZWZlcmVuY2Vz
UmVmKVtbd2ViVmlldyBjb25maWd1cmF0aW9uXSBwcmVmZXJlbmNlc107CisgICAgV0tQcmVmZXJl
bmNlc1NldERhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZChwcmVmZXJlbmNlcywgdHJ1ZSk7CisgICAg
V0tQcmVmZXJlbmNlc1NldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZChwcmVmZXJlbmNlcywg
ZW5hYmxlZCk7CisgICAgcmV0dXJuIHdlYlZpZXc7Cit9CisKK1RFU1QoUGFzdGVIVE1MLCBFeHBv
c2VzSFRNTFR5cGVJbkRhdGFUcmFuc2ZlcikKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBjcmVhdGVX
ZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9hcmREYXRhU2V0dGluZyh0cnVlKTsKKyAgICBbd2ViVmll
dyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJwYXN0ZS1ydGZkIl07CisKKyAgICB3
cml0ZUhUTUxUb1Bhc3RlYm9hcmQoQCI8IURPQ1RZUEUgaHRtbD48aHRtbD48Ym9keT48cD48dT5o
ZWxsbzwvdT4sIHdvcmxkPC9wPjwvYm9keT48L2h0bWw+Iik7CisgICAgW3dlYlZpZXcgcGFzdGU6
bmlsXTsKKworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJjbGlwYm9hcmREYXRhLnR5cGVzLmluY2x1ZGVzKCd0ZXh0L2h0bWwnKSJdKTsKKyAg
ICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZWRpdG9yLmlubmVySFRN
TCA9IGNsaXBib2FyZERhdGEudmFsdWVzWzBdOyBlZGl0b3IuZm9jdXMoKSJdOworICAgIEVYUEVD
VF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5x
dWVyeUNvbW1hbmRTdGF0ZSgndW5kZXJsaW5lJykiXS5ib29sVmFsdWUpOworICAgIFt3ZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRTZWxlY3Rpb24oKS5tb2RpZnkoJ21v
dmUnLCAnZm9yd2FyZCcsICdsaW5lYm91bmRhcnknKSJdOworICAgIEVYUEVDVF9GQUxTRShbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQucXVlcnlDb21tYW5k
U3RhdGUoJ3VuZGVybGluZScpIl0uYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImhl
bGxvLCB3b3JsZCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJlZGl0
b3IudGV4dENvbnRlbnQiXSk7Cit9CisKK1RFU1QoUGFzdGVIVE1MLCBTYW5pdGl6ZXNIVE1MKQor
eworICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdXaXRoQ3VzdG9tUGFzdGVib2FyZERh
dGFTZXR0aW5nKHRydWUpOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VO
YW1lZDpAInBhc3RlLXJ0ZmQiXTsKKworICAgIHdyaXRlSFRNTFRvUGFzdGVib2FyZChAIjwhRE9D
VFlQRSBodG1sPjxtZXRhIGNvbnRlbnQ9XCJzZWNyZXRcIj48YiBvbm1vdXNlb3Zlcj1cImRhbmdl
cm91c0NvZGUoKVwiPmhlbGxvPC9iPiIKKyAgICAgICAgIjwhLS0gc2VjcmV0LS0+LCB3b3JsZDxz
Y3JpcHQ+ZGFuZ2Vyb3VzQ29kZSgpPC9zY3JpcHQ+JzsiKTsKKyAgICBbd2ViVmlldyBwYXN0ZTpu
aWxdOworCisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImNsaXBib2FyZERhdGEudHlwZXMuaW5jbHVkZXMoJ3RleHQvaHRtbCcpIl0uYm9vbFZh
bHVlKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiY2xpcGJvYXJkRGF0YS52YWx1ZXNbMF0uaW5jbHVkZXMoJ2hlbGxvJykiXS5ib29sVmFs
dWUpOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJjbGlwYm9hcmREYXRhLnZhbHVlc1swXS5pbmNsdWRlcygnd29ybGQnKSJdLmJvb2xWYWx1
ZSk7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJjbGlwYm9hcmREYXRhLnZhbHVlc1swXS5pbmNsdWRlcygnc2VjcmV0JykiXS5ib29sVmFs
dWUpOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiY2xpcGJvYXJkRGF0YS52YWx1ZXNbMF0uaW5jbHVkZXMoJ2Rhbmdlcm91c0NvZGUnKSJd
LmJvb2xWYWx1ZSk7Cit9CisKK1RFU1QoUGFzdGVIVE1MLCBEb2VzTm90U2FuaXRpemVIVE1MV2hl
bkN1c3RvbVBhc3RlYm9hcmREYXRhSXNEaXNhYmxlZCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBj
cmVhdGVXZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9hcmREYXRhU2V0dGluZyhmYWxzZSk7CisgICAg
W3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAicGFzdGUtcnRmZCJdOwor
CisgICAgd3JpdGVIVE1MVG9QYXN0ZWJvYXJkKEAiPCFET0NUWVBFIGh0bWw+PG1ldGEgY29udGVu
dD1cInNlY3JldFwiPjxiIG9ubW91c2VvdmVyPVwiZGFuZ2Vyb3VzQ29kZSgpXCI+aGVsbG88L2I+
IgorICAgICAgICAiPCEtLSBzZWNyZXQtLT4sIHdvcmxkPHNjcmlwdD5kYW5nZXJvdXNDb2RlKCk8
L3NjcmlwdD4nOyIpOworICAgIFt3ZWJWaWV3IHBhc3RlOm5pbF07CisKKyAgICBFWFBFQ1RfVFJV
RShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YS50
eXBlcy5pbmNsdWRlcygndGV4dC9odG1sJykiXS5ib29sVmFsdWUpOworICAgIEVYUEVDVF9UUlVF
KFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjbGlwYm9hcmREYXRhLnZh
bHVlc1swXS5pbmNsdWRlcygnaGVsbG8nKSJdLmJvb2xWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUo
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERhdGEudmFs
dWVzWzBdLmluY2x1ZGVzKCd3b3JsZCcpIl0uYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YS52YWx1
ZXNbMF0uaW5jbHVkZXMoJ3NlY3JldCcpIl0uYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YS52YWx1
ZXNbMF0uaW5jbHVkZXMoJ2Rhbmdlcm91c0NvZGUnKSJdLmJvb2xWYWx1ZSk7Cit9CisKK1RFU1Qo
UGFzdGVIVE1MLCBTdHJpcHNIVFRQVVJMcykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBjcmVhdGVX
ZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9hcmREYXRhU2V0dGluZyh0cnVlKTsKKyAgICBbd2ViVmll
dyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJwYXN0ZS1ydGZkIl07CisKKyAgICB3
cml0ZUhUTUxUb1Bhc3RlYm9hcmQoQCI8IURPQ1RZUEUgaHRtbD48aHRtbD48Ym9keT48YSBhbHQ9
J2hlbGxvJyBocmVmPSdmaWxlOi8vL3ByaXZhdGUvdmFyL2ZvbGRlcnMvc2VjcmV0L2ZpbGVzLyc+
d29ybGQ8L2E+Iik7CisgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKKworICAgIEVYUEVDVF9UUlVF
KFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjbGlwYm9hcmREYXRhLnR5
cGVzLmluY2x1ZGVzKCd0ZXh0L2h0bWwnKSJdLmJvb2xWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUo
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERhdGEudmFs
dWVzWzBdLmluY2x1ZGVzKCdoZWxsbycpIl0uYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YS52YWx1
ZXNbMF0uaW5jbHVkZXMoJ3dvcmxkJykiXS5ib29sVmFsdWUpOworICAgIEVYUEVDVF9GQUxTRShb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YS52YWx1
ZXNbMF0uaW5jbHVkZXMoJ3NlY3JldCcpIl0uYm9vbFZhbHVlKTsKK30KKworVEVTVChQYXN0ZUhU
TUwsIERvZXNOb3RTdHJpcEhUVFBVUkxzV2hlbkN1c3RvbVBhc3RlYm9hcmREYXRhSXNEaXNhYmxl
ZCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBjcmVhdGVXZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9h
cmREYXRhU2V0dGluZyhmYWxzZSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0
UGFnZU5hbWVkOkAicGFzdGUtcnRmZCJdOworCisgICAgd3JpdGVIVE1MVG9QYXN0ZWJvYXJkKEAi
PCFET0NUWVBFIGh0bWw+PGh0bWw+PGJvZHk+PGEgYWx0PSdoZWxsbycgaHJlZj0nZmlsZTovLy9w
cml2YXRlL3Zhci9mb2xkZXJzL3NlY3JldC9maWxlcy8nPndvcmxkPC9hPiIpOworICAgIFt3ZWJW
aWV3IHBhc3RlOm5pbF07CisKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YS50eXBlcy5pbmNsdWRlcygndGV4dC9odG1s
JykiXS5ib29sVmFsdWUpOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJjbGlwYm9hcmREYXRhLnZhbHVlc1swXS5pbmNsdWRlcygnaGVsbG8n
KSJdLmJvb2xWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERhdGEudmFsdWVzWzBdLmluY2x1ZGVzKCd3b3JsZCcp
Il0uYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YS52YWx1ZXNbMF0uaW5jbHVkZXMoJ3NlY3JldCcp
Il0uYm9vbFZhbHVlKTsKK30KKworVEVTVChQYXN0ZUhUTUwsIEtlZXBzSFRUUFVSTHMpCit7Cisg
ICAgYXV0byB3ZWJWaWV3ID0gY3JlYXRlV2ViVmlld1dpdGhDdXN0b21QYXN0ZWJvYXJkRGF0YVNl
dHRpbmcodHJ1ZSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVk
OkAicGFzdGUtcnRmZCJdOworCisgICAgd3JpdGVIVE1MVG9QYXN0ZWJvYXJkKEAiPCFET0NUWVBF
IGh0bWw+PGh0bWw+PGJvZHk+PGEgdGl0bGU9J2hlbGxvJyBocmVmPSdodHRwczovL3N2bi53ZWJr
aXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rL0xheW91dFRlc3RzL2VkaXRpbmcvcmVzb3Vy
Y2VzL2FiZS5wbmcnPndvcmxkPC9hPiIpOworICAgIFt3ZWJWaWV3IHBhc3RlOm5pbF07CisKKyAg
ICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xp
cGJvYXJkRGF0YS50eXBlcy5pbmNsdWRlcygndGV4dC9odG1sJykiXS5ib29sVmFsdWUpOworICAg
IEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjbGlw
Ym9hcmREYXRhLnZhbHVlc1swXS5pbmNsdWRlcygnaGVsbG8nKSJdLmJvb2xWYWx1ZSk7CisgICAg
RVhQRUNUX1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBi
b2FyZERhdGEudmFsdWVzWzBdLmluY2x1ZGVzKCd3b3JsZCcpIl0uYm9vbFZhbHVlKTsKKyAgICBF
WFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJv
YXJkRGF0YS52YWx1ZXNbMF0uaW5jbHVkZXMoJ2FiZS5wbmcnKSJdLmJvb2xWYWx1ZSk7Cit9CisK
KyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9STShDT0NPQSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331940</attachid>
            <date>2018-01-22 10:05:15 -0800</date>
            <delta_ts>2018-01-22 12:38:56 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-181616-20180122100514.patch</filename>
            <type>text/plain</type>
            <size>20814</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzMzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDE4LTAxLTIyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEJsb2IgY29udmVyc2lvbiBhbmQg
c2FuaXRpemF0aW9uIGRvZXNuJ3Qgd29yayB3aXRoIE1pY3Jvc29mdCBXb3JkIGZvciBNYWMgMjAx
MQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxNjE2
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjQ4NDkwOD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBXZW5zb24gSHNpZWguCisKKyAgICAgICAgVGhlIGJ1ZyB3YXMgY2F1c2VkIGJ5IFdlYkNvbnRl
bnRSZWFkZXI6OnJlYWRIVE1MIGFuZCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkSFRNTCBu
b3Qgc2FuaXRpemluZyBwbGFpbiBIVE1MIHN0cmluZworICAgICAgICBhcyBkb25lIGZvciB3ZWIg
YXJjaGl2ZXMgZXZlbiB3aGVuIGN1c3RvbSBwYXN0ZWJvYXJkIGRhdGEgaXMgZW5hYmxlZC4gRml4
ZWQgdGhlIGJ1ZyBieSBkb2luZyB0aGUgc2FuaXRpemF0aW9uLgorCisgICAgICAgIFVuZm9ydHVu
YXRlbHksIHdlIGNhbid0IG1ha2UgZmlsZSBVUkxzIGF2YWlsYWJsZSBpbiB0aGlzIGNhc2UgYmVj
YXVzZSBXZWJDb250ZW50IHByb2Nlc3MgZG9lc24ndCBoYXZlIHNhbmRib3ggZXh0ZW5zaW9ucwor
ICAgICAgICB0byBhY2Nlc3MgbG9jYWwgZmlsZXMgcmVmZXJlbmNlZCBieSB0aGUgSFRNTCBzb3Vy
Y2UgaW4gdGhlIGNsaXBib2FyZCwgYW5kIHdlIGNhbid0IG1ha2UgV2ViQ29udGVudCBwcm9jZXNz
IHJlcXVlc3QgZm9yCisgICAgICAgIGEgc2FuZGJveCBleHRlbnNpb27CuG9uIGFuIGFyYml0cmFy
eSBsb2NhbCBmaWxlLCBhcyBpdCB3b3VsZCBkZWZlYXQgdGhlIHdob2xlIHBvaW50IG9mIHNhbmRi
b3hpbmcuCisKKyAgICAgICAgSW5zdGVhZCwgd2Ugc3RyaXAgYXdheSBhbGwgSFRNTCBhdHRyaWJ1
dGVzIHJlZmVyZW5jaW5nIGEgVVJMIHdob3NlIHNjaGVtZSBpcyBub3QgSFRUUCwgSFRUUFMsIG9y
IGRhdGEgd2hlbiBzYW5pdGl6aW5nCisgICAgICAgIHRleHQvaHRtbCBmcm9tIHRoZSBjbGlwYm9h
cmQgdG8gYXZvaWQgZXhwb3NpbmcgbG9jYWwgZmlsZSBwYXRocywgd2hpY2ggY2FuIHJldmVhbCBw
cml2YWN5ICYgc2VjdXJpdHkgc2Vuc2l0aXZlIGRhdGEKKyAgICAgICAgc3VjaCBhcyB0aGUgdXNl
cidzIGZ1bGwgbmFtZSwgYW5kIHRoZSBsb2NhdGlvbiBvZiBwcml2YXRlIGNvbnRhaW5lcnMgb2Yg
b3RoZXIgYXBwbGljYXRpb25zIGluIHRoZSBzeXN0ZW0uCisKKyAgICAgICAgVGVzdHM6IFBhc3Rl
SFRNTC5Eb2VzTm90U2FuaXRpemVIVE1MV2hlbkN1c3RvbVBhc3RlYm9hcmREYXRhSXNEaXNhYmxl
ZAorICAgICAgICAgICAgICAgUGFzdGVIVE1MLkRvZXNOb3RTdHJpcEZpbGVVUkxzV2hlbkN1c3Rv
bVBhc3RlYm9hcmREYXRhSXNEaXNhYmxlZAorICAgICAgICAgICAgICAgUGFzdGVIVE1MLkV4cG9z
ZXNIVE1MVHlwZUluRGF0YVRyYW5zZmVyCisgICAgICAgICAgICAgICBQYXN0ZUhUTUwuS2VlcHNI
VFRQVVJMcworICAgICAgICAgICAgICAgUGFzdGVIVE1MLlNhbml0aXplc0hUTUwKKyAgICAgICAg
ICAgICAgIFBhc3RlSFRNTC5TdHJpcHNGaWxlVVJMcworCisgICAgICAgICogZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50
UmVhZGVyOjpyZWFkSFRNTCk6IEZpeGVkIHRoZSBidWcgYnkgc2FuaXRpemluZyB0aGUgbWFya3Vw
LCBhbmQgc3RyaXBwaW5nIGF3YXkgZmlsZSBVUkxzLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29u
dGVudE1hcmt1cFJlYWRlcjo6cmVhZEhUTUwpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL21h
cmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVTdWJyZXNvdXJjZVVSTEF0dHJpYnV0
ZXMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3VwKTogQWRkZWQuCisg
ICAgICAgICogZWRpdGluZy9tYXJrdXAuaDoKKwogMjAxOC0wMS0yMiAgSmF2aWVyIEZlcm5hbmRl
eiAgPGpmZXJuYW5kZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLWFsaWduXSAnb3ZlcmZs
b3cnIGtleXdvcmQgbXVzdCBwcmVjZWRlIHRoZSBzZWxmLXBvc2l0aW9uIGFuZCBjb250ZW50LXBv
c2l0aW9uIHZhbHVlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCShyZXZpc2lvbiAy
MjczMzcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRl
ICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJVUkwuaCIKKyNp
bmNsdWRlICJVUkxQYXJzZXIuaCIKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCiAjaW5j
bHVkZSAiVmlzaWJsZVVuaXRzLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpAQCAt
MTQ0LDYgKzE0NSwzMCBAQCB2b2lkIHJlcGxhY2VTdWJyZXNvdXJjZVVSTHMoUmVmPERvY3VtZW50
CiAgICAgICAgIGNoYW5nZS5hcHBseSgpOwogfQogCitzdHJ1Y3QgRWxlbWVudEF0dHJpYnV0ZSB7
CisgICAgUmVmPEVsZW1lbnQ+IGVsZW1lbnQ7CisgICAgUXVhbGlmaWVkTmFtZSBhdHRyaWJ1dGVO
YW1lOworfTsKKwordm9pZCByZW1vdmVTdWJyZXNvdXJjZVVSTEF0dHJpYnV0ZXMoUmVmPERvY3Vt
ZW50RnJhZ21lbnQ+JiYgZnJhZ21lbnQsIFdURjo6RnVuY3Rpb248Ym9vbChjb25zdCBVUkwmKT4g
c2hvdWxkUmVtb3ZlVVJMKQoreworICAgIFZlY3RvcjxFbGVtZW50QXR0cmlidXRlPiBhdHRyaWJ1
dGVzVG9SZW1vdmU7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFudHNPZlR5cGU8
RWxlbWVudD4oZnJhZ21lbnQpKSB7CisgICAgICAgIGlmICghZWxlbWVudC5oYXNBdHRyaWJ1dGVz
KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgZm9yIChjb25zdCBBdHRyaWJ1dGUm
IGF0dHJpYnV0ZSA6IGVsZW1lbnQuYXR0cmlidXRlc0l0ZXJhdG9yKCkpIHsKKyAgICAgICAgICAg
IC8vIEZJWE1FOiBUaGlzIHdvbid0IHdvcmsgZm9yIHNyY3NldC4KKyAgICAgICAgICAgIGlmIChl
bGVtZW50LmF0dHJpYnV0ZUNvbnRhaW5zVVJMKGF0dHJpYnV0ZSkgJiYgIWF0dHJpYnV0ZS52YWx1
ZSgpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIFVSTCB1cmwgPSBVUkxQYXJzZXIgeyBh
dHRyaWJ1dGUudmFsdWUoKSB9LnJlc3VsdCgpOworICAgICAgICAgICAgICAgIGlmIChzaG91bGRS
ZW1vdmVVUkwodXJsKSkKKyAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlc1RvUmVtb3ZlLmFw
cGVuZCh7IGVsZW1lbnQsIGF0dHJpYnV0ZS5uYW1lKCkgfSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisgICAgZm9yIChhdXRvJiBpdGVtIDogYXR0cmlidXRlc1RvUmVtb3ZlKQor
ICAgICAgICBpdGVtLmVsZW1lbnQtPnJlbW92ZUF0dHJpYnV0ZShpdGVtLmF0dHJpYnV0ZU5hbWUp
OworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4gY3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJD
b250ZW50KCkKIHsKICAgICBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJhdGlvbihjcmVh
dGVFbXB0eUVkaXRvckNsaWVudCgpLCBTb2NrZXRQcm92aWRlcjo6Y3JlYXRlKCksIExpYldlYlJU
Q1Byb3ZpZGVyOjpjcmVhdGUoKSwgQ2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0ZSgpKTsKQEAg
LTE3Miw3ICsxOTcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4gY3JlYXRlUGFnZUZvclNhbml0
CiB9CiAKIAotU3RyaW5nIHNhbml0aXplTWFya3VwKGNvbnN0IFN0cmluZyYgcmF3SFRNTCkKK1N0
cmluZyBzYW5pdGl6ZU1hcmt1cChjb25zdCBTdHJpbmcmIHJhd0hUTUwsIHN0ZDo6b3B0aW9uYWw8
V1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50RnJhZ21lbnQmKT4+IGZyYWdtZW50U2FuaXRpemVy
KQogewogICAgIGF1dG8gcGFnZSA9IGNyZWF0ZVBhZ2VGb3JTYW5pdGl6aW5nV2ViQ29udGVudCgp
OwogICAgIERvY3VtZW50KiBzdGFnaW5nRG9jdW1lbnQgPSBwYWdlLT5tYWluRnJhbWUoKS5kb2N1
bWVudCgpOwpAQCAtMTgxLDYgKzIwNiwxMCBAQCBTdHJpbmcgc2FuaXRpemVNYXJrdXAoY29uc3Qg
U3RyaW5nJiByYXdICiAgICAgQVNTRVJUKGJvZHlFbGVtZW50KTsKIAogICAgIGF1dG8gZnJhZ21l
bnQgPSBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKnN0YWdpbmdEb2N1bWVudCwgcmF3SFRNTCwg
ZW1wdHlTdHJpbmcoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50KTsKKworICAg
IGlmIChmcmFnbWVudFNhbml0aXplcikKKyAgICAgICAgKCpmcmFnbWVudFNhbml0aXplcikoZnJh
Z21lbnQpOworCiAgICAgYm9keUVsZW1lbnQtPmFwcGVuZENoaWxkKGZyYWdtZW50LmdldCgpKTsK
IAogICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpzdGFnaW5nRG9jdW1lbnQpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCShyZXZpc2lvbiAyMjczMzcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hcmt1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmgiCiAjaW5jbHVkZSAiSFRNTElu
dGVyY2hhbmdlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvRnVu
Y3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC00Nyw4ICs0OCwxMCBAQCBjbGFzcyBRdWFsaWZpZWROYW1lOwogY2xhc3MgUmFuZ2U7CiAK
IHZvaWQgcmVwbGFjZVN1YnJlc291cmNlVVJMcyhSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiwgSGFz
aE1hcDxBdG9taWNTdHJpbmcsIEF0b21pY1N0cmluZz4mJik7Cit2b2lkIHJlbW92ZVN1YnJlc291
cmNlVVJMQXR0cmlidXRlcyhSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiwgV1RGOjpGdW5jdGlvbjxi
b29sKGNvbnN0IFVSTCYpPiBzaG91bGRSZW1vdmVVUkwpOworCiBzdGQ6OnVuaXF1ZV9wdHI8UGFn
ZT4gY3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KCk7Ci1TdHJpbmcgc2FuaXRpemVN
YXJrdXAoY29uc3QgU3RyaW5nJik7CitTdHJpbmcgc2FuaXRpemVNYXJrdXAoY29uc3QgU3RyaW5n
Jiwgc3RkOjpvcHRpb25hbDxXVEY6OkZ1bmN0aW9uPHZvaWQoRG9jdW1lbnRGcmFnbWVudCYpPj4g
ZnJhZ21lbnRTYW5pdGl6ZXIgPSBzdGQ6Om51bGxvcHQpOwogCiBlbnVtIEVDaGlsZHJlbk9ubHkg
eyBJbmNsdWRlTm9kZSwgQ2hpbGRyZW5Pbmx5IH07CiBlbnVtIEVBYnNvbHV0ZVVSTHMgeyBEb05v
dFJlc29sdmVVUkxzLCBSZXNvbHZlQWxsVVJMcywgUmVzb2x2ZU5vbkxvY2FsVVJMcyB9OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVh
ZGVyQ29jb2EubW0JKHJldmlzaW9uIDIyNzMzNykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
Y29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MjcsNyAr
NTI3LDE3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEhUTUwoY29uc3QgU3QKICAgICBp
ZiAoc3RyaW5nT21pdHRpbmdNaWNyb3NvZnRQcmVmaXguaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoZG9j
dW1lbnQsIHN0cmluZ09taXR0aW5nTWljcm9zb2Z0UHJlZml4LCBlbXB0eVN0cmluZygpLCBEaXNh
bGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNvbnRlbnQpKTsKKyAgICBTdHJpbmcgbWFya3VwOworICAg
IGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmN1c3RvbVBhc3Rl
Ym9hcmREYXRhRW5hYmxlZCgpICYmIHNob3VsZFNhbml0aXplKCkpIHsKKyAgICAgICAgbWFya3Vw
ID0gc2FuaXRpemVNYXJrdXAoc3RyaW5nT21pdHRpbmdNaWNyb3NvZnRQcmVmaXgsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoRG9jdW1lbnRGcmFnbWVudCYpPiB7IFtdIChEb2N1bWVudEZyYWdtZW50JiBm
cmFnbWVudCkgeworICAgICAgICAgICAgcmVtb3ZlU3VicmVzb3VyY2VVUkxBdHRyaWJ1dGVzKGZy
YWdtZW50LCBbXSAoY29uc3QgVVJMJiB1cmwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc2hv
dWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHVybCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fSB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgbWFya3VwID0gc3RyaW5nT21pdHRpbmdNaWNyb3Nv
ZnRQcmVmaXg7CisKKyAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoZG9j
dW1lbnQsIG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5D
b250ZW50KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTUzNyw5ICs1NDcsMTMgQEAgYm9v
bCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkSFRNTChjbwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICBTdHJpbmcgcmF3SFRNTCA9IHN0cmlwTWljcm9zb2Z0UHJlZml4KHN0cmluZyk7
Ci0gICAgaWYgKHNob3VsZFNhbml0aXplKCkpCi0gICAgICAgIG1hcmt1cCA9IHNhbml0aXplTWFy
a3VwKHJhd0hUTUwpOwotICAgIGVsc2UKKyAgICBpZiAoc2hvdWxkU2FuaXRpemUoKSkgeworICAg
ICAgICBtYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cChyYXdIVE1MLCBzdGQ6OmZ1bmN0aW9uPHZvaWQg
KERvY3VtZW50RnJhZ21lbnQmKT4geyBbXSAoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQpIHsK
KyAgICAgICAgICAgIHJlbW92ZVN1YnJlc291cmNlVVJMQXR0cmlidXRlcyhmcmFnbWVudCwgW10g
KGNvbnN0IFVSTCYgdXJsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNob3VsZFJlcGxhY2VT
dWJyZXNvdXJjZVVSTCh1cmwpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0gfSk7CisgICAg
fSBlbHNlCiAgICAgICAgIG1hcmt1cCA9IHJhd0hUTUw7CiAKICAgICByZXR1cm4gIW1hcmt1cC5p
c0VtcHR5KCk7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMjczMzcpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxOSBAQAorMjAxOC0wMS0yMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBCbG9iIGNvbnZlcnNpb24gYW5kIHNhbml0aXphdGlvbiBkb2Vz
bid0IHdvcmsgd2l0aCBNaWNyb3NvZnQgV29yZCBmb3IgTWFjIDIwMTEKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTYxNgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMzY0ODQ5MDg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29uIEhzaWVoLgor
CisgICAgICAgIEFkZGVkIHRlc3RzIHRvIG1ha2Ugc3VyZSB3ZSBzYW5pdGl6ZSBwbGFpbiBIVE1M
LCBub3QganVzdCB3ZWIgYXJjaGl2ZXMsCisgICAgICAgIHdoZW4gYW5kIG9ubHkgd2hlbiBjdXN0
b20gcGFzdGVib2FyZCBkYXRhIGlzIGVuYWJsZWQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSFRNTC5tbTogQWRkZWQuCisgICAgICAg
ICh3cml0ZUhUTUxUb1Bhc3RlYm9hcmQpOiBBZGRlZC4KKyAgICAgICAgKGNyZWF0ZVdlYlZpZXdX
aXRoQ3VzdG9tUGFzdGVib2FyZERhdGFTZXR0aW5nKTogQWRkZWQuCisKIDIwMTgtMDEtMjIgIENh
cmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtd
IFRlc3QgL3dlYmtpdC9XZWJLaXRXZWJzaXRlRGF0YS9yZXNvdXJjZS1sb2FkLXN0YXRpc3RpY3Mg
aXMgZmFpbGluZyBzaW5jZSByMjI3MjIzCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMjI3MzM3KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU3Nyw2ICs1NzcsNyBAQAog
CQk5QjYyNjMwQzFGOEMyNUM4MDA3RUUyOUIgLyogY29weS11cmwuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjYyNjMwQjFGOEMyNTEw
MDA3RUUyOUIgLyogY29weS11cmwuaHRtbCAqLzsgfTsKIAkJOUI3QTM3QzQxRjhBRUJBNTAwNEFB
MjI4IC8qIENvcHlVUkwubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5QjdBMzdDMjFGOEFFQkE1MDA0QUEyMjggLyogQ29weVVSTC5tbSAqLzsgfTsKIAkJ
OUI3RDc0MEYxRjgzNzg3NzAwMDZDNDMyIC8qIHBhc3RlLXJ0ZmQuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QjdENzQwRTFGODM3N0U2
MDAwNkM0MzIgLyogcGFzdGUtcnRmZC5odG1sICovOyB9OworCQk5QkNCN0MyODIwMTMwNjAwMDAz
RTdDMEMgLyogUGFzdGVIVE1MLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOUJDQjdDMjYyMDEzMDYwMDAwM0U3QzBDIC8qIFBhc3RlSFRNTC5tbSAqLzsg
fTsKIAkJOUJENDIzOUExRTA0QkQ5ODAwMjAwMzk1IC8qIEF0dHJpYnV0ZWRTdWJzdHJpbmdGb3JQ
cm9wb3NlZFJhbmdlV2l0aEltYWdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOUJENDIzOTkxRTA0QkQ5ODAwMjAwMzk1IC8qIEF0dHJpYnV0ZWRTdWJz
dHJpbmdGb3JQcm9wb3NlZFJhbmdlV2l0aEltYWdlLm1tICovOyB9OwogCQk5QkQ0MjM5QzFFMDRD
MDFDMDAyMDAzOTUgLyogY2hpbmVzZS1jaGFyYWN0ZXItd2l0aC1pbWFnZS5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCRDQyMzlCMUUw
NEJGRDAwMDIwMDM5NSAvKiBjaGluZXNlLWNoYXJhY3Rlci13aXRoLWltYWdlLmh0bWwgKi87IH07
CiAJCTlCRDUxMTFDMUZFOEUxMTYwMEQyQjYzMCAvKiBBY2Nlc3NpbmdQYXN0ZWRJbWFnZS5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCRDUxMTFCMUZF
OEUxMTYwMEQyQjYzMCAvKiBBY2Nlc3NpbmdQYXN0ZWRJbWFnZS5tbSAqLzsgfTsKQEAgLTE1ODks
NiArMTU5MCw3IEBACiAJCTlCNzkxNjRGMUJEODlEMEQwMEQ1MEI4RiAvKiBGaXJzdFJlc3BvbmRl
clNjcm9sbGluZ1Bvc2l0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRmlyc3RSZXNwb25kZXJTY3JvbGxpbmdQb3NpdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOUI3QTM3QzIxRjhBRUJBNTAwNEFBMjI4IC8qIENvcHlVUkwubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBDb3B5VVJMLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5QjdENzQwRTFGODM3N0U2MDAwNkM0MzIgLyogcGFzdGUtcnRmZC5odG1sICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gInBhc3RlLXJ0ZmQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTlCQ0I3
QzI2MjAxMzA2MDAwMDNFN0MwQyAvKiBQYXN0ZUhUTUwubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBQYXN0ZUhUTUwubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlCRDQyMzk5MUUw
NEJEOTgwMDIwMDM5NSAvKiBBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yUHJvcG9zZWRSYW5nZVdpdGhJ
bWFnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEF0dHJpYnV0
ZWRTdWJzdHJpbmdGb3JQcm9wb3NlZFJhbmdlV2l0aEltYWdlLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5QkQ0MjM5QjFFMDRCRkQwMDAyMDAzOTUgLyogY2hpbmVzZS1jaGFyYWN0
ZXItd2l0aC1pbWFnZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImNoaW5lc2Ut
Y2hhcmFjdGVyLXdpdGgtaW1hZ2UuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTlCRDUxMTFCMUZFOEUxMTYwMEQyQjYzMCAvKiBBY2Nlc3NpbmdQYXN0ZWRJbWFnZS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEFjY2Vzc2luZ1Bhc3RlZEltYWdlLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjExNSw2ICsyMTE3LDcgQEAKIAkJCQlDRUJDQTEyRTFFM0E2NjAx
MDBDNzMyOTMgLyogT3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kubW0gKi8sCiAJCQkJOUJE
Q0NEODUxRjdEMEIwNzAwMDA5QTE4IC8qIFBhc3RlSW1hZ2UubW0gKi8sCiAJCQkJOUJERDk1NTYx
RjgzNjgzNjAwRDIwQzYwIC8qIFBhc3RlUlRGRC5tbSAqLywKKwkJCQk5QkNCN0MyNjIwMTMwNjAw
MDAzRTdDMEMgLyogUGFzdGVIVE1MLm1tICovLAogCQkJCTlCMjM0NjQxMUY5NDNBMjQwMERCMUQy
MyAvKiBQYXN0ZVdlYkFyY2hpdmUubW0gKi8sCiAJCQkJM0ZDQzRGRTQxRUM0RTg1MjAwNzZFMzdD
IC8qIFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5tbSAqLywKIAkJCQk4M0JBRUU4QzFFRjQ2MjU1
MDBEREU4OTQgLyogUGx1Z2luTG9hZENsaWVudFBvbGljaWVzLm1tICovLApAQCAtMzM5Niw2ICsz
Mzk5LDcgQEAKIAkJCQk3Q0NFN0VCQjFBNDExQTdFMDA0NDdDNEMgLyogRE9NSFRNTFRhYmxlQ2Vs
bENlbGxBYm92ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJENTFBMEM3MUM4QkYwMEMwMDc2NUM0
NSAvKiBET01IVE1MVmlkZW9FbGVtZW50V3JhcHBlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ2
Mzk3Qjk1MURDMkM4NTAwMDlBNzhBRSAvKiBET01Ob2RlLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJ
OUJDQjdDMjgyMDEzMDYwMDAwM0U3QzBDIC8qIFBhc3RlSFRNTC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTdDQ0U3RUJDMUE0MTFBN0UwMDQ0N0M0QyAvKiBET01Ob2RlRnJvbUpTT2JqZWN0Lm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQkQxQTQxMUE3RTAwNDQ3QzRDIC8qIERPTVJhbmdlT2ZT
dHJpbmcubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VFQzFBNDExQUU2MDA0NDdDNEMgLyog
RE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSFRNTC5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSFRNTC5tbQkobm9u
ZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3Rl
SFRNTC5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0o
Q09DT0EpCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0V0tX
ZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJDb3JlL0xlZ2FjeU5TUGFzdGVib2FyZFR5cGVzLmg+Cisj
aW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9X
S1ByZWZlcmVuY2VzUmVmUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZp
Z3VyYXRpb25Qcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworI2lmIFBMQVRGT1JNKElPUykKKyNpbmNsdWRlIDxNb2Jp
bGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CisjZW5kaWYKKworQGludGVyZmFj
ZSBXS1dlYlZpZXcgKCkKKy0gKHZvaWQpcGFzdGU6KGlkKXNlbmRlcjsKK0BlbmQKKworI2lmIFBM
QVRGT1JNKE1BQykKK3ZvaWQgd3JpdGVIVE1MVG9QYXN0ZWJvYXJkKE5TU3RyaW5nICpodG1sKQor
eworICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBkZWNsYXJlVHlwZXM6QFtX
ZWJDb3JlOjpsZWdhY3lIVE1MUGFzdGVib2FyZFR5cGUoKV0gb3duZXI6bmlsXTsKKyAgICBbW05T
UGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gc2V0U3RyaW5nOmh0bWwgZm9yVHlwZTpXZWJD
b3JlOjpsZWdhY3lIVE1MUGFzdGVib2FyZFR5cGUoKV07Cit9CisjZWxzZQordm9pZCB3cml0ZUhU
TUxUb1Bhc3RlYm9hcmQoTlNTdHJpbmcgKmh0bWwpCit7CisgICAgW1tVSVBhc3RlYm9hcmQgZ2Vu
ZXJhbFBhc3RlYm9hcmRdIHNldEl0ZW1zOkBbQHsgKE5TU3RyaW5nICopa1VUVHlwZUhUTUwgOiBo
dG1sfV1dOworfQorI2VuZGlmCisKK3N0YXRpYyBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gY3Jl
YXRlV2ViVmlld1dpdGhDdXN0b21QYXN0ZWJvYXJkRGF0YVNldHRpbmcoYm9vbCBlbmFibGVkKQor
eworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgYXV0byBwcmVmZXJl
bmNlcyA9IChXS1ByZWZlcmVuY2VzUmVmKVtbd2ViVmlldyBjb25maWd1cmF0aW9uXSBwcmVmZXJl
bmNlc107CisgICAgV0tQcmVmZXJlbmNlc1NldERhdGFUcmFuc2Zlckl0ZW1zRW5hYmxlZChwcmVm
ZXJlbmNlcywgdHJ1ZSk7CisgICAgV0tQcmVmZXJlbmNlc1NldEN1c3RvbVBhc3RlYm9hcmREYXRh
RW5hYmxlZChwcmVmZXJlbmNlcywgZW5hYmxlZCk7CisgICAgcmV0dXJuIHdlYlZpZXc7Cit9CisK
K1RFU1QoUGFzdGVIVE1MLCBFeHBvc2VzSFRNTFR5cGVJbkRhdGFUcmFuc2ZlcikKK3sKKyAgICBh
dXRvIHdlYlZpZXcgPSBjcmVhdGVXZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9hcmREYXRhU2V0dGlu
Zyh0cnVlKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJw
YXN0ZS1ydGZkIl07CisKKyAgICB3cml0ZUhUTUxUb1Bhc3RlYm9hcmQoQCI8IURPQ1RZUEUgaHRt
bD48aHRtbD48Ym9keT48cD48dT5oZWxsbzwvdT4sIHdvcmxkPC9wPjwvYm9keT48L2h0bWw+Iik7
CisgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKKworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjbGlwYm9hcmREYXRhLnR5cGVzLmluY2x1ZGVz
KCd0ZXh0L2h0bWwnKSJdKTsKKyAgICBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiZWRpdG9yLmlubmVySFRNTCA9IGNsaXBib2FyZERhdGEudmFsdWVzWzBdOyBlZGl0b3Iu
Zm9jdXMoKSJdOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJkb2N1bWVudC5xdWVyeUNvbW1hbmRTdGF0ZSgndW5kZXJsaW5lJykiXS5ib29s
VmFsdWUpOworICAgIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJnZXRT
ZWxlY3Rpb24oKS5tb2RpZnkoJ21vdmUnLCAnZm9yd2FyZCcsICdsaW5lYm91bmRhcnknKSJdOwor
ICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
ZG9jdW1lbnQucXVlcnlDb21tYW5kU3RhdGUoJ3VuZGVybGluZScpIl0uYm9vbFZhbHVlKTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoImhlbGxvLCB3b3JsZCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJlZGl0b3IudGV4dENvbnRlbnQiXSk7Cit9CisKK1RFU1QoUGFzdGVI
VE1MLCBTYW5pdGl6ZXNIVE1MKQoreworICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdX
aXRoQ3VzdG9tUGFzdGVib2FyZERhdGFTZXR0aW5nKHRydWUpOworICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInBhc3RlLXJ0ZmQiXTsKKworICAgIHdyaXRlSFRN
TFRvUGFzdGVib2FyZChAIjwhRE9DVFlQRSBodG1sPjxtZXRhIGNvbnRlbnQ9XCJzZWNyZXRcIj48
YiBvbm1vdXNlb3Zlcj1cImRhbmdlcm91c0NvZGUoKVwiPmhlbGxvPC9iPiIKKyAgICAgICAgIjwh
LS0gc2VjcmV0LS0+LCB3b3JsZDxzY3JpcHQ+ZGFuZ2Vyb3VzQ29kZSgpPC9zY3JpcHQ+JzsiKTsK
KyAgICBbd2ViVmlldyBwYXN0ZTpuaWxdOworCisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERhdGEudHlwZXMuaW5jbHVkZXMo
J3RleHQvaHRtbCcpIl0uYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YS52YWx1ZXNbMF0uaW5jbHVk
ZXMoJ2hlbGxvJykiXS5ib29sVmFsdWUpOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjbGlwYm9hcmREYXRhLnZhbHVlc1swXS5pbmNsdWRl
cygnd29ybGQnKSJdLmJvb2xWYWx1ZSk7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjbGlwYm9hcmREYXRhLnZhbHVlc1swXS5pbmNsdWRl
cygnc2VjcmV0JykiXS5ib29sVmFsdWUpOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YS52YWx1ZXNbMF0uaW5jbHVk
ZXMoJ2Rhbmdlcm91c0NvZGUnKSJdLmJvb2xWYWx1ZSk7Cit9CisKK1RFU1QoUGFzdGVIVE1MLCBE
b2VzTm90U2FuaXRpemVIVE1MV2hlbkN1c3RvbVBhc3RlYm9hcmREYXRhSXNEaXNhYmxlZCkKK3sK
KyAgICBhdXRvIHdlYlZpZXcgPSBjcmVhdGVXZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9hcmREYXRh
U2V0dGluZyhmYWxzZSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5h
bWVkOkAicGFzdGUtcnRmZCJdOworCisgICAgd3JpdGVIVE1MVG9QYXN0ZWJvYXJkKEAiPCFET0NU
WVBFIGh0bWw+PG1ldGEgY29udGVudD1cInNlY3JldFwiPjxiIG9ubW91c2VvdmVyPVwiZGFuZ2Vy
b3VzQ29kZSgpXCI+aGVsbG88L2I+IgorICAgICAgICAiPCEtLSBzZWNyZXQtLT4sIHdvcmxkPHNj
cmlwdD5kYW5nZXJvdXNDb2RlKCk8L3NjcmlwdD4nOyIpOworICAgIFt3ZWJWaWV3IHBhc3RlOm5p
bF07CisKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiY2xpcGJvYXJkRGF0YS50eXBlcy5pbmNsdWRlcygndGV4dC9odG1sJykiXS5ib29sVmFs
dWUpOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJjbGlwYm9hcmREYXRhLnZhbHVlc1swXS5pbmNsdWRlcygnaGVsbG8nKSJdLmJvb2xWYWx1
ZSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImNsaXBib2FyZERhdGEudmFsdWVzWzBdLmluY2x1ZGVzKCd3b3JsZCcpIl0uYm9vbFZhbHVl
KTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiY2xpcGJvYXJkRGF0YS52YWx1ZXNbMF0uaW5jbHVkZXMoJ3NlY3JldCcpIl0uYm9vbFZhbHVl
KTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiY2xpcGJvYXJkRGF0YS52YWx1ZXNbMF0uaW5jbHVkZXMoJ2Rhbmdlcm91c0NvZGUnKSJdLmJv
b2xWYWx1ZSk7Cit9CisKK1RFU1QoUGFzdGVIVE1MLCBTdHJpcHNGaWxlVVJMcykKK3sKKyAgICBh
dXRvIHdlYlZpZXcgPSBjcmVhdGVXZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9hcmREYXRhU2V0dGlu
Zyh0cnVlKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFtZWQ6QCJw
YXN0ZS1ydGZkIl07CisKKyAgICB3cml0ZUhUTUxUb1Bhc3RlYm9hcmQoQCI8IURPQ1RZUEUgaHRt
bD48aHRtbD48Ym9keT48YSBhbHQ9J2hlbGxvJyBocmVmPSdmaWxlOi8vL3ByaXZhdGUvdmFyL2Zv
bGRlcnMvc2VjcmV0L2ZpbGVzLyc+d29ybGQ8L2E+Iik7CisgICAgW3dlYlZpZXcgcGFzdGU6bmls
XTsKKworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJjbGlwYm9hcmREYXRhLnR5cGVzLmluY2x1ZGVzKCd0ZXh0L2h0bWwnKSJdLmJvb2xWYWx1
ZSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImNsaXBib2FyZERhdGEudmFsdWVzWzBdLmluY2x1ZGVzKCdoZWxsbycpIl0uYm9vbFZhbHVl
KTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiY2xpcGJvYXJkRGF0YS52YWx1ZXNbMF0uaW5jbHVkZXMoJ3dvcmxkJykiXS5ib29sVmFsdWUp
OworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiY2xpcGJvYXJkRGF0YS52YWx1ZXNbMF0uaW5jbHVkZXMoJ3NlY3JldCcpIl0uYm9vbFZhbHVl
KTsKK30KKworVEVTVChQYXN0ZUhUTUwsIERvZXNOb3RTdHJpcEZpbGVVUkxzV2hlbkN1c3RvbVBh
c3RlYm9hcmREYXRhSXNEaXNhYmxlZCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBjcmVhdGVXZWJW
aWV3V2l0aEN1c3RvbVBhc3RlYm9hcmREYXRhU2V0dGluZyhmYWxzZSk7CisgICAgW3dlYlZpZXcg
c3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAicGFzdGUtcnRmZCJdOworCisgICAgd3Jp
dGVIVE1MVG9QYXN0ZWJvYXJkKEAiPCFET0NUWVBFIGh0bWw+PGh0bWw+PGJvZHk+PGEgYWx0PSdo
ZWxsbycgaHJlZj0nZmlsZTovLy9wcml2YXRlL3Zhci9mb2xkZXJzL3NlY3JldC9maWxlcy8nPndv
cmxkPC9hPiIpOworICAgIFt3ZWJWaWV3IHBhc3RlOm5pbF07CisKKyAgICBFWFBFQ1RfVFJVRShb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YS50eXBl
cy5pbmNsdWRlcygndGV4dC9odG1sJykiXS5ib29sVmFsdWUpOworICAgIEVYUEVDVF9UUlVFKFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjbGlwYm9hcmREYXRhLnZhbHVl
c1swXS5pbmNsdWRlcygnaGVsbG8nKSJdLmJvb2xWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERhdGEudmFsdWVz
WzBdLmluY2x1ZGVzKCd3b3JsZCcpIl0uYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YS52YWx1ZXNb
MF0uaW5jbHVkZXMoJ3NlY3JldCcpIl0uYm9vbFZhbHVlKTsKK30KKworVEVTVChQYXN0ZUhUTUws
IEtlZXBzSFRUUFVSTHMpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gY3JlYXRlV2ViVmlld1dpdGhD
dXN0b21QYXN0ZWJvYXJkRGF0YVNldHRpbmcodHJ1ZSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRUZXN0UGFnZU5hbWVkOkAicGFzdGUtcnRmZCJdOworCisgICAgd3JpdGVIVE1MVG9Q
YXN0ZWJvYXJkKEAiPCFET0NUWVBFIGh0bWw+PGh0bWw+PGJvZHk+PGEgdGl0bGU9J2hlbGxvJyBo
cmVmPSdodHRwczovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rL0xheW91
dFRlc3RzL2VkaXRpbmcvcmVzb3VyY2VzL2FiZS5wbmcnPndvcmxkPC9hPiIpOworICAgIFt3ZWJW
aWV3IHBhc3RlOm5pbF07CisKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YS50eXBlcy5pbmNsdWRlcygndGV4dC9odG1s
JykiXS5ib29sVmFsdWUpOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJjbGlwYm9hcmREYXRhLnZhbHVlc1swXS5pbmNsdWRlcygnaGVsbG8n
KSJdLmJvb2xWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERhdGEudmFsdWVzWzBdLmluY2x1ZGVzKCd3b3JsZCcp
Il0uYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YS52YWx1ZXNbMF0uaW5jbHVkZXMoJ2FiZS5wbmcn
KSJdLmJvb2xWYWx1ZSk7Cit9CisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRCAmJiBQTEFURk9S
TShDT0NPQSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331949</attachid>
            <date>2018-01-22 12:38:59 -0800</date>
            <delta_ts>2018-01-22 13:13:41 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-181616-20180122123858.patch</filename>
            <type>text/plain</type>
            <size>20740</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNzM0NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3IEBACisyMDE4LTAxLTIyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIEJsb2IgY29udmVyc2lvbiBhbmQg
c2FuaXRpemF0aW9uIGRvZXNuJ3Qgd29yayB3aXRoIE1pY3Jvc29mdCBXb3JkIGZvciBNYWMgMjAx
MQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxNjE2
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjQ4NDkwOD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBXZW5zb24gSHNpZWguCisKKyAgICAgICAgVGhlIGJ1ZyB3YXMgY2F1c2VkIGJ5IFdlYkNvbnRl
bnRSZWFkZXI6OnJlYWRIVE1MIGFuZCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkSFRNTCBu
b3Qgc2FuaXRpemluZyBwbGFpbiBIVE1MIHN0cmluZworICAgICAgICBhcyBkb25lIGZvciB3ZWIg
YXJjaGl2ZXMgZXZlbiB3aGVuIGN1c3RvbSBwYXN0ZWJvYXJkIGRhdGEgaXMgZW5hYmxlZC4gRml4
ZWQgdGhlIGJ1ZyBieSBkb2luZyB0aGUgc2FuaXRpemF0aW9uLgorCisgICAgICAgIFVuZm9ydHVu
YXRlbHksIHdlIGNhbid0IG1ha2UgZmlsZSBVUkxzIGF2YWlsYWJsZSBpbiB0aGlzIGNhc2UgYmVj
YXVzZSBXZWJDb250ZW50IHByb2Nlc3MgZG9lc24ndCBoYXZlIHNhbmRib3ggZXh0ZW5zaW9ucwor
ICAgICAgICB0byBhY2Nlc3MgbG9jYWwgZmlsZXMgcmVmZXJlbmNlZCBieSB0aGUgSFRNTCBzb3Vy
Y2UgaW4gdGhlIGNsaXBib2FyZCwgYW5kIHdlIGNhbid0IG1ha2UgV2ViQ29udGVudCBwcm9jZXNz
IHJlcXVlc3QgZm9yCisgICAgICAgIGEgc2FuZGJveCBleHRlbnNpb27CuG9uIGFuIGFyYml0cmFy
eSBsb2NhbCBmaWxlLCBhcyBpdCB3b3VsZCBkZWZlYXQgdGhlIHdob2xlIHBvaW50IG9mIHNhbmRi
b3hpbmcuCisKKyAgICAgICAgSW5zdGVhZCwgd2Ugc3RyaXAgYXdheSBhbGwgSFRNTCBhdHRyaWJ1
dGVzIHJlZmVyZW5jaW5nIGEgVVJMIHdob3NlIHNjaGVtZSBpcyBub3QgSFRUUCwgSFRUUFMsIG9y
IGRhdGEgd2hlbiBzYW5pdGl6aW5nCisgICAgICAgIHRleHQvaHRtbCBmcm9tIHRoZSBjbGlwYm9h
cmQgdG8gYXZvaWQgZXhwb3NpbmcgbG9jYWwgZmlsZSBwYXRocywgd2hpY2ggY2FuIHJldmVhbCBw
cml2YWN5ICYgc2VjdXJpdHkgc2Vuc2l0aXZlIGRhdGEKKyAgICAgICAgc3VjaCBhcyB0aGUgdXNl
cidzIGZ1bGwgbmFtZSwgYW5kIHRoZSBsb2NhdGlvbiBvZiBwcml2YXRlIGNvbnRhaW5lcnMgb2Yg
b3RoZXIgYXBwbGljYXRpb25zIGluIHRoZSBzeXN0ZW0uCisKKyAgICAgICAgVGVzdHM6IFBhc3Rl
SFRNTC5Eb2VzTm90U2FuaXRpemVIVE1MV2hlbkN1c3RvbVBhc3RlYm9hcmREYXRhSXNEaXNhYmxl
ZAorICAgICAgICAgICAgICAgUGFzdGVIVE1MLkRvZXNOb3RTdHJpcEZpbGVVUkxzV2hlbkN1c3Rv
bVBhc3RlYm9hcmREYXRhSXNEaXNhYmxlZAorICAgICAgICAgICAgICAgUGFzdGVIVE1MLkV4cG9z
ZXNIVE1MVHlwZUluRGF0YVRyYW5zZmVyCisgICAgICAgICAgICAgICBQYXN0ZUhUTUwuS2VlcHNI
VFRQVVJMcworICAgICAgICAgICAgICAgUGFzdGVIVE1MLlNhbml0aXplc0hUTUwKKyAgICAgICAg
ICAgICAgIFBhc3RlSFRNTC5TdHJpcHNGaWxlVVJMcworCisgICAgICAgICogZWRpdGluZy9jb2Nv
YS9XZWJDb250ZW50UmVhZGVyQ29jb2EubW06CisgICAgICAgIChXZWJDb3JlOjpXZWJDb250ZW50
UmVhZGVyOjpyZWFkSFRNTCk6IEZpeGVkIHRoZSBidWcgYnkgc2FuaXRpemluZyB0aGUgbWFya3Vw
LCBhbmQgc3RyaXBwaW5nIGF3YXkgZmlsZSBVUkxzLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29u
dGVudE1hcmt1cFJlYWRlcjo6cmVhZEhUTUwpOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL21h
cmt1cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVTdWJyZXNvdXJjZVVSTEF0dHJpYnV0
ZXMpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnNhbml0aXplTWFya3VwKTogQWRkZWQuCisg
ICAgICAgICogZWRpdGluZy9tYXJrdXAuaDoKKwogMjAxOC0wMS0yMiAgSm9hbm1hcmllIERpZ2dz
ICA8amRpZ2dzQGlnYWxpYS5jb20+CiAKICAgICAgICAgQVg6IEltcGxlbWVudCBzdXBwb3J0IGZv
ciBHcmFwaGljcyBBUklBIHJvbGVzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCShy
ZXZpc2lvbiAyMjczNDUpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDcgQEAKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIK
ICNpbmNsdWRlICJUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJV
UkwuaCIKKyNpbmNsdWRlICJVUkxQYXJzZXIuaCIKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9u
LmgiCiAjaW5jbHVkZSAiVmlzaWJsZVVuaXRzLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgpAQCAtMTQ0LDYgKzE0NSwzMCBAQCB2b2lkIHJlcGxhY2VTdWJyZXNvdXJjZVVSTHMoUmVm
PERvY3VtZW50CiAgICAgICAgIGNoYW5nZS5hcHBseSgpOwogfQogCitzdHJ1Y3QgRWxlbWVudEF0
dHJpYnV0ZSB7CisgICAgUmVmPEVsZW1lbnQ+IGVsZW1lbnQ7CisgICAgUXVhbGlmaWVkTmFtZSBh
dHRyaWJ1dGVOYW1lOworfTsKKwordm9pZCByZW1vdmVTdWJyZXNvdXJjZVVSTEF0dHJpYnV0ZXMo
UmVmPERvY3VtZW50RnJhZ21lbnQ+JiYgZnJhZ21lbnQsIFdURjo6RnVuY3Rpb248Ym9vbChjb25z
dCBVUkwmKT4gc2hvdWxkUmVtb3ZlVVJMKQoreworICAgIFZlY3RvcjxFbGVtZW50QXR0cmlidXRl
PiBhdHRyaWJ1dGVzVG9SZW1vdmU7CisgICAgZm9yIChhdXRvJiBlbGVtZW50IDogZGVzY2VuZGFu
dHNPZlR5cGU8RWxlbWVudD4oZnJhZ21lbnQpKSB7CisgICAgICAgIGlmICghZWxlbWVudC5oYXNB
dHRyaWJ1dGVzKCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgZm9yIChjb25zdCBB
dHRyaWJ1dGUmIGF0dHJpYnV0ZSA6IGVsZW1lbnQuYXR0cmlidXRlc0l0ZXJhdG9yKCkpIHsKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHdvbid0IHdvcmsgZm9yIHNyY3NldC4KKyAgICAgICAg
ICAgIGlmIChlbGVtZW50LmF0dHJpYnV0ZUNvbnRhaW5zVVJMKGF0dHJpYnV0ZSkgJiYgIWF0dHJp
YnV0ZS52YWx1ZSgpLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIFVSTCB1cmwgPSBVUkxQ
YXJzZXIgeyBhdHRyaWJ1dGUudmFsdWUoKSB9LnJlc3VsdCgpOworICAgICAgICAgICAgICAgIGlm
IChzaG91bGRSZW1vdmVVUkwodXJsKSkKKyAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlc1Rv
UmVtb3ZlLmFwcGVuZCh7IGVsZW1lbnQsIGF0dHJpYnV0ZS5uYW1lKCkgfSk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZm9yIChhdXRvJiBpdGVtIDogYXR0cmlidXRlc1Rv
UmVtb3ZlKQorICAgICAgICBpdGVtLmVsZW1lbnQtPnJlbW92ZUF0dHJpYnV0ZShpdGVtLmF0dHJp
YnV0ZU5hbWUpOworfQorCiBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4gY3JlYXRlUGFnZUZvclNhbml0
aXppbmdXZWJDb250ZW50KCkKIHsKICAgICBQYWdlQ29uZmlndXJhdGlvbiBwYWdlQ29uZmlndXJh
dGlvbihjcmVhdGVFbXB0eUVkaXRvckNsaWVudCgpLCBTb2NrZXRQcm92aWRlcjo6Y3JlYXRlKCks
IExpYldlYlJUQ1Byb3ZpZGVyOjpjcmVhdGUoKSwgQ2FjaGVTdG9yYWdlUHJvdmlkZXI6OmNyZWF0
ZSgpKTsKQEAgLTE3Miw3ICsxOTcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFnZT4gY3JlYXRlUGFn
ZUZvclNhbml0CiB9CiAKIAotU3RyaW5nIHNhbml0aXplTWFya3VwKGNvbnN0IFN0cmluZyYgcmF3
SFRNTCkKK1N0cmluZyBzYW5pdGl6ZU1hcmt1cChjb25zdCBTdHJpbmcmIHJhd0hUTUwsIHN0ZDo6
b3B0aW9uYWw8V1RGOjpGdW5jdGlvbjx2b2lkKERvY3VtZW50RnJhZ21lbnQmKT4+IGZyYWdtZW50
U2FuaXRpemVyKQogewogICAgIGF1dG8gcGFnZSA9IGNyZWF0ZVBhZ2VGb3JTYW5pdGl6aW5nV2Vi
Q29udGVudCgpOwogICAgIERvY3VtZW50KiBzdGFnaW5nRG9jdW1lbnQgPSBwYWdlLT5tYWluRnJh
bWUoKS5kb2N1bWVudCgpOwpAQCAtMTgxLDYgKzIwNiwxMCBAQCBTdHJpbmcgc2FuaXRpemVNYXJr
dXAoY29uc3QgU3RyaW5nJiByYXdICiAgICAgQVNTRVJUKGJvZHlFbGVtZW50KTsKIAogICAgIGF1
dG8gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoKnN0YWdpbmdEb2N1bWVudCwg
cmF3SFRNTCwgZW1wdHlTdHJpbmcoKSwgRGlzYWxsb3dTY3JpcHRpbmdBbmRQbHVnaW5Db250ZW50
KTsKKworICAgIGlmIChmcmFnbWVudFNhbml0aXplcikKKyAgICAgICAgKCpmcmFnbWVudFNhbml0
aXplcikoZnJhZ21lbnQpOworCiAgICAgYm9keUVsZW1lbnQtPmFwcGVuZENoaWxkKGZyYWdtZW50
LmdldCgpKTsKIAogICAgIGF1dG8gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpzdGFnaW5nRG9jdW1l
bnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCShyZXZpc2lvbiAyMjczNDUpCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsy
OSw3IEBACiAjaW5jbHVkZSAiRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmgiCiAjaW5jbHVk
ZSAiSFRNTEludGVyY2hhbmdlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRl
IDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CkBAIC00Nyw4ICs0OCwxMCBAQCBjbGFzcyBRdWFsaWZpZWROYW1lOwogY2xhc3Mg
UmFuZ2U7CiAKIHZvaWQgcmVwbGFjZVN1YnJlc291cmNlVVJMcyhSZWY8RG9jdW1lbnRGcmFnbWVu
dD4mJiwgSGFzaE1hcDxBdG9taWNTdHJpbmcsIEF0b21pY1N0cmluZz4mJik7Cit2b2lkIHJlbW92
ZVN1YnJlc291cmNlVVJMQXR0cmlidXRlcyhSZWY8RG9jdW1lbnRGcmFnbWVudD4mJiwgV1RGOjpG
dW5jdGlvbjxib29sKGNvbnN0IFVSTCYpPiBzaG91bGRSZW1vdmVVUkwpOworCiBzdGQ6OnVuaXF1
ZV9wdHI8UGFnZT4gY3JlYXRlUGFnZUZvclNhbml0aXppbmdXZWJDb250ZW50KCk7Ci1TdHJpbmcg
c2FuaXRpemVNYXJrdXAoY29uc3QgU3RyaW5nJik7CitTdHJpbmcgc2FuaXRpemVNYXJrdXAoY29u
c3QgU3RyaW5nJiwgc3RkOjpvcHRpb25hbDxXVEY6OkZ1bmN0aW9uPHZvaWQoRG9jdW1lbnRGcmFn
bWVudCYpPj4gZnJhZ21lbnRTYW5pdGl6ZXIgPSBzdGQ6Om51bGxvcHQpOwogCiBlbnVtIEVDaGls
ZHJlbk9ubHkgeyBJbmNsdWRlTm9kZSwgQ2hpbGRyZW5Pbmx5IH07CiBlbnVtIEVBYnNvbHV0ZVVS
THMgeyBEb05vdFJlc29sdmVVUkxzLCBSZXNvbHZlQWxsVVJMcywgUmVzb2x2ZU5vbkxvY2FsVVJM
cyB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJDb250ZW50UmVhZGVy
Q29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9XZWJD
b250ZW50UmVhZGVyQ29jb2EubW0JKHJldmlzaW9uIDIyNzM0NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvY29jb2EvV2ViQ29udGVudFJlYWRlckNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC01MjcsNyArNTI3LDE3IEBAIGJvb2wgV2ViQ29udGVudFJlYWRlcjo6cmVhZEhUTUwoY29uc3Qg
U3QKICAgICBpZiAoc3RyaW5nT21pdHRpbmdNaWNyb3NvZnRQcmVmaXguaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZyb21N
YXJrdXAoZG9jdW1lbnQsIHN0cmluZ09taXR0aW5nTWljcm9zb2Z0UHJlZml4LCBlbXB0eVN0cmlu
ZygpLCBEaXNhbGxvd1NjcmlwdGluZ0FuZFBsdWdpbkNvbnRlbnQpKTsKKyAgICBTdHJpbmcgbWFy
a3VwOworICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmN1
c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgpICYmIHNob3VsZFNhbml0aXplKCkpIHsKKyAgICAg
ICAgbWFya3VwID0gc2FuaXRpemVNYXJrdXAoc3RyaW5nT21pdHRpbmdNaWNyb3NvZnRQcmVmaXgs
IFdURjo6RnVuY3Rpb248dm9pZCAoRG9jdW1lbnRGcmFnbWVudCYpPiB7IFtdIChEb2N1bWVudEZy
YWdtZW50JiBmcmFnbWVudCkgeworICAgICAgICAgICAgcmVtb3ZlU3VicmVzb3VyY2VVUkxBdHRy
aWJ1dGVzKGZyYWdtZW50LCBbXSAoY29uc3QgVVJMJiB1cmwpIHsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gc2hvdWxkUmVwbGFjZVN1YnJlc291cmNlVVJMKHVybCk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfSB9KTsKKyAgICB9IGVsc2UKKyAgICAgICAgbWFya3VwID0gc3RyaW5nT21pdHRp
bmdNaWNyb3NvZnRQcmVmaXg7CisKKyAgICBhZGRGcmFnbWVudChjcmVhdGVGcmFnbWVudEZyb21N
YXJrdXAoZG9jdW1lbnQsIG1hcmt1cCwgZW1wdHlTdHJpbmcoKSwgRGlzYWxsb3dTY3JpcHRpbmdB
bmRQbHVnaW5Db250ZW50KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTUzNyw5ICs1NDcs
MTMgQEAgYm9vbCBXZWJDb250ZW50TWFya3VwUmVhZGVyOjpyZWFkSFRNTChjbwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBTdHJpbmcgcmF3SFRNTCA9IHN0cmlwTWljcm9zb2Z0UHJlZml4
KHN0cmluZyk7Ci0gICAgaWYgKHNob3VsZFNhbml0aXplKCkpCi0gICAgICAgIG1hcmt1cCA9IHNh
bml0aXplTWFya3VwKHJhd0hUTUwpOwotICAgIGVsc2UKKyAgICBpZiAoc2hvdWxkU2FuaXRpemUo
KSkgeworICAgICAgICBtYXJrdXAgPSBzYW5pdGl6ZU1hcmt1cChyYXdIVE1MLCBXVEY6OkZ1bmN0
aW9uPHZvaWQgKERvY3VtZW50RnJhZ21lbnQmKT4geyBbXSAoRG9jdW1lbnRGcmFnbWVudCYgZnJh
Z21lbnQpIHsKKyAgICAgICAgICAgIHJlbW92ZVN1YnJlc291cmNlVVJMQXR0cmlidXRlcyhmcmFn
bWVudCwgW10gKGNvbnN0IFVSTCYgdXJsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNob3Vs
ZFJlcGxhY2VTdWJyZXNvdXJjZVVSTCh1cmwpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0g
fSk7CisgICAgfSBlbHNlCiAgICAgICAgIG1hcmt1cCA9IHJhd0hUTUw7CiAKICAgICByZXR1cm4g
IW1hcmt1cC5pc0VtcHR5KCk7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjczNDUpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxOC0wMS0yMiAgUnlvc3VrZSBOaXdhICA8
cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBCbG9iIGNvbnZlcnNpb24gYW5kIHNhbml0aXph
dGlvbiBkb2Vzbid0IHdvcmsgd2l0aCBNaWNyb3NvZnQgV29yZCBmb3IgTWFjIDIwMTEKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTYxNgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzY0ODQ5MDg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgV2Vuc29u
IEhzaWVoLgorCisgICAgICAgIEFkZGVkIHRlc3RzIHRvIG1ha2Ugc3VyZSB3ZSBzYW5pdGl6ZSBw
bGFpbiBIVE1MLCBub3QganVzdCB3ZWIgYXJjaGl2ZXMsCisgICAgICAgIHdoZW4gYW5kIG9ubHkg
d2hlbiBjdXN0b20gcGFzdGVib2FyZCBkYXRhIGlzIGVuYWJsZWQuCisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSFRNTC5tbTogQWRkZWQu
CisgICAgICAgICh3cml0ZUhUTUxUb1Bhc3RlYm9hcmQpOiBBZGRlZC4KKyAgICAgICAgKGNyZWF0
ZVdlYlZpZXdXaXRoQ3VzdG9tUGFzdGVib2FyZERhdGFTZXR0aW5nKTogQWRkZWQuCisKIDIwMTgt
MDEtMjIgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTiAocjIyNjQ4NSk6IE1hbnkgbmV3IHdhc20gbGVha3MgZGV0ZWN0ZWQgYnkgdGhlIGxl
YWtzIGJvdApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyNzM0NSkKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC01NzcsNiArNTc3LDcgQEAKIAkJOUI2MjYzMEMxRjhDMjVD
ODAwN0VFMjlCIC8qIGNvcHktdXJsLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI2MjYzMEIxRjhDMjUxMDAwN0VFMjlCIC8qIGNvcHkt
dXJsLmh0bWwgKi87IH07CiAJCTlCN0EzN0M0MUY4QUVCQTUwMDRBQTIyOCAvKiBDb3B5VVJMLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI3QTM3QzIx
RjhBRUJBNTAwNEFBMjI4IC8qIENvcHlVUkwubW0gKi87IH07CiAJCTlCN0Q3NDBGMUY4Mzc4Nzcw
MDA2QzQzMiAvKiBwYXN0ZS1ydGZkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOUI3RDc0MEUxRjgzNzdFNjAwMDZDNDMyIC8qIHBhc3Rl
LXJ0ZmQuaHRtbCAqLzsgfTsKKwkJOUJDQjdDMjgyMDEzMDYwMDAwM0U3QzBDIC8qIFBhc3RlSFRN
TC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlCQ0I3
QzI2MjAxMzA2MDAwMDNFN0MwQyAvKiBQYXN0ZUhUTUwubW0gKi87IH07CiAJCTlCRDQyMzlBMUUw
NEJEOTgwMDIwMDM5NSAvKiBBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yUHJvcG9zZWRSYW5nZVdpdGhJ
bWFnZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDlC
RDQyMzk5MUUwNEJEOTgwMDIwMDM5NSAvKiBBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yUHJvcG9zZWRS
YW5nZVdpdGhJbWFnZS5tbSAqLzsgfTsKIAkJOUJENDIzOUMxRTA0QzAxQzAwMjAwMzk1IC8qIGNo
aW5lc2UtY2hhcmFjdGVyLXdpdGgtaW1hZ2UuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkQ0MjM5QjFFMDRCRkQwMDAyMDAzOTUgLyog
Y2hpbmVzZS1jaGFyYWN0ZXItd2l0aC1pbWFnZS5odG1sICovOyB9OwogCQk5QkQ1MTExQzFGRThF
MTE2MDBEMkI2MzAgLyogQWNjZXNzaW5nUGFzdGVkSW1hZ2UubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5QkQ1MTExQjFGRThFMTE2MDBEMkI2MzAgLyog
QWNjZXNzaW5nUGFzdGVkSW1hZ2UubW0gKi87IH07CkBAIC0xNTg5LDYgKzE1OTAsNyBAQAogCQk5
Qjc5MTY0RjFCRDg5RDBEMDBENTBCOEYgLyogRmlyc3RSZXNwb25kZXJTY3JvbGxpbmdQb3NpdGlv
bi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZpcnN0UmVzcG9u
ZGVyU2Nyb2xsaW5nUG9zaXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTlC
N0EzN0MyMUY4QUVCQTUwMDRBQTIyOCAvKiBDb3B5VVJMLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQ29weVVSTC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUI3RDc0MEUxRjgz
NzdFNjAwMDZDNDMyIC8qIHBhc3RlLXJ0ZmQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJwYXN0ZS1ydGZkLmh0
bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5QkNCN0MyNjIwMTMwNjAwMDAzRTdD
MEMgLyogUGFzdGVIVE1MLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFzdGVIVE1MLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkQ0MjM5OTFFMDRCRDk4MDAyMDAzOTUgLyog
QXR0cmlidXRlZFN1YnN0cmluZ0ZvclByb3Bvc2VkUmFuZ2VXaXRoSW1hZ2UubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBdHRyaWJ1dGVkU3Vic3RyaW5nRm9yUHJv
cG9zZWRSYW5nZVdpdGhJbWFnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOUJE
NDIzOUIxRTA0QkZEMDAwMjAwMzk1IC8qIGNoaW5lc2UtY2hhcmFjdGVyLXdpdGgtaW1hZ2UuaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJjaGluZXNlLWNoYXJhY3Rlci13aXRoLWlt
YWdlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5QkQ1MTExQjFGRThFMTE2
MDBEMkI2MzAgLyogQWNjZXNzaW5nUGFzdGVkSW1hZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBBY2Nlc3NpbmdQYXN0ZWRJbWFnZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIxMTUsNiArMjExNyw3IEBACiAJCQkJQ0VCQ0ExMkUxRTNBNjYwMTAwQzczMjkzIC8qIE92ZXJy
aWRlQ29udGVudFNlY3VyaXR5UG9saWN5Lm1tICovLAogCQkJCTlCRENDRDg1MUY3RDBCMDcwMDAw
OUExOCAvKiBQYXN0ZUltYWdlLm1tICovLAogCQkJCTlCREQ5NTU2MUY4MzY4MzYwMEQyMEM2MCAv
KiBQYXN0ZVJURkQubW0gKi8sCisJCQkJOUJDQjdDMjYyMDEzMDYwMDAwM0U3QzBDIC8qIFBhc3Rl
SFRNTC5tbSAqLywKIAkJCQk5QjIzNDY0MTFGOTQzQTI0MDBEQjFEMjMgLyogUGFzdGVXZWJBcmNo
aXZlLm1tICovLAogCQkJCTNGQ0M0RkU0MUVDNEU4NTIwMDc2RTM3QyAvKiBQaWN0dXJlSW5QaWN0
dXJlRGVsZWdhdGUubW0gKi8sCiAJCQkJODNCQUVFOEMxRUY0NjI1NTAwRERFODk0IC8qIFBsdWdp
bkxvYWRDbGllbnRQb2xpY2llcy5tbSAqLywKQEAgLTMzOTYsNiArMzM5OSw3IEBACiAJCQkJN0ND
RTdFQkIxQTQxMUE3RTAwNDQ3QzRDIC8qIERPTUhUTUxUYWJsZUNlbGxDZWxsQWJvdmUubW0gaW4g
U291cmNlcyAqLywKIAkJCQkyRDUxQTBDNzFDOEJGMDBDMDA3NjVDNDUgLyogRE9NSFRNTFZpZGVv
RWxlbWVudFdyYXBwZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk0NjM5N0I5NTFEQzJDODUwMDA5
QTc4QUUgLyogRE9NTm9kZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTlCQ0I3QzI4MjAxMzA2MDAw
MDNFN0MwQyAvKiBQYXN0ZUhUTUwubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCQzFBNDEx
QTdFMDA0NDdDNEMgLyogRE9NTm9kZUZyb21KU09iamVjdC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTdDQ0U3RUJEMUE0MTFBN0UwMDQ0N0M0QyAvKiBET01SYW5nZU9mU3RyaW5nLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJN0NDRTdFRUMxQTQxMUFFNjAwNDQ3QzRDIC8qIERPTVdpbmRvd0V4dGVuc2lv
bkJhc2ljLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9QYXN0ZUhUTUwubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUhUTUwubW0JKG5vbmV4aXN0ZW50KQorKysgVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUhUTUwubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVEICYmIFBMQVRGT1JNKENPQ09BKQorCisjaW1wb3J0
ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9y
dCA8V2ViQ29yZS9MZWdhY3lOU1Bhc3RlYm9hcmRUeXBlcy5oPgorI2ltcG9ydCA8V2ViS2l0L1dL
UHJlZmVyZW5jZXNQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1JlZlBy
aXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5o
PgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKKyNpZiBQTEFURk9STShJT1MpCisjaW5jbHVkZSA8TW9iaWxlQ29yZVNlcnZpY2VzL01v
YmlsZUNvcmVTZXJ2aWNlcy5oPgorI2VuZGlmCisKK0BpbnRlcmZhY2UgV0tXZWJWaWV3ICgpCist
ICh2b2lkKXBhc3RlOihpZClzZW5kZXI7CitAZW5kCisKKyNpZiBQTEFURk9STShNQUMpCit2b2lk
IHdyaXRlSFRNTFRvUGFzdGVib2FyZChOU1N0cmluZyAqaHRtbCkKK3sKKyAgICBbW05TUGFzdGVi
b2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gZGVjbGFyZVR5cGVzOkBbV2ViQ29yZTo6bGVnYWN5SFRN
TFBhc3RlYm9hcmRUeXBlKCldIG93bmVyOm5pbF07CisgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJh
bFBhc3RlYm9hcmRdIHNldFN0cmluZzpodG1sIGZvclR5cGU6V2ViQ29yZTo6bGVnYWN5SFRNTFBh
c3RlYm9hcmRUeXBlKCldOworfQorI2Vsc2UKK3ZvaWQgd3JpdGVIVE1MVG9QYXN0ZWJvYXJkKE5T
U3RyaW5nICpodG1sKQoreworICAgIFtbVUlQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBz
ZXRJdGVtczpAW0B7IChOU1N0cmluZyAqKWtVVFR5cGVIVE1MIDogaHRtbH1dXTsKK30KKyNlbmRp
ZgorCitzdGF0aWMgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IGNyZWF0ZVdlYlZpZXdXaXRoQ3Vz
dG9tUGFzdGVib2FyZERhdGFTZXR0aW5nKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBhdXRvIHdlYlZp
ZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDQwMCwgNDAwKV0pOworICAgIGF1dG8gcHJlZmVyZW5jZXMgPSAoV0tQcmVmZXJl
bmNlc1JlZilbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJlZmVyZW5jZXNdOworICAgIFdLUHJl
ZmVyZW5jZXNTZXREYXRhVHJhbnNmZXJJdGVtc0VuYWJsZWQocHJlZmVyZW5jZXMsIHRydWUpOwor
ICAgIFdLUHJlZmVyZW5jZXNTZXRDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQocHJlZmVyZW5j
ZXMsIGVuYWJsZWQpOworICAgIHJldHVybiB3ZWJWaWV3OworfQorCitURVNUKFBhc3RlSFRNTCwg
RXhwb3Nlc0hUTUxUeXBlSW5EYXRhVHJhbnNmZXIpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gY3Jl
YXRlV2ViVmlld1dpdGhDdXN0b21QYXN0ZWJvYXJkRGF0YVNldHRpbmcodHJ1ZSk7CisgICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAicGFzdGUtcnRmZCJdOworCisg
ICAgd3JpdGVIVE1MVG9QYXN0ZWJvYXJkKEAiPCFET0NUWVBFIGh0bWw+PGh0bWw+PGJvZHk+PHA+
PHU+aGVsbG88L3U+LCB3b3JsZDwvcD48L2JvZHk+PC9odG1sPiIpOworICAgIFt3ZWJWaWV3IHBh
c3RlOm5pbF07CisKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YS50eXBlcy5pbmNsdWRlcygndGV4dC9odG1sJykiXSk7
CisgICAgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImVkaXRvci5pbm5l
ckhUTUwgPSBjbGlwYm9hcmREYXRhLnZhbHVlc1swXTsgZWRpdG9yLmZvY3VzKCkiXTsKKyAgICBF
WFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1l
bnQucXVlcnlDb21tYW5kU3RhdGUoJ3VuZGVybGluZScpIl0uYm9vbFZhbHVlKTsKKyAgICBbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZ2V0U2VsZWN0aW9uKCkubW9kaWZ5
KCdtb3ZlJywgJ2ZvcndhcmQnLCAnbGluZWJvdW5kYXJ5JykiXTsKKyAgICBFWFBFQ1RfRkFMU0Uo
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LnF1ZXJ5Q29t
bWFuZFN0YXRlKCd1bmRlcmxpbmUnKSJdLmJvb2xWYWx1ZSk7CisgICAgRVhQRUNUX1dLX1NUUkVR
KCJoZWxsbywgd29ybGQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
ZWRpdG9yLnRleHRDb250ZW50Il0pOworfQorCitURVNUKFBhc3RlSFRNTCwgU2FuaXRpemVzSFRN
TCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBjcmVhdGVXZWJWaWV3V2l0aEN1c3RvbVBhc3RlYm9h
cmREYXRhU2V0dGluZyh0cnVlKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQ
YWdlTmFtZWQ6QCJwYXN0ZS1ydGZkIl07CisKKyAgICB3cml0ZUhUTUxUb1Bhc3RlYm9hcmQoQCI8
IURPQ1RZUEUgaHRtbD48bWV0YSBjb250ZW50PVwic2VjcmV0XCI+PGIgb25tb3VzZW92ZXI9XCJk
YW5nZXJvdXNDb2RlKClcIj5oZWxsbzwvYj4iCisgICAgICAgICI8IS0tIHNlY3JldC0tPiwgd29y
bGQ8c2NyaXB0PmRhbmdlcm91c0NvZGUoKTwvc2NyaXB0Pic7Iik7CisgICAgW3dlYlZpZXcgcGFz
dGU6bmlsXTsKKworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJjbGlwYm9hcmREYXRhLnR5cGVzLmluY2x1ZGVzKCd0ZXh0L2h0bWwnKSJdLmJv
b2xWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImNsaXBib2FyZERhdGEudmFsdWVzWzBdLmluY2x1ZGVzKCdoZWxsbycpIl0uYm9v
bFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiY2xpcGJvYXJkRGF0YS52YWx1ZXNbMF0uaW5jbHVkZXMoJ3dvcmxkJykiXS5ib29s
VmFsdWUpOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiY2xpcGJvYXJkRGF0YS52YWx1ZXNbMF0uaW5jbHVkZXMoJ3NlY3JldCcpIl0uYm9v
bFZhbHVlKTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImNsaXBib2FyZERhdGEudmFsdWVzWzBdLmluY2x1ZGVzKCdkYW5nZXJvdXNDb2Rl
JykiXS5ib29sVmFsdWUpOworfQorCitURVNUKFBhc3RlSFRNTCwgRG9lc05vdFNhbml0aXplSFRN
TFdoZW5DdXN0b21QYXN0ZWJvYXJkRGF0YUlzRGlzYWJsZWQpCit7CisgICAgYXV0byB3ZWJWaWV3
ID0gY3JlYXRlV2ViVmlld1dpdGhDdXN0b21QYXN0ZWJvYXJkRGF0YVNldHRpbmcoZmFsc2UpOwor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAInBhc3RlLXJ0ZmQi
XTsKKworICAgIHdyaXRlSFRNTFRvUGFzdGVib2FyZChAIjwhRE9DVFlQRSBodG1sPjxtZXRhIGNv
bnRlbnQ9XCJzZWNyZXRcIj48YiBvbm1vdXNlb3Zlcj1cImRhbmdlcm91c0NvZGUoKVwiPmhlbGxv
PC9iPiIKKyAgICAgICAgIjwhLS0gc2VjcmV0LS0+LCB3b3JsZDxzY3JpcHQ+ZGFuZ2Vyb3VzQ29k
ZSgpPC9zY3JpcHQ+JzsiKTsKKyAgICBbd2ViVmlldyBwYXN0ZTpuaWxdOworCisgICAgRVhQRUNU
X1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERh
dGEudHlwZXMuaW5jbHVkZXMoJ3RleHQvaHRtbCcpIl0uYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1Rf
VFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0
YS52YWx1ZXNbMF0uaW5jbHVkZXMoJ2hlbGxvJykiXS5ib29sVmFsdWUpOworICAgIEVYUEVDVF9U
UlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjbGlwYm9hcmREYXRh
LnZhbHVlc1swXS5pbmNsdWRlcygnd29ybGQnKSJdLmJvb2xWYWx1ZSk7CisgICAgRVhQRUNUX1RS
VUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERhdGEu
dmFsdWVzWzBdLmluY2x1ZGVzKCdzZWNyZXQnKSJdLmJvb2xWYWx1ZSk7CisgICAgRVhQRUNUX1RS
VUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERhdGEu
dmFsdWVzWzBdLmluY2x1ZGVzKCdkYW5nZXJvdXNDb2RlJykiXS5ib29sVmFsdWUpOworfQorCitU
RVNUKFBhc3RlSFRNTCwgU3RyaXBzRmlsZVVSTHMpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gY3Jl
YXRlV2ViVmlld1dpdGhDdXN0b21QYXN0ZWJvYXJkRGF0YVNldHRpbmcodHJ1ZSk7CisgICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAicGFzdGUtcnRmZCJdOworCisg
ICAgd3JpdGVIVE1MVG9QYXN0ZWJvYXJkKEAiPCFET0NUWVBFIGh0bWw+PGh0bWw+PGJvZHk+PGEg
YWx0PSdoZWxsbycgaHJlZj0nZmlsZTovLy9wcml2YXRlL3Zhci9mb2xkZXJzL3NlY3JldC9maWxl
cy8nPndvcmxkPC9hPiIpOworICAgIFt3ZWJWaWV3IHBhc3RlOm5pbF07CisKKyAgICBFWFBFQ1Rf
VFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0
YS50eXBlcy5pbmNsdWRlcygndGV4dC9odG1sJykiXS5ib29sVmFsdWUpOworICAgIEVYUEVDVF9U
UlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJjbGlwYm9hcmREYXRh
LnZhbHVlc1swXS5pbmNsdWRlcygnaGVsbG8nKSJdLmJvb2xWYWx1ZSk7CisgICAgRVhQRUNUX1RS
VUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERhdGEu
dmFsdWVzWzBdLmluY2x1ZGVzKCd3b3JsZCcpIl0uYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfRkFM
U0UoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERhdGEu
dmFsdWVzWzBdLmluY2x1ZGVzKCdzZWNyZXQnKSJdLmJvb2xWYWx1ZSk7Cit9CisKK1RFU1QoUGFz
dGVIVE1MLCBEb2VzTm90U3RyaXBGaWxlVVJMc1doZW5DdXN0b21QYXN0ZWJvYXJkRGF0YUlzRGlz
YWJsZWQpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gY3JlYXRlV2ViVmlld1dpdGhDdXN0b21QYXN0
ZWJvYXJkRGF0YVNldHRpbmcoZmFsc2UpOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2Fk
VGVzdFBhZ2VOYW1lZDpAInBhc3RlLXJ0ZmQiXTsKKworICAgIHdyaXRlSFRNTFRvUGFzdGVib2Fy
ZChAIjwhRE9DVFlQRSBodG1sPjxodG1sPjxib2R5PjxhIGFsdD0naGVsbG8nIGhyZWY9J2ZpbGU6
Ly8vcHJpdmF0ZS92YXIvZm9sZGVycy9zZWNyZXQvZmlsZXMvJz53b3JsZDwvYT4iKTsKKyAgICBb
d2ViVmlldyBwYXN0ZTpuaWxdOworCisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERhdGEudHlwZXMuaW5jbHVkZXMoJ3RleHQv
aHRtbCcpIl0uYm9vbFZhbHVlKTsKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAiY2xpcGJvYXJkRGF0YS52YWx1ZXNbMF0uaW5jbHVkZXMoJ2hl
bGxvJykiXS5ib29sVmFsdWUpOworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJjbGlwYm9hcmREYXRhLnZhbHVlc1swXS5pbmNsdWRlcygnd29y
bGQnKSJdLmJvb2xWYWx1ZSk7CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImNsaXBib2FyZERhdGEudmFsdWVzWzBdLmluY2x1ZGVzKCdzZWNy
ZXQnKSJdLmJvb2xWYWx1ZSk7Cit9CisKK1RFU1QoUGFzdGVIVE1MLCBLZWVwc0hUVFBVUkxzKQor
eworICAgIGF1dG8gd2ViVmlldyA9IGNyZWF0ZVdlYlZpZXdXaXRoQ3VzdG9tUGFzdGVib2FyZERh
dGFTZXR0aW5nKHRydWUpOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VO
YW1lZDpAInBhc3RlLXJ0ZmQiXTsKKworICAgIHdyaXRlSFRNTFRvUGFzdGVib2FyZChAIjwhRE9D
VFlQRSBodG1sPjxodG1sPjxib2R5PjxhIHRpdGxlPSdoZWxsbycgaHJlZj0naHR0cHM6Ly9zdm4u
d2Via2l0Lm9yZy9yZXBvc2l0b3J5L3dlYmtpdC90cnVuay9MYXlvdXRUZXN0cy9lZGl0aW5nL3Jl
c291cmNlcy9hYmUucG5nJz53b3JsZDwvYT4iKTsKKyAgICBbd2ViVmlldyBwYXN0ZTpuaWxdOwor
CisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
ImNsaXBib2FyZERhdGEudHlwZXMuaW5jbHVkZXMoJ3RleHQvaHRtbCcpIl0uYm9vbFZhbHVlKTsK
KyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
Y2xpcGJvYXJkRGF0YS52YWx1ZXNbMF0uaW5jbHVkZXMoJ2hlbGxvJykiXS5ib29sVmFsdWUpOwor
ICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJj
bGlwYm9hcmREYXRhLnZhbHVlc1swXS5pbmNsdWRlcygnd29ybGQnKSJdLmJvb2xWYWx1ZSk7Cisg
ICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImNs
aXBib2FyZERhdGEudmFsdWVzWzBdLmluY2x1ZGVzKCdhYmUucG5nJykiXS5ib29sVmFsdWUpOwor
fQorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQgJiYgUExBVEZPUk0oQ09DT0EpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>