<?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>182636</bug_id>
          
          <creation_ts>2018-02-08 21:48:11 -0800</creation_ts>
          <short_desc>Pasting from Excel no longer provides text/html data</short_desc>
          <delta_ts>2018-02-13 14:36:40 -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>Safari Technology Preview</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrew Herron">thespyder</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>lforschler</cc>
    
    <cc>rniwa</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1397824</commentid>
    <comment_count>0</comment_count>
      <attachid>333444</attachid>
    <who name="Andrew Herron">thespyder</who>
    <bug_when>2018-02-08 21:48:11 -0800</bug_when>
    <thetext>Created attachment 333444
simple excel document to replicate the issue

Attached is a simple Excel document and a HTML page that hooks into the paste event and prints available clipboard data types to the clipboard when pasting into a ContentEditable.

Copying from Excel and pasting into the page gives the following results.

Safari 11.0.2 release:
a big list of data including text/html

Safari 11.1 (13605.1.25.1) and STP49:
Only one entry, type &quot;Files&quot; with no data.


In both cases the copied data does appear in the ContentEditable, there&apos;s no issue there, it&apos;s just the paste event data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397825</commentid>
    <comment_count>1</comment_count>
      <attachid>333445</attachid>
    <who name="Andrew Herron">thespyder</who>
    <bug_when>2018-02-08 21:49:24 -0800</bug_when>
    <thetext>Created attachment 333445
simple HTML page to print clipboard data</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397826</commentid>
    <comment_count>2</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-02-08 21:53:40 -0800</bug_when>
    <thetext>&lt;rdar://problem/37087060&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397842</commentid>
    <comment_count>3</comment_count>
      <attachid>333451</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-02-08 23:53:44 -0800</bug_when>
    <thetext>Created attachment 333451
First pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397843</commentid>
    <comment_count>4</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-02-08 23:55:39 -0800</bug_when>
    <thetext>Patch out for review and EWS.

Also, here&apos;s another test harness that exhibits the problem: https://whsieh.github.io/examples/datatransfer</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397846</commentid>
    <comment_count>5</comment_count>
      <attachid>333453</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-02-09 00:03:03 -0800</bug_when>
    <thetext>Created attachment 333453
Fix non-Cocoa platforms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397951</commentid>
    <comment_count>6</comment_count>
      <attachid>333491</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-02-09 08:53:13 -0800</bug_when>
    <thetext>Created attachment 333491
+2 more tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398009</commentid>
    <comment_count>7</comment_count>
      <attachid>333499</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-02-09 10:44:14 -0800</bug_when>
    <thetext>Created attachment 333499
Adjust type order &amp; test expectations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398048</commentid>
    <comment_count>8</comment_count>
      <attachid>333499</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-02-09 12:14:58 -0800</bug_when>
    <thetext>Comment on attachment 333499
Adjust type order &amp; test expectations.

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

&gt; Source/WebCore/ChangeLog:57
&gt; +        &quot;text/plain&quot;. I opted for this because it seems less hacky than appending &quot;text/html&quot; separately, on top of
&gt; +        &quot;text/uri-list&quot;.

If you&apos;re doing that here, then it&apos;s weird that getDataForItem has special code paths for &quot;text/uri-list&quot; and &quot;text/html&quot;.
Either we should always special case those two, or always remove plain text.
Using two different strategies in those two places should lead to bugs.
r- because I think we need to at least address this problem before landing this.

&gt; Source/WebCore/dom/DataTransfer.cpp:158
&gt; +        if (lowercaseType == &quot;text/html&quot; &amp;&amp; RuntimeEnabledFeatures::sharedFeatures().customPasteboardDataEnabled()) {

Why do we need to check RuntimeEnabledFeatures::sharedFeatures().customPasteboardDataEnabled() here?

&gt; Source/WebCore/dom/DataTransfer.cpp:175
&gt; +String DataTransfer::readPasteboardDataForBindingsRespectingOrigin(Document&amp; document, const String&amp; lowercaseType, WebContentReadingPolicy policy) const

DataTransfer object is for bindings only. There is no need to say that. Just say readStringFromPasteboard or something.

&gt; Source/WebCore/dom/DataTransfer.cpp:310
&gt; +        // We don&apos;t expose &apos;text/plain&apos; to the page if the pasteboard contains files, because plain text data may contain file paths.

Just say &quot;Remove &quot;text/plain&quot; to avoid exposing local file paths&quot;.
No need to say we don&apos;t expose it. It&apos;s obvious from the code.

&gt; Source/WebCore/platform/Pasteboard.h:67
&gt; +enum class WebContentReadingPolicy { ReadFromAnyType, OnlyReadFromRichTextTypes };

Since the enum says &quot;reading policy&quot;, we probably don&apos;t need to say &quot;ReadFrom&quot;. Just AnyTime, OnlyRichTextTypes would suffice.

&gt; Source/WebCore/platform/ios/PasteboardIOS.mm:166
&gt; +static bool typeIsAppropriateForWebContentReadingPolicy(NSString *type, WebContentReadingPolicy policy)

How about just isTypeAllowedByReadingPolicy? I don&apos;t think we need to spell out the full enum name since it&apos;s in the argument list.

&gt; Source/WebCore/platform/ios/PasteboardIOS.mm:168
&gt; +    return policy == WebContentReadingPolicy::ReadFromAnyType || [type isEqualToString:WebArchivePboardType] || [type isEqualToString:(NSString *)kUTTypeHTML] || [type isEqualToString:(NSString *)kUTTypeRTF] || [type isEqualToString:(NSString *)kUTTypeFlatRTFD];

Please wrap this line at some point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398056</commentid>
    <comment_count>9</comment_count>
      <attachid>333499</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-02-09 12:29:14 -0800</bug_when>
    <thetext>Comment on attachment 333499
Adjust type order &amp; test expectations.

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

Thanks for taking a look! v2 forthcoming

&gt;&gt; Source/WebCore/ChangeLog:57
&gt;&gt; +        &quot;text/uri-list&quot;.
&gt; 
&gt; If you&apos;re doing that here, then it&apos;s weird that getDataForItem has special code paths for &quot;text/uri-list&quot; and &quot;text/html&quot;.
&gt; Either we should always special case those two, or always remove plain text.
&gt; Using two different strategies in those two places should lead to bugs.
&gt; r- because I think we need to at least address this problem before landing this.

That&apos;s a good point. I&apos;ll change DataTransfer::types to add &quot;text/uri-list&quot; and &quot;text/html&quot; as special cases, which is more similar to what we do now.

&gt;&gt; Source/WebCore/dom/DataTransfer.cpp:158
&gt;&gt; +        if (lowercaseType == &quot;text/html&quot; &amp;&amp; RuntimeEnabledFeatures::sharedFeatures().customPasteboardDataEnabled()) {
&gt; 
&gt; Why do we need to check RuntimeEnabledFeatures::sharedFeatures().customPasteboardDataEnabled() here?

I&apos;ll change the comment below to explain this more clearly. We don&apos;t sanitize any markup if custom pasteboard data is disabled, so it would be a regression from previous releases that we could leak file paths in HTML markup when dropping.

&gt;&gt; Source/WebCore/dom/DataTransfer.cpp:175
&gt;&gt; +String DataTransfer::readPasteboardDataForBindingsRespectingOrigin(Document&amp; document, const String&amp; lowercaseType, WebContentReadingPolicy policy) const
&gt; 
&gt; DataTransfer object is for bindings only. There is no need to say that. Just say readStringFromPasteboard or something.

Fixed!

&gt;&gt; Source/WebCore/dom/DataTransfer.cpp:310
&gt;&gt; +        // We don&apos;t expose &apos;text/plain&apos; to the page if the pasteboard contains files, because plain text data may contain file paths.
&gt; 
&gt; Just say &quot;Remove &quot;text/plain&quot; to avoid exposing local file paths&quot;.
&gt; No need to say we don&apos;t expose it. It&apos;s obvious from the code.

I&apos;m reverting this to just add back &quot;text/html&quot; and &quot;text/uri-list&quot; instead.

&gt;&gt; Source/WebCore/platform/Pasteboard.h:67
&gt;&gt; +enum class WebContentReadingPolicy { ReadFromAnyType, OnlyReadFromRichTextTypes };
&gt; 
&gt; Since the enum says &quot;reading policy&quot;, we probably don&apos;t need to say &quot;ReadFrom&quot;. Just AnyTime, OnlyRichTextTypes would suffice.

Sounds good — `enum class WebContentReadingPolicy { AnyType, OnlyRichTextTypes };`

&gt;&gt; Source/WebCore/platform/ios/PasteboardIOS.mm:166
&gt;&gt; +static bool typeIsAppropriateForWebContentReadingPolicy(NSString *type, WebContentReadingPolicy policy)
&gt; 
&gt; How about just isTypeAllowedByReadingPolicy? I don&apos;t think we need to spell out the full enum name since it&apos;s in the argument list.

Sure! Changed to isTypeAllowedByReadingPolicy

&gt;&gt; Source/WebCore/platform/ios/PasteboardIOS.mm:168
&gt;&gt; +    return policy == WebContentReadingPolicy::ReadFromAnyType || [type isEqualToString:WebArchivePboardType] || [type isEqualToString:(NSString *)kUTTypeHTML] || [type isEqualToString:(NSString *)kUTTypeRTF] || [type isEqualToString:(NSString *)kUTTypeFlatRTFD];
&gt; 
&gt; Please wrap this line at some point.

Ok! Added line wrapping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398067</commentid>
    <comment_count>10</comment_count>
      <attachid>333513</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-02-09 12:58:11 -0800</bug_when>
    <thetext>Created attachment 333513
Address feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398068</commentid>
    <comment_count>11</comment_count>
      <attachid>333513</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-02-09 13:04:26 -0800</bug_when>
    <thetext>Comment on attachment 333513
Address feedback

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

&gt; Source/WebCore/dom/DataTransfer.cpp:310
&gt; +        if (safeTypes.contains(&quot;text/html&quot;))

Hm, this should probably check for custom pasteboard data too to match getDataForItem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398077</commentid>
    <comment_count>12</comment_count>
      <attachid>333513</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-02-09 13:53:57 -0800</bug_when>
    <thetext>Comment on attachment 333513
Address feedback

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

&gt; LayoutTests/editing/pasteboard/paste-image-does-not-reveal-file-url.html:34
&gt; -    shouldBeEqualToString(&apos;JSON.stringify(event.clipboardData.types)&apos;, &apos;[&quot;Files&quot;]&apos;);
&gt; +    shouldNotBe(&apos;event.clipboardData.types.indexOf(&quot;Files&quot;)&apos;, &apos;-1&apos;);

Use event.clipboardData.types.includes(&quot;Files&quot;) instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398079</commentid>
    <comment_count>13</comment_count>
      <attachid>333513</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-02-09 13:56:37 -0800</bug_when>
    <thetext>Comment on attachment 333513
Address feedback

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

&gt;&gt; LayoutTests/editing/pasteboard/paste-image-does-not-reveal-file-url.html:34
&gt;&gt; +    shouldNotBe(&apos;event.clipboardData.types.indexOf(&quot;Files&quot;)&apos;, &apos;-1&apos;);
&gt; 
&gt; Use event.clipboardData.types.includes(&quot;Files&quot;) instead.

Good idea — fixed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398095</commentid>
    <comment_count>14</comment_count>
      <attachid>333519</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-02-09 14:41:43 -0800</bug_when>
    <thetext>Created attachment 333519
One last EWS run</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398127</commentid>
    <comment_count>15</comment_count>
      <attachid>333519</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-09 15:36:22 -0800</bug_when>
    <thetext>Comment on attachment 333519
One last EWS run

Rejecting attachment 333519 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;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 333519, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
d/mechanize/_urllib2_fork.py&quot;, line 332, in _call_chain
    result = func(*args)
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/thirdparty/autoinstalled/mechanize/_urllib2_fork.py&quot;, line 1170, in https_open
    return self.do_open(conn_factory, req)
  File &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/thirdparty/autoinstalled/mechanize/_urllib2_fork.py&quot;, line 1118, in do_open
    raise URLError(err)
urllib2.URLError: &lt;urlopen error EOF occurred in violation of protocol (_ssl.c:590)&gt;

Full output: http://webkit-queues.webkit.org/results/6438005</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398128</commentid>
    <comment_count>16</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-02-09 15:43:20 -0800</bug_when>
    <thetext>Landed &lt;http://trac.webkit.org/changeset/228340/webkit&gt; manually.

&gt; &quot;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkitpy/thirdparty/autoinstalled/
&gt; mechanize/_urllib2_fork.py&quot;, line 1118, in do_open
&gt;     raise URLError(err)
&gt; urllib2.URLError: &lt;urlopen error EOF occurred in violation of protocol
&gt; (_ssl.c:590)&gt;
&gt; 
&gt; Full output: http://webkit-queues.webkit.org/results/6438005

+ Aakash, Lucas</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1398781</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-02-13 14:36:40 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/228340/webkit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>333444</attachid>
            <date>2018-02-08 21:48:11 -0800</date>
            <delta_ts>2018-02-08 21:48:11 -0800</delta_ts>
            <desc>simple excel document to replicate the issue</desc>
            <filename>excel_test_error.xlsx</filename>
            <type>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</type>
            <size>10263</size>
            <attacher name="Andrew Herron">thespyder</attacher>
            
              <data encoding="base64">UEsDBBQABgAIAAAAIQCfx8JGaAEAAJAFAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAAC
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADM
VMtuwyAQvFfqP1hcK5sklaqqspNDH8c2h/QDqFnHKBgQS15/3zVxcqjcRFEitRfAZndmdoHJJ5tG
JyvwqKwp2DAbsARMaaUy84J9zt7SR5ZgEEYKbQ0UbAvIJuPbm3y2dYAJZRssWB2Ce+IcyxoagZl1
YGinsr4RgT79nDtRLsQc+GgweOClNQFMSEOLwcb5C1RiqUPyuqHfOyUeNLLkeRfYchVMOKdVKQIp
5Ssjf7CkHUNGmTEGa+XwjmQw3svQ7vxO0OV9UGu8kpBMhQ/voiEZfKP52vrFl7WL7DhIj0pbVaoE
actlQx3I0HkQEmuA0OgszlkjlNnrPsIfg5HHaXhlIW19EfhMHaN/ouP+j3QEuv/A43j5kUSYEweA
YasBr30NI+gJZunFmkwCebe4vN4O6BgvvZuptw7JQTycX/XeItrs1BEQ+KDgYBJ9j+3ASO5zcZuh
9TcJsoebRz8dfwMAAP//AwBQSwMEFAAGAAgAAAAhALVVMCP0AAAATAIAAAsACAJfcmVscy8ucmVs
cyCiBAIooAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACskk1PwzAMhu9I/IfI99XdkBBCS3dBSLshVH6ASdwPtY2jJBvdvyccEFQagwNHf71+
/Mrb3TyN6sgh9uI0rIsSFDsjtnethpf6cXUHKiZylkZxrOHEEXbV9dX2mUdKeSh2vY8qq7iooUvJ
3yNG0/FEsRDPLlcaCROlHIYWPZmBWsZNWd5i+K4B1UJT7a2GsLc3oOqTz5t/15am6Q0/iDlM7NKZ
FchzYmfZrnzIbCH1+RpVU2g5abBinnI6InlfZGzA80SbvxP9fC1OnMhSIjQS+DLPR8cloPV/WrQ0
8cudecQ3CcOryPDJgosfqN4BAAD//wMAUEsDBBQABgAIAAAAIQC7gUTa8AAAAEcDAAAaAAgBeGwv
X3JlbHMvd29ya2Jvb2sueG1sLnJlbHMgogQBKKAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAC8ks1qwzAQhO+FvIPYe7y205YSIudSCrmW9AGEvf4htiS02x+/fYULbgPBvYRcBKNFMx+r2e2/
hl59UODOWQ1ZkoIiW7qqs42Gt+PL+gkUi7GV6Z0lDSMx7IvV3e6VeiPxEbedZxVdLGtoRfwWkcuW
BsOJ82TjpHZhMBJlaNCb8mQawjxNHzH89YDizFMdKg3hUG1AHUcfk//3dnXdlfTsyveBrFyIwE8X
TtwSSTQ1oSHRMF8xTpNNEokBL8PkN4bJl2CyG8NkSzAP14RhGfvYs/mPfvRS/P014yW2l37TJ4nT
Oa8Az+pffAMAAP//AwBQSwMEFAAGAAgAAAAhALXAQy/4AQAALQQAAA8AAAB4bC93b3JrYm9vay54
bWykU01v2zAMvQ/YfxB0b2Q7bZoFtout3bBchqLrx1mR6ViIPjxJnpN/P8qe02DZocMuFik9P5KP
ZH6z14r8BOelNQVNZwklYIStpNkW9Onxy8WSEh+4qbiyBgp6AE9vyvfv8t663cbaHUEC4wvahNCu
GPOiAc39zLZg8KW2TvOArtsy3zrglW8AglYsS5IF01waOjKs3Fs4bF1LAXdWdBpMGEkcKB4wfd/I
1k9sWryFTnO369oLYXWLFBupZDgMpJRosVpvjXV8o7DsfXo1MaN5Rq2lcNbbOsyQio1JntWbJixN
x5LLvJYKnkfZCW/bb1zHKIoSxX34XMkAVUGv0bU9vF5gEq5rP3VS4WuapOmCsvLYintHKqh5p8Ij
NmGiR2B2mWUDEov6qAI4wwPcWhNQw9/q/69eZY7ct43F7pAH+NFJBzgUUbYyxy8XK77x9zw0pHOq
oOzJY/Eo0aECx+5sb5TF2WAnIvPzDv6DzFxEZdgxqdH+s/gyjyP8LKH3rzJGl+xfpKlsH8WbJ7gU
h8nPPmTo9sPri6xCU9Dsehkh491XkNsmxP+SZTLkcBJiGH4MNZzEDE3/HhcixS2L5zr2FZu8kmi4
dZVGhjN0doJG+4jO/oqen6DRPqLnQ3ZTSoIrgQMUjyGJy6tFNkRn06aXvwAAAP//AwBQSwMEFAAG
AAgAAAAhAL2gv71LBwAAHSIAABMAAAB4bC90aGVtZS90aGVtZTEueG1s7FpLbxs3EL4X6H8g9p5Y
siXHMiIHlizFSfyCraTIkVpRu7S5ywVJ2dGtSI4FChRNi14K9NZD0TZAAvSS/hq3KdoUyF/okFxJ
S4uKrcZFX3aAeB/fDOfN2aFv3nqUMHRMhKQ8rQfl66UAkTTkPZpG9eB+p31tJUBS4bSHGU9JPRgS
Gdxae/+9m3hVxSQhCOhTuYrrQaxUtrqwIEN4jOV1npEU3vW5SLCCWxEt9AQ+Ab4JW1gslZYXEkzT
AKU4Aba7/T4NCepolsHaiHmLwW2qpH4QMnGgWROHwmB7R2WNkEPZZAIdY1YPYJ0eP+mQRypADEsF
L+pByfwEC2s3F/BqTsTUDNoCXdv85HQ5Qe9o0awpou540XK7UruxMeZvAExN41qtVrNVHvMzAByG
oKmVpciz0l4pN0Y8CyB7Oc27WaqWKi6+wH9pSuZao9Go1nJZLFMDspeVKfxKabmyvujgDcjiq1P4
SmO92Vx28AZk8ctT+PaN2nLFxRtQzGh6NIXWDm23c+5jSJ+zTS98BeArpRw+QUE0jKNLL9HnqZoV
awk+5KINAA1kWNEUqWFG+jiEKG7ipCsoDlCGUy7hQWmx1C4twf/6X8VcVfTyeJXgAp19FMqpR1oS
JENBM1UP7gLXoAB58/LbNy+fozcvn50+fnH6+IfTJ09OH39veTmEmziNioSvv/7k9y8/RL89/+r1
08/8eFnE//zdRz/9+KkfCPk10f/V589+efHs1Rcf//rNUw98XeBuEd6hCZFoh5ygfZ6AbsYwruSk
K+aj6MSYOhQ4Bt4e1i0VO8CdIWY+XIO4xnsgoLT4gLcHh46sB7EYKOpZ+V6cOMBtzlmDC68B7um1
ChbuDNLIv7gYFHH7GB/71m7i1HFta5BBTYWQnbZ9MyaOmHsMpwpHJCUK6Xf8iBAP2UNKHbtu01Bw
yfsKPaSoganXJB3adQJpQrRJE/DL0CcguNqxzfYD1ODMp/UGOXaRkBCYeYTvEOaY8TYeKJz4WHZw
wooG38Iq9gl5MBRhEdeSCjwdEcZRq0ek9NHsCtC34PR7GKqZ1+3bbJi4SKHokY/nFua8iNzgR80Y
J5lXZprGRewdeQQhitEeVz74NnczRN+DH3A6090PKHHcfX4huE8jR6RJgOg3A+Hx5W3C3Xwcsj4m
viqzLhKnsK5DDfdFR2MQOaG9RQjDJ7hHCLp/xyNBg2eOzSdC342hqmwSX2DdxW6s6vuUSOiNdDMz
naZbVDohe0AiPkOe7eGZwjPEaYLFLM474HUndGFv85bSXRYeFYE7FHo+iBevUXYl8CgEd2sW170Y
O7uWvpf+eB0Kx38XyTHIy8N58xJoyNw0UNgvbJsOZs4Ck4DpYIq2fOUWSBz3T0j0vmrIBl66vpu0
EzdAN+Q0OQlN39bxMAoOPNPxVK86Htuyne14ZlWWzTN9zizcv7C72cCDdI/AhjJduq6am6vmJvjP
Nzezcvmqpblqaa5aGt9H2F/S0ky6GGhwJhMeM+9JZo57+pSxAzVkZEuaiY+ED5teGx6aUZSZR47H
f1kMl1ofWMDBRQIbGiS4+oCq+CDGGQyHymZ4GcmcdSRRxiXMjMxjM0YlZ3ibwSiFkZCZcVb19Mva
T2K1zXv28VJxyjlmY6SKzCR1tNCSZnDRxZZuvNtiZSvVTLO5qpWNaKZjcFQbq6xNPLL+WDV4OLYm
fDEj+M4GKy/DsFnLDnM0aK972u7WRyO36KUv1UUyhm/C3Eda72kflY2TRrEypYjWwwaDnlie46PC
ajXN9h1Wu4iTistVZiw38t67eGk0pp14SeftmXRkaTE5WYpO6kGtulgNUIizetCHAS1cJhl4Xerv
HcwiOOUIlbBhf24ym3CdeLPmD8syzNyt3acUdupAJqTawDK2oWFe5SHAUjNONvIvVsGsl6WApxpd
TIqlFQiGv00KsKPrWtLvk1AVnV14YubpBpCXUj5QRBzEvRPUZQOxj8H9OlRBnx6VMEk3FUHfwKGQ
trZ55RbnPOmKRzEGZ59jlsU4L7c6RUeZbOGmII1lMHdWWiMe6OaV3Sg3vyom5S9JlWIY/89U0fsJ
jLaXetoDIZxJCox0ptQDLlTMoQplMQ3bAg5kTO2AaIGDRXgNQQUno+a3IMf6t805y8OkNUwo1T6N
kKCwH6lYELIHZclE3znMyvneZVmynJHtMCbiysyK3SXHhHV0DVzWe3uAYgh1U03yMmBwZ+PPvc8z
qBvpJuef2vnYZJ63PZjsqpb+gr1IpVD0C1tBzbv3mZ5qXA7esrHPudXaijWl8WL1wlttBgcUcC6p
ICZCKkIYNJrWF7zc4ftQWxGcmtv2CkFUX7ONB9IF0pbHLjRO9qENJs3Kdl55d3vpbRScread7nhd
yNI/0+nOaexxc+Yu5+Ti27vP+YydW9ixdbHT9ZgakvZsiur2aPQhYxxj/j6j+CcUvHsIjt6Aw+oB
U9IeQz+C4yj4yrDH3ZD81rmGdO0PAAAA//8DAFBLAwQUAAYACAAAACEAFa+qPL0AAAArAQAAIwAA
AHhsL3dvcmtzaGVldHMvX3JlbHMvc2hlZXQxLnhtbC5yZWxzhI/NCsIwEITvgu8Q9m7SehCRpl5E
8Cr1AZZk+4NtErLxp29vLoKC4G1nl/1mpto/p1HcKfLgnYZSFiDIGW8H12m4NMfVFgQndBZH70jD
TAz7ermozjRiyk/cD4FFpjjW0KcUdkqx6WlClj6Qy5fWxwlTlrFTAc0VO1Lrotio+MmA+ospTlZD
PNkSRDOH7Pyf7dt2MHTw5jaRSz8slI34yM0yEmNHSYOU7x2/h1LmyKDqSn1VrF8AAAD//wMAUEsD
BBQABgAIAAAAIQBklZq2eAEAAKICAAAYAAAAeGwvd29ya3NoZWV0cy9zaGVldDIueG1sjJJNT8Mw
DIbvSPyHKHeabuNjTOsQYkJwQEKIj3Oaum20JK4Sj7F/j9tpA2mX3eLYfuL3deZ3P96Jb4jJYijk
KMulgGCwsqEp5Mf748VUikQ6VNphgEJuIcm7xfnZfINxlVoAEkwIqZAtUTdTKpkWvE4ZdhA4U2P0
mjiMjUpdBF0NTd6pcZ5fK69tkDvCLJ7CwLq2BpZo1h4C7SARnCaeP7W2S3uaN6fgvI6rdXdh0HeM
KK2ztB2gUngze24CRl061v0zutRmzx6CI7y3JmLCmjLGqd2gx5pv1a1i0mJeWVbQ2y4i1IW8H0m1
mA/mfFrYpH9n0XtdIq76xHNVyLwvVUe1j4PXr1GUOsEDui9bUctL5Z1WUOu1o7/LaTadjPPJaHx1
SL7h5gls0xK38O0gclZtl5AMW82vZuPDiEtNmmfodAMvOjY2JOGgHopupIg7Sp7xmbDrW2+YWCIR
+n3U8l8A3nmeTaSoEWkf9NoOv2vxCwAA//8DAFBLAwQUAAYACAAAACEAZJWatngBAACiAgAAGAAA
AHhsL3dvcmtzaGVldHMvc2hlZXQzLnhtbIySTU/DMAyG70j8hyh3mm7jY0zrEGJCcEBCiI9zmrpt
tCSuEo+xf4/baQNpl93i2H7i93Xmdz/eiW+IyWIo5CjLpYBgsLKhKeTH++PFVIpEOlTaYYBCbiHJ
u8X52XyDcZVaABJMCKmQLVE3UyqZFrxOGXYQOFNj9Jo4jI1KXQRdDU3eqXGeXyuvbZA7wiyewsC6
tgaWaNYeAu0gEZwmnj+1tkt7mjen4LyOq3V3YdB3jCits7QdoFJ4M3tuAkZdOtb9M7rUZs8egiO8
tyZiwpoyxqndoMeab9WtYtJiXllW0NsuItSFvB9JtZgP5nxa2KR/Z9F7XSKu+sRzVci8L1VHtY+D
169RlDrBA7ovW1HLS+WdVlDrtaO/y2k2nYzzyWh8dUi+4eYJbNMSt/DtIHJWbZeQDFvNr2bjw4hL
TZpn6HQDLzo2NiThoB6KbqSIO0qe8Zmw61tvmFgiEfp91PJfAN55nk2kqBFpH/TaDr9r8QsAAP//
AwBQSwMEFAAGAAgAAAAhACWN/pyrAQAA+gIAABgAAAB4bC93b3Jrc2hlZXRzL3NoZWV0MS54bWyM
ksFu2zAMhu8D9g6C7rWcZFvTIE4xNOiWw4Ch29qzLNO2EEn0JKZp3n60AmcFeumNlMiP5E+ub1+8
E88Qk8VQyVlRSgHBYGNDV8k/v++vllIk0qHRDgNU8gRJ3m4+flgfMe5TD0CCCSFVsicaVkol04PX
qcABAv+0GL0mdmOn0hBBNznJOzUvyy/KaxvkmbCK72Fg21oDWzQHD4HOkAhOE/efejukiebNe3Be
x/1huDLoB0bU1lk6ZagU3qx2XcCoa8dzv8w+aTOxs/MG762JmLClgnHq3OjbmW/UjWLSZt1YnmCU
XURoK/l1JtVmncV5tHBMr2xBuv4FDgxBwzuSYtS+RtyPgTt+KhmXcsCI04bsM9yBc5X8Nq7vby7A
JhdQlwqv7anafd7WzyhqneAO3ZNtqOeSfBUNtPrg6P/jslgu5uViNv98+XzA43ewXU+cwq9ZplVz
2kIyvCzus5hfhtxq0tzPoDv4oWNnQxIO2hx0LUU8U8qCbcJhTL1mYo1E6Cev52sCvpqyWEjRItLk
MLeJ+sg3LOLKskBx12R51eVqN/8AAAD//wMAUEsDBBQABgAIAAAAIQCJCc/LagMAAAUJAAAYAAAA
eGwvZHJhd2luZ3MvZHJhd2luZzEueG1s5FZbb9s2FH4fsP/A8XVwdLFjO0bkYrloKDC0QdP+AIai
HCEUqZGMLy363/cdSqobLxjQPW5+OD4kz/U7F+jyzb7VbKucb6wpeHaWcqaMtFVjNgX/9LGcLDnz
QZhKaGtUwQ/K8zfrn3+63FdutfM3jsGA8SscC/4YQrdKEi8fVSv8me2UwWttXSsCjm6TVE7sYLrV
SZ6m88R3TonKPyoVbvoXPtgT/8JaKxrD1zGysLPXSuvfjHy0rr+qnW17Tlq9nl4mlAGxUQHM+7pe
p9+u6RRfnN2t8/6a2PHuO2lcR+lo8egm2KO7bPG6v3mapovz150OKqdO5/P5YvYtnqPj0Z3vWCuk
swXnLKh90I15At/HYrb33d0AiHy3vXOsqQqec2ZEi+p+hPyV3bMM4mKFwx8+DBx7dk3Bv5RlfnV+
W84mJbjJLL2aTa5uZxeTMp8ub/NFeZ1P519JO5uvJIob0Fdvq7Go2fxvZW0bxOptHc6kbRNb141U
Y5ugSbJZEssa4/wCtOJvArokkh5Jio6i31eerC+TGP34H7Po6005D2V5F7FgYY+M0fpRjXrie4x8
REus9rVD84gV4mMkvMyXyxSzcij4dJnBK2lHn0zi/SKbzmaLc84kBLI0u8gWsyGs0VLnfPhd2ZYR
U3CnZIigiy2i7TMYRciyt7qpykajXXGgAVPX2rGt0AXXoQ/+REobtkMo5znF0Xaoszeb6OOfjIX9
K8YApzZAk+DpIYlcOGhF8WjzQdWoEDJPewfSbR4oPiwFoIRVAvpAtM8sKpBmjYx+UHdQiXDXNWD7
QX01KkX/1hz128ZYN8T/AuDqacSk7uVHKHoACAvqoupAJh/wj7nCTg3vQWptUQWpm44z7KLPp3c7
JzpU5s9n4RRnLuhri5ICLhF3V8FD31rah3tyF/usI0foYxC40oKWtTKTT/dY1p+p46g3I94MQwv+
ueAG+5t2uWueMOnG3kcOYsIr7AjcDbV70WlDHWOf0XSV5VDCFz2kMeeGhUOnaiFh6dfWTPQQuBIn
D0r0GUl/8iD9YBtJUW5hHZSH4Q2jpcrUXip9xmi2sZRAIQQasYhEmepOOPHhvwjJMbeTpP8HXXDn
7INW7S+vVD5upHH2hvU0rHfdKBNuRBC0cuKIvvwmiHf0BbP+CwAA//8DAFBLAwQUAAYACAAAACEA
n4jrbZYCAAAEBgAADQAAAHhsL3N0eWxlcy54bWykVFtr2zAUfh/sPwi9u7LdOEuC7bI0NRS6MWgH
e1VsORHVxUhK52zsv+/Il8SlYxvti3XO8dF3vnNTetVKgZ6YsVyrDEcXIUZMlbriapfhrw9FsMDI
OqoqKrRiGT4yi6/y9+9S646C3e8ZcwgglM3w3rlmRYgt90xSe6EbpuBPrY2kDlSzI7YxjFbWX5KC
xGE4J5JyhXuElSz/B0RS83hoglLLhjq+5YK7Y4eFkSxXtzulDd0KoNpGM1qiNpqbeIzQmV4Ekbw0
2uraXQAo0XXNS/aS65IsCS3PSAD7OqQoIWHcJ56ntVbOolIflIPyA7onvXpU+rsq/C9v7L3y1P5A
T1SAJcIkT0sttEEOig25dhZFJes9rqngW8O9W00lF8feHHtD15/BT3KoljcSz2M4LFziQpxYxZ4A
GPIUCu6YUQUoaJAfjg2EVzAbPUzn9w/vnaHHKE4mF0gXME+32lQwi+d6jKY8Fax2QNTw3d6fTjfw
3WrnoGV5WnG604oKn0oPchIgnZIJce/n9Vv9DLutkTrIQrrbKsMw+b4IowiJDGKP1ysef4rWY78Z
FrX1c3xAnNB+RvoUHvl+Z/izXzABkzNAoO2BC8fVHwgDZtWeSxD6Dji/LF1xTlGgEhWr6UG4h9PP
DJ/lT6ziBwlLNXh94U/adRAZPst3vlPR3MdgrbuzMF5wooPhGf55s/6w3NwUcbAI14tgdsmSYJms
N0Eyu15vNsUyjMPrX5OtfcPOdi9MnsJirayAzTZDsgP5+7MtwxOlp9/NKNCecl/G8/BjEoVBcRlG
wWxOF8FifpkERRLFm/lsfZMUyYR78spXIiRRNL4SbZSsHJdMcDX2auzQ1ApNAvUvSZCxE+T8fOe/
AQAA//8DAFBLAwQUAAYACAAAACEA2Qyz/1UBAABnAgAAEQAIAWRvY1Byb3BzL2NvcmUueG1sIKIE
ASigAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfJJdS8MwGIXvBf9DyX2btPVjhrbDr105
EKwo3mXJu63YJiHJ7PbvTdttdihCbpJz3odzXpJNt00dfIGxlZI5iiOCApBciUqucvRazsIJCqxj
UrBaScjRDiyaFudnGdeUKwPPRmkwrgIbeJK0lOscrZ3TFGPL19AwG3mH9OJSmYY5fzUrrBn/ZCvA
CSFXuAHHBHMMd8BQH4lojxT8iNQbU/cAwTHU0IB0FsdRjH+8Dkxj/xzolZGzqdxO+077uGO24IN4
dG9tdTS2bRu1aR/D54/x+/zppa8aVrLbFQdUZIJTboA5ZQpb1Qswi2WGR4/dAmtm3dzvelmBuNsV
j3qttsEt52rja2X4t8NT+xIDGkTgY9GhxEF5S+8fyhkqEhJfh3EckpsyvqQXKU3Sjy7AyXwXc3ho
9jH+J05CkvhTkmuaEEqSEfEAKPrcp1+j+AYAAP//AwBQSwMEFAAGAAgAAAAhALegWOSrAQAAZQMA
ABAACAFkb2NQcm9wcy9hcHAueG1sIKIEASigAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
nJNNb9swDIbvA/YfBN0bOclQDIGsYku39bBiAeJ2Z1WmYyG2JIiMkezXT7aR1NnHpTeS7wvqESnJ
u2PbsA4iWu9yPp9lnIEzvrRul/On4uvNR86QtCt14x3k/ATI79T7d3ITfYBIFpClFg5zXhOFlRBo
amg1zpLsklL52GpKadwJX1XWwL03hxYciUWW3Qo4ErgSyptwacjHjquO3tq09Kbnw+fiFBKwkp9C
aKzRlG6pHq2JHn1F7FEb68hjzb4cDTRSTG0ycW7BHKKlk8qkmKZya3QD63SEqnSDIMVrQT6A7se3
0Taikh2tOjDkI0P7Kw1wwdmLRujBct7paLWjBNjbxmSIm4AU1U8f91gDEEqRDGNxCKfeaWw/qOVg
SMG1sW8wgiThGrGw1AD+qDY60j+Il1PigWHkHXG2Pd98ynchHaTF/6WRdHqrYVCJ7w+itW+DdidV
1MA+N9rskdJjZN+iPwQpzqr8bt0en0Lh7zXBeTHXRbmtdYQy7fKyuEtBPqSdxKZvsq6120F59vwt
9A/qefw1an47y5ZZeiGTmhSv/0P9BgAA//8DAFBLAQItABQABgAIAAAAIQCfx8JGaAEAAJAFAAAT
AAAAAAAAAAAAAAAAAAAAAABbQ29udGVudF9UeXBlc10ueG1sUEsBAi0AFAAGAAgAAAAhALVVMCP0
AAAATAIAAAsAAAAAAAAAAAAAAAAAoQMAAF9yZWxzLy5yZWxzUEsBAi0AFAAGAAgAAAAhALuBRNrw
AAAARwMAABoAAAAAAAAAAAAAAAAAxgYAAHhsL19yZWxzL3dvcmtib29rLnhtbC5yZWxzUEsBAi0A
FAAGAAgAAAAhALXAQy/4AQAALQQAAA8AAAAAAAAAAAAAAAAA9ggAAHhsL3dvcmtib29rLnhtbFBL
AQItABQABgAIAAAAIQC9oL+9SwcAAB0iAAATAAAAAAAAAAAAAAAAABsLAAB4bC90aGVtZS90aGVt
ZTEueG1sUEsBAi0AFAAGAAgAAAAhABWvqjy9AAAAKwEAACMAAAAAAAAAAAAAAAAAlxIAAHhsL3dv
cmtzaGVldHMvX3JlbHMvc2hlZXQxLnhtbC5yZWxzUEsBAi0AFAAGAAgAAAAhAGSVmrZ4AQAAogIA
ABgAAAAAAAAAAAAAAAAAlRMAAHhsL3dvcmtzaGVldHMvc2hlZXQyLnhtbFBLAQItABQABgAIAAAA
IQBklZq2eAEAAKICAAAYAAAAAAAAAAAAAAAAAEMVAAB4bC93b3Jrc2hlZXRzL3NoZWV0My54bWxQ
SwECLQAUAAYACAAAACEAJY3+nKsBAAD6AgAAGAAAAAAAAAAAAAAAAADxFgAAeGwvd29ya3NoZWV0
cy9zaGVldDEueG1sUEsBAi0AFAAGAAgAAAAhAIkJz8tqAwAABQkAABgAAAAAAAAAAAAAAAAA0hgA
AHhsL2RyYXdpbmdzL2RyYXdpbmcxLnhtbFBLAQItABQABgAIAAAAIQCfiOttlgIAAAQGAAANAAAA
AAAAAAAAAAAAAHIcAAB4bC9zdHlsZXMueG1sUEsBAi0AFAAGAAgAAAAhANkMs/9VAQAAZwIAABEA
AAAAAAAAAAAAAAAAMx8AAGRvY1Byb3BzL2NvcmUueG1sUEsBAi0AFAAGAAgAAAAhALegWOSrAQAA
ZQMAABAAAAAAAAAAAAAAAAAAvyEAAGRvY1Byb3BzL2FwcC54bWxQSwUGAAAAAA0ADQBhAwAAoCQA
AAAA
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>333445</attachid>
            <date>2018-02-08 21:49:24 -0800</date>
            <delta_ts>2018-02-08 21:49:24 -0800</delta_ts>
            <desc>simple HTML page to print clipboard data</desc>
            <filename>pastelog.html</filename>
            <type>text/html</type>
            <size>1132</size>
            <attacher name="Andrew Herron">thespyder</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8dGl0bGU+cGFzdGUgbG9nPC90aXRsZT4KPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiPgogIGZ1bmN0aW9uIHBhc3RlTGlzdGVuZXIoZSkgewogICAgY29uc29sZS5s
b2coJ3Bhc3RlTGlzdGVuZXInKTsKICAgIHZhciBjZCA9IGUuY2xpcGJvYXJkRGF0YTsKICAgIGlm
ICghY2QgfHwgIWNkLnR5cGVzKSB7CiAgICAgIGNvbnNvbGUubG9nKCdGQUlMVVJFIScpOwogICAg
ICByZXR1cm47CiAgICB9CgogICAgY29uc29sZS5sb2coImxlbmd0aCA9ICIgKyBjZC50eXBlcy5s
ZW5ndGgpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjZC50eXBlcy5sZW5ndGg7IGkrKykgewog
ICAgICBjb25zb2xlLmxvZygndHlwZTonICsgY2QudHlwZXNbaV0pOwogICAgICBjb25zb2xlLmxv
ZygnZGF0YTonICsgY2QuZ2V0RGF0YShjZC50eXBlc1tpXSkpOwogICAgfQogIH0KICBmdW5jdGlv
biBkcm9wTGlzdGVuZXIoZSkgewogICAgY29uc29sZS5sb2coJ2Ryb3BMaXN0ZW5lcicpOwogICAg
dmFyIGNkID0gZS5kYXRhVHJhbnNmZXI7CiAgICBpZiAoIWNkIHx8ICFjZC50eXBlcykgewogICAg
ICBjb25zb2xlLmxvZygnRkFJTFVSRSEnKTsKICAgICAgcmV0dXJuOwogICAgfQoKICAgIGNvbnNv
bGUubG9nKCJsZW5ndGggPSAiICsgY2QudHlwZXMubGVuZ3RoKTsKICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgY2QudHlwZXMubGVuZ3RoOyBpKyspIHsKICAgICAgY29uc29sZS5sb2coJ3R5cGU6JyAr
IGNkLnR5cGVzW2ldKTsKICAgICAgY29uc29sZS5sb2coJ2RhdGE6JyArIGNkLmdldERhdGEoY2Qu
dHlwZXNbaV0pKTsKICAgIH0KICB9Cjwvc2NyaXB0Pgo8L2hlYWQ+Cjxib2R5PgogICA8ZGl2IGNv
bnRlbnRlZGl0YWJsZT0idHJ1ZSIKICAgICAgICBvbnBhc3RlPSJwYXN0ZUxpc3RlbmVyKGV2ZW50
KSIgb25kcm9wPSJkcm9wTGlzdGVuZXIoZXZlbnQpIgogICAgICAgIHN0eWxlPSJtYXJnaW46IDIw
cHg7IHBhZGRpbmc6IDVweDsgYm9yZGVyOiAycHggc29saWQgYmxhY2s7IHdpZHRoOiA0NTBweDsg
bWluLWhlaWdodDogMjAwcHg7Ij5wYXN0ZSBoZXJlIGFuZCB0aGUgY2xpcGJvYXJkIGNvbnRlbnRz
IHdpbGwgcHJpbnQgdG8gdGhlIGNvbnNvbGU8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333451</attachid>
            <date>2018-02-08 23:53:44 -0800</date>
            <delta_ts>2018-02-09 00:02:38 -0800</delta_ts>
            <desc>First pass</desc>
            <filename>bug-182636-20180208235333.patch</filename>
            <type>text/plain</type>
            <size>48193</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmI4ZjBmMmU5YWY4MWE2
ZjMyNjBiYzY2NmNhMjZlMTQzNzQzODk5Ny4uYWFiNzEzYTU2NjUxYzkxNzA3ZjRlZTllYzk2NjIz
N2ZmZGUzNWFjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE4LTAyLTA4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFBhc3RpbmcgZnJv
bSBFeGNlbCBubyBsb25nZXIgcHJvdmlkZXMgdGV4dC9odG1sIGRhdGEKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjYzNgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMzcwODcwNjA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWZ0ZXIgcjIyMjY1Niwgd2UgdHJlYXQgaW1hZ2VzIG9uIHRoZSBwYXN0ZWJv
YXJkIGFzIGZpbGVzLiBIb3dldmVyLCB3ZSBhbHNvIGhhdmUgYW4gZXhpc3RpbmcgcG9saWN5IHdo
aWNoIGhpZGVzCisgICAgICAgIHRleHQgZGF0YSAoInRleHQvdXJpLWxpc3QiLCAidGV4dC9odG1s
IiwgInRleHQvcGxhaW4iKSBmcm9tIHRoZSBwYWdlIHdoZW4gZmlsZXMgYXJlIHByZXNlbnQgb24g
dGhlIHBhc3RlYm9hcmQuCisgICAgICAgIFdoZW4gY29weWluZyBhIHRhYmxlLCBNaWNyb3NvZnQg
RXhjZWwgd3JpdGVzIGEgcmVuZGVyaW5nIG9mIHRoZSB0YWJsZSB0byB0aGUgcGFzdGVib2FyZCBh
cyBhbiBpbWFnZS4gVGhpcyBtZWFucworICAgICAgICB0aGF0IHdlJ2xsIGhpZGUgb3RoZXIgZGF0
YSB0eXBlcyAoaW1wb3J0YW50bHksICd0ZXh0L2h0bWwnKSB1cG9uIHBhc3RpbmcsIGV2ZW4gdGhv
dWdoIGltcG9ydGFudCBjbGllbnRzIChzdWNoIGFzCisgICAgICAgIEdvb2dsZSBEb2NzIGFuZCBD
b25mbHVlbmNlKSBkZXBlbmQgb24gdGhlICd0ZXh0L2h0bWwnIGRhdGEgaW4gb3JkZXIgdG8gY29y
cmVjdGx5IGhhbmRsZSB0aGUgcGFzdGUgKHJhdGhlciB0aGFuCisgICAgICAgIHBhc3RlIGFzIGFu
IGltYWdlIG9mIGEgdGFibGUpLgorCisgICAgICAgIFRvIGZpeCB0aGlzLCB3ZSBhZGQgYW4gZXhj
ZXB0aW9uIHRvIHRoZSBEYXRhVHJhbnNmZXIuZ2V0RGF0YSBjb2RlcGF0aCB3aGVuIHRoZSBwYXN0
ZWJvYXJkIGNvbnRhaW5zIGZpbGVzLgorICAgICAgICBJbnN0ZWFkIG9mIGFsd2F5cyByZXR1cm5p
bmcgdGhlIGVtcHR5IHN0cmluZyBmb3IgdGV4dC9odG1sLCB3ZSBzdGlsbCBhbGxvdyBwYXN0ZWJv
YXJkIGFjY2VzcywgYnV0IG9ubHkgcmVhZAorICAgICAgICBmcm9tIGEgbGltaXRlZCBzZXQgb2Yg
cmljaCB0ZXh0IHR5cGVzLCBpLmUuIHdlYiBhcmNoaXZlLCBSVEYoRCksIGFuZCBIVE1MIG1hcmt1
cC4gSW1wb3J0YW50bHksIHRoaXMgcHJldmVudHMKKyAgICAgICAgdXMgZnJvbSBleHBvc2luZyBh
bnkgZmlsZSBwYXRocyB0aGF0IGFwcGVhciBhcyBwbGFpbiB0ZXh0IG9yIFVSTHMgb24gdGhlIHBh
c3RlYm9hcmQuIEp1c3QgYXMgaW4gdGhlIHJlZ3VsYXIKKyAgICAgICAgY29kZXBhdGggZm9yIGdl
dERhdGEoKSwgaWYgdGhlIHBhc3RlYm9hcmQgZGF0YSBjb21lcyBmcm9tIHRoZSBzYW1lIG9yaWdp
biwgd2UgYWxsb3cgdW5zYW5pdGl6ZWQgYWNjZXNzOworICAgICAgICBvdGhlcndpc2UsIHdlIHVz
ZSBXZWJDb250ZW50TWFya3VwUmVhZGVyIHRvIGV4dHJhY3QgbWFya3VwIGZyb20gdGhlIHBhc3Rl
Ym9hcmQuCisKKyAgICAgICAgVGVzdHM6ICBQYXN0ZU1peGVkQ29udGVudC5QYXN0ZUltYWdlQW5k
UGxhaW5UZXh0CisgICAgICAgICAgICAgICAgUGFzdGVNaXhlZENvbnRlbnQuUGFzdGVJbWFnZUFu
ZFdlYkFyY2hpdmUKKyAgICAgICAgICAgICAgICBQYXN0ZU1peGVkQ29udGVudC5QYXN0ZUltYWdl
QW5kSFRNTAorICAgICAgICAgICAgICAgIFBhc3RlTWl4ZWRDb250ZW50LlBhc3RlSW1hZ2VBbmRS
VEYKKyAgICAgICAgICAgICAgICBEYXRhSW50ZXJhY3Rpb25UZXN0cy5EYXRhVHJhbnNmZXJHZXRE
YXRhV2hlbkRyb3BwaW5nSW1hZ2VBbmRNYXJrdXAKKworICAgICAgICBBbHNvIHJlYmFzZWxpbmVk
IHNvbWUgbGF5b3V0IHRlc3RzLCB3aGljaCBjb3ZlciBjaGFuZ2VzIGluIGJlaGF2aW9yIHdoZW4g
ZHJvcHBpbmcgb24gbWFjT1MgYW5kIHBhc3Rpbmcgb24gaU9TLgorCisgICAgICAgICogZG9tL0Rh
dGFUcmFuc2Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmdldERhdGFG
b3JJdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6cmVhZFBhc3Rl
Ym9hcmREYXRhRm9yQmluZGluZ3NSZXNwZWN0aW5nT3JpZ2luIGNvbnN0KToKKworICAgICAgICBG
YWN0b3Igb3V0IGxvZ2ljIGZvciByZWFkaW5nIGZyb20gdGhlIHBhc3RlYm9hcmQgaW50byBhIHBy
aXZhdGUgaGVscGVyLiBUaGlzIGlzIGNhbGxlZCBpbiB0d28gcGxhY2VzIGZyb20KKyAgICAgICAg
Z2V0RGF0YUZvckl0ZW06IGluIHRoZSBub3JtYWwgKGV4aXN0aW5nKSBwYXRoLCBhbmQgaW4gdGhl
IGNhc2Ugd2hlcmUgd2UgYWxsb3cgJ3RleHQvaHRtbCcgdG8gYmUgcmVhZCBkZXNwaXRlCisgICAg
ICAgIGZpbGVzIGFwcGVhcmluZyBpbiB0aGUgcGFzdGVib2FyZC4KKworICAgICAgICBPbmUgaW1w
b3J0YW50IGRpZmZlcmVuY2UgaGVyZSBpcyB0aGF0IHRoaXMgaGVscGVyIG5vdyB0YWtlcyBhIFdl
YkNvbnRlbnRSZWFkaW5nUG9saWN5LCB3aG9zZSBwdXJwb3NlIGlzIHRvCisgICAgICAgIHByZXZl
bnQgcmVhZGluZyBmcm9tIG5vbi1yaWNoLXRleHQgdHlwZXMgd2hlbiBmaWxlcyBhcHBlYXIgaW4g
dGhlIHBhc3RlYm9hcmQuCisKKyAgICAgICAgQW5vdGhlciB0d2VhayBoZXJlIGlzIHRoYXQgd2Ug
bm93IHVzZSBgbG93ZXJjYXNlVHlwZWAgaW5zdGVhZCBvZiB0aGUgb3JpZ2luYWwgKHVuYWRqdXN0
ZWQpIGB0eXBlYCB3aGVuIHJlYWRpbmcKKyAgICAgICAgZnJvbSB0aGUgcGFzdGVib2FyZC4gVGhp
cyBkb2Vzbid0IHNlZW0gdG8gYmUgaW50ZW5kZWQgaW4gdGhlIGZpcnN0IHBsYWNlLgorCisgICAg
ICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnR5cGVzIGNvbnN0KToKKworICAgICAgICBUd2Vh
ayB0aGUgaW1wbGVtZW50YXRpb24gb2YgRGF0YVRyYW5zZmVyLnR5cGVzKCkgaW4gdGhlIGNhc2Ug
d2hlcmUgZmlsZXMgZXhpc3Qgb24gdGhlIHBhc3RlYm9hcmQuIEN1cnJlbnRseSwgd2UKKyAgICAg
ICAgbnVrZSB0aGUgcmVzdWx0IG9mIGBzYWZlVHlwZXNgIGFuZCByZXBsYWNlIGl0IHdpdGggYSBz
aW5nbGUgVmVjdG9yIGNvbnRhaW5pbmcgIkZpbGVzIiwgYW5kIHRoZW4gYWRkCisgICAgICAgICJ0
ZXh0L3VyaS1saXN0IiBpZiBpdCBleGlzdHMgb24gdGhlIHBhc3RlYm9hcmQuIEluc3RlYWQsIHdv
cmsgYmFja3dhcmRzLCBhZGRpbmcgdGhlICJGaWxlcyIgdHlwZSBhbmQgcmVtb3ZpbmcKKyAgICAg
ICAgInRleHQvcGxhaW4iLiBJIG9wdGVkIGZvciB0aGlzIGJlY2F1c2UgaXQgc2VlbXMgbGVzcyBo
YWNreSB0aGFuIGFwcGVuZGluZyAidGV4dC9odG1sIiBzZXBhcmF0ZWx5LCBvbiB0b3Agb2YKKyAg
ICAgICAgInRleHQvdXJpLWxpc3QiLgorCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKworICAgICAgICBJbnRyb2R1Y2UgV2Vi
Q29udGVudFJlYWRpbmdQb2xpY3ksIHdoaWNoIGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB3ZSBz
aG91bGQgbGltaXQgd2ViIGNvbnRlbnQgcmVhZGluZyBmcm9tIHRoZQorICAgICAgICBwYXN0ZWJv
YXJkIHRvIG9ubHkgcmljaCB0ZXh0IHR5cGVzIHVwb24gcGFzdGUgb3IgZHJvcC4gTm9ybWFsbHks
IHdlIGFsbG93IGFsbCB0eXBlcyB0byBiZSByZWFkIGFzIHdlYiBjb250ZW50CisgICAgICAgICg6
OlJlYWRGcm9tQW55VHlwZSksIGJ1dCB3aGVuIGZpbGVzIGFwcGVhciBvbiB0aGUgcGFzdGVib2Fy
ZCwgd2UgZm9yY2UgT25seVJlYWRGcm9tUmljaFRleHRUeXBlcyB0byBlbnN1cmUgdGhhdAorICAg
ICAgICBubyBvdGhlciB0eXBlcyBjYW4gdW5pbnRlbnRpb25hbGx5IGJlIHJlYWQgYmFjayBhcyB3
ZWIgY29udGVudC4KKworICAgICAgICAqIHBsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbToKKworICAgICAgICBUZWFjaCBQ
YXN0ZWJvYXJkIChvbiBpT1MpIHRvIHJlc3BlY3QgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kuCisK
KyAgICAgICAgKFdlYkNvcmU6OnR5cGVJc0FwcHJvcHJpYXRlRm9yV2ViQ29udGVudFJlYWRpbmdQ
b2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAgIChX
ZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMpOgorICAgICAg
ICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tOgorCisgICAgICAgIFRlYWNoIFBhc3Rl
Ym9hcmQgKG9uIG1hY09TKSB0byByZXNwZWN0IFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LgorCisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKwogMjAxOC0wMi0wOCAgWW91ZW5u
IEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAgICAgICAgQ29yZUF1ZGlvQ2FwdHVyZVNv
dXJjZUlPU0xpc3RlbmVyIHNob3VsZCBiZSBhIFdlYlByb2Nlc3Mgc2luZ2xldG9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4IGMxMDk0MjNlOWM5ZGUyMGM4MjZiMGU3N2Q4Zjk2
ZGY4NDMyZmQ2ODcuLjdlNjU5Yzc2YTllZDI3YWU4ZjAxYjc2ZTA3NzEwYzNlYmQzYmIwZGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCkBAIC0xNTQsOSArMTU0LDI2IEBAIFN0cmlu
ZyBEYXRhVHJhbnNmZXI6OmdldERhdGFGb3JJdGVtKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3Qg
U3RyaW5nJiB0eXBlKSBjb25zCiAgICAgICAgICAgICBpZiAoUGFzdGVib2FyZDo6Y2FuRXhwb3Nl
VVJMVG9ET01XaGVuUGFzdGVib2FyZENvbnRhaW5zRmlsZXModXJsU3RyaW5nKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gdXJsU3RyaW5nOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKGxvd2Vy
Y2FzZVR5cGUgPT0gInRleHQvaHRtbCIgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS5jdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQoKSkgeworICAgICAgICAgICAg
Ly8gSWYgdGhlIHBhc3RlYm9hcmQgY29udGFpbnMgZmlsZXMgYW5kIHRoZSBwYWdlIHJlcXVlc3Rz
ICd0ZXh0L2h0bWwnLCB3ZSBvbmx5IHJlYWQgZnJvbSByaWNoIHRleHQgdHlwZXMgdG8gcHJldmVu
dCBmaWxlCisgICAgICAgICAgICAvLyBwYXRocyBmcm9tIGxlYWtpbmcgKGUuZy4gZnJvbSBwbGFp
biB0ZXh0IGRhdGEgb24gdGhlIHBhc3RlYm9hcmQpLiBXZSByZXF1aXJlIGN1c3RvbSBwYXN0ZWJv
YXJkIGRhdGEgZm9yIHRoaXMgYmVjYXVzZQorICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBlbnN1
cmUgdGhhdCBlaXRoZXI6CisgICAgICAgICAgICAvLyAgIC0gYWxsIG1hcmt1cCByZXBvcnRlZCB0
byB0aGUgcGFnZSB1bmRlcmdvZXMgc2FuaXRpemF0aW9uLCBvcgorICAgICAgICAgICAgLy8gICAt
IHRoZSBjdXN0b20gcGFzdGVib2FyZCBkYXRhJ3Mgb3JpZ2luIG1hdGNoZXMgdGhlIGRvY3VtZW50
IG9yaWdpbgorICAgICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IGlmIGN1c3RvbSBwYXN0ZWJv
YXJkIGRhdGEgaXMgZGlzYWJsZWQgYW5kIHRoZXJlIGlzIGEgZmlsZSBvbiB0aGUgcGFzdGVib2Fy
ZCwgd2UgcmV2ZXJ0IHRvIG91ciBsZWdhY3kKKyAgICAgICAgICAgIC8vIGJlaGF2aW9yIG9mIHNp
bXBseSByZXR1cm5pbmcgYW4gZW1wdHkgc3RyaW5nLgorICAgICAgICAgICAgcmV0dXJuIHJlYWRQ
YXN0ZWJvYXJkRGF0YUZvckJpbmRpbmdzUmVzcGVjdGluZ09yaWdpbihkb2N1bWVudCwgbG93ZXJj
YXNlVHlwZSwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3k6Ok9ubHlSZWFkRnJvbVJpY2hUZXh0VHlw
ZXMpOworICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKKyAgICByZXR1
cm4gcmVhZFBhc3RlYm9hcmREYXRhRm9yQmluZGluZ3NSZXNwZWN0aW5nT3JpZ2luKGRvY3VtZW50
LCBsb3dlcmNhc2VUeXBlLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeTo6UmVhZEZyb21BbnlUeXBl
KTsKK30KKworU3RyaW5nIERhdGFUcmFuc2Zlcjo6cmVhZFBhc3RlYm9hcmREYXRhRm9yQmluZGlu
Z3NSZXNwZWN0aW5nT3JpZ2luKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBsb3dl
cmNhc2VUeXBlLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSBwb2xpY3kpIGNvbnN0Cit7CiAgICAg
aWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmN1c3RvbVBhc3Rl
Ym9hcmREYXRhRW5hYmxlZCgpKQogICAgICAgICByZXR1cm4gbV9wYXN0ZWJvYXJkLT5yZWFkU3Ry
aW5nKGxvd2VyY2FzZVR5cGUpOwogCkBAIC0xNzAsMTUgKzE4NywxNSBAQCBTdHJpbmcgRGF0YVRy
YW5zZmVyOjpnZXREYXRhRm9ySXRlbShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYg
dHlwZSkgY29ucwogICAgIGlmICghUGFzdGVib2FyZDo6aXNTYWZlVHlwZUZvckRPTVRvUmVhZEFu
ZFdyaXRlKGxvd2VyY2FzZVR5cGUpKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgaWYgKCFp
czxTdGF0aWNQYXN0ZWJvYXJkPigqbV9wYXN0ZWJvYXJkKSAmJiB0eXBlID09ICJ0ZXh0L2h0bWwi
KSB7CisgICAgaWYgKCFpczxTdGF0aWNQYXN0ZWJvYXJkPigqbV9wYXN0ZWJvYXJkKSAmJiBsb3dl
cmNhc2VUeXBlID09ICJ0ZXh0L2h0bWwiKSB7CiAgICAgICAgIGlmICghZG9jdW1lbnQuZnJhbWUo
KSkKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIFdlYkNvbnRlbnRNYXJrdXBSZWFk
ZXIgcmVhZGVyIHsgKmRvY3VtZW50LmZyYW1lKCkgfTsKLSAgICAgICAgbV9wYXN0ZWJvYXJkLT5y
ZWFkKHJlYWRlcik7CisgICAgICAgIG1fcGFzdGVib2FyZC0+cmVhZChyZWFkZXIsIHBvbGljeSk7
CiAgICAgICAgIHJldHVybiByZWFkZXIubWFya3VwOwogICAgIH0KIAotICAgIHJldHVybiBtX3Bh
c3RlYm9hcmQtPnJlYWRTdHJpbmcodHlwZSk7CisgICAgcmV0dXJuIG1fcGFzdGVib2FyZC0+cmVh
ZFN0cmluZyhsb3dlcmNhc2VUeXBlKTsKIH0KIAogU3RyaW5nIERhdGFUcmFuc2Zlcjo6Z2V0RGF0
YShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29uc3QKQEAgLTI4Mywy
MCArMzAwLDIwIEBAIFZlY3RvcjxTdHJpbmc+IERhdGFUcmFuc2Zlcjo6dHlwZXMoQWRkRmlsZXNU
eXBlIGFkZEZpbGVzVHlwZSkgY29uc3QKICAgICB9CiAKICAgICBhdXRvIHNhZmVUeXBlcyA9IG1f
cGFzdGVib2FyZC0+dHlwZXNTYWZlRm9yQmluZGluZ3MobV9vcmlnaW5JZGVudGlmaWVyKTsKKyAg
ICBBU1NFUlQoIXNhZmVUeXBlcy5jb250YWlucygiRmlsZXMiKSk7CisKICAgICBib29sIGhhc0Zp
bGVCYWNrZWRJdGVtID0gbV9pdGVtTGlzdCAmJiBtX2l0ZW1MaXN0LT5oYXNJdGVtcygpICYmIG5v
dEZvdW5kICE9IG1faXRlbUxpc3QtPml0ZW1zKCkuZmluZE1hdGNoaW5nKFtdIChjb25zdCBhdXRv
JiBpdGVtKSB7CiAgICAgICAgIHJldHVybiBpdGVtLT5pc0ZpbGUoKTsKICAgICB9KTsKIAogICAg
IGlmIChoYXNGaWxlQmFja2VkSXRlbSB8fCBtX3Bhc3RlYm9hcmQtPmNvbnRhaW5zRmlsZXMoKSkg
ewotICAgICAgICBWZWN0b3I8U3RyaW5nPiB0eXBlczsKICAgICAgICAgaWYgKGFkZEZpbGVzVHlw
ZSA9PSBBZGRGaWxlc1R5cGU6OlllcykKLSAgICAgICAgICAgIHR5cGVzLmFwcGVuZChBU0NJSUxp
dGVyYWwoIkZpbGVzIikpOwotICAgICAgICBpZiAoc2FmZVR5cGVzLmNvbnRhaW5zKCJ0ZXh0L3Vy
aS1saXN0IikpCi0gICAgICAgICAgICB0eXBlcy5hcHBlbmQoQVNDSUlMaXRlcmFsKCJ0ZXh0L3Vy
aS1saXN0IikpOwotICAgICAgICByZXR1cm4gdHlwZXM7CisgICAgICAgICAgICBzYWZlVHlwZXMu
YXBwZW5kKEFTQ0lJTGl0ZXJhbCgiRmlsZXMiKSk7CisgICAgICAgIC8vIFdlIGRvbid0IGV4cG9z
ZSAndGV4dC9wbGFpbicgdG8gdGhlIHBhZ2UgaWYgdGhlIHBhc3RlYm9hcmQgY29udGFpbnMgZmls
ZXMsIGJlY2F1c2UgcGxhaW4gdGV4dCBkYXRhIG1heSBjb250YWluIGZpbGUgcGF0aHMuCisgICAg
ICAgIHNhZmVUeXBlcy5yZW1vdmVGaXJzdCgidGV4dC9wbGFpbiIpOworICAgICAgICByZXR1cm4g
c2FmZVR5cGVzOwogICAgIH0KIAotICAgIEFTU0VSVCghc2FmZVR5cGVzLmNvbnRhaW5zKCJGaWxl
cyIpKTsKICAgICByZXR1cm4gc2FmZVR5cGVzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRGF0YVRyYW5zZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVy
LmgKaW5kZXggMzFkYzc5OWZjN2VmN2M3MDM3Njc0Nzc1NDdjNGNiMzQwZTQxMDIzNC4uN2ZkNWEx
YTA2ZjI2OWExNjlkZjE0NzA3ZDgxZTA3NjkxNjFkOWUwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXIuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3MgRmlsZUxpc3Q7
CiBjbGFzcyBGaWxlOwogY2xhc3MgUGFzdGVib2FyZDsKK2VudW0gY2xhc3MgV2ViQ29udGVudFJl
YWRpbmdQb2xpY3k7CiAKIGNsYXNzIERhdGFUcmFuc2ZlciA6IHB1YmxpYyBSZWZDb3VudGVkPERh
dGFUcmFuc2Zlcj4gewogcHVibGljOgpAQCAtMTIxLDYgKzEyMiw3IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBmb3JGaWxlRHJhZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAorICAg
IFN0cmluZyByZWFkUGFzdGVib2FyZERhdGFGb3JCaW5kaW5nc1Jlc3BlY3RpbmdPcmlnaW4oRG9j
dW1lbnQmLCBjb25zdCBTdHJpbmcmIGxvd2VyY2FzZVR5cGUsIFdlYkNvbnRlbnRSZWFkaW5nUG9s
aWN5KSBjb25zdDsKICAgICBib29sIHNob3VsZFN1cHByZXNzR2V0QW5kU2V0RGF0YVRvQXZvaWRF
eHBvc2luZ0ZpbGVQYXRocygpIGNvbnN0OwogCiAgICAgZW51bSBjbGFzcyBBZGRGaWxlc1R5cGUg
eyBObywgWWVzIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXggZTkxN2Nj
MzljNTQ3MzI0ODcwZGY5NWQ4Y2NjZWJiYjBlMmY3MTE3Ni4uOGIzYThiNDExY2QwYzBjNzM0ODhj
NTc2Yjg1MjRhYzgwMThiZjk2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
UGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaApA
QCAtNjQsNiArNjQsNyBAQCBjbGFzcyBSYW5nZTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7CiBjbGFz
cyBTaGFyZWRCdWZmZXI7CiAKK2VudW0gY2xhc3MgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kgeyBS
ZWFkRnJvbUFueVR5cGUsIE9ubHlSZWFkRnJvbVJpY2hUZXh0VHlwZXMgfTsKIGVudW0gU2hvdWxk
U2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yRGF0YVRyYW5zZmVyIHsgRGVmYXVsdFNlbGVjdGVkVGV4
dFR5cGUsIEluY2x1ZGVJbWFnZUFsdFRleHRGb3JEYXRhVHJhbnNmZXIgfTsKIAogLy8gRm9yIHdy
aXRpbmcgdG8gdGhlIHBhc3RlYm9hcmQuIEdlbmVyYWxseSBzb3J0ZWQgd2l0aCB0aGUgcmljaGVz
dCBmb3JtYXRzIG9uIHRvcC4KQEAgLTIwOSw3ICsyMTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSk7CiAKICAgICB2
aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0Jik7Ci0g
ICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRS
ZWFkZXImKTsKKyAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0ZWJvYXJk
V2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5ID0gV2ViQ29udGVudFJl
YWRpbmdQb2xpY3k6OlJlYWRGcm9tQW55VHlwZSk7CiAgICAgdmlydHVhbCBXRUJDT1JFX0VYUE9S
VCB2b2lkIHJlYWQoUGFzdGVib2FyZEZpbGVSZWFkZXImKTsKIAogICAgIHZpcnR1YWwgV0VCQ09S
RV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJik7CkBAIC0yNzMsNyArMjc0
LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1MpCiAgICAgYm9vbCByZXNw
ZWN0c1VUSUZpZGVsaXRpZXMoKSBjb25zdDsKLSAgICB2b2lkIHJlYWRSZXNwZWN0aW5nVVRJRmlk
ZWxpdGllcyhQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYpOworICAgIHZvaWQgcmVhZFJlc3Bl
Y3RpbmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVu
dFJlYWRpbmdQb2xpY3kpOwogCiAgICAgZW51bSBjbGFzcyBSZWFkZXJSZXN1bHQgewogICAgICAg
ICBSZWFkVHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bh
c3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaApp
bmRleCA2YTM5MzRkYTQ2ZDhiZjM5ZWNlMDI1NGJjN2M1ZDk5NzhkOThkZDM1Li4wMDdlNDNhMThl
YzU3ZjdiNzBjOWI0ZjAzNGQ3Yjc1MGRhN2M0YjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU3RhdGljUGFzdGVib2FyZC5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CiAKICAgICB2b2lkIHJlYWQoUGFzdGVi
b2FyZFBsYWluVGV4dCYpIGZpbmFsIHsgfQotICAgIHZvaWQgcmVhZChQYXN0ZWJvYXJkV2ViQ29u
dGVudFJlYWRlciYpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVhZChQYXN0ZWJvYXJkV2ViQ29udGVu
dFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5KSBmaW5hbCB7IH0KIAogICAgIHZvaWQg
d3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYpIGZpbmFsIHsgfQogICAgIHZvaWQgd3JpdGUoY29u
c3QgUGFzdGVib2FyZEltYWdlJikgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4IGI4ODc5ODQ3NmZjY2U1MDMyZWQ4YzVlZDg2OGRl
YTBkOWZjNjFmNDUuLjFlOGQyNzNkYmRmY2MyMTkzMzg0NjY0M2EyMmEzZTRkNmQ4NTJhMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC0xNjMs
NiArMTYzLDExIEBAIHN0YXRpYyBOU0FycmF5KiBzdXBwb3J0ZWRJbWFnZVR5cGVzKCkKICAgICBy
ZXR1cm4gQFsoaWQpa1VUVHlwZVBORywgKGlkKWtVVFR5cGVUSUZGLCAoaWQpa1VUVHlwZUpQRUcs
IChpZClrVVRUeXBlR0lGXTsKIH0KIAorc3RhdGljIGJvb2wgdHlwZUlzQXBwcm9wcmlhdGVGb3JX
ZWJDb250ZW50UmVhZGluZ1BvbGljeShOU1N0cmluZyAqdHlwZSwgV2ViQ29udGVudFJlYWRpbmdQ
b2xpY3kgcG9saWN5KQoreworICAgIHJldHVybiBwb2xpY3kgPT0gV2ViQ29udGVudFJlYWRpbmdQ
b2xpY3k6OlJlYWRGcm9tQW55VHlwZSB8fCBbdHlwZSBpc0VxdWFsVG9TdHJpbmc6V2ViQXJjaGl2
ZVBib2FyZFR5cGVdIHx8IFt0eXBlIGlzRXF1YWxUb1N0cmluZzooTlNTdHJpbmcgKilrVVRUeXBl
SFRNTF0gfHwgW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihOU1N0cmluZyAqKWtVVFR5cGVSVEZdIHx8
IFt0eXBlIGlzRXF1YWxUb1N0cmluZzooTlNTdHJpbmcgKilrVVRUeXBlRmxhdFJURkRdOworfQor
CiBQYXN0ZWJvYXJkOjpSZWFkZXJSZXN1bHQgUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9hcmRXZWJD
b250ZW50RGF0YUZvclR5cGUoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgUGFz
dGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwgTlNTdHJpbmcgKnR5cGUsIGludCBpdGVtSW5kZXgp
CiB7CiAgICAgaWYgKFt0eXBlIGlzRXF1YWxUb1N0cmluZzpXZWJBcmNoaXZlUGJvYXJkVHlwZV0p
IHsKQEAgLTIyNSwxMSArMjMwLDExIEBAIFBhc3RlYm9hcmQ6OlJlYWRlclJlc3VsdCBQYXN0ZWJv
YXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShQYXN0ZWJvCiAgICAgcmV0
dXJuIFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6
cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyKQordm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFdlYkNvbnRlbnRSZWFk
aW5nUG9saWN5IHBvbGljeSkKIHsKICAgICByZWFkZXIuY29udGVudE9yaWdpbiA9IHJlYWRPcmln
aW4oKTsKICAgICBpZiAocmVzcGVjdHNVVElGaWRlbGl0aWVzKCkpIHsKLSAgICAgICAgcmVhZFJl
c3BlY3RpbmdVVElGaWRlbGl0aWVzKHJlYWRlcik7CisgICAgICAgIHJlYWRSZXNwZWN0aW5nVVRJ
RmlkZWxpdGllcyhyZWFkZXIsIHBvbGljeSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTI0NSw5ICsyNTAsMTQgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250
ZW50UmVhZGVyJiByZWFkZXIpCiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlck9mSXRl
bXM7IGkrKykgewogICAgICAgICBmb3IgKGludCB0eXBlSW5kZXggPSAwOyB0eXBlSW5kZXggPCBu
dW1iZXJPZlR5cGVzOyB0eXBlSW5kZXgrKykgewotICAgICAgICAgICAgYXV0byBpdGVtUmVzdWx0
ID0gcmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZvclR5cGUocmVhZGVyLCBzdHJhdGVneSwg
W3R5cGVzIG9iamVjdEF0SW5kZXg6dHlwZUluZGV4XSwgaSk7CisgICAgICAgICAgICBOU1N0cmlu
ZyAqdHlwZSA9IFt0eXBlcyBvYmplY3RBdEluZGV4OnR5cGVJbmRleF07CisgICAgICAgICAgICBp
ZiAoIXR5cGVJc0FwcHJvcHJpYXRlRm9yV2ViQ29udGVudFJlYWRpbmdQb2xpY3kodHlwZSwgcG9s
aWN5KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgYXV0byBpdGVt
UmVzdWx0ID0gcmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZvclR5cGUocmVhZGVyLCBzdHJh
dGVneSwgdHlwZSwgaSk7CiAgICAgICAgICAgICBpZiAoaXRlbVJlc3VsdCA9PSBSZWFkZXJSZXN1
bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseSkKICAgICAgICAgICAgICAgICByZXR1
cm47CisKICAgICAgICAgICAgIGlmIChpdGVtUmVzdWx0ID09IFJlYWRlclJlc3VsdDo6UmVhZFR5
cGUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTI2MiwxNCArMjcyLDE0
IEBAIGJvb2wgUGFzdGVib2FyZDo6cmVzcGVjdHNVVElGaWRlbGl0aWVzKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9wYXN0ZWJvYXJkTmFtZSA9PSAiZGF0YSBpbnRlcmFjdGlvbiBwYXN0ZWJvYXJkIjsK
IH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVi
b2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlcikKK3ZvaWQgUGFzdGVib2FyZDo6cmVhZFJlc3Bl
Y3RpbmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFdl
YkNvbnRlbnRSZWFkaW5nUG9saWN5IHBvbGljeSkKIHsKICAgICBBU1NFUlQocmVzcGVjdHNVVElG
aWRlbGl0aWVzKCkpOwogICAgIGF1dG8mIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygp
LT5wYXN0ZWJvYXJkU3RyYXRlZ3koKTsKICAgICBmb3IgKE5TVUludGVnZXIgaW5kZXggPSAwLCBu
dW1iZXJPZkl0ZW1zID0gc3RyYXRlZ3kuZ2V0UGFzdGVib2FyZEl0ZW1zQ291bnQobV9wYXN0ZWJv
YXJkTmFtZSk7IGluZGV4IDwgbnVtYmVyT2ZJdGVtczsgKytpbmRleCkgewogI2lmIEVOQUJMRShB
VFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgICAgIGF1dG8gaW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0
aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIG1fcGFzdGVib2FyZE5hbWUpOwotICAgICAgICBib29s
IGNhblJlYWRBdHRhY2htZW50ID0gUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQoKSAmJiAhaW5mby5wYXRoRm9yRmlsZVVwbG9h
ZC5pc0VtcHR5KCk7CisgICAgICAgIGJvb2wgY2FuUmVhZEF0dGFjaG1lbnQgPSBwb2xpY3kgPT0g
V2ViQ29udGVudFJlYWRpbmdQb2xpY3k6OlJlYWRGcm9tQW55VHlwZSAmJiBSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpICYm
ICFpbmZvLnBhdGhGb3JGaWxlVXBsb2FkLmlzRW1wdHkoKTsKICAgICAgICAgaWYgKGNhblJlYWRB
dHRhY2htZW50ICYmIGluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUgPT0gUGFzdGVib2Fy
ZEl0ZW1QcmVzZW50YXRpb25TdHlsZTo6QXR0YWNobWVudCkgewogICAgICAgICAgICAgcmVhZGVy
LnJlYWRGaWxlUGF0aHMoeyBpbmZvLnBhdGhGb3JGaWxlVXBsb2FkIH0pOwogICAgICAgICAgICAg
Y29udGludWU7CkBAIC0yODEsNiArMjkxLDkgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkUmVzcGVj
dGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlcikKICAg
ICAgICAgc3RyYXRlZ3kuZ2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgodHlwZXNGb3JJ
dGVtSW5PcmRlck9mRmlkZWxpdHksIGluZGV4LCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICAgICAg
UmVhZGVyUmVzdWx0IHJlc3VsdCA9IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiAgICAg
ICAgIGZvciAoYXV0byYgdHlwZSA6IHR5cGVzRm9ySXRlbUluT3JkZXJPZkZpZGVsaXR5KSB7Cisg
ICAgICAgICAgICBpZiAoIXR5cGVJc0FwcHJvcHJpYXRlRm9yV2ViQ29udGVudFJlYWRpbmdQb2xp
Y3kodHlwZSwgcG9saWN5KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAg
ICAgcmVzdWx0ID0gcmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZvclR5cGUocmVhZGVyLCBz
dHJhdGVneSwgdHlwZSwgaW5kZXgpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBSZWFkZXJS
ZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2Fy
ZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmlu
ZGV4IGMyNmM5MDRkYjhiNDEwMTYyZWI3NzllNGRiNTQ5OTUwZGU0MTU4ZGEuLjY4ZmZmOWUwOTc2
Y2EyYmFkNjIyYTcxYzM3YmU5NDQ0YWM5M2I4YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBQYXN0ZWJv
YXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQpCiAgICAgdGV4dC5pc1VSTCA9ICF0
ZXh0LnRleHQuaXNOdWxsKCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJk
V2ViQ29udGVudFJlYWRlciYgcmVhZGVyKQordm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9h
cmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5IHBvbGlj
eSkKIHsKICAgICBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRl
Z2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKTsKIApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQg
UGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyKQogICAg
ICAgICB9CiAgICAgfQogCi0gICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lGaWxl
bmFtZXNQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKKyAgICBpZiAocG9saWN5ID09IFdlYkNvbnRlbnRS
ZWFkaW5nUG9saWN5OjpSZWFkRnJvbUFueVR5cGUgJiYgdHlwZXMuY29udGFpbnMoU3RyaW5nKGxl
Z2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCkpKSkgewogICAgICAgICBWZWN0b3I8U3RyaW5n
PiBwYXRoczsKICAgICAgICAgc3RyYXRlZ3kuZ2V0UGF0aG5hbWVzRm9yVHlwZShwYXRocywgbGVn
YWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAgICAg
IGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkgfHwgcmVhZGVyLnJlYWRGaWxlUGF0
aHMocGF0aHMpKQpAQCAtMzc0LDYgKzM3NCw5IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0
ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyKQogICAgICAgICB9CiAgICAgfQogCisgICAg
aWYgKHBvbGljeSA9PSBXZWJDb250ZW50UmVhZGluZ1BvbGljeTo6T25seVJlYWRGcm9tUmljaFRl
eHRUeXBlcykKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmlu
ZyhsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIGlmIChSZWZQdHI8U2hh
cmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVneS5idWZmZXJGb3JUeXBlKGxlZ2FjeVRJRkZQYXN0
ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lKSkgewogICAgICAgICAgICAgaWYgKG1fY2hh
bmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZEltYWdlKGJ1ZmZlci5yZWxl
YXNlTm9uTnVsbCgpLCBBU0NJSUxpdGVyYWwoImltYWdlL3RpZmYiKSkpCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGVmZDQ2MDVhNGVlY2Q5YWJm
ZGI0N2ZlOGRjZjYwOWRmNTFlZjFhZi4uYWQ0NTIwNTA1MmM4MzcyMDRkNWQ1YjZhYTEyMjY1NDc0
NTE2NzZiYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQ0IEBACisyMDE4LTAyLTA4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNp
ZWhAYXBwbGUuY29tPgorCisgICAgICAgIFBhc3RpbmcgZnJvbSBFeGNlbCBubyBsb25nZXIgcHJv
dmlkZXMgdGV4dC9odG1sIGRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4MjYzNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzcwODcwNjA+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIG5ldyBB
UEkgdGVzdHMgdG8gZXhlcmNpc2UgcGFzdGluZyBpbWFnZXMgd2l0aCB2YXJpb3VzIG90aGVyIGNv
bnRlbnQgdHlwZXMgb24gbWFjT1MsIGFuZCB3aGVuIGRyb3BwaW5nIGltYWdlcworICAgICAgICBh
bmQgSFRNTCBtYXJrdXAgb24gaU9TLiBTZWUgdGhlIFdlYkNvcmUgQ2hhbmdlTG9nIGZvciBtb3Jl
IGRldGFpbC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvRGF0YVRyYW5zZmVyLmh0bWw6IEFkZGVkLgorCisgICAgICAgIEFkZCBhIG5ldyBBUEkg
dGVzdCBoYXJuZXNzIHRoYXQgZHVtcHMgdmFyaW91cyBiaXRzIG9mIGluZm9ybWF0aW9uIGFib3V0
IGEgRGF0YVRyYW5zZmVyIHVwb24gcGFzdGUgYW5kIGRyb3AuCisgICAgICAgIFdoaWxlIHNvbWV3
aGF0IHNpbWlsYXIgdG8gc29tZSBleGlzdGluZyBoYXJuZXNzZXMsIHRoaXMgbWFrZXMgYSBkaXN0
aW5jdGlvbiBiZXR3ZWVuIHRoZSByYXcgSFRNTCBkYXRhIG9uIHRoZQorICAgICAgICBwYXN0ZWJv
YXJkIGFuZCB0aGUgYWN0dWFsIHJlc3VsdCBvZiBpbnNlcnRpbmcgc2FpZCBIVE1MIGludG8gdGhl
IERPTS4gVGhpcyBhbGxvd3MgdXMgdG8gY2hlY2sgdGhhdCB0aGUgSFRNTCBoYXMKKyAgICAgICAg
YmVlbiBzYW5pdGl6ZWQsIHdoaWxlIG1ha2luZyBjaGVja3MgZm9yIHRoZSBhY3R1YWwgY29udGVu
dCBvZiB0aGUgSFRNTCByb2J1c3QgYWdhaW5zdCBpbmxpbmUgc3R5bGUgY2hhbmdlcy4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVJbWFnZS5tbToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlTWl4ZWRDb250ZW50
Lm1tOiBBZGRlZC4KKworICAgICAgICBBZGQgYSBuZXcgdGVzdCBzdWl0ZSB0byBleGVyY2lzZSBw
YXN0aW5nIG1peGVkIGNvbnRlbnQgdHlwZXMuIEluIHRoZXNlIHRlc3QgY2FzZXMsIHdlIGhhdmUg
YSBjb21iaW5hdGlvbiBvZgorICAgICAgICBmaWxlcyBhbmQgcmljaCB0ZXh0LgorCisgICAgICAg
IChpbWFnZVBhdGgpOgorICAgICAgICAod3JpdGVUeXBlc0FuZERhdGFUb1Bhc3RlYm9hcmQpOgor
CisgICAgICAgIEFkZCBhIGhlbHBlciB0byB3cml0ZSBhIHZhci1hcmcgbGlzdCBvZiBjb250ZW50
IHR5cGVzIGFuZCBkYXRhIHRvIHRoZSBnZW5lcmFsIE5TUGFzdGVib2FyZC4KKworICAgICAgICAo
c2V0VXBXZWJWaWV3KToKKyAgICAgICAgKG1hcmt1cFN0cmluZyk6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50
ZXJhY3Rpb25UZXN0cy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RJY29uSW1hZ2VE
YXRhKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgorCisgICAgICAgIE1vdmUgYSBwcml2YXRlIGRl
Y2xhcmF0aW9uIG9mIC1bV0tXZWJWaWV3IHBhc3RlOl0gb3V0IHRvIFRlc3RXS1dlYlZpZXcuaCwg
c28gdGhhdCBpdCBjYW4gYmUgc2hhcmVkIGFjcm9zcworICAgICAgICBtdWx0aXBsZSB0ZXN0cy4g
Q3VycmVudGx5LCBpdCBvbmx5IHJlc2lkZXMgaW4gUGFzdGVJbWFnZS5tbSwgYnV0IEkgbmVlZCBp
dCBpbiBQYXN0ZU1peGVkQ29udGVudC5tbSBhcyB3ZWxsLgorCiAyMDE4LTAyLTA4ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVGhlcmUgc2hvdWxkIGJlIGEgd2F5
IHRvIGRpc2FibGUgW092ZXJyaWRlQnVpbHRpbnNdIGJlaGF2aW9yIGluIGEgZ2l2ZW4gRE9NV3Jh
cHBlcldvcmxkCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNhZjhkMjRhMWRkYjdmZjFmZWZh
OTI1OWE4YWI5MmY1NWNiODY2YmUuLmEyYzc1MTY4YzQzZTk3NzEyYTQ5NDM0YTA0ZTEwZmY3MWI5
YTg0YWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NDEsNiArNzQxLDggQEAKIAkJRjQ0
RDA2NEExRjM5NjJGMjAwMUEwRTI5IC8qIEVkaXRpbmdUZXN0SGFybmVzcy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NEQwNjQ5MUYzOTYyRTMwMDFB
MEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3MubW0gKi87IH07CiAJCUY0NTEyRTEzMUY2MEM0NDYw
MEJCMzY5RSAvKiBEYXRhVHJhbnNmZXJJdGVtLWdldEFzRW50cnkuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDUxMkUxMjFGNjBDNDM0
MDBCQjM2OUUgLyogRGF0YVRyYW5zZmVySXRlbS1nZXRBc0VudHJ5Lmh0bWwgKi87IH07CiAJCUY0
NTM4RUY3MUU4NDczRTYwMEI1Qzk1MyAvKiBsYXJnZS1yZWQtc3F1YXJlLnBuZyBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDUzOEVGMDFFODQ2
QjQxMDBCNUM5NTMgLyogbGFyZ2UtcmVkLXNxdWFyZS5wbmcgKi87IH07CisJCUY0NTdBOUI4MjAy
RDVDREMwMEY3RTlENSAvKiBQYXN0ZU1peGVkQ29udGVudC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NTdBOUI2MjAyRDVDREMwMEY3RTlENSAvKiBQ
YXN0ZU1peGVkQ29udGVudC5tbSAqLzsgfTsKKwkJRjQ1N0E5RDYyMDJENjhBRjAwRjdFOUQ1IC8q
IERhdGFUcmFuc2Zlci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEY0NTdBOUIzMjAyRDUzNTMwMEY3RTlENSAvKiBEYXRhVHJhbnNmZXIu
aHRtbCAqLzsgfTsKIAkJRjQ1QjYzRkIxRjE5N0Y0QTAwOUQzOEI5IC8qIGltYWdlLW1hcC5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
NUI2M0ZBMUYxOTdGMzMwMDlEMzhCOSAvKiBpbWFnZS1tYXAuaHRtbCAqLzsgfTsKIAkJRjQ1QjYz
RkUxRjE5RDQxMDAwOUQzOEI5IC8qIEFjdGlvblNoZWV0VGVzdHMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDVCNjNGQzFGMTlENDEwMDA5RDM4Qjkg
LyogQWN0aW9uU2hlZXRUZXN0cy5tbSAqLzsgfTsKIAkJRjQ2ODQ5QkUxRUVGNThFNDAwQjkzN0ZF
IC8qIFVJUGFzdGVib2FyZFRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjQ2ODQ5QkQxRUVGNThFNDAwQjkzN0ZFIC8qIFVJUGFzdGVib2FyZFRl
c3RzLm1tICovOyB9OwpAQCAtODk0LDYgKzg5Niw3IEBACiAJCQkJRjRBQjU3OEExRjY1MTY1NDAw
REIwREExIC8qIGN1c3RvbS1kcmFnZ2FibGUtZGl2Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CiAJCQkJMjkwRjQyNzUxNzJBMjIxQzAwOTM5RkYwIC8qIGN1c3RvbS1wcm90b2NvbC1zeW5jLXho
ci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0ODZCMUQwMUY2Nzk1MjMwMEYzNEJE
RCAvKiBEYXRhVHJhbnNmZXItc2V0RHJhZ0ltYWdlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CisJCQkJRjQ1N0E5RDYyMDJENjhBRjAwRjdFOUQ1IC8qIERhdGFUcmFuc2Zlci5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCUY0NTEyRTEzMUY2MEM0NDYwMEJCMzY5RSAvKiBEYXRhVHJh
bnNmZXJJdGVtLWdldEFzRW50cnkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDMDdF
NkNCMjEzRkQ3MzkzMDAzOEIyMkIgLyogZGV2aWNlUGl4ZWxSYXRpby5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCTA3OTlDMzRCMUVCQTMzMDEwMDNCNzUzMiAvKiBkaXNhYmxlR2V0VXNl
ck1lZGlhLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xODYyLDYgKzE4NjUsOCBAQAog
CQlGNDREMDY0OTFGMzk2MkUzMDAxQTBFMjkgLyogRWRpdGluZ1Rlc3RIYXJuZXNzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRWRpdGluZ1Rlc3RIYXJuZXNzLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDUxMkUxMjFGNjBDNDM0MDBCQjM2OUUg
LyogRGF0YVRyYW5zZmVySXRlbS1nZXRBc0VudHJ5Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7
IHBhdGggPSAiRGF0YVRyYW5zZmVySXRlbS1nZXRBc0VudHJ5Lmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNDUzOEVGMDFFODQ2QjQxMDBCNUM5NTMgLyogbGFyZ2UtcmVkLXNx
dWFyZS5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBpbWFnZS5wbmc7IHBhdGggPSAibGFyZ2UtcmVkLXNxdWFyZS5wbmciOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGNDU3QTlCMzIwMkQ1MzUzMDBGN0U5RDUgLyogRGF0YVRyYW5zZmVy
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBEYXRhVHJhbnNmZXIuaHRtbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ1N0E5QjYyMDJENUNEQzAwRjdFOUQ1IC8qIFBh
c3RlTWl4ZWRDb250ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFzdGVNaXhlZENvbnRl
bnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NUI2M0ZBMUYxOTdGMzMwMDlE
MzhCOSAvKiBpbWFnZS1tYXAuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJpbWFnZS1tYXAuaHRtbCI7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NUI2M0ZDMUYxOUQ0MTAwMDlEMzhCOSAvKiBBY3Rp
b25TaGVldFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWN0aW9uU2hlZXRUZXN0cy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ2ODQ5QkQxRUVGNThFNDAwQjkzN0ZF
IC8qIFVJUGFzdGVib2FyZFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVUlQYXN0ZWJv
YXJkVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTMwLDYgKzIxMzUs
NyBAQAogCQkJCUNFQkNBMTJFMUUzQTY2MDEwMEM3MzI5MyAvKiBPdmVycmlkZUNvbnRlbnRTZWN1
cml0eVBvbGljeS5tbSAqLywKIAkJCQk5QkNCN0MyNjIwMTMwNjAwMDAzRTdDMEMgLyogUGFzdGVI
VE1MLm1tICovLAogCQkJCTlCRENDRDg1MUY3RDBCMDcwMDAwOUExOCAvKiBQYXN0ZUltYWdlLm1t
ICovLAorCQkJCUY0NTdBOUI2MjAyRDVDREMwMEY3RTlENSAvKiBQYXN0ZU1peGVkQ29udGVudC5t
bSAqLywKIAkJCQk5QkREOTU1NjFGODM2ODM2MDBEMjBDNjAgLyogUGFzdGVSVEZELm1tICovLAog
CQkJCTlCMjM0NjQxMUY5NDNBMjQwMERCMUQyMyAvKiBQYXN0ZVdlYkFyY2hpdmUubW0gKi8sCiAJ
CQkJM0ZDQzRGRTQxRUM0RTg1MjAwNzZFMzdDIC8qIFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5t
bSAqLywKQEAgLTIzNjQsNiArMjM3MCw3IEBACiAJCQkJOUI2MjYzMEIxRjhDMjUxMDAwN0VFMjlC
IC8qIGNvcHktdXJsLmh0bWwgKi8sCiAJCQkJRjRBQjU3ODkxRjY1MTY0QjAwREIwREExIC8qIGN1
c3RvbS1kcmFnZ2FibGUtZGl2Lmh0bWwgKi8sCiAJCQkJRjQ4NkIxQ0YxRjY3OTRGRjAwRjM0QkRE
IC8qIERhdGFUcmFuc2Zlci1zZXREcmFnSW1hZ2UuaHRtbCAqLywKKwkJCQlGNDU3QTlCMzIwMkQ1
MzUzMDBGN0U5RDUgLyogRGF0YVRyYW5zZmVyLmh0bWwgKi8sCiAJCQkJRjQ1MTJFMTIxRjYwQzQz
NDAwQkIzNjlFIC8qIERhdGFUcmFuc2Zlckl0ZW0tZ2V0QXNFbnRyeS5odG1sICovLAogCQkJCTA3
OTlDMzRBMUVCQTMyRjQwMDNCNzUzMiAvKiBkaXNhYmxlR2V0VXNlck1lZGlhLmh0bWwgKi8sCiAJ
CQkJNjNBNjFCOEExRkFEMjA0RDAwRjA2ODg1IC8qIGRpc3BsYXktbW9kZS5odG1sICovLApAQCAt
MzU1NSw2ICszNTYyLDcgQEAKIAkJCQk3Q0NFN0YwQTFBNDExQUU2MDA0NDdDNEMgLyogUGFzdGVi
b2FyZE5vdGlmaWNhdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5QkNCN0MyODIwMTMwNjAw
MDAzRTdDMEMgLyogUGFzdGVIVE1MLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOUJEQ0NEODcxRjdE
MEIwNzAwMDA5QTE4IC8qIFBhc3RlSW1hZ2UubW0gaW4gU291cmNlcyAqLywKKwkJCQlGNDU3QTlC
ODIwMkQ1Q0RDMDBGN0U5RDUgLyogUGFzdGVNaXhlZENvbnRlbnQubW0gaW4gU291cmNlcyAqLywK
IAkJCQk5QkREOTU1ODFGODM2ODM2MDBEMjBDNjAgLyogUGFzdGVSVEZELm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOUIyMzQ2NDIxRjk0M0UyNzAwREIxRDIzIC8qIFBhc3RlV2ViQXJjaGl2ZS5tbSBp
biBTb3VyY2VzICovLAogCQkJCTdDODNFMDUzMUQwQTY0M0EwMEZFQkNGMyAvKiBQZW5kaW5nQVBJ
UmVxdWVzdFVSTC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGF0YVRyYW5zZmVyLmh0bWwgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RhdGFUcmFuc2Zlci5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5
MWQ2MDYwMDE3YzMzOTI5NDMxMTM2Mjg5YmM2ZmQ0NDY3MGM5N2IKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RhdGFUcmFuc2Zlci5odG1s
CkBAIC0wLDAgKzEsNzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8bWV0YSBuYW1lPSJ2
aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgor
PGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgICBib2R5LCBodG1sIHsKKyAgICAgICAgICAgIHdp
ZHRoOiAxMDAlOworICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOworICAgICAgICAgICAgZm9udC1m
YW1pbHk6IG1vbm9zcGFjZTsKKyAgICAgICAgfQorCisgICAgICAgIC5oZWFkaW5nIHsKKyAgICAg
ICAgICAgIGRpc3BsYXk6IGJsb2NrOworICAgICAgICAgICAgd2lkdGg6IDEwMCU7CisgICAgICAg
ICAgICBib3JkZXItdG9wOiAycHggZ3JheSBkYXNoZWQ7CisgICAgICAgICAgICBtYXJnaW4tdG9w
OiAyMHB4OworICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICAgICAgfQor
ICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gc2V0dXAoKQorICAg
ICAgICB7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoInBhc3Rl
IiwgZXZlbnQgPT4geworICAgICAgICAgICAgICAgIGR1bXBBc091dHB1dChldmVudC5jbGlwYm9h
cmREYXRhKTsKKyAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImRy
b3AiLCBldmVudCA9PiB7CisgICAgICAgICAgICAgICAgZHVtcEFzT3V0cHV0KGV2ZW50LmRhdGFU
cmFuc2Zlcik7CisgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJi
ZWZvcmVpbnB1dCIsIGV2ZW50ID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCkpOworICAgICAgICAg
ICAgZG9jdW1lbnQuYm9keS5mb2N1cygpOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24g
ZHVtcEFzT3V0cHV0KGRhdGFUcmFuc2ZlcikKKyAgICAgICAgeworICAgICAgICAgICAgZG9jdW1l
bnQuYm9keS5jb250ZW50RWRpdGFibGUgPSBmYWxzZTsKKyAgICAgICAgICAgIHR5cGVzLnRleHRD
b250ZW50ID0gZGF0YVRyYW5zZmVyLnR5cGVzLmpvaW4oIiwgIik7CisgICAgICAgICAgICBpdGVt
cy50ZXh0Q29udGVudCA9IEFycmF5LmZyb20oZGF0YVRyYW5zZmVyLml0ZW1zKS5tYXAoaXRlbSA9
PiBgKCR7aXRlbS5raW5kLnRvVXBwZXJDYXNlKCl9LCAke2l0ZW0udHlwZX0pYCkuam9pbigiLCAi
KTsKKyAgICAgICAgICAgIGZpbGVzLnRleHRDb250ZW50ID0gQXJyYXkuZnJvbShkYXRhVHJhbnNm
ZXIuZmlsZXMpLm1hcChmaWxlID0+IGAoJyR7ZmlsZS5uYW1lfScsICR7ZmlsZS50eXBlfSlgKS5q
b2luKCIsICIpOworICAgICAgICAgICAgdXJsRGF0YS50ZXh0Q29udGVudCA9IGRhdGFUcmFuc2Zl
ci5nZXREYXRhKCJ0ZXh0L3VyaS1saXN0Iik7CisgICAgICAgICAgICB0ZXh0RGF0YS50ZXh0Q29u
dGVudCA9IGRhdGFUcmFuc2Zlci5nZXREYXRhKCJ0ZXh0L3BsYWluIik7CisgICAgICAgICAgICBs
ZXQgbWFya3VwID0gZGF0YVRyYW5zZmVyLmdldERhdGEoInRleHQvaHRtbCIpOworICAgICAgICAg
ICAgaHRtbERhdGEuaW5zZXJ0QWRqYWNlbnRIVE1MKCJiZWZvcmVlbmQiLCBtYXJrdXApOworICAg
ICAgICAgICAgcmF3SFRNTERhdGEudGV4dENvbnRlbnQgPSBtYXJrdXA7CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiByZXNldCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFycmF5LmZy
b20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgib3V0cHV0IikpLm1hcChlbGVtZW50
ID0+IHsKKyAgICAgICAgICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9ICIiOworICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNvbnRlbnRFZGl0YWJsZSA9IHRydWU7
CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IGNvbnRlbnRlZGl0YWJs
ZSBvbmxvYWQ9c2V0dXAoKT4KKyAgICA8aDMgY2xhc3M9ImhlYWRpbmciPlR5cGVzPC9oMz4KKyAg
ICA8ZGl2IGNsYXNzPSJvdXRwdXQiIGlkPSJ0eXBlcyI+PC9kaXY+CisKKyAgICA8aDMgY2xhc3M9
ImhlYWRpbmciPkl0ZW1zPC9oMz4KKyAgICA8ZGl2IGNsYXNzPSJvdXRwdXQiIGlkPSJpdGVtcyI+
PC9kaXY+CisKKyAgICA8aDMgY2xhc3M9ImhlYWRpbmciPkZpbGVzPC9oMz4KKyAgICA8ZGl2IGNs
YXNzPSJvdXRwdXQiIGlkPSJmaWxlcyI+PC9kaXY+CisKKyAgICA8aDMgY2xhc3M9ImhlYWRpbmci
PnRleHQvcGxhaW48L2gzPgorICAgIDxkaXYgY2xhc3M9Im91dHB1dCIgaWQ9InRleHREYXRhIj48
L2Rpdj4KKworICAgIDxoMyBjbGFzcz0iaGVhZGluZyI+dGV4dC91cmktbGlzdDwvaDM+CisgICAg
PGRpdiBjbGFzcz0ib3V0cHV0IiBpZD0idXJsRGF0YSI+PC9kaXY+CisKKyAgICA8aDMgY2xhc3M9
ImhlYWRpbmciPnRleHQvaHRtbDwvaDM+CisgICAgPGRpdiBjbGFzcz0ib3V0cHV0IiBpZD0iaHRt
bERhdGEiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9Im91dHB1dCIgaWQ9InJhd0hUTUxEYXRhIj48
L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVJbWFnZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUGFzdGVJbWFnZS5tbQppbmRleCBiMjI4OTZiNGE3ODlmMmM0ODA1MGNm
MzBiYjg2ZDA1NGE2ZWUyNWI3Li44OWJjMDVhZTY3MGRjYmM1ZDQ1NDgzZmJlN2FmYjk1ZjgyMjFm
NDdjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bh
c3RlSW1hZ2UubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
YXN0ZUltYWdlLm1tCkBAIC0zNiwxMCArMzYsNiBAQAogI2luY2x1ZGUgPE1vYmlsZUNvcmVTZXJ2
aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KICNlbmRpZgogCi1AaW50ZXJmYWNlIFdLV2ViVmll
dyAoKQotLSAodm9pZClwYXN0ZTooaWQpc2VuZGVyOwotQGVuZAotCiAjaWYgUExBVEZPUk0oTUFD
KQogdm9pZCB3cml0ZUltYWdlRGF0YVRvUGFzdGVib2FyZChOU1N0cmluZyAqdHlwZSwgTlNEYXRh
ICpkYXRhKQogewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9QYXN0ZU1peGVkQ29udGVudC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUGFzdGVNaXhlZENvbnRlbnQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjllZmY4ZDI4NzVlMmIx
MDMwNmZjOTkwOGUwMDI2NDYzY2QxNDYyOQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVNaXhlZENvbnRlbnQubW0KQEAgLTAsMCAr
MSwxNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBQTEFURk9S
TShNQUMpICYmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgi
CisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNl
c1JlZi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg+CisjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKwor
c3RhdGljIE5TU3RyaW5nICppbWFnZVBhdGgoKQoreworICAgIHJldHVybiBbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIHBhdGhGb3JSZXNvdXJjZTpAImljb24iIG9mVHlwZTpAInBuZyIgaW5EaXJlY3Rv
cnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworfQorCit2b2lkIHdyaXRlVHlwZXNBbmRE
YXRhVG9QYXN0ZWJvYXJkKGlkIHR5cGUsIC4uLikKK3sKKyAgICBOU011dGFibGVBcnJheTxOU1N0
cmluZyAqPiAqdHlwZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAgIE5TTXV0YWJsZUFy
cmF5ICpkYXRhID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICB2YV9saXN0IGFyZ3VtZW50
TGlzdDsKKyAgICBpZiAodHlwZSkgeworICAgICAgICBBU1NFUlQoW3R5cGUgaXNLaW5kT2ZDbGFz
czpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgICAgIFt0eXBlcyBhZGRPYmplY3Q6dHlwZV07Cisg
ICAgICAgIHZhX3N0YXJ0KGFyZ3VtZW50TGlzdCwgdHlwZSk7CisgICAgICAgIE5TVUludGVnZXIg
aW5kZXggPSAxOworICAgICAgICBpZCBvYmplY3QgPSB2YV9hcmcoYXJndW1lbnRMaXN0LCBpZCk7
CisgICAgICAgIHdoaWxlIChvYmplY3QpIHsKKyAgICAgICAgICAgIGlmIChpbmRleCAlIDIpCisg
ICAgICAgICAgICAgICAgW2RhdGEgYWRkT2JqZWN0Om9iamVjdF07CisgICAgICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoW29iamVjdCBpc0tpbmRPZkNsYXNzOltOU1N0cmlu
ZyBjbGFzc11dKTsKKyAgICAgICAgICAgICAgICBbdHlwZXMgYWRkT2JqZWN0Om9iamVjdF07Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICArK2luZGV4OworICAgICAgICAgICAgb2JqZWN0ID0g
dmFfYXJnKGFyZ3VtZW50TGlzdCwgaWQpOworICAgICAgICB9CisgICAgICAgIHZhX2VuZChhcmd1
bWVudExpc3QpOworICAgIH0KKworICAgIGlmICh0eXBlcy5jb3VudCAhPSBkYXRhLmNvdW50KSB7
CisgICAgICAgIE5TTG9nKEAiRXhwZWN0ZWQgbnVtYmVyIG9mIHR5cGVzOiAldHUgdG8gbWF0Y2gg
bnVtYmVyIG9mIGRhdGEgaXRlbXM6ICV0dSIsIHR5cGVzLmNvdW50LCBkYXRhLmNvdW50KTsKKyAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gZGVjbGFyZVR5cGVzOnR5cGVzIG93
bmVyOm5pbF07CisgICAgW3R5cGVzIGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOlsmXSAoTlNT
dHJpbmcgKnR5cGUsIE5TVUludGVnZXIgaW5kZXgsIEJPT0wgKikgeworICAgICAgICBpZCBkYXRh
VG9Xcml0ZSA9IGRhdGFbaW5kZXhdOworICAgICAgICBpZiAoW2RhdGFUb1dyaXRlIGlzS2luZE9m
Q2xhc3M6W05TRGF0YSBjbGFzc11dKQorICAgICAgICAgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJh
bFBhc3RlYm9hcmRdIHNldERhdGE6ZGF0YVRvV3JpdGUgZm9yVHlwZTp0eXBlXTsKKyAgICAgICAg
ZWxzZSBpZiAoW2RhdGFUb1dyaXRlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCisg
ICAgICAgICAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gc2V0U3RyaW5nOmRh
dGFUb1dyaXRlIGZvclR5cGU6dHlwZV07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFtbTlNQ
YXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBzZXRQcm9wZXJ0eUxpc3Q6ZGF0YVRvV3JpdGUg
Zm9yVHlwZTp0eXBlXTsKKyAgICB9XTsKK30KKworc3RhdGljIFJldGFpblB0cjxUZXN0V0tXZWJW
aWV3PiBzZXRVcFdlYlZpZXcoKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDAp
XSk7CisgICAgV0tQcmVmZXJlbmNlc1NldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgoV0tQ
cmVmZXJlbmNlc1JlZilbd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcmVmZXJlbmNlcywgdHJ1ZSk7
CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiRGF0YVRyYW5z
ZmVyIl07CisgICAgcmV0dXJuIHdlYlZpZXc7Cit9CisKK3N0YXRpYyBOU1N0cmluZyAqbWFya3Vw
U3RyaW5nKCkKK3sKKyAgICAvLyBUaGUgc2NyaXB0IHRhZyBhbmQgbW91c2VvdmVyIGxpc3RlbmVy
IGF0dHJpYnV0ZSBpbiB0aGUgbWFya3VwIHN0cmluZyBiZWxvdyBzaG91bGQgYmUgb21pdHRlZCBk
dXJpbmcKKyAgICAvLyBzYW5pdGl6YXRpb24gd2hpbGUgcGFzdGluZy4KKyAgICByZXR1cm4gQCI8
c2NyaXB0PmZvbygpPC9zY3JpcHQ+PHN0cm9uZyBvbm1vdXNlb3Zlcj0namF2YXNjcmlwdDp2b2lk
KDApJz5IRUxMTyBXT1JMRDwvc3Ryb25nPiI7Cit9CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKKworVEVTVChQYXN0ZU1peGVkQ29udGVudCwgUGFzdGVJbWFnZUFuZFBsYWluVGV4dCkKK3sK
KyAgICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdlYlZpZXcoKTsKKyAgICB3cml0ZVR5cGVzQW5kRGF0
YVRvUGFzdGVib2FyZChOU0ZpbGVuYW1lc1Bib2FyZFR5cGUsIEBbIGltYWdlUGF0aCgpIF0sIE5T
UGFzdGVib2FyZFR5cGVTdHJpbmcsIGltYWdlUGF0aCgpLCBuaWwpOworICAgIFt3ZWJWaWV3IHBh
c3RlOm5pbF07CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkZpbGVzIiwgW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInR5cGVzLnRleHRDb250ZW50Il0pOworICAgIEVYUEVD
VF9XS19TVFJFUSgiKEZJTEUsIGltYWdlL3BuZykiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiaXRlbXMudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVR
KCIoJ2ljb24ucG5nJywgaW1hZ2UvcG5nKSIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJmaWxlcy50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIiIs
IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ1cmxEYXRhLnRleHRDb250
ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAInRleHREYXRhLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19T
VFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImh0bWxEYXRh
LnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInJhd0hUTUxEYXRhLnRleHRDb250ZW50Il0pOworfQor
CitURVNUKFBhc3RlTWl4ZWRDb250ZW50LCBQYXN0ZUltYWdlQW5kV2ViQXJjaGl2ZSkKK3sKKyAg
ICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdlYlZpZXcoKTsKKyAgICBOU1VSTCAqbWFpblJlc291cmNl
VVJMID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpAIi9zb21lL25vbmV4aXN0ZW50L2ZpbGUuaHRt
bCJdOworICAgIGF1dG8gbWFpblJlc291cmNlID0gYWRvcHROUyhbW1dlYlJlc291cmNlIGFsbG9j
XSBpbml0V2l0aERhdGE6W21hcmt1cFN0cmluZygpIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0
cmluZ0VuY29kaW5nXSBVUkw6bWFpblJlc291cmNlVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiB0
ZXh0RW5jb2RpbmdOYW1lOkAidXRmLTgiIGZyYW1lTmFtZTpuaWxdKTsKKyAgICBhdXRvIGFyY2hp
dmUgPSBhZG9wdE5TKFtbV2ViQXJjaGl2ZSBhbGxvY10gaW5pdFdpdGhNYWluUmVzb3VyY2U6bWFp
blJlc291cmNlLmdldCgpIHN1YnJlc291cmNlczpuaWwgc3ViZnJhbWVBcmNoaXZlczpuaWxdKTsK
KyAgICB3cml0ZVR5cGVzQW5kRGF0YVRvUGFzdGVib2FyZChOU0ZpbGVuYW1lc1Bib2FyZFR5cGUs
IEBbIGltYWdlUGF0aCgpIF0sIFdlYkFyY2hpdmVQYm9hcmRUeXBlLCBbYXJjaGl2ZSBkYXRhXSwg
bmlsKTsKKyAgICBbd2ViVmlldyBwYXN0ZTpuaWxdOworCisgICAgRVhQRUNUX1dLX1NUUkVRKCJ0
ZXh0L2h0bWwsIEZpbGVzIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
InR5cGVzLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiKFNUUklORywgdGV4
dC9odG1sKSwgKEZJTEUsIGltYWdlL3BuZykiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiaXRlbXMudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIo
J2ljb24ucG5nJywgaW1hZ2UvcG5nKSIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJmaWxlcy50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ1cmxEYXRhLnRleHRDb250ZW50
Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAInRleHREYXRhLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJF
USgiSEVMTE8gV09STEQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
aHRtbERhdGEudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX0ZBTFNFKFtbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicmF3SFRNTERhdGEudGV4dENvbnRlbnQiXSBjb250
YWluc1N0cmluZzpAInNjcmlwdCJdKTsKK30KKworVEVTVChQYXN0ZU1peGVkQ29udGVudCwgUGFz
dGVJbWFnZUFuZEhUTUwpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3KCk7Cisg
ICAgd3JpdGVUeXBlc0FuZERhdGFUb1Bhc3RlYm9hcmQoTlNGaWxlbmFtZXNQYm9hcmRUeXBlLCBA
WyBpbWFnZVBhdGgoKSBdLCBOU1Bhc3RlYm9hcmRUeXBlSFRNTCwgbWFya3VwU3RyaW5nKCksIG5p
bCk7CisgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKKworICAgIEVYUEVDVF9XS19TVFJFUSgidGV4
dC9odG1sLCBGaWxlcyIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0
eXBlcy50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIihTVFJJTkcsIHRleHQv
aHRtbCksIChGSUxFLCBpbWFnZS9wbmcpIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAIml0ZW1zLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiKCdp
Y29uLnBuZycsIGltYWdlL3BuZykiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiZmlsZXMudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidXJsRGF0YS50ZXh0Q29udGVudCJd
KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJ0ZXh0RGF0YS50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
IkhFTExPIFdPUkxEIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImh0
bWxEYXRhLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9GQUxTRShbW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInJhd0hUTUxEYXRhLnRleHRDb250ZW50Il0gY29udGFp
bnNTdHJpbmc6QCJzY3JpcHQiXSk7Cit9CisKK1RFU1QoUGFzdGVNaXhlZENvbnRlbnQsIFBhc3Rl
SW1hZ2VBbmRSVEYpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3KCk7CisgICAg
YXV0byB0ZXh0ID0gYWRvcHROUyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGlu
aXRdKTsKKyAgICBbdGV4dCBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOltbTlNBdHRyaWJ1dGVkU3Ry
aW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAImxpbmsgdG8gIl1dOworICAgIFt0ZXh0IGFwcGVu
ZEF0dHJpYnV0ZWRTdHJpbmc6W1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3Ry
aW5nOkAiYXBwbGUiIGF0dHJpYnV0ZXM6QHsgTlNMaW5rQXR0cmlidXRlTmFtZTogW05TVVJMIFVS
TFdpdGhTdHJpbmc6QCJodHRwczovL3d3dy5hcHBsZS5jb20vIl0gfV1dOworICAgIE5TRGF0YSAq
cnRmRGF0YSA9IFt0ZXh0IFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBbdGV4dCBsZW5ndGhd
KSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV07CisgICAgd3JpdGVUeXBlc0FuZERhdGFUb1Bhc3Rl
Ym9hcmQoTlNGaWxlbmFtZXNQYm9hcmRUeXBlLCBAWyBpbWFnZVBhdGgoKSBdLCBOU1Bhc3RlYm9h
cmRUeXBlUlRGLCBydGZEYXRhLCBuaWwpOworICAgIFt3ZWJWaWV3IHBhc3RlOm5pbF07CisKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoInRleHQvaHRtbCwgRmlsZXMiLCBbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAidHlwZXMudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dL
X1NUUkVRKCIoU1RSSU5HLCB0ZXh0L2h0bWwpLCAoRklMRSwgaW1hZ2UvcG5nKSIsIFt3ZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpdGVtcy50ZXh0Q29udGVudCJdKTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoIignaWNvbi5wbmcnLCBpbWFnZS9wbmcpIiwgW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImZpbGVzLnRleHRDb250ZW50Il0pOworICAgIEVY
UEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
InVybERhdGEudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidGV4dERhdGEudGV4dENvbnRlbnQiXSk7
CisgICAgRVhQRUNUX1dLX1NUUkVRKCJsaW5rIHRvIGFwcGxlIiwgW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImh0bWxEYXRhLnRleHRDb250ZW50Il0pOworICAgIEVYUEVD
VF9XS19TVFJFUSgiaHR0cHM6Ly93d3cuYXBwbGUuY29tLyIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJodG1sRGF0YS5xdWVyeVNlbGVjdG9yKCdhJykuaHJlZiJdKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8gUExBVEZPUk0o
TUFDKSAmJiBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQppbmRleCA0MDg1ZmFiOWNhNWMyZjcwOWEw
ZWY4ZWRmYWU2NjYwNDdkOTQ3Nzc1Li42YjY3MDRlYjIzZWNiYTJhNDFkMGVmOWM2ZmEwOWZlNjVi
Y2ExNDZlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50
ZXJhY3Rpb25UZXN0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRh
SW50ZXJhY3Rpb25UZXN0cy5tbQpAQCAtMTQ5OSw2ICsxNDk5LDM1IEBAIFRFU1QoRGF0YUludGVy
YWN0aW9uVGVzdHMsIERyYWdMaWZ0UHJldmlld0RhdGFUcmFuc2ZlclNldERyYWdJbWFnZSkKIAog
I2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDMwMAogCitzdGF0aWMg
TlNEYXRhICp0ZXN0SWNvbkltYWdlRGF0YSgpCit7CisgICAgcmV0dXJuIFtOU0RhdGEgZGF0YVdp
dGhDb250ZW50c09mRmlsZTpbW05TQnVuZGxlIG1haW5CdW5kbGVdIHBhdGhGb3JSZXNvdXJjZTpA
Imljb24iIG9mVHlwZTpAInBuZyIgaW5EaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdXTsKK30KKworVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgRGF0YVRyYW5zZmVyR2V0RGF0
YVdoZW5Ecm9wcGluZ0ltYWdlQW5kTWFya3VwKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0
TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwg
MzIwLCA1MDApXSk7CisgICAgV0tQcmVmZXJlbmNlc1NldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5h
YmxlZCgoV0tQcmVmZXJlbmNlc1JlZilbd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcmVmZXJlbmNl
cywgdHJ1ZSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAi
RGF0YVRyYW5zZmVyIl07CisKKyAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEYXRhSW50
ZXJhY3Rpb25TaW11bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7
CisgICAgYXV0byBpdGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2Nd
IGluaXRdKTsKKyAgICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9y
VHlwZUlkZW50aWZpZXI6KE5TU3RyaW5nICopa1VUVHlwZVBORyB3aXRoRGF0YTp0ZXN0SWNvbklt
YWdlRGF0YSgpXTsKKyAgICBOU1N0cmluZyAqbWFya3VwU3RyaW5nID0gQCI8c2NyaXB0PmJhcigp
PC9zY3JpcHQ+PHN0cm9uZyBvbm1vdXNlZG93bj1qYXZhc2NyaXB0OnZvaWQoMCk+SEVMTE8gV09S
TEQ8L3N0cm9uZz4iOworICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRp
b25Gb3JUeXBlSWRlbnRpZmllcjooTlNTdHJpbmcgKilrVVRUeXBlSFRNTCB3aXRoRGF0YTpbbWFy
a3VwU3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CisgICAg
W2l0ZW1Qcm92aWRlciBzZXRTdWdnZXN0ZWROYW1lOkAiaWNvbiJdOworICAgIFtzaW11bGF0b3Ig
c2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOkBbIGl0ZW1Qcm92aWRlci5nZXQoKSBdXTsKKyAgICBb
c2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludFplcm8gdG86Q0dQb2ludE1ha2UoNTAsIDEwMCldOwor
CisgICAgRVhQRUNUX1dLX1NUUkVRKCJ0ZXh0L2h0bWwsIEZpbGVzIiwgW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInR5cGVzLnRleHRDb250ZW50Il0pOworICAgIEVYUEVD
VF9XS19TVFJFUSgiKFNUUklORywgdGV4dC9odG1sKSwgKEZJTEUsIGltYWdlL3BuZykiLCBbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaXRlbXMudGV4dENvbnRlbnQiXSk7
CisgICAgRVhQRUNUX1dLX1NUUkVRKCIoJ2ljb24ucG5nJywgaW1hZ2UvcG5nKSIsIFt3ZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJmaWxlcy50ZXh0Q29udGVudCJdKTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoIiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJ1cmxEYXRhLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInRleHREYXRhLnRleHRDb250ZW50
Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiSEVMTE8gV09STEQiLCBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaHRtbERhdGEudGV4dENvbnRlbnQiXSk7CisgICAgRVhQ
RUNUX0ZBTFNFKFtbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicmF3SFRN
TERhdGEudGV4dENvbnRlbnQiXSBjb250YWluc1N0cmluZzpAInNjcmlwdCJdKTsKK30KKwogVEVT
VChEYXRhSW50ZXJhY3Rpb25UZXN0cywgRGF0YVRyYW5zZmVyR2V0RGF0YVdoZW5Ecm9wcGluZ1Bs
YWluVGV4dCkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmggYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAppbmRleCBkYWEzYjI2ZDY2YjhlODkw
MTcwNGNiNTlmNWYxNzQxMDE3ZDAxY2RlLi45MDhlMDUyYjNhMWMyOWJkN2U1YWI3OTJlMGQ4Zjhj
NDU2MzBkZGFhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dl
YlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaApA
QCAtMzQsNiArMzQsMTIgQEAKIEBjbGFzcyBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbzsKICNlbmRp
ZgogCitAaW50ZXJmYWNlIFdLV2ViVmlldyAoQWRkaXRpb25hbERlY2xhcmF0aW9ucykKKyNpZiBQ
TEFURk9STShNQUMpCistICh2b2lkKXBhc3RlOihpZClzZW5kZXI7CisjZW5kaWYKK0BlbmQKKwog
QGludGVyZmFjZSBUZXN0TWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdl
SGFuZGxlcj4KIC0gKHZvaWQpYWRkTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIHdpdGhIYW5k
bGVyOihkaXNwYXRjaF9ibG9ja190KWhhbmRsZXI7CiBAZW5kCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjVjZDNiODdmYWJh
MzA4YmI4MDUxZTVmZjU2ZDQ2MDJjZTk2ZDJhZi4uZmYwODlhMjRkMDIyMGIxNGY1MTBkMjU2NDgw
MDIxMzAyMjUyODY3NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDE4LTAyLTA4ICBXZW5zb24g
SHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFBhc3RpbmcgZnJvbSBF
eGNlbCBubyBsb25nZXIgcHJvdmlkZXMgdGV4dC9odG1sIGRhdGEKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjYzNgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMzcwODcwNjA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmViYXNlbGluZSBzb21lIGV4aXN0aW5nIGxheW91dCB0ZXN0cy4gV2Ugbm93IGV4
cG9zZSAidGV4dC9odG1sIiBhbG9uZ3NpZGUgIkZpbGVzIiBvbiBEYXRhVHJhbnNmZXIudHlwZXMo
KSBpbgorICAgICAgICBzb21lIGNpcmN1bXN0YW5jZXMuIFRoaXMgYWxzbyBwcm92aWRlcyBzb21l
IHRlc3QgY292ZXJhZ2UgZm9yIGVuc3VyaW5nIHRoYXQgdGhlIHBhc3RlIGNvZGVwYXRoIGlPUyBh
bGxvd3MgdGhlCisgICAgICAgIHBhZ2UgdG8gcmVxdWVzdCBIVE1MLCBldmVuIGlmIHRoZXJlIGFy
ZSBmaWxlcyBvbiB0aGUgcGFzdGVib2FyZC4gU2VlIHRoZSBXZWJDb3JlIENoYW5nZUxvZyBmb3Ig
bW9yZSBkZXRhaWwuCisKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zl
ci1pdGVtLWxpc3QtYWRkLWZpbGUtbXVsdGlwbGUtdGltZXMtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1v
bi1jb3B5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10
cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tZHJhZy1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLWRvZXMtbm90LXJldmVhbC1maWxlLXVy
bC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdl
LWRvZXMtbm90LXJldmVhbC1maWxlLXVybC5odG1sOgorCiAyMDE4LTAyLTA4ICBNYXR0IExld2lz
ICA8amxld2lzM0BhcHBsZS5jb20+CiAKICAgICAgICAgTWFya2VkIG1lZGlhL1czQy92aWRlby9l
dmVudHMvZXZlbnRfcHJvZ3Jlc3NfbWFudWFsLmh0bWwgYXMgZmxha3kgb24gbWFjT1MgV0syLgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXIt
aXRlbS1saXN0LWFkZC1maWxlLW11bHRpcGxlLXRpbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1t
dWx0aXBsZS10aW1lcy1leHBlY3RlZC50eHQKaW5kZXggMWY4MGM1OWRjOWNiNjJkNzJlYzlhMDQ1
MDM2ZGY1NTY0OWFkNDc4Ni4uZjlkODgxNjZkYjlhZmUxMjRiZDZiNDljZWJiMTQ4YjI2OThlNzg1
MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNm
ZXItaXRlbS1saXN0LWFkZC1maWxlLW11bHRpcGxlLXRpbWVzLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRk
LWZpbGUtbXVsdGlwbGUtdGltZXMtZXhwZWN0ZWQudHh0CkBAIC05LDggKzksOCBAQCBvcGVyYXRp
b24gcGVyZm9ybWVkIGF0IGVhY2ggc3RlcC4KIDEuIEFmdGVyIGFkZGluZyBhbGwgaXRlbXMKIHsK
ICAgICAiZGF0YSI6IHsKLSAgICAgICAgIkZpbGVzIjogIiIsCi0gICAgICAgICJ0ZXh0L3VyaS1s
aXN0IjogImh0dHBzOi8vd2Via2l0Lm9yZyIKKyAgICAgICAgInRleHQvdXJpLWxpc3QiOiAiaHR0
cHM6Ly93ZWJraXQub3JnIiwKKyAgICAgICAgIkZpbGVzIjogIiIKICAgICB9LAogICAgICJpdGVt
cyI6IFsKICAgICAgICAgewpAQCAtODcsOCArODcsOCBAQCBvcGVyYXRpb24gcGVyZm9ybWVkIGF0
IGVhY2ggc3RlcC4KIDIuIEFmdGVyIHJlbW92aW5nIGF0IGluZGV4IDQKIHsKICAgICAiZGF0YSI6
IHsKLSAgICAgICAgIkZpbGVzIjogIiIsCi0gICAgICAgICJ0ZXh0L3VyaS1saXN0IjogImh0dHBz
Oi8vd2Via2l0Lm9yZyIKKyAgICAgICAgInRleHQvdXJpLWxpc3QiOiAiaHR0cHM6Ly93ZWJraXQu
b3JnIiwKKyAgICAgICAgIkZpbGVzIjogIiIKICAgICB9LAogICAgICJpdGVtcyI6IFsKICAgICAg
ICAgewpAQCAtMTUyLDggKzE1Miw4IEBAIHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBi
ZSBudWxsOiBudWxsCiAzLiBBZnRlciByZW1vdmluZyBhdCBpbmRleCAxCiB7CiAgICAgImRhdGEi
OiB7Ci0gICAgICAgICJGaWxlcyI6ICIiLAotICAgICAgICAidGV4dC91cmktbGlzdCI6ICJodHRw
czovL3dlYmtpdC5vcmciCisgICAgICAgICJ0ZXh0L3VyaS1saXN0IjogImh0dHBzOi8vd2Via2l0
Lm9yZyIsCisgICAgICAgICJGaWxlcyI6ICIiCiAgICAgfSwKICAgICAiaXRlbXMiOiBbCiAgICAg
ICAgIHsKQEAgLTIwMyw4ICsyMDMsOCBAQCByZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQg
YmUgbnVsbDogbnVsbAogNC4gQWZ0ZXIgcmVtb3ZpbmcgYXQgaW5kZXggMwogewogICAgICJkYXRh
IjogewotICAgICAgICAiRmlsZXMiOiAiIiwKLSAgICAgICAgInRleHQvdXJpLWxpc3QiOiAiaHR0
cHM6Ly93ZWJraXQub3JnIgorICAgICAgICAidGV4dC91cmktbGlzdCI6ICJodHRwczovL3dlYmtp
dC5vcmciLAorICAgICAgICAiRmlsZXMiOiAiIgogICAgIH0sCiAgICAgIml0ZW1zIjogWwogICAg
ICAgICB7CkBAIC0yNDcsNiArMjQ3LDcgQEAgcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxk
IGJlIG51bGw6IG51bGwKIDYuIEFmdGVyIGFkZGluZyB0d28gZmlsZXMgYW5kIHNvbWUgc3RyaW5n
IGRhdGEgYWdhaW4KIHsKICAgICAiZGF0YSI6IHsKKyAgICAgICAgInRleHQvaHRtbCI6ICI8c3Ry
b25nPnNvbWUgc3R5bGVkIHRleHQ8L3N0cm9uZz4iLAogICAgICAgICAiRmlsZXMiOiAiIgogICAg
IH0sCiAgICAgIml0ZW1zIjogWwpAQCAtMjk2LDYgKzI5Nyw3IEBAIHJlbW92ZWRJdGVtLmdldEFz
RmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCiA3LiBBZnRlciByZW1vdmluZyBhdCBpbmRleCAy
CiB7CiAgICAgImRhdGEiOiB7CisgICAgICAgICJ0ZXh0L2h0bWwiOiAiPHN0cm9uZz5zb21lIHN0
eWxlZCB0ZXh0PC9zdHJvbmc+IiwKICAgICAgICAgIkZpbGVzIjogIiIKICAgICB9LAogICAgICJp
dGVtcyI6IFsKQEAgLTM0MSw2ICszNDMsNyBAQCByZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91
bGQgYmUgbnVsbDogbnVsbAogOC4gQWZ0ZXIgcmVtb3ZpbmcgYXQgaW5kZXggMgogewogICAgICJk
YXRhIjogeworICAgICAgICAidGV4dC9odG1sIjogIjxzdHJvbmc+c29tZSBzdHlsZWQgdGV4dDwv
c3Ryb25nPiIsCiAgICAgICAgICJGaWxlcyI6ICIiCiAgICAgfSwKICAgICAiaXRlbXMiOiBbCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1p
dGVtLWxpc3QtYWRkLWZpbGUtb24tY29weS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tY29weS1l
eHBlY3RlZC50eHQKaW5kZXggZmZkZjY3Y2FlZDFiMTE3OGM0MmY4YzVkMDBiNTk1NDc3MWU2Y2U5
Yi4uMTM3YzkxYmRjMjVkYmZkZDdmMmNiNjk5Yjg4YzJjZTQyZjA3YzgxNyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFk
ZC1maWxlLW9uLWNvcHktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1jb3B5LWV4cGVjdGVk
LnR4dApAQCAtMTI5LDYgKzEyOSw3IEBAIHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBi
ZSBudWxsOiBudWxsCiA1LiBBZnRlciBhZGRpbmcgYW4gSFRNTCBzdHJpbmcKIHsKICAgICAiZGF0
YSI6IHsKKyAgICAgICAgInRleHQvaHRtbCI6ICI8YT5nb29kYnllIHdvcmxkPC9hPiIsCiAgICAg
ICAgICJGaWxlcyI6ICIiCiAgICAgfSwKICAgICAiaXRlbXMiOiBbCkBAIC0xNjQsNiArMTY1LDcg
QEAgcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6IG51bGwKIDYuIEFmdGVy
IGFkZGluZyBhbm90aGVyIHBsYWluIHRleHQgZmlsZQogewogICAgICJkYXRhIjogeworICAgICAg
ICAidGV4dC9odG1sIjogIjxhPmdvb2RieWUgd29ybGQ8L2E+IiwKICAgICAgICAgIkZpbGVzIjog
IiIKICAgICB9LAogICAgICJpdGVtcyI6IFsKQEAgLTIxMyw2ICsyMTUsNyBAQCByZW1vdmVkSXRl
bS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogbnVsbAogNy4gQWZ0ZXIgcmVtb3ZpbmcgdGhl
IGN1c3RvbSBmaWxlCiB7CiAgICAgImRhdGEiOiB7CisgICAgICAgICJ0ZXh0L2h0bWwiOiAiPGE+
Z29vZGJ5ZSB3b3JsZDwvYT4iLAogICAgICAgICAiRmlsZXMiOiAiIgogICAgIH0sCiAgICAgIml0
ZW1zIjogWwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEt
dHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWRyYWctZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxl
LW9uLWRyYWctZXhwZWN0ZWQudHh0CmluZGV4IDdhZGE2NTQxOTNmZGUwZGE1ZmZiOGE3NjVmMWIw
YTgxNjU5OTY1YzEuLjRjNTg4MzgxYmRhNGRjY2U4MmViZjdjMjAwMThjYzFiMGNlNDg5NGMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0
ZW0tbGlzdC1hZGQtZmlsZS1vbi1kcmFnLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tZHJh
Zy1leHBlY3RlZC50eHQKQEAgLTEyOSw2ICsxMjksNyBAQCByZW1vdmVkSXRlbS5nZXRBc0ZpbGUo
KSBzaG91bGQgYmUgbnVsbDogbnVsbAogNS4gQWZ0ZXIgYWRkaW5nIGFuIEhUTUwgc3RyaW5nCiB7
CiAgICAgImRhdGEiOiB7CisgICAgICAgICJ0ZXh0L2h0bWwiOiAiPGE+Z29vZGJ5ZSB3b3JsZDwv
YT4iLAogICAgICAgICAiRmlsZXMiOiAiIgogICAgIH0sCiAgICAgIml0ZW1zIjogWwpAQCAtMTY0
LDYgKzE2NSw3IEBAIHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxs
CiA2LiBBZnRlciBhZGRpbmcgYW5vdGhlciBwbGFpbiB0ZXh0IGZpbGUKIHsKICAgICAiZGF0YSI6
IHsKKyAgICAgICAgInRleHQvaHRtbCI6ICI8YT5nb29kYnllIHdvcmxkPC9hPiIsCiAgICAgICAg
ICJGaWxlcyI6ICIiCiAgICAgfSwKICAgICAiaXRlbXMiOiBbCkBAIC0yMTMsNiArMjE1LDcgQEAg
cmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6IG51bGwKIDcuIEFmdGVyIHJl
bW92aW5nIHRoZSBjdXN0b20gZmlsZQogewogICAgICJkYXRhIjogeworICAgICAgICAidGV4dC9o
dG1sIjogIjxhPmdvb2RieWUgd29ybGQ8L2E+IiwKICAgICAgICAgIkZpbGVzIjogIiIKICAgICB9
LAogICAgICJpdGVtcyI6IFsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9wYXN0ZS1pbWFnZS1kb2VzLW5vdC1yZXZlYWwtZmlsZS11cmwtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLWRvZXMtbm90LXJldmVh
bC1maWxlLXVybC1leHBlY3RlZC50eHQKaW5kZXggZGY2NGIwMTBlOWI4YTY4NmZiNjhiYzZiMWRi
NTA3MTRmMjk0NWNkYS4uMGI0MTZjYzY3ZmNhOGYxZDIwMzk3YTllOTBmMGI3NzVkYWQ0OGVkOSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLWRv
ZXMtbm90LXJldmVhbC1maWxlLXVybC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLWRvZXMtbm90LXJldmVhbC1maWxlLXVybC1leHBl
Y3RlZC50eHQKQEAgLTMsNyArMyw3IEBAIFRlc3RzIHRoYXQgcGFzdGluZyBpbWFnZXMgZG8gbm90
IHJldmVhbCBpdHMgZmlsZSBVUkwuIFRvIG1hbnVhbGx5IHRlc3QsIGNvcHkgdGhlCiBPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBKU09OLnN0cmluZ2lmeShldmVudC5jbGlwYm9h
cmREYXRhLnR5cGVzKSBpcyAiW1wiRmlsZXNcIl0iCitQQVNTIGV2ZW50LmNsaXBib2FyZERhdGEu
dHlwZXMuaW5kZXhPZigiRmlsZXMiKSBpcyBub3QgLTEKIFBBU1MgZXZlbnQuY2xpcGJvYXJkRGF0
YS5nZXREYXRhKCJ1cmwiKSBpcyAiIgogUEFTUyBldmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEo
InRleHQvcGxhaW4iKSBpcyAiIgogUEFTUyBldmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEoInRl
eHQvdXJpLWxpc3QiKSBpcyAiIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL3Bhc3RlLWltYWdlLWRvZXMtbm90LXJldmVhbC1maWxlLXVybC5odG1sIGIvTGF5b3V0
VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLWRvZXMtbm90LXJldmVhbC1maWxl
LXVybC5odG1sCmluZGV4IDJkNWU4ZWVlOWZkZDRhZTY5Mzg3YzY2YmZmOTgwNjkzZGU0MjQ3NzAu
LmU4ZWY3MDM0NjU4ZTllNDZmNWU4MmRiN2RhZTViYjhiZGY1YmZiMzEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1pbWFnZS1kb2VzLW5vdC1yZXZlYWwt
ZmlsZS11cmwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUt
aW1hZ2UtZG9lcy1ub3QtcmV2ZWFsLWZpbGUtdXJsLmh0bWwKQEAgLTMxLDcgKzMxLDcgQEAgZnVu
Y3Rpb24gcnVuVGVzdCgpCiAKIGZ1bmN0aW9uIGNoZWNrKGV2ZW50KQogewotICAgIHNob3VsZEJl
RXF1YWxUb1N0cmluZygnSlNPTi5zdHJpbmdpZnkoZXZlbnQuY2xpcGJvYXJkRGF0YS50eXBlcykn
LCAnWyJGaWxlcyJdJyk7CisgICAgc2hvdWxkTm90QmUoJ2V2ZW50LmNsaXBib2FyZERhdGEudHlw
ZXMuaW5kZXhPZigiRmlsZXMiKScsICctMScpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
ZXZlbnQuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCJ1cmwiKScsICcnKTsKICAgICBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoJ2V2ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgidGV4dC9wbGFpbiIpJywg
JycpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZXZlbnQuY2xpcGJvYXJkRGF0YS5nZXRE
YXRhKCJ0ZXh0L3VyaS1saXN0IiknLCAnJyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333453</attachid>
            <date>2018-02-09 00:03:03 -0800</date>
            <delta_ts>2018-02-09 08:53:12 -0800</delta_ts>
            <desc>Fix non-Cocoa platforms</desc>
            <filename>bug-182636-20180209000255.patch</filename>
            <type>text/plain</type>
            <size>50259</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmI4ZjBmMmU5YWY4MWE2
ZjMyNjBiYzY2NmNhMjZlMTQzNzQzODk5Ny4uZDU1M2NlZGZjYzU1NjQ1MmJhNDc4NDkwYzkxY2Vi
M2YwOTMwYjBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg2IEBACisyMDE4LTAyLTA4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFBhc3RpbmcgZnJv
bSBFeGNlbCBubyBsb25nZXIgcHJvdmlkZXMgdGV4dC9odG1sIGRhdGEKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjYzNgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMzcwODcwNjA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWZ0ZXIgcjIyMjY1Niwgd2UgdHJlYXQgaW1hZ2VzIG9uIHRoZSBwYXN0ZWJv
YXJkIGFzIGZpbGVzLiBIb3dldmVyLCB3ZSBhbHNvIGhhdmUgYW4gZXhpc3RpbmcgcG9saWN5IHdo
aWNoIGhpZGVzCisgICAgICAgIHRleHQgZGF0YSAoInRleHQvdXJpLWxpc3QiLCAidGV4dC9odG1s
IiwgInRleHQvcGxhaW4iKSBmcm9tIHRoZSBwYWdlIHdoZW4gZmlsZXMgYXJlIHByZXNlbnQgb24g
dGhlIHBhc3RlYm9hcmQuCisgICAgICAgIFdoZW4gY29weWluZyBhIHRhYmxlLCBNaWNyb3NvZnQg
RXhjZWwgd3JpdGVzIGEgcmVuZGVyaW5nIG9mIHRoZSB0YWJsZSB0byB0aGUgcGFzdGVib2FyZCBh
cyBhbiBpbWFnZS4gVGhpcyBtZWFucworICAgICAgICB0aGF0IHdlJ2xsIGhpZGUgb3RoZXIgZGF0
YSB0eXBlcyAoaW1wb3J0YW50bHksICd0ZXh0L2h0bWwnKSB1cG9uIHBhc3RpbmcsIGV2ZW4gdGhv
dWdoIGltcG9ydGFudCBjbGllbnRzIChzdWNoIGFzCisgICAgICAgIEdvb2dsZSBEb2NzIGFuZCBD
b25mbHVlbmNlKSBkZXBlbmQgb24gdGhlICd0ZXh0L2h0bWwnIGRhdGEgaW4gb3JkZXIgdG8gY29y
cmVjdGx5IGhhbmRsZSB0aGUgcGFzdGUgKHJhdGhlciB0aGFuCisgICAgICAgIHBhc3RlIGFzIGFu
IGltYWdlIG9mIGEgdGFibGUpLgorCisgICAgICAgIFRvIGZpeCB0aGlzLCB3ZSBhZGQgYW4gZXhj
ZXB0aW9uIHRvIHRoZSBEYXRhVHJhbnNmZXIuZ2V0RGF0YSBjb2RlcGF0aCB3aGVuIHRoZSBwYXN0
ZWJvYXJkIGNvbnRhaW5zIGZpbGVzLgorICAgICAgICBJbnN0ZWFkIG9mIGFsd2F5cyByZXR1cm5p
bmcgdGhlIGVtcHR5IHN0cmluZyBmb3IgdGV4dC9odG1sLCB3ZSBzdGlsbCBhbGxvdyBwYXN0ZWJv
YXJkIGFjY2VzcywgYnV0IG9ubHkgcmVhZAorICAgICAgICBmcm9tIGEgbGltaXRlZCBzZXQgb2Yg
cmljaCB0ZXh0IHR5cGVzLCBpLmUuIHdlYiBhcmNoaXZlLCBSVEYoRCksIGFuZCBIVE1MIG1hcmt1
cC4gSW1wb3J0YW50bHksIHRoaXMgcHJldmVudHMKKyAgICAgICAgdXMgZnJvbSBleHBvc2luZyBh
bnkgZmlsZSBwYXRocyB0aGF0IGFwcGVhciBhcyBwbGFpbiB0ZXh0IG9yIFVSTHMgb24gdGhlIHBh
c3RlYm9hcmQuIEp1c3QgYXMgaW4gdGhlIHJlZ3VsYXIKKyAgICAgICAgY29kZXBhdGggZm9yIGdl
dERhdGEoKSwgaWYgdGhlIHBhc3RlYm9hcmQgZGF0YSBjb21lcyBmcm9tIHRoZSBzYW1lIG9yaWdp
biwgd2UgYWxsb3cgdW5zYW5pdGl6ZWQgYWNjZXNzOworICAgICAgICBvdGhlcndpc2UsIHdlIHVz
ZSBXZWJDb250ZW50TWFya3VwUmVhZGVyIHRvIGV4dHJhY3QgbWFya3VwIGZyb20gdGhlIHBhc3Rl
Ym9hcmQuCisKKyAgICAgICAgVGVzdHM6ICBQYXN0ZU1peGVkQ29udGVudC5QYXN0ZUltYWdlQW5k
UGxhaW5UZXh0CisgICAgICAgICAgICAgICAgUGFzdGVNaXhlZENvbnRlbnQuUGFzdGVJbWFnZUFu
ZFdlYkFyY2hpdmUKKyAgICAgICAgICAgICAgICBQYXN0ZU1peGVkQ29udGVudC5QYXN0ZUltYWdl
QW5kSFRNTAorICAgICAgICAgICAgICAgIFBhc3RlTWl4ZWRDb250ZW50LlBhc3RlSW1hZ2VBbmRS
VEYKKyAgICAgICAgICAgICAgICBEYXRhSW50ZXJhY3Rpb25UZXN0cy5EYXRhVHJhbnNmZXJHZXRE
YXRhV2hlbkRyb3BwaW5nSW1hZ2VBbmRNYXJrdXAKKworICAgICAgICBBbHNvIHJlYmFzZWxpbmVk
IHNvbWUgbGF5b3V0IHRlc3RzLCB3aGljaCBjb3ZlciBjaGFuZ2VzIGluIGJlaGF2aW9yIHdoZW4g
ZHJvcHBpbmcgb24gbWFjT1MgYW5kIHBhc3Rpbmcgb24gaU9TLgorCisgICAgICAgICogZG9tL0Rh
dGFUcmFuc2Zlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OmdldERhdGFG
b3JJdGVtIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6cmVhZFBhc3Rl
Ym9hcmREYXRhRm9yQmluZGluZ3NSZXNwZWN0aW5nT3JpZ2luIGNvbnN0KToKKworICAgICAgICBG
YWN0b3Igb3V0IGxvZ2ljIGZvciByZWFkaW5nIGZyb20gdGhlIHBhc3RlYm9hcmQgaW50byBhIHBy
aXZhdGUgaGVscGVyLiBUaGlzIGlzIGNhbGxlZCBpbiB0d28gcGxhY2VzIGZyb20KKyAgICAgICAg
Z2V0RGF0YUZvckl0ZW06IGluIHRoZSBub3JtYWwgKGV4aXN0aW5nKSBwYXRoLCBhbmQgaW4gdGhl
IGNhc2Ugd2hlcmUgd2UgYWxsb3cgJ3RleHQvaHRtbCcgdG8gYmUgcmVhZCBkZXNwaXRlCisgICAg
ICAgIGZpbGVzIGFwcGVhcmluZyBpbiB0aGUgcGFzdGVib2FyZC4KKworICAgICAgICBPbmUgaW1w
b3J0YW50IGRpZmZlcmVuY2UgaGVyZSBpcyB0aGF0IHRoaXMgaGVscGVyIG5vdyB0YWtlcyBhIFdl
YkNvbnRlbnRSZWFkaW5nUG9saWN5LCB3aG9zZSBwdXJwb3NlIGlzIHRvCisgICAgICAgIHByZXZl
bnQgcmVhZGluZyBmcm9tIG5vbi1yaWNoLXRleHQgdHlwZXMgd2hlbiBmaWxlcyBhcHBlYXIgaW4g
dGhlIHBhc3RlYm9hcmQuCisKKyAgICAgICAgQW5vdGhlciB0d2VhayBoZXJlIGlzIHRoYXQgd2Ug
bm93IHVzZSBgbG93ZXJjYXNlVHlwZWAgaW5zdGVhZCBvZiB0aGUgb3JpZ2luYWwgKHVuYWRqdXN0
ZWQpIGB0eXBlYCB3aGVuIHJlYWRpbmcKKyAgICAgICAgZnJvbSB0aGUgcGFzdGVib2FyZC4gVGhp
cyBkb2Vzbid0IHNlZW0gdG8gYmUgaW50ZW5kZWQgaW4gdGhlIGZpcnN0IHBsYWNlLgorCisgICAg
ICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnR5cGVzIGNvbnN0KToKKworICAgICAgICBUd2Vh
ayB0aGUgaW1wbGVtZW50YXRpb24gb2YgRGF0YVRyYW5zZmVyLnR5cGVzKCkgaW4gdGhlIGNhc2Ug
d2hlcmUgZmlsZXMgZXhpc3Qgb24gdGhlIHBhc3RlYm9hcmQuIEN1cnJlbnRseSwgd2UKKyAgICAg
ICAgbnVrZSB0aGUgcmVzdWx0IG9mIGBzYWZlVHlwZXNgIGFuZCByZXBsYWNlIGl0IHdpdGggYSBz
aW5nbGUgVmVjdG9yIGNvbnRhaW5pbmcgIkZpbGVzIiwgYW5kIHRoZW4gYWRkCisgICAgICAgICJ0
ZXh0L3VyaS1saXN0IiBpZiBpdCBleGlzdHMgb24gdGhlIHBhc3RlYm9hcmQuIEluc3RlYWQsIHdv
cmsgYmFja3dhcmRzLCBhZGRpbmcgdGhlICJGaWxlcyIgdHlwZSBhbmQgcmVtb3ZpbmcKKyAgICAg
ICAgInRleHQvcGxhaW4iLiBJIG9wdGVkIGZvciB0aGlzIGJlY2F1c2UgaXQgc2VlbXMgbGVzcyBo
YWNreSB0aGFuIGFwcGVuZGluZyAidGV4dC9odG1sIiBzZXBhcmF0ZWx5LCBvbiB0b3Agb2YKKyAg
ICAgICAgInRleHQvdXJpLWxpc3QiLgorCisgICAgICAgICogZG9tL0RhdGFUcmFuc2Zlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKworICAgICAgICBJbnRyb2R1Y2UgV2Vi
Q29udGVudFJlYWRpbmdQb2xpY3ksIHdoaWNoIGluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB3ZSBz
aG91bGQgbGltaXQgd2ViIGNvbnRlbnQgcmVhZGluZyBmcm9tIHRoZQorICAgICAgICBwYXN0ZWJv
YXJkIHRvIG9ubHkgcmljaCB0ZXh0IHR5cGVzIHVwb24gcGFzdGUgb3IgZHJvcC4gTm9ybWFsbHks
IHdlIGFsbG93IGFsbCB0eXBlcyB0byBiZSByZWFkIGFzIHdlYiBjb250ZW50CisgICAgICAgICg6
OlJlYWRGcm9tQW55VHlwZSksIGJ1dCB3aGVuIGZpbGVzIGFwcGVhciBvbiB0aGUgcGFzdGVib2Fy
ZCwgd2UgZm9yY2UgT25seVJlYWRGcm9tUmljaFRleHRUeXBlcyB0byBlbnN1cmUgdGhhdAorICAg
ICAgICBubyBvdGhlciB0eXBlcyBjYW4gdW5pbnRlbnRpb25hbGx5IGJlIHJlYWQgYmFjayBhcyB3
ZWIgY29udGVudC4KKworICAgICAgICAqIHBsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaDoKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbToKKworICAgICAgICBUZWFjaCBQ
YXN0ZWJvYXJkIChvbiBpT1MpIHRvIHJlc3BlY3QgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAg
KiBwbGF0Zm9ybS93cGUvUGFzdGVib2FyZFdQRS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkKToKKworICAgICAgICBBZGp1c3Qgbm9uLUNvY29hIFBhc3RlYm9hcmQgaW1w
bGVtZW50YXRpb25zIGZvciBhbiBpbnRlcmZhY2UgY2hhbmdlLgorCisgICAgICAgIChXZWJDb3Jl
Ojp0eXBlSXNBcHByb3ByaWF0ZUZvcldlYkNvbnRlbnRSZWFkaW5nUG9saWN5KToKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2Fy
ZDo6cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZE1hYy5tbToKKworICAgICAgICBUZWFjaCBQYXN0ZWJvYXJkIChvbiBtYWNPUykg
dG8gcmVzcGVjdCBXZWJDb250ZW50UmVhZGluZ1BvbGljeS4KKworICAgICAgICAoV2ViQ29yZTo6
UGFzdGVib2FyZDo6cmVhZCk6CisKIDIwMTgtMDItMDggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIENvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1NMaXN0ZW5lciBz
aG91bGQgYmUgYSBXZWJQcm9jZXNzIHNpbmdsZXRvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVy
LmNwcAppbmRleCBjMTA5NDIzZTljOWRlMjBjODI2YjBlNzdkOGY5NmRmODQzMmZkNjg3Li43ZTY1
OWM3NmE5ZWQyN2FlOGYwMWI3NmUwNzcxMGMzZWJkM2JiMGRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0
YVRyYW5zZmVyLmNwcApAQCAtMTU0LDkgKzE1NCwyNiBAQCBTdHJpbmcgRGF0YVRyYW5zZmVyOjpn
ZXREYXRhRm9ySXRlbShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
cwogICAgICAgICAgICAgaWYgKFBhc3RlYm9hcmQ6OmNhbkV4cG9zZVVSTFRvRE9NV2hlblBhc3Rl
Ym9hcmRDb250YWluc0ZpbGVzKHVybFN0cmluZykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHVy
bFN0cmluZzsKICAgICAgICAgfQorCisgICAgICAgIGlmIChsb3dlcmNhc2VUeXBlID09ICJ0ZXh0
L2h0bWwiICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3VzdG9t
UGFzdGVib2FyZERhdGFFbmFibGVkKCkpIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSBwYXN0ZWJv
YXJkIGNvbnRhaW5zIGZpbGVzIGFuZCB0aGUgcGFnZSByZXF1ZXN0cyAndGV4dC9odG1sJywgd2Ug
b25seSByZWFkIGZyb20gcmljaCB0ZXh0IHR5cGVzIHRvIHByZXZlbnQgZmlsZQorICAgICAgICAg
ICAgLy8gcGF0aHMgZnJvbSBsZWFraW5nIChlLmcuIGZyb20gcGxhaW4gdGV4dCBkYXRhIG9uIHRo
ZSBwYXN0ZWJvYXJkKS4gV2UgcmVxdWlyZSBjdXN0b20gcGFzdGVib2FyZCBkYXRhIGZvciB0aGlz
IGJlY2F1c2UKKyAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgZWl0aGVyOgor
ICAgICAgICAgICAgLy8gICAtIGFsbCBtYXJrdXAgcmVwb3J0ZWQgdG8gdGhlIHBhZ2UgdW5kZXJn
b2VzIHNhbml0aXphdGlvbiwgb3IKKyAgICAgICAgICAgIC8vICAgLSB0aGUgY3VzdG9tIHBhc3Rl
Ym9hcmQgZGF0YSdzIG9yaWdpbiBtYXRjaGVzIHRoZSBkb2N1bWVudCBvcmlnaW4KKyAgICAgICAg
ICAgIC8vIFRoaXMgbWVhbnMgdGhhdCBpZiBjdXN0b20gcGFzdGVib2FyZCBkYXRhIGlzIGRpc2Fi
bGVkIGFuZCB0aGVyZSBpcyBhIGZpbGUgb24gdGhlIHBhc3RlYm9hcmQsIHdlIHJldmVydCB0byBv
dXIgbGVnYWN5CisgICAgICAgICAgICAvLyBiZWhhdmlvciBvZiBzaW1wbHkgcmV0dXJuaW5nIGFu
IGVtcHR5IHN0cmluZy4KKyAgICAgICAgICAgIHJldHVybiByZWFkUGFzdGVib2FyZERhdGFGb3JC
aW5kaW5nc1Jlc3BlY3RpbmdPcmlnaW4oZG9jdW1lbnQsIGxvd2VyY2FzZVR5cGUsIFdlYkNvbnRl
bnRSZWFkaW5nUG9saWN5OjpPbmx5UmVhZEZyb21SaWNoVGV4dFR5cGVzKTsKKyAgICAgICAgfQor
CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCisgICAgcmV0dXJuIHJlYWRQYXN0ZWJvYXJk
RGF0YUZvckJpbmRpbmdzUmVzcGVjdGluZ09yaWdpbihkb2N1bWVudCwgbG93ZXJjYXNlVHlwZSwg
V2ViQ29udGVudFJlYWRpbmdQb2xpY3k6OlJlYWRGcm9tQW55VHlwZSk7Cit9CisKK1N0cmluZyBE
YXRhVHJhbnNmZXI6OnJlYWRQYXN0ZWJvYXJkRGF0YUZvckJpbmRpbmdzUmVzcGVjdGluZ09yaWdp
bihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbG93ZXJjYXNlVHlwZSwgV2ViQ29u
dGVudFJlYWRpbmdQb2xpY3kgcG9saWN5KSBjb25zdAorewogICAgIGlmICghUnVudGltZUVuYWJs
ZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuIG1fcGFzdGVib2FyZC0+cmVhZFN0cmluZyhsb3dlcmNhc2VUeXBl
KTsKIApAQCAtMTcwLDE1ICsxODcsMTUgQEAgU3RyaW5nIERhdGFUcmFuc2Zlcjo6Z2V0RGF0YUZv
ckl0ZW0oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnMKICAgICBp
ZiAoIVBhc3RlYm9hcmQ6OmlzU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZShsb3dlcmNhc2VU
eXBlKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGlmICghaXM8U3RhdGljUGFzdGVib2Fy
ZD4oKm1fcGFzdGVib2FyZCkgJiYgdHlwZSA9PSAidGV4dC9odG1sIikgeworICAgIGlmICghaXM8
U3RhdGljUGFzdGVib2FyZD4oKm1fcGFzdGVib2FyZCkgJiYgbG93ZXJjYXNlVHlwZSA9PSAidGV4
dC9odG1sIikgewogICAgICAgICBpZiAoIWRvY3VtZW50LmZyYW1lKCkpCiAgICAgICAgICAgICBy
ZXR1cm4geyB9OwogICAgICAgICBXZWJDb250ZW50TWFya3VwUmVhZGVyIHJlYWRlciB7ICpkb2N1
bWVudC5mcmFtZSgpIH07Ci0gICAgICAgIG1fcGFzdGVib2FyZC0+cmVhZChyZWFkZXIpOworICAg
ICAgICBtX3Bhc3RlYm9hcmQtPnJlYWQocmVhZGVyLCBwb2xpY3kpOwogICAgICAgICByZXR1cm4g
cmVhZGVyLm1hcmt1cDsKICAgICB9CiAKLSAgICByZXR1cm4gbV9wYXN0ZWJvYXJkLT5yZWFkU3Ry
aW5nKHR5cGUpOworICAgIHJldHVybiBtX3Bhc3RlYm9hcmQtPnJlYWRTdHJpbmcobG93ZXJjYXNl
VHlwZSk7CiB9CiAKIFN0cmluZyBEYXRhVHJhbnNmZXI6OmdldERhdGEoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CkBAIC0yODMsMjAgKzMwMCwyMCBAQCBWZWN0
b3I8U3RyaW5nPiBEYXRhVHJhbnNmZXI6OnR5cGVzKEFkZEZpbGVzVHlwZSBhZGRGaWxlc1R5cGUp
IGNvbnN0CiAgICAgfQogCiAgICAgYXV0byBzYWZlVHlwZXMgPSBtX3Bhc3RlYm9hcmQtPnR5cGVz
U2FmZUZvckJpbmRpbmdzKG1fb3JpZ2luSWRlbnRpZmllcik7CisgICAgQVNTRVJUKCFzYWZlVHlw
ZXMuY29udGFpbnMoIkZpbGVzIikpOworCiAgICAgYm9vbCBoYXNGaWxlQmFja2VkSXRlbSA9IG1f
aXRlbUxpc3QgJiYgbV9pdGVtTGlzdC0+aGFzSXRlbXMoKSAmJiBub3RGb3VuZCAhPSBtX2l0ZW1M
aXN0LT5pdGVtcygpLmZpbmRNYXRjaGluZyhbXSAoY29uc3QgYXV0byYgaXRlbSkgewogICAgICAg
ICByZXR1cm4gaXRlbS0+aXNGaWxlKCk7CiAgICAgfSk7CiAKICAgICBpZiAoaGFzRmlsZUJhY2tl
ZEl0ZW0gfHwgbV9wYXN0ZWJvYXJkLT5jb250YWluc0ZpbGVzKCkpIHsKLSAgICAgICAgVmVjdG9y
PFN0cmluZz4gdHlwZXM7CiAgICAgICAgIGlmIChhZGRGaWxlc1R5cGUgPT0gQWRkRmlsZXNUeXBl
OjpZZXMpCi0gICAgICAgICAgICB0eXBlcy5hcHBlbmQoQVNDSUlMaXRlcmFsKCJGaWxlcyIpKTsK
LSAgICAgICAgaWYgKHNhZmVUeXBlcy5jb250YWlucygidGV4dC91cmktbGlzdCIpKQotICAgICAg
ICAgICAgdHlwZXMuYXBwZW5kKEFTQ0lJTGl0ZXJhbCgidGV4dC91cmktbGlzdCIpKTsKLSAgICAg
ICAgcmV0dXJuIHR5cGVzOworICAgICAgICAgICAgc2FmZVR5cGVzLmFwcGVuZChBU0NJSUxpdGVy
YWwoIkZpbGVzIikpOworICAgICAgICAvLyBXZSBkb24ndCBleHBvc2UgJ3RleHQvcGxhaW4nIHRv
IHRoZSBwYWdlIGlmIHRoZSBwYXN0ZWJvYXJkIGNvbnRhaW5zIGZpbGVzLCBiZWNhdXNlIHBsYWlu
IHRleHQgZGF0YSBtYXkgY29udGFpbiBmaWxlIHBhdGhzLgorICAgICAgICBzYWZlVHlwZXMucmVt
b3ZlRmlyc3QoInRleHQvcGxhaW4iKTsKKyAgICAgICAgcmV0dXJuIHNhZmVUeXBlczsKICAgICB9
CiAKLSAgICBBU1NFUlQoIXNhZmVUeXBlcy5jb250YWlucygiRmlsZXMiKSk7CiAgICAgcmV0dXJu
IHNhZmVUeXBlczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFu
c2Zlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCmluZGV4IDMxZGM3OTlm
YzdlZjdjNzAzNzY3NDc3NTQ3YzRjYjM0MGU0MTAyMzQuLjdmZDVhMWEwNmYyNjlhMTY5ZGYxNDcw
N2Q4MWUwNzY5MTYxZDllMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJh
bnNmZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKQEAgLTM5LDYg
KzM5LDcgQEAgY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZpbGVMaXN0OwogY2xhc3MgRmlsZTsKIGNs
YXNzIFBhc3RlYm9hcmQ7CitlbnVtIGNsYXNzIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5OwogCiBj
bGFzcyBEYXRhVHJhbnNmZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxEYXRhVHJhbnNmZXI+IHsKIHB1
YmxpYzoKQEAgLTEyMSw2ICsxMjIsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgZm9yRmlsZURyYWco
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogI2VuZGlmCiAKKyAgICBTdHJpbmcgcmVhZFBhc3Rl
Ym9hcmREYXRhRm9yQmluZGluZ3NSZXNwZWN0aW5nT3JpZ2luKERvY3VtZW50JiwgY29uc3QgU3Ry
aW5nJiBsb3dlcmNhc2VUeXBlLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSkgY29uc3Q7CiAgICAg
Ym9vbCBzaG91bGRTdXBwcmVzc0dldEFuZFNldERhdGFUb0F2b2lkRXhwb3NpbmdGaWxlUGF0aHMo
KSBjb25zdDsKIAogICAgIGVudW0gY2xhc3MgQWRkRmlsZXNUeXBlIHsgTm8sIFllcyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCmluZGV4IGU5MTdjYzM5YzU0NzMyNDg3MGRmOTVk
OGNjY2ViYmIwZTJmNzExNzYuLjhiM2E4YjQxMWNkMGMwYzczNDg4YzU3NmI4NTI0YWM4MDE4YmY5
NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKQEAgLTY0LDYgKzY0LDcgQEAg
Y2xhc3MgUmFuZ2U7CiBjbGFzcyBTZWxlY3Rpb25EYXRhOwogY2xhc3MgU2hhcmVkQnVmZmVyOwog
CitlbnVtIGNsYXNzIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5IHsgUmVhZEZyb21BbnlUeXBlLCBP
bmx5UmVhZEZyb21SaWNoVGV4dFR5cGVzIH07CiBlbnVtIFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVk
VGV4dEZvckRhdGFUcmFuc2ZlciB7IERlZmF1bHRTZWxlY3RlZFRleHRUeXBlLCBJbmNsdWRlSW1h
Z2VBbHRUZXh0Rm9yRGF0YVRyYW5zZmVyIH07CiAKIC8vIEZvciB3cml0aW5nIHRvIHRoZSBwYXN0
ZWJvYXJkLiBHZW5lcmFsbHkgc29ydGVkIHdpdGggdGhlIHJpY2hlc3QgZm9ybWF0cyBvbiB0b3Au
CkBAIC0yMDksNyArMjEwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQg
dm9pZCBjbGVhcihjb25zdCBTdHJpbmcmIHR5cGUpOwogCiAgICAgdmlydHVhbCBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYpOwotICAgIHZpcnR1YWwgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJik7CisgICAgdmly
dHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXIm
LCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSA9IFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5OjpSZWFk
RnJvbUFueVR5cGUpOwogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3Rl
Ym9hcmRGaWxlUmVhZGVyJik7CiAKICAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgd3Jp
dGUoY29uc3QgUGFzdGVib2FyZFVSTCYpOwpAQCAtMjczLDcgKzI3NCw3IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIGJvb2wgcmVzcGVjdHNVVElGaWRlbGl0aWVz
KCkgY29uc3Q7Ci0gICAgdm9pZCByZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVib2Fy
ZFdlYkNvbnRlbnRSZWFkZXImKTsKKyAgICB2b2lkIHJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGll
cyhQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5KTsK
IAogICAgIGVudW0gY2xhc3MgUmVhZGVyUmVzdWx0IHsKICAgICAgICAgUmVhZFR5cGUsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKaW5kZXggNmEzOTM0ZGE0NmQ4
YmYzOWVjZTAyNTRiYzdjNWQ5OTc4ZDk4ZGQzNS4uMDA3ZTQzYTE4ZWM1N2Y3YjcwYzliNGYwMzRk
N2I3NTBkYTdjNGI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGlj
UGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9h
cmQuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbGVhcihjb25zdCBTdHJp
bmcmIHR5cGUpIGZpbmFsOwogCiAgICAgdm9pZCByZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmKSBm
aW5hbCB7IH0KLSAgICB2b2lkIHJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImKSBmaW5h
bCB7IH0KKyAgICB2b2lkIHJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250
ZW50UmVhZGluZ1BvbGljeSkgZmluYWwgeyB9CiAKICAgICB2b2lkIHdyaXRlKGNvbnN0IFBhc3Rl
Ym9hcmRVUkwmKSBmaW5hbCB7IH0KICAgICB2b2lkIHdyaXRlKGNvbnN0IFBhc3RlYm9hcmRJbWFn
ZSYpIGZpbmFsIHsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bh
c3RlYm9hcmRHdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRH
dGsuY3BwCmluZGV4IGE4ZDVlNTk5Yzg1NzNmMGRhODYyNjNmN2I2ZTZhYjJjZGFlNGI4NzcuLjk5
ZDEyMDNkNjMwZjQyMTFmM2ZlYzhjYmVhZjIzMDUyMzM1NmQwNjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKQEAgLTIzNiw3ICsyMzYsNyBAQCB2
b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCkKICAgICB0ZXh0
LnRleHQgPSBtX3NlbGVjdGlvbkRhdGEtPnRleHQoKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpy
ZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJikKK3ZvaWQgUGFzdGVib2FyZDo6cmVhZChQ
YXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5KQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCmluZGV4
IGI4ODc5ODQ3NmZjY2U1MDMyZWQ4YzVlZDg2OGRlYTBkOWZjNjFmNDUuLjFlOGQyNzNkYmRmY2My
MTkzMzg0NjY0M2EyMmEzZTRkNmQ4NTJhMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9QYXN0ZWJvYXJkSU9TLm1tCkBAIC0xNjMsNiArMTYzLDExIEBAIHN0YXRpYyBOU0FycmF5
KiBzdXBwb3J0ZWRJbWFnZVR5cGVzKCkKICAgICByZXR1cm4gQFsoaWQpa1VUVHlwZVBORywgKGlk
KWtVVFR5cGVUSUZGLCAoaWQpa1VUVHlwZUpQRUcsIChpZClrVVRUeXBlR0lGXTsKIH0KIAorc3Rh
dGljIGJvb2wgdHlwZUlzQXBwcm9wcmlhdGVGb3JXZWJDb250ZW50UmVhZGluZ1BvbGljeShOU1N0
cmluZyAqdHlwZSwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kgcG9saWN5KQoreworICAgIHJldHVy
biBwb2xpY3kgPT0gV2ViQ29udGVudFJlYWRpbmdQb2xpY3k6OlJlYWRGcm9tQW55VHlwZSB8fCBb
dHlwZSBpc0VxdWFsVG9TdHJpbmc6V2ViQXJjaGl2ZVBib2FyZFR5cGVdIHx8IFt0eXBlIGlzRXF1
YWxUb1N0cmluZzooTlNTdHJpbmcgKilrVVRUeXBlSFRNTF0gfHwgW3R5cGUgaXNFcXVhbFRvU3Ry
aW5nOihOU1N0cmluZyAqKWtVVFR5cGVSVEZdIHx8IFt0eXBlIGlzRXF1YWxUb1N0cmluZzooTlNT
dHJpbmcgKilrVVRUeXBlRmxhdFJURkRdOworfQorCiBQYXN0ZWJvYXJkOjpSZWFkZXJSZXN1bHQg
UGFzdGVib2FyZDo6cmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZvclR5cGUoUGFzdGVib2Fy
ZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSwg
TlNTdHJpbmcgKnR5cGUsIGludCBpdGVtSW5kZXgpCiB7CiAgICAgaWYgKFt0eXBlIGlzRXF1YWxU
b1N0cmluZzpXZWJBcmNoaXZlUGJvYXJkVHlwZV0pIHsKQEAgLTIyNSwxMSArMjMwLDExIEBAIFBh
c3RlYm9hcmQ6OlJlYWRlclJlc3VsdCBQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRl
bnREYXRhRm9yVHlwZShQYXN0ZWJvCiAgICAgcmV0dXJuIFJlYWRlclJlc3VsdDo6RGlkTm90UmVh
ZFR5cGU7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJl
YWRlciYgcmVhZGVyKQordm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50
UmVhZGVyJiByZWFkZXIsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5IHBvbGljeSkKIHsKICAgICBy
ZWFkZXIuY29udGVudE9yaWdpbiA9IHJlYWRPcmlnaW4oKTsKICAgICBpZiAocmVzcGVjdHNVVElG
aWRlbGl0aWVzKCkpIHsKLSAgICAgICAgcmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKHJlYWRl
cik7CisgICAgICAgIHJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyhyZWFkZXIsIHBvbGljeSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI0NSw5ICsyNTAsMTQgQEAgdm9pZCBQYXN0
ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIpCiAKICAgICBm
b3IgKGludCBpID0gMDsgaSA8IG51bWJlck9mSXRlbXM7IGkrKykgewogICAgICAgICBmb3IgKGlu
dCB0eXBlSW5kZXggPSAwOyB0eXBlSW5kZXggPCBudW1iZXJPZlR5cGVzOyB0eXBlSW5kZXgrKykg
ewotICAgICAgICAgICAgYXV0byBpdGVtUmVzdWx0ID0gcmVhZFBhc3RlYm9hcmRXZWJDb250ZW50
RGF0YUZvclR5cGUocmVhZGVyLCBzdHJhdGVneSwgW3R5cGVzIG9iamVjdEF0SW5kZXg6dHlwZUlu
ZGV4XSwgaSk7CisgICAgICAgICAgICBOU1N0cmluZyAqdHlwZSA9IFt0eXBlcyBvYmplY3RBdElu
ZGV4OnR5cGVJbmRleF07CisgICAgICAgICAgICBpZiAoIXR5cGVJc0FwcHJvcHJpYXRlRm9yV2Vi
Q29udGVudFJlYWRpbmdQb2xpY3kodHlwZSwgcG9saWN5KSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICAgICAgYXV0byBpdGVtUmVzdWx0ID0gcmVhZFBhc3RlYm9hcmRXZWJD
b250ZW50RGF0YUZvclR5cGUocmVhZGVyLCBzdHJhdGVneSwgdHlwZSwgaSk7CiAgICAgICAgICAg
ICBpZiAoaXRlbVJlc3VsdCA9PSBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0
ZXJuYWxseSkKICAgICAgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgICAgIGlmIChpdGVt
UmVzdWx0ID09IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUpCiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KQEAgLTI2MiwxNCArMjcyLDE0IEBAIGJvb2wgUGFzdGVib2FyZDo6cmVzcGVj
dHNVVElGaWRlbGl0aWVzKCkgY29uc3QKICAgICByZXR1cm4gbV9wYXN0ZWJvYXJkTmFtZSA9PSAi
ZGF0YSBpbnRlcmFjdGlvbiBwYXN0ZWJvYXJkIjsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpyZWFk
UmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRl
cikKK3ZvaWQgUGFzdGVib2FyZDo6cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKFBhc3RlYm9h
cmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5IHBvbGlj
eSkKIHsKICAgICBBU1NFUlQocmVzcGVjdHNVVElGaWRlbGl0aWVzKCkpOwogICAgIGF1dG8mIHN0
cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKTsKICAg
ICBmb3IgKE5TVUludGVnZXIgaW5kZXggPSAwLCBudW1iZXJPZkl0ZW1zID0gc3RyYXRlZ3kuZ2V0
UGFzdGVib2FyZEl0ZW1zQ291bnQobV9wYXN0ZWJvYXJkTmFtZSk7IGluZGV4IDwgbnVtYmVyT2ZJ
dGVtczsgKytpbmRleCkgewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgICAg
IGF1dG8gaW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIG1f
cGFzdGVib2FyZE5hbWUpOwotICAgICAgICBib29sIGNhblJlYWRBdHRhY2htZW50ID0gUnVudGlt
ZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5hdHRhY2htZW50RWxlbWVudEVuYWJs
ZWQoKSAmJiAhaW5mby5wYXRoRm9yRmlsZVVwbG9hZC5pc0VtcHR5KCk7CisgICAgICAgIGJvb2wg
Y2FuUmVhZEF0dGFjaG1lbnQgPSBwb2xpY3kgPT0gV2ViQ29udGVudFJlYWRpbmdQb2xpY3k6OlJl
YWRGcm9tQW55VHlwZSAmJiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpICYmICFpbmZvLnBhdGhGb3JGaWxlVXBsb2FkLmlz
RW1wdHkoKTsKICAgICAgICAgaWYgKGNhblJlYWRBdHRhY2htZW50ICYmIGluZm8ucHJlZmVycmVk
UHJlc2VudGF0aW9uU3R5bGUgPT0gUGFzdGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZTo6QXR0
YWNobWVudCkgewogICAgICAgICAgICAgcmVhZGVyLnJlYWRGaWxlUGF0aHMoeyBpbmZvLnBhdGhG
b3JGaWxlVXBsb2FkIH0pOwogICAgICAgICAgICAgY29udGludWU7CkBAIC0yODEsNiArMjkxLDkg
QEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVib2Fy
ZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlcikKICAgICAgICAgc3RyYXRlZ3kuZ2V0VHlwZXNCeUZp
ZGVsaXR5Rm9ySXRlbUF0SW5kZXgodHlwZXNGb3JJdGVtSW5PcmRlck9mRmlkZWxpdHksIGluZGV4
LCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICAgICAgUmVhZGVyUmVzdWx0IHJlc3VsdCA9IFJlYWRl
clJlc3VsdDo6RGlkTm90UmVhZFR5cGU7CiAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IHR5cGVz
Rm9ySXRlbUluT3JkZXJPZkZpZGVsaXR5KSB7CisgICAgICAgICAgICBpZiAoIXR5cGVJc0FwcHJv
cHJpYXRlRm9yV2ViQ29udGVudFJlYWRpbmdQb2xpY3kodHlwZSwgcG9saWN5KSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAgICAgcmVzdWx0ID0gcmVhZFBhc3RlYm9hcmRX
ZWJDb250ZW50RGF0YUZvclR5cGUocmVhZGVyLCBzdHJhdGVneSwgdHlwZSwgaW5kZXgpOwogICAg
ICAgICAgICAgaWYgKHJlc3VsdCA9PSBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2Vk
RXh0ZXJuYWxseSkKICAgICAgICAgICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGMyNmM5MDRkYjhiNDEwMTYyZWI3Nzll
NGRiNTQ5OTUwZGU0MTU4ZGEuLjY4ZmZmOWUwOTc2Y2EyYmFkNjIyYTcxYzM3YmU5NDQ0YWM5M2I4
YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCkBA
IC0zMzEsNyArMzMxLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRl
eHQmIHRleHQpCiAgICAgdGV4dC5pc1VSTCA9ICF0ZXh0LnRleHQuaXNOdWxsKCk7CiB9CiAKLXZv
aWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyKQor
dm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIs
IFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5IHBvbGljeSkKIHsKICAgICBQYXN0ZWJvYXJkU3RyYXRl
Z3kmIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3ko
KTsKIApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJk
V2ViQ29udGVudFJlYWRlciYgcmVhZGVyKQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKHR5
cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpKSkpIHsK
KyAgICBpZiAocG9saWN5ID09IFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5OjpSZWFkRnJvbUFueVR5
cGUgJiYgdHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBl
KCkpKSkgewogICAgICAgICBWZWN0b3I8U3RyaW5nPiBwYXRoczsKICAgICAgICAgc3RyYXRlZ3ku
Z2V0UGF0aG5hbWVzRm9yVHlwZShwYXRocywgbGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUo
KSwgbV9wYXN0ZWJvYXJkTmFtZSk7CiAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5n
ZUNvdW50KCkgfHwgcmVhZGVyLnJlYWRGaWxlUGF0aHMocGF0aHMpKQpAQCAtMzc0LDYgKzM3NCw5
IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVh
ZGVyKQogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKHBvbGljeSA9PSBXZWJDb250ZW50UmVh
ZGluZ1BvbGljeTo6T25seVJlYWRGcm9tUmljaFRleHRUeXBlcykKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUo
KSkpKSB7CiAgICAgICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBzdHJhdGVn
eS5idWZmZXJGb3JUeXBlKGxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmRO
YW1lKSkgewogICAgICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSB8
fCByZWFkZXIucmVhZEltYWdlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgpLCBBU0NJSUxpdGVyYWwo
ImltYWdlL3RpZmYiKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHAKaW5kZXggYzlhMGQyZGY3YzRkOWNiMzM3YTBkZWI3YzBhOTM2NTE5YTRkOTg1NC4u
NDY2NTBmMDVlYThjMmQxMTkyZmUyZGZhNmNlMTEyM2ZiYjg0NzA5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtMTA3Myw3ICsxMDczLDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJkV2ViQ29udGVudCYpCiB7
CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYp
Cit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJD
b250ZW50UmVhZGluZ1BvbGljeSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd3BlL1Bhc3RlYm9hcmRXUEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d3BlL1Bhc3RlYm9hcmRXUEUuY3BwCmluZGV4IDI0N2FmNTUxMmM2YzBhZDBkYTBlYzdmMzEwMjkw
NDE2MWEwYTU4OGEuLjFlYjJkMjlhNThlOTBiYmMwZTRjYTU4OGNjNjhlMTY2NGNlZmMzMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9QYXN0ZWJvYXJkV1BFLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvUGFzdGVib2FyZFdQRS5jcHAKQEAgLTk3
LDcgKzk3LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRl
eHQpCiAgICAgdGV4dC50ZXh0ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJh
dGVneSgpLT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoMCwgInRleHQvcGxhaW47Y2hhcnNldD11
dGYtOCIpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRS
ZWFkZXImKQordm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVy
JiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwZWZk
NDYwNWE0ZWVjZDlhYmZkYjQ3ZmU4ZGNmNjA5ZGY1MWVmMWFmLi5hZDQ1MjA1MDUyYzgzNzIwNGQ1
ZDViNmFhMTIyNjU0NzQ1MTY3NmJhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTgtMDItMDggIFdlbnNvbiBIc2ll
aCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUGFzdGluZyBmcm9tIEV4Y2Vs
IG5vIGxvbmdlciBwcm92aWRlcyB0ZXh0L2h0bWwgZGF0YQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNjM2CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8zNzA4NzA2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgbmV3IEFQSSB0ZXN0cyB0byBleGVyY2lzZSBwYXN0aW5nIGltYWdlcyB3aXRoIHZh
cmlvdXMgb3RoZXIgY29udGVudCB0eXBlcyBvbiBtYWNPUywgYW5kIHdoZW4gZHJvcHBpbmcgaW1h
Z2VzCisgICAgICAgIGFuZCBIVE1MIG1hcmt1cCBvbiBpT1MuIFNlZSB0aGUgV2ViQ29yZSBDaGFu
Z2VMb2cgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9EYXRhVHJhbnNmZXIuaHRtbDogQWRkZWQuCisKKyAgICAgICAg
QWRkIGEgbmV3IEFQSSB0ZXN0IGhhcm5lc3MgdGhhdCBkdW1wcyB2YXJpb3VzIGJpdHMgb2YgaW5m
b3JtYXRpb24gYWJvdXQgYSBEYXRhVHJhbnNmZXIgdXBvbiBwYXN0ZSBhbmQgZHJvcC4KKyAgICAg
ICAgV2hpbGUgc29tZXdoYXQgc2ltaWxhciB0byBzb21lIGV4aXN0aW5nIGhhcm5lc3NlcywgdGhp
cyBtYWtlcyBhIGRpc3RpbmN0aW9uIGJldHdlZW4gdGhlIHJhdyBIVE1MIGRhdGEgb24gdGhlCisg
ICAgICAgIHBhc3RlYm9hcmQgYW5kIHRoZSBhY3R1YWwgcmVzdWx0IG9mIGluc2VydGluZyBzYWlk
IEhUTUwgaW50byB0aGUgRE9NLiBUaGlzIGFsbG93cyB1cyB0byBjaGVjayB0aGF0IHRoZSBIVE1M
IGhhcworICAgICAgICBiZWVuIHNhbml0aXplZCwgd2hpbGUgbWFraW5nIGNoZWNrcyBmb3IgdGhl
IGFjdHVhbCBjb250ZW50IG9mIHRoZSBIVE1MIHJvYnVzdCBhZ2FpbnN0IGlubGluZSBzdHlsZSBj
aGFuZ2VzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0
ZUltYWdlLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFz
dGVNaXhlZENvbnRlbnQubW06IEFkZGVkLgorCisgICAgICAgIEFkZCBhIG5ldyB0ZXN0IHN1aXRl
IHRvIGV4ZXJjaXNlIHBhc3RpbmcgbWl4ZWQgY29udGVudCB0eXBlcy4gSW4gdGhlc2UgdGVzdCBj
YXNlcywgd2UgaGF2ZSBhIGNvbWJpbmF0aW9uIG9mCisgICAgICAgIGZpbGVzIGFuZCByaWNoIHRl
eHQuCisKKyAgICAgICAgKGltYWdlUGF0aCk6CisgICAgICAgICh3cml0ZVR5cGVzQW5kRGF0YVRv
UGFzdGVib2FyZCk6CisKKyAgICAgICAgQWRkIGEgaGVscGVyIHRvIHdyaXRlIGEgdmFyLWFyZyBs
aXN0IG9mIGNvbnRlbnQgdHlwZXMgYW5kIGRhdGEgdG8gdGhlIGdlbmVyYWwgTlNQYXN0ZWJvYXJk
LgorCisgICAgICAgIChzZXRVcFdlYlZpZXcpOgorICAgICAgICAobWFya3VwU3RyaW5nKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
dGVzdEljb25JbWFnZURhdGEpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lmg6CisKKyAgICAgICAgTW92
ZSBhIHByaXZhdGUgZGVjbGFyYXRpb24gb2YgLVtXS1dlYlZpZXcgcGFzdGU6XSBvdXQgdG8gVGVz
dFdLV2ViVmlldy5oLCBzbyB0aGF0IGl0IGNhbiBiZSBzaGFyZWQgYWNyb3NzCisgICAgICAgIG11
bHRpcGxlIHRlc3RzLiBDdXJyZW50bHksIGl0IG9ubHkgcmVzaWRlcyBpbiBQYXN0ZUltYWdlLm1t
LCBidXQgSSBuZWVkIGl0IGluIFBhc3RlTWl4ZWRDb250ZW50Lm1tIGFzIHdlbGwuCisKIDIwMTgt
MDItMDggIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBUaGVyZSBz
aG91bGQgYmUgYSB3YXkgdG8gZGlzYWJsZSBbT3ZlcnJpZGVCdWlsdGluc10gYmVoYXZpb3IgaW4g
YSBnaXZlbiBET01XcmFwcGVyV29ybGQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2FmOGQy
NGExZGRiN2ZmMWZlZmE5MjU5YThhYjkyZjU1Y2I4NjZiZS4uYTJjNzUxNjhjNDNlOTc3MTJhNDk0
MzRhMDRlMTBmZjcxYjlhODRhZiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTc0MSw2ICs3
NDEsOCBAQAogCQlGNDREMDY0QTFGMzk2MkYyMDAxQTBFMjkgLyogRWRpdGluZ1Rlc3RIYXJuZXNz
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0RDA2
NDkxRjM5NjJFMzAwMUEwRTI5IC8qIEVkaXRpbmdUZXN0SGFybmVzcy5tbSAqLzsgfTsKIAkJRjQ1
MTJFMTMxRjYwQzQ0NjAwQkIzNjlFIC8qIERhdGFUcmFuc2Zlckl0ZW0tZ2V0QXNFbnRyeS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
NTEyRTEyMUY2MEM0MzQwMEJCMzY5RSAvKiBEYXRhVHJhbnNmZXJJdGVtLWdldEFzRW50cnkuaHRt
bCAqLzsgfTsKIAkJRjQ1MzhFRjcxRTg0NzNFNjAwQjVDOTUzIC8qIGxhcmdlLXJlZC1zcXVhcmUu
cG5nIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0NTM4RUYwMUU4NDZCNDEwMEI1Qzk1MyAvKiBsYXJnZS1yZWQtc3F1YXJlLnBuZyAqLzsgfTsK
KwkJRjQ1N0E5QjgyMDJENUNEQzAwRjdFOUQ1IC8qIFBhc3RlTWl4ZWRDb250ZW50Lm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ1N0E5QjYyMDJENUNE
QzAwRjdFOUQ1IC8qIFBhc3RlTWl4ZWRDb250ZW50Lm1tICovOyB9OworCQlGNDU3QTlENjIwMkQ2
OEFGMDBGN0U5RDUgLyogRGF0YVRyYW5zZmVyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ1N0E5QjMyMDJENTM1MzAwRjdFOUQ1IC8q
IERhdGFUcmFuc2Zlci5odG1sICovOyB9OwogCQlGNDVCNjNGQjFGMTk3RjRBMDA5RDM4QjkgLyog
aW1hZ2UtbWFwLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRjQ1QjYzRkExRjE5N0YzMzAwOUQzOEI5IC8qIGltYWdlLW1hcC5odG1sICov
OyB9OwogCQlGNDVCNjNGRTFGMTlENDEwMDA5RDM4QjkgLyogQWN0aW9uU2hlZXRUZXN0cy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NUI2M0ZDMUYx
OUQ0MTAwMDlEMzhCOSAvKiBBY3Rpb25TaGVldFRlc3RzLm1tICovOyB9OwogCQlGNDY4NDlCRTFF
RUY1OEU0MDBCOTM3RkUgLyogVUlQYXN0ZWJvYXJkVGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDY4NDlCRDFFRUY1OEU0MDBCOTM3RkUgLyog
VUlQYXN0ZWJvYXJkVGVzdHMubW0gKi87IH07CkBAIC04OTQsNiArODk2LDcgQEAKIAkJCQlGNEFC
NTc4QTFGNjUxNjU0MDBEQjBEQTEgLyogY3VzdG9tLWRyYWdnYWJsZS1kaXYuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQkyOTBGNDI3NTE3MkEyMjFDMDA5MzlGRjAgLyogY3VzdG9tLXBy
b3RvY29sLXN5bmMteGhyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQ4NkIxRDAx
RjY3OTUyMzAwRjM0QkREIC8qIERhdGFUcmFuc2Zlci1zZXREcmFnSW1hZ2UuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKKwkJCQlGNDU3QTlENjIwMkQ2OEFGMDBGN0U5RDUgLyogRGF0YVRyYW5z
ZmVyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQ1MTJFMTMxRjYwQzQ0NjAwQkIz
NjlFIC8qIERhdGFUcmFuc2Zlckl0ZW0tZ2V0QXNFbnRyeS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCUMwN0U2Q0IyMTNGRDczOTMwMDM4QjIyQiAvKiBkZXZpY2VQaXhlbFJhdGlvLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMDc5OUMzNEIxRUJBMzMwMTAwM0I3NTMyIC8q
IGRpc2FibGVHZXRVc2VyTWVkaWEuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTE4NjIs
NiArMTg2NSw4IEBACiAJCUY0NEQwNjQ5MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhh
cm5lc3MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBFZGl0aW5n
VGVzdEhhcm5lc3MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NTEyRTEyMUY2
MEM0MzQwMEJCMzY5RSAvKiBEYXRhVHJhbnNmZXJJdGVtLWdldEFzRW50cnkuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJEYXRhVHJhbnNmZXJJdGVtLWdldEFzRW50cnkuaHRtbCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NTM4RUYwMUU4NDZCNDEwMEI1Qzk1MyAv
KiBsYXJnZS1yZWQtc3F1YXJlLnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IGltYWdlLnBuZzsgcGF0aCA9ICJsYXJnZS1yZWQtc3F1YXJlLnBuZyI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NTdBOUIzMjAyRDUzNTMwMEY3RTlENSAv
KiBEYXRhVHJhbnNmZXIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IERhdGFUcmFu
c2Zlci5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDU3QTlCNjIwMkQ1Q0RD
MDBGN0U5RDUgLyogUGFzdGVNaXhlZENvbnRlbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQ
YXN0ZU1peGVkQ29udGVudC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ1QjYz
RkExRjE5N0YzMzAwOUQzOEI5IC8qIGltYWdlLW1hcC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImltYWdlLW1h
cC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ1QjYzRkMxRjE5RDQxMDAw
OUQzOEI5IC8qIEFjdGlvblNoZWV0VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBY3Rp
b25TaGVldFRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDY4NDlCRDFF
RUY1OEU0MDBCOTM3RkUgLyogVUlQYXN0ZWJvYXJkVGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBVSVBhc3RlYm9hcmRUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTIxMzAsNiArMjEzNSw3IEBACiAJCQkJQ0VCQ0ExMkUxRTNBNjYwMTAwQzczMjkzIC8qIE92ZXJy
aWRlQ29udGVudFNlY3VyaXR5UG9saWN5Lm1tICovLAogCQkJCTlCQ0I3QzI2MjAxMzA2MDAwMDNF
N0MwQyAvKiBQYXN0ZUhUTUwubW0gKi8sCiAJCQkJOUJEQ0NEODUxRjdEMEIwNzAwMDA5QTE4IC8q
IFBhc3RlSW1hZ2UubW0gKi8sCisJCQkJRjQ1N0E5QjYyMDJENUNEQzAwRjdFOUQ1IC8qIFBhc3Rl
TWl4ZWRDb250ZW50Lm1tICovLAogCQkJCTlCREQ5NTU2MUY4MzY4MzYwMEQyMEM2MCAvKiBQYXN0
ZVJURkQubW0gKi8sCiAJCQkJOUIyMzQ2NDExRjk0M0EyNDAwREIxRDIzIC8qIFBhc3RlV2ViQXJj
aGl2ZS5tbSAqLywKIAkJCQkzRkNDNEZFNDFFQzRFODUyMDA3NkUzN0MgLyogUGljdHVyZUluUGlj
dHVyZURlbGVnYXRlLm1tICovLApAQCAtMjM2NCw2ICsyMzcwLDcgQEAKIAkJCQk5QjYyNjMwQjFG
OEMyNTEwMDA3RUUyOUIgLyogY29weS11cmwuaHRtbCAqLywKIAkJCQlGNEFCNTc4OTFGNjUxNjRC
MDBEQjBEQTEgLyogY3VzdG9tLWRyYWdnYWJsZS1kaXYuaHRtbCAqLywKIAkJCQlGNDg2QjFDRjFG
Njc5NEZGMDBGMzRCREQgLyogRGF0YVRyYW5zZmVyLXNldERyYWdJbWFnZS5odG1sICovLAorCQkJ
CUY0NTdBOUIzMjAyRDUzNTMwMEY3RTlENSAvKiBEYXRhVHJhbnNmZXIuaHRtbCAqLywKIAkJCQlG
NDUxMkUxMjFGNjBDNDM0MDBCQjM2OUUgLyogRGF0YVRyYW5zZmVySXRlbS1nZXRBc0VudHJ5Lmh0
bWwgKi8sCiAJCQkJMDc5OUMzNEExRUJBMzJGNDAwM0I3NTMyIC8qIGRpc2FibGVHZXRVc2VyTWVk
aWEuaHRtbCAqLywKIAkJCQk2M0E2MUI4QTFGQUQyMDREMDBGMDY4ODUgLyogZGlzcGxheS1tb2Rl
Lmh0bWwgKi8sCkBAIC0zNTU1LDYgKzM1NjIsNyBAQAogCQkJCTdDQ0U3RjBBMUE0MTFBRTYwMDQ0
N0M0QyAvKiBQYXN0ZWJvYXJkTm90aWZpY2F0aW9ucy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTlC
Q0I3QzI4MjAxMzA2MDAwMDNFN0MwQyAvKiBQYXN0ZUhUTUwubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk5QkRDQ0Q4NzFGN0QwQjA3MDAwMDlBMTggLyogUGFzdGVJbWFnZS5tbSBpbiBTb3VyY2VzICov
LAorCQkJCUY0NTdBOUI4MjAyRDVDREMwMEY3RTlENSAvKiBQYXN0ZU1peGVkQ29udGVudC5tbSBp
biBTb3VyY2VzICovLAogCQkJCTlCREQ5NTU4MUY4MzY4MzYwMEQyMEM2MCAvKiBQYXN0ZVJURkQu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk5QjIzNDY0MjFGOTQzRTI3MDBEQjFEMjMgLyogUGFzdGVX
ZWJBcmNoaXZlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwNTMxRDBBNjQzQTAwRkVCQ0Yz
IC8qIFBlbmRpbmdBUElSZXF1ZXN0VVJMLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EYXRhVHJhbnNmZXIuaHRtbCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGF0YVRyYW5zZmVyLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzkxZDYwNjAwMTdjMzM5Mjk0MzExMzYyODliYzZmZDQ0NjcwYzk3YgotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGF0
YVRyYW5zZmVyLmh0bWwKQEAgLTAsMCArMSw3NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRp
YWwtc2NhbGU9MSI+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAgIGJvZHksIGh0bWwgewor
ICAgICAgICAgICAgd2lkdGg6IDEwMCU7CisgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CisgICAg
ICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlOworICAgICAgICB9CisKKyAgICAgICAgLmhl
YWRpbmcgeworICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7CisgICAgICAgICAgICB3aWR0aDog
MTAwJTsKKyAgICAgICAgICAgIGJvcmRlci10b3A6IDJweCBncmF5IGRhc2hlZDsKKyAgICAgICAg
ICAgIG1hcmdpbi10b3A6IDIwcHg7CisgICAgICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94
OworICAgICAgICB9CisgICAgPC9zdHlsZT4KKyAgICA8c2NyaXB0PgorICAgICAgICBmdW5jdGlv
biBzZXR1cCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRM
aXN0ZW5lcigicGFzdGUiLCBldmVudCA9PiB7CisgICAgICAgICAgICAgICAgZHVtcEFzT3V0cHV0
KGV2ZW50LmNsaXBib2FyZERhdGEpOworICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZh
dWx0KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZl
bnRMaXN0ZW5lcigiZHJvcCIsIGV2ZW50ID0+IHsKKyAgICAgICAgICAgICAgICBkdW1wQXNPdXRw
dXQoZXZlbnQuZGF0YVRyYW5zZmVyKTsKKyAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVm
YXVsdCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFkZEV2
ZW50TGlzdGVuZXIoImJlZm9yZWlucHV0IiwgZXZlbnQgPT4gZXZlbnQucHJldmVudERlZmF1bHQo
KSk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmZvY3VzKCk7CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiBkdW1wQXNPdXRwdXQoZGF0YVRyYW5zZmVyKQorICAgICAgICB7CisgICAg
ICAgICAgICBkb2N1bWVudC5ib2R5LmNvbnRlbnRFZGl0YWJsZSA9IGZhbHNlOworICAgICAgICAg
ICAgdHlwZXMudGV4dENvbnRlbnQgPSBkYXRhVHJhbnNmZXIudHlwZXMuam9pbigiLCAiKTsKKyAg
ICAgICAgICAgIGl0ZW1zLnRleHRDb250ZW50ID0gQXJyYXkuZnJvbShkYXRhVHJhbnNmZXIuaXRl
bXMpLm1hcChpdGVtID0+IGAoJHtpdGVtLmtpbmQudG9VcHBlckNhc2UoKX0sICR7aXRlbS50eXBl
fSlgKS5qb2luKCIsICIpOworICAgICAgICAgICAgZmlsZXMudGV4dENvbnRlbnQgPSBBcnJheS5m
cm9tKGRhdGFUcmFuc2Zlci5maWxlcykubWFwKGZpbGUgPT4gYCgnJHtmaWxlLm5hbWV9JywgJHtm
aWxlLnR5cGV9KWApLmpvaW4oIiwgIik7CisgICAgICAgICAgICB1cmxEYXRhLnRleHRDb250ZW50
ID0gZGF0YVRyYW5zZmVyLmdldERhdGEoInRleHQvdXJpLWxpc3QiKTsKKyAgICAgICAgICAgIHRl
eHREYXRhLnRleHRDb250ZW50ID0gZGF0YVRyYW5zZmVyLmdldERhdGEoInRleHQvcGxhaW4iKTsK
KyAgICAgICAgICAgIGxldCBtYXJrdXAgPSBkYXRhVHJhbnNmZXIuZ2V0RGF0YSgidGV4dC9odG1s
Iik7CisgICAgICAgICAgICBodG1sRGF0YS5pbnNlcnRBZGphY2VudEhUTUwoImJlZm9yZWVuZCIs
IG1hcmt1cCk7CisgICAgICAgICAgICByYXdIVE1MRGF0YS50ZXh0Q29udGVudCA9IG1hcmt1cDsK
KyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIHJlc2V0KCkKKyAgICAgICAgeworICAgICAg
ICAgICAgQXJyYXkuZnJvbShkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJvdXRwdXQi
KSkubWFwKGVsZW1lbnQgPT4geworICAgICAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0g
IiI7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY29udGVudEVk
aXRhYmxlID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
Y29udGVudGVkaXRhYmxlIG9ubG9hZD1zZXR1cCgpPgorICAgIDxoMyBjbGFzcz0iaGVhZGluZyI+
VHlwZXM8L2gzPgorICAgIDxkaXYgY2xhc3M9Im91dHB1dCIgaWQ9InR5cGVzIj48L2Rpdj4KKwor
ICAgIDxoMyBjbGFzcz0iaGVhZGluZyI+SXRlbXM8L2gzPgorICAgIDxkaXYgY2xhc3M9Im91dHB1
dCIgaWQ9Iml0ZW1zIj48L2Rpdj4KKworICAgIDxoMyBjbGFzcz0iaGVhZGluZyI+RmlsZXM8L2gz
PgorICAgIDxkaXYgY2xhc3M9Im91dHB1dCIgaWQ9ImZpbGVzIj48L2Rpdj4KKworICAgIDxoMyBj
bGFzcz0iaGVhZGluZyI+dGV4dC9wbGFpbjwvaDM+CisgICAgPGRpdiBjbGFzcz0ib3V0cHV0IiBp
ZD0idGV4dERhdGEiPjwvZGl2PgorCisgICAgPGgzIGNsYXNzPSJoZWFkaW5nIj50ZXh0L3VyaS1s
aXN0PC9oMz4KKyAgICA8ZGl2IGNsYXNzPSJvdXRwdXQiIGlkPSJ1cmxEYXRhIj48L2Rpdj4KKwor
ICAgIDxoMyBjbGFzcz0iaGVhZGluZyI+dGV4dC9odG1sPC9oMz4KKyAgICA8ZGl2IGNsYXNzPSJv
dXRwdXQiIGlkPSJodG1sRGF0YSI+PC9kaXY+CisgICAgPGRpdiBjbGFzcz0ib3V0cHV0IiBpZD0i
cmF3SFRNTERhdGEiPjwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUltYWdlLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUltYWdlLm1tCmluZGV4IGIyMjg5NmI0
YTc4OWYyYzQ4MDUwY2YzMGJiODZkMDU0YTZlZTI1YjcuLjg5YmMwNWFlNjcwZGNiYzVkNDU0ODNm
YmU3YWZiOTVmODIyMWY0N2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUGFzdGVJbWFnZS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Bhc3RlSW1hZ2UubW0KQEAgLTM2LDEwICszNiw2IEBACiAjaW5jbHVkZSA8
TW9iaWxlQ29yZVNlcnZpY2VzL01vYmlsZUNvcmVTZXJ2aWNlcy5oPgogI2VuZGlmCiAKLUBpbnRl
cmZhY2UgV0tXZWJWaWV3ICgpCi0tICh2b2lkKXBhc3RlOihpZClzZW5kZXI7Ci1AZW5kCi0KICNp
ZiBQTEFURk9STShNQUMpCiB2b2lkIHdyaXRlSW1hZ2VEYXRhVG9QYXN0ZWJvYXJkKE5TU3RyaW5n
ICp0eXBlLCBOU0RhdGEgKmRhdGEpCiB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlTWl4ZWRDb250ZW50Lm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZU1peGVkQ29udGVudC5tbQpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5m
OWVmZjhkMjg3NWUyYjEwMzA2ZmM5OTA4ZTAwMjY0NjNjZDE0NjI5Ci0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZU1peGVkQ29udGVu
dC5tbQpAQCAtMCwwICsxLDE3MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2lmIFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiUGxhdGZv
cm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktp
dC9XS1ByZWZlcmVuY2VzUmVmLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1JlZlBy
aXZhdGUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgorCitzdGF0aWMgTlNTdHJpbmcgKmltYWdlUGF0aCgpCit7CisgICAgcmV0dXJu
IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gcGF0aEZvclJlc291cmNlOkAiaWNvbiIgb2ZUeXBlOkAi
cG5nIiBpbkRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07Cit9CisKK3ZvaWQg
d3JpdGVUeXBlc0FuZERhdGFUb1Bhc3RlYm9hcmQoaWQgdHlwZSwgLi4uKQoreworICAgIE5TTXV0
YWJsZUFycmF5PE5TU3RyaW5nICo+ICp0eXBlcyA9IFtOU011dGFibGVBcnJheSBhcnJheV07Cisg
ICAgTlNNdXRhYmxlQXJyYXkgKmRhdGEgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAgIHZh
X2xpc3QgYXJndW1lbnRMaXN0OworICAgIGlmICh0eXBlKSB7CisgICAgICAgIEFTU0VSVChbdHlw
ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsKKyAgICAgICAgW3R5cGVzIGFkZE9i
amVjdDp0eXBlXTsKKyAgICAgICAgdmFfc3RhcnQoYXJndW1lbnRMaXN0LCB0eXBlKTsKKyAgICAg
ICAgTlNVSW50ZWdlciBpbmRleCA9IDE7CisgICAgICAgIGlkIG9iamVjdCA9IHZhX2FyZyhhcmd1
bWVudExpc3QsIGlkKTsKKyAgICAgICAgd2hpbGUgKG9iamVjdCkgeworICAgICAgICAgICAgaWYg
KGluZGV4ICUgMikKKyAgICAgICAgICAgICAgICBbZGF0YSBhZGRPYmplY3Q6b2JqZWN0XTsKKyAg
ICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIEFTU0VSVChbb2JqZWN0IGlzS2luZE9m
Q2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgICAgICAgICAgICAgIFt0eXBlcyBhZGRPYmpl
Y3Q6b2JqZWN0XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICsraW5kZXg7CisgICAgICAg
ICAgICBvYmplY3QgPSB2YV9hcmcoYXJndW1lbnRMaXN0LCBpZCk7CisgICAgICAgIH0KKyAgICAg
ICAgdmFfZW5kKGFyZ3VtZW50TGlzdCk7CisgICAgfQorCisgICAgaWYgKHR5cGVzLmNvdW50ICE9
IGRhdGEuY291bnQpIHsKKyAgICAgICAgTlNMb2coQCJFeHBlY3RlZCBudW1iZXIgb2YgdHlwZXM6
ICV0dSB0byBtYXRjaCBudW1iZXIgb2YgZGF0YSBpdGVtczogJXR1IiwgdHlwZXMuY291bnQsIGRh
dGEuY291bnQpOworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBkZWNsYXJl
VHlwZXM6dHlwZXMgb3duZXI6bmlsXTsKKyAgICBbdHlwZXMgZW51bWVyYXRlT2JqZWN0c1VzaW5n
QmxvY2s6WyZdIChOU1N0cmluZyAqdHlwZSwgTlNVSW50ZWdlciBpbmRleCwgQk9PTCAqKSB7Cisg
ICAgICAgIGlkIGRhdGFUb1dyaXRlID0gZGF0YVtpbmRleF07CisgICAgICAgIGlmIChbZGF0YVRv
V3JpdGUgaXNLaW5kT2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0pCisgICAgICAgICAgICBbW05TUGFz
dGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gc2V0RGF0YTpkYXRhVG9Xcml0ZSBmb3JUeXBlOnR5
cGVdOworICAgICAgICBlbHNlIGlmIChbZGF0YVRvV3JpdGUgaXNLaW5kT2ZDbGFzczpbTlNTdHJp
bmcgY2xhc3NdXSkKKyAgICAgICAgICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJk
XSBzZXRTdHJpbmc6ZGF0YVRvV3JpdGUgZm9yVHlwZTp0eXBlXTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNldFByb3BlcnR5TGlz
dDpkYXRhVG9Xcml0ZSBmb3JUeXBlOnR5cGVdOworICAgIH1dOworfQorCitzdGF0aWMgUmV0YWlu
UHRyPFRlc3RXS1dlYlZpZXc+IHNldFVwV2ViVmlldygpCit7CisgICAgYXV0byB3ZWJWaWV3ID0g
YWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA0MDAsIDQwMCldKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0Q3VzdG9tUGFzdGVib2FyZERh
dGFFbmFibGVkKChXS1ByZWZlcmVuY2VzUmVmKVt3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByZWZl
cmVuY2VzLCB0cnVlKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRlc3RQYWdlTmFt
ZWQ6QCJEYXRhVHJhbnNmZXIiXTsKKyAgICByZXR1cm4gd2ViVmlldzsKK30KKworc3RhdGljIE5T
U3RyaW5nICptYXJrdXBTdHJpbmcoKQoreworICAgIC8vIFRoZSBzY3JpcHQgdGFnIGFuZCBtb3Vz
ZW92ZXIgbGlzdGVuZXIgYXR0cmlidXRlIGluIHRoZSBtYXJrdXAgc3RyaW5nIGJlbG93IHNob3Vs
ZCBiZSBvbWl0dGVkIGR1cmluZworICAgIC8vIHNhbml0aXphdGlvbiB3aGlsZSBwYXN0aW5nLgor
ICAgIHJldHVybiBAIjxzY3JpcHQ+Zm9vKCk8L3NjcmlwdD48c3Ryb25nIG9ubW91c2VvdmVyPSdq
YXZhc2NyaXB0OnZvaWQoMCknPkhFTExPIFdPUkxEPC9zdHJvbmc+IjsKK30KKworbmFtZXNwYWNl
IFRlc3RXZWJLaXRBUEkgeworCitURVNUKFBhc3RlTWl4ZWRDb250ZW50LCBQYXN0ZUltYWdlQW5k
UGxhaW5UZXh0KQoreworICAgIGF1dG8gd2ViVmlldyA9IHNldFVwV2ViVmlldygpOworICAgIHdy
aXRlVHlwZXNBbmREYXRhVG9QYXN0ZWJvYXJkKE5TRmlsZW5hbWVzUGJvYXJkVHlwZSwgQFsgaW1h
Z2VQYXRoKCkgXSwgTlNQYXN0ZWJvYXJkVHlwZVN0cmluZywgaW1hZ2VQYXRoKCksIG5pbCk7Cisg
ICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKKworICAgIEVYUEVDVF9XS19TVFJFUSgiRmlsZXMiLCBb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidHlwZXMudGV4dENvbnRlbnQi
XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIoRklMRSwgaW1hZ2UvcG5nKSIsIFt3ZWJWaWV3IHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpdGVtcy50ZXh0Q29udGVudCJdKTsKKyAgICBF
WFBFQ1RfV0tfU1RSRVEoIignaWNvbi5wbmcnLCBpbWFnZS9wbmcpIiwgW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImZpbGVzLnRleHRDb250ZW50Il0pOworICAgIEVYUEVD
VF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInVy
bERhdGEudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidGV4dERhdGEudGV4dENvbnRlbnQiXSk7Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiaHRtbERhdGEudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicmF3SFRNTERhdGEudGV4dENv
bnRlbnQiXSk7Cit9CisKK1RFU1QoUGFzdGVNaXhlZENvbnRlbnQsIFBhc3RlSW1hZ2VBbmRXZWJB
cmNoaXZlKQoreworICAgIGF1dG8gd2ViVmlldyA9IHNldFVwV2ViVmlldygpOworICAgIE5TVVJM
ICptYWluUmVzb3VyY2VVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOkAiL3NvbWUvbm9uZXhp
c3RlbnQvZmlsZS5odG1sIl07CisgICAgYXV0byBtYWluUmVzb3VyY2UgPSBhZG9wdE5TKFtbV2Vi
UmVzb3VyY2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbbWFya3VwU3RyaW5nKCkgZGF0YVVzaW5nRW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIFVSTDptYWluUmVzb3VyY2VVUkwgTUlNRVR5cGU6
QCJ0ZXh0L2h0bWwiIHRleHRFbmNvZGluZ05hbWU6QCJ1dGYtOCIgZnJhbWVOYW1lOm5pbF0pOwor
ICAgIGF1dG8gYXJjaGl2ZSA9IGFkb3B0TlMoW1tXZWJBcmNoaXZlIGFsbG9jXSBpbml0V2l0aE1h
aW5SZXNvdXJjZTptYWluUmVzb3VyY2UuZ2V0KCkgc3VicmVzb3VyY2VzOm5pbCBzdWJmcmFtZUFy
Y2hpdmVzOm5pbF0pOworICAgIHdyaXRlVHlwZXNBbmREYXRhVG9QYXN0ZWJvYXJkKE5TRmlsZW5h
bWVzUGJvYXJkVHlwZSwgQFsgaW1hZ2VQYXRoKCkgXSwgV2ViQXJjaGl2ZVBib2FyZFR5cGUsIFth
cmNoaXZlIGRhdGFdLCBuaWwpOworICAgIFt3ZWJWaWV3IHBhc3RlOm5pbF07CisKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoInRleHQvaHRtbCwgRmlsZXMiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAidHlwZXMudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVR
KCIoU1RSSU5HLCB0ZXh0L2h0bWwpLCAoRklMRSwgaW1hZ2UvcG5nKSIsIFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpdGVtcy50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoIignaWNvbi5wbmcnLCBpbWFnZS9wbmcpIiwgW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImZpbGVzLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9X
S19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInVybERh
dGEudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidGV4dERhdGEudGV4dENvbnRlbnQiXSk7CisgICAg
RVhQRUNUX1dLX1NUUkVRKCJIRUxMTyBXT1JMRCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJodG1sRGF0YS50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
W1t3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJyYXdIVE1MRGF0YS50ZXh0
Q29udGVudCJdIGNvbnRhaW5zU3RyaW5nOkAic2NyaXB0Il0pOworfQorCitURVNUKFBhc3RlTWl4
ZWRDb250ZW50LCBQYXN0ZUltYWdlQW5kSFRNTCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBzZXRV
cFdlYlZpZXcoKTsKKyAgICB3cml0ZVR5cGVzQW5kRGF0YVRvUGFzdGVib2FyZChOU0ZpbGVuYW1l
c1Bib2FyZFR5cGUsIEBbIGltYWdlUGF0aCgpIF0sIE5TUGFzdGVib2FyZFR5cGVIVE1MLCBtYXJr
dXBTdHJpbmcoKSwgbmlsKTsKKyAgICBbd2ViVmlldyBwYXN0ZTpuaWxdOworCisgICAgRVhQRUNU
X1dLX1NUUkVRKCJ0ZXh0L2h0bWwsIEZpbGVzIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAInR5cGVzLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgi
KFNUUklORywgdGV4dC9odG1sKSwgKEZJTEUsIGltYWdlL3BuZykiLCBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaXRlbXMudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNU
X1dLX1NUUkVRKCIoJ2ljb24ucG5nJywgaW1hZ2UvcG5nKSIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJmaWxlcy50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoIiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ1cmxEYXRh
LnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInRleHREYXRhLnRleHRDb250ZW50Il0pOworICAgIEVY
UEVDVF9XS19TVFJFUSgiSEVMTE8gV09STEQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiaHRtbERhdGEudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX0ZBTFNFKFtb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicmF3SFRNTERhdGEudGV4dENv
bnRlbnQiXSBjb250YWluc1N0cmluZzpAInNjcmlwdCJdKTsKK30KKworVEVTVChQYXN0ZU1peGVk
Q29udGVudCwgUGFzdGVJbWFnZUFuZFJURikKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdl
YlZpZXcoKTsKKyAgICBhdXRvIHRleHQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdF0pOworICAgIFt0ZXh0IGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6W1tO
U0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAibGluayB0byAiXV07Cisg
ICAgW3RleHQgYXBwZW5kQXR0cmlidXRlZFN0cmluZzpbW05TQXR0cmlidXRlZFN0cmluZyBhbGxv
Y10gaW5pdFdpdGhTdHJpbmc6QCJhcHBsZSIgYXR0cmlidXRlczpAeyBOU0xpbmtBdHRyaWJ1dGVO
YW1lOiBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd3d3LmFwcGxlLmNvbS8iXSB9XV07
CisgICAgTlNEYXRhICpydGZEYXRhID0gW3RleHQgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAs
IFt0ZXh0IGxlbmd0aF0pIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XTsKKyAgICB3cml0ZVR5cGVz
QW5kRGF0YVRvUGFzdGVib2FyZChOU0ZpbGVuYW1lc1Bib2FyZFR5cGUsIEBbIGltYWdlUGF0aCgp
IF0sIE5TUGFzdGVib2FyZFR5cGVSVEYsIHJ0ZkRhdGEsIG5pbCk7CisgICAgW3dlYlZpZXcgcGFz
dGU6bmlsXTsKKworICAgIEVYUEVDVF9XS19TVFJFUSgidGV4dC9odG1sLCBGaWxlcyIsIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0eXBlcy50ZXh0Q29udGVudCJdKTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoIihTVFJJTkcsIHRleHQvaHRtbCksIChGSUxFLCBpbWFnZS9w
bmcpIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIml0ZW1zLnRleHRD
b250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiKCdpY29uLnBuZycsIGltYWdlL3BuZyki
LCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZmlsZXMudGV4dENvbnRl
bnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAidXJsRGF0YS50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoIiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0ZXh0RGF0YS50
ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImxpbmsgdG8gYXBwbGUiLCBbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaHRtbERhdGEudGV4dENvbnRlbnQi
XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJodHRwczovL3d3dy5hcHBsZS5jb20vIiwgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImh0bWxEYXRhLnF1ZXJ5U2VsZWN0b3Io
J2EnKS5ocmVmIl0pOworfQorCit9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCisKKyNlbmRp
ZiAvLyBQTEFURk9STShNQUMpICYmIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCmluZGV4IDQwODVm
YWI5Y2E1YzJmNzA5YTBlZjhlZGZhZTY2NjA0N2Q5NDc3NzUuLjZiNjcwNGViMjNlY2JhMmE0MWQw
ZWY5YzZmYTA5ZmU2NWJjYTE0NmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlvblRlc3RzLm1tCkBAIC0xNDk5LDYgKzE0OTksMzUgQEAg
VEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgRHJhZ0xpZnRQcmV2aWV3RGF0YVRyYW5zZmVyU2V0
RHJhZ0ltYWdlKQogCiAjaWYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTEw
MzAwCiAKK3N0YXRpYyBOU0RhdGEgKnRlc3RJY29uSW1hZ2VEYXRhKCkKK3sKKyAgICByZXR1cm4g
W05TRGF0YSBkYXRhV2l0aENvbnRlbnRzT2ZGaWxlOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gcGF0
aEZvclJlc291cmNlOkAiaWNvbiIgb2ZUeXBlOkAicG5nIiBpbkRpcmVjdG9yeTpAIlRlc3RXZWJL
aXRBUEkucmVzb3VyY2VzIl1dOworfQorCitURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBEYXRh
VHJhbnNmZXJHZXREYXRhV2hlbkRyb3BwaW5nSW1hZ2VBbmRNYXJrdXApCit7CisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dS
ZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0Q3VzdG9tUGFz
dGVib2FyZERhdGFFbmFibGVkKChXS1ByZWZlcmVuY2VzUmVmKVt3ZWJWaWV3IGNvbmZpZ3VyYXRp
b25dLnByZWZlcmVuY2VzLCB0cnVlKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZFRl
c3RQYWdlTmFtZWQ6QCJEYXRhVHJhbnNmZXIiXTsKKworICAgIGF1dG8gc2ltdWxhdG9yID0gYWRv
cHROUyhbW0RhdGFJbnRlcmFjdGlvblNpbXVsYXRvciBhbGxvY10gaW5pdFdpdGhXZWJWaWV3Ondl
YlZpZXcuZ2V0KCldKTsKKyAgICBhdXRvIGl0ZW1Qcm92aWRlciA9IGFkb3B0TlMoW1tVSUl0ZW1Q
cm92aWRlciBhbGxvY10gaW5pdF0pOworICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVw
cmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooTlNTdHJpbmcgKilrVVRUeXBlUE5HIHdpdGhE
YXRhOnRlc3RJY29uSW1hZ2VEYXRhKCldOworICAgIE5TU3RyaW5nICptYXJrdXBTdHJpbmcgPSBA
IjxzY3JpcHQ+YmFyKCk8L3NjcmlwdD48c3Ryb25nIG9ubW91c2Vkb3duPWphdmFzY3JpcHQ6dm9p
ZCgwKT5IRUxMTyBXT1JMRDwvc3Ryb25nPiI7CisgICAgW2l0ZW1Qcm92aWRlciByZWdpc3RlckRh
dGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihOU1N0cmluZyAqKWtVVFR5cGVIVE1M
IHdpdGhEYXRhOlttYXJrdXBTdHJpbmcgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddXTsKKyAgICBbaXRlbVByb3ZpZGVyIHNldFN1Z2dlc3RlZE5hbWU6QCJpY29uIl07Cisg
ICAgW3NpbXVsYXRvciBzZXRFeHRlcm5hbEl0ZW1Qcm92aWRlcnM6QFsgaXRlbVByb3ZpZGVyLmdl
dCgpIF1dOworICAgIFtzaW11bGF0b3IgcnVuRnJvbTpDR1BvaW50WmVybyB0bzpDR1BvaW50TWFr
ZSg1MCwgMTAwKV07CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInRleHQvaHRtbCwgRmlsZXMiLCBb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidHlwZXMudGV4dENvbnRlbnQi
XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIoU1RSSU5HLCB0ZXh0L2h0bWwpLCAoRklMRSwgaW1h
Z2UvcG5nKSIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpdGVtcy50
ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIignaWNvbi5wbmcnLCBpbWFnZS9w
bmcpIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImZpbGVzLnRleHRD
b250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAInVybERhdGEudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dL
X1NUUkVRKCIiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidGV4dERh
dGEudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJIRUxMTyBXT1JMRCIsIFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJodG1sRGF0YS50ZXh0Q29udGVu
dCJdKTsKKyAgICBFWFBFQ1RfRkFMU0UoW1t3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFT
Y3JpcHQ6QCJyYXdIVE1MRGF0YS50ZXh0Q29udGVudCJdIGNvbnRhaW5zU3RyaW5nOkAic2NyaXB0
Il0pOworfQorCiBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBEYXRhVHJhbnNmZXJHZXREYXRh
V2hlbkRyb3BwaW5nUGxhaW5UZXh0KQogewogICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1
MDApXSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZp
ZXcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCmluZGV4IGRh
YTNiMjZkNjZiOGU4OTAxNzA0Y2I1OWY1ZjE3NDEwMTdkMDFjZGUuLjkwOGUwNTJiM2ExYzI5YmQ3
ZTVhYjc5MmUwZDhmOGM0NTYzMGRkYWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFdLV2ViVmlldy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dFdLV2ViVmlldy5oCkBAIC0zNCw2ICszNCwxMiBAQAogQGNsYXNzIF9XS0FjdGl2YXRlZEVsZW1l
bnRJbmZvOwogI2VuZGlmCiAKK0BpbnRlcmZhY2UgV0tXZWJWaWV3IChBZGRpdGlvbmFsRGVjbGFy
YXRpb25zKQorI2lmIFBMQVRGT1JNKE1BQykKKy0gKHZvaWQpcGFzdGU6KGlkKXNlbmRlcjsKKyNl
bmRpZgorQGVuZAorCiBAaW50ZXJmYWNlIFRlc3RNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxX
S1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgogLSAodm9pZClhZGRNZXNzYWdlOihOU1N0cmluZyAqKW1l
c3NhZ2Ugd2l0aEhhbmRsZXI6KGRpc3BhdGNoX2Jsb2NrX3QpaGFuZGxlcjsKIEBlbmQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBiNWNkM2I4N2ZhYmEzMDhiYjgwNTFlNWZmNTZkNDYwMmNlOTZkMmFmLi5mZjA4OWEyNGQwMjIw
YjE0ZjUxMGQyNTY0ODAwMjEzMDIyNTI4Njc2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTgt
MDItMDggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAg
UGFzdGluZyBmcm9tIEV4Y2VsIG5vIGxvbmdlciBwcm92aWRlcyB0ZXh0L2h0bWwgZGF0YQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNjM2CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8zNzA4NzA2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBSZWJhc2VsaW5lIHNvbWUgZXhpc3RpbmcgbGF5b3V0IHRl
c3RzLiBXZSBub3cgZXhwb3NlICJ0ZXh0L2h0bWwiIGFsb25nc2lkZSAiRmlsZXMiIG9uIERhdGFU
cmFuc2Zlci50eXBlcygpIGluCisgICAgICAgIHNvbWUgY2lyY3Vtc3RhbmNlcy4gVGhpcyBhbHNv
IHByb3ZpZGVzIHNvbWUgdGVzdCBjb3ZlcmFnZSBmb3IgZW5zdXJpbmcgdGhhdCB0aGUgcGFzdGUg
Y29kZXBhdGggaU9TIGFsbG93cyB0aGUKKyAgICAgICAgcGFnZSB0byByZXF1ZXN0IEhUTUwsIGV2
ZW4gaWYgdGhlcmUgYXJlIGZpbGVzIG9uIHRoZSBwYXN0ZWJvYXJkLiBTZWUgdGhlIFdlYkNvcmUg
Q2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1tdWx0aXBsZS10aW1lcy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1s
aXN0LWFkZC1maWxlLW9uLWNvcHktZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvcGFz
dGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1kcmFnLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtaW1hZ2UtZG9lcy1ub3Qt
cmV2ZWFsLWZpbGUtdXJsLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9h
cmQvcGFzdGUtaW1hZ2UtZG9lcy1ub3QtcmV2ZWFsLWZpbGUtdXJsLmh0bWw6CisKIDIwMTgtMDIt
MDggIE1hdHQgTGV3aXMgIDxqbGV3aXMzQGFwcGxlLmNvbT4KIAogICAgICAgICBNYXJrZWQgbWVk
aWEvVzNDL3ZpZGVvL2V2ZW50cy9ldmVudF9wcm9ncmVzc19tYW51YWwuaHRtbCBhcyBmbGFreSBv
biBtYWNPUyBXSzIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
ZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtbXVsdGlwbGUtdGltZXMtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1s
aXN0LWFkZC1maWxlLW11bHRpcGxlLXRpbWVzLWV4cGVjdGVkLnR4dAppbmRleCAxZjgwYzU5ZGM5
Y2I2MmQ3MmVjOWEwNDUwMzZkZjU1NjQ5YWQ0Nzg2Li5mOWQ4ODE2NmRiOWFmZTEyNGJkNmI0OWNl
YmIxNDhiMjY5OGU3ODUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtbXVsdGlwbGUtdGltZXMtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVy
LWl0ZW0tbGlzdC1hZGQtZmlsZS1tdWx0aXBsZS10aW1lcy1leHBlY3RlZC50eHQKQEAgLTksOCAr
OSw4IEBAIG9wZXJhdGlvbiBwZXJmb3JtZWQgYXQgZWFjaCBzdGVwLgogMS4gQWZ0ZXIgYWRkaW5n
IGFsbCBpdGVtcwogewogICAgICJkYXRhIjogewotICAgICAgICAiRmlsZXMiOiAiIiwKLSAgICAg
ICAgInRleHQvdXJpLWxpc3QiOiAiaHR0cHM6Ly93ZWJraXQub3JnIgorICAgICAgICAidGV4dC91
cmktbGlzdCI6ICJodHRwczovL3dlYmtpdC5vcmciLAorICAgICAgICAiRmlsZXMiOiAiIgogICAg
IH0sCiAgICAgIml0ZW1zIjogWwogICAgICAgICB7CkBAIC04Nyw4ICs4Nyw4IEBAIG9wZXJhdGlv
biBwZXJmb3JtZWQgYXQgZWFjaCBzdGVwLgogMi4gQWZ0ZXIgcmVtb3ZpbmcgYXQgaW5kZXggNAog
ewogICAgICJkYXRhIjogewotICAgICAgICAiRmlsZXMiOiAiIiwKLSAgICAgICAgInRleHQvdXJp
LWxpc3QiOiAiaHR0cHM6Ly93ZWJraXQub3JnIgorICAgICAgICAidGV4dC91cmktbGlzdCI6ICJo
dHRwczovL3dlYmtpdC5vcmciLAorICAgICAgICAiRmlsZXMiOiAiIgogICAgIH0sCiAgICAgIml0
ZW1zIjogWwogICAgICAgICB7CkBAIC0xNTIsOCArMTUyLDggQEAgcmVtb3ZlZEl0ZW0uZ2V0QXNG
aWxlKCkgc2hvdWxkIGJlIG51bGw6IG51bGwKIDMuIEFmdGVyIHJlbW92aW5nIGF0IGluZGV4IDEK
IHsKICAgICAiZGF0YSI6IHsKLSAgICAgICAgIkZpbGVzIjogIiIsCi0gICAgICAgICJ0ZXh0L3Vy
aS1saXN0IjogImh0dHBzOi8vd2Via2l0Lm9yZyIKKyAgICAgICAgInRleHQvdXJpLWxpc3QiOiAi
aHR0cHM6Ly93ZWJraXQub3JnIiwKKyAgICAgICAgIkZpbGVzIjogIiIKICAgICB9LAogICAgICJp
dGVtcyI6IFsKICAgICAgICAgewpAQCAtMjAzLDggKzIwMyw4IEBAIHJlbW92ZWRJdGVtLmdldEFz
RmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCiA0LiBBZnRlciByZW1vdmluZyBhdCBpbmRleCAz
CiB7CiAgICAgImRhdGEiOiB7Ci0gICAgICAgICJGaWxlcyI6ICIiLAotICAgICAgICAidGV4dC91
cmktbGlzdCI6ICJodHRwczovL3dlYmtpdC5vcmciCisgICAgICAgICJ0ZXh0L3VyaS1saXN0Ijog
Imh0dHBzOi8vd2Via2l0Lm9yZyIsCisgICAgICAgICJGaWxlcyI6ICIiCiAgICAgfSwKICAgICAi
aXRlbXMiOiBbCiAgICAgICAgIHsKQEAgLTI0Nyw2ICsyNDcsNyBAQCByZW1vdmVkSXRlbS5nZXRB
c0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogbnVsbAogNi4gQWZ0ZXIgYWRkaW5nIHR3byBmaWxlcyBh
bmQgc29tZSBzdHJpbmcgZGF0YSBhZ2FpbgogewogICAgICJkYXRhIjogeworICAgICAgICAidGV4
dC9odG1sIjogIjxzdHJvbmc+c29tZSBzdHlsZWQgdGV4dDwvc3Ryb25nPiIsCiAgICAgICAgICJG
aWxlcyI6ICIiCiAgICAgfSwKICAgICAiaXRlbXMiOiBbCkBAIC0yOTYsNiArMjk3LDcgQEAgcmVt
b3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6IG51bGwKIDcuIEFmdGVyIHJlbW92
aW5nIGF0IGluZGV4IDIKIHsKICAgICAiZGF0YSI6IHsKKyAgICAgICAgInRleHQvaHRtbCI6ICI8
c3Ryb25nPnNvbWUgc3R5bGVkIHRleHQ8L3N0cm9uZz4iLAogICAgICAgICAiRmlsZXMiOiAiIgog
ICAgIH0sCiAgICAgIml0ZW1zIjogWwpAQCAtMzQxLDYgKzM0Myw3IEBAIHJlbW92ZWRJdGVtLmdl
dEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCiA4LiBBZnRlciByZW1vdmluZyBhdCBpbmRl
eCAyCiB7CiAgICAgImRhdGEiOiB7CisgICAgICAgICJ0ZXh0L2h0bWwiOiAiPHN0cm9uZz5zb21l
IHN0eWxlZCB0ZXh0PC9zdHJvbmc+IiwKICAgICAgICAgIkZpbGVzIjogIiIKICAgICB9LAogICAg
ICJpdGVtcyI6IFsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9k
YXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1jb3B5LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQt
ZmlsZS1vbi1jb3B5LWV4cGVjdGVkLnR4dAppbmRleCBmZmRmNjdjYWVkMWIxMTc4YzQyZjhjNWQw
MGI1OTU0NzcxZTZjZTliLi4xMzdjOTFiZGMyNWRiZmRkN2YyY2I2OTliODhjMmNlNDJmMDdjODE3
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zl
ci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tY29weS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9u
LWNvcHktZXhwZWN0ZWQudHh0CkBAIC0xMjksNiArMTI5LDcgQEAgcmVtb3ZlZEl0ZW0uZ2V0QXNG
aWxlKCkgc2hvdWxkIGJlIG51bGw6IG51bGwKIDUuIEFmdGVyIGFkZGluZyBhbiBIVE1MIHN0cmlu
ZwogewogICAgICJkYXRhIjogeworICAgICAgICAidGV4dC9odG1sIjogIjxhPmdvb2RieWUgd29y
bGQ8L2E+IiwKICAgICAgICAgIkZpbGVzIjogIiIKICAgICB9LAogICAgICJpdGVtcyI6IFsKQEAg
LTE2NCw2ICsxNjUsNyBAQCByZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDog
bnVsbAogNi4gQWZ0ZXIgYWRkaW5nIGFub3RoZXIgcGxhaW4gdGV4dCBmaWxlCiB7CiAgICAgImRh
dGEiOiB7CisgICAgICAgICJ0ZXh0L2h0bWwiOiAiPGE+Z29vZGJ5ZSB3b3JsZDwvYT4iLAogICAg
ICAgICAiRmlsZXMiOiAiIgogICAgIH0sCiAgICAgIml0ZW1zIjogWwpAQCAtMjEzLDYgKzIxNSw3
IEBAIHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCiA3LiBBZnRl
ciByZW1vdmluZyB0aGUgY3VzdG9tIGZpbGUKIHsKICAgICAiZGF0YSI6IHsKKyAgICAgICAgInRl
eHQvaHRtbCI6ICI8YT5nb29kYnllIHdvcmxkPC9hPiIsCiAgICAgICAgICJGaWxlcyI6ICIiCiAg
ICAgfSwKICAgICAiaXRlbXMiOiBbCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tZHJhZy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVt
LWxpc3QtYWRkLWZpbGUtb24tZHJhZy1leHBlY3RlZC50eHQKaW5kZXggN2FkYTY1NDE5M2ZkZTBk
YTVmZmI4YTc2NWYxYjBhODE2NTk5NjVjMS4uNGM1ODgzODFiZGE0ZGNjZTgyZWJmN2MyMDAxOGNj
MWIwY2U0ODk0YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Rh
dGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWRyYWctZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1h
ZGQtZmlsZS1vbi1kcmFnLWV4cGVjdGVkLnR4dApAQCAtMTI5LDYgKzEyOSw3IEBAIHJlbW92ZWRJ
dGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCiA1LiBBZnRlciBhZGRpbmcgYW4g
SFRNTCBzdHJpbmcKIHsKICAgICAiZGF0YSI6IHsKKyAgICAgICAgInRleHQvaHRtbCI6ICI8YT5n
b29kYnllIHdvcmxkPC9hPiIsCiAgICAgICAgICJGaWxlcyI6ICIiCiAgICAgfSwKICAgICAiaXRl
bXMiOiBbCkBAIC0xNjQsNiArMTY1LDcgQEAgcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxk
IGJlIG51bGw6IG51bGwKIDYuIEFmdGVyIGFkZGluZyBhbm90aGVyIHBsYWluIHRleHQgZmlsZQog
ewogICAgICJkYXRhIjogeworICAgICAgICAidGV4dC9odG1sIjogIjxhPmdvb2RieWUgd29ybGQ8
L2E+IiwKICAgICAgICAgIkZpbGVzIjogIiIKICAgICB9LAogICAgICJpdGVtcyI6IFsKQEAgLTIx
Myw2ICsyMTUsNyBAQCByZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogbnVs
bAogNy4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIGN1c3RvbSBmaWxlCiB7CiAgICAgImRhdGEiOiB7Cisg
ICAgICAgICJ0ZXh0L2h0bWwiOiAiPGE+Z29vZGJ5ZSB3b3JsZDwvYT4iLAogICAgICAgICAiRmls
ZXMiOiAiIgogICAgIH0sCiAgICAgIml0ZW1zIjogWwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLWRvZXMtbm90LXJldmVhbC1maWxlLXVybC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtaW1hZ2Ut
ZG9lcy1ub3QtcmV2ZWFsLWZpbGUtdXJsLWV4cGVjdGVkLnR4dAppbmRleCBkZjY0YjAxMGU5Yjhh
Njg2ZmI2OGJjNmIxZGI1MDcxNGYyOTQ1Y2RhLi4wYjQxNmNjNjdmY2E4ZjFkMjAzOTdhOWU5MGYw
Yjc3NWRhZDQ4ZWQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
cGFzdGUtaW1hZ2UtZG9lcy1ub3QtcmV2ZWFsLWZpbGUtdXJsLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtaW1hZ2UtZG9lcy1ub3QtcmV2ZWFs
LWZpbGUtdXJsLWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDcgQEAgVGVzdHMgdGhhdCBwYXN0aW5n
IGltYWdlcyBkbyBub3QgcmV2ZWFsIGl0cyBmaWxlIFVSTC4gVG8gbWFudWFsbHkgdGVzdCwgY29w
eSB0aGUKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIEpTT04uc3RyaW5naWZ5
KGV2ZW50LmNsaXBib2FyZERhdGEudHlwZXMpIGlzICJbXCJGaWxlc1wiXSIKK1BBU1MgZXZlbnQu
Y2xpcGJvYXJkRGF0YS50eXBlcy5pbmRleE9mKCJGaWxlcyIpIGlzIG5vdCAtMQogUEFTUyBldmVu
dC5jbGlwYm9hcmREYXRhLmdldERhdGEoInVybCIpIGlzICIiCiBQQVNTIGV2ZW50LmNsaXBib2Fy
ZERhdGEuZ2V0RGF0YSgidGV4dC9wbGFpbiIpIGlzICIiCiBQQVNTIGV2ZW50LmNsaXBib2FyZERh
dGEuZ2V0RGF0YSgidGV4dC91cmktbGlzdCIpIGlzICIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtaW1hZ2UtZG9lcy1ub3QtcmV2ZWFsLWZpbGUtdXJs
Lmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtaW1hZ2UtZG9lcy1u
b3QtcmV2ZWFsLWZpbGUtdXJsLmh0bWwKaW5kZXggMmQ1ZThlZWU5ZmRkNGFlNjkzODdjNjZiZmY5
ODA2OTNkZTQyNDc3MC4uZThlZjcwMzQ2NThlOWU0NmY1ZTgyZGI3ZGFlNWJiOGJkZjViZmIzMSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLWRv
ZXMtbm90LXJldmVhbC1maWxlLXVybC5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9wYXN0ZS1pbWFnZS1kb2VzLW5vdC1yZXZlYWwtZmlsZS11cmwuaHRtbApAQCAtMzEs
NyArMzEsNyBAQCBmdW5jdGlvbiBydW5UZXN0KCkKIAogZnVuY3Rpb24gY2hlY2soZXZlbnQpCiB7
Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdKU09OLnN0cmluZ2lmeShldmVudC5jbGlwYm9h
cmREYXRhLnR5cGVzKScsICdbIkZpbGVzIl0nKTsKKyAgICBzaG91bGROb3RCZSgnZXZlbnQuY2xp
cGJvYXJkRGF0YS50eXBlcy5pbmRleE9mKCJGaWxlcyIpJywgJy0xJyk7CiAgICAgc2hvdWxkQmVF
cXVhbFRvU3RyaW5nKCdldmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEoInVybCIpJywgJycpOwog
ICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnZXZlbnQuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCJ0
ZXh0L3BsYWluIiknLCAnJyk7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC5jbGlw
Ym9hcmREYXRhLmdldERhdGEoInRleHQvdXJpLWxpc3QiKScsICcnKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333491</attachid>
            <date>2018-02-09 08:53:13 -0800</date>
            <delta_ts>2018-02-09 10:44:13 -0800</delta_ts>
            <desc>+2 more tests</desc>
            <filename>bug-182636-20180209085311.patch</filename>
            <type>text/plain</type>
            <size>52321</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmI4ZjBmMmU5YWY4MWE2
ZjMyNjBiYzY2NmNhMjZlMTQzNzQzODk5Ny4uNDBlNjc3NzIyMTlhN2Y3OTdmMDU2ZDkxZjY1N2M5
NThlYTAzY2YyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDE4LTAyLTA4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFBhc3RpbmcgZnJv
bSBFeGNlbCBubyBsb25nZXIgcHJvdmlkZXMgdGV4dC9odG1sIGRhdGEKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjYzNgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMzcwODcwNjA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWZ0ZXIgcjIyMjY1Niwgd2UgdHJlYXQgaW1hZ2VzIG9uIHRoZSBwYXN0ZWJv
YXJkIGFzIGZpbGVzLiBIb3dldmVyLCB3ZSBhbHNvIGhhdmUgYW4gZXhpc3RpbmcgcG9saWN5IHdo
aWNoIGhpZGVzCisgICAgICAgIHRleHQgZGF0YSAoInRleHQvdXJpLWxpc3QiLCAidGV4dC9odG1s
IiwgInRleHQvcGxhaW4iKSBmcm9tIHRoZSBwYWdlIHdoZW4gZmlsZXMgYXJlIHByZXNlbnQgb24g
dGhlIHBhc3RlYm9hcmQuCisgICAgICAgIFdoZW4gY29weWluZyBhIHRhYmxlLCBNaWNyb3NvZnQg
RXhjZWwgd3JpdGVzIGEgcmVuZGVyaW5nIG9mIHRoZSB0YWJsZSB0byB0aGUgcGFzdGVib2FyZCBh
cyBhbiBpbWFnZS4gVGhpcyBtZWFucworICAgICAgICB0aGF0IHdlJ2xsIGhpZGUgb3RoZXIgZGF0
YSB0eXBlcyAoaW1wb3J0YW50bHksICd0ZXh0L2h0bWwnKSB1cG9uIHBhc3RpbmcsIGV2ZW4gdGhv
dWdoIGltcG9ydGFudCBjbGllbnRzIChzdWNoIGFzCisgICAgICAgIEdvb2dsZSBEb2NzIGFuZCBD
b25mbHVlbmNlKSBkZXBlbmQgb24gdGhlICd0ZXh0L2h0bWwnIGRhdGEgaW4gb3JkZXIgdG8gY29y
cmVjdGx5IGhhbmRsZSB0aGUgcGFzdGUgKHJhdGhlciB0aGFuCisgICAgICAgIHBhc3RlIGFzIGFu
IGltYWdlIG9mIGEgdGFibGUpLgorCisgICAgICAgIFRvIGZpeCB0aGlzLCB3ZSBhZGQgYW4gZXhj
ZXB0aW9uIHRvIHRoZSBEYXRhVHJhbnNmZXIuZ2V0RGF0YSBjb2RlcGF0aCB3aGVuIHRoZSBwYXN0
ZWJvYXJkIGNvbnRhaW5zIGZpbGVzLgorICAgICAgICBJbnN0ZWFkIG9mIGFsd2F5cyByZXR1cm5p
bmcgdGhlIGVtcHR5IHN0cmluZyBmb3IgdGV4dC9odG1sLCB3ZSBzdGlsbCBhbGxvdyBwYXN0ZWJv
YXJkIGFjY2VzcywgYnV0IG9ubHkgcmVhZAorICAgICAgICBmcm9tIGEgbGltaXRlZCBzZXQgb2Yg
cmljaCB0ZXh0IHR5cGVzLCBpLmUuIHdlYiBhcmNoaXZlLCBSVEYoRCksIGFuZCBIVE1MIG1hcmt1
cC4gSW1wb3J0YW50bHksIHRoaXMgcHJldmVudHMKKyAgICAgICAgdXMgZnJvbSBleHBvc2luZyBh
bnkgZmlsZSBwYXRocyB0aGF0IGFwcGVhciBhcyBwbGFpbiB0ZXh0IG9yIFVSTHMgb24gdGhlIHBh
c3RlYm9hcmQuIEp1c3QgYXMgaW4gdGhlIHJlZ3VsYXIKKyAgICAgICAgY29kZXBhdGggZm9yIGdl
dERhdGEoKSwgaWYgdGhlIHBhc3RlYm9hcmQgZGF0YSBjb21lcyBmcm9tIHRoZSBzYW1lIG9yaWdp
biwgd2UgYWxsb3cgdW5zYW5pdGl6ZWQgYWNjZXNzOworICAgICAgICBvdGhlcndpc2UsIHdlIHVz
ZSBXZWJDb250ZW50TWFya3VwUmVhZGVyIHRvIGV4dHJhY3QgbWFya3VwIGZyb20gdGhlIHBhc3Rl
Ym9hcmQuCisKKyAgICAgICAgVGVzdHM6ICBQYXN0ZU1peGVkQ29udGVudC5JbWFnZUZpbGVBbmRQ
bGFpblRleHQKKyAgICAgICAgICAgICAgICBQYXN0ZU1peGVkQ29udGVudC5JbWFnZUZpbGVBbmRX
ZWJBcmNoaXZlCisgICAgICAgICAgICAgICAgUGFzdGVNaXhlZENvbnRlbnQuSW1hZ2VGaWxlQW5k
SFRNTAorICAgICAgICAgICAgICAgIFBhc3RlTWl4ZWRDb250ZW50LkltYWdlRmlsZUFuZFJURgor
ICAgICAgICAgICAgICAgIFBhc3RlTWl4ZWRDb250ZW50LkltYWdlRmlsZUFuZFVSTAorICAgICAg
ICAgICAgICAgIFBhc3RlTWl4ZWRDb250ZW50LkltYWdlRmlsZVdpdGhIVE1MQW5kVVJMCisgICAg
ICAgICAgICAgICAgRGF0YUludGVyYWN0aW9uVGVzdHMuRGF0YVRyYW5zZmVyR2V0RGF0YVdoZW5E
cm9wcGluZ0ltYWdlQW5kTWFya3VwCisKKyAgICAgICAgQWxzbyByZWJhc2VsaW5lZCBzb21lIGxh
eW91dCB0ZXN0cywgd2hpY2ggY292ZXIgY2hhbmdlcyBpbiBiZWhhdmlvciB3aGVuIGRyb3BwaW5n
IG9uIG1hY09TIGFuZCBwYXN0aW5nIG9uIGlPUy4KKworICAgICAgICAqIGRvbS9EYXRhVHJhbnNm
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpnZXREYXRhRm9ySXRlbSBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnJlYWRQYXN0ZWJvYXJkRGF0
YUZvckJpbmRpbmdzUmVzcGVjdGluZ09yaWdpbiBjb25zdCk6CisKKyAgICAgICAgRmFjdG9yIG91
dCBsb2dpYyBmb3IgcmVhZGluZyBmcm9tIHRoZSBwYXN0ZWJvYXJkIGludG8gYSBwcml2YXRlIGhl
bHBlci4gVGhpcyBpcyBjYWxsZWQgaW4gdHdvIHBsYWNlcyBmcm9tCisgICAgICAgIGdldERhdGFG
b3JJdGVtOiBpbiB0aGUgbm9ybWFsIChleGlzdGluZykgcGF0aCwgYW5kIGluIHRoZSBjYXNlIHdo
ZXJlIHdlIGFsbG93ICd0ZXh0L2h0bWwnIHRvIGJlIHJlYWQgZGVzcGl0ZQorICAgICAgICBmaWxl
cyBhcHBlYXJpbmcgaW4gdGhlIHBhc3RlYm9hcmQuCisKKyAgICAgICAgT25lIGltcG9ydGFudCBk
aWZmZXJlbmNlIGhlcmUgaXMgdGhhdCB0aGlzIGhlbHBlciBub3cgdGFrZXMgYSBXZWJDb250ZW50
UmVhZGluZ1BvbGljeSwgd2hvc2UgcHVycG9zZSBpcyB0bworICAgICAgICBwcmV2ZW50IHJlYWRp
bmcgZnJvbSBub24tcmljaC10ZXh0IHR5cGVzIHdoZW4gZmlsZXMgYXBwZWFyIGluIHRoZSBwYXN0
ZWJvYXJkLgorCisgICAgICAgIEFub3RoZXIgdHdlYWsgaGVyZSBpcyB0aGF0IHdlIG5vdyB1c2Ug
YGxvd2VyY2FzZVR5cGVgIGluc3RlYWQgb2YgdGhlIG9yaWdpbmFsICh1bmFkanVzdGVkKSBgdHlw
ZWAgd2hlbiByZWFkaW5nCisgICAgICAgIGZyb20gdGhlIHBhc3RlYm9hcmQuIFRoaXMgZG9lc24n
dCBzZWVtIHRvIGJlIGludGVuZGVkIGluIHRoZSBmaXJzdCBwbGFjZS4KKworICAgICAgICAoV2Vi
Q29yZTo6RGF0YVRyYW5zZmVyOjp0eXBlcyBjb25zdCk6CisKKyAgICAgICAgVHdlYWsgdGhlIGlt
cGxlbWVudGF0aW9uIG9mIERhdGFUcmFuc2Zlci50eXBlcygpIGluIHRoZSBjYXNlIHdoZXJlIGZp
bGVzIGV4aXN0IG9uIHRoZSBwYXN0ZWJvYXJkLiBDdXJyZW50bHksIHdlCisgICAgICAgIG51a2Ug
dGhlIHJlc3VsdCBvZiBgc2FmZVR5cGVzYCBhbmQgcmVwbGFjZSBpdCB3aXRoIGEgc2luZ2xlIFZl
Y3RvciBjb250YWluaW5nICJGaWxlcyIsIGFuZCB0aGVuIGFkZAorICAgICAgICAidGV4dC91cmkt
bGlzdCIgaWYgaXQgZXhpc3RzIG9uIHRoZSBwYXN0ZWJvYXJkLiBJbnN0ZWFkLCB3b3JrIGJhY2t3
YXJkcywgYWRkaW5nIHRoZSAiRmlsZXMiIHR5cGUgYW5kIHJlbW92aW5nCisgICAgICAgICJ0ZXh0
L3BsYWluIi4gSSBvcHRlZCBmb3IgdGhpcyBiZWNhdXNlIGl0IHNlZW1zIGxlc3MgaGFja3kgdGhh
biBhcHBlbmRpbmcgInRleHQvaHRtbCIgc2VwYXJhdGVseSwgb24gdG9wIG9mCisgICAgICAgICJ0
ZXh0L3VyaS1saXN0Ii4KKworICAgICAgICAqIGRvbS9EYXRhVHJhbnNmZXIuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6CisKKyAgICAgICAgSW50cm9kdWNlIFdlYkNvbnRlbnRS
ZWFkaW5nUG9saWN5LCB3aGljaCBpbmRpY2F0ZXMgd2hldGhlciBvciBub3Qgd2Ugc2hvdWxkIGxp
bWl0IHdlYiBjb250ZW50IHJlYWRpbmcgZnJvbSB0aGUKKyAgICAgICAgcGFzdGVib2FyZCB0byBv
bmx5IHJpY2ggdGV4dCB0eXBlcyB1cG9uIHBhc3RlIG9yIGRyb3AuIE5vcm1hbGx5LCB3ZSBhbGxv
dyBhbGwgdHlwZXMgdG8gYmUgcmVhZCBhcyB3ZWIgY29udGVudAorICAgICAgICAoOjpSZWFkRnJv
bUFueVR5cGUpLCBidXQgd2hlbiBmaWxlcyBhcHBlYXIgb24gdGhlIHBhc3RlYm9hcmQsIHdlIGZv
cmNlIE9ubHlSZWFkRnJvbVJpY2hUZXh0VHlwZXMgdG8gZW5zdXJlIHRoYXQKKyAgICAgICAgbm8g
b3RoZXIgdHlwZXMgY2FuIHVuaW50ZW50aW9uYWxseSBiZSByZWFkIGJhY2sgYXMgd2ViIGNvbnRl
bnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmg6CisgICAgICAgICog
cGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW06CisKKyAgICAgICAgVGVhY2ggUGFzdGVib2Fy
ZCAob24gaU9TKSB0byByZXNwZWN0IFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LgorCisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6cmVhZCk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAgICogcGxhdGZv
cm0vd3BlL1Bhc3RlYm9hcmRXUEUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6
cmVhZCk6CisKKyAgICAgICAgQWRqdXN0IG5vbi1Db2NvYSBQYXN0ZWJvYXJkIGltcGxlbWVudGF0
aW9ucyBmb3IgYW4gaW50ZXJmYWNlIGNoYW5nZS4KKworICAgICAgICAoV2ViQ29yZTo6dHlwZUlz
QXBwcm9wcmlhdGVGb3JXZWJDb250ZW50UmVhZGluZ1BvbGljeSk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRS
ZXNwZWN0aW5nVVRJRmlkZWxpdGllcyk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9h
cmRNYWMubW06CisKKyAgICAgICAgVGVhY2ggUGFzdGVib2FyZCAob24gbWFjT1MpIHRvIHJlc3Bl
Y3QgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kuCisKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmQ6OnJlYWQpOgorCiAyMDE4LTAyLTA4ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBDb3JlQXVkaW9DYXB0dXJlU291cmNlSU9TTGlzdGVuZXIgc2hvdWxkIGJl
IGEgV2ViUHJvY2VzcyBzaW5nbGV0b24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAKaW5k
ZXggYzEwOTQyM2U5YzlkZTIwYzgyNmIwZTc3ZDhmOTZkZjg0MzJmZDY4Ny4uN2U2NTljNzZhOWVk
MjdhZThmMDFiNzZlMDc3MTBjM2ViZDNiYjBkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RhdGFUcmFuc2Zlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zl
ci5jcHAKQEAgLTE1NCw5ICsxNTQsMjYgQEAgU3RyaW5nIERhdGFUcmFuc2Zlcjo6Z2V0RGF0YUZv
ckl0ZW0oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnMKICAgICAg
ICAgICAgIGlmIChQYXN0ZWJvYXJkOjpjYW5FeHBvc2VVUkxUb0RPTVdoZW5QYXN0ZWJvYXJkQ29u
dGFpbnNGaWxlcyh1cmxTdHJpbmcpKQogICAgICAgICAgICAgICAgIHJldHVybiB1cmxTdHJpbmc7
CiAgICAgICAgIH0KKworICAgICAgICBpZiAobG93ZXJjYXNlVHlwZSA9PSAidGV4dC9odG1sIiAm
JiBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmN1c3RvbVBhc3RlYm9h
cmREYXRhRW5hYmxlZCgpKSB7CisgICAgICAgICAgICAvLyBJZiB0aGUgcGFzdGVib2FyZCBjb250
YWlucyBmaWxlcyBhbmQgdGhlIHBhZ2UgcmVxdWVzdHMgJ3RleHQvaHRtbCcsIHdlIG9ubHkgcmVh
ZCBmcm9tIHJpY2ggdGV4dCB0eXBlcyB0byBwcmV2ZW50IGZpbGUKKyAgICAgICAgICAgIC8vIHBh
dGhzIGZyb20gbGVha2luZyAoZS5nLiBmcm9tIHBsYWluIHRleHQgZGF0YSBvbiB0aGUgcGFzdGVi
b2FyZCkuIFdlIHJlcXVpcmUgY3VzdG9tIHBhc3RlYm9hcmQgZGF0YSBmb3IgdGhpcyBiZWNhdXNl
CisgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIGVuc3VyZSB0aGF0IGVpdGhlcjoKKyAgICAgICAg
ICAgIC8vICAgLSBhbGwgbWFya3VwIHJlcG9ydGVkIHRvIHRoZSBwYWdlIHVuZGVyZ29lcyBzYW5p
dGl6YXRpb24sIG9yCisgICAgICAgICAgICAvLyAgIC0gdGhlIGN1c3RvbSBwYXN0ZWJvYXJkIGRh
dGEncyBvcmlnaW4gbWF0Y2hlcyB0aGUgZG9jdW1lbnQgb3JpZ2luCisgICAgICAgICAgICAvLyBU
aGlzIG1lYW5zIHRoYXQgaWYgY3VzdG9tIHBhc3RlYm9hcmQgZGF0YSBpcyBkaXNhYmxlZCBhbmQg
dGhlcmUgaXMgYSBmaWxlIG9uIHRoZSBwYXN0ZWJvYXJkLCB3ZSByZXZlcnQgdG8gb3VyIGxlZ2Fj
eQorICAgICAgICAgICAgLy8gYmVoYXZpb3Igb2Ygc2ltcGx5IHJldHVybmluZyBhbiBlbXB0eSBz
dHJpbmcuCisgICAgICAgICAgICByZXR1cm4gcmVhZFBhc3RlYm9hcmREYXRhRm9yQmluZGluZ3NS
ZXNwZWN0aW5nT3JpZ2luKGRvY3VtZW50LCBsb3dlcmNhc2VUeXBlLCBXZWJDb250ZW50UmVhZGlu
Z1BvbGljeTo6T25seVJlYWRGcm9tUmljaFRleHRUeXBlcyk7CisgICAgICAgIH0KKwogICAgICAg
ICByZXR1cm4geyB9OwogICAgIH0KIAorICAgIHJldHVybiByZWFkUGFzdGVib2FyZERhdGFGb3JC
aW5kaW5nc1Jlc3BlY3RpbmdPcmlnaW4oZG9jdW1lbnQsIGxvd2VyY2FzZVR5cGUsIFdlYkNvbnRl
bnRSZWFkaW5nUG9saWN5OjpSZWFkRnJvbUFueVR5cGUpOworfQorCitTdHJpbmcgRGF0YVRyYW5z
ZmVyOjpyZWFkUGFzdGVib2FyZERhdGFGb3JCaW5kaW5nc1Jlc3BlY3RpbmdPcmlnaW4oRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGxvd2VyY2FzZVR5cGUsIFdlYkNvbnRlbnRSZWFk
aW5nUG9saWN5IHBvbGljeSkgY29uc3QKK3sKICAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKCkpCiAgICAg
ICAgIHJldHVybiBtX3Bhc3RlYm9hcmQtPnJlYWRTdHJpbmcobG93ZXJjYXNlVHlwZSk7CiAKQEAg
LTE3MCwxNSArMTg3LDE1IEBAIFN0cmluZyBEYXRhVHJhbnNmZXI6OmdldERhdGFGb3JJdGVtKERv
Y3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zCiAgICAgaWYgKCFQYXN0
ZWJvYXJkOjppc1NhZmVUeXBlRm9yRE9NVG9SZWFkQW5kV3JpdGUobG93ZXJjYXNlVHlwZSkpCiAg
ICAgICAgIHJldHVybiB7IH07CiAKLSAgICBpZiAoIWlzPFN0YXRpY1Bhc3RlYm9hcmQ+KCptX3Bh
c3RlYm9hcmQpICYmIHR5cGUgPT0gInRleHQvaHRtbCIpIHsKKyAgICBpZiAoIWlzPFN0YXRpY1Bh
c3RlYm9hcmQ+KCptX3Bhc3RlYm9hcmQpICYmIGxvd2VyY2FzZVR5cGUgPT0gInRleHQvaHRtbCIp
IHsKICAgICAgICAgaWYgKCFkb2N1bWVudC5mcmFtZSgpKQogICAgICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICAgICAgV2ViQ29udGVudE1hcmt1cFJlYWRlciByZWFkZXIgeyAqZG9jdW1lbnQuZnJh
bWUoKSB9OwotICAgICAgICBtX3Bhc3RlYm9hcmQtPnJlYWQocmVhZGVyKTsKKyAgICAgICAgbV9w
YXN0ZWJvYXJkLT5yZWFkKHJlYWRlciwgcG9saWN5KTsKICAgICAgICAgcmV0dXJuIHJlYWRlci5t
YXJrdXA7CiAgICAgfQogCi0gICAgcmV0dXJuIG1fcGFzdGVib2FyZC0+cmVhZFN0cmluZyh0eXBl
KTsKKyAgICByZXR1cm4gbV9wYXN0ZWJvYXJkLT5yZWFkU3RyaW5nKGxvd2VyY2FzZVR5cGUpOwog
fQogCiBTdHJpbmcgRGF0YVRyYW5zZmVyOjpnZXREYXRhKERvY3VtZW50JiBkb2N1bWVudCwgY29u
c3QgU3RyaW5nJiB0eXBlKSBjb25zdApAQCAtMjgzLDIwICszMDAsMjAgQEAgVmVjdG9yPFN0cmlu
Zz4gRGF0YVRyYW5zZmVyOjp0eXBlcyhBZGRGaWxlc1R5cGUgYWRkRmlsZXNUeXBlKSBjb25zdAog
ICAgIH0KIAogICAgIGF1dG8gc2FmZVR5cGVzID0gbV9wYXN0ZWJvYXJkLT50eXBlc1NhZmVGb3JC
aW5kaW5ncyhtX29yaWdpbklkZW50aWZpZXIpOworICAgIEFTU0VSVCghc2FmZVR5cGVzLmNvbnRh
aW5zKCJGaWxlcyIpKTsKKwogICAgIGJvb2wgaGFzRmlsZUJhY2tlZEl0ZW0gPSBtX2l0ZW1MaXN0
ICYmIG1faXRlbUxpc3QtPmhhc0l0ZW1zKCkgJiYgbm90Rm91bmQgIT0gbV9pdGVtTGlzdC0+aXRl
bXMoKS5maW5kTWF0Y2hpbmcoW10gKGNvbnN0IGF1dG8mIGl0ZW0pIHsKICAgICAgICAgcmV0dXJu
IGl0ZW0tPmlzRmlsZSgpOwogICAgIH0pOwogCiAgICAgaWYgKGhhc0ZpbGVCYWNrZWRJdGVtIHx8
IG1fcGFzdGVib2FyZC0+Y29udGFpbnNGaWxlcygpKSB7Ci0gICAgICAgIFZlY3RvcjxTdHJpbmc+
IHR5cGVzOwogICAgICAgICBpZiAoYWRkRmlsZXNUeXBlID09IEFkZEZpbGVzVHlwZTo6WWVzKQot
ICAgICAgICAgICAgdHlwZXMuYXBwZW5kKEFTQ0lJTGl0ZXJhbCgiRmlsZXMiKSk7Ci0gICAgICAg
IGlmIChzYWZlVHlwZXMuY29udGFpbnMoInRleHQvdXJpLWxpc3QiKSkKLSAgICAgICAgICAgIHR5
cGVzLmFwcGVuZChBU0NJSUxpdGVyYWwoInRleHQvdXJpLWxpc3QiKSk7Ci0gICAgICAgIHJldHVy
biB0eXBlczsKKyAgICAgICAgICAgIHNhZmVUeXBlcy5hcHBlbmQoQVNDSUlMaXRlcmFsKCJGaWxl
cyIpKTsKKyAgICAgICAgLy8gV2UgZG9uJ3QgZXhwb3NlICd0ZXh0L3BsYWluJyB0byB0aGUgcGFn
ZSBpZiB0aGUgcGFzdGVib2FyZCBjb250YWlucyBmaWxlcywgYmVjYXVzZSBwbGFpbiB0ZXh0IGRh
dGEgbWF5IGNvbnRhaW4gZmlsZSBwYXRocy4KKyAgICAgICAgc2FmZVR5cGVzLnJlbW92ZUZpcnN0
KCJ0ZXh0L3BsYWluIik7CisgICAgICAgIHJldHVybiBzYWZlVHlwZXM7CiAgICAgfQogCi0gICAg
QVNTRVJUKCFzYWZlVHlwZXMuY29udGFpbnMoIkZpbGVzIikpOwogICAgIHJldHVybiBzYWZlVHlw
ZXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaAppbmRleCAzMWRjNzk5ZmM3ZWY3Yzcw
Mzc2NzQ3NzU0N2M0Y2IzNDBlNDEwMjM0Li43ZmQ1YTFhMDZmMjY5YTE2OWRmMTQ3MDdkODFlMDc2
OTE2MWQ5ZTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCkBAIC0zOSw2ICszOSw3IEBA
IGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGaWxlTGlzdDsKIGNsYXNzIEZpbGU7CiBjbGFzcyBQYXN0
ZWJvYXJkOworZW51bSBjbGFzcyBXZWJDb250ZW50UmVhZGluZ1BvbGljeTsKIAogY2xhc3MgRGF0
YVRyYW5zZmVyIDogcHVibGljIFJlZkNvdW50ZWQ8RGF0YVRyYW5zZmVyPiB7CiBwdWJsaWM6CkBA
IC0xMjEsNiArMTIyLDcgQEAgcHJpdmF0ZToKICAgICBib29sIGZvckZpbGVEcmFnKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICNlbmRpZgogCisgICAgU3RyaW5nIHJlYWRQYXN0ZWJvYXJkRGF0
YUZvckJpbmRpbmdzUmVzcGVjdGluZ09yaWdpbihEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYgbG93
ZXJjYXNlVHlwZSwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kpIGNvbnN0OwogICAgIGJvb2wgc2hv
dWxkU3VwcHJlc3NHZXRBbmRTZXREYXRhVG9Bdm9pZEV4cG9zaW5nRmlsZVBhdGhzKCkgY29uc3Q7
CiAKICAgICBlbnVtIGNsYXNzIEFkZEZpbGVzVHlwZSB7IE5vLCBZZXMgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCBlOTE3Y2MzOWM1NDczMjQ4NzBkZjk1ZDhjY2NlYmJi
MGUyZjcxMTc2Li44YjNhOGI0MTFjZDBjMGM3MzQ4OGM1NzZiODUyNGFjODAxOGJmOTY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC02NCw2ICs2NCw3IEBAIGNsYXNzIFJh
bmdlOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKIGNsYXNzIFNoYXJlZEJ1ZmZlcjsKIAorZW51bSBj
bGFzcyBXZWJDb250ZW50UmVhZGluZ1BvbGljeSB7IFJlYWRGcm9tQW55VHlwZSwgT25seVJlYWRG
cm9tUmljaFRleHRUeXBlcyB9OwogZW51bSBTaG91bGRTZXJpYWxpemVTZWxlY3RlZFRleHRGb3JE
YXRhVHJhbnNmZXIgeyBEZWZhdWx0U2VsZWN0ZWRUZXh0VHlwZSwgSW5jbHVkZUltYWdlQWx0VGV4
dEZvckRhdGFUcmFuc2ZlciB9OwogCiAvLyBGb3Igd3JpdGluZyB0byB0aGUgcGFzdGVib2FyZC4g
R2VuZXJhbGx5IHNvcnRlZCB3aXRoIHRoZSByaWNoZXN0IGZvcm1hdHMgb24gdG9wLgpAQCAtMjA5
LDcgKzIxMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xl
YXIoY29uc3QgU3RyaW5nJiB0eXBlKTsKIAogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9p
ZCByZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmKTsKLSAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYpOworICAgIHZpcnR1YWwgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29u
dGVudFJlYWRpbmdQb2xpY3kgPSBXZWJDb250ZW50UmVhZGluZ1BvbGljeTo6UmVhZEZyb21BbnlU
eXBlKTsKICAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0ZWJvYXJkRmls
ZVJlYWRlciYpOwogCiAgICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0
IFBhc3RlYm9hcmRVUkwmKTsKQEAgLTI3Myw3ICsyNzQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgog
I2lmIFBMQVRGT1JNKElPUykKICAgICBib29sIHJlc3BlY3RzVVRJRmlkZWxpdGllcygpIGNvbnN0
OwotICAgIHZvaWQgcmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250
ZW50UmVhZGVyJik7CisgICAgdm9pZCByZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVi
b2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSk7CiAKICAgICBl
bnVtIGNsYXNzIFJlYWRlclJlc3VsdCB7CiAgICAgICAgIFJlYWRUeXBlLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCmluZGV4IDZhMzkzNGRhNDZkOGJmMzllY2Uw
MjU0YmM3YzVkOTk3OGQ5OGRkMzUuLjAwN2U0M2ExOGVjNTdmN2I3MGM5YjRmMDM0ZDdiNzUwZGE3
YzRiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9h
cmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKQEAg
LTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoY29uc3QgU3RyaW5nJiB0eXBl
KSBmaW5hbDsKIAogICAgIHZvaWQgcmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JikgZmluYWwgeyB9
Ci0gICAgdm9pZCByZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJikgZmluYWwgeyB9Cisg
ICAgdm9pZCByZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRp
bmdQb2xpY3kpIGZpbmFsIHsgfQogCiAgICAgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJM
JikgZmluYWwgeyB9CiAgICAgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKSBmaW5h
bCB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJk
R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApp
bmRleCBhOGQ1ZTU5OWM4NTczZjBkYTg2MjYzZjdiNmU2YWIyY2RhZTRiODc3Li45OWQxMjAzZDYz
MGY0MjExZjNmZWM4Y2JlYWYyMzA1MjMzNTZkMDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBQYXN0
ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQpCiAgICAgdGV4dC50ZXh0ID0g
bV9zZWxlY3Rpb25EYXRhLT50ZXh0KCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0
ZWJvYXJkV2ViQ29udGVudFJlYWRlciYpCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2Fy
ZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSkKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCBiODg3OTg0
NzZmY2NlNTAzMmVkOGM1ZWQ4NjhkZWEwZDlmYzYxZjQ1Li4xZThkMjczZGJkZmNjMjE5MzM4NDY2
NDNhMjJhM2U0ZDZkODUyYTE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9p
b3MvUGFzdGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFz
dGVib2FyZElPUy5tbQpAQCAtMTYzLDYgKzE2MywxMSBAQCBzdGF0aWMgTlNBcnJheSogc3VwcG9y
dGVkSW1hZ2VUeXBlcygpCiAgICAgcmV0dXJuIEBbKGlkKWtVVFR5cGVQTkcsIChpZClrVVRUeXBl
VElGRiwgKGlkKWtVVFR5cGVKUEVHLCAoaWQpa1VUVHlwZUdJRl07CiB9CiAKK3N0YXRpYyBib29s
IHR5cGVJc0FwcHJvcHJpYXRlRm9yV2ViQ29udGVudFJlYWRpbmdQb2xpY3koTlNTdHJpbmcgKnR5
cGUsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5IHBvbGljeSkKK3sKKyAgICByZXR1cm4gcG9saWN5
ID09IFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5OjpSZWFkRnJvbUFueVR5cGUgfHwgW3R5cGUgaXNF
cXVhbFRvU3RyaW5nOldlYkFyY2hpdmVQYm9hcmRUeXBlXSB8fCBbdHlwZSBpc0VxdWFsVG9TdHJp
bmc6KE5TU3RyaW5nICopa1VUVHlwZUhUTUxdIHx8IFt0eXBlIGlzRXF1YWxUb1N0cmluZzooTlNT
dHJpbmcgKilrVVRUeXBlUlRGXSB8fCBbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KE5TU3RyaW5nICop
a1VUVHlwZUZsYXRSVEZEXTsKK30KKwogUGFzdGVib2FyZDo6UmVhZGVyUmVzdWx0IFBhc3RlYm9h
cmQ6OnJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlKFBhc3RlYm9hcmRXZWJDb250
ZW50UmVhZGVyJiByZWFkZXIsIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3ksIE5TU3RyaW5n
ICp0eXBlLCBpbnQgaXRlbUluZGV4KQogewogICAgIGlmIChbdHlwZSBpc0VxdWFsVG9TdHJpbmc6
V2ViQXJjaGl2ZVBib2FyZFR5cGVdKSB7CkBAIC0yMjUsMTEgKzIzMCwxMSBAQCBQYXN0ZWJvYXJk
OjpSZWFkZXJSZXN1bHQgUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZv
clR5cGUoUGFzdGVibwogICAgIHJldHVybiBSZWFkZXJSZXN1bHQ6OkRpZE5vdFJlYWRUeXBlOwog
fQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJl
YWRlcikKK3ZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYg
cmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSBwb2xpY3kpCiB7CiAgICAgcmVhZGVyLmNv
bnRlbnRPcmlnaW4gPSByZWFkT3JpZ2luKCk7CiAgICAgaWYgKHJlc3BlY3RzVVRJRmlkZWxpdGll
cygpKSB7Ci0gICAgICAgIHJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyhyZWFkZXIpOworICAg
ICAgICByZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMocmVhZGVyLCBwb2xpY3kpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC0yNDUsOSArMjUwLDE0IEBAIHZvaWQgUGFzdGVib2FyZDo6
cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyKQogCiAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBudW1iZXJPZkl0ZW1zOyBpKyspIHsKICAgICAgICAgZm9yIChpbnQgdHlwZUlu
ZGV4ID0gMDsgdHlwZUluZGV4IDwgbnVtYmVyT2ZUeXBlczsgdHlwZUluZGV4KyspIHsKLSAgICAg
ICAgICAgIGF1dG8gaXRlbVJlc3VsdCA9IHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JU
eXBlKHJlYWRlciwgc3RyYXRlZ3ksIFt0eXBlcyBvYmplY3RBdEluZGV4OnR5cGVJbmRleF0sIGkp
OworICAgICAgICAgICAgTlNTdHJpbmcgKnR5cGUgPSBbdHlwZXMgb2JqZWN0QXRJbmRleDp0eXBl
SW5kZXhdOworICAgICAgICAgICAgaWYgKCF0eXBlSXNBcHByb3ByaWF0ZUZvcldlYkNvbnRlbnRS
ZWFkaW5nUG9saWN5KHR5cGUsIHBvbGljeSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisK
KyAgICAgICAgICAgIGF1dG8gaXRlbVJlc3VsdCA9IHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERh
dGFGb3JUeXBlKHJlYWRlciwgc3RyYXRlZ3ksIHR5cGUsIGkpOwogICAgICAgICAgICAgaWYgKGl0
ZW1SZXN1bHQgPT0gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuOworCiAgICAgICAgICAgICBpZiAoaXRlbVJlc3VsdCA9
PSBSZWFkZXJSZXN1bHQ6OlJlYWRUeXBlKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC0yNjIsMTQgKzI3MiwxNCBAQCBib29sIFBhc3RlYm9hcmQ6OnJlc3BlY3RzVVRJRmlk
ZWxpdGllcygpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFzdGVib2FyZE5hbWUgPT0gImRhdGEgaW50
ZXJhY3Rpb24gcGFzdGVib2FyZCI7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVhZFJlc3BlY3Rp
bmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIpCit2b2lk
IFBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyhQYXN0ZWJvYXJkV2ViQ29u
dGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSBwb2xpY3kpCiB7CiAg
ICAgQVNTRVJUKHJlc3BlY3RzVVRJRmlkZWxpdGllcygpKTsKICAgICBhdXRvJiBzdHJhdGVneSA9
ICpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCk7CiAgICAgZm9yIChO
U1VJbnRlZ2VyIGluZGV4ID0gMCwgbnVtYmVyT2ZJdGVtcyA9IHN0cmF0ZWd5LmdldFBhc3RlYm9h
cmRJdGVtc0NvdW50KG1fcGFzdGVib2FyZE5hbWUpOyBpbmRleCA8IG51bWJlck9mSXRlbXM7ICsr
aW5kZXgpIHsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgICAgICBhdXRvIGlu
Zm8gPSBzdHJhdGVneS5pbmZvcm1hdGlvbkZvckl0ZW1BdEluZGV4KGluZGV4LCBtX3Bhc3RlYm9h
cmROYW1lKTsKLSAgICAgICAgYm9vbCBjYW5SZWFkQXR0YWNobWVudCA9IFJ1bnRpbWVFbmFibGVk
RmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYXR0YWNobWVudEVsZW1lbnRFbmFibGVkKCkgJiYg
IWluZm8ucGF0aEZvckZpbGVVcGxvYWQuaXNFbXB0eSgpOworICAgICAgICBib29sIGNhblJlYWRB
dHRhY2htZW50ID0gcG9saWN5ID09IFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5OjpSZWFkRnJvbUFu
eVR5cGUgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5hdHRhY2ht
ZW50RWxlbWVudEVuYWJsZWQoKSAmJiAhaW5mby5wYXRoRm9yRmlsZVVwbG9hZC5pc0VtcHR5KCk7
CiAgICAgICAgIGlmIChjYW5SZWFkQXR0YWNobWVudCAmJiBpbmZvLnByZWZlcnJlZFByZXNlbnRh
dGlvblN0eWxlID09IFBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGU6OkF0dGFjaG1lbnQp
IHsKICAgICAgICAgICAgIHJlYWRlci5yZWFkRmlsZVBhdGhzKHsgaW5mby5wYXRoRm9yRmlsZVVw
bG9hZCB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjgxLDYgKzI5MSw5IEBAIHZvaWQg
UGFzdGVib2FyZDo6cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250
ZW50UmVhZGVyJiByZWFkZXIpCiAgICAgICAgIHN0cmF0ZWd5LmdldFR5cGVzQnlGaWRlbGl0eUZv
ckl0ZW1BdEluZGV4KHR5cGVzRm9ySXRlbUluT3JkZXJPZkZpZGVsaXR5LCBpbmRleCwgbV9wYXN0
ZWJvYXJkTmFtZSk7CiAgICAgICAgIFJlYWRlclJlc3VsdCByZXN1bHQgPSBSZWFkZXJSZXN1bHQ6
OkRpZE5vdFJlYWRUeXBlOwogICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlc0Zvckl0ZW1J
bk9yZGVyT2ZGaWRlbGl0eSkgeworICAgICAgICAgICAgaWYgKCF0eXBlSXNBcHByb3ByaWF0ZUZv
cldlYkNvbnRlbnRSZWFkaW5nUG9saWN5KHR5cGUsIHBvbGljeSkpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisKICAgICAgICAgICAgIHJlc3VsdCA9IHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVu
dERhdGFGb3JUeXBlKHJlYWRlciwgc3RyYXRlZ3ksIHR5cGUsIGluZGV4KTsKICAgICAgICAgICAg
IGlmIChyZXN1bHQgPT0gUmVhZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFs
bHkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCBjMjZjOTA0ZGI4YjQxMDE2MmViNzc5ZTRkYjU0OTk1
MGRlNDE1OGRhLi42OGZmZjllMDk3NmNhMmJhZDYyMmE3MWMzN2JlOTQ0NGFjOTNiOGIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMzMxLDcg
KzMzMSw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0
KQogICAgIHRleHQuaXNVUkwgPSAhdGV4dC50ZXh0LmlzTnVsbCgpOwogfQogCi12b2lkIFBhc3Rl
Ym9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlcikKK3ZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250
ZW50UmVhZGluZ1BvbGljeSBwb2xpY3kpCiB7CiAgICAgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJh
dGVneSA9ICpwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCk7CiAKQEAg
LTM0Nyw3ICszNDcsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRl
bnRSZWFkZXImIHJlYWRlcikKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICh0eXBlcy5jb250
YWlucyhTdHJpbmcobGVnYWN5RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSkpKSB7CisgICAgaWYg
KHBvbGljeSA9PSBXZWJDb250ZW50UmVhZGluZ1BvbGljeTo6UmVhZEZyb21BbnlUeXBlICYmIHR5
cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lGaWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpKSkpIHsK
ICAgICAgICAgVmVjdG9yPFN0cmluZz4gcGF0aHM7CiAgICAgICAgIHN0cmF0ZWd5LmdldFBhdGhu
YW1lc0ZvclR5cGUocGF0aHMsIGxlZ2FjeUZpbGVuYW1lc1Bhc3RlYm9hcmRUeXBlKCksIG1fcGFz
dGVib2FyZE5hbWUpOwogICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgp
IHx8IHJlYWRlci5yZWFkRmlsZVBhdGhzKHBhdGhzKSkKQEAgLTM3NCw2ICszNzQsOSBAQCB2b2lk
IFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlcikKICAg
ICAgICAgfQogICAgIH0KIAorICAgIGlmIChwb2xpY3kgPT0gV2ViQ29udGVudFJlYWRpbmdQb2xp
Y3k6Ok9ubHlSZWFkRnJvbVJpY2hUZXh0VHlwZXMpCisgICAgICAgIHJldHVybjsKKwogICAgIGlm
ICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCkpKSkgewog
ICAgICAgICBpZiAoUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gc3RyYXRlZ3kuYnVmZmVy
Rm9yVHlwZShsZWdhY3lUSUZGUGFzdGVib2FyZFR5cGUoKSwgbV9wYXN0ZWJvYXJkTmFtZSkpIHsK
ICAgICAgICAgICAgIGlmIChtX2NoYW5nZUNvdW50ICE9IGNoYW5nZUNvdW50KCkgfHwgcmVhZGVy
LnJlYWRJbWFnZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgQVNDSUlMaXRlcmFsKCJpbWFnZS90
aWZmIikpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9h
cmRXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
CmluZGV4IGM5YTBkMmRmN2M0ZDljYjMzN2EwZGViN2MwYTkzNjUxOWE0ZDk4NTQuLjQ2NjUwZjA1
ZWE4YzJkMTE5MmZlMmRmYTZjZTExMjNmYmI4NDcwOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKQEAgLTEwNzMsNyArMTA3Myw3IEBAIHZvaWQg
UGFzdGVib2FyZDo6d3JpdGUoY29uc3QgUGFzdGVib2FyZFdlYkNvbnRlbnQmKQogewogfQogCi12
b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImKQordm9pZCBQ
YXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJl
YWRpbmdQb2xpY3kpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dwZS9QYXN0ZWJvYXJkV1BFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9QYXN0
ZWJvYXJkV1BFLmNwcAppbmRleCAyNDdhZjU1MTJjNmMwYWQwZGEwZWM3ZjMxMDI5MDQxNjFhMGE1
ODhhLi4xZWIyZDI5YTU4ZTkwYmJjMGU0Y2E1ODhjYzY4ZTE2NjRjZWZjMzMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvUGFzdGVib2FyZFdQRS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1Bhc3RlYm9hcmRXUEUuY3BwCkBAIC05Nyw3ICs5Nyw3
IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0KQogICAg
IHRleHQudGV4dCA9IHBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+
cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKDAsICJ0ZXh0L3BsYWluO2NoYXJzZXQ9dXRmLTgiKTsK
IH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJikK
K3ZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNv
bnRlbnRSZWFkaW5nUG9saWN5KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1n
aXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMGVmZDQ2MDVhNGVl
Y2Q5YWJmZGI0N2ZlOGRjZjYwOWRmNTFlZjFhZi4uYWQ0NTIwNTA1MmM4MzcyMDRkNWQ1YjZhYTEy
MjY1NDc0NTE2NzZiYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE4LTAyLTA4ICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFBhc3RpbmcgZnJvbSBFeGNlbCBubyBsb25n
ZXIgcHJvdmlkZXMgdGV4dC9odG1sIGRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MjYzNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzcwODcw
NjA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IG5ldyBBUEkgdGVzdHMgdG8gZXhlcmNpc2UgcGFzdGluZyBpbWFnZXMgd2l0aCB2YXJpb3VzIG90
aGVyIGNvbnRlbnQgdHlwZXMgb24gbWFjT1MsIGFuZCB3aGVuIGRyb3BwaW5nIGltYWdlcworICAg
ICAgICBhbmQgSFRNTCBtYXJrdXAgb24gaU9TLiBTZWUgdGhlIFdlYkNvcmUgQ2hhbmdlTG9nIGZv
ciBtb3JlIGRldGFpbC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRGF0YVRyYW5zZmVyLmh0bWw6IEFkZGVkLgorCisgICAgICAgIEFkZCBhIG5l
dyBBUEkgdGVzdCBoYXJuZXNzIHRoYXQgZHVtcHMgdmFyaW91cyBiaXRzIG9mIGluZm9ybWF0aW9u
IGFib3V0IGEgRGF0YVRyYW5zZmVyIHVwb24gcGFzdGUgYW5kIGRyb3AuCisgICAgICAgIFdoaWxl
IHNvbWV3aGF0IHNpbWlsYXIgdG8gc29tZSBleGlzdGluZyBoYXJuZXNzZXMsIHRoaXMgbWFrZXMg
YSBkaXN0aW5jdGlvbiBiZXR3ZWVuIHRoZSByYXcgSFRNTCBkYXRhIG9uIHRoZQorICAgICAgICBw
YXN0ZWJvYXJkIGFuZCB0aGUgYWN0dWFsIHJlc3VsdCBvZiBpbnNlcnRpbmcgc2FpZCBIVE1MIGlu
dG8gdGhlIERPTS4gVGhpcyBhbGxvd3MgdXMgdG8gY2hlY2sgdGhhdCB0aGUgSFRNTCBoYXMKKyAg
ICAgICAgYmVlbiBzYW5pdGl6ZWQsIHdoaWxlIG1ha2luZyBjaGVja3MgZm9yIHRoZSBhY3R1YWwg
Y29udGVudCBvZiB0aGUgSFRNTCByb2J1c3QgYWdhaW5zdCBpbmxpbmUgc3R5bGUgY2hhbmdlcy4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVJbWFnZS5t
bToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlTWl4ZWRD
b250ZW50Lm1tOiBBZGRlZC4KKworICAgICAgICBBZGQgYSBuZXcgdGVzdCBzdWl0ZSB0byBleGVy
Y2lzZSBwYXN0aW5nIG1peGVkIGNvbnRlbnQgdHlwZXMuIEluIHRoZXNlIHRlc3QgY2FzZXMsIHdl
IGhhdmUgYSBjb21iaW5hdGlvbiBvZgorICAgICAgICBmaWxlcyBhbmQgcmljaCB0ZXh0LgorCisg
ICAgICAgIChpbWFnZVBhdGgpOgorICAgICAgICAod3JpdGVUeXBlc0FuZERhdGFUb1Bhc3RlYm9h
cmQpOgorCisgICAgICAgIEFkZCBhIGhlbHBlciB0byB3cml0ZSBhIHZhci1hcmcgbGlzdCBvZiBj
b250ZW50IHR5cGVzIGFuZCBkYXRhIHRvIHRoZSBnZW5lcmFsIE5TUGFzdGVib2FyZC4KKworICAg
ICAgICAoc2V0VXBXZWJWaWV3KToKKyAgICAgICAgKG1hcmt1cFN0cmluZyk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9E
YXRhSW50ZXJhY3Rpb25UZXN0cy5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRlc3RJY29u
SW1hZ2VEYXRhKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgorCisgICAgICAgIE1vdmUgYSBwcml2
YXRlIGRlY2xhcmF0aW9uIG9mIC1bV0tXZWJWaWV3IHBhc3RlOl0gb3V0IHRvIFRlc3RXS1dlYlZp
ZXcuaCwgc28gdGhhdCBpdCBjYW4gYmUgc2hhcmVkIGFjcm9zcworICAgICAgICBtdWx0aXBsZSB0
ZXN0cy4gQ3VycmVudGx5LCBpdCBvbmx5IHJlc2lkZXMgaW4gUGFzdGVJbWFnZS5tbSwgYnV0IEkg
bmVlZCBpdCBpbiBQYXN0ZU1peGVkQ29udGVudC5tbSBhcyB3ZWxsLgorCiAyMDE4LTAyLTA4ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVGhlcmUgc2hvdWxkIGJl
IGEgd2F5IHRvIGRpc2FibGUgW092ZXJyaWRlQnVpbHRpbnNdIGJlaGF2aW9yIGluIGEgZ2l2ZW4g
RE9NV3JhcHBlcldvcmxkCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNhZjhkMjRhMWRkYjdm
ZjFmZWZhOTI1OWE4YWI5MmY1NWNiODY2YmUuLmEyYzc1MTY4YzQzZTk3NzEyYTQ5NDM0YTA0ZTEw
ZmY3MWI5YTg0YWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03NDEsNiArNzQxLDggQEAK
IAkJRjQ0RDA2NEExRjM5NjJGMjAwMUEwRTI5IC8qIEVkaXRpbmdUZXN0SGFybmVzcy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NEQwNjQ5MUYzOTYy
RTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3MubW0gKi87IH07CiAJCUY0NTEyRTEzMUY2
MEM0NDYwMEJCMzY5RSAvKiBEYXRhVHJhbnNmZXJJdGVtLWdldEFzRW50cnkuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDUxMkUxMjFG
NjBDNDM0MDBCQjM2OUUgLyogRGF0YVRyYW5zZmVySXRlbS1nZXRBc0VudHJ5Lmh0bWwgKi87IH07
CiAJCUY0NTM4RUY3MUU4NDczRTYwMEI1Qzk1MyAvKiBsYXJnZS1yZWQtc3F1YXJlLnBuZyBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDUzOEVG
MDFFODQ2QjQxMDBCNUM5NTMgLyogbGFyZ2UtcmVkLXNxdWFyZS5wbmcgKi87IH07CisJCUY0NTdB
OUI4MjAyRDVDREMwMEY3RTlENSAvKiBQYXN0ZU1peGVkQ29udGVudC5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NTdBOUI2MjAyRDVDREMwMEY3RTlE
NSAvKiBQYXN0ZU1peGVkQ29udGVudC5tbSAqLzsgfTsKKwkJRjQ1N0E5RDYyMDJENjhBRjAwRjdF
OUQ1IC8qIERhdGFUcmFuc2Zlci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NTdBOUIzMjAyRDUzNTMwMEY3RTlENSAvKiBEYXRhVHJh
bnNmZXIuaHRtbCAqLzsgfTsKIAkJRjQ1QjYzRkIxRjE5N0Y0QTAwOUQzOEI5IC8qIGltYWdlLW1h
cC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0NUI2M0ZBMUYxOTdGMzMwMDlEMzhCOSAvKiBpbWFnZS1tYXAuaHRtbCAqLzsgfTsKIAkJ
RjQ1QjYzRkUxRjE5RDQxMDAwOUQzOEI5IC8qIEFjdGlvblNoZWV0VGVzdHMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDVCNjNGQzFGMTlENDEwMDA5
RDM4QjkgLyogQWN0aW9uU2hlZXRUZXN0cy5tbSAqLzsgfTsKIAkJRjQ2ODQ5QkUxRUVGNThFNDAw
QjkzN0ZFIC8qIFVJUGFzdGVib2FyZFRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2ODQ5QkQxRUVGNThFNDAwQjkzN0ZFIC8qIFVJUGFzdGVi
b2FyZFRlc3RzLm1tICovOyB9OwpAQCAtODk0LDYgKzg5Niw3IEBACiAJCQkJRjRBQjU3OEExRjY1
MTY1NDAwREIwREExIC8qIGN1c3RvbS1kcmFnZ2FibGUtZGl2Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJMjkwRjQyNzUxNzJBMjIxQzAwOTM5RkYwIC8qIGN1c3RvbS1wcm90b2NvbC1z
eW5jLXhoci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0ODZCMUQwMUY2Nzk1MjMw
MEYzNEJERCAvKiBEYXRhVHJhbnNmZXItc2V0RHJhZ0ltYWdlLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCisJCQkJRjQ1N0E5RDYyMDJENjhBRjAwRjdFOUQ1IC8qIERhdGFUcmFuc2Zlci5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0NTEyRTEzMUY2MEM0NDYwMEJCMzY5RSAvKiBE
YXRhVHJhbnNmZXJJdGVtLWdldEFzRW50cnkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQlDMDdFNkNCMjEzRkQ3MzkzMDAzOEIyMkIgLyogZGV2aWNlUGl4ZWxSYXRpby5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCTA3OTlDMzRCMUVCQTMzMDEwMDNCNzUzMiAvKiBkaXNhYmxl
R2V0VXNlck1lZGlhLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xODYyLDYgKzE4NjUs
OCBAQAogCQlGNDREMDY0OTFGMzk2MkUzMDAxQTBFMjkgLyogRWRpdGluZ1Rlc3RIYXJuZXNzLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRWRpdGluZ1Rlc3RIYXJu
ZXNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDUxMkUxMjFGNjBDNDM0MDBC
QjM2OUUgLyogRGF0YVRyYW5zZmVySXRlbS1nZXRBc0VudHJ5Lmh0bWwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
Lmh0bWw7IHBhdGggPSAiRGF0YVRyYW5zZmVySXRlbS1nZXRBc0VudHJ5Lmh0bWwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNDUzOEVGMDFFODQ2QjQxMDBCNUM5NTMgLyogbGFyZ2Ut
cmVkLXNxdWFyZS5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSAibGFyZ2UtcmVkLXNxdWFyZS5wbmciOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGNDU3QTlCMzIwMkQ1MzUzMDBGN0U5RDUgLyogRGF0YVRy
YW5zZmVyLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBEYXRhVHJhbnNmZXIuaHRt
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ1N0E5QjYyMDJENUNEQzAwRjdFOUQ1
IC8qIFBhc3RlTWl4ZWRDb250ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFzdGVNaXhl
ZENvbnRlbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NUI2M0ZBMUYxOTdG
MzMwMDlEMzhCOSAvKiBpbWFnZS1tYXAuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJpbWFnZS1tYXAuaHRtbCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NUI2M0ZDMUYxOUQ0MTAwMDlEMzhCOSAv
KiBBY3Rpb25TaGVldFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQWN0aW9uU2hlZXRU
ZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ2ODQ5QkQxRUVGNThFNDAw
QjkzN0ZFIC8qIFVJUGFzdGVib2FyZFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVUlQ
YXN0ZWJvYXJkVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTMwLDYg
KzIxMzUsNyBAQAogCQkJCUNFQkNBMTJFMUUzQTY2MDEwMEM3MzI5MyAvKiBPdmVycmlkZUNvbnRl
bnRTZWN1cml0eVBvbGljeS5tbSAqLywKIAkJCQk5QkNCN0MyNjIwMTMwNjAwMDAzRTdDMEMgLyog
UGFzdGVIVE1MLm1tICovLAogCQkJCTlCRENDRDg1MUY3RDBCMDcwMDAwOUExOCAvKiBQYXN0ZUlt
YWdlLm1tICovLAorCQkJCUY0NTdBOUI2MjAyRDVDREMwMEY3RTlENSAvKiBQYXN0ZU1peGVkQ29u
dGVudC5tbSAqLywKIAkJCQk5QkREOTU1NjFGODM2ODM2MDBEMjBDNjAgLyogUGFzdGVSVEZELm1t
ICovLAogCQkJCTlCMjM0NjQxMUY5NDNBMjQwMERCMUQyMyAvKiBQYXN0ZVdlYkFyY2hpdmUubW0g
Ki8sCiAJCQkJM0ZDQzRGRTQxRUM0RTg1MjAwNzZFMzdDIC8qIFBpY3R1cmVJblBpY3R1cmVEZWxl
Z2F0ZS5tbSAqLywKQEAgLTIzNjQsNiArMjM3MCw3IEBACiAJCQkJOUI2MjYzMEIxRjhDMjUxMDAw
N0VFMjlCIC8qIGNvcHktdXJsLmh0bWwgKi8sCiAJCQkJRjRBQjU3ODkxRjY1MTY0QjAwREIwREEx
IC8qIGN1c3RvbS1kcmFnZ2FibGUtZGl2Lmh0bWwgKi8sCiAJCQkJRjQ4NkIxQ0YxRjY3OTRGRjAw
RjM0QkREIC8qIERhdGFUcmFuc2Zlci1zZXREcmFnSW1hZ2UuaHRtbCAqLywKKwkJCQlGNDU3QTlC
MzIwMkQ1MzUzMDBGN0U5RDUgLyogRGF0YVRyYW5zZmVyLmh0bWwgKi8sCiAJCQkJRjQ1MTJFMTIx
RjYwQzQzNDAwQkIzNjlFIC8qIERhdGFUcmFuc2Zlckl0ZW0tZ2V0QXNFbnRyeS5odG1sICovLAog
CQkJCTA3OTlDMzRBMUVCQTMyRjQwMDNCNzUzMiAvKiBkaXNhYmxlR2V0VXNlck1lZGlhLmh0bWwg
Ki8sCiAJCQkJNjNBNjFCOEExRkFEMjA0RDAwRjA2ODg1IC8qIGRpc3BsYXktbW9kZS5odG1sICov
LApAQCAtMzU1NSw2ICszNTYyLDcgQEAKIAkJCQk3Q0NFN0YwQTFBNDExQUU2MDA0NDdDNEMgLyog
UGFzdGVib2FyZE5vdGlmaWNhdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5QkNCN0MyODIw
MTMwNjAwMDAzRTdDMEMgLyogUGFzdGVIVE1MLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOUJEQ0NE
ODcxRjdEMEIwNzAwMDA5QTE4IC8qIFBhc3RlSW1hZ2UubW0gaW4gU291cmNlcyAqLywKKwkJCQlG
NDU3QTlCODIwMkQ1Q0RDMDBGN0U5RDUgLyogUGFzdGVNaXhlZENvbnRlbnQubW0gaW4gU291cmNl
cyAqLywKIAkJCQk5QkREOTU1ODFGODM2ODM2MDBEMjBDNjAgLyogUGFzdGVSVEZELm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJOUIyMzQ2NDIxRjk0M0UyNzAwREIxRDIzIC8qIFBhc3RlV2ViQXJjaGl2
ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMDUzMUQwQTY0M0EwMEZFQkNGMyAvKiBQZW5k
aW5nQVBJUmVxdWVzdFVSTC5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGF0YVRyYW5zZmVyLmh0bWwgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RhdGFUcmFuc2Zlci5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmM5MWQ2MDYwMDE3YzMzOTI5NDMxMTM2Mjg5YmM2ZmQ0NDY3MGM5N2IKLS0tIC9kZXYvbnVs
bAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RhdGFUcmFuc2Zl
ci5odG1sCkBAIC0wLDAgKzEsNzcgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8bWV0YSBu
YW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxl
PTEiPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgICBib2R5LCBodG1sIHsKKyAgICAgICAg
ICAgIHdpZHRoOiAxMDAlOworICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOworICAgICAgICAgICAg
Zm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKKyAgICAgICAgfQorCisgICAgICAgIC5oZWFkaW5nIHsK
KyAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOworICAgICAgICAgICAgd2lkdGg6IDEwMCU7Cisg
ICAgICAgICAgICBib3JkZXItdG9wOiAycHggZ3JheSBkYXNoZWQ7CisgICAgICAgICAgICBtYXJn
aW4tdG9wOiAyMHB4OworICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKKyAgICAg
ICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZnVuY3Rpb24gc2V0dXAo
KQorICAgICAgICB7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIo
InBhc3RlIiwgZXZlbnQgPT4geworICAgICAgICAgICAgICAgIGR1bXBBc091dHB1dChldmVudC5j
bGlwYm9hcmREYXRhKTsKKyAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOwor
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVu
ZXIoImRyb3AiLCBldmVudCA9PiB7CisgICAgICAgICAgICAgICAgZHVtcEFzT3V0cHV0KGV2ZW50
LmRhdGFUcmFuc2Zlcik7CisgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3Rl
bmVyKCJiZWZvcmVpbnB1dCIsIGV2ZW50ID0+IGV2ZW50LnByZXZlbnREZWZhdWx0KCkpOworICAg
ICAgICAgICAgZG9jdW1lbnQuYm9keS5mb2N1cygpOworICAgICAgICB9CisKKyAgICAgICAgZnVu
Y3Rpb24gZHVtcEFzT3V0cHV0KGRhdGFUcmFuc2ZlcikKKyAgICAgICAgeworICAgICAgICAgICAg
ZG9jdW1lbnQuYm9keS5jb250ZW50RWRpdGFibGUgPSBmYWxzZTsKKyAgICAgICAgICAgIHR5cGVz
LnRleHRDb250ZW50ID0gZGF0YVRyYW5zZmVyLnR5cGVzLmpvaW4oIiwgIik7CisgICAgICAgICAg
ICBpdGVtcy50ZXh0Q29udGVudCA9IEFycmF5LmZyb20oZGF0YVRyYW5zZmVyLml0ZW1zKS5tYXAo
aXRlbSA9PiBgKCR7aXRlbS5raW5kLnRvVXBwZXJDYXNlKCl9LCAke2l0ZW0udHlwZX0pYCkuam9p
bigiLCAiKTsKKyAgICAgICAgICAgIGZpbGVzLnRleHRDb250ZW50ID0gQXJyYXkuZnJvbShkYXRh
VHJhbnNmZXIuZmlsZXMpLm1hcChmaWxlID0+IGAoJyR7ZmlsZS5uYW1lfScsICR7ZmlsZS50eXBl
fSlgKS5qb2luKCIsICIpOworICAgICAgICAgICAgdXJsRGF0YS50ZXh0Q29udGVudCA9IGRhdGFU
cmFuc2Zlci5nZXREYXRhKCJ0ZXh0L3VyaS1saXN0Iik7CisgICAgICAgICAgICB0ZXh0RGF0YS50
ZXh0Q29udGVudCA9IGRhdGFUcmFuc2Zlci5nZXREYXRhKCJ0ZXh0L3BsYWluIik7CisgICAgICAg
ICAgICBsZXQgbWFya3VwID0gZGF0YVRyYW5zZmVyLmdldERhdGEoInRleHQvaHRtbCIpOworICAg
ICAgICAgICAgaHRtbERhdGEuaW5zZXJ0QWRqYWNlbnRIVE1MKCJiZWZvcmVlbmQiLCBtYXJrdXAp
OworICAgICAgICAgICAgcmF3SFRNTERhdGEudGV4dENvbnRlbnQgPSBtYXJrdXA7CisgICAgICAg
IH0KKworICAgICAgICBmdW5jdGlvbiByZXNldCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFy
cmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgib3V0cHV0IikpLm1hcChl
bGVtZW50ID0+IHsKKyAgICAgICAgICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9ICIiOworICAg
ICAgICAgICAgfSk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNvbnRlbnRFZGl0YWJsZSA9
IHRydWU7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IGNvbnRlbnRl
ZGl0YWJsZSBvbmxvYWQ9c2V0dXAoKT4KKyAgICA8aDMgY2xhc3M9ImhlYWRpbmciPlR5cGVzPC9o
Mz4KKyAgICA8ZGl2IGNsYXNzPSJvdXRwdXQiIGlkPSJ0eXBlcyI+PC9kaXY+CisKKyAgICA8aDMg
Y2xhc3M9ImhlYWRpbmciPkl0ZW1zPC9oMz4KKyAgICA8ZGl2IGNsYXNzPSJvdXRwdXQiIGlkPSJp
dGVtcyI+PC9kaXY+CisKKyAgICA8aDMgY2xhc3M9ImhlYWRpbmciPkZpbGVzPC9oMz4KKyAgICA8
ZGl2IGNsYXNzPSJvdXRwdXQiIGlkPSJmaWxlcyI+PC9kaXY+CisKKyAgICA8aDMgY2xhc3M9Imhl
YWRpbmciPnRleHQvcGxhaW48L2gzPgorICAgIDxkaXYgY2xhc3M9Im91dHB1dCIgaWQ9InRleHRE
YXRhIj48L2Rpdj4KKworICAgIDxoMyBjbGFzcz0iaGVhZGluZyI+dGV4dC91cmktbGlzdDwvaDM+
CisgICAgPGRpdiBjbGFzcz0ib3V0cHV0IiBpZD0idXJsRGF0YSI+PC9kaXY+CisKKyAgICA8aDMg
Y2xhc3M9ImhlYWRpbmciPnRleHQvaHRtbDwvaDM+CisgICAgPGRpdiBjbGFzcz0ib3V0cHV0IiBp
ZD0iaHRtbERhdGEiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9Im91dHB1dCIgaWQ9InJhd0hUTUxE
YXRhIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVJbWFnZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVJbWFnZS5tbQppbmRleCBiMjI4OTZiNGE3ODlmMmM0
ODA1MGNmMzBiYjg2ZDA1NGE2ZWUyNWI3Li44OWJjMDVhZTY3MGRjYmM1ZDQ1NDgzZmJlN2FmYjk1
ZjgyMjFmNDdjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1Bhc3RlSW1hZ2UubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9QYXN0ZUltYWdlLm1tCkBAIC0zNiwxMCArMzYsNiBAQAogI2luY2x1ZGUgPE1vYmlsZUNv
cmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KICNlbmRpZgogCi1AaW50ZXJmYWNlIFdL
V2ViVmlldyAoKQotLSAodm9pZClwYXN0ZTooaWQpc2VuZGVyOwotQGVuZAotCiAjaWYgUExBVEZP
Uk0oTUFDKQogdm9pZCB3cml0ZUltYWdlRGF0YVRvUGFzdGVib2FyZChOU1N0cmluZyAqdHlwZSwg
TlNEYXRhICpkYXRhKQogewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9QYXN0ZU1peGVkQ29udGVudC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUGFzdGVNaXhlZENvbnRlbnQubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTJmNzM5YTlm
OGIwMzBlNzhiYjFmYjk3OTlkODIxYjAxYTRiNzUwYwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVNaXhlZENvbnRlbnQubW0KQEAg
LTAsMCArMSwxOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBQ
TEFURk9STShNQUMpICYmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0
aWVzLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tQcmVm
ZXJlbmNlc1JlZi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXNSZWZQcml2YXRlLmg+
CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworc3RhdGljIE5TU3RyaW5nICppbWFnZVBhdGgoKQoreworICAgIHJldHVybiBbW05TQnVu
ZGxlIG1haW5CdW5kbGVdIHBhdGhGb3JSZXNvdXJjZTpAImljb24iIG9mVHlwZTpAInBuZyIgaW5E
aXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworfQorCit2b2lkIHdyaXRlVHlw
ZXNBbmREYXRhVG9QYXN0ZWJvYXJkKGlkIHR5cGUsIC4uLikKK3sKKyAgICBOU011dGFibGVBcnJh
eTxOU1N0cmluZyAqPiAqdHlwZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXldOworICAgIE5TTXV0
YWJsZUFycmF5ICpkYXRhID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKKyAgICB2YV9saXN0IGFy
Z3VtZW50TGlzdDsKKyAgICBpZiAodHlwZSkgeworICAgICAgICBBU1NFUlQoW3R5cGUgaXNLaW5k
T2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgICAgIFt0eXBlcyBhZGRPYmplY3Q6dHlw
ZV07CisgICAgICAgIHZhX3N0YXJ0KGFyZ3VtZW50TGlzdCwgdHlwZSk7CisgICAgICAgIE5TVUlu
dGVnZXIgaW5kZXggPSAxOworICAgICAgICBpZCBvYmplY3QgPSB2YV9hcmcoYXJndW1lbnRMaXN0
LCBpZCk7CisgICAgICAgIHdoaWxlIChvYmplY3QpIHsKKyAgICAgICAgICAgIGlmIChpbmRleCAl
IDIpCisgICAgICAgICAgICAgICAgW2RhdGEgYWRkT2JqZWN0Om9iamVjdF07CisgICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoW29iamVjdCBpc0tpbmRPZkNsYXNzOltO
U1N0cmluZyBjbGFzc11dKTsKKyAgICAgICAgICAgICAgICBbdHlwZXMgYWRkT2JqZWN0Om9iamVj
dF07CisgICAgICAgICAgICB9CisgICAgICAgICAgICArK2luZGV4OworICAgICAgICAgICAgb2Jq
ZWN0ID0gdmFfYXJnKGFyZ3VtZW50TGlzdCwgaWQpOworICAgICAgICB9CisgICAgICAgIHZhX2Vu
ZChhcmd1bWVudExpc3QpOworICAgIH0KKworICAgIGlmICh0eXBlcy5jb3VudCAhPSBkYXRhLmNv
dW50KSB7CisgICAgICAgIE5TTG9nKEAiRXhwZWN0ZWQgbnVtYmVyIG9mIHR5cGVzOiAldHUgdG8g
bWF0Y2ggbnVtYmVyIG9mIGRhdGEgaXRlbXM6ICV0dSIsIHR5cGVzLmNvdW50LCBkYXRhLmNvdW50
KTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gZGVjbGFyZVR5cGVzOnR5
cGVzIG93bmVyOm5pbF07CisgICAgW3R5cGVzIGVudW1lcmF0ZU9iamVjdHNVc2luZ0Jsb2NrOlsm
XSAoTlNTdHJpbmcgKnR5cGUsIE5TVUludGVnZXIgaW5kZXgsIEJPT0wgKikgeworICAgICAgICBp
ZCBkYXRhVG9Xcml0ZSA9IGRhdGFbaW5kZXhdOworICAgICAgICBpZiAoW2RhdGFUb1dyaXRlIGlz
S2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dKQorICAgICAgICAgICAgW1tOU1Bhc3RlYm9hcmQg
Z2VuZXJhbFBhc3RlYm9hcmRdIHNldERhdGE6ZGF0YVRvV3JpdGUgZm9yVHlwZTp0eXBlXTsKKyAg
ICAgICAgZWxzZSBpZiAoW2RhdGFUb1dyaXRlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNz
XV0pCisgICAgICAgICAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gc2V0U3Ry
aW5nOmRhdGFUb1dyaXRlIGZvclR5cGU6dHlwZV07CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBzZXRQcm9wZXJ0eUxpc3Q6ZGF0YVRv
V3JpdGUgZm9yVHlwZTp0eXBlXTsKKyAgICB9XTsKK30KKworc3RhdGljIFJldGFpblB0cjxUZXN0
V0tXZWJWaWV3PiBzZXRVcFdlYlZpZXcoKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAw
LCA0MDApXSk7CisgICAgV0tQcmVmZXJlbmNlc1NldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxl
ZCgoV0tQcmVmZXJlbmNlc1JlZilbd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcmVmZXJlbmNlcywg
dHJ1ZSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiRGF0
YVRyYW5zZmVyIl07CisgICAgcmV0dXJuIHdlYlZpZXc7Cit9CisKK3N0YXRpYyBOU1N0cmluZyAq
bWFya3VwU3RyaW5nKCkKK3sKKyAgICAvLyBUaGUgc2NyaXB0IHRhZyBhbmQgbW91c2VvdmVyIGxp
c3RlbmVyIGF0dHJpYnV0ZSBpbiB0aGUgbWFya3VwIHN0cmluZyBiZWxvdyBzaG91bGQgYmUgb21p
dHRlZCBkdXJpbmcKKyAgICAvLyBzYW5pdGl6YXRpb24gd2hpbGUgcGFzdGluZy4KKyAgICByZXR1
cm4gQCI8c2NyaXB0PmZvbygpPC9zY3JpcHQ+PHN0cm9uZyBvbm1vdXNlb3Zlcj0namF2YXNjcmlw
dDp2b2lkKDApJz5IRUxMTyBXT1JMRDwvc3Ryb25nPiI7Cit9CisKK25hbWVzcGFjZSBUZXN0V2Vi
S2l0QVBJIHsKKworVEVTVChQYXN0ZU1peGVkQ29udGVudCwgSW1hZ2VGaWxlQW5kUGxhaW5UZXh0
KQoreworICAgIGF1dG8gd2ViVmlldyA9IHNldFVwV2ViVmlldygpOworICAgIHdyaXRlVHlwZXNB
bmREYXRhVG9QYXN0ZWJvYXJkKE5TRmlsZW5hbWVzUGJvYXJkVHlwZSwgQFsgaW1hZ2VQYXRoKCkg
XSwgTlNQYXN0ZWJvYXJkVHlwZVN0cmluZywgaW1hZ2VQYXRoKCksIG5pbCk7CisgICAgW3dlYlZp
ZXcgcGFzdGU6bmlsXTsKKworICAgIEVYUEVDVF9XS19TVFJFUSgiRmlsZXMiLCBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidHlwZXMudGV4dENvbnRlbnQiXSk7CisgICAg
RVhQRUNUX1dLX1NUUkVRKCIoRklMRSwgaW1hZ2UvcG5nKSIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJpdGVtcy50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoIignaWNvbi5wbmcnLCBpbWFnZS9wbmcpIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAImZpbGVzLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJF
USgiIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInVybERhdGEudGV4
dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAidGV4dERhdGEudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNU
X1dLX1NUUkVRKCIiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaHRt
bERhdGEudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicmF3SFRNTERhdGEudGV4dENvbnRlbnQiXSk7
Cit9CisKK1RFU1QoUGFzdGVNaXhlZENvbnRlbnQsIEltYWdlRmlsZUFuZFdlYkFyY2hpdmUpCit7
CisgICAgYXV0byB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3KCk7CisgICAgTlNVUkwgKm1haW5SZXNv
dXJjZVVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6QCIvc29tZS9ub25leGlzdGVudC9maWxl
Lmh0bWwiXTsKKyAgICBhdXRvIG1haW5SZXNvdXJjZSA9IGFkb3B0TlMoW1tXZWJSZXNvdXJjZSBh
bGxvY10gaW5pdFdpdGhEYXRhOlttYXJrdXBTdHJpbmcoKSBkYXRhVXNpbmdFbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ10gVVJMOm1haW5SZXNvdXJjZVVSTCBNSU1FVHlwZTpAInRleHQvaHRt
bCIgdGV4dEVuY29kaW5nTmFtZTpAInV0Zi04IiBmcmFtZU5hbWU6bmlsXSk7CisgICAgYXV0byBh
cmNoaXZlID0gYWRvcHROUyhbW1dlYkFyY2hpdmUgYWxsb2NdIGluaXRXaXRoTWFpblJlc291cmNl
Om1haW5SZXNvdXJjZS5nZXQoKSBzdWJyZXNvdXJjZXM6bmlsIHN1YmZyYW1lQXJjaGl2ZXM6bmls
XSk7CisgICAgd3JpdGVUeXBlc0FuZERhdGFUb1Bhc3RlYm9hcmQoTlNGaWxlbmFtZXNQYm9hcmRU
eXBlLCBAWyBpbWFnZVBhdGgoKSBdLCBXZWJBcmNoaXZlUGJvYXJkVHlwZSwgW2FyY2hpdmUgZGF0
YV0sIG5pbCk7CisgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKKworICAgIEVYUEVDVF9XS19TVFJF
USgidGV4dC9odG1sLCBGaWxlcyIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJ0eXBlcy50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIihTVFJJTkcs
IHRleHQvaHRtbCksIChGSUxFLCBpbWFnZS9wbmcpIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAIml0ZW1zLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJF
USgiKCdpY29uLnBuZycsIGltYWdlL3BuZykiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiZmlsZXMudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIi
LCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidXJsRGF0YS50ZXh0Q29u
dGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJ0ZXh0RGF0YS50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoIkhFTExPIFdPUkxEIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAImh0bWxEYXRhLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9GQUxTRShbW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInJhd0hUTUxEYXRhLnRleHRDb250ZW50Il0g
Y29udGFpbnNTdHJpbmc6QCJzY3JpcHQiXSk7Cit9CisKK1RFU1QoUGFzdGVNaXhlZENvbnRlbnQs
IEltYWdlRmlsZUFuZEhUTUwpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3KCk7
CisgICAgd3JpdGVUeXBlc0FuZERhdGFUb1Bhc3RlYm9hcmQoTlNGaWxlbmFtZXNQYm9hcmRUeXBl
LCBAWyBpbWFnZVBhdGgoKSBdLCBOU1Bhc3RlYm9hcmRUeXBlSFRNTCwgbWFya3VwU3RyaW5nKCks
IG5pbCk7CisgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKKworICAgIEVYUEVDVF9XS19TVFJFUSgi
dGV4dC9odG1sLCBGaWxlcyIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJ0eXBlcy50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIihTVFJJTkcsIHRl
eHQvaHRtbCksIChGSUxFLCBpbWFnZS9wbmcpIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAIml0ZW1zLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgi
KCdpY29uLnBuZycsIGltYWdlL3BuZykiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiZmlsZXMudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidXJsRGF0YS50ZXh0Q29udGVu
dCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJ0ZXh0RGF0YS50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoIkhFTExPIFdPUkxEIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
Imh0bWxEYXRhLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9GQUxTRShbW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInJhd0hUTUxEYXRhLnRleHRDb250ZW50Il0gY29u
dGFpbnNTdHJpbmc6QCJzY3JpcHQiXSk7Cit9CisKK1RFU1QoUGFzdGVNaXhlZENvbnRlbnQsIElt
YWdlRmlsZUFuZFJURikKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdlYlZpZXcoKTsKKyAg
ICBhdXRvIHRleHQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10g
aW5pdF0pOworICAgIFt0ZXh0IGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6W1tOU0F0dHJpYnV0ZWRT
dHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAibGluayB0byAiXV07CisgICAgW3RleHQgYXBw
ZW5kQXR0cmlidXRlZFN0cmluZzpbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhT
dHJpbmc6QCJhcHBsZSIgYXR0cmlidXRlczpAeyBOU0xpbmtBdHRyaWJ1dGVOYW1lOiBbTlNVUkwg
VVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd3d3LmFwcGxlLmNvbS8iXSB9XV07CisgICAgTlNEYXRh
ICpydGZEYXRhID0gW3RleHQgUlRGRnJvbVJhbmdlOk5TTWFrZVJhbmdlKDAsIFt0ZXh0IGxlbmd0
aF0pIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XTsKKyAgICB3cml0ZVR5cGVzQW5kRGF0YVRvUGFz
dGVib2FyZChOU0ZpbGVuYW1lc1Bib2FyZFR5cGUsIEBbIGltYWdlUGF0aCgpIF0sIE5TUGFzdGVi
b2FyZFR5cGVSVEYsIHJ0ZkRhdGEsIG5pbCk7CisgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKKwor
ICAgIEVYUEVDVF9XS19TVFJFUSgidGV4dC9odG1sLCBGaWxlcyIsIFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0eXBlcy50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoIihTVFJJTkcsIHRleHQvaHRtbCksIChGSUxFLCBpbWFnZS9wbmcpIiwgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIml0ZW1zLnRleHRDb250ZW50Il0pOwor
ICAgIEVYUEVDVF9XS19TVFJFUSgiKCdpY29uLnBuZycsIGltYWdlL3BuZykiLCBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZmlsZXMudGV4dENvbnRlbnQiXSk7CisgICAg
RVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAidXJsRGF0YS50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0ZXh0RGF0YS50ZXh0Q29udGVudCJd
KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImxpbmsgdG8gYXBwbGUiLCBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaHRtbERhdGEudGV4dENvbnRlbnQiXSk7CisgICAgRVhQ
RUNUX1dLX1NUUkVRKCJodHRwczovL3d3dy5hcHBsZS5jb20vIiwgW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImh0bWxEYXRhLnF1ZXJ5U2VsZWN0b3IoJ2EnKS5ocmVmIl0p
OworfQorCitURVNUKFBhc3RlTWl4ZWRDb250ZW50LCBJbWFnZUZpbGVBbmRVUkwpCit7CisgICAg
YXV0byB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3KCk7CisgICAgd3JpdGVUeXBlc0FuZERhdGFUb1Bh
c3RlYm9hcmQoTlNVUkxQYm9hcmRUeXBlLCBAImh0dHBzOi8vd3d3LndlYmtpdC5vcmcvIiwgTlNG
aWxlbmFtZXNQYm9hcmRUeXBlLCBAWyBpbWFnZVBhdGgoKSBdLCBuaWwpOworICAgIFt3ZWJWaWV3
IHBhc3RlOm5pbF07CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInRleHQvdXJpLWxpc3QsIEZpbGVz
IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInR5cGVzLnRleHRDb250
ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiKFNUUklORywgdGV4dC91cmktbGlzdCksIChG
SUxFLCBpbWFnZS9wbmcpIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
Iml0ZW1zLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiKCdpY29uLnBuZycs
IGltYWdlL3BuZykiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZmls
ZXMudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJodHRwczovL3d3dy53ZWJr
aXQub3JnLyIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ1cmxEYXRh
LnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInRleHREYXRhLnRleHRDb250ZW50Il0pOworICAgIEVY
UEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
Imh0bWxEYXRhLnRleHRDb250ZW50Il0pOworfQorCitURVNUKFBhc3RlTWl4ZWRDb250ZW50LCBJ
bWFnZUZpbGVXaXRoSFRNTEFuZFVSTCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdlYlZp
ZXcoKTsKKyAgICB3cml0ZVR5cGVzQW5kRGF0YVRvUGFzdGVib2FyZChOU1VSTFBib2FyZFR5cGUs
IEAiaHR0cHM6Ly93d3cud2Via2l0Lm9yZy8iLCBOU1Bhc3RlYm9hcmRUeXBlSFRNTCwgbWFya3Vw
U3RyaW5nKCksIE5TRmlsZW5hbWVzUGJvYXJkVHlwZSwgQFsgaW1hZ2VQYXRoKCkgXSwgbmlsKTsK
KyAgICBbd2ViVmlldyBwYXN0ZTpuaWxdOworCisgICAgRVhQRUNUX1dLX1NUUkVRKCJ0ZXh0L3Vy
aS1saXN0LCB0ZXh0L2h0bWwsIEZpbGVzIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAInR5cGVzLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiKFNU
UklORywgdGV4dC91cmktbGlzdCksIChTVFJJTkcsIHRleHQvaHRtbCksIChGSUxFLCBpbWFnZS9w
bmcpIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIml0ZW1zLnRleHRD
b250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiKCdpY29uLnBuZycsIGltYWdlL3BuZyki
LCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZmlsZXMudGV4dENvbnRl
bnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJodHRwczovL3d3dy53ZWJraXQub3JnLyIsIFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ1cmxEYXRhLnRleHRDb250ZW50
Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAInRleHREYXRhLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJF
USgiSEVMTE8gV09STEQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
aHRtbERhdGEudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX0ZBTFNFKFtbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicmF3SFRNTERhdGEudGV4dENvbnRlbnQiXSBjb250
YWluc1N0cmluZzpAInNjcmlwdCJdKTsKK30KKworfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SQorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSAmJiBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQpp
bmRleCA0MDg1ZmFiOWNhNWMyZjcwOWEwZWY4ZWRmYWU2NjYwNDdkOTQ3Nzc1Li42YjY3MDRlYjIz
ZWNiYTJhNDFkMGVmOWM2ZmEwOWZlNjViY2ExNDZlIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbQpAQCAtMTQ5OSw2ICsx
NDk5LDM1IEBAIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIERyYWdMaWZ0UHJldmlld0RhdGFU
cmFuc2ZlclNldERyYWdJbWFnZSkKIAogI2lmIF9fSVBIT05FX09TX1ZFUlNJT05fTUlOX1JFUVVJ
UkVEID49IDExMDMwMAogCitzdGF0aWMgTlNEYXRhICp0ZXN0SWNvbkltYWdlRGF0YSgpCit7Cisg
ICAgcmV0dXJuIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmlsZTpbW05TQnVuZGxlIG1haW5C
dW5kbGVdIHBhdGhGb3JSZXNvdXJjZTpAImljb24iIG9mVHlwZTpAInBuZyIgaW5EaXJlY3Rvcnk6
QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKK30KKworVEVTVChEYXRhSW50ZXJhY3Rpb25U
ZXN0cywgRGF0YVRyYW5zZmVyR2V0RGF0YVdoZW5Ecm9wcGluZ0ltYWdlQW5kTWFya3VwKQorewor
ICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0
aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7CisgICAgV0tQcmVmZXJlbmNlc1Nl
dEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgoV0tQcmVmZXJlbmNlc1JlZilbd2ViVmlldyBj
b25maWd1cmF0aW9uXS5wcmVmZXJlbmNlcywgdHJ1ZSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiRGF0YVRyYW5zZmVyIl07CisKKyAgICBhdXRvIHNpbXVs
YXRvciA9IGFkb3B0TlMoW1tEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IgYWxsb2NdIGluaXRXaXRo
V2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CisgICAgYXV0byBpdGVtUHJvdmlkZXIgPSBhZG9wdE5T
KFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBbaXRlbVByb3ZpZGVyIHJlZ2lz
dGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KE5TU3RyaW5nICopa1VUVHlw
ZVBORyB3aXRoRGF0YTp0ZXN0SWNvbkltYWdlRGF0YSgpXTsKKyAgICBOU1N0cmluZyAqbWFya3Vw
U3RyaW5nID0gQCI8c2NyaXB0PmJhcigpPC9zY3JpcHQ+PHN0cm9uZyBvbm1vdXNlZG93bj1qYXZh
c2NyaXB0OnZvaWQoMCk+SEVMTE8gV09STEQ8L3N0cm9uZz4iOworICAgIFtpdGVtUHJvdmlkZXIg
cmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRpZmllcjooTlNTdHJpbmcgKilr
VVRUeXBlSFRNTCB3aXRoRGF0YTpbbWFya3VwU3RyaW5nIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nXV07CisgICAgW2l0ZW1Qcm92aWRlciBzZXRTdWdnZXN0ZWROYW1lOkAi
aWNvbiJdOworICAgIFtzaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVtUHJvdmlkZXJzOkBbIGl0ZW1Q
cm92aWRlci5nZXQoKSBdXTsKKyAgICBbc2ltdWxhdG9yIHJ1bkZyb206Q0dQb2ludFplcm8gdG86
Q0dQb2ludE1ha2UoNTAsIDEwMCldOworCisgICAgRVhQRUNUX1dLX1NUUkVRKCJ0ZXh0L2h0bWws
IEZpbGVzIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInR5cGVzLnRl
eHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiKFNUUklORywgdGV4dC9odG1sKSwg
KEZJTEUsIGltYWdlL3BuZykiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiaXRlbXMudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIoJ2ljb24ucG5n
JywgaW1hZ2UvcG5nKSIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJm
aWxlcy50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIFt3ZWJWaWV3IHN0
cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ1cmxEYXRhLnRleHRDb250ZW50Il0pOworICAg
IEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAInRleHREYXRhLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiSEVMTE8g
V09STEQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaHRtbERhdGEu
dGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX0ZBTFNFKFtbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAicmF3SFRNTERhdGEudGV4dENvbnRlbnQiXSBjb250YWluc1N0cmlu
ZzpAInNjcmlwdCJdKTsKK30KKwogVEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgRGF0YVRyYW5z
ZmVyR2V0RGF0YVdoZW5Ecm9wcGluZ1BsYWluVGV4dCkKIHsKICAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIDMyMCwgNTAwKV0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0V0tXZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
aAppbmRleCBkYWEzYjI2ZDY2YjhlODkwMTcwNGNiNTlmNWYxNzQxMDE3ZDAxY2RlLi45MDhlMDUy
YjNhMWMyOWJkN2U1YWI3OTJlMGQ4ZjhjNDU2MzBkZGFhIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcuaApAQCAtMzQsNiArMzQsMTIgQEAKIEBjbGFzcyBfV0tBY3Rp
dmF0ZWRFbGVtZW50SW5mbzsKICNlbmRpZgogCitAaW50ZXJmYWNlIFdLV2ViVmlldyAoQWRkaXRp
b25hbERlY2xhcmF0aW9ucykKKyNpZiBQTEFURk9STShNQUMpCistICh2b2lkKXBhc3RlOihpZClz
ZW5kZXI7CisjZW5kaWYKK0BlbmQKKwogQGludGVyZmFjZSBUZXN0TWVzc2FnZUhhbmRsZXIgOiBO
U09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KIC0gKHZvaWQpYWRkTWVzc2FnZTooTlNT
dHJpbmcgKiltZXNzYWdlIHdpdGhIYW5kbGVyOihkaXNwYXRjaF9ibG9ja190KWhhbmRsZXI7CiBA
ZW5kCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggYjVjZDNiODdmYWJhMzA4YmI4MDUxZTVmZjU2ZDQ2MDJjZTk2ZDJhZi4uZmYw
ODlhMjRkMDIyMGIxNGY1MTBkMjU2NDgwMDIxMzAyMjUyODY3NiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIx
IEBACisyMDE4LTAyLTA4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIFBhc3RpbmcgZnJvbSBFeGNlbCBubyBsb25nZXIgcHJvdmlkZXMgdGV4dC9odG1s
IGRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
MjYzNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzcwODcwNjA+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmViYXNlbGluZSBzb21lIGV4aXN0aW5n
IGxheW91dCB0ZXN0cy4gV2Ugbm93IGV4cG9zZSAidGV4dC9odG1sIiBhbG9uZ3NpZGUgIkZpbGVz
IiBvbiBEYXRhVHJhbnNmZXIudHlwZXMoKSBpbgorICAgICAgICBzb21lIGNpcmN1bXN0YW5jZXMu
IFRoaXMgYWxzbyBwcm92aWRlcyBzb21lIHRlc3QgY292ZXJhZ2UgZm9yIGVuc3VyaW5nIHRoYXQg
dGhlIHBhc3RlIGNvZGVwYXRoIGlPUyBhbGxvd3MgdGhlCisgICAgICAgIHBhZ2UgdG8gcmVxdWVz
dCBIVE1MLCBldmVuIGlmIHRoZXJlIGFyZSBmaWxlcyBvbiB0aGUgcGFzdGVib2FyZC4gU2VlIHRo
ZSBXZWJDb3JlIENoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWwuCisKKyAgICAgICAgKiBlZGl0aW5n
L3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtbXVsdGlwbGUtdGlt
ZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5z
ZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1jb3B5LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBl
ZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tZHJh
Zy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdl
LWRvZXMtbm90LXJldmVhbC1maWxlLXVybC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLWRvZXMtbm90LXJldmVhbC1maWxlLXVybC5odG1sOgor
CiAyMDE4LTAyLTA4ICBNYXR0IExld2lzICA8amxld2lzM0BhcHBsZS5jb20+CiAKICAgICAgICAg
TWFya2VkIG1lZGlhL1czQy92aWRlby9ldmVudHMvZXZlbnRfcHJvZ3Jlc3NfbWFudWFsLmh0bWwg
YXMgZmxha3kgb24gbWFjT1MgV0syLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW11bHRpcGxlLXRpbWVz
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5z
ZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1tdWx0aXBsZS10aW1lcy1leHBlY3RlZC50eHQKaW5kZXgg
MWY4MGM1OWRjOWNiNjJkNzJlYzlhMDQ1MDM2ZGY1NTY0OWFkNDc4Ni4uZjlkODgxNjZkYjlhZmUx
MjRiZDZiNDljZWJiMTQ4YjI2OThlNzg1MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW11bHRpcGxlLXRp
bWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0
YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtbXVsdGlwbGUtdGltZXMtZXhwZWN0ZWQudHh0
CkBAIC05LDggKzksOCBAQCBvcGVyYXRpb24gcGVyZm9ybWVkIGF0IGVhY2ggc3RlcC4KIDEuIEFm
dGVyIGFkZGluZyBhbGwgaXRlbXMKIHsKICAgICAiZGF0YSI6IHsKLSAgICAgICAgIkZpbGVzIjog
IiIsCi0gICAgICAgICJ0ZXh0L3VyaS1saXN0IjogImh0dHBzOi8vd2Via2l0Lm9yZyIKKyAgICAg
ICAgInRleHQvdXJpLWxpc3QiOiAiaHR0cHM6Ly93ZWJraXQub3JnIiwKKyAgICAgICAgIkZpbGVz
IjogIiIKICAgICB9LAogICAgICJpdGVtcyI6IFsKICAgICAgICAgewpAQCAtODcsOCArODcsOCBA
QCBvcGVyYXRpb24gcGVyZm9ybWVkIGF0IGVhY2ggc3RlcC4KIDIuIEFmdGVyIHJlbW92aW5nIGF0
IGluZGV4IDQKIHsKICAgICAiZGF0YSI6IHsKLSAgICAgICAgIkZpbGVzIjogIiIsCi0gICAgICAg
ICJ0ZXh0L3VyaS1saXN0IjogImh0dHBzOi8vd2Via2l0Lm9yZyIKKyAgICAgICAgInRleHQvdXJp
LWxpc3QiOiAiaHR0cHM6Ly93ZWJraXQub3JnIiwKKyAgICAgICAgIkZpbGVzIjogIiIKICAgICB9
LAogICAgICJpdGVtcyI6IFsKICAgICAgICAgewpAQCAtMTUyLDggKzE1Miw4IEBAIHJlbW92ZWRJ
dGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCiAzLiBBZnRlciByZW1vdmluZyBh
dCBpbmRleCAxCiB7CiAgICAgImRhdGEiOiB7Ci0gICAgICAgICJGaWxlcyI6ICIiLAotICAgICAg
ICAidGV4dC91cmktbGlzdCI6ICJodHRwczovL3dlYmtpdC5vcmciCisgICAgICAgICJ0ZXh0L3Vy
aS1saXN0IjogImh0dHBzOi8vd2Via2l0Lm9yZyIsCisgICAgICAgICJGaWxlcyI6ICIiCiAgICAg
fSwKICAgICAiaXRlbXMiOiBbCiAgICAgICAgIHsKQEAgLTIwMyw4ICsyMDMsOCBAQCByZW1vdmVk
SXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogbnVsbAogNC4gQWZ0ZXIgcmVtb3Zpbmcg
YXQgaW5kZXggMwogewogICAgICJkYXRhIjogewotICAgICAgICAiRmlsZXMiOiAiIiwKLSAgICAg
ICAgInRleHQvdXJpLWxpc3QiOiAiaHR0cHM6Ly93ZWJraXQub3JnIgorICAgICAgICAidGV4dC91
cmktbGlzdCI6ICJodHRwczovL3dlYmtpdC5vcmciLAorICAgICAgICAiRmlsZXMiOiAiIgogICAg
IH0sCiAgICAgIml0ZW1zIjogWwogICAgICAgICB7CkBAIC0yNDcsNiArMjQ3LDcgQEAgcmVtb3Zl
ZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6IG51bGwKIDYuIEFmdGVyIGFkZGluZyB0
d28gZmlsZXMgYW5kIHNvbWUgc3RyaW5nIGRhdGEgYWdhaW4KIHsKICAgICAiZGF0YSI6IHsKKyAg
ICAgICAgInRleHQvaHRtbCI6ICI8c3Ryb25nPnNvbWUgc3R5bGVkIHRleHQ8L3N0cm9uZz4iLAog
ICAgICAgICAiRmlsZXMiOiAiIgogICAgIH0sCiAgICAgIml0ZW1zIjogWwpAQCAtMjk2LDYgKzI5
Nyw3IEBAIHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCiA3LiBB
ZnRlciByZW1vdmluZyBhdCBpbmRleCAyCiB7CiAgICAgImRhdGEiOiB7CisgICAgICAgICJ0ZXh0
L2h0bWwiOiAiPHN0cm9uZz5zb21lIHN0eWxlZCB0ZXh0PC9zdHJvbmc+IiwKICAgICAgICAgIkZp
bGVzIjogIiIKICAgICB9LAogICAgICJpdGVtcyI6IFsKQEAgLTM0MSw2ICszNDMsNyBAQCByZW1v
dmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogbnVsbAogOC4gQWZ0ZXIgcmVtb3Zp
bmcgYXQgaW5kZXggMgogewogICAgICJkYXRhIjogeworICAgICAgICAidGV4dC9odG1sIjogIjxz
dHJvbmc+c29tZSBzdHlsZWQgdGV4dDwvc3Ryb25nPiIsCiAgICAgICAgICJGaWxlcyI6ICIiCiAg
ICAgfSwKICAgICAiaXRlbXMiOiBbCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tY29weS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVt
LWxpc3QtYWRkLWZpbGUtb24tY29weS1leHBlY3RlZC50eHQKaW5kZXggZmZkZjY3Y2FlZDFiMTE3
OGM0MmY4YzVkMDBiNTk1NDc3MWU2Y2U5Yi4uMTM3YzkxYmRjMjVkYmZkZDdmMmNiNjk5Yjg4YzJj
ZTQyZjA3YzgxNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Rh
dGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWNvcHktZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1h
ZGQtZmlsZS1vbi1jb3B5LWV4cGVjdGVkLnR4dApAQCAtMTI5LDYgKzEyOSw3IEBAIHJlbW92ZWRJ
dGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCiA1LiBBZnRlciBhZGRpbmcgYW4g
SFRNTCBzdHJpbmcKIHsKICAgICAiZGF0YSI6IHsKKyAgICAgICAgInRleHQvaHRtbCI6ICI8YT5n
b29kYnllIHdvcmxkPC9hPiIsCiAgICAgICAgICJGaWxlcyI6ICIiCiAgICAgfSwKICAgICAiaXRl
bXMiOiBbCkBAIC0xNjQsNiArMTY1LDcgQEAgcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxk
IGJlIG51bGw6IG51bGwKIDYuIEFmdGVyIGFkZGluZyBhbm90aGVyIHBsYWluIHRleHQgZmlsZQog
ewogICAgICJkYXRhIjogeworICAgICAgICAidGV4dC9odG1sIjogIjxhPmdvb2RieWUgd29ybGQ8
L2E+IiwKICAgICAgICAgIkZpbGVzIjogIiIKICAgICB9LAogICAgICJpdGVtcyI6IFsKQEAgLTIx
Myw2ICsyMTUsNyBAQCByZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogbnVs
bAogNy4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIGN1c3RvbSBmaWxlCiB7CiAgICAgImRhdGEiOiB7Cisg
ICAgICAgICJ0ZXh0L2h0bWwiOiAiPGE+Z29vZGJ5ZSB3b3JsZDwvYT4iLAogICAgICAgICAiRmls
ZXMiOiAiIgogICAgIH0sCiAgICAgIml0ZW1zIjogWwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWRy
YWctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJh
bnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWRyYWctZXhwZWN0ZWQudHh0CmluZGV4IDdhZGE2
NTQxOTNmZGUwZGE1ZmZiOGE3NjVmMWIwYTgxNjU5OTY1YzEuLjRjNTg4MzgxYmRhNGRjY2U4MmVi
ZjdjMjAwMThjYzFiMGNlNDg5NGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1kcmFnLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1p
dGVtLWxpc3QtYWRkLWZpbGUtb24tZHJhZy1leHBlY3RlZC50eHQKQEAgLTEyOSw2ICsxMjksNyBA
QCByZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogbnVsbAogNS4gQWZ0ZXIg
YWRkaW5nIGFuIEhUTUwgc3RyaW5nCiB7CiAgICAgImRhdGEiOiB7CisgICAgICAgICJ0ZXh0L2h0
bWwiOiAiPGE+Z29vZGJ5ZSB3b3JsZDwvYT4iLAogICAgICAgICAiRmlsZXMiOiAiIgogICAgIH0s
CiAgICAgIml0ZW1zIjogWwpAQCAtMTY0LDYgKzE2NSw3IEBAIHJlbW92ZWRJdGVtLmdldEFzRmls
ZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCiA2LiBBZnRlciBhZGRpbmcgYW5vdGhlciBwbGFpbiB0
ZXh0IGZpbGUKIHsKICAgICAiZGF0YSI6IHsKKyAgICAgICAgInRleHQvaHRtbCI6ICI8YT5nb29k
YnllIHdvcmxkPC9hPiIsCiAgICAgICAgICJGaWxlcyI6ICIiCiAgICAgfSwKICAgICAiaXRlbXMi
OiBbCkBAIC0yMTMsNiArMjE1LDcgQEAgcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJl
IG51bGw6IG51bGwKIDcuIEFmdGVyIHJlbW92aW5nIHRoZSBjdXN0b20gZmlsZQogewogICAgICJk
YXRhIjogeworICAgICAgICAidGV4dC9odG1sIjogIjxhPmdvb2RieWUgd29ybGQ8L2E+IiwKICAg
ICAgICAgIkZpbGVzIjogIiIKICAgICB9LAogICAgICJpdGVtcyI6IFsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1pbWFnZS1kb2VzLW5vdC1yZXZlYWwt
ZmlsZS11cmwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bh
c3RlLWltYWdlLWRvZXMtbm90LXJldmVhbC1maWxlLXVybC1leHBlY3RlZC50eHQKaW5kZXggZGY2
NGIwMTBlOWI4YTY4NmZiNjhiYzZiMWRiNTA3MTRmMjk0NWNkYS4uMGI0MTZjYzY3ZmNhOGYxZDIw
Mzk3YTllOTBmMGI3NzVkYWQ0OGVkOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL3Bhc3RlLWltYWdlLWRvZXMtbm90LXJldmVhbC1maWxlLXVybC1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLWRvZXMt
bm90LXJldmVhbC1maWxlLXVybC1leHBlY3RlZC50eHQKQEAgLTMsNyArMyw3IEBAIFRlc3RzIHRo
YXQgcGFzdGluZyBpbWFnZXMgZG8gbm90IHJldmVhbCBpdHMgZmlsZSBVUkwuIFRvIG1hbnVhbGx5
IHRlc3QsIGNvcHkgdGhlCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBKU09O
LnN0cmluZ2lmeShldmVudC5jbGlwYm9hcmREYXRhLnR5cGVzKSBpcyAiW1wiRmlsZXNcIl0iCitQ
QVNTIGV2ZW50LmNsaXBib2FyZERhdGEudHlwZXMuaW5kZXhPZigiRmlsZXMiKSBpcyBub3QgLTEK
IFBBU1MgZXZlbnQuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCJ1cmwiKSBpcyAiIgogUEFTUyBldmVu
dC5jbGlwYm9hcmREYXRhLmdldERhdGEoInRleHQvcGxhaW4iKSBpcyAiIgogUEFTUyBldmVudC5j
bGlwYm9hcmREYXRhLmdldERhdGEoInRleHQvdXJpLWxpc3QiKSBpcyAiIgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLWRvZXMtbm90LXJldmVh
bC1maWxlLXVybC5odG1sIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWlt
YWdlLWRvZXMtbm90LXJldmVhbC1maWxlLXVybC5odG1sCmluZGV4IDJkNWU4ZWVlOWZkZDRhZTY5
Mzg3YzY2YmZmOTgwNjkzZGU0MjQ3NzAuLmU4ZWY3MDM0NjU4ZTllNDZmNWU4MmRiN2RhZTViYjhi
ZGY1YmZiMzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0
ZS1pbWFnZS1kb2VzLW5vdC1yZXZlYWwtZmlsZS11cmwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtaW1hZ2UtZG9lcy1ub3QtcmV2ZWFsLWZpbGUtdXJsLmh0
bWwKQEAgLTMxLDcgKzMxLDcgQEAgZnVuY3Rpb24gcnVuVGVzdCgpCiAKIGZ1bmN0aW9uIGNoZWNr
KGV2ZW50KQogewotICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygnSlNPTi5zdHJpbmdpZnkoZXZl
bnQuY2xpcGJvYXJkRGF0YS50eXBlcyknLCAnWyJGaWxlcyJdJyk7CisgICAgc2hvdWxkTm90QmUo
J2V2ZW50LmNsaXBib2FyZERhdGEudHlwZXMuaW5kZXhPZigiRmlsZXMiKScsICctMScpOwogICAg
IHNob3VsZEJlRXF1YWxUb1N0cmluZygnZXZlbnQuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCJ1cmwi
KScsICcnKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LmNsaXBib2FyZERhdGEu
Z2V0RGF0YSgidGV4dC9wbGFpbiIpJywgJycpOwogICAgIHNob3VsZEJlRXF1YWxUb1N0cmluZygn
ZXZlbnQuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCJ0ZXh0L3VyaS1saXN0IiknLCAnJyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333499</attachid>
            <date>2018-02-09 10:44:14 -0800</date>
            <delta_ts>2018-02-09 12:58:09 -0800</delta_ts>
            <desc>Adjust type order &amp; test expectations.</desc>
            <filename>bug-182636-20180209104413.patch</filename>
            <type>text/plain</type>
            <size>51971</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmI4ZjBmMmU5YWY4MWE2
ZjMyNjBiYzY2NmNhMjZlMTQzNzQzODk5Ny4uNTA3NzUzMWM1ODI4NzNkYzc2MzVmNGU3OTIwOWFl
YjdiZjNjYTNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDkyIEBACisyMDE4LTAyLTA4ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFBhc3RpbmcgZnJv
bSBFeGNlbCBubyBsb25nZXIgcHJvdmlkZXMgdGV4dC9odG1sIGRhdGEKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjYzNgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMzcwODcwNjA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWZ0ZXIgcjIyMjY1Niwgd2UgdHJlYXQgaW1hZ2VzIG9uIHRoZSBwYXN0ZWJv
YXJkIGFzIGZpbGVzLiBIb3dldmVyLCB3ZSBhbHNvIGhhdmUgYW4gZXhpc3RpbmcgcG9saWN5IHdo
aWNoIGhpZGVzCisgICAgICAgIHRleHQgZGF0YSAoInRleHQvdXJpLWxpc3QiLCAidGV4dC9odG1s
IiwgInRleHQvcGxhaW4iKSBmcm9tIHRoZSBwYWdlIHdoZW4gZmlsZXMgYXJlIHByZXNlbnQgb24g
dGhlIHBhc3RlYm9hcmQuCisgICAgICAgIFdoZW4gY29weWluZyBhIHRhYmxlLCBNaWNyb3NvZnQg
RXhjZWwgd3JpdGVzIGEgcmVuZGVyaW5nIG9mIHRoZSB0YWJsZSB0byB0aGUgcGFzdGVib2FyZCBh
cyBhbiBpbWFnZS4gVGhpcyBtZWFucworICAgICAgICB0aGF0IHdlJ2xsIGhpZGUgb3RoZXIgZGF0
YSB0eXBlcyAoaW1wb3J0YW50bHksICd0ZXh0L2h0bWwnKSB1cG9uIHBhc3RpbmcsIGV2ZW4gdGhv
dWdoIGltcG9ydGFudCBjbGllbnRzIChzdWNoIGFzCisgICAgICAgIEdvb2dsZSBEb2NzIGFuZCBD
b25mbHVlbmNlKSBkZXBlbmQgb24gdGhlICd0ZXh0L2h0bWwnIGRhdGEgaW4gb3JkZXIgdG8gY29y
cmVjdGx5IGhhbmRsZSB0aGUgcGFzdGUgKHJhdGhlciB0aGFuCisgICAgICAgIHBhc3RlIGFzIGFu
IGltYWdlIG9mIGEgdGFibGUpLgorCisgICAgICAgIFRvIGZpeCB0aGlzLCB3ZSBhZGQgYW4gZXhj
ZXB0aW9uIHRvIHRoZSBEYXRhVHJhbnNmZXIuZ2V0RGF0YSBjb2RlcGF0aCB3aGVuIHRoZSBwYXN0
ZWJvYXJkIGNvbnRhaW5zIGZpbGVzLgorICAgICAgICBJbnN0ZWFkIG9mIGFsd2F5cyByZXR1cm5p
bmcgdGhlIGVtcHR5IHN0cmluZyBmb3IgdGV4dC9odG1sLCB3ZSBzdGlsbCBhbGxvdyBwYXN0ZWJv
YXJkIGFjY2VzcywgYnV0IG9ubHkgcmVhZAorICAgICAgICBmcm9tIGEgbGltaXRlZCBzZXQgb2Yg
cmljaCB0ZXh0IHR5cGVzLCBpLmUuIHdlYiBhcmNoaXZlLCBSVEYoRCksIGFuZCBIVE1MIG1hcmt1
cC4gSW1wb3J0YW50bHksIHRoaXMgcHJldmVudHMKKyAgICAgICAgdXMgZnJvbSBleHBvc2luZyBh
bnkgZmlsZSBwYXRocyB0aGF0IGFwcGVhciBhcyBwbGFpbiB0ZXh0IG9yIFVSTHMgb24gdGhlIHBh
c3RlYm9hcmQuIEp1c3QgYXMgaW4gdGhlIHJlZ3VsYXIKKyAgICAgICAgY29kZXBhdGggZm9yIGdl
dERhdGEoKSwgaWYgdGhlIHBhc3RlYm9hcmQgZGF0YSBjb21lcyBmcm9tIHRoZSBzYW1lIG9yaWdp
biwgd2UgYWxsb3cgdW5zYW5pdGl6ZWQgYWNjZXNzOworICAgICAgICBvdGhlcndpc2UsIHdlIHVz
ZSBXZWJDb250ZW50TWFya3VwUmVhZGVyIHRvIGV4dHJhY3QgbWFya3VwIGZyb20gdGhlIHBhc3Rl
Ym9hcmQuCisKKyAgICAgICAgVGVzdHM6ICBQYXN0ZU1peGVkQ29udGVudC5JbWFnZUZpbGVBbmRQ
bGFpblRleHQKKyAgICAgICAgICAgICAgICBQYXN0ZU1peGVkQ29udGVudC5JbWFnZUZpbGVBbmRX
ZWJBcmNoaXZlCisgICAgICAgICAgICAgICAgUGFzdGVNaXhlZENvbnRlbnQuSW1hZ2VGaWxlQW5k
SFRNTAorICAgICAgICAgICAgICAgIFBhc3RlTWl4ZWRDb250ZW50LkltYWdlRmlsZUFuZFJURgor
ICAgICAgICAgICAgICAgIFBhc3RlTWl4ZWRDb250ZW50LkltYWdlRmlsZUFuZFVSTAorICAgICAg
ICAgICAgICAgIFBhc3RlTWl4ZWRDb250ZW50LkltYWdlRmlsZVdpdGhIVE1MQW5kVVJMCisgICAg
ICAgICAgICAgICAgRGF0YUludGVyYWN0aW9uVGVzdHMuRGF0YVRyYW5zZmVyR2V0RGF0YVdoZW5E
cm9wcGluZ0ltYWdlQW5kTWFya3VwCisKKyAgICAgICAgQWxzbyByZWJhc2VsaW5lZCBzb21lIGxh
eW91dCB0ZXN0cywgd2hpY2ggY292ZXIgY2hhbmdlcyBpbiBiZWhhdmlvciB3aGVuIGRyb3BwaW5n
IG9uIG1hY09TIGFuZCBwYXN0aW5nIG9uIGlPUy4KKworICAgICAgICAqIGRvbS9EYXRhVHJhbnNm
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpnZXREYXRhRm9ySXRlbSBj
b25zdCk6CisKKyAgICAgICAgQXVnbWVudCB0aGUgY29kZXBhdGggaGFuZGxpbmcgdGhlIGNhc2Ug
d2hlcmUgdGhlIHBhc3RlYm9hcmQgY29udGFpbnMgZmlsZXMsIHN1Y2ggdGhhdCB3ZSBhbGxvdyBy
ZWFkaW5nCisgICAgICAgICJ0ZXh0L2h0bWwiLCBidXQgb25seSBmcm9tIHJpY2ggdGV4dCB0eXBl
cy4KKworICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpyZWFkUGFzdGVib2FyZERhdGFG
b3JCaW5kaW5nc1Jlc3BlY3RpbmdPcmlnaW4gY29uc3QpOgorCisgICAgICAgIEZhY3RvciBvdXQg
bG9naWMgZm9yIHJlYWRpbmcgZnJvbSB0aGUgcGFzdGVib2FyZCBpbnRvIGEgcHJpdmF0ZSBoZWxw
ZXIuIFRoaXMgaXMgY2FsbGVkIGluIHR3byBwbGFjZXMgZnJvbQorICAgICAgICBnZXREYXRhRm9y
SXRlbTogaW4gdGhlIG5vcm1hbCAoZXhpc3RpbmcpIHBhdGgsIGFuZCBpbiB0aGUgY2FzZSB3aGVy
ZSB3ZSBhbGxvdyAndGV4dC9odG1sJyB0byBiZSByZWFkIGRlc3BpdGUKKyAgICAgICAgZmlsZXMg
YXBwZWFyaW5nIGluIHRoZSBwYXN0ZWJvYXJkLgorCisgICAgICAgIE9uZSBpbXBvcnRhbnQgZGlm
ZmVyZW5jZSBoZXJlIGlzIHRoYXQgdGhpcyBoZWxwZXIgbm93IHRha2VzIGEgV2ViQ29udGVudFJl
YWRpbmdQb2xpY3ksIHdob3NlIHB1cnBvc2UgaXMgdG8KKyAgICAgICAgcHJldmVudCByZWFkaW5n
IGZyb20gbm9uLXJpY2gtdGV4dCB0eXBlcyB3aGVuIGZpbGVzIGFwcGVhciBpbiB0aGUgcGFzdGVi
b2FyZC4KKworICAgICAgICBBbm90aGVyIHR3ZWFrIGhlcmUgaXMgdGhhdCB3ZSBub3cgdXNlIGBs
b3dlcmNhc2VUeXBlYCBpbnN0ZWFkIG9mIHRoZSBvcmlnaW5hbCAodW5hZGp1c3RlZCkgYHR5cGVg
IHdoZW4gcmVhZGluZworICAgICAgICBmcm9tIHRoZSBwYXN0ZWJvYXJkLiBUaGlzIGRvZXNuJ3Qg
c2VlbSB0byBiZSBpbnRlbmRlZCBpbiB0aGUgZmlyc3QgcGxhY2UuCisKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFUcmFuc2Zlcjo6dHlwZXMgY29uc3QpOgorCisgICAgICAgIFR3ZWFrIHRoZSBpbXBs
ZW1lbnRhdGlvbiBvZiBEYXRhVHJhbnNmZXIudHlwZXMoKSBpbiB0aGUgY2FzZSB3aGVyZSBmaWxl
cyBleGlzdCBvbiB0aGUgcGFzdGVib2FyZC4gQ3VycmVudGx5LCB3ZQorICAgICAgICBudWtlIHRo
ZSByZXN1bHQgb2YgYHNhZmVUeXBlc2AgYW5kIHJlcGxhY2UgaXQgd2l0aCBhIHNpbmdsZSBWZWN0
b3IgY29udGFpbmluZyAiRmlsZXMiLCBhbmQgdGhlbiBhZGQKKyAgICAgICAgInRleHQvdXJpLWxp
c3QiIGlmIGl0IGV4aXN0cyBvbiB0aGUgcGFzdGVib2FyZC4gSW5zdGVhZCwgd29yayBiYWNrd2Fy
ZHMsIGFkZGluZyB0aGUgIkZpbGVzIiB0eXBlIGFuZCByZW1vdmluZworICAgICAgICAidGV4dC9w
bGFpbiIuIEkgb3B0ZWQgZm9yIHRoaXMgYmVjYXVzZSBpdCBzZWVtcyBsZXNzIGhhY2t5IHRoYW4g
YXBwZW5kaW5nICJ0ZXh0L2h0bWwiIHNlcGFyYXRlbHksIG9uIHRvcCBvZgorICAgICAgICAidGV4
dC91cmktbGlzdCIuCisKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vUGFzdGVib2FyZC5oOgorCisgICAgICAgIEludHJvZHVjZSBXZWJDb250ZW50UmVh
ZGluZ1BvbGljeSwgd2hpY2ggaW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHdlIHNob3VsZCBsaW1p
dCB3ZWIgY29udGVudCByZWFkaW5nIGZyb20gdGhlCisgICAgICAgIHBhc3RlYm9hcmQgdG8gb25s
eSByaWNoIHRleHQgdHlwZXMgdXBvbiBwYXN0ZSBvciBkcm9wLiBOb3JtYWxseSwgd2UgYWxsb3cg
YWxsIHR5cGVzIHRvIGJlIHJlYWQgYXMgd2ViIGNvbnRlbnQKKyAgICAgICAgKDo6UmVhZEZyb21B
bnlUeXBlKSwgYnV0IHdoZW4gZmlsZXMgYXBwZWFyIG9uIHRoZSBwYXN0ZWJvYXJkLCB3ZSBmb3Jj
ZSBPbmx5UmVhZEZyb21SaWNoVGV4dFR5cGVzIHRvIGVuc3VyZSB0aGF0CisgICAgICAgIG5vIG90
aGVyIHR5cGVzIGNhbiB1bmludGVudGlvbmFsbHkgYmUgcmVhZCBiYWNrIGFzIHdlYiBjb250ZW50
LgorCisgICAgICAgICogcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tOgorCisgICAgICAgIFRlYWNoIFBhc3RlYm9hcmQg
KG9uIGlPUykgdG8gcmVzcGVjdCBXZWJDb250ZW50UmVhZGluZ1BvbGljeS4KKworICAgICAgICAq
IHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3Rl
Ym9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L3dwZS9QYXN0ZWJvYXJkV1BFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJl
YWQpOgorCisgICAgICAgIEFkanVzdCBub24tQ29jb2EgUGFzdGVib2FyZCBpbXBsZW1lbnRhdGlv
bnMgZm9yIGFuIGludGVyZmFjZSBjaGFuZ2UuCisKKyAgICAgICAgKFdlYkNvcmU6OnR5cGVJc0Fw
cHJvcHJpYXRlRm9yV2ViQ29udGVudFJlYWRpbmdQb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6
UGFzdGVib2FyZDo6cmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkUmVz
cGVjdGluZ1VUSUZpZGVsaXRpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QYXN0ZWJvYXJk
TWFjLm1tOgorCisgICAgICAgIFRlYWNoIFBhc3RlYm9hcmQgKG9uIG1hY09TKSB0byByZXNwZWN0
IFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LgorCisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJk
OjpyZWFkKToKKwogMjAxOC0wMi0wOCAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CiAKICAgICAgICAgQ29yZUF1ZGlvQ2FwdHVyZVNvdXJjZUlPU0xpc3RlbmVyIHNob3VsZCBiZSBh
IFdlYlByb2Nlc3Mgc2luZ2xldG9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0
YVRyYW5zZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuY3BwCmluZGV4
IGMxMDk0MjNlOWM5ZGUyMGM4MjZiMGU3N2Q4Zjk2ZGY4NDMyZmQ2ODcuLmNiYWIwOTUzNzk4Zjcw
ZjBmYzBjYjE0MTJiZjYyYzZkZjgyNTI3ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhVHJhbnNmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIu
Y3BwCkBAIC0xNTQsOSArMTU0LDI2IEBAIFN0cmluZyBEYXRhVHJhbnNmZXI6OmdldERhdGFGb3JJ
dGVtKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0eXBlKSBjb25zCiAgICAgICAg
ICAgICBpZiAoUGFzdGVib2FyZDo6Y2FuRXhwb3NlVVJMVG9ET01XaGVuUGFzdGVib2FyZENvbnRh
aW5zRmlsZXModXJsU3RyaW5nKSkKICAgICAgICAgICAgICAgICByZXR1cm4gdXJsU3RyaW5nOwog
ICAgICAgICB9CisKKyAgICAgICAgaWYgKGxvd2VyY2FzZVR5cGUgPT0gInRleHQvaHRtbCIgJiYg
UnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jdXN0b21QYXN0ZWJvYXJk
RGF0YUVuYWJsZWQoKSkgeworICAgICAgICAgICAgLy8gSWYgdGhlIHBhc3RlYm9hcmQgY29udGFp
bnMgZmlsZXMgYW5kIHRoZSBwYWdlIHJlcXVlc3RzICd0ZXh0L2h0bWwnLCB3ZSBvbmx5IHJlYWQg
ZnJvbSByaWNoIHRleHQgdHlwZXMgdG8gcHJldmVudCBmaWxlCisgICAgICAgICAgICAvLyBwYXRo
cyBmcm9tIGxlYWtpbmcgKGUuZy4gZnJvbSBwbGFpbiB0ZXh0IGRhdGEgb24gdGhlIHBhc3RlYm9h
cmQpLiBXZSByZXF1aXJlIGN1c3RvbSBwYXN0ZWJvYXJkIGRhdGEgZm9yIHRoaXMgYmVjYXVzZQor
ICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBlbnN1cmUgdGhhdCBlaXRoZXI6CisgICAgICAgICAg
ICAvLyAgIC0gYWxsIG1hcmt1cCByZXBvcnRlZCB0byB0aGUgcGFnZSB1bmRlcmdvZXMgc2FuaXRp
emF0aW9uLCBvcgorICAgICAgICAgICAgLy8gICAtIHRoZSBjdXN0b20gcGFzdGVib2FyZCBkYXRh
J3Mgb3JpZ2luIG1hdGNoZXMgdGhlIGRvY3VtZW50IG9yaWdpbgorICAgICAgICAgICAgLy8gVGhp
cyBtZWFucyB0aGF0IGlmIGN1c3RvbSBwYXN0ZWJvYXJkIGRhdGEgaXMgZGlzYWJsZWQgYW5kIHRo
ZXJlIGlzIGEgZmlsZSBvbiB0aGUgcGFzdGVib2FyZCwgd2UgcmV2ZXJ0IHRvIG91ciBsZWdhY3kK
KyAgICAgICAgICAgIC8vIGJlaGF2aW9yIG9mIHNpbXBseSByZXR1cm5pbmcgYW4gZW1wdHkgc3Ry
aW5nLgorICAgICAgICAgICAgcmV0dXJuIHJlYWRQYXN0ZWJvYXJkRGF0YUZvckJpbmRpbmdzUmVz
cGVjdGluZ09yaWdpbihkb2N1bWVudCwgbG93ZXJjYXNlVHlwZSwgV2ViQ29udGVudFJlYWRpbmdQ
b2xpY3k6Ok9ubHlSZWFkRnJvbVJpY2hUZXh0VHlwZXMpOworICAgICAgICB9CisKICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICB9CiAKKyAgICByZXR1cm4gcmVhZFBhc3RlYm9hcmREYXRhRm9yQmlu
ZGluZ3NSZXNwZWN0aW5nT3JpZ2luKGRvY3VtZW50LCBsb3dlcmNhc2VUeXBlLCBXZWJDb250ZW50
UmVhZGluZ1BvbGljeTo6UmVhZEZyb21BbnlUeXBlKTsKK30KKworU3RyaW5nIERhdGFUcmFuc2Zl
cjo6cmVhZFBhc3RlYm9hcmREYXRhRm9yQmluZGluZ3NSZXNwZWN0aW5nT3JpZ2luKERvY3VtZW50
JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiBsb3dlcmNhc2VUeXBlLCBXZWJDb250ZW50UmVhZGlu
Z1BvbGljeSBwb2xpY3kpIGNvbnN0Cit7CiAgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLmN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgpKQogICAgICAg
ICByZXR1cm4gbV9wYXN0ZWJvYXJkLT5yZWFkU3RyaW5nKGxvd2VyY2FzZVR5cGUpOwogCkBAIC0x
NzAsMTUgKzE4NywxNSBAQCBTdHJpbmcgRGF0YVRyYW5zZmVyOjpnZXREYXRhRm9ySXRlbShEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29ucwogICAgIGlmICghUGFzdGVi
b2FyZDo6aXNTYWZlVHlwZUZvckRPTVRvUmVhZEFuZFdyaXRlKGxvd2VyY2FzZVR5cGUpKQogICAg
ICAgICByZXR1cm4geyB9OwogCi0gICAgaWYgKCFpczxTdGF0aWNQYXN0ZWJvYXJkPigqbV9wYXN0
ZWJvYXJkKSAmJiB0eXBlID09ICJ0ZXh0L2h0bWwiKSB7CisgICAgaWYgKCFpczxTdGF0aWNQYXN0
ZWJvYXJkPigqbV9wYXN0ZWJvYXJkKSAmJiBsb3dlcmNhc2VUeXBlID09ICJ0ZXh0L2h0bWwiKSB7
CiAgICAgICAgIGlmICghZG9jdW1lbnQuZnJhbWUoKSkKICAgICAgICAgICAgIHJldHVybiB7IH07
CiAgICAgICAgIFdlYkNvbnRlbnRNYXJrdXBSZWFkZXIgcmVhZGVyIHsgKmRvY3VtZW50LmZyYW1l
KCkgfTsKLSAgICAgICAgbV9wYXN0ZWJvYXJkLT5yZWFkKHJlYWRlcik7CisgICAgICAgIG1fcGFz
dGVib2FyZC0+cmVhZChyZWFkZXIsIHBvbGljeSk7CiAgICAgICAgIHJldHVybiByZWFkZXIubWFy
a3VwOwogICAgIH0KIAotICAgIHJldHVybiBtX3Bhc3RlYm9hcmQtPnJlYWRTdHJpbmcodHlwZSk7
CisgICAgcmV0dXJuIG1fcGFzdGVib2FyZC0+cmVhZFN0cmluZyhsb3dlcmNhc2VUeXBlKTsKIH0K
IAogU3RyaW5nIERhdGFUcmFuc2Zlcjo6Z2V0RGF0YShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0
IFN0cmluZyYgdHlwZSkgY29uc3QKQEAgLTI4MywyMCArMzAwLDE5IEBAIFZlY3RvcjxTdHJpbmc+
IERhdGFUcmFuc2Zlcjo6dHlwZXMoQWRkRmlsZXNUeXBlIGFkZEZpbGVzVHlwZSkgY29uc3QKICAg
ICB9CiAKICAgICBhdXRvIHNhZmVUeXBlcyA9IG1fcGFzdGVib2FyZC0+dHlwZXNTYWZlRm9yQmlu
ZGluZ3MobV9vcmlnaW5JZGVudGlmaWVyKTsKKyAgICBBU1NFUlQoIXNhZmVUeXBlcy5jb250YWlu
cygiRmlsZXMiKSk7CisKICAgICBib29sIGhhc0ZpbGVCYWNrZWRJdGVtID0gbV9pdGVtTGlzdCAm
JiBtX2l0ZW1MaXN0LT5oYXNJdGVtcygpICYmIG5vdEZvdW5kICE9IG1faXRlbUxpc3QtPml0ZW1z
KCkuZmluZE1hdGNoaW5nKFtdIChjb25zdCBhdXRvJiBpdGVtKSB7CiAgICAgICAgIHJldHVybiBp
dGVtLT5pc0ZpbGUoKTsKICAgICB9KTsKIAogICAgIGlmIChoYXNGaWxlQmFja2VkSXRlbSB8fCBt
X3Bhc3RlYm9hcmQtPmNvbnRhaW5zRmlsZXMoKSkgewotICAgICAgICBWZWN0b3I8U3RyaW5nPiB0
eXBlczsKKyAgICAgICAgLy8gV2UgZG9uJ3QgZXhwb3NlICd0ZXh0L3BsYWluJyB0byB0aGUgcGFn
ZSBpZiB0aGUgcGFzdGVib2FyZCBjb250YWlucyBmaWxlcywgYmVjYXVzZSBwbGFpbiB0ZXh0IGRh
dGEgbWF5IGNvbnRhaW4gZmlsZSBwYXRocy4KKyAgICAgICAgc2FmZVR5cGVzLnJlbW92ZUZpcnN0
KCJ0ZXh0L3BsYWluIik7CiAgICAgICAgIGlmIChhZGRGaWxlc1R5cGUgPT0gQWRkRmlsZXNUeXBl
OjpZZXMpCi0gICAgICAgICAgICB0eXBlcy5hcHBlbmQoQVNDSUlMaXRlcmFsKCJGaWxlcyIpKTsK
LSAgICAgICAgaWYgKHNhZmVUeXBlcy5jb250YWlucygidGV4dC91cmktbGlzdCIpKQotICAgICAg
ICAgICAgdHlwZXMuYXBwZW5kKEFTQ0lJTGl0ZXJhbCgidGV4dC91cmktbGlzdCIpKTsKLSAgICAg
ICAgcmV0dXJuIHR5cGVzOworICAgICAgICAgICAgc2FmZVR5cGVzLmluc2VydCgwLCBBU0NJSUxp
dGVyYWwoIkZpbGVzIikpOwogICAgIH0KIAotICAgIEFTU0VSVCghc2FmZVR5cGVzLmNvbnRhaW5z
KCJGaWxlcyIpKTsKICAgICByZXR1cm4gc2FmZVR5cGVzOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRy
YW5zZmVyLmgKaW5kZXggMzFkYzc5OWZjN2VmN2M3MDM3Njc0Nzc1NDdjNGNiMzQwZTQxMDIzNC4u
N2ZkNWExYTA2ZjI2OWExNjlkZjE0NzA3ZDgxZTA3NjkxNjFkOWUwOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
YXRhVHJhbnNmZXIuaApAQCAtMzksNiArMzksNyBAQCBjbGFzcyBFbGVtZW50OwogY2xhc3MgRmls
ZUxpc3Q7CiBjbGFzcyBGaWxlOwogY2xhc3MgUGFzdGVib2FyZDsKK2VudW0gY2xhc3MgV2ViQ29u
dGVudFJlYWRpbmdQb2xpY3k7CiAKIGNsYXNzIERhdGFUcmFuc2ZlciA6IHB1YmxpYyBSZWZDb3Vu
dGVkPERhdGFUcmFuc2Zlcj4gewogcHVibGljOgpAQCAtMTIxLDYgKzEyMiw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBmb3JGaWxlRHJhZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAjZW5kaWYK
IAorICAgIFN0cmluZyByZWFkUGFzdGVib2FyZERhdGFGb3JCaW5kaW5nc1Jlc3BlY3RpbmdPcmln
aW4oRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIGxvd2VyY2FzZVR5cGUsIFdlYkNvbnRlbnRSZWFk
aW5nUG9saWN5KSBjb25zdDsKICAgICBib29sIHNob3VsZFN1cHByZXNzR2V0QW5kU2V0RGF0YVRv
QXZvaWRFeHBvc2luZ0ZpbGVQYXRocygpIGNvbnN0OwogCiAgICAgZW51bSBjbGFzcyBBZGRGaWxl
c1R5cGUgeyBObywgWWVzIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXgg
ZTkxN2NjMzljNTQ3MzI0ODcwZGY5NWQ4Y2NjZWJiYjBlMmY3MTE3Ni4uOGIzYThiNDExY2QwYzBj
NzM0ODhjNTc2Yjg1MjRhYzgwMThiZjk2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaApAQCAtNjQsNiArNjQsNyBAQCBjbGFzcyBSYW5nZTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7
CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKK2VudW0gY2xhc3MgV2ViQ29udGVudFJlYWRpbmdQb2xp
Y3kgeyBSZWFkRnJvbUFueVR5cGUsIE9ubHlSZWFkRnJvbVJpY2hUZXh0VHlwZXMgfTsKIGVudW0g
U2hvdWxkU2VyaWFsaXplU2VsZWN0ZWRUZXh0Rm9yRGF0YVRyYW5zZmVyIHsgRGVmYXVsdFNlbGVj
dGVkVGV4dFR5cGUsIEluY2x1ZGVJbWFnZUFsdFRleHRGb3JEYXRhVHJhbnNmZXIgfTsKIAogLy8g
Rm9yIHdyaXRpbmcgdG8gdGhlIHBhc3RlYm9hcmQuIEdlbmVyYWxseSBzb3J0ZWQgd2l0aCB0aGUg
cmljaGVzdCBmb3JtYXRzIG9uIHRvcC4KQEAgLTIwOSw3ICsyMTAsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSk7CiAK
ICAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0
Jik7Ci0gICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWQoUGFzdGVib2FyZFdlYkNv
bnRlbnRSZWFkZXImKTsKKyAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0
ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5ID0gV2ViQ29u
dGVudFJlYWRpbmdQb2xpY3k6OlJlYWRGcm9tQW55VHlwZSk7CiAgICAgdmlydHVhbCBXRUJDT1JF
X0VYUE9SVCB2b2lkIHJlYWQoUGFzdGVib2FyZEZpbGVSZWFkZXImKTsKIAogICAgIHZpcnR1YWwg
V0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJik7CkBAIC0yNzMs
NyArMjc0LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICNpZiBQTEFURk9STShJT1MpCiAgICAgYm9v
bCByZXNwZWN0c1VUSUZpZGVsaXRpZXMoKSBjb25zdDsKLSAgICB2b2lkIHJlYWRSZXNwZWN0aW5n
VVRJRmlkZWxpdGllcyhQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYpOworICAgIHZvaWQgcmVh
ZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2Vi
Q29udGVudFJlYWRpbmdQb2xpY3kpOwogCiAgICAgZW51bSBjbGFzcyBSZWFkZXJSZXN1bHQgewog
ICAgICAgICBSZWFkVHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0
YXRpY1Bhc3RlYm9hcmQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9h
cmQuaAppbmRleCA2YTM5MzRkYTQ2ZDhiZjM5ZWNlMDI1NGJjN2M1ZDk5NzhkOThkZDM1Li4wMDdl
NDNhMThlYzU3ZjdiNzBjOWI0ZjAzNGQ3Yjc1MGRhN2M0YjlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNsZWFyKGNvbnN0IFN0cmluZyYgdHlwZSkgZmluYWw7CiAKICAgICB2b2lkIHJlYWQo
UGFzdGVib2FyZFBsYWluVGV4dCYpIGZpbmFsIHsgfQotICAgIHZvaWQgcmVhZChQYXN0ZWJvYXJk
V2ViQ29udGVudFJlYWRlciYpIGZpbmFsIHsgfQorICAgIHZvaWQgcmVhZChQYXN0ZWJvYXJkV2Vi
Q29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5KSBmaW5hbCB7IH0KIAogICAg
IHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZFVSTCYpIGZpbmFsIHsgfQogICAgIHZvaWQgd3Jp
dGUoY29uc3QgUGFzdGVib2FyZEltYWdlJikgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKaW5kZXggYThkNWU1OTljODU3M2YwZGE4NjI2
M2Y3YjZlNmFiMmNkYWU0Yjg3Ny4uOTlkMTIwM2Q2MzBmNDIxMWYzZmVjOGNiZWFmMjMwNTIzMzU2
ZDA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRH
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNw
cApAQCAtMjM2LDcgKzIzNiw3IEBAIHZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxh
aW5UZXh0JiB0ZXh0KQogICAgIHRleHQudGV4dCA9IG1fc2VsZWN0aW9uRGF0YS0+dGV4dCgpOwog
fQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImKQor
dm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29u
dGVudFJlYWRpbmdQb2xpY3kpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9TLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9z
L1Bhc3RlYm9hcmRJT1MubW0KaW5kZXggYjg4Nzk4NDc2ZmNjZTUwMzJlZDhjNWVkODY4ZGVhMGQ5
ZmM2MWY0NS4uMWU4ZDI3M2RiZGZjYzIxOTMzODQ2NjQzYTIyYTNlNGQ2ZDg1MmExNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTE2Myw2ICsx
NjMsMTEgQEAgc3RhdGljIE5TQXJyYXkqIHN1cHBvcnRlZEltYWdlVHlwZXMoKQogICAgIHJldHVy
biBAWyhpZClrVVRUeXBlUE5HLCAoaWQpa1VUVHlwZVRJRkYsIChpZClrVVRUeXBlSlBFRywgKGlk
KWtVVFR5cGVHSUZdOwogfQogCitzdGF0aWMgYm9vbCB0eXBlSXNBcHByb3ByaWF0ZUZvcldlYkNv
bnRlbnRSZWFkaW5nUG9saWN5KE5TU3RyaW5nICp0eXBlLCBXZWJDb250ZW50UmVhZGluZ1BvbGlj
eSBwb2xpY3kpCit7CisgICAgcmV0dXJuIHBvbGljeSA9PSBXZWJDb250ZW50UmVhZGluZ1BvbGlj
eTo6UmVhZEZyb21BbnlUeXBlIHx8IFt0eXBlIGlzRXF1YWxUb1N0cmluZzpXZWJBcmNoaXZlUGJv
YXJkVHlwZV0gfHwgW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihOU1N0cmluZyAqKWtVVFR5cGVIVE1M
XSB8fCBbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KE5TU3RyaW5nICopa1VUVHlwZVJURl0gfHwgW3R5
cGUgaXNFcXVhbFRvU3RyaW5nOihOU1N0cmluZyAqKWtVVFR5cGVGbGF0UlRGRF07Cit9CisKIFBh
c3RlYm9hcmQ6OlJlYWRlclJlc3VsdCBQYXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRl
bnREYXRhRm9yVHlwZShQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBQYXN0ZWJv
YXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBOU1N0cmluZyAqdHlwZSwgaW50IGl0ZW1JbmRleCkKIHsK
ICAgICBpZiAoW3R5cGUgaXNFcXVhbFRvU3RyaW5nOldlYkFyY2hpdmVQYm9hcmRUeXBlXSkgewpA
QCAtMjI1LDExICsyMzAsMTEgQEAgUGFzdGVib2FyZDo6UmVhZGVyUmVzdWx0IFBhc3RlYm9hcmQ6
OnJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlKFBhc3RlYm8KICAgICByZXR1cm4g
UmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpyZWFk
KFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIpCit2b2lkIFBhc3RlYm9hcmQ6OnJl
YWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQ
b2xpY3kgcG9saWN5KQogewogICAgIHJlYWRlci5jb250ZW50T3JpZ2luID0gcmVhZE9yaWdpbigp
OwogICAgIGlmIChyZXNwZWN0c1VUSUZpZGVsaXRpZXMoKSkgewotICAgICAgICByZWFkUmVzcGVj
dGluZ1VUSUZpZGVsaXRpZXMocmVhZGVyKTsKKyAgICAgICAgcmVhZFJlc3BlY3RpbmdVVElGaWRl
bGl0aWVzKHJlYWRlciwgcG9saWN5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjQ1
LDkgKzI1MCwxNCBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRS
ZWFkZXImIHJlYWRlcikKIAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtczsg
aSsrKSB7CiAgICAgICAgIGZvciAoaW50IHR5cGVJbmRleCA9IDA7IHR5cGVJbmRleCA8IG51bWJl
ck9mVHlwZXM7IHR5cGVJbmRleCsrKSB7Ci0gICAgICAgICAgICBhdXRvIGl0ZW1SZXN1bHQgPSBy
ZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShyZWFkZXIsIHN0cmF0ZWd5LCBbdHlw
ZXMgb2JqZWN0QXRJbmRleDp0eXBlSW5kZXhdLCBpKTsKKyAgICAgICAgICAgIE5TU3RyaW5nICp0
eXBlID0gW3R5cGVzIG9iamVjdEF0SW5kZXg6dHlwZUluZGV4XTsKKyAgICAgICAgICAgIGlmICgh
dHlwZUlzQXBwcm9wcmlhdGVGb3JXZWJDb250ZW50UmVhZGluZ1BvbGljeSh0eXBlLCBwb2xpY3kp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBhdXRvIGl0ZW1SZXN1
bHQgPSByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShyZWFkZXIsIHN0cmF0ZWd5
LCB0eXBlLCBpKTsKICAgICAgICAgICAgIGlmIChpdGVtUmVzdWx0ID09IFJlYWRlclJlc3VsdDo6
UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5KQogICAgICAgICAgICAgICAgIHJldHVybjsK
KwogICAgICAgICAgICAgaWYgKGl0ZW1SZXN1bHQgPT0gUmVhZGVyUmVzdWx0OjpSZWFkVHlwZSkK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjYyLDE0ICsyNzIsMTQgQEAg
Ym9vbCBQYXN0ZWJvYXJkOjpyZXNwZWN0c1VUSUZpZGVsaXRpZXMoKSBjb25zdAogICAgIHJldHVy
biBtX3Bhc3RlYm9hcmROYW1lID09ICJkYXRhIGludGVyYWN0aW9uIHBhc3RlYm9hcmQiOwogfQog
Ci12b2lkIFBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyhQYXN0ZWJvYXJk
V2ViQ29udGVudFJlYWRlciYgcmVhZGVyKQordm9pZCBQYXN0ZWJvYXJkOjpyZWFkUmVzcGVjdGlu
Z1VUSUZpZGVsaXRpZXMoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29u
dGVudFJlYWRpbmdQb2xpY3kgcG9saWN5KQogewogICAgIEFTU0VSVChyZXNwZWN0c1VUSUZpZGVs
aXRpZXMoKSk7CiAgICAgYXV0byYgc3RyYXRlZ3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVzKCktPnBh
c3RlYm9hcmRTdHJhdGVneSgpOwogICAgIGZvciAoTlNVSW50ZWdlciBpbmRleCA9IDAsIG51bWJl
ck9mSXRlbXMgPSBzdHJhdGVneS5nZXRQYXN0ZWJvYXJkSXRlbXNDb3VudChtX3Bhc3RlYm9hcmRO
YW1lKTsgaW5kZXggPCBudW1iZXJPZkl0ZW1zOyArK2luZGV4KSB7CiAjaWYgRU5BQkxFKEFUVEFD
SE1FTlRfRUxFTUVOVCkKICAgICAgICAgYXV0byBpbmZvID0gc3RyYXRlZ3kuaW5mb3JtYXRpb25G
b3JJdGVtQXRJbmRleChpbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSk7Ci0gICAgICAgIGJvb2wgY2Fu
UmVhZEF0dGFjaG1lbnQgPSBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpICYmICFpbmZvLnBhdGhGb3JGaWxlVXBsb2FkLmlz
RW1wdHkoKTsKKyAgICAgICAgYm9vbCBjYW5SZWFkQXR0YWNobWVudCA9IHBvbGljeSA9PSBXZWJD
b250ZW50UmVhZGluZ1BvbGljeTo6UmVhZEZyb21BbnlUeXBlICYmIFJ1bnRpbWVFbmFibGVkRmVh
dHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuYXR0YWNobWVudEVsZW1lbnRFbmFibGVkKCkgJiYgIWlu
Zm8ucGF0aEZvckZpbGVVcGxvYWQuaXNFbXB0eSgpOwogICAgICAgICBpZiAoY2FuUmVhZEF0dGFj
aG1lbnQgJiYgaW5mby5wcmVmZXJyZWRQcmVzZW50YXRpb25TdHlsZSA9PSBQYXN0ZWJvYXJkSXRl
bVByZXNlbnRhdGlvblN0eWxlOjpBdHRhY2htZW50KSB7CiAgICAgICAgICAgICByZWFkZXIucmVh
ZEZpbGVQYXRocyh7IGluZm8ucGF0aEZvckZpbGVVcGxvYWQgfSk7CiAgICAgICAgICAgICBjb250
aW51ZTsKQEAgLTI4MSw2ICsyOTEsOSBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5n
VVRJRmlkZWxpdGllcyhQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyKQogICAgICAg
ICBzdHJhdGVneS5nZXRUeXBlc0J5RmlkZWxpdHlGb3JJdGVtQXRJbmRleCh0eXBlc0Zvckl0ZW1J
bk9yZGVyT2ZGaWRlbGl0eSwgaW5kZXgsIG1fcGFzdGVib2FyZE5hbWUpOwogICAgICAgICBSZWFk
ZXJSZXN1bHQgcmVzdWx0ID0gUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFkVHlwZTsKICAgICAgICAg
Zm9yIChhdXRvJiB0eXBlIDogdHlwZXNGb3JJdGVtSW5PcmRlck9mRmlkZWxpdHkpIHsKKyAgICAg
ICAgICAgIGlmICghdHlwZUlzQXBwcm9wcmlhdGVGb3JXZWJDb250ZW50UmVhZGluZ1BvbGljeSh0
eXBlLCBwb2xpY3kpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgICAgICBy
ZXN1bHQgPSByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShyZWFkZXIsIHN0cmF0
ZWd5LCB0eXBlLCBpbmRleCk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFJlYWRlclJlc3Vs
dDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5KQogICAgICAgICAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KaW5kZXgg
YzI2YzkwNGRiOGI0MTAxNjJlYjc3OWU0ZGI1NDk5NTBkZTQxNThkYS4uNjhmZmY5ZTA5NzZjYTJi
YWQ2MjJhNzFjMzdiZTk0NDRhYzkzYjhiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0KQEAgLTMzMSw3ICszMzEsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6
OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCkKICAgICB0ZXh0LmlzVVJMID0gIXRleHQu
dGV4dC5pc051bGwoKTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJD
b250ZW50UmVhZGVyJiByZWFkZXIpCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdl
YkNvbnRlbnRSZWFkZXImIHJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kgcG9saWN5KQog
ewogICAgIFBhc3RlYm9hcmRTdHJhdGVneSYgc3RyYXRlZ3kgPSAqcGxhdGZvcm1TdHJhdGVnaWVz
KCktPnBhc3RlYm9hcmRTdHJhdGVneSgpOwogCkBAIC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBQYXN0
ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIpCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeUZpbGVuYW1l
c1Bhc3RlYm9hcmRUeXBlKCkpKSkgeworICAgIGlmIChwb2xpY3kgPT0gV2ViQ29udGVudFJlYWRp
bmdQb2xpY3k6OlJlYWRGcm9tQW55VHlwZSAmJiB0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5
RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBh
dGhzOwogICAgICAgICBzdHJhdGVneS5nZXRQYXRobmFtZXNGb3JUeXBlKHBhdGhzLCBsZWdhY3lG
aWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICAgICAgaWYg
KG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZEZpbGVQYXRocyhw
YXRocykpCkBAIC0zNzQsNiArMzc0LDkgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9h
cmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAo
cG9saWN5ID09IFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5OjpPbmx5UmVhZEZyb21SaWNoVGV4dFR5
cGVzKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxl
Z2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgpKSkpIHsKICAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWRC
dWZmZXI+IGJ1ZmZlciA9IHN0cmF0ZWd5LmJ1ZmZlckZvclR5cGUobGVnYWN5VElGRlBhc3RlYm9h
cmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpKSB7CiAgICAgICAgICAgICBpZiAobV9jaGFuZ2VD
b3VudCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJlbGVhc2VO
b25OdWxsKCksIEFTQ0lJTGl0ZXJhbCgiaW1hZ2UvdGlmZiIpKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcAppbmRleCBjOWEwZDJkZjdjNGQ5Y2IzMzdh
MGRlYjdjMGE5MzY1MTlhNGQ5ODU0Li40NjY1MGYwNWVhOGMyZDExOTJmZTJkZmE2Y2UxMTIzZmJi
ODQ3MDkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4u
Y3BwCkBAIC0xMDczLDcgKzEwNzMsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBh
c3RlYm9hcmRXZWJDb250ZW50JikKIHsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3Rl
Ym9hcmRXZWJDb250ZW50UmVhZGVyJikKK3ZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJk
V2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5KQogewogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvUGFzdGVib2FyZFdQRS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvUGFzdGVib2FyZFdQRS5jcHAKaW5kZXggMjQ3YWY1
NTEyYzZjMGFkMGRhMGVjN2YzMTAyOTA0MTYxYTBhNTg4YS4uMWViMmQyOWE1OGU5MGJiYzBlNGNh
NTg4Y2M2OGUxNjY0Y2VmYzMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
d3BlL1Bhc3RlYm9hcmRXUEUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9Q
YXN0ZWJvYXJkV1BFLmNwcApAQCAtOTcsNyArOTcsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQo
UGFzdGVib2FyZFBsYWluVGV4dCYgdGV4dCkKICAgICB0ZXh0LnRleHQgPSBwbGF0Zm9ybVN0cmF0
ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgw
LCAidGV4dC9wbGFpbjtjaGFyc2V0PXV0Zi04Iik7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVh
ZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYpCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFz
dGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSkKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9v
bHMvQ2hhbmdlTG9nCmluZGV4IDBlZmQ0NjA1YTRlZWNkOWFiZmRiNDdmZThkY2Y2MDlkZjUxZWYx
YWYuLjhhOGE3OTIyYmZlYWExZjcwMzA0OTZlMDI1MzM3ZDA1NjBhMzhhYjcgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAor
MjAxOC0wMi0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAg
ICAgICBQYXN0aW5nIGZyb20gRXhjZWwgbm8gbG9uZ2VyIHByb3ZpZGVzIHRleHQvaHRtbCBkYXRh
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI2MzYK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM3MDg3MDYwPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBuZXcgQVBJIHRlc3RzIHRvIGV4ZXJjaXNl
IHBhc3RpbmcgaW1hZ2VzIHdpdGggdmFyaW91cyBvdGhlciBjb250ZW50IHR5cGVzIG9uIG1hY09T
LCBhbmQgd2hlbiBkcm9wcGluZyBpbWFnZXMKKyAgICAgICAgYW5kIEhUTUwgbWFya3VwIG9uIGlP
Uy4gU2VlIHRoZSBXZWJDb3JlIENoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWwuCisKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RhdGFUcmFuc2Zlci5o
dG1sOiBBZGRlZC4KKworICAgICAgICBBZGQgYSBuZXcgQVBJIHRlc3QgaGFybmVzcyB0aGF0IGR1
bXBzIHZhcmlvdXMgYml0cyBvZiBpbmZvcm1hdGlvbiBhYm91dCBhIERhdGFUcmFuc2ZlciB1cG9u
IHBhc3RlIGFuZCBkcm9wLgorICAgICAgICBXaGlsZSBzb21ld2hhdCBzaW1pbGFyIHRvIHNvbWUg
ZXhpc3RpbmcgaGFybmVzc2VzLCB0aGlzIG1ha2VzIGEgZGlzdGluY3Rpb24gYmV0d2VlbiB0aGUg
cmF3IEhUTUwgZGF0YSBvbiB0aGUKKyAgICAgICAgcGFzdGVib2FyZCBhbmQgdGhlIGFjdHVhbCBy
ZXN1bHQgb2YgaW5zZXJ0aW5nIHNhaWQgSFRNTCBpbnRvIHRoZSBET00uIFRoaXMgYWxsb3dzIHVz
IHRvIGNoZWNrIHRoYXQgdGhlIEhUTUwgaGFzCisgICAgICAgIGJlZW4gc2FuaXRpemVkLCB3aGls
ZSBtYWtpbmcgY2hlY2tzIGZvciB0aGUgYWN0dWFsIGNvbnRlbnQgb2YgdGhlIEhUTUwgcm9idXN0
IGFnYWluc3QgaW5saW5lIHN0eWxlIGNoYW5nZXMuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSW1hZ2UubW06CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZU1peGVkQ29udGVudC5tbTogQWRkZWQuCisKKyAgICAg
ICAgQWRkIGEgbmV3IHRlc3Qgc3VpdGUgdG8gZXhlcmNpc2UgcGFzdGluZyBtaXhlZCBjb250ZW50
IHR5cGVzLiBJbiB0aGVzZSB0ZXN0IGNhc2VzLCB0aGUgcGFzdGVib2FyZCBjb250YWlucyBhCisg
ICAgICAgIGZpbGUsIHdpdGggc29tZSBjb21iaW5hdGlvbiBvZiBwbGFpbiB0ZXh0LCByaWNoIHRl
eHQsIGFuZCBVUkxzLgorCisgICAgICAgIChpbWFnZVBhdGgpOgorICAgICAgICAod3JpdGVUeXBl
c0FuZERhdGFUb1Bhc3RlYm9hcmQpOgorCisgICAgICAgIEFkZCBhIGhlbHBlciB0byB3cml0ZSBh
IHZhci1hcmcgbGlzdCBvZiBjb250ZW50IHR5cGVzIGFuZCBkYXRhIHRvIHRoZSBnZW5lcmFsIE5T
UGFzdGVib2FyZC4KKworICAgICAgICAoc2V0VXBXZWJWaWV3KToKKyAgICAgICAgKG1hcmt1cFN0
cmluZyk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5tbToKKyAgICAgICAgKFRlc3RX
ZWJLaXRBUEk6OnRlc3RJY29uSW1hZ2VEYXRhKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRF
U1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgorCisg
ICAgICAgIE1vdmUgYSBwcml2YXRlIGRlY2xhcmF0aW9uIG9mIC1bV0tXZWJWaWV3IHBhc3RlOl0g
b3V0IHRvIFRlc3RXS1dlYlZpZXcuaCwgc28gdGhhdCBpdCBjYW4gYmUgc2hhcmVkIGFjcm9zcwor
ICAgICAgICBtdWx0aXBsZSB0ZXN0cy4gQ3VycmVudGx5LCBpdCBvbmx5IHJlc2lkZXMgaW4gUGFz
dGVJbWFnZS5tbSwgYnV0IEkgbmVlZCBpdCBpbiBQYXN0ZU1peGVkQ29udGVudC5tbSBhcyB3ZWxs
LgorCiAyMDE4LTAyLTA4ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgVGhlcmUgc2hvdWxkIGJlIGEgd2F5IHRvIGRpc2FibGUgW092ZXJyaWRlQnVpbHRpbnNdIGJl
aGF2aW9yIGluIGEgZ2l2ZW4gRE9NV3JhcHBlcldvcmxkCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDNhZjhkMjRhMWRkYjdmZjFmZWZhOTI1OWE4YWI5MmY1NWNiODY2YmUuLmEyYzc1MTY4YzQz
ZTk3NzEyYTQ5NDM0YTA0ZTEwZmY3MWI5YTg0YWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC03NDEsNiArNzQxLDggQEAKIAkJRjQ0RDA2NEExRjM5NjJGMjAwMUEwRTI5IC8qIEVkaXRpbmdU
ZXN0SGFybmVzcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEY0NEQwNjQ5MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3MubW0gKi87
IH07CiAJCUY0NTEyRTEzMUY2MEM0NDYwMEJCMzY5RSAvKiBEYXRhVHJhbnNmZXJJdGVtLWdldEFz
RW50cnkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNDUxMkUxMjFGNjBDNDM0MDBCQjM2OUUgLyogRGF0YVRyYW5zZmVySXRlbS1nZXRB
c0VudHJ5Lmh0bWwgKi87IH07CiAJCUY0NTM4RUY3MUU4NDczRTYwMEI1Qzk1MyAvKiBsYXJnZS1y
ZWQtc3F1YXJlLnBuZyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNDUzOEVGMDFFODQ2QjQxMDBCNUM5NTMgLyogbGFyZ2UtcmVkLXNxdWFyZS5w
bmcgKi87IH07CisJCUY0NTdBOUI4MjAyRDVDREMwMEY3RTlENSAvKiBQYXN0ZU1peGVkQ29udGVu
dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NTdB
OUI2MjAyRDVDREMwMEY3RTlENSAvKiBQYXN0ZU1peGVkQ29udGVudC5tbSAqLzsgfTsKKwkJRjQ1
N0E5RDYyMDJENjhBRjAwRjdFOUQ1IC8qIERhdGFUcmFuc2Zlci5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NTdBOUIzMjAyRDUzNTMw
MEY3RTlENSAvKiBEYXRhVHJhbnNmZXIuaHRtbCAqLzsgfTsKIAkJRjQ1QjYzRkIxRjE5N0Y0QTAw
OUQzOEI5IC8qIGltYWdlLW1hcC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NUI2M0ZBMUYxOTdGMzMwMDlEMzhCOSAvKiBpbWFnZS1t
YXAuaHRtbCAqLzsgfTsKIAkJRjQ1QjYzRkUxRjE5RDQxMDAwOUQzOEI5IC8qIEFjdGlvblNoZWV0
VGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NDVCNjNGQzFGMTlENDEwMDA5RDM4QjkgLyogQWN0aW9uU2hlZXRUZXN0cy5tbSAqLzsgfTsKIAkJ
RjQ2ODQ5QkUxRUVGNThFNDAwQjkzN0ZFIC8qIFVJUGFzdGVib2FyZFRlc3RzLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2ODQ5QkQxRUVGNThFNDAw
QjkzN0ZFIC8qIFVJUGFzdGVib2FyZFRlc3RzLm1tICovOyB9OwpAQCAtODk0LDYgKzg5Niw3IEBA
CiAJCQkJRjRBQjU3OEExRjY1MTY1NDAwREIwREExIC8qIGN1c3RvbS1kcmFnZ2FibGUtZGl2Lmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMjkwRjQyNzUxNzJBMjIxQzAwOTM5RkYwIC8q
IGN1c3RvbS1wcm90b2NvbC1zeW5jLXhoci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CUY0ODZCMUQwMUY2Nzk1MjMwMEYzNEJERCAvKiBEYXRhVHJhbnNmZXItc2V0RHJhZ0ltYWdlLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJRjQ1N0E5RDYyMDJENjhBRjAwRjdFOUQ1IC8q
IERhdGFUcmFuc2Zlci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0NTEyRTEzMUY2
MEM0NDYwMEJCMzY5RSAvKiBEYXRhVHJhbnNmZXJJdGVtLWdldEFzRW50cnkuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQlDMDdFNkNCMjEzRkQ3MzkzMDAzOEIyMkIgLyogZGV2aWNlUGl4
ZWxSYXRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTA3OTlDMzRCMUVCQTMzMDEw
MDNCNzUzMiAvKiBkaXNhYmxlR2V0VXNlck1lZGlhLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CkBAIC0xODYyLDYgKzE4NjUsOCBAQAogCQlGNDREMDY0OTFGMzk2MkUzMDAxQTBFMjkgLyogRWRp
dGluZ1Rlc3RIYXJuZXNzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gRWRpdGluZ1Rlc3RIYXJuZXNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NDUxMkUxMjFGNjBDNDM0MDBCQjM2OUUgLyogRGF0YVRyYW5zZmVySXRlbS1nZXRBc0VudHJ5Lmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiRGF0YVRyYW5zZmVySXRlbS1nZXRBc0Vu
dHJ5Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDUzOEVGMDFFODQ2QjQx
MDBCNUM5NTMgLyogbGFyZ2UtcmVkLXNxdWFyZS5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSAibGFyZ2UtcmVkLXNx
dWFyZS5wbmciOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDU3QTlCMzIwMkQ1MzUz
MDBGN0U5RDUgLyogRGF0YVRyYW5zZmVyLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGgg
PSBEYXRhVHJhbnNmZXIuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ1N0E5
QjYyMDJENUNEQzAwRjdFOUQ1IC8qIFBhc3RlTWl4ZWRDb250ZW50Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUGFzdGVNaXhlZENvbnRlbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0NUI2M0ZBMUYxOTdGMzMwMDlEMzhCOSAvKiBpbWFnZS1tYXAuaHRtbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
ICJpbWFnZS1tYXAuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NUI2M0ZD
MUYxOUQ0MTAwMDlEMzhCOSAvKiBBY3Rpb25TaGVldFRlc3RzLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gQWN0aW9uU2hlZXRUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjQ2ODQ5QkQxRUVGNThFNDAwQjkzN0ZFIC8qIFVJUGFzdGVib2FyZFRlc3RzLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gVUlQYXN0ZWJvYXJkVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMTMwLDYgKzIxMzUsNyBAQAogCQkJCUNFQkNBMTJFMUUzQTY2MDEwMEM3MzI5
MyAvKiBPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeS5tbSAqLywKIAkJCQk5QkNCN0MyNjIw
MTMwNjAwMDAzRTdDMEMgLyogUGFzdGVIVE1MLm1tICovLAogCQkJCTlCRENDRDg1MUY3RDBCMDcw
MDAwOUExOCAvKiBQYXN0ZUltYWdlLm1tICovLAorCQkJCUY0NTdBOUI2MjAyRDVDREMwMEY3RTlE
NSAvKiBQYXN0ZU1peGVkQ29udGVudC5tbSAqLywKIAkJCQk5QkREOTU1NjFGODM2ODM2MDBEMjBD
NjAgLyogUGFzdGVSVEZELm1tICovLAogCQkJCTlCMjM0NjQxMUY5NDNBMjQwMERCMUQyMyAvKiBQ
YXN0ZVdlYkFyY2hpdmUubW0gKi8sCiAJCQkJM0ZDQzRGRTQxRUM0RTg1MjAwNzZFMzdDIC8qIFBp
Y3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5tbSAqLywKQEAgLTIzNjQsNiArMjM3MCw3IEBACiAJCQkJ
OUI2MjYzMEIxRjhDMjUxMDAwN0VFMjlCIC8qIGNvcHktdXJsLmh0bWwgKi8sCiAJCQkJRjRBQjU3
ODkxRjY1MTY0QjAwREIwREExIC8qIGN1c3RvbS1kcmFnZ2FibGUtZGl2Lmh0bWwgKi8sCiAJCQkJ
RjQ4NkIxQ0YxRjY3OTRGRjAwRjM0QkREIC8qIERhdGFUcmFuc2Zlci1zZXREcmFnSW1hZ2UuaHRt
bCAqLywKKwkJCQlGNDU3QTlCMzIwMkQ1MzUzMDBGN0U5RDUgLyogRGF0YVRyYW5zZmVyLmh0bWwg
Ki8sCiAJCQkJRjQ1MTJFMTIxRjYwQzQzNDAwQkIzNjlFIC8qIERhdGFUcmFuc2Zlckl0ZW0tZ2V0
QXNFbnRyeS5odG1sICovLAogCQkJCTA3OTlDMzRBMUVCQTMyRjQwMDNCNzUzMiAvKiBkaXNhYmxl
R2V0VXNlck1lZGlhLmh0bWwgKi8sCiAJCQkJNjNBNjFCOEExRkFEMjA0RDAwRjA2ODg1IC8qIGRp
c3BsYXktbW9kZS5odG1sICovLApAQCAtMzU1NSw2ICszNTYyLDcgQEAKIAkJCQk3Q0NFN0YwQTFB
NDExQUU2MDA0NDdDNEMgLyogUGFzdGVib2FyZE5vdGlmaWNhdGlvbnMubW0gaW4gU291cmNlcyAq
LywKIAkJCQk5QkNCN0MyODIwMTMwNjAwMDAzRTdDMEMgLyogUGFzdGVIVE1MLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJOUJEQ0NEODcxRjdEMEIwNzAwMDA5QTE4IC8qIFBhc3RlSW1hZ2UubW0gaW4g
U291cmNlcyAqLywKKwkJCQlGNDU3QTlCODIwMkQ1Q0RDMDBGN0U5RDUgLyogUGFzdGVNaXhlZENv
bnRlbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5QkREOTU1ODFGODM2ODM2MDBEMjBDNjAgLyog
UGFzdGVSVEZELm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOUIyMzQ2NDIxRjk0M0UyNzAwREIxRDIz
IC8qIFBhc3RlV2ViQXJjaGl2ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMDUzMUQwQTY0
M0EwMEZFQkNGMyAvKiBQZW5kaW5nQVBJUmVxdWVzdFVSTC5jcHAgaW4gU291cmNlcyAqLywKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGF0YVRyYW5z
ZmVyLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RhdGFUcmFu
c2Zlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5MWQ2MDYwMDE3YzMzOTI5NDMxMTM2Mjg5YmM2ZmQ0NDY3
MGM5N2IKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL0RhdGFUcmFuc2Zlci5odG1sCkBAIC0wLDAgKzEsNzcgQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdp
ZHRoLCBpbml0aWFsLXNjYWxlPTEiPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgICBib2R5
LCBodG1sIHsKKyAgICAgICAgICAgIHdpZHRoOiAxMDAlOworICAgICAgICAgICAgaGVpZ2h0OiAx
MDAlOworICAgICAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKKyAgICAgICAgfQorCisg
ICAgICAgIC5oZWFkaW5nIHsKKyAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOworICAgICAgICAg
ICAgd2lkdGg6IDEwMCU7CisgICAgICAgICAgICBib3JkZXItdG9wOiAycHggZ3JheSBkYXNoZWQ7
CisgICAgICAgICAgICBtYXJnaW4tdG9wOiAyMHB4OworICAgICAgICAgICAgYm94LXNpemluZzog
Ym9yZGVyLWJveDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD4KKyAgICAg
ICAgZnVuY3Rpb24gc2V0dXAoKQorICAgICAgICB7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5
LmFkZEV2ZW50TGlzdGVuZXIoInBhc3RlIiwgZXZlbnQgPT4geworICAgICAgICAgICAgICAgIGR1
bXBBc091dHB1dChldmVudC5jbGlwYm9hcmREYXRhKTsKKyAgICAgICAgICAgICAgICBldmVudC5w
cmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBkb2N1bWVudC5i
b2R5LmFkZEV2ZW50TGlzdGVuZXIoImRyb3AiLCBldmVudCA9PiB7CisgICAgICAgICAgICAgICAg
ZHVtcEFzT3V0cHV0KGV2ZW50LmRhdGFUcmFuc2Zlcik7CisgICAgICAgICAgICAgICAgZXZlbnQu
cHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgZG9jdW1lbnQu
Ym9keS5hZGRFdmVudExpc3RlbmVyKCJiZWZvcmVpbnB1dCIsIGV2ZW50ID0+IGV2ZW50LnByZXZl
bnREZWZhdWx0KCkpOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5mb2N1cygpOworICAgICAg
ICB9CisKKyAgICAgICAgZnVuY3Rpb24gZHVtcEFzT3V0cHV0KGRhdGFUcmFuc2ZlcikKKyAgICAg
ICAgeworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jb250ZW50RWRpdGFibGUgPSBmYWxzZTsK
KyAgICAgICAgICAgIHR5cGVzLnRleHRDb250ZW50ID0gZGF0YVRyYW5zZmVyLnR5cGVzLmpvaW4o
IiwgIik7CisgICAgICAgICAgICBpdGVtcy50ZXh0Q29udGVudCA9IEFycmF5LmZyb20oZGF0YVRy
YW5zZmVyLml0ZW1zKS5tYXAoaXRlbSA9PiBgKCR7aXRlbS5raW5kLnRvVXBwZXJDYXNlKCl9LCAk
e2l0ZW0udHlwZX0pYCkuam9pbigiLCAiKTsKKyAgICAgICAgICAgIGZpbGVzLnRleHRDb250ZW50
ID0gQXJyYXkuZnJvbShkYXRhVHJhbnNmZXIuZmlsZXMpLm1hcChmaWxlID0+IGAoJyR7ZmlsZS5u
YW1lfScsICR7ZmlsZS50eXBlfSlgKS5qb2luKCIsICIpOworICAgICAgICAgICAgdXJsRGF0YS50
ZXh0Q29udGVudCA9IGRhdGFUcmFuc2Zlci5nZXREYXRhKCJ0ZXh0L3VyaS1saXN0Iik7CisgICAg
ICAgICAgICB0ZXh0RGF0YS50ZXh0Q29udGVudCA9IGRhdGFUcmFuc2Zlci5nZXREYXRhKCJ0ZXh0
L3BsYWluIik7CisgICAgICAgICAgICBsZXQgbWFya3VwID0gZGF0YVRyYW5zZmVyLmdldERhdGEo
InRleHQvaHRtbCIpOworICAgICAgICAgICAgaHRtbERhdGEuaW5zZXJ0QWRqYWNlbnRIVE1MKCJi
ZWZvcmVlbmQiLCBtYXJrdXApOworICAgICAgICAgICAgcmF3SFRNTERhdGEudGV4dENvbnRlbnQg
PSBtYXJrdXA7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiByZXNldCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIEFycmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSgib3V0cHV0IikpLm1hcChlbGVtZW50ID0+IHsKKyAgICAgICAgICAgICAgICBlbGVtZW50Lmlu
bmVySFRNTCA9ICIiOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5
LmNvbnRlbnRFZGl0YWJsZSA9IHRydWU7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IGNvbnRlbnRlZGl0YWJsZSBvbmxvYWQ9c2V0dXAoKT4KKyAgICA8aDMgY2xhc3M9
ImhlYWRpbmciPlR5cGVzPC9oMz4KKyAgICA8ZGl2IGNsYXNzPSJvdXRwdXQiIGlkPSJ0eXBlcyI+
PC9kaXY+CisKKyAgICA8aDMgY2xhc3M9ImhlYWRpbmciPkl0ZW1zPC9oMz4KKyAgICA8ZGl2IGNs
YXNzPSJvdXRwdXQiIGlkPSJpdGVtcyI+PC9kaXY+CisKKyAgICA8aDMgY2xhc3M9ImhlYWRpbmci
PkZpbGVzPC9oMz4KKyAgICA8ZGl2IGNsYXNzPSJvdXRwdXQiIGlkPSJmaWxlcyI+PC9kaXY+CisK
KyAgICA8aDMgY2xhc3M9ImhlYWRpbmciPnRleHQvcGxhaW48L2gzPgorICAgIDxkaXYgY2xhc3M9
Im91dHB1dCIgaWQ9InRleHREYXRhIj48L2Rpdj4KKworICAgIDxoMyBjbGFzcz0iaGVhZGluZyI+
dGV4dC91cmktbGlzdDwvaDM+CisgICAgPGRpdiBjbGFzcz0ib3V0cHV0IiBpZD0idXJsRGF0YSI+
PC9kaXY+CisKKyAgICA8aDMgY2xhc3M9ImhlYWRpbmciPnRleHQvaHRtbDwvaDM+CisgICAgPGRp
diBjbGFzcz0ib3V0cHV0IiBpZD0iaHRtbERhdGEiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9Im91
dHB1dCIgaWQ9InJhd0hUTUxEYXRhIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVJbWFnZS5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVJbWFnZS5tbQppbmRl
eCBiMjI4OTZiNGE3ODlmMmM0ODA1MGNmMzBiYjg2ZDA1NGE2ZWUyNWI3Li44OWJjMDVhZTY3MGRj
YmM1ZDQ1NDgzZmJlN2FmYjk1ZjgyMjFmNDdjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSW1hZ2UubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUltYWdlLm1tCkBAIC0zNiwxMCArMzYsNiBAQAog
I2luY2x1ZGUgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KICNlbmRp
ZgogCi1AaW50ZXJmYWNlIFdLV2ViVmlldyAoKQotLSAodm9pZClwYXN0ZTooaWQpc2VuZGVyOwot
QGVuZAotCiAjaWYgUExBVEZPUk0oTUFDKQogdm9pZCB3cml0ZUltYWdlRGF0YVRvUGFzdGVib2Fy
ZChOU1N0cmluZyAqdHlwZSwgTlNEYXRhICpkYXRhKQogewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZU1peGVkQ29udGVudC5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVNaXhlZENvbnRlbnQubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTJmNzM5YTlmOGIwMzBlNzhiYjFmYjk3OTlkODIxYjAxYTRiNzUwYwotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVN
aXhlZENvbnRlbnQubW0KQEAgLTAsMCArMSwxOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpZiBQTEFURk9STShNQUMpICYmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBv
cnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1w
b3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1JlZi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVy
ZW5jZXNSZWZQcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0IDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworc3RhdGljIE5TU3RyaW5nICppbWFnZVBhdGgoKQorewor
ICAgIHJldHVybiBbW05TQnVuZGxlIG1haW5CdW5kbGVdIHBhdGhGb3JSZXNvdXJjZTpAImljb24i
IG9mVHlwZTpAInBuZyIgaW5EaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOwor
fQorCit2b2lkIHdyaXRlVHlwZXNBbmREYXRhVG9QYXN0ZWJvYXJkKGlkIHR5cGUsIC4uLikKK3sK
KyAgICBOU011dGFibGVBcnJheTxOU1N0cmluZyAqPiAqdHlwZXMgPSBbTlNNdXRhYmxlQXJyYXkg
YXJyYXldOworICAgIE5TTXV0YWJsZUFycmF5ICpkYXRhID0gW05TTXV0YWJsZUFycmF5IGFycmF5
XTsKKyAgICB2YV9saXN0IGFyZ3VtZW50TGlzdDsKKyAgICBpZiAodHlwZSkgeworICAgICAgICBB
U1NFUlQoW3R5cGUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgICAgIFt0
eXBlcyBhZGRPYmplY3Q6dHlwZV07CisgICAgICAgIHZhX3N0YXJ0KGFyZ3VtZW50TGlzdCwgdHlw
ZSk7CisgICAgICAgIE5TVUludGVnZXIgaW5kZXggPSAxOworICAgICAgICBpZCBvYmplY3QgPSB2
YV9hcmcoYXJndW1lbnRMaXN0LCBpZCk7CisgICAgICAgIHdoaWxlIChvYmplY3QpIHsKKyAgICAg
ICAgICAgIGlmIChpbmRleCAlIDIpCisgICAgICAgICAgICAgICAgW2RhdGEgYWRkT2JqZWN0Om9i
amVjdF07CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoW29iamVj
dCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsKKyAgICAgICAgICAgICAgICBbdHlw
ZXMgYWRkT2JqZWN0Om9iamVjdF07CisgICAgICAgICAgICB9CisgICAgICAgICAgICArK2luZGV4
OworICAgICAgICAgICAgb2JqZWN0ID0gdmFfYXJnKGFyZ3VtZW50TGlzdCwgaWQpOworICAgICAg
ICB9CisgICAgICAgIHZhX2VuZChhcmd1bWVudExpc3QpOworICAgIH0KKworICAgIGlmICh0eXBl
cy5jb3VudCAhPSBkYXRhLmNvdW50KSB7CisgICAgICAgIE5TTG9nKEAiRXhwZWN0ZWQgbnVtYmVy
IG9mIHR5cGVzOiAldHUgdG8gbWF0Y2ggbnVtYmVyIG9mIGRhdGEgaXRlbXM6ICV0dSIsIHR5cGVz
LmNvdW50LCBkYXRhLmNvdW50KTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2Fy
ZF0gZGVjbGFyZVR5cGVzOnR5cGVzIG93bmVyOm5pbF07CisgICAgW3R5cGVzIGVudW1lcmF0ZU9i
amVjdHNVc2luZ0Jsb2NrOlsmXSAoTlNTdHJpbmcgKnR5cGUsIE5TVUludGVnZXIgaW5kZXgsIEJP
T0wgKikgeworICAgICAgICBpZCBkYXRhVG9Xcml0ZSA9IGRhdGFbaW5kZXhdOworICAgICAgICBp
ZiAoW2RhdGFUb1dyaXRlIGlzS2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dKQorICAgICAgICAg
ICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNldERhdGE6ZGF0YVRvV3JpdGUg
Zm9yVHlwZTp0eXBlXTsKKyAgICAgICAgZWxzZSBpZiAoW2RhdGFUb1dyaXRlIGlzS2luZE9mQ2xh
c3M6W05TU3RyaW5nIGNsYXNzXV0pCisgICAgICAgICAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFs
UGFzdGVib2FyZF0gc2V0U3RyaW5nOmRhdGFUb1dyaXRlIGZvclR5cGU6dHlwZV07CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBzZXRQ
cm9wZXJ0eUxpc3Q6ZGF0YVRvV3JpdGUgZm9yVHlwZTp0eXBlXTsKKyAgICB9XTsKK30KKworc3Rh
dGljIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBzZXRVcFdlYlZpZXcoKQoreworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgV0tQcmVmZXJlbmNlc1NldEN1c3RvbVBh
c3RlYm9hcmREYXRhRW5hYmxlZCgoV0tQcmVmZXJlbmNlc1JlZilbd2ViVmlldyBjb25maWd1cmF0
aW9uXS5wcmVmZXJlbmNlcywgdHJ1ZSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRU
ZXN0UGFnZU5hbWVkOkAiRGF0YVRyYW5zZmVyIl07CisgICAgcmV0dXJuIHdlYlZpZXc7Cit9CisK
K3N0YXRpYyBOU1N0cmluZyAqbWFya3VwU3RyaW5nKCkKK3sKKyAgICAvLyBUaGUgc2NyaXB0IHRh
ZyBhbmQgbW91c2VvdmVyIGxpc3RlbmVyIGF0dHJpYnV0ZSBpbiB0aGUgbWFya3VwIHN0cmluZyBi
ZWxvdyBzaG91bGQgYmUgb21pdHRlZCBkdXJpbmcKKyAgICAvLyBzYW5pdGl6YXRpb24gd2hpbGUg
cGFzdGluZy4KKyAgICByZXR1cm4gQCI8c2NyaXB0PmZvbygpPC9zY3JpcHQ+PHN0cm9uZyBvbm1v
dXNlb3Zlcj0namF2YXNjcmlwdDp2b2lkKDApJz5IRUxMTyBXT1JMRDwvc3Ryb25nPiI7Cit9CisK
K25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChQYXN0ZU1peGVkQ29udGVudCwgSW1h
Z2VGaWxlQW5kUGxhaW5UZXh0KQoreworICAgIGF1dG8gd2ViVmlldyA9IHNldFVwV2ViVmlldygp
OworICAgIHdyaXRlVHlwZXNBbmREYXRhVG9QYXN0ZWJvYXJkKE5TRmlsZW5hbWVzUGJvYXJkVHlw
ZSwgQFsgaW1hZ2VQYXRoKCkgXSwgTlNQYXN0ZWJvYXJkVHlwZVN0cmluZywgaW1hZ2VQYXRoKCks
IG5pbCk7CisgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKKworICAgIEVYUEVDVF9XS19TVFJFUSgi
RmlsZXMiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidHlwZXMudGV4
dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIoRklMRSwgaW1hZ2UvcG5nKSIsIFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpdGVtcy50ZXh0Q29udGVudCJd
KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIignaWNvbi5wbmcnLCBpbWFnZS9wbmcpIiwgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImZpbGVzLnRleHRDb250ZW50Il0pOwor
ICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAInVybERhdGEudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidGV4dERhdGEudGV4dENvbnRl
bnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiaHRtbERhdGEudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NU
UkVRKCIiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicmF3SFRNTERh
dGEudGV4dENvbnRlbnQiXSk7Cit9CisKK1RFU1QoUGFzdGVNaXhlZENvbnRlbnQsIEltYWdlRmls
ZUFuZFdlYkFyY2hpdmUpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3KCk7Cisg
ICAgTlNVUkwgKm1haW5SZXNvdXJjZVVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6QCIvc29t
ZS9ub25leGlzdGVudC9maWxlLmh0bWwiXTsKKyAgICBhdXRvIG1haW5SZXNvdXJjZSA9IGFkb3B0
TlMoW1tXZWJSZXNvdXJjZSBhbGxvY10gaW5pdFdpdGhEYXRhOlttYXJrdXBTdHJpbmcoKSBkYXRh
VXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gVVJMOm1haW5SZXNvdXJjZVVSTCBN
SU1FVHlwZTpAInRleHQvaHRtbCIgdGV4dEVuY29kaW5nTmFtZTpAInV0Zi04IiBmcmFtZU5hbWU6
bmlsXSk7CisgICAgYXV0byBhcmNoaXZlID0gYWRvcHROUyhbW1dlYkFyY2hpdmUgYWxsb2NdIGlu
aXRXaXRoTWFpblJlc291cmNlOm1haW5SZXNvdXJjZS5nZXQoKSBzdWJyZXNvdXJjZXM6bmlsIHN1
YmZyYW1lQXJjaGl2ZXM6bmlsXSk7CisgICAgd3JpdGVUeXBlc0FuZERhdGFUb1Bhc3RlYm9hcmQo
TlNGaWxlbmFtZXNQYm9hcmRUeXBlLCBAWyBpbWFnZVBhdGgoKSBdLCBXZWJBcmNoaXZlUGJvYXJk
VHlwZSwgW2FyY2hpdmUgZGF0YV0sIG5pbCk7CisgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKKwor
ICAgIEVYUEVDVF9XS19TVFJFUSgidGV4dC9odG1sLCBGaWxlcyIsIFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0eXBlcy50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoIihTVFJJTkcsIHRleHQvaHRtbCksIChGSUxFLCBpbWFnZS9wbmcpIiwgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIml0ZW1zLnRleHRDb250ZW50Il0pOwor
ICAgIEVYUEVDVF9XS19TVFJFUSgiKCdpY29uLnBuZycsIGltYWdlL3BuZykiLCBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZmlsZXMudGV4dENvbnRlbnQiXSk7CisgICAg
RVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAidXJsRGF0YS50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0ZXh0RGF0YS50ZXh0Q29udGVudCJd
KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkhFTExPIFdPUkxEIiwgW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImh0bWxEYXRhLnRleHRDb250ZW50Il0pOworICAgIEVYUEVD
VF9GQUxTRShbW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInJhd0hUTUxE
YXRhLnRleHRDb250ZW50Il0gY29udGFpbnNTdHJpbmc6QCJzY3JpcHQiXSk7Cit9CisKK1RFU1Qo
UGFzdGVNaXhlZENvbnRlbnQsIEltYWdlRmlsZUFuZEhUTUwpCit7CisgICAgYXV0byB3ZWJWaWV3
ID0gc2V0VXBXZWJWaWV3KCk7CisgICAgd3JpdGVUeXBlc0FuZERhdGFUb1Bhc3RlYm9hcmQoTlNG
aWxlbmFtZXNQYm9hcmRUeXBlLCBAWyBpbWFnZVBhdGgoKSBdLCBOU1Bhc3RlYm9hcmRUeXBlSFRN
TCwgbWFya3VwU3RyaW5nKCksIG5pbCk7CisgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKKworICAg
IEVYUEVDVF9XS19TVFJFUSgidGV4dC9odG1sLCBGaWxlcyIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJ0eXBlcy50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoIihTVFJJTkcsIHRleHQvaHRtbCksIChGSUxFLCBpbWFnZS9wbmcpIiwgW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIml0ZW1zLnRleHRDb250ZW50Il0pOworICAg
IEVYUEVDVF9XS19TVFJFUSgiKCdpY29uLnBuZycsIGltYWdlL3BuZykiLCBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZmlsZXMudGV4dENvbnRlbnQiXSk7CisgICAgRVhQ
RUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAi
dXJsRGF0YS50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIFt3ZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0ZXh0RGF0YS50ZXh0Q29udGVudCJdKTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoIkhFTExPIFdPUkxEIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImh0bWxEYXRhLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9G
QUxTRShbW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInJhd0hUTUxEYXRh
LnRleHRDb250ZW50Il0gY29udGFpbnNTdHJpbmc6QCJzY3JpcHQiXSk7Cit9CisKK1RFU1QoUGFz
dGVNaXhlZENvbnRlbnQsIEltYWdlRmlsZUFuZFJURikKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBz
ZXRVcFdlYlZpZXcoKTsKKyAgICBhdXRvIHRleHQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmli
dXRlZFN0cmluZyBhbGxvY10gaW5pdF0pOworICAgIFt0ZXh0IGFwcGVuZEF0dHJpYnV0ZWRTdHJp
bmc6W1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAibGluayB0byAi
XV07CisgICAgW3RleHQgYXBwZW5kQXR0cmlidXRlZFN0cmluZzpbW05TQXR0cmlidXRlZFN0cmlu
ZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJhcHBsZSIgYXR0cmlidXRlczpAeyBOU0xpbmtBdHRy
aWJ1dGVOYW1lOiBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd3d3LmFwcGxlLmNvbS8i
XSB9XV07CisgICAgTlNEYXRhICpydGZEYXRhID0gW3RleHQgUlRGRnJvbVJhbmdlOk5TTWFrZVJh
bmdlKDAsIFt0ZXh0IGxlbmd0aF0pIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XTsKKyAgICB3cml0
ZVR5cGVzQW5kRGF0YVRvUGFzdGVib2FyZChOU0ZpbGVuYW1lc1Bib2FyZFR5cGUsIEBbIGltYWdl
UGF0aCgpIF0sIE5TUGFzdGVib2FyZFR5cGVSVEYsIHJ0ZkRhdGEsIG5pbCk7CisgICAgW3dlYlZp
ZXcgcGFzdGU6bmlsXTsKKworICAgIEVYUEVDVF9XS19TVFJFUSgidGV4dC9odG1sLCBGaWxlcyIs
IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0eXBlcy50ZXh0Q29udGVu
dCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIihTVFJJTkcsIHRleHQvaHRtbCksIChGSUxFLCBp
bWFnZS9wbmcpIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIml0ZW1z
LnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiKCdpY29uLnBuZycsIGltYWdl
L3BuZykiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZmlsZXMudGV4
dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAidXJsRGF0YS50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoIiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0ZXh0
RGF0YS50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImxpbmsgdG8gYXBwbGUi
LCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaHRtbERhdGEudGV4dENv
bnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJodHRwczovL3d3dy5hcHBsZS5jb20vIiwg
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImh0bWxEYXRhLnF1ZXJ5U2Vs
ZWN0b3IoJ2EnKS5ocmVmIl0pOworfQorCitURVNUKFBhc3RlTWl4ZWRDb250ZW50LCBJbWFnZUZp
bGVBbmRVUkwpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3KCk7CisgICAgd3Jp
dGVUeXBlc0FuZERhdGFUb1Bhc3RlYm9hcmQoTlNVUkxQYm9hcmRUeXBlLCBAImh0dHBzOi8vd3d3
LndlYmtpdC5vcmcvIiwgTlNGaWxlbmFtZXNQYm9hcmRUeXBlLCBAWyBpbWFnZVBhdGgoKSBdLCBu
aWwpOworICAgIFt3ZWJWaWV3IHBhc3RlOm5pbF07CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoInRl
eHQvdXJpLWxpc3QsIEZpbGVzIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlw
dDpAInR5cGVzLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiKFNUUklORywg
dGV4dC91cmktbGlzdCksIChGSUxFLCBpbWFnZS9wbmcpIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAIml0ZW1zLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19T
VFJFUSgiKCdpY29uLnBuZycsIGltYWdlL3BuZykiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAiZmlsZXMudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVR
KCJodHRwczovL3d3dy53ZWJraXQub3JnLyIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJ1cmxEYXRhLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgi
IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInRleHREYXRhLnRleHRD
b250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImh0bWxEYXRhLnRleHRDb250ZW50Il0pOworfQorCitURVNUKFBh
c3RlTWl4ZWRDb250ZW50LCBJbWFnZUZpbGVXaXRoSFRNTEFuZFVSTCkKK3sKKyAgICBhdXRvIHdl
YlZpZXcgPSBzZXRVcFdlYlZpZXcoKTsKKyAgICB3cml0ZVR5cGVzQW5kRGF0YVRvUGFzdGVib2Fy
ZChOU1VSTFBib2FyZFR5cGUsIEAiaHR0cHM6Ly93d3cud2Via2l0Lm9yZy8iLCBOU1Bhc3RlYm9h
cmRUeXBlSFRNTCwgbWFya3VwU3RyaW5nKCksIE5TRmlsZW5hbWVzUGJvYXJkVHlwZSwgQFsgaW1h
Z2VQYXRoKCkgXSwgbmlsKTsKKyAgICBbd2ViVmlldyBwYXN0ZTpuaWxdOworCisgICAgRVhQRUNU
X1dLX1NUUkVRKCJ0ZXh0L3VyaS1saXN0LCB0ZXh0L2h0bWwsIEZpbGVzIiwgW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInR5cGVzLnRleHRDb250ZW50Il0pOworICAgIEVY
UEVDVF9XS19TVFJFUSgiKFNUUklORywgdGV4dC91cmktbGlzdCksIChTVFJJTkcsIHRleHQvaHRt
bCksIChGSUxFLCBpbWFnZS9wbmcpIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAIml0ZW1zLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiKCdpY29u
LnBuZycsIGltYWdlL3BuZykiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAiZmlsZXMudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJodHRwczovL3d3
dy53ZWJraXQub3JnLyIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ1
cmxEYXRhLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInRleHREYXRhLnRleHRDb250ZW50Il0pOwor
ICAgIEVYUEVDVF9XS19TVFJFUSgiSEVMTE8gV09STEQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiaHRtbERhdGEudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX0ZB
TFNFKFtbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicmF3SFRNTERhdGEu
dGV4dENvbnRlbnQiXSBjb250YWluc1N0cmluZzpAInNjcmlwdCJdKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSAmJiBXS19BUElf
RU5BQkxFRApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUlu
dGVyYWN0aW9uVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50
ZXJhY3Rpb25UZXN0cy5tbQppbmRleCA0MDg1ZmFiOWNhNWMyZjcwOWEwZWY4ZWRmYWU2NjYwNDdk
OTQ3Nzc1Li42YjY3MDRlYjIzZWNiYTJhNDFkMGVmOWM2ZmEwOWZlNjViY2ExNDZlIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0cy5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0
cy5tbQpAQCAtMTQ5OSw2ICsxNDk5LDM1IEBAIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMsIERy
YWdMaWZ0UHJldmlld0RhdGFUcmFuc2ZlclNldERyYWdJbWFnZSkKIAogI2lmIF9fSVBIT05FX09T
X1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDMwMAogCitzdGF0aWMgTlNEYXRhICp0ZXN0SWNv
bkltYWdlRGF0YSgpCit7CisgICAgcmV0dXJuIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09mRmls
ZTpbW05TQnVuZGxlIG1haW5CdW5kbGVdIHBhdGhGb3JSZXNvdXJjZTpAImljb24iIG9mVHlwZTpA
InBuZyIgaW5EaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKK30KKworVEVT
VChEYXRhSW50ZXJhY3Rpb25UZXN0cywgRGF0YVRyYW5zZmVyR2V0RGF0YVdoZW5Ecm9wcGluZ0lt
YWdlQW5kTWFya3VwKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7Cisg
ICAgV0tQcmVmZXJlbmNlc1NldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgoV0tQcmVmZXJl
bmNlc1JlZilbd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcmVmZXJlbmNlcywgdHJ1ZSk7CisgICAg
W3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiRGF0YVRyYW5zZmVyIl07
CisKKyAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEYXRhSW50ZXJhY3Rpb25TaW11bGF0
b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CisgICAgYXV0byBpdGVt
UHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAgICBb
aXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6
KE5TU3RyaW5nICopa1VUVHlwZVBORyB3aXRoRGF0YTp0ZXN0SWNvbkltYWdlRGF0YSgpXTsKKyAg
ICBOU1N0cmluZyAqbWFya3VwU3RyaW5nID0gQCI8c2NyaXB0PmJhcigpPC9zY3JpcHQ+PHN0cm9u
ZyBvbm1vdXNlZG93bj1qYXZhc2NyaXB0OnZvaWQoMCk+SEVMTE8gV09STEQ8L3N0cm9uZz4iOwor
ICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRlbnRp
ZmllcjooTlNTdHJpbmcgKilrVVRUeXBlSFRNTCB3aXRoRGF0YTpbbWFya3VwU3RyaW5nIGRhdGFV
c2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CisgICAgW2l0ZW1Qcm92aWRlciBz
ZXRTdWdnZXN0ZWROYW1lOkAiaWNvbiJdOworICAgIFtzaW11bGF0b3Igc2V0RXh0ZXJuYWxJdGVt
UHJvdmlkZXJzOkBbIGl0ZW1Qcm92aWRlci5nZXQoKSBdXTsKKyAgICBbc2ltdWxhdG9yIHJ1bkZy
b206Q0dQb2ludFplcm8gdG86Q0dQb2ludE1ha2UoNTAsIDEwMCldOworCisgICAgRVhQRUNUX1dL
X1NUUkVRKCJ0ZXh0L2h0bWwsIEZpbGVzIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAInR5cGVzLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiKFNU
UklORywgdGV4dC9odG1sKSwgKEZJTEUsIGltYWdlL3BuZykiLCBbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAiaXRlbXMudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dL
X1NUUkVRKCIoJ2ljb24ucG5nJywgaW1hZ2UvcG5nKSIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVh
dGluZ0phdmFTY3JpcHQ6QCJmaWxlcy50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoIiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ1cmxEYXRhLnRl
eHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAInRleHREYXRhLnRleHRDb250ZW50Il0pOworICAgIEVYUEVD
VF9XS19TVFJFUSgiSEVMTE8gV09STEQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiaHRtbERhdGEudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX0ZBTFNFKFtbd2Vi
VmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicmF3SFRNTERhdGEudGV4dENvbnRl
bnQiXSBjb250YWluc1N0cmluZzpAInNjcmlwdCJdKTsKK30KKwogVEVTVChEYXRhSW50ZXJhY3Rp
b25UZXN0cywgRGF0YVRyYW5zZmVyR2V0RGF0YVdoZW5Ecm9wcGluZ1BsYWluVGV4dCkKIHsKICAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3RXS1dlYlZpZXcuaAppbmRleCBkYWEzYjI2ZDY2YjhlODkwMTcwNGNiNTlmNWYxNzQx
MDE3ZDAxY2RlLi45MDhlMDUyYjNhMWMyOWJkN2U1YWI3OTJlMGQ4ZjhjNDU2MzBkZGFhIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaApAQCAtMzQsNiArMzQsMTIg
QEAKIEBjbGFzcyBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbzsKICNlbmRpZgogCitAaW50ZXJmYWNl
IFdLV2ViVmlldyAoQWRkaXRpb25hbERlY2xhcmF0aW9ucykKKyNpZiBQTEFURk9STShNQUMpCist
ICh2b2lkKXBhc3RlOihpZClzZW5kZXI7CisjZW5kaWYKK0BlbmQKKwogQGludGVyZmFjZSBUZXN0
TWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KIC0gKHZv
aWQpYWRkTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIHdpdGhIYW5kbGVyOihkaXNwYXRjaF9i
bG9ja190KWhhbmRsZXI7CiBAZW5kCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjVjZDNiODdmYWJhMzA4YmI4MDUxZTVmZjU2
ZDQ2MDJjZTk2ZDJhZi4uMzYzZTFlNjEzNGJhMWY5MjNhZmYwZTg4ZmJhNjE2NzY1MWMzZjZiZiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE4LTAyLTA4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25f
aHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFBhc3RpbmcgZnJvbSBFeGNlbCBubyBsb25nZXIg
cHJvdmlkZXMgdGV4dC9odG1sIGRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE4MjYzNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzcwODcwNjA+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmViYXNl
bGluZSBzb21lIGV4aXN0aW5nIGxheW91dCB0ZXN0cy4gV2Ugbm93IGV4cG9zZSAidGV4dC9odG1s
IiBhbG9uZ3NpZGUgIkZpbGVzIiBvbiBEYXRhVHJhbnNmZXIudHlwZXMoKSBpbgorICAgICAgICBz
b21lIGNpcmN1bXN0YW5jZXMuIFRoaXMgYWxzbyBwcm92aWRlcyBzb21lIHRlc3QgY292ZXJhZ2Ug
Zm9yIGVuc3VyaW5nIHRoYXQgdGhlIHBhc3RlIGNvZGVwYXRoIGlPUyBhbGxvd3MgdGhlCisgICAg
ICAgIHBhZ2UgdG8gcmVxdWVzdCBIVE1MLCBldmVuIGlmIHRoZXJlIGFyZSBmaWxlcyBvbiB0aGUg
cGFzdGVib2FyZC4gU2VlIHRoZSBXZWJDb3JlIENoYW5nZUxvZyBmb3IgbW9yZSBkZXRhaWwuCisK
KyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRk
LWZpbGUtbXVsdGlwbGUtdGltZXMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvcGFz
dGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1jb3B5LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxp
c3QtYWRkLWZpbGUtb24tZHJhZy1leHBlY3RlZC50eHQ6CisKKyAgICAgICAgQWRqdXN0IHRlc3Qg
ZXhwZWN0YXRpb25zIGZvciB0aGUgYWRkaXRpb25hbCAidGV4dC9odG1sIiB0eXBlLgorCisgICAg
ICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLWRvZXMtbm90LXJldmVhbC1maWxl
LXVybC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWlt
YWdlLWRvZXMtbm90LXJldmVhbC1maWxlLXVybC5odG1sOgorCisgICAgICAgIEluc3RlYWQgb2Yg
Y2hlY2tpbmcgdGhhdCB0eXBlcyBpcyBbICJGaWxlcyIgXSwganVzdCBjaGVjayB0aGF0IHR5cGVz
IGNvbnRhaW5zICJGaWxlcyIuIE9uIGlPUywgY29weWluZyBhCisgICAgICAgIHNlbGVjdGVkIGlt
YWdlIGRvZXMgbm90IGFsc28gY29weSBIVE1MLCBidXQgb24gbWFjT1MgaXQgZG9lczsgdGhpcyBj
b3ZlcnMgYm90aCBjYXNlcy4KKwogMjAxOC0wMi0wOCAgTWF0dCBMZXdpcyAgPGpsZXdpczNAYXBw
bGUuY29tPgogCiAgICAgICAgIE1hcmtlZCBtZWRpYS9XM0MvdmlkZW8vZXZlbnRzL2V2ZW50X3By
b2dyZXNzX21hbnVhbC5odG1sIGFzIGZsYWt5IG9uIG1hY09TIFdLMi4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQt
ZmlsZS1tdWx0aXBsZS10aW1lcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtbXVsdGlwbGUtdGltZXMt
ZXhwZWN0ZWQudHh0CmluZGV4IDFmODBjNTlkYzljYjYyZDcyZWM5YTA0NTAzNmRmNTU2NDlhZDQ3
ODYuLjZlZjEwMzg0YzFhYTcwZDU0ZWEzN2MyYjhiYzRiZTkzYjgzOTNjMWEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1h
ZGQtZmlsZS1tdWx0aXBsZS10aW1lcy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW11bHRpcGxl
LXRpbWVzLWV4cGVjdGVkLnR4dApAQCAtMjQ3LDcgKzI0Nyw4IEBAIHJlbW92ZWRJdGVtLmdldEFz
RmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCiA2LiBBZnRlciBhZGRpbmcgdHdvIGZpbGVzIGFu
ZCBzb21lIHN0cmluZyBkYXRhIGFnYWluCiB7CiAgICAgImRhdGEiOiB7Ci0gICAgICAgICJGaWxl
cyI6ICIiCisgICAgICAgICJGaWxlcyI6ICIiLAorICAgICAgICAidGV4dC9odG1sIjogIjxzdHJv
bmc+c29tZSBzdHlsZWQgdGV4dDwvc3Ryb25nPiIKICAgICB9LAogICAgICJpdGVtcyI6IFsKICAg
ICAgICAgewpAQCAtMjk2LDcgKzI5Nyw4IEBAIHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3Vs
ZCBiZSBudWxsOiBudWxsCiA3LiBBZnRlciByZW1vdmluZyBhdCBpbmRleCAyCiB7CiAgICAgImRh
dGEiOiB7Ci0gICAgICAgICJGaWxlcyI6ICIiCisgICAgICAgICJGaWxlcyI6ICIiLAorICAgICAg
ICAidGV4dC9odG1sIjogIjxzdHJvbmc+c29tZSBzdHlsZWQgdGV4dDwvc3Ryb25nPiIKICAgICB9
LAogICAgICJpdGVtcyI6IFsKICAgICAgICAgewpAQCAtMzQxLDcgKzM0Myw4IEBAIHJlbW92ZWRJ
dGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCiA4LiBBZnRlciByZW1vdmluZyBh
dCBpbmRleCAyCiB7CiAgICAgImRhdGEiOiB7Ci0gICAgICAgICJGaWxlcyI6ICIiCisgICAgICAg
ICJGaWxlcyI6ICIiLAorICAgICAgICAidGV4dC9odG1sIjogIjxzdHJvbmc+c29tZSBzdHlsZWQg
dGV4dDwvc3Ryb25nPiIKICAgICB9LAogICAgICJpdGVtcyI6IFsKICAgICAgICAgewpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1s
aXN0LWFkZC1maWxlLW9uLWNvcHktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWNvcHktZXhwZWN0
ZWQudHh0CmluZGV4IGZmZGY2N2NhZWQxYjExNzhjNDJmOGM1ZDAwYjU5NTQ3NzFlNmNlOWIuLjI5
YmM5NDlhNDg5Y2VmOTllZDE2Y2I4ZjQwMjZhODk2MjVmMGQzZDEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmls
ZS1vbi1jb3B5LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tY29weS1leHBlY3RlZC50eHQK
QEAgLTEyOSw3ICsxMjksOCBAQCByZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVs
bDogbnVsbAogNS4gQWZ0ZXIgYWRkaW5nIGFuIEhUTUwgc3RyaW5nCiB7CiAgICAgImRhdGEiOiB7
Ci0gICAgICAgICJGaWxlcyI6ICIiCisgICAgICAgICJGaWxlcyI6ICIiLAorICAgICAgICAidGV4
dC9odG1sIjogIjxhPmdvb2RieWUgd29ybGQ8L2E+IgogICAgIH0sCiAgICAgIml0ZW1zIjogWwog
ICAgICAgICB7CkBAIC0xNjQsNyArMTY1LDggQEAgcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hv
dWxkIGJlIG51bGw6IG51bGwKIDYuIEFmdGVyIGFkZGluZyBhbm90aGVyIHBsYWluIHRleHQgZmls
ZQogewogICAgICJkYXRhIjogewotICAgICAgICAiRmlsZXMiOiAiIgorICAgICAgICAiRmlsZXMi
OiAiIiwKKyAgICAgICAgInRleHQvaHRtbCI6ICI8YT5nb29kYnllIHdvcmxkPC9hPiIKICAgICB9
LAogICAgICJpdGVtcyI6IFsKICAgICAgICAgewpAQCAtMjEzLDcgKzIxNSw4IEBAIHJlbW92ZWRJ
dGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCiA3LiBBZnRlciByZW1vdmluZyB0
aGUgY3VzdG9tIGZpbGUKIHsKICAgICAiZGF0YSI6IHsKLSAgICAgICAgIkZpbGVzIjogIiIKKyAg
ICAgICAgIkZpbGVzIjogIiIsCisgICAgICAgICJ0ZXh0L2h0bWwiOiAiPGE+Z29vZGJ5ZSB3b3Js
ZDwvYT4iCiAgICAgfSwKICAgICAiaXRlbXMiOiBbCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQt
ZmlsZS1vbi1kcmFnLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1kcmFnLWV4cGVjdGVkLnR4dApp
bmRleCA3YWRhNjU0MTkzZmRlMGRhNWZmYjhhNzY1ZjFiMGE4MTY1OTk2NWMxLi4wN2MwNmNjZGU1
ZGVmMzk1NDFiZTg5YTA4ODM3MzllODlkOGY1ODYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tZHJh
Zy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEt
dHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWRyYWctZXhwZWN0ZWQudHh0CkBAIC0xMjks
NyArMTI5LDggQEAgcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6IG51bGwK
IDUuIEFmdGVyIGFkZGluZyBhbiBIVE1MIHN0cmluZwogewogICAgICJkYXRhIjogewotICAgICAg
ICAiRmlsZXMiOiAiIgorICAgICAgICAiRmlsZXMiOiAiIiwKKyAgICAgICAgInRleHQvaHRtbCI6
ICI8YT5nb29kYnllIHdvcmxkPC9hPiIKICAgICB9LAogICAgICJpdGVtcyI6IFsKICAgICAgICAg
ewpAQCAtMTY0LDcgKzE2NSw4IEBAIHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBu
dWxsOiBudWxsCiA2LiBBZnRlciBhZGRpbmcgYW5vdGhlciBwbGFpbiB0ZXh0IGZpbGUKIHsKICAg
ICAiZGF0YSI6IHsKLSAgICAgICAgIkZpbGVzIjogIiIKKyAgICAgICAgIkZpbGVzIjogIiIsCisg
ICAgICAgICJ0ZXh0L2h0bWwiOiAiPGE+Z29vZGJ5ZSB3b3JsZDwvYT4iCiAgICAgfSwKICAgICAi
aXRlbXMiOiBbCiAgICAgICAgIHsKQEAgLTIxMyw3ICsyMTUsOCBAQCByZW1vdmVkSXRlbS5nZXRB
c0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogbnVsbAogNy4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIGN1c3Rv
bSBmaWxlCiB7CiAgICAgImRhdGEiOiB7Ci0gICAgICAgICJGaWxlcyI6ICIiCisgICAgICAgICJG
aWxlcyI6ICIiLAorICAgICAgICAidGV4dC9odG1sIjogIjxhPmdvb2RieWUgd29ybGQ8L2E+Igog
ICAgIH0sCiAgICAgIml0ZW1zIjogWwogICAgICAgICB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtaW1hZ2UtZG9lcy1ub3QtcmV2ZWFsLWZpbGUtdXJs
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1pbWFn
ZS1kb2VzLW5vdC1yZXZlYWwtZmlsZS11cmwtZXhwZWN0ZWQudHh0CmluZGV4IGRmNjRiMDEwZTli
OGE2ODZmYjY4YmM2YjFkYjUwNzE0ZjI5NDVjZGEuLjBiNDE2Y2M2N2ZjYThmMWQyMDM5N2E5ZTkw
ZjBiNzc1ZGFkNDhlZDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9wYXN0ZS1pbWFnZS1kb2VzLW5vdC1yZXZlYWwtZmlsZS11cmwtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1pbWFnZS1kb2VzLW5vdC1yZXZl
YWwtZmlsZS11cmwtZXhwZWN0ZWQudHh0CkBAIC0zLDcgKzMsNyBAQCBUZXN0cyB0aGF0IHBhc3Rp
bmcgaW1hZ2VzIGRvIG5vdCByZXZlYWwgaXRzIGZpbGUgVVJMLiBUbyBtYW51YWxseSB0ZXN0LCBj
b3B5IHRoZQogT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCiAKLVBBU1MgSlNPTi5zdHJpbmdp
ZnkoZXZlbnQuY2xpcGJvYXJkRGF0YS50eXBlcykgaXMgIltcIkZpbGVzXCJdIgorUEFTUyBldmVu
dC5jbGlwYm9hcmREYXRhLnR5cGVzLmluZGV4T2YoIkZpbGVzIikgaXMgbm90IC0xCiBQQVNTIGV2
ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgidXJsIikgaXMgIiIKIFBBU1MgZXZlbnQuY2xpcGJv
YXJkRGF0YS5nZXREYXRhKCJ0ZXh0L3BsYWluIikgaXMgIiIKIFBBU1MgZXZlbnQuY2xpcGJvYXJk
RGF0YS5nZXREYXRhKCJ0ZXh0L3VyaS1saXN0IikgaXMgIiIKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1pbWFnZS1kb2VzLW5vdC1yZXZlYWwtZmlsZS11
cmwuaHRtbCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1pbWFnZS1kb2Vz
LW5vdC1yZXZlYWwtZmlsZS11cmwuaHRtbAppbmRleCAyZDVlOGVlZTlmZGQ0YWU2OTM4N2M2NmJm
Zjk4MDY5M2RlNDI0NzcwLi5lOGVmNzAzNDY1OGU5ZTQ2ZjVlODJkYjdkYWU1YmI4YmRmNWJmYjMx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtaW1hZ2Ut
ZG9lcy1ub3QtcmV2ZWFsLWZpbGUtdXJsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL3Bhc3RlLWltYWdlLWRvZXMtbm90LXJldmVhbC1maWxlLXVybC5odG1sCkBAIC0z
MSw3ICszMSw3IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKQogCiBmdW5jdGlvbiBjaGVjayhldmVudCkK
IHsKLSAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ0pTT04uc3RyaW5naWZ5KGV2ZW50LmNsaXBi
b2FyZERhdGEudHlwZXMpJywgJ1siRmlsZXMiXScpOworICAgIHNob3VsZE5vdEJlKCdldmVudC5j
bGlwYm9hcmREYXRhLnR5cGVzLmluZGV4T2YoIkZpbGVzIiknLCAnLTEnKTsKICAgICBzaG91bGRC
ZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgidXJsIiknLCAnJyk7
CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEo
InRleHQvcGxhaW4iKScsICcnKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LmNs
aXBib2FyZERhdGEuZ2V0RGF0YSgidGV4dC91cmktbGlzdCIpJywgJycpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333513</attachid>
            <date>2018-02-09 12:58:11 -0800</date>
            <delta_ts>2018-02-09 13:53:57 -0800</delta_ts>
            <desc>Address feedback</desc>
            <filename>bug-182636-20180209125810.patch</filename>
            <type>text/plain</type>
            <size>50595</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmI4ZjBmMmU5YWY4MWE2
ZjMyNjBiYzY2NmNhMjZlMTQzNzQzODk5Ny4uZjNiNDFlY2QxMmRhZWM2ODA2MWU0YjZmZTkwYWI5
ZjExMGExMWUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDE4LTAyLTA5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFBhc3RpbmcgZnJv
bSBFeGNlbCBubyBsb25nZXIgcHJvdmlkZXMgdGV4dC9odG1sIGRhdGEKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjYzNgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMzcwODcwNjA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWZ0ZXIgcjIyMjY1Niwgd2UgdHJlYXQgaW1hZ2VzIG9uIHRoZSBwYXN0ZWJv
YXJkIGFzIGZpbGVzLiBIb3dldmVyLCB3ZSBhbHNvIGhhdmUgYW4gZXhpc3RpbmcgcG9saWN5IHdo
aWNoIGhpZGVzCisgICAgICAgIHRleHQgZGF0YSAoInRleHQvdXJpLWxpc3QiLCAidGV4dC9odG1s
IiwgInRleHQvcGxhaW4iKSBmcm9tIHRoZSBwYWdlIHdoZW4gZmlsZXMgYXJlIHByZXNlbnQgb24g
dGhlIHBhc3RlYm9hcmQuCisgICAgICAgIFdoZW4gY29weWluZyBhIHRhYmxlLCBNaWNyb3NvZnQg
RXhjZWwgd3JpdGVzIGEgcmVuZGVyaW5nIG9mIHRoZSB0YWJsZSB0byB0aGUgcGFzdGVib2FyZCBh
cyBhbiBpbWFnZS4gVGhpcyBtZWFucworICAgICAgICB0aGF0IHdlJ2xsIGhpZGUgb3RoZXIgZGF0
YSB0eXBlcyAoaW1wb3J0YW50bHksICd0ZXh0L2h0bWwnKSB1cG9uIHBhc3RpbmcsIGV2ZW4gdGhv
dWdoIGltcG9ydGFudCBjbGllbnRzIChzdWNoIGFzCisgICAgICAgIEdvb2dsZSBEb2NzIGFuZCBD
b25mbHVlbmNlKSBkZXBlbmQgb24gdGhlICd0ZXh0L2h0bWwnIGRhdGEgaW4gb3JkZXIgdG8gY29y
cmVjdGx5IGhhbmRsZSB0aGUgcGFzdGUgKHJhdGhlciB0aGFuCisgICAgICAgIHBhc3RlIGFzIGFu
IGltYWdlIG9mIGEgdGFibGUpLgorCisgICAgICAgIFRvIGZpeCB0aGlzLCB3ZSBhZGQgYW4gZXhj
ZXB0aW9uIHRvIHRoZSBEYXRhVHJhbnNmZXIuZ2V0RGF0YSBjb2RlcGF0aCB3aGVuIHRoZSBwYXN0
ZWJvYXJkIGNvbnRhaW5zIGZpbGVzLgorICAgICAgICBJbnN0ZWFkIG9mIGFsd2F5cyByZXR1cm5p
bmcgdGhlIGVtcHR5IHN0cmluZyBmb3IgdGV4dC9odG1sLCB3ZSBzdGlsbCBhbGxvdyBwYXN0ZWJv
YXJkIGFjY2VzcywgYnV0IG9ubHkgcmVhZAorICAgICAgICBmcm9tIGEgbGltaXRlZCBzZXQgb2Yg
cmljaCB0ZXh0IHR5cGVzLCBpLmUuIHdlYiBhcmNoaXZlLCBSVEYoRCksIGFuZCBIVE1MIG1hcmt1
cC4gSW1wb3J0YW50bHksIHRoaXMgcHJldmVudHMKKyAgICAgICAgdXMgZnJvbSBleHBvc2luZyBh
bnkgZmlsZSBwYXRocyB0aGF0IGFwcGVhciBhcyBwbGFpbiB0ZXh0IG9yIFVSTHMgb24gdGhlIHBh
c3RlYm9hcmQuIEp1c3QgYXMgaW4gdGhlIHJlZ3VsYXIKKyAgICAgICAgY29kZXBhdGggZm9yIGdl
dERhdGEoKSwgaWYgdGhlIHBhc3RlYm9hcmQgZGF0YSBjb21lcyBmcm9tIHRoZSBzYW1lIG9yaWdp
biwgd2UgYWxsb3cgdW5zYW5pdGl6ZWQgYWNjZXNzOworICAgICAgICBvdGhlcndpc2UsIHdlIHVz
ZSBXZWJDb250ZW50TWFya3VwUmVhZGVyIHRvIGV4dHJhY3QgbWFya3VwIGZyb20gdGhlIHBhc3Rl
Ym9hcmQuCisKKyAgICAgICAgVGVzdHM6ICBQYXN0ZU1peGVkQ29udGVudC5JbWFnZUZpbGVBbmRQ
bGFpblRleHQKKyAgICAgICAgICAgICAgICBQYXN0ZU1peGVkQ29udGVudC5JbWFnZUZpbGVBbmRX
ZWJBcmNoaXZlCisgICAgICAgICAgICAgICAgUGFzdGVNaXhlZENvbnRlbnQuSW1hZ2VGaWxlQW5k
SFRNTAorICAgICAgICAgICAgICAgIFBhc3RlTWl4ZWRDb250ZW50LkltYWdlRmlsZUFuZFJURgor
ICAgICAgICAgICAgICAgIFBhc3RlTWl4ZWRDb250ZW50LkltYWdlRmlsZUFuZFVSTAorICAgICAg
ICAgICAgICAgIFBhc3RlTWl4ZWRDb250ZW50LkltYWdlRmlsZVdpdGhIVE1MQW5kVVJMCisgICAg
ICAgICAgICAgICAgRGF0YUludGVyYWN0aW9uVGVzdHMuRGF0YVRyYW5zZmVyR2V0RGF0YVdoZW5E
cm9wcGluZ0ltYWdlQW5kTWFya3VwCisKKyAgICAgICAgQWxzbyByZWJhc2VsaW5lZCBzb21lIGxh
eW91dCB0ZXN0cywgd2hpY2ggY292ZXIgY2hhbmdlcyBpbiBiZWhhdmlvciB3aGVuIGRyb3BwaW5n
IG9uIG1hY09TIGFuZCBwYXN0aW5nIG9uIGlPUy4KKworICAgICAgICAqIGRvbS9EYXRhVHJhbnNm
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpnZXREYXRhRm9ySXRlbSBj
b25zdCk6CisKKyAgICAgICAgQXVnbWVudCB0aGUgY29kZXBhdGggaGFuZGxpbmcgdGhlIGNhc2Ug
d2hlcmUgdGhlIHBhc3RlYm9hcmQgY29udGFpbnMgZmlsZXMsIHN1Y2ggdGhhdCB3ZSBhbGxvdyBy
ZWFkaW5nCisgICAgICAgICJ0ZXh0L2h0bWwiLCBidXQgb25seSBmcm9tIHJpY2ggdGV4dCB0eXBl
cy4KKworICAgICAgICAoV2ViQ29yZTo6RGF0YVRyYW5zZmVyOjpyZWFkU3RyaW5nRnJvbVBhc3Rl
Ym9hcmQgY29uc3QpOgorCisgICAgICAgIEZhY3RvciBvdXQgbG9naWMgZm9yIHJlYWRpbmcgZnJv
bSB0aGUgcGFzdGVib2FyZCBpbnRvIGEgcHJpdmF0ZSBoZWxwZXIuIFRoaXMgaXMgY2FsbGVkIGlu
IHR3byBwbGFjZXMgZnJvbQorICAgICAgICBnZXREYXRhRm9ySXRlbTogaW4gdGhlIG5vcm1hbCAo
ZXhpc3RpbmcpIHBhdGgsIGFuZCBpbiB0aGUgY2FzZSB3aGVyZSB3ZSBhbGxvdyAndGV4dC9odG1s
JyB0byBiZSByZWFkIGRlc3BpdGUKKyAgICAgICAgZmlsZXMgYXBwZWFyaW5nIGluIHRoZSBwYXN0
ZWJvYXJkLgorCisgICAgICAgIE9uZSBpbXBvcnRhbnQgZGlmZmVyZW5jZSBoZXJlIGlzIHRoYXQg
dGhpcyBoZWxwZXIgbm93IHRha2VzIGEgV2ViQ29udGVudFJlYWRpbmdQb2xpY3ksIHdob3NlIHB1
cnBvc2UgaXMgdG8KKyAgICAgICAgcHJldmVudCByZWFkaW5nIGZyb20gbm9uLXJpY2gtdGV4dCB0
eXBlcyB3aGVuIGZpbGVzIGFwcGVhciBpbiB0aGUgcGFzdGVib2FyZC4KKworICAgICAgICBBbm90
aGVyIHR3ZWFrIGhlcmUgaXMgdGhhdCB3ZSBub3cgdXNlIGBsb3dlcmNhc2VUeXBlYCBpbnN0ZWFk
IG9mIHRoZSBvcmlnaW5hbCAodW5hZGp1c3RlZCkgYHR5cGVgIHdoZW4gcmVhZGluZworICAgICAg
ICBmcm9tIHRoZSBwYXN0ZWJvYXJkLiBUaGlzIGRvZXNuJ3Qgc2VlbSB0byBiZSBpbnRlbmRlZCBp
biB0aGUgZmlyc3QgcGxhY2UuCisKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6dHlw
ZXMgY29uc3QpOgorCisgICAgICAgIFR3ZWFrIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBEYXRhVHJh
bnNmZXIudHlwZXMoKSBpbiB0aGUgY2FzZSB3aGVyZSBmaWxlcyBleGlzdCBvbiB0aGUgcGFzdGVi
b2FyZCwgc3VjaCB0aGF0IHdlCisgICAgICAgIGFsc28gYWRkICJ0ZXh0L2h0bWwiIGlmIGl0IGlz
IHByZXNlbnQgaW4gdGhlIGxpc3Qgb2YgRE9NLXNhZmUgdHlwZXMuCisKKyAgICAgICAgKiBkb20v
RGF0YVRyYW5zZmVyLmg6CisgICAgICAgICogcGxhdGZvcm0vUGFzdGVib2FyZC5oOgorCisgICAg
ICAgIEludHJvZHVjZSBXZWJDb250ZW50UmVhZGluZ1BvbGljeSwgd2hpY2ggaW5kaWNhdGVzIHdo
ZXRoZXIgb3Igbm90IHdlIHNob3VsZCBsaW1pdCB3ZWIgY29udGVudCByZWFkaW5nIGZyb20gdGhl
CisgICAgICAgIHBhc3RlYm9hcmQgdG8gb25seSByaWNoIHRleHQgdHlwZXMgdXBvbiBwYXN0ZSBv
ciBkcm9wLiBOb3JtYWxseSwgd2UgYWxsb3cgYWxsIHR5cGVzIHRvIGJlIHJlYWQgYXMgd2ViIGNv
bnRlbnQKKyAgICAgICAgKDo6UmVhZEZyb21BbnlUeXBlKSwgYnV0IHdoZW4gZmlsZXMgYXBwZWFy
IG9uIHRoZSBwYXN0ZWJvYXJkLCB3ZSBmb3JjZSBPbmx5UmVhZEZyb21SaWNoVGV4dFR5cGVzIHRv
IGVuc3VyZSB0aGF0CisgICAgICAgIG5vIG90aGVyIHR5cGVzIGNhbiB1bmludGVudGlvbmFsbHkg
YmUgcmVhZCBiYWNrIGFzIHdlYiBjb250ZW50LgorCisgICAgICAgICogcGxhdGZvcm0vU3RhdGlj
UGFzdGVib2FyZC5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2lvcy9QYXN0ZWJvYXJkSU9TLm1tOgorCisgICAgICAgIFRlYWNoIFBhc3RlYm9hcmQgKG9uIGlP
UykgdG8gcmVzcGVjdCBXZWJDb250ZW50UmVhZGluZ1BvbGljeS4KKworICAgICAgICAoV2ViQ29y
ZTo6aXNUeXBlQWxsb3dlZEJ5UmVhZGluZ1BvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0
ZWJvYXJkOjpyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0
aW5nVVRJRmlkZWxpdGllcyk6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMu
bW06CisKKyAgICAgICAgVGVhY2ggUGFzdGVib2FyZCAob24gbWFjT1MpIHRvIHJlc3BlY3QgV2Vi
Q29udGVudFJlYWRpbmdQb2xpY3kuCisKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJl
YWQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL3dwZS9QYXN0
ZWJvYXJkV1BFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorCisg
ICAgICAgIEFkanVzdCBub24tQ29jb2EgUGFzdGVib2FyZCBpbXBsZW1lbnRhdGlvbnMgZm9yIGFu
IGludGVyZmFjZSBjaGFuZ2UuCisKIDIwMTgtMDItMDggIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIENvcmVBdWRpb0NhcHR1cmVTb3VyY2VJT1NMaXN0ZW5lciBz
aG91bGQgYmUgYSBXZWJQcm9jZXNzIHNpbmdsZXRvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVy
LmNwcAppbmRleCBjMTA5NDIzZTljOWRlMjBjODI2YjBlNzdkOGY5NmRmODQzMmZkNjg3Li5mODJl
M2QwMzIyZGVkYTY3ODhkMWFlMjZjMDYwYjJmMzNkODBlMTlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0
YVRyYW5zZmVyLmNwcApAQCAtMTU0LDkgKzE1NCwyMyBAQCBTdHJpbmcgRGF0YVRyYW5zZmVyOjpn
ZXREYXRhRm9ySXRlbShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29u
cwogICAgICAgICAgICAgaWYgKFBhc3RlYm9hcmQ6OmNhbkV4cG9zZVVSTFRvRE9NV2hlblBhc3Rl
Ym9hcmRDb250YWluc0ZpbGVzKHVybFN0cmluZykpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHVy
bFN0cmluZzsKICAgICAgICAgfQorCisgICAgICAgIGlmIChsb3dlcmNhc2VUeXBlID09ICJ0ZXh0
L2h0bWwiICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3VzdG9t
UGFzdGVib2FyZERhdGFFbmFibGVkKCkpIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSBwYXN0ZWJv
YXJkIGNvbnRhaW5zIGZpbGVzIGFuZCB0aGUgcGFnZSByZXF1ZXN0cyAndGV4dC9odG1sJywgd2Ug
b25seSByZWFkIGZyb20gcmljaCB0ZXh0IHR5cGVzIHRvIHByZXZlbnQgZmlsZQorICAgICAgICAg
ICAgLy8gcGF0aHMgZnJvbSBsZWFraW5nIChlLmcuIGZyb20gcGxhaW4gdGV4dCBkYXRhIG9uIHRo
ZSBwYXN0ZWJvYXJkKSBzaW5jZSB3ZSBzYW5pdGl6ZSBjcm9zcy1vcmlnaW4gbWFya3VwLiBIb3dl
dmVyLCBpZgorICAgICAgICAgICAgLy8gY3VzdG9tIHBhc3RlYm9hcmQgZGF0YSBpcyBkaXNhYmxl
ZCwgdGhlbiB3ZSBjYW4ndCBlbnN1cmUgdGhhdCB0aGUgbWFya3VwIHdlIGRlbGl2ZXIgaXMgc2Fu
aXRpemVkLCBzbyB3ZSBmYWxsIGJhY2sgdG8KKyAgICAgICAgICAgIC8vIGN1cnJlbnQgYmVoYXZp
b3IgYW5kIHJldHVybiBhbiBlbXB0eSBzdHJpbmcuCisgICAgICAgICAgICByZXR1cm4gcmVhZFN0
cmluZ0Zyb21QYXN0ZWJvYXJkKGRvY3VtZW50LCBsb3dlcmNhc2VUeXBlLCBXZWJDb250ZW50UmVh
ZGluZ1BvbGljeTo6T25seVJpY2hUZXh0VHlwZXMpOworICAgICAgICB9CisKICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICB9CiAKKyAgICByZXR1cm4gcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGRv
Y3VtZW50LCBsb3dlcmNhc2VUeXBlLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeTo6QW55VHlwZSk7
Cit9CisKK1N0cmluZyBEYXRhVHJhbnNmZXI6OnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgbG93ZXJjYXNlVHlwZSwgV2ViQ29udGVudFJl
YWRpbmdQb2xpY3kgcG9saWN5KSBjb25zdAorewogICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0
dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQoKSkKICAg
ICAgICAgcmV0dXJuIG1fcGFzdGVib2FyZC0+cmVhZFN0cmluZyhsb3dlcmNhc2VUeXBlKTsKIApA
QCAtMTcwLDE1ICsxODQsMTUgQEAgU3RyaW5nIERhdGFUcmFuc2Zlcjo6Z2V0RGF0YUZvckl0ZW0o
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnMKICAgICBpZiAoIVBh
c3RlYm9hcmQ6OmlzU2FmZVR5cGVGb3JET01Ub1JlYWRBbmRXcml0ZShsb3dlcmNhc2VUeXBlKSkK
ICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGlmICghaXM8U3RhdGljUGFzdGVib2FyZD4oKm1f
cGFzdGVib2FyZCkgJiYgdHlwZSA9PSAidGV4dC9odG1sIikgeworICAgIGlmICghaXM8U3RhdGlj
UGFzdGVib2FyZD4oKm1fcGFzdGVib2FyZCkgJiYgbG93ZXJjYXNlVHlwZSA9PSAidGV4dC9odG1s
IikgewogICAgICAgICBpZiAoIWRvY3VtZW50LmZyYW1lKCkpCiAgICAgICAgICAgICByZXR1cm4g
eyB9OwogICAgICAgICBXZWJDb250ZW50TWFya3VwUmVhZGVyIHJlYWRlciB7ICpkb2N1bWVudC5m
cmFtZSgpIH07Ci0gICAgICAgIG1fcGFzdGVib2FyZC0+cmVhZChyZWFkZXIpOworICAgICAgICBt
X3Bhc3RlYm9hcmQtPnJlYWQocmVhZGVyLCBwb2xpY3kpOwogICAgICAgICByZXR1cm4gcmVhZGVy
Lm1hcmt1cDsKICAgICB9CiAKLSAgICByZXR1cm4gbV9wYXN0ZWJvYXJkLT5yZWFkU3RyaW5nKHR5
cGUpOworICAgIHJldHVybiBtX3Bhc3RlYm9hcmQtPnJlYWRTdHJpbmcobG93ZXJjYXNlVHlwZSk7
CiB9CiAKIFN0cmluZyBEYXRhVHJhbnNmZXI6OmdldERhdGEoRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CkBAIC0yOTMsNiArMzA3LDggQEAgVmVjdG9yPFN0cmlu
Zz4gRGF0YVRyYW5zZmVyOjp0eXBlcyhBZGRGaWxlc1R5cGUgYWRkRmlsZXNUeXBlKSBjb25zdAog
ICAgICAgICAgICAgdHlwZXMuYXBwZW5kKEFTQ0lJTGl0ZXJhbCgiRmlsZXMiKSk7CiAgICAgICAg
IGlmIChzYWZlVHlwZXMuY29udGFpbnMoInRleHQvdXJpLWxpc3QiKSkKICAgICAgICAgICAgIHR5
cGVzLmFwcGVuZChBU0NJSUxpdGVyYWwoInRleHQvdXJpLWxpc3QiKSk7CisgICAgICAgIGlmIChz
YWZlVHlwZXMuY29udGFpbnMoInRleHQvaHRtbCIpKQorICAgICAgICAgICAgdHlwZXMuYXBwZW5k
KEFTQ0lJTGl0ZXJhbCgidGV4dC9odG1sIikpOwogICAgICAgICByZXR1cm4gdHlwZXM7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKaW5kZXggMzFkYzc5OWZjN2VmN2M3MDM3Njc0
Nzc1NDdjNGNiMzQwZTQxMDIzNC4uMDBlOWVmNDYxMjJmMWFiZjg1Yzc4ZGEwYWZhYjEyZjgyYTk3
ZTQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaApAQCAtMzksNiArMzksNyBAQCBjbGFz
cyBFbGVtZW50OwogY2xhc3MgRmlsZUxpc3Q7CiBjbGFzcyBGaWxlOwogY2xhc3MgUGFzdGVib2Fy
ZDsKK2VudW0gY2xhc3MgV2ViQ29udGVudFJlYWRpbmdQb2xpY3k7CiAKIGNsYXNzIERhdGFUcmFu
c2ZlciA6IHB1YmxpYyBSZWZDb3VudGVkPERhdGFUcmFuc2Zlcj4gewogcHVibGljOgpAQCAtMTIx
LDYgKzEyMiw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBmb3JGaWxlRHJhZygpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAjZW5kaWYKIAorICAgIFN0cmluZyByZWFkU3RyaW5nRnJvbVBhc3RlYm9h
cmQoRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmIGxvd2VyY2FzZVR5cGUsIFdlYkNvbnRlbnRSZWFk
aW5nUG9saWN5KSBjb25zdDsKICAgICBib29sIHNob3VsZFN1cHByZXNzR2V0QW5kU2V0RGF0YVRv
QXZvaWRFeHBvc2luZ0ZpbGVQYXRocygpIGNvbnN0OwogCiAgICAgZW51bSBjbGFzcyBBZGRGaWxl
c1R5cGUgeyBObywgWWVzIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Q
YXN0ZWJvYXJkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJvYXJkLmgKaW5kZXgg
ZTkxN2NjMzljNTQ3MzI0ODcwZGY5NWQ4Y2NjZWJiYjBlMmY3MTE3Ni4uMWVkY2U0MWQ2YmM5MTM0
ZWEwZTQyYTQ4Mzg0ZTA0MWY3NTc0OTM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vUGFzdGVib2FyZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9h
cmQuaApAQCAtNjQsNiArNjQsNyBAQCBjbGFzcyBSYW5nZTsKIGNsYXNzIFNlbGVjdGlvbkRhdGE7
CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiAKK2VudW0gY2xhc3MgV2ViQ29udGVudFJlYWRpbmdQb2xp
Y3kgeyBBbnlUeXBlLCBPbmx5UmljaFRleHRUeXBlcyB9OwogZW51bSBTaG91bGRTZXJpYWxpemVT
ZWxlY3RlZFRleHRGb3JEYXRhVHJhbnNmZXIgeyBEZWZhdWx0U2VsZWN0ZWRUZXh0VHlwZSwgSW5j
bHVkZUltYWdlQWx0VGV4dEZvckRhdGFUcmFuc2ZlciB9OwogCiAvLyBGb3Igd3JpdGluZyB0byB0
aGUgcGFzdGVib2FyZC4gR2VuZXJhbGx5IHNvcnRlZCB3aXRoIHRoZSByaWNoZXN0IGZvcm1hdHMg
b24gdG9wLgpAQCAtMjA5LDcgKzIxMCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdFQkNPUkVf
RVhQT1JUIHZvaWQgY2xlYXIoY29uc3QgU3RyaW5nJiB0eXBlKTsKIAogICAgIHZpcnR1YWwgV0VC
Q09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmKTsKLSAgICB2aXJ0dWFs
IFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYpOwor
ICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50
UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kgPSBXZWJDb250ZW50UmVhZGluZ1BvbGlj
eTo6QW55VHlwZSk7CiAgICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlYWQoUGFzdGVi
b2FyZEZpbGVSZWFkZXImKTsKIAogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCB3cml0
ZShjb25zdCBQYXN0ZWJvYXJkVVJMJik7CkBAIC0yNzMsNyArMjc0LDcgQEAgcHVibGljOgogcHJp
dmF0ZToKICNpZiBQTEFURk9STShJT1MpCiAgICAgYm9vbCByZXNwZWN0c1VUSUZpZGVsaXRpZXMo
KSBjb25zdDsKLSAgICB2b2lkIHJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyhQYXN0ZWJvYXJk
V2ViQ29udGVudFJlYWRlciYpOworICAgIHZvaWQgcmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVz
KFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kpOwog
CiAgICAgZW51bSBjbGFzcyBSZWFkZXJSZXN1bHQgewogICAgICAgICBSZWFkVHlwZSwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAppbmRleCA2YTM5MzRkYTQ2ZDhi
ZjM5ZWNlMDI1NGJjN2M1ZDk5NzhkOThkZDM1Li4wMDdlNDNhMThlYzU3ZjdiNzBjOWI0ZjAzNGQ3
Yjc1MGRhN2M0YjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQ
YXN0ZWJvYXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2Fy
ZC5oCkBAIC01Myw3ICs1Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyKGNvbnN0IFN0cmlu
ZyYgdHlwZSkgZmluYWw7CiAKICAgICB2b2lkIHJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYpIGZp
bmFsIHsgfQotICAgIHZvaWQgcmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYpIGZpbmFs
IHsgfQorICAgIHZvaWQgcmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdlYkNvbnRl
bnRSZWFkaW5nUG9saWN5KSBmaW5hbCB7IH0KIAogICAgIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVi
b2FyZFVSTCYpIGZpbmFsIHsgfQogICAgIHZvaWQgd3JpdGUoY29uc3QgUGFzdGVib2FyZEltYWdl
JikgZmluYWwgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFz
dGVib2FyZEd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0
ay5jcHAKaW5kZXggYThkNWU1OTljODU3M2YwZGE4NjI2M2Y3YjZlNmFiMmNkYWU0Yjg3Ny4uOTlk
MTIwM2Q2MzBmNDIxMWYzZmVjOGNiZWFmMjMwNTIzMzU2ZDA2OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIHZv
aWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0KQogICAgIHRleHQu
dGV4dCA9IG1fc2VsZWN0aW9uRGF0YS0+dGV4dCgpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OnJl
YWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImKQordm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBh
c3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KaW5kZXgg
Yjg4Nzk4NDc2ZmNjZTUwMzJlZDhjNWVkODY4ZGVhMGQ5ZmM2MWY0NS4uYzUxMzJlM2NjMjk5OTkz
ZmIxZDI1YzlkOTRhODc0NGViNmRjYjJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1Bhc3RlYm9hcmRJT1MubW0KQEAgLTE2Myw2ICsxNjMsMTUgQEAgc3RhdGljIE5TQXJyYXkq
IHN1cHBvcnRlZEltYWdlVHlwZXMoKQogICAgIHJldHVybiBAWyhpZClrVVRUeXBlUE5HLCAoaWQp
a1VUVHlwZVRJRkYsIChpZClrVVRUeXBlSlBFRywgKGlkKWtVVFR5cGVHSUZdOwogfQogCitzdGF0
aWMgYm9vbCBpc1R5cGVBbGxvd2VkQnlSZWFkaW5nUG9saWN5KE5TU3RyaW5nICp0eXBlLCBXZWJD
b250ZW50UmVhZGluZ1BvbGljeSBwb2xpY3kpCit7CisgICAgcmV0dXJuIHBvbGljeSA9PSBXZWJD
b250ZW50UmVhZGluZ1BvbGljeTo6QW55VHlwZQorICAgICAgICB8fCBbdHlwZSBpc0VxdWFsVG9T
dHJpbmc6V2ViQXJjaGl2ZVBib2FyZFR5cGVdCisgICAgICAgIHx8IFt0eXBlIGlzRXF1YWxUb1N0
cmluZzooTlNTdHJpbmcgKilrVVRUeXBlSFRNTF0KKyAgICAgICAgfHwgW3R5cGUgaXNFcXVhbFRv
U3RyaW5nOihOU1N0cmluZyAqKWtVVFR5cGVSVEZdCisgICAgICAgIHx8IFt0eXBlIGlzRXF1YWxU
b1N0cmluZzooTlNTdHJpbmcgKilrVVRUeXBlRmxhdFJURkRdOworfQorCiBQYXN0ZWJvYXJkOjpS
ZWFkZXJSZXN1bHQgUGFzdGVib2FyZDo6cmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZvclR5
cGUoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlciwgUGFzdGVib2FyZFN0cmF0ZWd5
JiBzdHJhdGVneSwgTlNTdHJpbmcgKnR5cGUsIGludCBpdGVtSW5kZXgpCiB7CiAgICAgaWYgKFt0
eXBlIGlzRXF1YWxUb1N0cmluZzpXZWJBcmNoaXZlUGJvYXJkVHlwZV0pIHsKQEAgLTIyNSwxMSAr
MjM0LDExIEBAIFBhc3RlYm9hcmQ6OlJlYWRlclJlc3VsdCBQYXN0ZWJvYXJkOjpyZWFkUGFzdGVi
b2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShQYXN0ZWJvCiAgICAgcmV0dXJuIFJlYWRlclJlc3Vs
dDo6RGlkTm90UmVhZFR5cGU7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJk
V2ViQ29udGVudFJlYWRlciYgcmVhZGVyKQordm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9h
cmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5IHBvbGlj
eSkKIHsKICAgICByZWFkZXIuY29udGVudE9yaWdpbiA9IHJlYWRPcmlnaW4oKTsKICAgICBpZiAo
cmVzcGVjdHNVVElGaWRlbGl0aWVzKCkpIHsKLSAgICAgICAgcmVhZFJlc3BlY3RpbmdVVElGaWRl
bGl0aWVzKHJlYWRlcik7CisgICAgICAgIHJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyhyZWFk
ZXIsIHBvbGljeSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI0NSw5ICsyNTQsMTQg
QEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFk
ZXIpCiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bWJlck9mSXRlbXM7IGkrKykgewogICAg
ICAgICBmb3IgKGludCB0eXBlSW5kZXggPSAwOyB0eXBlSW5kZXggPCBudW1iZXJPZlR5cGVzOyB0
eXBlSW5kZXgrKykgewotICAgICAgICAgICAgYXV0byBpdGVtUmVzdWx0ID0gcmVhZFBhc3RlYm9h
cmRXZWJDb250ZW50RGF0YUZvclR5cGUocmVhZGVyLCBzdHJhdGVneSwgW3R5cGVzIG9iamVjdEF0
SW5kZXg6dHlwZUluZGV4XSwgaSk7CisgICAgICAgICAgICBOU1N0cmluZyAqdHlwZSA9IFt0eXBl
cyBvYmplY3RBdEluZGV4OnR5cGVJbmRleF07CisgICAgICAgICAgICBpZiAoIWlzVHlwZUFsbG93
ZWRCeVJlYWRpbmdQb2xpY3kodHlwZSwgcG9saWN5KSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICAgICAgYXV0byBpdGVtUmVzdWx0ID0gcmVhZFBhc3RlYm9hcmRXZWJDb250
ZW50RGF0YUZvclR5cGUocmVhZGVyLCBzdHJhdGVneSwgdHlwZSwgaSk7CiAgICAgICAgICAgICBp
ZiAoaXRlbVJlc3VsdCA9PSBSZWFkZXJSZXN1bHQ6OlBhc3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJu
YWxseSkKICAgICAgICAgICAgICAgICByZXR1cm47CisKICAgICAgICAgICAgIGlmIChpdGVtUmVz
dWx0ID09IFJlYWRlclJlc3VsdDo6UmVhZFR5cGUpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KQEAgLTI2MiwxNCArMjc2LDE0IEBAIGJvb2wgUGFzdGVib2FyZDo6cmVzcGVjdHNV
VElGaWRlbGl0aWVzKCkgY29uc3QKICAgICByZXR1cm4gbV9wYXN0ZWJvYXJkTmFtZSA9PSAiZGF0
YSBpbnRlcmFjdGlvbiBwYXN0ZWJvYXJkIjsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpyZWFkUmVz
cGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlcikK
K3ZvaWQgUGFzdGVib2FyZDo6cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRX
ZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5IHBvbGljeSkK
IHsKICAgICBBU1NFUlQocmVzcGVjdHNVVElGaWRlbGl0aWVzKCkpOwogICAgIGF1dG8mIHN0cmF0
ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKTsKICAgICBm
b3IgKE5TVUludGVnZXIgaW5kZXggPSAwLCBudW1iZXJPZkl0ZW1zID0gc3RyYXRlZ3kuZ2V0UGFz
dGVib2FyZEl0ZW1zQ291bnQobV9wYXN0ZWJvYXJkTmFtZSk7IGluZGV4IDwgbnVtYmVyT2ZJdGVt
czsgKytpbmRleCkgewogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAgICAgICAgIGF1
dG8gaW5mbyA9IHN0cmF0ZWd5LmluZm9ybWF0aW9uRm9ySXRlbUF0SW5kZXgoaW5kZXgsIG1fcGFz
dGVib2FyZE5hbWUpOwotICAgICAgICBib29sIGNhblJlYWRBdHRhY2htZW50ID0gUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5hdHRhY2htZW50RWxlbWVudEVuYWJsZWQo
KSAmJiAhaW5mby5wYXRoRm9yRmlsZVVwbG9hZC5pc0VtcHR5KCk7CisgICAgICAgIGJvb2wgY2Fu
UmVhZEF0dGFjaG1lbnQgPSBwb2xpY3kgPT0gV2ViQ29udGVudFJlYWRpbmdQb2xpY3k6OkFueVR5
cGUgJiYgUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5hdHRhY2htZW50
RWxlbWVudEVuYWJsZWQoKSAmJiAhaW5mby5wYXRoRm9yRmlsZVVwbG9hZC5pc0VtcHR5KCk7CiAg
ICAgICAgIGlmIChjYW5SZWFkQXR0YWNobWVudCAmJiBpbmZvLnByZWZlcnJlZFByZXNlbnRhdGlv
blN0eWxlID09IFBhc3RlYm9hcmRJdGVtUHJlc2VudGF0aW9uU3R5bGU6OkF0dGFjaG1lbnQpIHsK
ICAgICAgICAgICAgIHJlYWRlci5yZWFkRmlsZVBhdGhzKHsgaW5mby5wYXRoRm9yRmlsZVVwbG9h
ZCB9KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMjgxLDYgKzI5NSw5IEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50
UmVhZGVyJiByZWFkZXIpCiAgICAgICAgIHN0cmF0ZWd5LmdldFR5cGVzQnlGaWRlbGl0eUZvckl0
ZW1BdEluZGV4KHR5cGVzRm9ySXRlbUluT3JkZXJPZkZpZGVsaXR5LCBpbmRleCwgbV9wYXN0ZWJv
YXJkTmFtZSk7CiAgICAgICAgIFJlYWRlclJlc3VsdCByZXN1bHQgPSBSZWFkZXJSZXN1bHQ6OkRp
ZE5vdFJlYWRUeXBlOwogICAgICAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlc0Zvckl0ZW1Jbk9y
ZGVyT2ZGaWRlbGl0eSkgeworICAgICAgICAgICAgaWYgKCFpc1R5cGVBbGxvd2VkQnlSZWFkaW5n
UG9saWN5KHR5cGUsIHBvbGljeSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKICAgICAg
ICAgICAgIHJlc3VsdCA9IHJlYWRQYXN0ZWJvYXJkV2ViQ29udGVudERhdGFGb3JUeXBlKHJlYWRl
ciwgc3RyYXRlZ3ksIHR5cGUsIGluZGV4KTsKICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gUmVh
ZGVyUmVzdWx0OjpQYXN0ZWJvYXJkV2FzQ2hhbmdlZEV4dGVybmFsbHkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3Rl
Ym9hcmRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5t
bQppbmRleCBjMjZjOTA0ZGI4YjQxMDE2MmViNzc5ZTRkYjU0OTk1MGRlNDE1OGRhLi42YTdlZDUw
ZTQzNzNiZTIwYjQzMjlkMzIyNWI0NTU4YmU4ZmYzNmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtMzMxLDcgKzMzMSw3IEBAIHZvaWQgUGFz
dGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JiB0ZXh0KQogICAgIHRleHQuaXNVUkwg
PSAhdGV4dC50ZXh0LmlzTnVsbCgpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVi
b2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlcikKK3ZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0
ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSBw
b2xpY3kpCiB7CiAgICAgUGFzdGVib2FyZFN0cmF0ZWd5JiBzdHJhdGVneSA9ICpwbGF0Zm9ybVN0
cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0cmF0ZWd5KCk7CiAKQEAgLTM0Nyw3ICszNDcsNyBAQCB2
b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlcikK
ICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICh0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5
RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSkpKSB7CisgICAgaWYgKHBvbGljeSA9PSBXZWJDb250
ZW50UmVhZGluZ1BvbGljeTo6QW55VHlwZSAmJiB0eXBlcy5jb250YWlucyhTdHJpbmcobGVnYWN5
RmlsZW5hbWVzUGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIFZlY3RvcjxTdHJpbmc+IHBh
dGhzOwogICAgICAgICBzdHJhdGVneS5nZXRQYXRobmFtZXNGb3JUeXBlKHBhdGhzLCBsZWdhY3lG
aWxlbmFtZXNQYXN0ZWJvYXJkVHlwZSgpLCBtX3Bhc3RlYm9hcmROYW1lKTsKICAgICAgICAgaWYg
KG1fY2hhbmdlQ291bnQgIT0gY2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZEZpbGVQYXRocyhw
YXRocykpCkBAIC0zNzQsNiArMzc0LDkgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9h
cmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIpCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpZiAo
cG9saWN5ID09IFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5OjpPbmx5UmljaFRleHRUeXBlcykKKyAg
ICAgICAgcmV0dXJuOworCiAgICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lUSUZG
UGFzdGVib2FyZFR5cGUoKSkpKSB7CiAgICAgICAgIGlmIChSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZXIgPSBzdHJhdGVneS5idWZmZXJGb3JUeXBlKGxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlwZSgp
LCBtX3Bhc3RlYm9hcmROYW1lKSkgewogICAgICAgICAgICAgaWYgKG1fY2hhbmdlQ291bnQgIT0g
Y2hhbmdlQ291bnQoKSB8fCByZWFkZXIucmVhZEltYWdlKGJ1ZmZlci5yZWxlYXNlTm9uTnVsbCgp
LCBBU0NJSUxpdGVyYWwoImltYWdlL3RpZmYiKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggYzlhMGQyZGY3YzRkOWNiMzM3YTBkZWI3YzBh
OTM2NTE5YTRkOTg1NC4uNDY2NTBmMDVlYThjMmQxMTkyZmUyZGZhNmNlMTEyM2ZiYjg0NzA5MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAt
MTA3Myw3ICsxMDczLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZShjb25zdCBQYXN0ZWJvYXJk
V2ViQ29udGVudCYpCiB7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2Vi
Q29udGVudFJlYWRlciYpCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRl
bnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1Bhc3RlYm9hcmRXUEUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vd3BlL1Bhc3RlYm9hcmRXUEUuY3BwCmluZGV4IDI0N2FmNTUxMmM2YzBh
ZDBkYTBlYzdmMzEwMjkwNDE2MWEwYTU4OGEuLjFlYjJkMjlhNThlOTBiYmMwZTRjYTU4OGNjNjhl
MTY2NGNlZmMzMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9QYXN0
ZWJvYXJkV1BFLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93cGUvUGFzdGVib2Fy
ZFdQRS5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9h
cmRQbGFpblRleHQmIHRleHQpCiAgICAgdGV4dC50ZXh0ID0gcGxhdGZvcm1TdHJhdGVnaWVzKCkt
PnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkU3RyaW5nRnJvbVBhc3RlYm9hcmQoMCwgInRleHQv
cGxhaW47Y2hhcnNldD11dGYtOCIpOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVi
b2FyZFdlYkNvbnRlbnRSZWFkZXImKQordm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRX
ZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kpCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCAwZWZkNDYwNWE0ZWVjZDlhYmZkYjQ3ZmU4ZGNmNjA5ZGY1MWVmMWFmLi44YThh
NzkyMmJmZWFhMWY3MDMwNDk2ZTAyNTMzN2QwNTYwYTM4YWI3IDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAKKzIwMTgtMDIt
MDggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgUGFz
dGluZyBmcm9tIEV4Y2VsIG5vIGxvbmdlciBwcm92aWRlcyB0ZXh0L2h0bWwgZGF0YQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNjM2CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zNzA4NzA2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgbmV3IEFQSSB0ZXN0cyB0byBleGVyY2lzZSBwYXN0aW5n
IGltYWdlcyB3aXRoIHZhcmlvdXMgb3RoZXIgY29udGVudCB0eXBlcyBvbiBtYWNPUywgYW5kIHdo
ZW4gZHJvcHBpbmcgaW1hZ2VzCisgICAgICAgIGFuZCBIVE1MIG1hcmt1cCBvbiBpT1MuIFNlZSB0
aGUgV2ViQ29yZSBDaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EYXRhVHJhbnNmZXIuaHRtbDogQWRk
ZWQuCisKKyAgICAgICAgQWRkIGEgbmV3IEFQSSB0ZXN0IGhhcm5lc3MgdGhhdCBkdW1wcyB2YXJp
b3VzIGJpdHMgb2YgaW5mb3JtYXRpb24gYWJvdXQgYSBEYXRhVHJhbnNmZXIgdXBvbiBwYXN0ZSBh
bmQgZHJvcC4KKyAgICAgICAgV2hpbGUgc29tZXdoYXQgc2ltaWxhciB0byBzb21lIGV4aXN0aW5n
IGhhcm5lc3NlcywgdGhpcyBtYWtlcyBhIGRpc3RpbmN0aW9uIGJldHdlZW4gdGhlIHJhdyBIVE1M
IGRhdGEgb24gdGhlCisgICAgICAgIHBhc3RlYm9hcmQgYW5kIHRoZSBhY3R1YWwgcmVzdWx0IG9m
IGluc2VydGluZyBzYWlkIEhUTUwgaW50byB0aGUgRE9NLiBUaGlzIGFsbG93cyB1cyB0byBjaGVj
ayB0aGF0IHRoZSBIVE1MIGhhcworICAgICAgICBiZWVuIHNhbml0aXplZCwgd2hpbGUgbWFraW5n
IGNoZWNrcyBmb3IgdGhlIGFjdHVhbCBjb250ZW50IG9mIHRoZSBIVE1MIHJvYnVzdCBhZ2FpbnN0
IGlubGluZSBzdHlsZSBjaGFuZ2VzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9QYXN0ZUltYWdlLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUGFzdGVNaXhlZENvbnRlbnQubW06IEFkZGVkLgorCisgICAgICAgIEFkZCBh
IG5ldyB0ZXN0IHN1aXRlIHRvIGV4ZXJjaXNlIHBhc3RpbmcgbWl4ZWQgY29udGVudCB0eXBlcy4g
SW4gdGhlc2UgdGVzdCBjYXNlcywgdGhlIHBhc3RlYm9hcmQgY29udGFpbnMgYQorICAgICAgICBm
aWxlLCB3aXRoIHNvbWUgY29tYmluYXRpb24gb2YgcGxhaW4gdGV4dCwgcmljaCB0ZXh0LCBhbmQg
VVJMcy4KKworICAgICAgICAoaW1hZ2VQYXRoKToKKyAgICAgICAgKHdyaXRlVHlwZXNBbmREYXRh
VG9QYXN0ZWJvYXJkKToKKworICAgICAgICBBZGQgYSBoZWxwZXIgdG8gd3JpdGUgYSB2YXItYXJn
IGxpc3Qgb2YgY29udGVudCB0eXBlcyBhbmQgZGF0YSB0byB0aGUgZ2VuZXJhbCBOU1Bhc3RlYm9h
cmQuCisKKyAgICAgICAgKHNldFVwV2ViVmlldyk6CisgICAgICAgIChtYXJrdXBTdHJpbmcpOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
Ojp0ZXN0SWNvbkltYWdlRGF0YSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaDoKKworICAgICAgICBN
b3ZlIGEgcHJpdmF0ZSBkZWNsYXJhdGlvbiBvZiAtW1dLV2ViVmlldyBwYXN0ZTpdIG91dCB0byBU
ZXN0V0tXZWJWaWV3LmgsIHNvIHRoYXQgaXQgY2FuIGJlIHNoYXJlZCBhY3Jvc3MKKyAgICAgICAg
bXVsdGlwbGUgdGVzdHMuIEN1cnJlbnRseSwgaXQgb25seSByZXNpZGVzIGluIFBhc3RlSW1hZ2Uu
bW0sIGJ1dCBJIG5lZWQgaXQgaW4gUGFzdGVNaXhlZENvbnRlbnQubW0gYXMgd2VsbC4KKwogMjAx
OC0wMi0wOCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFRoZXJl
IHNob3VsZCBiZSBhIHdheSB0byBkaXNhYmxlIFtPdmVycmlkZUJ1aWx0aW5zXSBiZWhhdmlvciBp
biBhIGdpdmVuIERPTVdyYXBwZXJXb3JsZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAzYWY4
ZDI0YTFkZGI3ZmYxZmVmYTkyNTlhOGFiOTJmNTVjYjg2NmJlLi5hMmM3NTE2OGM0M2U5NzcxMmE0
OTQzNGEwNGUxMGZmNzFiOWE4NGFmIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzQxLDYg
Kzc0MSw4IEBACiAJCUY0NEQwNjRBMUYzOTYyRjIwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5l
c3MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDRE
MDY0OTFGMzk2MkUzMDAxQTBFMjkgLyogRWRpdGluZ1Rlc3RIYXJuZXNzLm1tICovOyB9OwogCQlG
NDUxMkUxMzFGNjBDNDQ2MDBCQjM2OUUgLyogRGF0YVRyYW5zZmVySXRlbS1nZXRBc0VudHJ5Lmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjQ1MTJFMTIxRjYwQzQzNDAwQkIzNjlFIC8qIERhdGFUcmFuc2Zlckl0ZW0tZ2V0QXNFbnRyeS5o
dG1sICovOyB9OwogCQlGNDUzOEVGNzFFODQ3M0U2MDBCNUM5NTMgLyogbGFyZ2UtcmVkLXNxdWFy
ZS5wbmcgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQ1MzhFRjAxRTg0NkI0MTAwQjVDOTUzIC8qIGxhcmdlLXJlZC1zcXVhcmUucG5nICovOyB9
OworCQlGNDU3QTlCODIwMkQ1Q0RDMDBGN0U5RDUgLyogUGFzdGVNaXhlZENvbnRlbnQubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDU3QTlCNjIwMkQ1
Q0RDMDBGN0U5RDUgLyogUGFzdGVNaXhlZENvbnRlbnQubW0gKi87IH07CisJCUY0NTdBOUQ2MjAy
RDY4QUYwMEY3RTlENSAvKiBEYXRhVHJhbnNmZXIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDU3QTlCMzIwMkQ1MzUzMDBGN0U5RDUg
LyogRGF0YVRyYW5zZmVyLmh0bWwgKi87IH07CiAJCUY0NUI2M0ZCMUYxOTdGNEEwMDlEMzhCOSAv
KiBpbWFnZS1tYXAuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDVCNjNGQTFGMTk3RjMzMDA5RDM4QjkgLyogaW1hZ2UtbWFwLmh0bWwg
Ki87IH07CiAJCUY0NUI2M0ZFMUYxOUQ0MTAwMDlEMzhCOSAvKiBBY3Rpb25TaGVldFRlc3RzLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ1QjYzRkMx
RjE5RDQxMDAwOUQzOEI5IC8qIEFjdGlvblNoZWV0VGVzdHMubW0gKi87IH07CiAJCUY0Njg0OUJF
MUVFRjU4RTQwMEI5MzdGRSAvKiBVSVBhc3RlYm9hcmRUZXN0cy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0Njg0OUJEMUVFRjU4RTQwMEI5MzdGRSAv
KiBVSVBhc3RlYm9hcmRUZXN0cy5tbSAqLzsgfTsKQEAgLTg5NCw2ICs4OTYsNyBAQAogCQkJCUY0
QUI1NzhBMUY2NTE2NTQwMERCMERBMSAvKiBjdXN0b20tZHJhZ2dhYmxlLWRpdi5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCTI5MEY0Mjc1MTcyQTIyMUMwMDkzOUZGMCAvKiBjdXN0b20t
cHJvdG9jb2wtc3luYy14aHIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDg2QjFE
MDFGNjc5NTIzMDBGMzRCREQgLyogRGF0YVRyYW5zZmVyLXNldERyYWdJbWFnZS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAorCQkJCUY0NTdBOUQ2MjAyRDY4QUYwMEY3RTlENSAvKiBEYXRhVHJh
bnNmZXIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDUxMkUxMzFGNjBDNDQ2MDBC
QjM2OUUgLyogRGF0YVRyYW5zZmVySXRlbS1nZXRBc0VudHJ5Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJQzA3RTZDQjIxM0ZENzM5MzAwMzhCMjJCIC8qIGRldmljZVBpeGVsUmF0aW8u
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkwNzk5QzM0QjFFQkEzMzAxMDAzQjc1MzIg
LyogZGlzYWJsZUdldFVzZXJNZWRpYS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTg2
Miw2ICsxODY1LDggQEAKIAkJRjQ0RDA2NDkxRjM5NjJFMzAwMUEwRTI5IC8qIEVkaXRpbmdUZXN0
SGFybmVzcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEVkaXRp
bmdUZXN0SGFybmVzcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ1MTJFMTIx
RjYwQzQzNDAwQkIzNjlFIC8qIERhdGFUcmFuc2Zlckl0ZW0tZ2V0QXNFbnRyeS5odG1sICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gIkRhdGFUcmFuc2Zlckl0ZW0tZ2V0QXNFbnRyeS5odG1s
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ1MzhFRjAxRTg0NkI0MTAwQjVDOTUz
IC8qIGxhcmdlLXJlZC1zcXVhcmUucG5nICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gaW1hZ2UucG5nOyBwYXRoID0gImxhcmdlLXJlZC1zcXVhcmUucG5n
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ1N0E5QjMyMDJENTM1MzAwRjdFOUQ1
IC8qIERhdGFUcmFuc2Zlci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gRGF0YVRy
YW5zZmVyLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NTdBOUI2MjAyRDVD
REMwMEY3RTlENSAvKiBQYXN0ZU1peGVkQ29udGVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFBhc3RlTWl4ZWRDb250ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDVC
NjNGQTFGMTk3RjMzMDA5RDM4QjkgLyogaW1hZ2UtbWFwLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiaW1hZ2Ut
bWFwLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDVCNjNGQzFGMTlENDEw
MDA5RDM4QjkgLyogQWN0aW9uU2hlZXRUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFj
dGlvblNoZWV0VGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0Njg0OUJE
MUVFRjU4RTQwMEI5MzdGRSAvKiBVSVBhc3RlYm9hcmRUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFVJUGFzdGVib2FyZFRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjEzMCw2ICsyMTM1LDcgQEAKIAkJCQlDRUJDQTEyRTFFM0E2NjAxMDBDNzMyOTMgLyogT3Zl
cnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kubW0gKi8sCiAJCQkJOUJDQjdDMjYyMDEzMDYwMDAw
M0U3QzBDIC8qIFBhc3RlSFRNTC5tbSAqLywKIAkJCQk5QkRDQ0Q4NTFGN0QwQjA3MDAwMDlBMTgg
LyogUGFzdGVJbWFnZS5tbSAqLywKKwkJCQlGNDU3QTlCNjIwMkQ1Q0RDMDBGN0U5RDUgLyogUGFz
dGVNaXhlZENvbnRlbnQubW0gKi8sCiAJCQkJOUJERDk1NTYxRjgzNjgzNjAwRDIwQzYwIC8qIFBh
c3RlUlRGRC5tbSAqLywKIAkJCQk5QjIzNDY0MTFGOTQzQTI0MDBEQjFEMjMgLyogUGFzdGVXZWJB
cmNoaXZlLm1tICovLAogCQkJCTNGQ0M0RkU0MUVDNEU4NTIwMDc2RTM3QyAvKiBQaWN0dXJlSW5Q
aWN0dXJlRGVsZWdhdGUubW0gKi8sCkBAIC0yMzY0LDYgKzIzNzAsNyBAQAogCQkJCTlCNjI2MzBC
MUY4QzI1MTAwMDdFRTI5QiAvKiBjb3B5LXVybC5odG1sICovLAogCQkJCUY0QUI1Nzg5MUY2NTE2
NEIwMERCMERBMSAvKiBjdXN0b20tZHJhZ2dhYmxlLWRpdi5odG1sICovLAogCQkJCUY0ODZCMUNG
MUY2Nzk0RkYwMEYzNEJERCAvKiBEYXRhVHJhbnNmZXItc2V0RHJhZ0ltYWdlLmh0bWwgKi8sCisJ
CQkJRjQ1N0E5QjMyMDJENTM1MzAwRjdFOUQ1IC8qIERhdGFUcmFuc2Zlci5odG1sICovLAogCQkJ
CUY0NTEyRTEyMUY2MEM0MzQwMEJCMzY5RSAvKiBEYXRhVHJhbnNmZXJJdGVtLWdldEFzRW50cnku
aHRtbCAqLywKIAkJCQkwNzk5QzM0QTFFQkEzMkY0MDAzQjc1MzIgLyogZGlzYWJsZUdldFVzZXJN
ZWRpYS5odG1sICovLAogCQkJCTYzQTYxQjhBMUZBRDIwNEQwMEYwNjg4NSAvKiBkaXNwbGF5LW1v
ZGUuaHRtbCAqLywKQEAgLTM1NTUsNiArMzU2Miw3IEBACiAJCQkJN0NDRTdGMEExQTQxMUFFNjAw
NDQ3QzRDIC8qIFBhc3RlYm9hcmROb3RpZmljYXRpb25zLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OUJDQjdDMjgyMDEzMDYwMDAwM0U3QzBDIC8qIFBhc3RlSFRNTC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTlCRENDRDg3MUY3RDBCMDcwMDAwOUExOCAvKiBQYXN0ZUltYWdlLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJRjQ1N0E5QjgyMDJENUNEQzAwRjdFOUQ1IC8qIFBhc3RlTWl4ZWRDb250ZW50Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJOUJERDk1NTgxRjgzNjgzNjAwRDIwQzYwIC8qIFBhc3RlUlRG
RC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTlCMjM0NjQyMUY5NDNFMjcwMERCMUQyMyAvKiBQYXN0
ZVdlYkFyY2hpdmUubW0gaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTA1MzFEMEE2NDNBMDBGRUJD
RjMgLyogUGVuZGluZ0FQSVJlcXVlc3RVUkwuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RhdGFUcmFuc2Zlci5odG1s
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EYXRhVHJhbnNmZXIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5jOTFkNjA2MDAxN2MzMzkyOTQzMTEzNjI4OWJjNmZkNDQ2NzBjOTdiCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9E
YXRhVHJhbnNmZXIuaHRtbApAQCAtMCwwICsxLDc3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5p
dGlhbC1zY2FsZT0xIj4KKzxoZWFkPgorICAgIDxzdHlsZT4KKyAgICAgICAgYm9keSwgaHRtbCB7
CisgICAgICAgICAgICB3aWR0aDogMTAwJTsKKyAgICAgICAgICAgIGhlaWdodDogMTAwJTsKKyAg
ICAgICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7CisgICAgICAgIH0KKworICAgICAgICAu
aGVhZGluZyB7CisgICAgICAgICAgICBkaXNwbGF5OiBibG9jazsKKyAgICAgICAgICAgIHdpZHRo
OiAxMDAlOworICAgICAgICAgICAgYm9yZGVyLXRvcDogMnB4IGdyYXkgZGFzaGVkOworICAgICAg
ICAgICAgbWFyZ2luLXRvcDogMjBweDsKKyAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1i
b3g7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQ+CisgICAgICAgIGZ1bmN0
aW9uIHNldHVwKCkKKyAgICAgICAgeworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVu
dExpc3RlbmVyKCJwYXN0ZSIsIGV2ZW50ID0+IHsKKyAgICAgICAgICAgICAgICBkdW1wQXNPdXRw
dXQoZXZlbnQuY2xpcGJvYXJkRGF0YSk7CisgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERl
ZmF1bHQoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hZGRF
dmVudExpc3RlbmVyKCJkcm9wIiwgZXZlbnQgPT4geworICAgICAgICAgICAgICAgIGR1bXBBc091
dHB1dChldmVudC5kYXRhVHJhbnNmZXIpOworICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnRE
ZWZhdWx0KCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYWRk
RXZlbnRMaXN0ZW5lcigiYmVmb3JlaW5wdXQiLCBldmVudCA9PiBldmVudC5wcmV2ZW50RGVmYXVs
dCgpKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuZm9jdXMoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0aW9uIGR1bXBBc091dHB1dChkYXRhVHJhbnNmZXIpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGRvY3VtZW50LmJvZHkuY29udGVudEVkaXRhYmxlID0gZmFsc2U7CisgICAgICAg
ICAgICB0eXBlcy50ZXh0Q29udGVudCA9IGRhdGFUcmFuc2Zlci50eXBlcy5qb2luKCIsICIpOwor
ICAgICAgICAgICAgaXRlbXMudGV4dENvbnRlbnQgPSBBcnJheS5mcm9tKGRhdGFUcmFuc2Zlci5p
dGVtcykubWFwKGl0ZW0gPT4gYCgke2l0ZW0ua2luZC50b1VwcGVyQ2FzZSgpfSwgJHtpdGVtLnR5
cGV9KWApLmpvaW4oIiwgIik7CisgICAgICAgICAgICBmaWxlcy50ZXh0Q29udGVudCA9IEFycmF5
LmZyb20oZGF0YVRyYW5zZmVyLmZpbGVzKS5tYXAoZmlsZSA9PiBgKCcke2ZpbGUubmFtZX0nLCAk
e2ZpbGUudHlwZX0pYCkuam9pbigiLCAiKTsKKyAgICAgICAgICAgIHVybERhdGEudGV4dENvbnRl
bnQgPSBkYXRhVHJhbnNmZXIuZ2V0RGF0YSgidGV4dC91cmktbGlzdCIpOworICAgICAgICAgICAg
dGV4dERhdGEudGV4dENvbnRlbnQgPSBkYXRhVHJhbnNmZXIuZ2V0RGF0YSgidGV4dC9wbGFpbiIp
OworICAgICAgICAgICAgbGV0IG1hcmt1cCA9IGRhdGFUcmFuc2Zlci5nZXREYXRhKCJ0ZXh0L2h0
bWwiKTsKKyAgICAgICAgICAgIGh0bWxEYXRhLmluc2VydEFkamFjZW50SFRNTCgiYmVmb3JlZW5k
IiwgbWFya3VwKTsKKyAgICAgICAgICAgIHJhd0hUTUxEYXRhLnRleHRDb250ZW50ID0gbWFya3Vw
OworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gcmVzZXQoKQorICAgICAgICB7CisgICAg
ICAgICAgICBBcnJheS5mcm9tKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIm91dHB1
dCIpKS5tYXAoZWxlbWVudCA9PiB7CisgICAgICAgICAgICAgICAgZWxlbWVudC5pbm5lckhUTUwg
PSAiIjsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jb250ZW50
RWRpdGFibGUgPSB0cnVlOworICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBjb250ZW50ZWRpdGFibGUgb25sb2FkPXNldHVwKCk+CisgICAgPGgzIGNsYXNzPSJoZWFkaW5n
Ij5UeXBlczwvaDM+CisgICAgPGRpdiBjbGFzcz0ib3V0cHV0IiBpZD0idHlwZXMiPjwvZGl2Pgor
CisgICAgPGgzIGNsYXNzPSJoZWFkaW5nIj5JdGVtczwvaDM+CisgICAgPGRpdiBjbGFzcz0ib3V0
cHV0IiBpZD0iaXRlbXMiPjwvZGl2PgorCisgICAgPGgzIGNsYXNzPSJoZWFkaW5nIj5GaWxlczwv
aDM+CisgICAgPGRpdiBjbGFzcz0ib3V0cHV0IiBpZD0iZmlsZXMiPjwvZGl2PgorCisgICAgPGgz
IGNsYXNzPSJoZWFkaW5nIj50ZXh0L3BsYWluPC9oMz4KKyAgICA8ZGl2IGNsYXNzPSJvdXRwdXQi
IGlkPSJ0ZXh0RGF0YSI+PC9kaXY+CisKKyAgICA8aDMgY2xhc3M9ImhlYWRpbmciPnRleHQvdXJp
LWxpc3Q8L2gzPgorICAgIDxkaXYgY2xhc3M9Im91dHB1dCIgaWQ9InVybERhdGEiPjwvZGl2Pgor
CisgICAgPGgzIGNsYXNzPSJoZWFkaW5nIj50ZXh0L2h0bWw8L2gzPgorICAgIDxkaXYgY2xhc3M9
Im91dHB1dCIgaWQ9Imh0bWxEYXRhIj48L2Rpdj4KKyAgICA8ZGl2IGNsYXNzPSJvdXRwdXQiIGlk
PSJyYXdIVE1MRGF0YSI+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSW1hZ2UubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSW1hZ2UubW0KaW5kZXggYjIyODk2
YjRhNzg5ZjJjNDgwNTBjZjMwYmI4NmQwNTRhNmVlMjViNy4uODliYzA1YWU2NzBkY2JjNWQ0NTQ4
M2ZiZTdhZmI5NWY4MjIxZjQ3YyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9QYXN0ZUltYWdlLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUGFzdGVJbWFnZS5tbQpAQCAtMzYsMTAgKzM2LDYgQEAKICNpbmNsdWRl
IDxNb2JpbGVDb3JlU2VydmljZXMvTW9iaWxlQ29yZVNlcnZpY2VzLmg+CiAjZW5kaWYKIAotQGlu
dGVyZmFjZSBXS1dlYlZpZXcgKCkKLS0gKHZvaWQpcGFzdGU6KGlkKXNlbmRlcjsKLUBlbmQKLQog
I2lmIFBMQVRGT1JNKE1BQykKIHZvaWQgd3JpdGVJbWFnZURhdGFUb1Bhc3RlYm9hcmQoTlNTdHJp
bmcgKnR5cGUsIE5TRGF0YSAqZGF0YSkKIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVNaXhlZENvbnRlbnQubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlTWl4ZWRDb250ZW50Lm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjBkZDMzZTFlNmNlNzMyNzY3ZTAyZjcwNWJmNjUwOWQzNTQ1ZmMzYzQKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlTWl4ZWRDb250
ZW50Lm1tCkBAIC0wLDAgKzEsMTk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaWYgUExBVEZPUk0oTUFDKSAmJiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJQbGF0
Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2Vi
S2l0L1dLUHJlZmVyZW5jZXNSZWYuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1ByZWZlcmVuY2VzUmVm
UHJpdmF0ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CisKK3N0YXRpYyBOU1N0cmluZyAqaW1hZ2VQYXRoKCkKK3sKKyAgICByZXR1
cm4gW1tOU0J1bmRsZSBtYWluQnVuZGxlXSBwYXRoRm9yUmVzb3VyY2U6QCJpY29uIiBvZlR5cGU6
QCJwbmciIGluRGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKK30KKwordm9p
ZCB3cml0ZVR5cGVzQW5kRGF0YVRvUGFzdGVib2FyZChpZCB0eXBlLCAuLi4pCit7CisgICAgTlNN
dXRhYmxlQXJyYXk8TlNTdHJpbmcgKj4gKnR5cGVzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsK
KyAgICBOU011dGFibGVBcnJheSAqZGF0YSA9IFtOU011dGFibGVBcnJheSBhcnJheV07CisgICAg
dmFfbGlzdCBhcmd1bWVudExpc3Q7CisgICAgaWYgKHR5cGUpIHsKKyAgICAgICAgQVNTRVJUKFt0
eXBlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgICAgICBbdHlwZXMgYWRk
T2JqZWN0OnR5cGVdOworICAgICAgICB2YV9zdGFydChhcmd1bWVudExpc3QsIHR5cGUpOworICAg
ICAgICBOU1VJbnRlZ2VyIGluZGV4ID0gMTsKKyAgICAgICAgaWQgb2JqZWN0ID0gdmFfYXJnKGFy
Z3VtZW50TGlzdCwgaWQpOworICAgICAgICB3aGlsZSAob2JqZWN0KSB7CisgICAgICAgICAgICBp
ZiAoaW5kZXggJSAyKQorICAgICAgICAgICAgICAgIFtkYXRhIGFkZE9iamVjdDpvYmplY3RdOwor
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKFtvYmplY3QgaXNLaW5k
T2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgICAgICAgICAgICAgW3R5cGVzIGFkZE9i
amVjdDpvYmplY3RdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKytpbmRleDsKKyAgICAg
ICAgICAgIG9iamVjdCA9IHZhX2FyZyhhcmd1bWVudExpc3QsIGlkKTsKKyAgICAgICAgfQorICAg
ICAgICB2YV9lbmQoYXJndW1lbnRMaXN0KTsKKyAgICB9CisKKyAgICBpZiAodHlwZXMuY291bnQg
IT0gZGF0YS5jb3VudCkgeworICAgICAgICBOU0xvZyhAIkV4cGVjdGVkIG51bWJlciBvZiB0eXBl
czogJXR1IHRvIG1hdGNoIG51bWJlciBvZiBkYXRhIGl0ZW1zOiAldHUiLCB0eXBlcy5jb3VudCwg
ZGF0YS5jb3VudCk7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIGRlY2xh
cmVUeXBlczp0eXBlcyBvd25lcjpuaWxdOworICAgIFt0eXBlcyBlbnVtZXJhdGVPYmplY3RzVXNp
bmdCbG9jazpbJl0gKE5TU3RyaW5nICp0eXBlLCBOU1VJbnRlZ2VyIGluZGV4LCBCT09MICopIHsK
KyAgICAgICAgaWQgZGF0YVRvV3JpdGUgPSBkYXRhW2luZGV4XTsKKyAgICAgICAgaWYgKFtkYXRh
VG9Xcml0ZSBpc0tpbmRPZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkKKyAgICAgICAgICAgIFtbTlNQ
YXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBzZXREYXRhOmRhdGFUb1dyaXRlIGZvclR5cGU6
dHlwZV07CisgICAgICAgIGVsc2UgaWYgKFtkYXRhVG9Xcml0ZSBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dKQorICAgICAgICAgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9h
cmRdIHNldFN0cmluZzpkYXRhVG9Xcml0ZSBmb3JUeXBlOnR5cGVdOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVib2FyZF0gc2V0UHJvcGVydHlM
aXN0OmRhdGFUb1dyaXRlIGZvclR5cGU6dHlwZV07CisgICAgfV07Cit9CisKK3N0YXRpYyBSZXRh
aW5QdHI8VGVzdFdLV2ViVmlldz4gc2V0VXBXZWJWaWV3KCkKK3sKKyAgICBhdXRvIHdlYlZpZXcg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDQwMCwgNDAwKV0pOworICAgIFdLUHJlZmVyZW5jZXNTZXRDdXN0b21QYXN0ZWJvYXJk
RGF0YUVuYWJsZWQoKFdLUHJlZmVyZW5jZXNSZWYpW3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJl
ZmVyZW5jZXMsIHRydWUpOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VO
YW1lZDpAIkRhdGFUcmFuc2ZlciJdOworICAgIHJldHVybiB3ZWJWaWV3OworfQorCitzdGF0aWMg
TlNTdHJpbmcgKm1hcmt1cFN0cmluZygpCit7CisgICAgLy8gVGhlIHNjcmlwdCB0YWcgYW5kIG1v
dXNlb3ZlciBsaXN0ZW5lciBhdHRyaWJ1dGUgaW4gdGhlIG1hcmt1cCBzdHJpbmcgYmVsb3cgc2hv
dWxkIGJlIG9taXR0ZWQgZHVyaW5nCisgICAgLy8gc2FuaXRpemF0aW9uIHdoaWxlIHBhc3Rpbmcu
CisgICAgcmV0dXJuIEAiPHNjcmlwdD5mb28oKTwvc2NyaXB0PjxzdHJvbmcgb25tb3VzZW92ZXI9
J2phdmFzY3JpcHQ6dm9pZCgwKSc+SEVMTE8gV09STEQ8L3N0cm9uZz4iOworfQorCituYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CisKK1RFU1QoUGFzdGVNaXhlZENvbnRlbnQsIEltYWdlRmlsZUFu
ZFBsYWluVGV4dCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBzZXRVcFdlYlZpZXcoKTsKKyAgICB3
cml0ZVR5cGVzQW5kRGF0YVRvUGFzdGVib2FyZChOU0ZpbGVuYW1lc1Bib2FyZFR5cGUsIEBbIGlt
YWdlUGF0aCgpIF0sIE5TUGFzdGVib2FyZFR5cGVTdHJpbmcsIGltYWdlUGF0aCgpLCBuaWwpOwor
ICAgIFt3ZWJWaWV3IHBhc3RlOm5pbF07CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkZpbGVzIiwg
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInR5cGVzLnRleHRDb250ZW50
Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiKEZJTEUsIGltYWdlL3BuZykiLCBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaXRlbXMudGV4dENvbnRlbnQiXSk7CisgICAg
RVhQRUNUX1dLX1NUUkVRKCIoJ2ljb24ucG5nJywgaW1hZ2UvcG5nKSIsIFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJmaWxlcy50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoIiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ1
cmxEYXRhLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInRleHREYXRhLnRleHRDb250ZW50Il0pOwor
ICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImh0bWxEYXRhLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwg
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInJhd0hUTUxEYXRhLnRleHRD
b250ZW50Il0pOworfQorCitURVNUKFBhc3RlTWl4ZWRDb250ZW50LCBJbWFnZUZpbGVBbmRXZWJB
cmNoaXZlKQoreworICAgIGF1dG8gd2ViVmlldyA9IHNldFVwV2ViVmlldygpOworICAgIE5TVVJM
ICptYWluUmVzb3VyY2VVUkwgPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOkAiL3NvbWUvbm9uZXhp
c3RlbnQvZmlsZS5odG1sIl07CisgICAgYXV0byBtYWluUmVzb3VyY2UgPSBhZG9wdE5TKFtbV2Vi
UmVzb3VyY2UgYWxsb2NdIGluaXRXaXRoRGF0YTpbbWFya3VwU3RyaW5nKCkgZGF0YVVzaW5nRW5j
b2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIFVSTDptYWluUmVzb3VyY2VVUkwgTUlNRVR5cGU6
QCJ0ZXh0L2h0bWwiIHRleHRFbmNvZGluZ05hbWU6QCJ1dGYtOCIgZnJhbWVOYW1lOm5pbF0pOwor
ICAgIGF1dG8gYXJjaGl2ZSA9IGFkb3B0TlMoW1tXZWJBcmNoaXZlIGFsbG9jXSBpbml0V2l0aE1h
aW5SZXNvdXJjZTptYWluUmVzb3VyY2UuZ2V0KCkgc3VicmVzb3VyY2VzOm5pbCBzdWJmcmFtZUFy
Y2hpdmVzOm5pbF0pOworICAgIHdyaXRlVHlwZXNBbmREYXRhVG9QYXN0ZWJvYXJkKE5TRmlsZW5h
bWVzUGJvYXJkVHlwZSwgQFsgaW1hZ2VQYXRoKCkgXSwgV2ViQXJjaGl2ZVBib2FyZFR5cGUsIFth
cmNoaXZlIGRhdGFdLCBuaWwpOworICAgIFt3ZWJWaWV3IHBhc3RlOm5pbF07CisKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoIkZpbGVzLCB0ZXh0L2h0bWwiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRp
bmdKYXZhU2NyaXB0OkAidHlwZXMudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVR
KCIoU1RSSU5HLCB0ZXh0L2h0bWwpLCAoRklMRSwgaW1hZ2UvcG5nKSIsIFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpdGVtcy50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoIignaWNvbi5wbmcnLCBpbWFnZS9wbmcpIiwgW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImZpbGVzLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9X
S19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInVybERh
dGEudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidGV4dERhdGEudGV4dENvbnRlbnQiXSk7CisgICAg
RVhQRUNUX1dLX1NUUkVRKCJIRUxMTyBXT1JMRCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJodG1sRGF0YS50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
W1t3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJyYXdIVE1MRGF0YS50ZXh0
Q29udGVudCJdIGNvbnRhaW5zU3RyaW5nOkAic2NyaXB0Il0pOworfQorCitURVNUKFBhc3RlTWl4
ZWRDb250ZW50LCBJbWFnZUZpbGVBbmRIVE1MKQoreworICAgIGF1dG8gd2ViVmlldyA9IHNldFVw
V2ViVmlldygpOworICAgIHdyaXRlVHlwZXNBbmREYXRhVG9QYXN0ZWJvYXJkKE5TRmlsZW5hbWVz
UGJvYXJkVHlwZSwgQFsgaW1hZ2VQYXRoKCkgXSwgTlNQYXN0ZWJvYXJkVHlwZUhUTUwsIG1hcmt1
cFN0cmluZygpLCBuaWwpOworICAgIFt3ZWJWaWV3IHBhc3RlOm5pbF07CisKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoIkZpbGVzLCB0ZXh0L2h0bWwiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAidHlwZXMudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIo
U1RSSU5HLCB0ZXh0L2h0bWwpLCAoRklMRSwgaW1hZ2UvcG5nKSIsIFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpdGVtcy50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoIignaWNvbi5wbmcnLCBpbWFnZS9wbmcpIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFs
dWF0aW5nSmF2YVNjcmlwdDpAImZpbGVzLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19T
VFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInVybERhdGEu
dGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidGV4dERhdGEudGV4dENvbnRlbnQiXSk7CisgICAgRVhQ
RUNUX1dLX1NUUkVRKCJIRUxMTyBXT1JMRCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJodG1sRGF0YS50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfRkFMU0UoW1t3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJyYXdIVE1MRGF0YS50ZXh0Q29u
dGVudCJdIGNvbnRhaW5zU3RyaW5nOkAic2NyaXB0Il0pOworfQorCitURVNUKFBhc3RlTWl4ZWRD
b250ZW50LCBJbWFnZUZpbGVBbmRSVEYpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gc2V0VXBXZWJW
aWV3KCk7CisgICAgYXV0byB0ZXh0ID0gYWRvcHROUyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJp
bmcgYWxsb2NdIGluaXRdKTsKKyAgICBbdGV4dCBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOltbTlNB
dHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0cmluZzpAImxpbmsgdG8gIl1dOworICAg
IFt0ZXh0IGFwcGVuZEF0dHJpYnV0ZWRTdHJpbmc6W1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2Nd
IGluaXRXaXRoU3RyaW5nOkAiYXBwbGUiIGF0dHJpYnV0ZXM6QHsgTlNMaW5rQXR0cmlidXRlTmFt
ZTogW05TVVJMIFVSTFdpdGhTdHJpbmc6QCJodHRwczovL3d3dy5hcHBsZS5jb20vIl0gfV1dOwor
ICAgIE5TRGF0YSAqcnRmRGF0YSA9IFt0ZXh0IFJURkZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBb
dGV4dCBsZW5ndGhdKSBkb2N1bWVudEF0dHJpYnV0ZXM6QHsgfV07CisgICAgd3JpdGVUeXBlc0Fu
ZERhdGFUb1Bhc3RlYm9hcmQoTlNGaWxlbmFtZXNQYm9hcmRUeXBlLCBAWyBpbWFnZVBhdGgoKSBd
LCBOU1Bhc3RlYm9hcmRUeXBlUlRGLCBydGZEYXRhLCBuaWwpOworICAgIFt3ZWJWaWV3IHBhc3Rl
Om5pbF07CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkZpbGVzLCB0ZXh0L2h0bWwiLCBbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidHlwZXMudGV4dENvbnRlbnQiXSk7Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKCIoU1RSSU5HLCB0ZXh0L2h0bWwpLCAoRklMRSwgaW1hZ2UvcG5n
KSIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpdGVtcy50ZXh0Q29u
dGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIignaWNvbi5wbmcnLCBpbWFnZS9wbmcpIiwg
W3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImZpbGVzLnRleHRDb250ZW50
Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAInVybERhdGEudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVR
KCIiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidGV4dERhdGEudGV4
dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJsaW5rIHRvIGFwcGxlIiwgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImh0bWxEYXRhLnRleHRDb250ZW50Il0p
OworICAgIEVYUEVDVF9XS19TVFJFUSgiaHR0cHM6Ly93d3cuYXBwbGUuY29tLyIsIFt3ZWJWaWV3
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJodG1sRGF0YS5xdWVyeVNlbGVjdG9yKCdh
JykuaHJlZiJdKTsKK30KKworVEVTVChQYXN0ZU1peGVkQ29udGVudCwgSW1hZ2VGaWxlQW5kVVJM
KQoreworICAgIGF1dG8gd2ViVmlldyA9IHNldFVwV2ViVmlldygpOworICAgIHdyaXRlVHlwZXNB
bmREYXRhVG9QYXN0ZWJvYXJkKE5TVVJMUGJvYXJkVHlwZSwgQCJodHRwczovL3d3dy53ZWJraXQu
b3JnLyIsIE5TRmlsZW5hbWVzUGJvYXJkVHlwZSwgQFsgaW1hZ2VQYXRoKCkgXSwgbmlsKTsKKyAg
ICBbd2ViVmlldyBwYXN0ZTpuaWxdOworCisgICAgRVhQRUNUX1dLX1NUUkVRKCJGaWxlcywgdGV4
dC91cmktbGlzdCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0eXBl
cy50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIihTVFJJTkcsIHRleHQvdXJp
LWxpc3QpLCAoRklMRSwgaW1hZ2UvcG5nKSIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJpdGVtcy50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIign
aWNvbi5wbmcnLCBpbWFnZS9wbmcpIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAImZpbGVzLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiaHR0cHM6
Ly93d3cud2Via2l0Lm9yZy8iLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAidXJsRGF0YS50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0ZXh0RGF0YS50ZXh0Q29udGVudCJd
KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0ph
dmFTY3JpcHQ6QCJodG1sRGF0YS50ZXh0Q29udGVudCJdKTsKK30KKworVEVTVChQYXN0ZU1peGVk
Q29udGVudCwgSW1hZ2VGaWxlV2l0aEhUTUxBbmRVUkwpCit7CisgICAgYXV0byB3ZWJWaWV3ID0g
c2V0VXBXZWJWaWV3KCk7CisgICAgd3JpdGVUeXBlc0FuZERhdGFUb1Bhc3RlYm9hcmQoTlNVUkxQ
Ym9hcmRUeXBlLCBAImh0dHBzOi8vd3d3LndlYmtpdC5vcmcvIiwgTlNQYXN0ZWJvYXJkVHlwZUhU
TUwsIG1hcmt1cFN0cmluZygpLCBOU0ZpbGVuYW1lc1Bib2FyZFR5cGUsIEBbIGltYWdlUGF0aCgp
IF0sIG5pbCk7CisgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKKworICAgIEVYUEVDVF9XS19TVFJF
USgiRmlsZXMsIHRleHQvdXJpLWxpc3QsIHRleHQvaHRtbCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJ0eXBlcy50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoIihTVFJJTkcsIHRleHQvdXJpLWxpc3QpLCAoU1RSSU5HLCB0ZXh0L2h0bWwpLCAoRklM
RSwgaW1hZ2UvcG5nKSIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJp
dGVtcy50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIignaWNvbi5wbmcnLCBp
bWFnZS9wbmcpIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImZpbGVz
LnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiaHR0cHM6Ly93d3cud2Via2l0
Lm9yZy8iLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidXJsRGF0YS50
ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0ZXh0RGF0YS50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoIkhFTExPIFdPUkxEIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImh0bWxEYXRhLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9GQUxTRShbW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInJhd0hUTUxEYXRhLnRleHRDb250
ZW50Il0gY29udGFpbnNTdHJpbmc6QCJzY3JpcHQiXSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFRl
c3RXZWJLaXRBUEkKKworI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgJiYgV0tfQVBJX0VOQUJMRUQK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvaW9zL0RhdGFJbnRlcmFjdGlv
blRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9u
VGVzdHMubW0KaW5kZXggNDA4NWZhYjljYTVjMmY3MDlhMGVmOGVkZmFlNjY2MDQ3ZDk0Nzc3NS4u
Y2QyMWMwMjljMjAzNGM0NjUxMDk3ZGYxMDhhNGQ2NWI1YThmYjBmZSAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0KKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUludGVyYWN0aW9uVGVzdHMubW0KQEAg
LTE0OTksNiArMTQ5OSwzNSBAQCBURVNUKERhdGFJbnRlcmFjdGlvblRlc3RzLCBEcmFnTGlmdFBy
ZXZpZXdEYXRhVHJhbnNmZXJTZXREcmFnSW1hZ2UpCiAKICNpZiBfX0lQSE9ORV9PU19WRVJTSU9O
X01JTl9SRVFVSVJFRCA+PSAxMTAzMDAKIAorc3RhdGljIE5TRGF0YSAqdGVzdEljb25JbWFnZURh
dGEoKQoreworICAgIHJldHVybiBbTlNEYXRhIGRhdGFXaXRoQ29udGVudHNPZkZpbGU6W1tOU0J1
bmRsZSBtYWluQnVuZGxlXSBwYXRoRm9yUmVzb3VyY2U6QCJpY29uIiBvZlR5cGU6QCJwbmciIGlu
RGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07Cit9CisKK1RFU1QoRGF0YUlu
dGVyYWN0aW9uVGVzdHMsIERhdGFUcmFuc2ZlckdldERhdGFXaGVuRHJvcHBpbmdJbWFnZUFuZE1h
cmt1cCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOworICAgIFdLUHJl
ZmVyZW5jZXNTZXRDdXN0b21QYXN0ZWJvYXJkRGF0YUVuYWJsZWQoKFdLUHJlZmVyZW5jZXNSZWYp
W3dlYlZpZXcgY29uZmlndXJhdGlvbl0ucHJlZmVyZW5jZXMsIHRydWUpOworICAgIFt3ZWJWaWV3
IHN5bmNocm9ub3VzbHlMb2FkVGVzdFBhZ2VOYW1lZDpAIkRhdGFUcmFuc2ZlciJdOworCisgICAg
YXV0byBzaW11bGF0b3IgPSBhZG9wdE5TKFtbRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yIGFsbG9j
XSBpbml0V2l0aFdlYlZpZXc6d2ViVmlldy5nZXQoKV0pOworICAgIGF1dG8gaXRlbVByb3ZpZGVy
ID0gYWRvcHROUyhbW1VJSXRlbVByb3ZpZGVyIGFsbG9jXSBpbml0XSk7CisgICAgW2l0ZW1Qcm92
aWRlciByZWdpc3RlckRhdGFSZXByZXNlbnRhdGlvbkZvclR5cGVJZGVudGlmaWVyOihOU1N0cmlu
ZyAqKWtVVFR5cGVQTkcgd2l0aERhdGE6dGVzdEljb25JbWFnZURhdGEoKV07CisgICAgTlNTdHJp
bmcgKm1hcmt1cFN0cmluZyA9IEAiPHNjcmlwdD5iYXIoKTwvc2NyaXB0PjxzdHJvbmcgb25tb3Vz
ZWRvd249amF2YXNjcmlwdDp2b2lkKDApPkhFTExPIFdPUkxEPC9zdHJvbmc+IjsKKyAgICBbaXRl
bVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZpZXI6KE5T
U3RyaW5nICopa1VUVHlwZUhUTUwgd2l0aERhdGE6W21hcmt1cFN0cmluZyBkYXRhVXNpbmdFbmNv
ZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOworICAgIFtpdGVtUHJvdmlkZXIgc2V0U3VnZ2Vz
dGVkTmFtZTpAImljb24iXTsKKyAgICBbc2ltdWxhdG9yIHNldEV4dGVybmFsSXRlbVByb3ZpZGVy
czpAWyBpdGVtUHJvdmlkZXIuZ2V0KCkgXV07CisgICAgW3NpbXVsYXRvciBydW5Gcm9tOkNHUG9p
bnRaZXJvIHRvOkNHUG9pbnRNYWtlKDUwLCAxMDApXTsKKworICAgIEVYUEVDVF9XS19TVFJFUSgi
RmlsZXMsIHRleHQvaHRtbCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJ0eXBlcy50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIihTVFJJTkcsIHRl
eHQvaHRtbCksIChGSUxFLCBpbWFnZS9wbmcpIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAIml0ZW1zLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgi
KCdpY29uLnBuZycsIGltYWdlL3BuZykiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiZmlsZXMudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidXJsRGF0YS50ZXh0Q29udGVu
dCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJ0ZXh0RGF0YS50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RS
RVEoIkhFTExPIFdPUkxEIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
Imh0bWxEYXRhLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9GQUxTRShbW3dlYlZpZXcgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInJhd0hUTUxEYXRhLnRleHRDb250ZW50Il0gY29u
dGFpbnNTdHJpbmc6QCJzY3JpcHQiXSk7Cit9CisKIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMs
IERhdGFUcmFuc2ZlckdldERhdGFXaGVuRHJvcHBpbmdQbGFpblRleHQpCiB7CiAgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dS
ZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCldKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFdLV2ViVmlldy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0
V0tXZWJWaWV3LmgKaW5kZXggZGFhM2IyNmQ2NmI4ZTg5MDE3MDRjYjU5ZjVmMTc0MTAxN2QwMWNk
ZS4uOTA4ZTA1MmIzYTFjMjliZDdlNWFiNzkyZTBkOGY4YzQ1NjMwZGRhYSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKQEAgLTM0LDYgKzM0LDEyIEBACiBAY2xh
c3MgX1dLQWN0aXZhdGVkRWxlbWVudEluZm87CiAjZW5kaWYKIAorQGludGVyZmFjZSBXS1dlYlZp
ZXcgKEFkZGl0aW9uYWxEZWNsYXJhdGlvbnMpCisjaWYgUExBVEZPUk0oTUFDKQorLSAodm9pZClw
YXN0ZTooaWQpc2VuZGVyOworI2VuZGlmCitAZW5kCisKIEBpbnRlcmZhY2UgVGVzdE1lc3NhZ2VI
YW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CiAtICh2b2lkKWFkZE1l
c3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSB3aXRoSGFuZGxlcjooZGlzcGF0Y2hfYmxvY2tfdClo
YW5kbGVyOwogQGVuZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGI1Y2QzYjg3ZmFiYTMwOGJiODA1MWU1ZmY1NmQ0NjAyY2U5
NmQyYWYuLjM2M2UxZTYxMzRiYTFmOTIzYWZmMGU4OGZiYTYxNjc2NTFjM2Y2YmYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNyBAQAorMjAxOC0wMi0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KKworICAgICAgICBQYXN0aW5nIGZyb20gRXhjZWwgbm8gbG9uZ2VyIHByb3ZpZGVz
IHRleHQvaHRtbCBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODI2MzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM3MDg3MDYwPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlYmFzZWxpbmUgc29t
ZSBleGlzdGluZyBsYXlvdXQgdGVzdHMuIFdlIG5vdyBleHBvc2UgInRleHQvaHRtbCIgYWxvbmdz
aWRlICJGaWxlcyIgb24gRGF0YVRyYW5zZmVyLnR5cGVzKCkgaW4KKyAgICAgICAgc29tZSBjaXJj
dW1zdGFuY2VzLiBUaGlzIGFsc28gcHJvdmlkZXMgc29tZSB0ZXN0IGNvdmVyYWdlIGZvciBlbnN1
cmluZyB0aGF0IHRoZSBwYXN0ZSBjb2RlcGF0aCBpT1MgYWxsb3dzIHRoZQorICAgICAgICBwYWdl
IHRvIHJlcXVlc3QgSFRNTCwgZXZlbiBpZiB0aGVyZSBhcmUgZmlsZXMgb24gdGhlIHBhc3RlYm9h
cmQuIFNlZSB0aGUgV2ViQ29yZSBDaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAg
ICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW11
bHRpcGxlLXRpbWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQv
ZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tY29weS1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1m
aWxlLW9uLWRyYWctZXhwZWN0ZWQudHh0OgorCisgICAgICAgIEFkanVzdCB0ZXN0IGV4cGVjdGF0
aW9ucyBmb3IgdGhlIGFkZGl0aW9uYWwgInRleHQvaHRtbCIgdHlwZS4KKworICAgICAgICAqIGVk
aXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1pbWFnZS1kb2VzLW5vdC1yZXZlYWwtZmlsZS11cmwtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1pbWFnZS1kb2Vz
LW5vdC1yZXZlYWwtZmlsZS11cmwuaHRtbDoKKworICAgICAgICBJbnN0ZWFkIG9mIGNoZWNraW5n
IHRoYXQgdHlwZXMgaXMgWyAiRmlsZXMiIF0sIGp1c3QgY2hlY2sgdGhhdCB0eXBlcyBjb250YWlu
cyAiRmlsZXMiLiBPbiBpT1MsIGNvcHlpbmcgYQorICAgICAgICBzZWxlY3RlZCBpbWFnZSBkb2Vz
IG5vdCBhbHNvIGNvcHkgSFRNTCwgYnV0IG9uIG1hY09TIGl0IGRvZXM7IHRoaXMgY292ZXJzIGJv
dGggY2FzZXMuCisKIDIwMTgtMDItMDggIE1hdHQgTGV3aXMgIDxqbGV3aXMzQGFwcGxlLmNvbT4K
IAogICAgICAgICBNYXJrZWQgbWVkaWEvVzNDL3ZpZGVvL2V2ZW50cy9ldmVudF9wcm9ncmVzc19t
YW51YWwuaHRtbCBhcyBmbGFreSBvbiBtYWNPUyBXSzIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtbXVs
dGlwbGUtdGltZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
L2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW11bHRpcGxlLXRpbWVzLWV4cGVjdGVk
LnR4dAppbmRleCAxZjgwYzU5ZGM5Y2I2MmQ3MmVjOWEwNDUwMzZkZjU1NjQ5YWQ0Nzg2Li42ZWYx
MDM4NGMxYWE3MGQ1NGVhMzdjMmI4YmM0YmU5M2I4MzkzYzFhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUt
bXVsdGlwbGUtdGltZXMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1tdWx0aXBsZS10aW1lcy1l
eHBlY3RlZC50eHQKQEAgLTI0Nyw3ICsyNDcsOCBAQCByZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBz
aG91bGQgYmUgbnVsbDogbnVsbAogNi4gQWZ0ZXIgYWRkaW5nIHR3byBmaWxlcyBhbmQgc29tZSBz
dHJpbmcgZGF0YSBhZ2FpbgogewogICAgICJkYXRhIjogewotICAgICAgICAiRmlsZXMiOiAiIgor
ICAgICAgICAiRmlsZXMiOiAiIiwKKyAgICAgICAgInRleHQvaHRtbCI6ICI8c3Ryb25nPnNvbWUg
c3R5bGVkIHRleHQ8L3N0cm9uZz4iCiAgICAgfSwKICAgICAiaXRlbXMiOiBbCiAgICAgICAgIHsK
QEAgLTI5Niw3ICsyOTcsOCBAQCByZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVs
bDogbnVsbAogNy4gQWZ0ZXIgcmVtb3ZpbmcgYXQgaW5kZXggMgogewogICAgICJkYXRhIjogewot
ICAgICAgICAiRmlsZXMiOiAiIgorICAgICAgICAiRmlsZXMiOiAiIiwKKyAgICAgICAgInRleHQv
aHRtbCI6ICI8c3Ryb25nPnNvbWUgc3R5bGVkIHRleHQ8L3N0cm9uZz4iCiAgICAgfSwKICAgICAi
aXRlbXMiOiBbCiAgICAgICAgIHsKQEAgLTM0MSw3ICszNDMsOCBAQCByZW1vdmVkSXRlbS5nZXRB
c0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogbnVsbAogOC4gQWZ0ZXIgcmVtb3ZpbmcgYXQgaW5kZXgg
MgogewogICAgICJkYXRhIjogewotICAgICAgICAiRmlsZXMiOiAiIgorICAgICAgICAiRmlsZXMi
OiAiIiwKKyAgICAgICAgInRleHQvaHRtbCI6ICI8c3Ryb25nPnNvbWUgc3R5bGVkIHRleHQ8L3N0
cm9uZz4iCiAgICAgfSwKICAgICAiaXRlbXMiOiBbCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQt
ZmlsZS1vbi1jb3B5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1jb3B5LWV4cGVjdGVkLnR4dApp
bmRleCBmZmRmNjdjYWVkMWIxMTc4YzQyZjhjNWQwMGI1OTU0NzcxZTZjZTliLi4yOWJjOTQ5YTQ4
OWNlZjk5ZWQxNmNiOGY0MDI2YTg5NjI1ZjBkM2QxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tY29w
eS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEt
dHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWNvcHktZXhwZWN0ZWQudHh0CkBAIC0xMjks
NyArMTI5LDggQEAgcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6IG51bGwK
IDUuIEFmdGVyIGFkZGluZyBhbiBIVE1MIHN0cmluZwogewogICAgICJkYXRhIjogewotICAgICAg
ICAiRmlsZXMiOiAiIgorICAgICAgICAiRmlsZXMiOiAiIiwKKyAgICAgICAgInRleHQvaHRtbCI6
ICI8YT5nb29kYnllIHdvcmxkPC9hPiIKICAgICB9LAogICAgICJpdGVtcyI6IFsKICAgICAgICAg
ewpAQCAtMTY0LDcgKzE2NSw4IEBAIHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBu
dWxsOiBudWxsCiA2LiBBZnRlciBhZGRpbmcgYW5vdGhlciBwbGFpbiB0ZXh0IGZpbGUKIHsKICAg
ICAiZGF0YSI6IHsKLSAgICAgICAgIkZpbGVzIjogIiIKKyAgICAgICAgIkZpbGVzIjogIiIsCisg
ICAgICAgICJ0ZXh0L2h0bWwiOiAiPGE+Z29vZGJ5ZSB3b3JsZDwvYT4iCiAgICAgfSwKICAgICAi
aXRlbXMiOiBbCiAgICAgICAgIHsKQEAgLTIxMyw3ICsyMTUsOCBAQCByZW1vdmVkSXRlbS5nZXRB
c0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogbnVsbAogNy4gQWZ0ZXIgcmVtb3ZpbmcgdGhlIGN1c3Rv
bSBmaWxlCiB7CiAgICAgImRhdGEiOiB7Ci0gICAgICAgICJGaWxlcyI6ICIiCisgICAgICAgICJG
aWxlcyI6ICIiLAorICAgICAgICAidGV4dC9odG1sIjogIjxhPmdvb2RieWUgd29ybGQ8L2E+Igog
ICAgIH0sCiAgICAgIml0ZW1zIjogWwogICAgICAgICB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24t
ZHJhZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10
cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tZHJhZy1leHBlY3RlZC50eHQKaW5kZXggN2Fk
YTY1NDE5M2ZkZTBkYTVmZmI4YTc2NWYxYjBhODE2NTk5NjVjMS4uMDdjMDZjY2RlNWRlZjM5NTQx
YmU4OWEwODgzNzM5ZTg5ZDhmNTg2MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWRyYWctZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVy
LWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1kcmFnLWV4cGVjdGVkLnR4dApAQCAtMTI5LDcgKzEyOSw4
IEBAIHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCiA1LiBBZnRl
ciBhZGRpbmcgYW4gSFRNTCBzdHJpbmcKIHsKICAgICAiZGF0YSI6IHsKLSAgICAgICAgIkZpbGVz
IjogIiIKKyAgICAgICAgIkZpbGVzIjogIiIsCisgICAgICAgICJ0ZXh0L2h0bWwiOiAiPGE+Z29v
ZGJ5ZSB3b3JsZDwvYT4iCiAgICAgfSwKICAgICAiaXRlbXMiOiBbCiAgICAgICAgIHsKQEAgLTE2
NCw3ICsxNjUsOCBAQCByZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVsbDogbnVs
bAogNi4gQWZ0ZXIgYWRkaW5nIGFub3RoZXIgcGxhaW4gdGV4dCBmaWxlCiB7CiAgICAgImRhdGEi
OiB7Ci0gICAgICAgICJGaWxlcyI6ICIiCisgICAgICAgICJGaWxlcyI6ICIiLAorICAgICAgICAi
dGV4dC9odG1sIjogIjxhPmdvb2RieWUgd29ybGQ8L2E+IgogICAgIH0sCiAgICAgIml0ZW1zIjog
WwogICAgICAgICB7CkBAIC0yMTMsNyArMjE1LDggQEAgcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkg
c2hvdWxkIGJlIG51bGw6IG51bGwKIDcuIEFmdGVyIHJlbW92aW5nIHRoZSBjdXN0b20gZmlsZQog
ewogICAgICJkYXRhIjogewotICAgICAgICAiRmlsZXMiOiAiIgorICAgICAgICAiRmlsZXMiOiAi
IiwKKyAgICAgICAgInRleHQvaHRtbCI6ICI8YT5nb29kYnllIHdvcmxkPC9hPiIKICAgICB9LAog
ICAgICJpdGVtcyI6IFsKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLWRvZXMtbm90LXJldmVhbC1maWxlLXVybC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtaW1hZ2UtZG9lcy1u
b3QtcmV2ZWFsLWZpbGUtdXJsLWV4cGVjdGVkLnR4dAppbmRleCBkZjY0YjAxMGU5YjhhNjg2ZmI2
OGJjNmIxZGI1MDcxNGYyOTQ1Y2RhLi4wYjQxNmNjNjdmY2E4ZjFkMjAzOTdhOWU5MGYwYjc3NWRh
ZDQ4ZWQ5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUt
aW1hZ2UtZG9lcy1ub3QtcmV2ZWFsLWZpbGUtdXJsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtaW1hZ2UtZG9lcy1ub3QtcmV2ZWFsLWZpbGUt
dXJsLWV4cGVjdGVkLnR4dApAQCAtMyw3ICszLDcgQEAgVGVzdHMgdGhhdCBwYXN0aW5nIGltYWdl
cyBkbyBub3QgcmV2ZWFsIGl0cyBmaWxlIFVSTC4gVG8gbWFudWFsbHkgdGVzdCwgY29weSB0aGUK
IE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCi1QQVNTIEpTT04uc3RyaW5naWZ5KGV2ZW50
LmNsaXBib2FyZERhdGEudHlwZXMpIGlzICJbXCJGaWxlc1wiXSIKK1BBU1MgZXZlbnQuY2xpcGJv
YXJkRGF0YS50eXBlcy5pbmRleE9mKCJGaWxlcyIpIGlzIG5vdCAtMQogUEFTUyBldmVudC5jbGlw
Ym9hcmREYXRhLmdldERhdGEoInVybCIpIGlzICIiCiBQQVNTIGV2ZW50LmNsaXBib2FyZERhdGEu
Z2V0RGF0YSgidGV4dC9wbGFpbiIpIGlzICIiCiBQQVNTIGV2ZW50LmNsaXBib2FyZERhdGEuZ2V0
RGF0YSgidGV4dC91cmktbGlzdCIpIGlzICIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvcGFzdGUtaW1hZ2UtZG9lcy1ub3QtcmV2ZWFsLWZpbGUtdXJsLmh0bWwg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtaW1hZ2UtZG9lcy1ub3QtcmV2
ZWFsLWZpbGUtdXJsLmh0bWwKaW5kZXggMmQ1ZThlZWU5ZmRkNGFlNjkzODdjNjZiZmY5ODA2OTNk
ZTQyNDc3MC4uZThlZjcwMzQ2NThlOWU0NmY1ZTgyZGI3ZGFlNWJiOGJkZjViZmIzMSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLWRvZXMtbm90
LXJldmVhbC1maWxlLXVybC5odG1sCisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9wYXN0ZS1pbWFnZS1kb2VzLW5vdC1yZXZlYWwtZmlsZS11cmwuaHRtbApAQCAtMzEsNyArMzEs
NyBAQCBmdW5jdGlvbiBydW5UZXN0KCkKIAogZnVuY3Rpb24gY2hlY2soZXZlbnQpCiB7Ci0gICAg
c2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdKU09OLnN0cmluZ2lmeShldmVudC5jbGlwYm9hcmREYXRh
LnR5cGVzKScsICdbIkZpbGVzIl0nKTsKKyAgICBzaG91bGROb3RCZSgnZXZlbnQuY2xpcGJvYXJk
RGF0YS50eXBlcy5pbmRleE9mKCJGaWxlcyIpJywgJy0xJyk7CiAgICAgc2hvdWxkQmVFcXVhbFRv
U3RyaW5nKCdldmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEoInVybCIpJywgJycpOwogICAgIHNo
b3VsZEJlRXF1YWxUb1N0cmluZygnZXZlbnQuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCJ0ZXh0L3Bs
YWluIiknLCAnJyk7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC5jbGlwYm9hcmRE
YXRhLmdldERhdGEoInRleHQvdXJpLWxpc3QiKScsICcnKTsK
</data>
<flag name="review"
          id="352395"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>333519</attachid>
            <date>2018-02-09 14:41:43 -0800</date>
            <delta_ts>2018-02-09 15:36:22 -0800</delta_ts>
            <desc>One last EWS run</desc>
            <filename>bug-182636-20180209144142.patch</filename>
            <type>text/plain</type>
            <size>50606</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI4MzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2QwNDk2OGNlNjEyM2I0
ZjUzNmQwNTA4MDM4YTI1Y2M2MTA3MTIxOC4uMzhiODE5Y2NmYjk4ZmRmYmI4NDgyMmY4Yjg1MGZl
NThiMzE0NTg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDE4LTAyLTA5ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFBhc3RpbmcgZnJv
bSBFeGNlbCBubyBsb25nZXIgcHJvdmlkZXMgdGV4dC9odG1sIGRhdGEKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjYzNgorICAgICAgICA8cmRhcjov
L3Byb2JsZW0vMzcwODcwNjA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgor
CisgICAgICAgIEFmdGVyIHIyMjI2NTYsIHdlIHRyZWF0IGltYWdlcyBvbiB0aGUgcGFzdGVib2Fy
ZCBhcyBmaWxlcy4gSG93ZXZlciwgd2UgYWxzbyBoYXZlIGFuIGV4aXN0aW5nIHBvbGljeSB3aGlj
aCBoaWRlcworICAgICAgICB0ZXh0IGRhdGEgKCJ0ZXh0L3VyaS1saXN0IiwgInRleHQvaHRtbCIs
ICJ0ZXh0L3BsYWluIikgZnJvbSB0aGUgcGFnZSB3aGVuIGZpbGVzIGFyZSBwcmVzZW50IG9uIHRo
ZSBwYXN0ZWJvYXJkLgorICAgICAgICBXaGVuIGNvcHlpbmcgYSB0YWJsZSwgTWljcm9zb2Z0IEV4
Y2VsIHdyaXRlcyBhIHJlbmRlcmluZyBvZiB0aGUgdGFibGUgdG8gdGhlIHBhc3RlYm9hcmQgYXMg
YW4gaW1hZ2UuIFRoaXMgbWVhbnMKKyAgICAgICAgdGhhdCB3ZSdsbCBoaWRlIG90aGVyIGRhdGEg
dHlwZXMgKGltcG9ydGFudGx5LCAndGV4dC9odG1sJykgdXBvbiBwYXN0aW5nLCBldmVuIHRob3Vn
aCBpbXBvcnRhbnQgY2xpZW50cyAoc3VjaCBhcworICAgICAgICBHb29nbGUgRG9jcyBhbmQgQ29u
Zmx1ZW5jZSkgZGVwZW5kIG9uIHRoZSAndGV4dC9odG1sJyBkYXRhIGluIG9yZGVyIHRvIGNvcnJl
Y3RseSBoYW5kbGUgdGhlIHBhc3RlIChyYXRoZXIgdGhhbgorICAgICAgICBwYXN0ZSBhcyBhbiBp
bWFnZSBvZiBhIHRhYmxlKS4KKworICAgICAgICBUbyBmaXggdGhpcywgd2UgYWRkIGFuIGV4Y2Vw
dGlvbiB0byB0aGUgRGF0YVRyYW5zZmVyLmdldERhdGEgY29kZXBhdGggd2hlbiB0aGUgcGFzdGVi
b2FyZCBjb250YWlucyBmaWxlcy4KKyAgICAgICAgSW5zdGVhZCBvZiBhbHdheXMgcmV0dXJuaW5n
IHRoZSBlbXB0eSBzdHJpbmcgZm9yIHRleHQvaHRtbCwgd2Ugc3RpbGwgYWxsb3cgcGFzdGVib2Fy
ZCBhY2Nlc3MsIGJ1dCBvbmx5IHJlYWQKKyAgICAgICAgZnJvbSBhIGxpbWl0ZWQgc2V0IG9mIHJp
Y2ggdGV4dCB0eXBlcywgaS5lLiB3ZWIgYXJjaGl2ZSwgUlRGKEQpLCBhbmQgSFRNTCBtYXJrdXAu
IEltcG9ydGFudGx5LCB0aGlzIHByZXZlbnRzCisgICAgICAgIHVzIGZyb20gZXhwb3NpbmcgYW55
IGZpbGUgcGF0aHMgdGhhdCBhcHBlYXIgYXMgcGxhaW4gdGV4dCBvciBVUkxzIG9uIHRoZSBwYXN0
ZWJvYXJkLiBKdXN0IGFzIGluIHRoZSByZWd1bGFyCisgICAgICAgIGNvZGVwYXRoIGZvciBnZXRE
YXRhKCksIGlmIHRoZSBwYXN0ZWJvYXJkIGRhdGEgY29tZXMgZnJvbSB0aGUgc2FtZSBvcmlnaW4s
IHdlIGFsbG93IHVuc2FuaXRpemVkIGFjY2VzczsKKyAgICAgICAgb3RoZXJ3aXNlLCB3ZSB1c2Ug
V2ViQ29udGVudE1hcmt1cFJlYWRlciB0byBleHRyYWN0IG1hcmt1cCBmcm9tIHRoZSBwYXN0ZWJv
YXJkLgorCisgICAgICAgIFRlc3RzOiAgUGFzdGVNaXhlZENvbnRlbnQuSW1hZ2VGaWxlQW5kUGxh
aW5UZXh0CisgICAgICAgICAgICAgICAgUGFzdGVNaXhlZENvbnRlbnQuSW1hZ2VGaWxlQW5kV2Vi
QXJjaGl2ZQorICAgICAgICAgICAgICAgIFBhc3RlTWl4ZWRDb250ZW50LkltYWdlRmlsZUFuZEhU
TUwKKyAgICAgICAgICAgICAgICBQYXN0ZU1peGVkQ29udGVudC5JbWFnZUZpbGVBbmRSVEYKKyAg
ICAgICAgICAgICAgICBQYXN0ZU1peGVkQ29udGVudC5JbWFnZUZpbGVBbmRVUkwKKyAgICAgICAg
ICAgICAgICBQYXN0ZU1peGVkQ29udGVudC5JbWFnZUZpbGVXaXRoSFRNTEFuZFVSTAorICAgICAg
ICAgICAgICAgIERhdGFJbnRlcmFjdGlvblRlc3RzLkRhdGFUcmFuc2ZlckdldERhdGFXaGVuRHJv
cHBpbmdJbWFnZUFuZE1hcmt1cAorCisgICAgICAgIEFsc28gcmViYXNlbGluZWQgc29tZSBsYXlv
dXQgdGVzdHMsIHdoaWNoIGNvdmVyIGNoYW5nZXMgaW4gYmVoYXZpb3Igd2hlbiBkcm9wcGluZyBv
biBtYWNPUyBhbmQgcGFzdGluZyBvbiBpT1MuCisKKyAgICAgICAgKiBkb20vRGF0YVRyYW5zZmVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6Z2V0RGF0YUZvckl0ZW0gY29u
c3QpOgorCisgICAgICAgIEF1Z21lbnQgdGhlIGNvZGVwYXRoIGhhbmRsaW5nIHRoZSBjYXNlIHdo
ZXJlIHRoZSBwYXN0ZWJvYXJkIGNvbnRhaW5zIGZpbGVzLCBzdWNoIHRoYXQgd2UgYWxsb3cgcmVh
ZGluZworICAgICAgICAidGV4dC9odG1sIiwgYnV0IG9ubHkgZnJvbSByaWNoIHRleHQgdHlwZXMu
CisKKyAgICAgICAgKFdlYkNvcmU6OkRhdGFUcmFuc2Zlcjo6cmVhZFN0cmluZ0Zyb21QYXN0ZWJv
YXJkIGNvbnN0KToKKworICAgICAgICBGYWN0b3Igb3V0IGxvZ2ljIGZvciByZWFkaW5nIGZyb20g
dGhlIHBhc3RlYm9hcmQgaW50byBhIHByaXZhdGUgaGVscGVyLiBUaGlzIGlzIGNhbGxlZCBpbiB0
d28gcGxhY2VzIGZyb20KKyAgICAgICAgZ2V0RGF0YUZvckl0ZW06IGluIHRoZSBub3JtYWwgKGV4
aXN0aW5nKSBwYXRoLCBhbmQgaW4gdGhlIGNhc2Ugd2hlcmUgd2UgYWxsb3cgJ3RleHQvaHRtbCcg
dG8gYmUgcmVhZCBkZXNwaXRlCisgICAgICAgIGZpbGVzIGFwcGVhcmluZyBpbiB0aGUgcGFzdGVi
b2FyZC4KKworICAgICAgICBPbmUgaW1wb3J0YW50IGRpZmZlcmVuY2UgaGVyZSBpcyB0aGF0IHRo
aXMgaGVscGVyIG5vdyB0YWtlcyBhIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5LCB3aG9zZSBwdXJw
b3NlIGlzIHRvCisgICAgICAgIHByZXZlbnQgcmVhZGluZyBmcm9tIG5vbi1yaWNoLXRleHQgdHlw
ZXMgd2hlbiBmaWxlcyBhcHBlYXIgaW4gdGhlIHBhc3RlYm9hcmQuCisKKyAgICAgICAgQW5vdGhl
ciB0d2VhayBoZXJlIGlzIHRoYXQgd2Ugbm93IHVzZSBgbG93ZXJjYXNlVHlwZWAgaW5zdGVhZCBv
ZiB0aGUgb3JpZ2luYWwgKHVuYWRqdXN0ZWQpIGB0eXBlYCB3aGVuIHJlYWRpbmcKKyAgICAgICAg
ZnJvbSB0aGUgcGFzdGVib2FyZC4gVGhpcyBkb2Vzbid0IHNlZW0gdG8gYmUgaW50ZW5kZWQgaW4g
dGhlIGZpcnN0IHBsYWNlLgorCisgICAgICAgIChXZWJDb3JlOjpEYXRhVHJhbnNmZXI6OnR5cGVz
IGNvbnN0KToKKworICAgICAgICBUd2VhayB0aGUgaW1wbGVtZW50YXRpb24gb2YgRGF0YVRyYW5z
ZmVyLnR5cGVzKCkgaW4gdGhlIGNhc2Ugd2hlcmUgZmlsZXMgZXhpc3Qgb24gdGhlIHBhc3RlYm9h
cmQsIHN1Y2ggdGhhdCB3ZQorICAgICAgICBhbHNvIGFkZCAidGV4dC9odG1sIiBpZiBpdCBpcyBw
cmVzZW50IGluIHRoZSBsaXN0IG9mIERPTS1zYWZlIHR5cGVzLgorCisgICAgICAgICogZG9tL0Rh
dGFUcmFuc2Zlci5oOgorICAgICAgICAqIHBsYXRmb3JtL1Bhc3RlYm9hcmQuaDoKKworICAgICAg
ICBJbnRyb2R1Y2UgV2ViQ29udGVudFJlYWRpbmdQb2xpY3ksIHdoaWNoIGluZGljYXRlcyB3aGV0
aGVyIG9yIG5vdCB3ZSBzaG91bGQgbGltaXQgd2ViIGNvbnRlbnQgcmVhZGluZyBmcm9tIHRoZQor
ICAgICAgICBwYXN0ZWJvYXJkIHRvIG9ubHkgcmljaCB0ZXh0IHR5cGVzIHVwb24gcGFzdGUgb3Ig
ZHJvcC4gTm9ybWFsbHksIHdlIGFsbG93IGFsbCB0eXBlcyB0byBiZSByZWFkIGFzIHdlYiBjb250
ZW50CisgICAgICAgICg6OkFueVR5cGUpLCBidXQgd2hlbiBmaWxlcyBhcHBlYXIgb24gdGhlIHBh
c3RlYm9hcmQsIHdlIGZvcmNlIE9ubHlSaWNoVGV4dFR5cGVzIHRvIGVuc3VyZSB0aGF0IG5vIG90
aGVyIHR5cGVzCisgICAgICAgIGNhbiB1bmludGVudGlvbmFsbHkgYmUgcmVhZCBiYWNrIGFzIHdl
YiBjb250ZW50LgorCisgICAgICAgICogcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9QYXN0ZWJvYXJkSU9T
Lm1tOgorCisgICAgICAgIFRlYWNoIFBhc3RlYm9hcmQgKG9uIGlPUykgdG8gcmVzcGVjdCBXZWJD
b250ZW50UmVhZGluZ1BvbGljeS4KKworICAgICAgICAoV2ViQ29yZTo6aXNUeXBlQWxsb3dlZEJ5
UmVhZGluZ1BvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpyZWFkKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlkZWxpdGllcyk6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW06CisKKyAgICAgICAgVGVh
Y2ggUGFzdGVib2FyZCAob24gbWFjT1MpIHRvIHJlc3BlY3QgV2ViQ29udGVudFJlYWRpbmdQb2xp
Y3kuCisKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmQ6OnJlYWQpOgorICAgICAgICAqIHBsYXRmb3JtL3dwZS9QYXN0ZWJvYXJkV1BFLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OnJlYWQpOgorCisgICAgICAgIEFkanVzdCBub24t
Q29jb2EgUGFzdGVib2FyZCBpbXBsZW1lbnRhdGlvbnMgZm9yIGFuIGludGVyZmFjZSBjaGFuZ2Uu
CisKIDIwMTgtMDItMDkgIFBlciBBcm5lIFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFzc2VydCB0aGF0IE5TQXBwIGlzIG5vdCBydW5uaW5nIGluIHRoZSBXZWJQcm9jZXNz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RhdGFUcmFuc2Zlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAppbmRleCBjMTA5NDIzZTljOWRlMjBjODI2
YjBlNzdkOGY5NmRmODQzMmZkNjg3Li4zZTcxYTczZjM0MDUzNWE2YjRiMTRkNDc3OWEzN2U5MTQ1
ODc3NDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmNwcApAQCAtMTU0LDkgKzE1NCwy
MyBAQCBTdHJpbmcgRGF0YVRyYW5zZmVyOjpnZXREYXRhRm9ySXRlbShEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgdHlwZSkgY29ucwogICAgICAgICAgICAgaWYgKFBhc3RlYm9hcmQ6
OmNhbkV4cG9zZVVSTFRvRE9NV2hlblBhc3RlYm9hcmRDb250YWluc0ZpbGVzKHVybFN0cmluZykp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHVybFN0cmluZzsKICAgICAgICAgfQorCisgICAgICAg
IGlmIChsb3dlcmNhc2VUeXBlID09ICJ0ZXh0L2h0bWwiICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3VzdG9tUGFzdGVib2FyZERhdGFFbmFibGVkKCkpIHsKKyAg
ICAgICAgICAgIC8vIElmIHRoZSBwYXN0ZWJvYXJkIGNvbnRhaW5zIGZpbGVzIGFuZCB0aGUgcGFn
ZSByZXF1ZXN0cyAndGV4dC9odG1sJywgd2Ugb25seSByZWFkIGZyb20gcmljaCB0ZXh0IHR5cGVz
IHRvIHByZXZlbnQgZmlsZQorICAgICAgICAgICAgLy8gcGF0aHMgZnJvbSBsZWFraW5nIChlLmcu
IGZyb20gcGxhaW4gdGV4dCBkYXRhIG9uIHRoZSBwYXN0ZWJvYXJkKSBzaW5jZSB3ZSBzYW5pdGl6
ZSBjcm9zcy1vcmlnaW4gbWFya3VwLiBIb3dldmVyLCBpZgorICAgICAgICAgICAgLy8gY3VzdG9t
IHBhc3RlYm9hcmQgZGF0YSBpcyBkaXNhYmxlZCwgdGhlbiB3ZSBjYW4ndCBlbnN1cmUgdGhhdCB0
aGUgbWFya3VwIHdlIGRlbGl2ZXIgaXMgc2FuaXRpemVkLCBzbyB3ZSBmYWxsIGJhY2sgdG8KKyAg
ICAgICAgICAgIC8vIGN1cnJlbnQgYmVoYXZpb3IgYW5kIHJldHVybiBhbiBlbXB0eSBzdHJpbmcu
CisgICAgICAgICAgICByZXR1cm4gcmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGRvY3VtZW50LCBs
b3dlcmNhc2VUeXBlLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeTo6T25seVJpY2hUZXh0VHlwZXMp
OworICAgICAgICB9CisKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKKyAgICByZXR1cm4g
cmVhZFN0cmluZ0Zyb21QYXN0ZWJvYXJkKGRvY3VtZW50LCBsb3dlcmNhc2VUeXBlLCBXZWJDb250
ZW50UmVhZGluZ1BvbGljeTo6QW55VHlwZSk7Cit9CisKK1N0cmluZyBEYXRhVHJhbnNmZXI6OnJl
YWRTdHJpbmdGcm9tUGFzdGVib2FyZChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYg
bG93ZXJjYXNlVHlwZSwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kgcG9saWN5KSBjb25zdAorewog
ICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5jdXN0b21Q
YXN0ZWJvYXJkRGF0YUVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIG1fcGFzdGVib2FyZC0+cmVh
ZFN0cmluZyhsb3dlcmNhc2VUeXBlKTsKIApAQCAtMTcwLDE1ICsxODQsMTUgQEAgU3RyaW5nIERh
dGFUcmFuc2Zlcjo6Z2V0RGF0YUZvckl0ZW0oRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJp
bmcmIHR5cGUpIGNvbnMKICAgICBpZiAoIVBhc3RlYm9hcmQ6OmlzU2FmZVR5cGVGb3JET01Ub1Jl
YWRBbmRXcml0ZShsb3dlcmNhc2VUeXBlKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGlm
ICghaXM8U3RhdGljUGFzdGVib2FyZD4oKm1fcGFzdGVib2FyZCkgJiYgdHlwZSA9PSAidGV4dC9o
dG1sIikgeworICAgIGlmICghaXM8U3RhdGljUGFzdGVib2FyZD4oKm1fcGFzdGVib2FyZCkgJiYg
bG93ZXJjYXNlVHlwZSA9PSAidGV4dC9odG1sIikgewogICAgICAgICBpZiAoIWRvY3VtZW50LmZy
YW1lKCkpCiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICBXZWJDb250ZW50TWFya3Vw
UmVhZGVyIHJlYWRlciB7ICpkb2N1bWVudC5mcmFtZSgpIH07Ci0gICAgICAgIG1fcGFzdGVib2Fy
ZC0+cmVhZChyZWFkZXIpOworICAgICAgICBtX3Bhc3RlYm9hcmQtPnJlYWQocmVhZGVyLCBwb2xp
Y3kpOwogICAgICAgICByZXR1cm4gcmVhZGVyLm1hcmt1cDsKICAgICB9CiAKLSAgICByZXR1cm4g
bV9wYXN0ZWJvYXJkLT5yZWFkU3RyaW5nKHR5cGUpOworICAgIHJldHVybiBtX3Bhc3RlYm9hcmQt
PnJlYWRTdHJpbmcobG93ZXJjYXNlVHlwZSk7CiB9CiAKIFN0cmluZyBEYXRhVHJhbnNmZXI6Omdl
dERhdGEoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHR5cGUpIGNvbnN0CkBAIC0y
OTMsNiArMzA3LDggQEAgVmVjdG9yPFN0cmluZz4gRGF0YVRyYW5zZmVyOjp0eXBlcyhBZGRGaWxl
c1R5cGUgYWRkRmlsZXNUeXBlKSBjb25zdAogICAgICAgICAgICAgdHlwZXMuYXBwZW5kKEFTQ0lJ
TGl0ZXJhbCgiRmlsZXMiKSk7CiAgICAgICAgIGlmIChzYWZlVHlwZXMuY29udGFpbnMoInRleHQv
dXJpLWxpc3QiKSkKICAgICAgICAgICAgIHR5cGVzLmFwcGVuZChBU0NJSUxpdGVyYWwoInRleHQv
dXJpLWxpc3QiKSk7CisgICAgICAgIGlmIChzYWZlVHlwZXMuY29udGFpbnMoInRleHQvaHRtbCIp
ICYmIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuY3VzdG9tUGFzdGVi
b2FyZERhdGFFbmFibGVkKCkpCisgICAgICAgICAgICB0eXBlcy5hcHBlbmQoQVNDSUlMaXRlcmFs
KCJ0ZXh0L2h0bWwiKSk7CiAgICAgICAgIHJldHVybiB0eXBlczsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9EYXRhVHJhbnNmZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9EYXRhVHJhbnNmZXIuaAppbmRleCAzMWRjNzk5ZmM3ZWY3YzcwMzc2NzQ3NzU0N2M0Y2IzNDBl
NDEwMjM0Li4wMGU5ZWY0NjEyMmYxYWJmODVjNzhkYTBhZmFiMTJmODJhOTdlNDI3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRGF0YVRyYW5zZmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RhdGFUcmFuc2Zlci5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIEVsZW1lbnQ7CiBj
bGFzcyBGaWxlTGlzdDsKIGNsYXNzIEZpbGU7CiBjbGFzcyBQYXN0ZWJvYXJkOworZW51bSBjbGFz
cyBXZWJDb250ZW50UmVhZGluZ1BvbGljeTsKIAogY2xhc3MgRGF0YVRyYW5zZmVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8RGF0YVRyYW5zZmVyPiB7CiBwdWJsaWM6CkBAIC0xMjEsNiArMTIyLDcgQEAg
cHJpdmF0ZToKICAgICBib29sIGZvckZpbGVEcmFnKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICNlbmRpZgogCisgICAgU3RyaW5nIHJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZChEb2N1bWVudCYs
IGNvbnN0IFN0cmluZyYgbG93ZXJjYXNlVHlwZSwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kpIGNv
bnN0OwogICAgIGJvb2wgc2hvdWxkU3VwcHJlc3NHZXRBbmRTZXREYXRhVG9Bdm9pZEV4cG9zaW5n
RmlsZVBhdGhzKCkgY29uc3Q7CiAKICAgICBlbnVtIGNsYXNzIEFkZEZpbGVzVHlwZSB7IE5vLCBZ
ZXMgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQuaAppbmRleCBlOTE3Y2MzOWM1NDcz
MjQ4NzBkZjk1ZDhjY2NlYmJiMGUyZjcxMTc2Li4xZWRjZTQxZDZiYzkxMzRlYTBlNDJhNDgzODRl
MDQxZjc1NzQ5MzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9QYXN0ZWJv
YXJkLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2FyZC5oCkBAIC02NCw2
ICs2NCw3IEBAIGNsYXNzIFJhbmdlOwogY2xhc3MgU2VsZWN0aW9uRGF0YTsKIGNsYXNzIFNoYXJl
ZEJ1ZmZlcjsKIAorZW51bSBjbGFzcyBXZWJDb250ZW50UmVhZGluZ1BvbGljeSB7IEFueVR5cGUs
IE9ubHlSaWNoVGV4dFR5cGVzIH07CiBlbnVtIFNob3VsZFNlcmlhbGl6ZVNlbGVjdGVkVGV4dEZv
ckRhdGFUcmFuc2ZlciB7IERlZmF1bHRTZWxlY3RlZFRleHRUeXBlLCBJbmNsdWRlSW1hZ2VBbHRU
ZXh0Rm9yRGF0YVRyYW5zZmVyIH07CiAKIC8vIEZvciB3cml0aW5nIHRvIHRoZSBwYXN0ZWJvYXJk
LiBHZW5lcmFsbHkgc29ydGVkIHdpdGggdGhlIHJpY2hlc3QgZm9ybWF0cyBvbiB0b3AuCkBAIC0y
MDksNyArMjEwLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBPUlQgdm9pZCBj
bGVhcihjb25zdCBTdHJpbmcmIHR5cGUpOwogCiAgICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYpOwotICAgIHZpcnR1YWwgV0VCQ09SRV9FWFBP
UlQgdm9pZCByZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJik7CisgICAgdmlydHVhbCBX
RUJDT1JFX0VYUE9SVCB2b2lkIHJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImLCBXZWJD
b250ZW50UmVhZGluZ1BvbGljeSA9IFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5OjpBbnlUeXBlKTsK
ICAgICB2aXJ0dWFsIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVhZChQYXN0ZWJvYXJkRmlsZVJlYWRl
ciYpOwogCiAgICAgdmlydHVhbCBXRUJDT1JFX0VYUE9SVCB2b2lkIHdyaXRlKGNvbnN0IFBhc3Rl
Ym9hcmRVUkwmKTsKQEAgLTI3Myw3ICsyNzQsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogI2lmIFBM
QVRGT1JNKElPUykKICAgICBib29sIHJlc3BlY3RzVVRJRmlkZWxpdGllcygpIGNvbnN0OwotICAg
IHZvaWQgcmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKFBhc3RlYm9hcmRXZWJDb250ZW50UmVh
ZGVyJik7CisgICAgdm9pZCByZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVib2FyZFdl
YkNvbnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSk7CiAKICAgICBlbnVtIGNs
YXNzIFJlYWRlclJlc3VsdCB7CiAgICAgICAgIFJlYWRUeXBlLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU3RhdGljUGFzdGVib2FyZC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU3RhdGljUGFzdGVib2FyZC5oCmluZGV4IDZhMzkzNGRhNDZkOGJmMzllY2UwMjU0YmM3
YzVkOTk3OGQ5OGRkMzUuLjAwN2U0M2ExOGVjNTdmN2I3MGM5YjRmMDM0ZDdiNzUwZGE3YzRiOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1N0YXRpY1Bhc3RlYm9hcmQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TdGF0aWNQYXN0ZWJvYXJkLmgKQEAgLTUzLDcg
KzUzLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXIoY29uc3QgU3RyaW5nJiB0eXBlKSBmaW5h
bDsKIAogICAgIHZvaWQgcmVhZChQYXN0ZWJvYXJkUGxhaW5UZXh0JikgZmluYWwgeyB9Ci0gICAg
dm9pZCByZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJikgZmluYWwgeyB9CisgICAgdm9p
ZCByZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiwgV2ViQ29udGVudFJlYWRpbmdQb2xp
Y3kpIGZpbmFsIHsgfQogCiAgICAgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkVVJMJikgZmlu
YWwgeyB9CiAgICAgdm9pZCB3cml0ZShjb25zdCBQYXN0ZWJvYXJkSW1hZ2UmKSBmaW5hbCB7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAppbmRleCBh
OGQ1ZTU5OWM4NTczZjBkYTg2MjYzZjdiNmU2YWIyY2RhZTRiODc3Li45OWQxMjAzZDYzMGY0MjEx
ZjNmZWM4Y2JlYWYyMzA1MjMzNTZkMDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL1Bhc3RlYm9hcmRHdGsuY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAgdm9pZCBQYXN0ZWJvYXJk
OjpyZWFkKFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQpCiAgICAgdGV4dC50ZXh0ID0gbV9zZWxl
Y3Rpb25EYXRhLT50ZXh0KCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJk
V2ViQ29udGVudFJlYWRlciYpCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNv
bnRlbnRSZWFkZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSkKIHsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Bhc3RlYm9hcmRJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2FyZElPUy5tbQppbmRleCBiODg3OTg0NzZmY2Nl
NTAzMmVkOGM1ZWQ4NjhkZWEwZDlmYzYxZjQ1Li5jNTEzMmUzY2MyOTk5OTNmYjFkMjVjOWQ5NGE4
NzQ0ZWI2ZGNiMmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFz
dGVib2FyZElPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvUGFzdGVib2Fy
ZElPUy5tbQpAQCAtMTYzLDYgKzE2MywxNSBAQCBzdGF0aWMgTlNBcnJheSogc3VwcG9ydGVkSW1h
Z2VUeXBlcygpCiAgICAgcmV0dXJuIEBbKGlkKWtVVFR5cGVQTkcsIChpZClrVVRUeXBlVElGRiwg
KGlkKWtVVFR5cGVKUEVHLCAoaWQpa1VUVHlwZUdJRl07CiB9CiAKK3N0YXRpYyBib29sIGlzVHlw
ZUFsbG93ZWRCeVJlYWRpbmdQb2xpY3koTlNTdHJpbmcgKnR5cGUsIFdlYkNvbnRlbnRSZWFkaW5n
UG9saWN5IHBvbGljeSkKK3sKKyAgICByZXR1cm4gcG9saWN5ID09IFdlYkNvbnRlbnRSZWFkaW5n
UG9saWN5OjpBbnlUeXBlCisgICAgICAgIHx8IFt0eXBlIGlzRXF1YWxUb1N0cmluZzpXZWJBcmNo
aXZlUGJvYXJkVHlwZV0KKyAgICAgICAgfHwgW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihOU1N0cmlu
ZyAqKWtVVFR5cGVIVE1MXQorICAgICAgICB8fCBbdHlwZSBpc0VxdWFsVG9TdHJpbmc6KE5TU3Ry
aW5nICopa1VUVHlwZVJURl0KKyAgICAgICAgfHwgW3R5cGUgaXNFcXVhbFRvU3RyaW5nOihOU1N0
cmluZyAqKWtVVFR5cGVGbGF0UlRGRF07Cit9CisKIFBhc3RlYm9hcmQ6OlJlYWRlclJlc3VsdCBQ
YXN0ZWJvYXJkOjpyZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlwZShQYXN0ZWJvYXJk
V2ViQ29udGVudFJlYWRlciYgcmVhZGVyLCBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5LCBO
U1N0cmluZyAqdHlwZSwgaW50IGl0ZW1JbmRleCkKIHsKICAgICBpZiAoW3R5cGUgaXNFcXVhbFRv
U3RyaW5nOldlYkFyY2hpdmVQYm9hcmRUeXBlXSkgewpAQCAtMjI1LDExICsyMzQsMTEgQEAgUGFz
dGVib2FyZDo6UmVhZGVyUmVzdWx0IFBhc3RlYm9hcmQ6OnJlYWRQYXN0ZWJvYXJkV2ViQ29udGVu
dERhdGFGb3JUeXBlKFBhc3RlYm8KICAgICByZXR1cm4gUmVhZGVyUmVzdWx0OjpEaWROb3RSZWFk
VHlwZTsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVh
ZGVyJiByZWFkZXIpCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRS
ZWFkZXImIHJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kgcG9saWN5KQogewogICAgIHJl
YWRlci5jb250ZW50T3JpZ2luID0gcmVhZE9yaWdpbigpOwogICAgIGlmIChyZXNwZWN0c1VUSUZp
ZGVsaXRpZXMoKSkgewotICAgICAgICByZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMocmVhZGVy
KTsKKyAgICAgICAgcmVhZFJlc3BlY3RpbmdVVElGaWRlbGl0aWVzKHJlYWRlciwgcG9saWN5KTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjQ1LDkgKzI1NCwxNCBAQCB2b2lkIFBhc3Rl
Ym9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRlcikKIAogICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbnVtYmVyT2ZJdGVtczsgaSsrKSB7CiAgICAgICAgIGZvciAoaW50
IHR5cGVJbmRleCA9IDA7IHR5cGVJbmRleCA8IG51bWJlck9mVHlwZXM7IHR5cGVJbmRleCsrKSB7
Ci0gICAgICAgICAgICBhdXRvIGl0ZW1SZXN1bHQgPSByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnRE
YXRhRm9yVHlwZShyZWFkZXIsIHN0cmF0ZWd5LCBbdHlwZXMgb2JqZWN0QXRJbmRleDp0eXBlSW5k
ZXhdLCBpKTsKKyAgICAgICAgICAgIE5TU3RyaW5nICp0eXBlID0gW3R5cGVzIG9iamVjdEF0SW5k
ZXg6dHlwZUluZGV4XTsKKyAgICAgICAgICAgIGlmICghaXNUeXBlQWxsb3dlZEJ5UmVhZGluZ1Bv
bGljeSh0eXBlLCBwb2xpY3kpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAg
ICAgICBhdXRvIGl0ZW1SZXN1bHQgPSByZWFkUGFzdGVib2FyZFdlYkNvbnRlbnREYXRhRm9yVHlw
ZShyZWFkZXIsIHN0cmF0ZWd5LCB0eXBlLCBpKTsKICAgICAgICAgICAgIGlmIChpdGVtUmVzdWx0
ID09IFJlYWRlclJlc3VsdDo6UGFzdGVib2FyZFdhc0NoYW5nZWRFeHRlcm5hbGx5KQogICAgICAg
ICAgICAgICAgIHJldHVybjsKKwogICAgICAgICAgICAgaWYgKGl0ZW1SZXN1bHQgPT0gUmVhZGVy
UmVzdWx0OjpSZWFkVHlwZSkKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAt
MjYyLDE0ICsyNzYsMTQgQEAgYm9vbCBQYXN0ZWJvYXJkOjpyZXNwZWN0c1VUSUZpZGVsaXRpZXMo
KSBjb25zdAogICAgIHJldHVybiBtX3Bhc3RlYm9hcmROYW1lID09ICJkYXRhIGludGVyYWN0aW9u
IHBhc3RlYm9hcmQiOwogfQogCi12b2lkIFBhc3RlYm9hcmQ6OnJlYWRSZXNwZWN0aW5nVVRJRmlk
ZWxpdGllcyhQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyKQordm9pZCBQYXN0ZWJv
YXJkOjpyZWFkUmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFk
ZXImIHJlYWRlciwgV2ViQ29udGVudFJlYWRpbmdQb2xpY3kgcG9saWN5KQogewogICAgIEFTU0VS
VChyZXNwZWN0c1VUSUZpZGVsaXRpZXMoKSk7CiAgICAgYXV0byYgc3RyYXRlZ3kgPSAqcGxhdGZv
cm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpOwogICAgIGZvciAoTlNVSW50ZWdl
ciBpbmRleCA9IDAsIG51bWJlck9mSXRlbXMgPSBzdHJhdGVneS5nZXRQYXN0ZWJvYXJkSXRlbXND
b3VudChtX3Bhc3RlYm9hcmROYW1lKTsgaW5kZXggPCBudW1iZXJPZkl0ZW1zOyArK2luZGV4KSB7
CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKICAgICAgICAgYXV0byBpbmZvID0gc3Ry
YXRlZ3kuaW5mb3JtYXRpb25Gb3JJdGVtQXRJbmRleChpbmRleCwgbV9wYXN0ZWJvYXJkTmFtZSk7
Ci0gICAgICAgIGJvb2wgY2FuUmVhZEF0dGFjaG1lbnQgPSBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxlZCgpICYmICFpbmZvLnBh
dGhGb3JGaWxlVXBsb2FkLmlzRW1wdHkoKTsKKyAgICAgICAgYm9vbCBjYW5SZWFkQXR0YWNobWVu
dCA9IHBvbGljeSA9PSBXZWJDb250ZW50UmVhZGluZ1BvbGljeTo6QW55VHlwZSAmJiBSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmF0dGFjaG1lbnRFbGVtZW50RW5hYmxl
ZCgpICYmICFpbmZvLnBhdGhGb3JGaWxlVXBsb2FkLmlzRW1wdHkoKTsKICAgICAgICAgaWYgKGNh
blJlYWRBdHRhY2htZW50ICYmIGluZm8ucHJlZmVycmVkUHJlc2VudGF0aW9uU3R5bGUgPT0gUGFz
dGVib2FyZEl0ZW1QcmVzZW50YXRpb25TdHlsZTo6QXR0YWNobWVudCkgewogICAgICAgICAgICAg
cmVhZGVyLnJlYWRGaWxlUGF0aHMoeyBpbmZvLnBhdGhGb3JGaWxlVXBsb2FkIH0pOwogICAgICAg
ICAgICAgY29udGludWU7CkBAIC0yODEsNiArMjk1LDkgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFk
UmVzcGVjdGluZ1VUSUZpZGVsaXRpZXMoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFkZXImIHJlYWRl
cikKICAgICAgICAgc3RyYXRlZ3kuZ2V0VHlwZXNCeUZpZGVsaXR5Rm9ySXRlbUF0SW5kZXgodHlw
ZXNGb3JJdGVtSW5PcmRlck9mRmlkZWxpdHksIGluZGV4LCBtX3Bhc3RlYm9hcmROYW1lKTsKICAg
ICAgICAgUmVhZGVyUmVzdWx0IHJlc3VsdCA9IFJlYWRlclJlc3VsdDo6RGlkTm90UmVhZFR5cGU7
CiAgICAgICAgIGZvciAoYXV0byYgdHlwZSA6IHR5cGVzRm9ySXRlbUluT3JkZXJPZkZpZGVsaXR5
KSB7CisgICAgICAgICAgICBpZiAoIWlzVHlwZUFsbG93ZWRCeVJlYWRpbmdQb2xpY3kodHlwZSwg
cG9saWN5KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAgICAgcmVzdWx0
ID0gcmVhZFBhc3RlYm9hcmRXZWJDb250ZW50RGF0YUZvclR5cGUocmVhZGVyLCBzdHJhdGVneSwg
dHlwZSwgaW5kZXgpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBSZWFkZXJSZXN1bHQ6OlBh
c3RlYm9hcmRXYXNDaGFuZ2VkRXh0ZXJuYWxseSkKICAgICAgICAgICAgICAgICByZXR1cm47CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IDk0NDhl
OTFhNTkwOGFmNTJhYTgzNWNmMDQwN2JhODcwNmM1ODUwMmMuLjYzNzY0OTY1OThhMmZkZWYxZDJk
NTAyMWFmN2YyN2FhNjFkMGM0ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9QYXN0ZWJvYXJkTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9Q
YXN0ZWJvYXJkTWFjLm1tCkBAIC0zMzEsNyArMzMxLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpyZWFk
KFBhc3RlYm9hcmRQbGFpblRleHQmIHRleHQpCiAgICAgdGV4dC5pc1VSTCA9ICF0ZXh0LnRleHQu
aXNOdWxsKCk7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVu
dFJlYWRlciYgcmVhZGVyKQordm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250
ZW50UmVhZGVyJiByZWFkZXIsIFdlYkNvbnRlbnRSZWFkaW5nUG9saWN5IHBvbGljeSkKIHsKICAg
ICBQYXN0ZWJvYXJkU3RyYXRlZ3kmIHN0cmF0ZWd5ID0gKnBsYXRmb3JtU3RyYXRlZ2llcygpLT5w
YXN0ZWJvYXJkU3RyYXRlZ3koKTsKIApAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgUGFzdGVib2Fy
ZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYgcmVhZGVyKQogICAgICAgICB9CiAg
ICAgfQogCi0gICAgaWYgKHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lGaWxlbmFtZXNQYXN0
ZWJvYXJkVHlwZSgpKSkpIHsKKyAgICBpZiAocG9saWN5ID09IFdlYkNvbnRlbnRSZWFkaW5nUG9s
aWN5OjpBbnlUeXBlICYmIHR5cGVzLmNvbnRhaW5zKFN0cmluZyhsZWdhY3lGaWxlbmFtZXNQYXN0
ZWJvYXJkVHlwZSgpKSkpIHsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gcGF0aHM7CiAgICAgICAg
IHN0cmF0ZWd5LmdldFBhdGhuYW1lc0ZvclR5cGUocGF0aHMsIGxlZ2FjeUZpbGVuYW1lc1Bhc3Rl
Ym9hcmRUeXBlKCksIG1fcGFzdGVib2FyZE5hbWUpOwogICAgICAgICBpZiAobV9jaGFuZ2VDb3Vu
dCAhPSBjaGFuZ2VDb3VudCgpIHx8IHJlYWRlci5yZWFkRmlsZVBhdGhzKHBhdGhzKSkKQEAgLTM3
NCw2ICszNzQsOSBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRS
ZWFkZXImIHJlYWRlcikKICAgICAgICAgfQogICAgIH0KIAorICAgIGlmIChwb2xpY3kgPT0gV2Vi
Q29udGVudFJlYWRpbmdQb2xpY3k6Ok9ubHlSaWNoVGV4dFR5cGVzKQorICAgICAgICByZXR1cm47
CisKICAgICBpZiAodHlwZXMuY29udGFpbnMoU3RyaW5nKGxlZ2FjeVRJRkZQYXN0ZWJvYXJkVHlw
ZSgpKSkpIHsKICAgICAgICAgaWYgKFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHN0cmF0
ZWd5LmJ1ZmZlckZvclR5cGUobGVnYWN5VElGRlBhc3RlYm9hcmRUeXBlKCksIG1fcGFzdGVib2Fy
ZE5hbWUpKSB7CiAgICAgICAgICAgICBpZiAobV9jaGFuZ2VDb3VudCAhPSBjaGFuZ2VDb3VudCgp
IHx8IHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJlbGVhc2VOb25OdWxsKCksIEFTQ0lJTGl0ZXJh
bCgiaW1hZ2UvdGlmZiIpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9QYXN0ZWJvYXJkV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJv
YXJkV2luLmNwcAppbmRleCBjOWEwZDJkZjdjNGQ5Y2IzMzdhMGRlYjdjMGE5MzY1MTlhNGQ5ODU0
Li40NjY1MGYwNWVhOGMyZDExOTJmZTJkZmE2Y2UxMTIzZmJiODQ3MDkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCkBAIC0xMDczLDcgKzEwNzMs
NyBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlKGNvbnN0IFBhc3RlYm9hcmRXZWJDb250ZW50JikK
IHsKIH0KIAotdm9pZCBQYXN0ZWJvYXJkOjpyZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVy
JikKK3ZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVudFJlYWRlciYsIFdl
YkNvbnRlbnRSZWFkaW5nUG9saWN5KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93cGUvUGFzdGVib2FyZFdQRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93cGUvUGFzdGVib2FyZFdQRS5jcHAKaW5kZXggMjQ3YWY1NTEyYzZjMGFkMGRhMGVjN2YzMTAy
OTA0MTYxYTBhNTg4YS4uMWViMmQyOWE1OGU5MGJiYzBlNGNhNTg4Y2M2OGUxNjY0Y2VmYzMzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3BlL1Bhc3RlYm9hcmRXUEUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dwZS9QYXN0ZWJvYXJkV1BFLmNwcApAQCAt
OTcsNyArOTcsNyBAQCB2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFBsYWluVGV4dCYg
dGV4dCkKICAgICB0ZXh0LnRleHQgPSBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+cGFzdGVib2FyZFN0
cmF0ZWd5KCktPnJlYWRTdHJpbmdGcm9tUGFzdGVib2FyZCgwLCAidGV4dC9wbGFpbjtjaGFyc2V0
PXV0Zi04Iik7CiB9CiAKLXZvaWQgUGFzdGVib2FyZDo6cmVhZChQYXN0ZWJvYXJkV2ViQ29udGVu
dFJlYWRlciYpCit2b2lkIFBhc3RlYm9hcmQ6OnJlYWQoUGFzdGVib2FyZFdlYkNvbnRlbnRSZWFk
ZXImLCBXZWJDb250ZW50UmVhZGluZ1BvbGljeSkKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwog
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU3
N2QyNzNjZTdjYzYwZjVkZTdiMmNmMGQwNmNiOTYyZDE3ODk1ODUuLjcwMDBlNzczMzNjMWVhYWQ1
MzU4N2RkNDI3NzA5NmIxMTY0ZmQwYTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxOC0wMi0wOCAgV2Vuc29uIEhz
aWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBQYXN0aW5nIGZyb20gRXhj
ZWwgbm8gbG9uZ2VyIHByb3ZpZGVzIHRleHQvaHRtbCBkYXRhCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI2MzYKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzM3MDg3MDYwPgorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAg
ICAgICBBZGQgbmV3IEFQSSB0ZXN0cyB0byBleGVyY2lzZSBwYXN0aW5nIGltYWdlcyB3aXRoIHZh
cmlvdXMgb3RoZXIgY29udGVudCB0eXBlcyBvbiBtYWNPUywgYW5kIHdoZW4gZHJvcHBpbmcgaW1h
Z2VzCisgICAgICAgIGFuZCBIVE1MIG1hcmt1cCBvbiBpT1MuIFNlZSB0aGUgV2ViQ29yZSBDaGFu
Z2VMb2cgZm9yIG1vcmUgZGV0YWlsLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9EYXRhVHJhbnNmZXIuaHRtbDogQWRkZWQuCisKKyAgICAgICAg
QWRkIGEgbmV3IEFQSSB0ZXN0IGhhcm5lc3MgdGhhdCBkdW1wcyB2YXJpb3VzIGJpdHMgb2YgaW5m
b3JtYXRpb24gYWJvdXQgYSBEYXRhVHJhbnNmZXIgdXBvbiBwYXN0ZSBhbmQgZHJvcC4KKyAgICAg
ICAgV2hpbGUgc29tZXdoYXQgc2ltaWxhciB0byBzb21lIGV4aXN0aW5nIGhhcm5lc3NlcywgdGhp
cyBtYWtlcyBhIGRpc3RpbmN0aW9uIGJldHdlZW4gdGhlIHJhdyBIVE1MIGRhdGEgb24gdGhlCisg
ICAgICAgIHBhc3RlYm9hcmQgYW5kIHRoZSBhY3R1YWwgcmVzdWx0IG9mIGluc2VydGluZyBzYWlk
IEhUTUwgaW50byB0aGUgRE9NLiBUaGlzIGFsbG93cyB1cyB0byBjaGVjayB0aGF0IHRoZSBIVE1M
IGhhcworICAgICAgICBiZWVuIHNhbml0aXplZCwgd2hpbGUgbWFraW5nIGNoZWNrcyBmb3IgdGhl
IGFjdHVhbCBjb250ZW50IG9mIHRoZSBIVE1MIHJvYnVzdCBhZ2FpbnN0IGlubGluZSBzdHlsZSBj
aGFuZ2VzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0
ZUltYWdlLm1tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFz
dGVNaXhlZENvbnRlbnQubW06IEFkZGVkLgorCisgICAgICAgIEFkZCBhIG5ldyB0ZXN0IHN1aXRl
IHRvIGV4ZXJjaXNlIHBhc3RpbmcgbWl4ZWQgY29udGVudCB0eXBlcy4gSW4gdGhlc2UgdGVzdCBj
YXNlcywgdGhlIHBhc3RlYm9hcmQgY29udGFpbnMgYQorICAgICAgICBmaWxlLCB3aXRoIHNvbWUg
Y29tYmluYXRpb24gb2YgcGxhaW4gdGV4dCwgcmljaCB0ZXh0LCBhbmQgVVJMcy4KKworICAgICAg
ICAoaW1hZ2VQYXRoKToKKyAgICAgICAgKHdyaXRlVHlwZXNBbmREYXRhVG9QYXN0ZWJvYXJkKToK
KworICAgICAgICBBZGQgYSBoZWxwZXIgdG8gd3JpdGUgYSB2YXItYXJnIGxpc3Qgb2YgY29udGVu
dCB0eXBlcyBhbmQgZGF0YSB0byB0aGUgZ2VuZXJhbCBOU1Bhc3RlYm9hcmQuCisKKyAgICAgICAg
KHNldFVwV2ViVmlldyk6CisgICAgICAgIChtYXJrdXBTdHJpbmcpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0YUlu
dGVyYWN0aW9uVGVzdHMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjp0ZXN0SWNvbkltYWdl
RGF0YSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaDoKKworICAgICAgICBNb3ZlIGEgcHJpdmF0ZSBk
ZWNsYXJhdGlvbiBvZiAtW1dLV2ViVmlldyBwYXN0ZTpdIG91dCB0byBUZXN0V0tXZWJWaWV3Lmgs
IHNvIHRoYXQgaXQgY2FuIGJlIHNoYXJlZCBhY3Jvc3MKKyAgICAgICAgbXVsdGlwbGUgdGVzdHMu
IEN1cnJlbnRseSwgaXQgb25seSByZXNpZGVzIGluIFBhc3RlSW1hZ2UubW0sIGJ1dCBJIG5lZWQg
aXQgaW4gUGFzdGVNaXhlZENvbnRlbnQubW0gYXMgd2VsbC4KKwogMjAxOC0wMi0wOSAgQ2FybG9z
IEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgQWRkIGEgd2F5
IHRvIGNoZWNrIGlmIGEgaG9zdCBpcyBhbiBJUCBhZGRyZXNzCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDNhZjhkMjRhMWRkYjdmZjFmZWZhOTI1OWE4YWI5MmY1NWNiODY2YmUuLmEyYzc1MTY4
YzQzZTk3NzEyYTQ5NDM0YTA0ZTEwZmY3MWI5YTg0YWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC03NDEsNiArNzQxLDggQEAKIAkJRjQ0RDA2NEExRjM5NjJGMjAwMUEwRTI5IC8qIEVkaXRp
bmdUZXN0SGFybmVzcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEY0NEQwNjQ5MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3MubW0g
Ki87IH07CiAJCUY0NTEyRTEzMUY2MEM0NDYwMEJCMzY5RSAvKiBEYXRhVHJhbnNmZXJJdGVtLWdl
dEFzRW50cnkuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNDUxMkUxMjFGNjBDNDM0MDBCQjM2OUUgLyogRGF0YVRyYW5zZmVySXRlbS1n
ZXRBc0VudHJ5Lmh0bWwgKi87IH07CiAJCUY0NTM4RUY3MUU4NDczRTYwMEI1Qzk1MyAvKiBsYXJn
ZS1yZWQtc3F1YXJlLnBuZyBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNDUzOEVGMDFFODQ2QjQxMDBCNUM5NTMgLyogbGFyZ2UtcmVkLXNxdWFy
ZS5wbmcgKi87IH07CisJCUY0NTdBOUI4MjAyRDVDREMwMEY3RTlENSAvKiBQYXN0ZU1peGVkQ29u
dGVudC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
NTdBOUI2MjAyRDVDREMwMEY3RTlENSAvKiBQYXN0ZU1peGVkQ29udGVudC5tbSAqLzsgfTsKKwkJ
RjQ1N0E5RDYyMDJENjhBRjAwRjdFOUQ1IC8qIERhdGFUcmFuc2Zlci5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NTdBOUIzMjAyRDUz
NTMwMEY3RTlENSAvKiBEYXRhVHJhbnNmZXIuaHRtbCAqLzsgfTsKIAkJRjQ1QjYzRkIxRjE5N0Y0
QTAwOUQzOEI5IC8qIGltYWdlLW1hcC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NUI2M0ZBMUYxOTdGMzMwMDlEMzhCOSAvKiBpbWFn
ZS1tYXAuaHRtbCAqLzsgfTsKIAkJRjQ1QjYzRkUxRjE5RDQxMDAwOUQzOEI5IC8qIEFjdGlvblNo
ZWV0VGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNDVCNjNGQzFGMTlENDEwMDA5RDM4QjkgLyogQWN0aW9uU2hlZXRUZXN0cy5tbSAqLzsgfTsK
IAkJRjQ2ODQ5QkUxRUVGNThFNDAwQjkzN0ZFIC8qIFVJUGFzdGVib2FyZFRlc3RzLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ2ODQ5QkQxRUVGNThF
NDAwQjkzN0ZFIC8qIFVJUGFzdGVib2FyZFRlc3RzLm1tICovOyB9OwpAQCAtODk0LDYgKzg5Niw3
IEBACiAJCQkJRjRBQjU3OEExRjY1MTY1NDAwREIwREExIC8qIGN1c3RvbS1kcmFnZ2FibGUtZGl2
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMjkwRjQyNzUxNzJBMjIxQzAwOTM5RkYw
IC8qIGN1c3RvbS1wcm90b2NvbC1zeW5jLXhoci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAog
CQkJCUY0ODZCMUQwMUY2Nzk1MjMwMEYzNEJERCAvKiBEYXRhVHJhbnNmZXItc2V0RHJhZ0ltYWdl
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCisJCQkJRjQ1N0E5RDYyMDJENjhBRjAwRjdFOUQ1
IC8qIERhdGFUcmFuc2Zlci5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0NTEyRTEz
MUY2MEM0NDYwMEJCMzY5RSAvKiBEYXRhVHJhbnNmZXJJdGVtLWdldEFzRW50cnkuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLywKIAkJCQlDMDdFNkNCMjEzRkQ3MzkzMDAzOEIyMkIgLyogZGV2aWNl
UGl4ZWxSYXRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTA3OTlDMzRCMUVCQTMz
MDEwMDNCNzUzMiAvKiBkaXNhYmxlR2V0VXNlck1lZGlhLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCkBAIC0xODYyLDYgKzE4NjUsOCBAQAogCQlGNDREMDY0OTFGMzk2MkUzMDAxQTBFMjkgLyog
RWRpdGluZ1Rlc3RIYXJuZXNzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gRWRpdGluZ1Rlc3RIYXJuZXNzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGNDUxMkUxMjFGNjBDNDM0MDBCQjM2OUUgLyogRGF0YVRyYW5zZmVySXRlbS1nZXRBc0VudHJ5
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiRGF0YVRyYW5zZmVySXRlbS1nZXRB
c0VudHJ5Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDUzOEVGMDFFODQ2
QjQxMDBCNUM5NTMgLyogbGFyZ2UtcmVkLXNxdWFyZS5wbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBpbWFnZS5wbmc7IHBhdGggPSAibGFyZ2UtcmVk
LXNxdWFyZS5wbmciOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDU3QTlCMzIwMkQ1
MzUzMDBGN0U5RDUgLyogRGF0YVRyYW5zZmVyLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBh
dGggPSBEYXRhVHJhbnNmZXIuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ1
N0E5QjYyMDJENUNEQzAwRjdFOUQ1IC8qIFBhc3RlTWl4ZWRDb250ZW50Lm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gUGFzdGVNaXhlZENvbnRlbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUY0NUI2M0ZBMUYxOTdGMzMwMDlEMzhCOSAvKiBpbWFnZS1tYXAuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0
aCA9ICJpbWFnZS1tYXAuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NUI2
M0ZDMUYxOUQ0MTAwMDlEMzhCOSAvKiBBY3Rpb25TaGVldFRlc3RzLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gQWN0aW9uU2hlZXRUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjQ2ODQ5QkQxRUVGNThFNDAwQjkzN0ZFIC8qIFVJUGFzdGVib2FyZFRlc3RzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gVUlQYXN0ZWJvYXJkVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yMTMwLDYgKzIxMzUsNyBAQAogCQkJCUNFQkNBMTJFMUUzQTY2MDEwMEM3
MzI5MyAvKiBPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeS5tbSAqLywKIAkJCQk5QkNCN0My
NjIwMTMwNjAwMDAzRTdDMEMgLyogUGFzdGVIVE1MLm1tICovLAogCQkJCTlCRENDRDg1MUY3RDBC
MDcwMDAwOUExOCAvKiBQYXN0ZUltYWdlLm1tICovLAorCQkJCUY0NTdBOUI2MjAyRDVDREMwMEY3
RTlENSAvKiBQYXN0ZU1peGVkQ29udGVudC5tbSAqLywKIAkJCQk5QkREOTU1NjFGODM2ODM2MDBE
MjBDNjAgLyogUGFzdGVSVEZELm1tICovLAogCQkJCTlCMjM0NjQxMUY5NDNBMjQwMERCMUQyMyAv
KiBQYXN0ZVdlYkFyY2hpdmUubW0gKi8sCiAJCQkJM0ZDQzRGRTQxRUM0RTg1MjAwNzZFMzdDIC8q
IFBpY3R1cmVJblBpY3R1cmVEZWxlZ2F0ZS5tbSAqLywKQEAgLTIzNjQsNiArMjM3MCw3IEBACiAJ
CQkJOUI2MjYzMEIxRjhDMjUxMDAwN0VFMjlCIC8qIGNvcHktdXJsLmh0bWwgKi8sCiAJCQkJRjRB
QjU3ODkxRjY1MTY0QjAwREIwREExIC8qIGN1c3RvbS1kcmFnZ2FibGUtZGl2Lmh0bWwgKi8sCiAJ
CQkJRjQ4NkIxQ0YxRjY3OTRGRjAwRjM0QkREIC8qIERhdGFUcmFuc2Zlci1zZXREcmFnSW1hZ2Uu
aHRtbCAqLywKKwkJCQlGNDU3QTlCMzIwMkQ1MzUzMDBGN0U5RDUgLyogRGF0YVRyYW5zZmVyLmh0
bWwgKi8sCiAJCQkJRjQ1MTJFMTIxRjYwQzQzNDAwQkIzNjlFIC8qIERhdGFUcmFuc2Zlckl0ZW0t
Z2V0QXNFbnRyeS5odG1sICovLAogCQkJCTA3OTlDMzRBMUVCQTMyRjQwMDNCNzUzMiAvKiBkaXNh
YmxlR2V0VXNlck1lZGlhLmh0bWwgKi8sCiAJCQkJNjNBNjFCOEExRkFEMjA0RDAwRjA2ODg1IC8q
IGRpc3BsYXktbW9kZS5odG1sICovLApAQCAtMzU1NSw2ICszNTYyLDcgQEAKIAkJCQk3Q0NFN0Yw
QTFBNDExQUU2MDA0NDdDNEMgLyogUGFzdGVib2FyZE5vdGlmaWNhdGlvbnMubW0gaW4gU291cmNl
cyAqLywKIAkJCQk5QkNCN0MyODIwMTMwNjAwMDAzRTdDMEMgLyogUGFzdGVIVE1MLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJOUJEQ0NEODcxRjdEMEIwNzAwMDA5QTE4IC8qIFBhc3RlSW1hZ2UubW0g
aW4gU291cmNlcyAqLywKKwkJCQlGNDU3QTlCODIwMkQ1Q0RDMDBGN0U5RDUgLyogUGFzdGVNaXhl
ZENvbnRlbnQubW0gaW4gU291cmNlcyAqLywKIAkJCQk5QkREOTU1ODFGODM2ODM2MDBEMjBDNjAg
LyogUGFzdGVSVEZELm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOUIyMzQ2NDIxRjk0M0UyNzAwREIx
RDIzIC8qIFBhc3RlV2ViQXJjaGl2ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMDUzMUQw
QTY0M0EwMEZFQkNGMyAvKiBQZW5kaW5nQVBJUmVxdWVzdFVSTC5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGF0YVRy
YW5zZmVyLmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0RhdGFU
cmFuc2Zlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5MWQ2MDYwMDE3YzMzOTI5NDMxMTM2Mjg5YmM2ZmQ0
NDY3MGM5N2IKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL0RhdGFUcmFuc2Zlci5odG1sCkBAIC0wLDAgKzEsNzcgQEAKKzwhRE9DVFlQRSBo
dG1sPgorPGh0bWw+Cis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNl
LXdpZHRoLCBpbml0aWFsLXNjYWxlPTEiPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgICBi
b2R5LCBodG1sIHsKKyAgICAgICAgICAgIHdpZHRoOiAxMDAlOworICAgICAgICAgICAgaGVpZ2h0
OiAxMDAlOworICAgICAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKKyAgICAgICAgfQor
CisgICAgICAgIC5oZWFkaW5nIHsKKyAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrOworICAgICAg
ICAgICAgd2lkdGg6IDEwMCU7CisgICAgICAgICAgICBib3JkZXItdG9wOiAycHggZ3JheSBkYXNo
ZWQ7CisgICAgICAgICAgICBtYXJnaW4tdG9wOiAyMHB4OworICAgICAgICAgICAgYm94LXNpemlu
ZzogYm9yZGVyLWJveDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD4KKyAg
ICAgICAgZnVuY3Rpb24gc2V0dXAoKQorICAgICAgICB7CisgICAgICAgICAgICBkb2N1bWVudC5i
b2R5LmFkZEV2ZW50TGlzdGVuZXIoInBhc3RlIiwgZXZlbnQgPT4geworICAgICAgICAgICAgICAg
IGR1bXBBc091dHB1dChldmVudC5jbGlwYm9hcmREYXRhKTsKKyAgICAgICAgICAgICAgICBldmVu
dC5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBkb2N1bWVu
dC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImRyb3AiLCBldmVudCA9PiB7CisgICAgICAgICAgICAg
ICAgZHVtcEFzT3V0cHV0KGV2ZW50LmRhdGFUcmFuc2Zlcik7CisgICAgICAgICAgICAgICAgZXZl
bnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgZG9jdW1l
bnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJiZWZvcmVpbnB1dCIsIGV2ZW50ID0+IGV2ZW50LnBy
ZXZlbnREZWZhdWx0KCkpOworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5mb2N1cygpOworICAg
ICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZHVtcEFzT3V0cHV0KGRhdGFUcmFuc2ZlcikKKyAg
ICAgICAgeworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jb250ZW50RWRpdGFibGUgPSBmYWxz
ZTsKKyAgICAgICAgICAgIHR5cGVzLnRleHRDb250ZW50ID0gZGF0YVRyYW5zZmVyLnR5cGVzLmpv
aW4oIiwgIik7CisgICAgICAgICAgICBpdGVtcy50ZXh0Q29udGVudCA9IEFycmF5LmZyb20oZGF0
YVRyYW5zZmVyLml0ZW1zKS5tYXAoaXRlbSA9PiBgKCR7aXRlbS5raW5kLnRvVXBwZXJDYXNlKCl9
LCAke2l0ZW0udHlwZX0pYCkuam9pbigiLCAiKTsKKyAgICAgICAgICAgIGZpbGVzLnRleHRDb250
ZW50ID0gQXJyYXkuZnJvbShkYXRhVHJhbnNmZXIuZmlsZXMpLm1hcChmaWxlID0+IGAoJyR7Zmls
ZS5uYW1lfScsICR7ZmlsZS50eXBlfSlgKS5qb2luKCIsICIpOworICAgICAgICAgICAgdXJsRGF0
YS50ZXh0Q29udGVudCA9IGRhdGFUcmFuc2Zlci5nZXREYXRhKCJ0ZXh0L3VyaS1saXN0Iik7Cisg
ICAgICAgICAgICB0ZXh0RGF0YS50ZXh0Q29udGVudCA9IGRhdGFUcmFuc2Zlci5nZXREYXRhKCJ0
ZXh0L3BsYWluIik7CisgICAgICAgICAgICBsZXQgbWFya3VwID0gZGF0YVRyYW5zZmVyLmdldERh
dGEoInRleHQvaHRtbCIpOworICAgICAgICAgICAgaHRtbERhdGEuaW5zZXJ0QWRqYWNlbnRIVE1M
KCJiZWZvcmVlbmQiLCBtYXJrdXApOworICAgICAgICAgICAgcmF3SFRNTERhdGEudGV4dENvbnRl
bnQgPSBtYXJrdXA7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiByZXNldCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIEFycmF5LmZyb20oZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNz
TmFtZSgib3V0cHV0IikpLm1hcChlbGVtZW50ID0+IHsKKyAgICAgICAgICAgICAgICBlbGVtZW50
LmlubmVySFRNTCA9ICIiOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBkb2N1bWVudC5i
b2R5LmNvbnRlbnRFZGl0YWJsZSA9IHRydWU7CisgICAgICAgIH0KKyAgICA8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IGNvbnRlbnRlZGl0YWJsZSBvbmxvYWQ9c2V0dXAoKT4KKyAgICA8aDMgY2xh
c3M9ImhlYWRpbmciPlR5cGVzPC9oMz4KKyAgICA8ZGl2IGNsYXNzPSJvdXRwdXQiIGlkPSJ0eXBl
cyI+PC9kaXY+CisKKyAgICA8aDMgY2xhc3M9ImhlYWRpbmciPkl0ZW1zPC9oMz4KKyAgICA8ZGl2
IGNsYXNzPSJvdXRwdXQiIGlkPSJpdGVtcyI+PC9kaXY+CisKKyAgICA8aDMgY2xhc3M9ImhlYWRp
bmciPkZpbGVzPC9oMz4KKyAgICA8ZGl2IGNsYXNzPSJvdXRwdXQiIGlkPSJmaWxlcyI+PC9kaXY+
CisKKyAgICA8aDMgY2xhc3M9ImhlYWRpbmciPnRleHQvcGxhaW48L2gzPgorICAgIDxkaXYgY2xh
c3M9Im91dHB1dCIgaWQ9InRleHREYXRhIj48L2Rpdj4KKworICAgIDxoMyBjbGFzcz0iaGVhZGlu
ZyI+dGV4dC91cmktbGlzdDwvaDM+CisgICAgPGRpdiBjbGFzcz0ib3V0cHV0IiBpZD0idXJsRGF0
YSI+PC9kaXY+CisKKyAgICA8aDMgY2xhc3M9ImhlYWRpbmciPnRleHQvaHRtbDwvaDM+CisgICAg
PGRpdiBjbGFzcz0ib3V0cHV0IiBpZD0iaHRtbERhdGEiPjwvZGl2PgorICAgIDxkaXYgY2xhc3M9
Im91dHB1dCIgaWQ9InJhd0hUTUxEYXRhIj48L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVJbWFnZS5t
bSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVJbWFnZS5tbQpp
bmRleCBiMjI4OTZiNGE3ODlmMmM0ODA1MGNmMzBiYjg2ZDA1NGE2ZWUyNWI3Li44OWJjMDVhZTY3
MGRjYmM1ZDQ1NDgzZmJlN2FmYjk1ZjgyMjFmNDdjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Bhc3RlSW1hZ2UubW0KKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZUltYWdlLm1tCkBAIC0zNiwxMCArMzYsNiBA
QAogI2luY2x1ZGUgPE1vYmlsZUNvcmVTZXJ2aWNlcy9Nb2JpbGVDb3JlU2VydmljZXMuaD4KICNl
bmRpZgogCi1AaW50ZXJmYWNlIFdLV2ViVmlldyAoKQotLSAodm9pZClwYXN0ZTooaWQpc2VuZGVy
OwotQGVuZAotCiAjaWYgUExBVEZPUk0oTUFDKQogdm9pZCB3cml0ZUltYWdlRGF0YVRvUGFzdGVi
b2FyZChOU1N0cmluZyAqdHlwZSwgTlNEYXRhICpkYXRhKQogewpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXN0ZU1peGVkQ29udGVudC5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFzdGVNaXhlZENvbnRlbnQubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMGRkMzNlMWU2Y2U3MzI3NjdlMDJmNzA1YmY2NTA5ZDM1NDVmYzNjNAotLS0g
L2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFz
dGVNaXhlZENvbnRlbnQubW0KQEAgLTAsMCArMSwxOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpZiBQTEFURk9STShNQUMpICYmIFdLX0FQSV9FTkFCTEVECisKKyNp
bXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisj
aW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlc1JlZi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLUHJl
ZmVyZW5jZXNSZWZQcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisjaW1wb3J0
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworc3RhdGljIE5TU3RyaW5nICppbWFnZVBhdGgoKQor
eworICAgIHJldHVybiBbW05TQnVuZGxlIG1haW5CdW5kbGVdIHBhdGhGb3JSZXNvdXJjZTpAImlj
b24iIG9mVHlwZTpAInBuZyIgaW5EaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJd
OworfQorCit2b2lkIHdyaXRlVHlwZXNBbmREYXRhVG9QYXN0ZWJvYXJkKGlkIHR5cGUsIC4uLikK
K3sKKyAgICBOU011dGFibGVBcnJheTxOU1N0cmluZyAqPiAqdHlwZXMgPSBbTlNNdXRhYmxlQXJy
YXkgYXJyYXldOworICAgIE5TTXV0YWJsZUFycmF5ICpkYXRhID0gW05TTXV0YWJsZUFycmF5IGFy
cmF5XTsKKyAgICB2YV9saXN0IGFyZ3VtZW50TGlzdDsKKyAgICBpZiAodHlwZSkgeworICAgICAg
ICBBU1NFUlQoW3R5cGUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgICAg
IFt0eXBlcyBhZGRPYmplY3Q6dHlwZV07CisgICAgICAgIHZhX3N0YXJ0KGFyZ3VtZW50TGlzdCwg
dHlwZSk7CisgICAgICAgIE5TVUludGVnZXIgaW5kZXggPSAxOworICAgICAgICBpZCBvYmplY3Qg
PSB2YV9hcmcoYXJndW1lbnRMaXN0LCBpZCk7CisgICAgICAgIHdoaWxlIChvYmplY3QpIHsKKyAg
ICAgICAgICAgIGlmIChpbmRleCAlIDIpCisgICAgICAgICAgICAgICAgW2RhdGEgYWRkT2JqZWN0
Om9iamVjdF07CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoW29i
amVjdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsKKyAgICAgICAgICAgICAgICBb
dHlwZXMgYWRkT2JqZWN0Om9iamVjdF07CisgICAgICAgICAgICB9CisgICAgICAgICAgICArK2lu
ZGV4OworICAgICAgICAgICAgb2JqZWN0ID0gdmFfYXJnKGFyZ3VtZW50TGlzdCwgaWQpOworICAg
ICAgICB9CisgICAgICAgIHZhX2VuZChhcmd1bWVudExpc3QpOworICAgIH0KKworICAgIGlmICh0
eXBlcy5jb3VudCAhPSBkYXRhLmNvdW50KSB7CisgICAgICAgIE5TTG9nKEAiRXhwZWN0ZWQgbnVt
YmVyIG9mIHR5cGVzOiAldHUgdG8gbWF0Y2ggbnVtYmVyIG9mIGRhdGEgaXRlbXM6ICV0dSIsIHR5
cGVzLmNvdW50LCBkYXRhLmNvdW50KTsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbW05TUGFzdGVib2FyZCBnZW5lcmFsUGFzdGVi
b2FyZF0gZGVjbGFyZVR5cGVzOnR5cGVzIG93bmVyOm5pbF07CisgICAgW3R5cGVzIGVudW1lcmF0
ZU9iamVjdHNVc2luZ0Jsb2NrOlsmXSAoTlNTdHJpbmcgKnR5cGUsIE5TVUludGVnZXIgaW5kZXgs
IEJPT0wgKikgeworICAgICAgICBpZCBkYXRhVG9Xcml0ZSA9IGRhdGFbaW5kZXhdOworICAgICAg
ICBpZiAoW2RhdGFUb1dyaXRlIGlzS2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dKQorICAgICAg
ICAgICAgW1tOU1Bhc3RlYm9hcmQgZ2VuZXJhbFBhc3RlYm9hcmRdIHNldERhdGE6ZGF0YVRvV3Jp
dGUgZm9yVHlwZTp0eXBlXTsKKyAgICAgICAgZWxzZSBpZiAoW2RhdGFUb1dyaXRlIGlzS2luZE9m
Q2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCisgICAgICAgICAgICBbW05TUGFzdGVib2FyZCBnZW5l
cmFsUGFzdGVib2FyZF0gc2V0U3RyaW5nOmRhdGFUb1dyaXRlIGZvclR5cGU6dHlwZV07CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIFtbTlNQYXN0ZWJvYXJkIGdlbmVyYWxQYXN0ZWJvYXJkXSBz
ZXRQcm9wZXJ0eUxpc3Q6ZGF0YVRvV3JpdGUgZm9yVHlwZTp0eXBlXTsKKyAgICB9XTsKK30KKwor
c3RhdGljIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiBzZXRVcFdlYlZpZXcoKQoreworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgV0tQcmVmZXJlbmNlc1NldEN1c3Rv
bVBhc3RlYm9hcmREYXRhRW5hYmxlZCgoV0tQcmVmZXJlbmNlc1JlZilbd2ViVmlldyBjb25maWd1
cmF0aW9uXS5wcmVmZXJlbmNlcywgdHJ1ZSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRUZXN0UGFnZU5hbWVkOkAiRGF0YVRyYW5zZmVyIl07CisgICAgcmV0dXJuIHdlYlZpZXc7Cit9
CisKK3N0YXRpYyBOU1N0cmluZyAqbWFya3VwU3RyaW5nKCkKK3sKKyAgICAvLyBUaGUgc2NyaXB0
IHRhZyBhbmQgbW91c2VvdmVyIGxpc3RlbmVyIGF0dHJpYnV0ZSBpbiB0aGUgbWFya3VwIHN0cmlu
ZyBiZWxvdyBzaG91bGQgYmUgb21pdHRlZCBkdXJpbmcKKyAgICAvLyBzYW5pdGl6YXRpb24gd2hp
bGUgcGFzdGluZy4KKyAgICByZXR1cm4gQCI8c2NyaXB0PmZvbygpPC9zY3JpcHQ+PHN0cm9uZyBv
bm1vdXNlb3Zlcj0namF2YXNjcmlwdDp2b2lkKDApJz5IRUxMTyBXT1JMRDwvc3Ryb25nPiI7Cit9
CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChQYXN0ZU1peGVkQ29udGVudCwg
SW1hZ2VGaWxlQW5kUGxhaW5UZXh0KQoreworICAgIGF1dG8gd2ViVmlldyA9IHNldFVwV2ViVmll
dygpOworICAgIHdyaXRlVHlwZXNBbmREYXRhVG9QYXN0ZWJvYXJkKE5TRmlsZW5hbWVzUGJvYXJk
VHlwZSwgQFsgaW1hZ2VQYXRoKCkgXSwgTlNQYXN0ZWJvYXJkVHlwZVN0cmluZywgaW1hZ2VQYXRo
KCksIG5pbCk7CisgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKKworICAgIEVYUEVDVF9XS19TVFJF
USgiRmlsZXMiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidHlwZXMu
dGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIoRklMRSwgaW1hZ2UvcG5nKSIs
IFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpdGVtcy50ZXh0Q29udGVu
dCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIignaWNvbi5wbmcnLCBpbWFnZS9wbmcpIiwgW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImZpbGVzLnRleHRDb250ZW50Il0p
OworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAInVybERhdGEudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIi
LCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidGV4dERhdGEudGV4dENv
bnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiaHRtbERhdGEudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dL
X1NUUkVRKCIiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicmF3SFRN
TERhdGEudGV4dENvbnRlbnQiXSk7Cit9CisKK1RFU1QoUGFzdGVNaXhlZENvbnRlbnQsIEltYWdl
RmlsZUFuZFdlYkFyY2hpdmUpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3KCk7
CisgICAgTlNVUkwgKm1haW5SZXNvdXJjZVVSTCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6QCIv
c29tZS9ub25leGlzdGVudC9maWxlLmh0bWwiXTsKKyAgICBhdXRvIG1haW5SZXNvdXJjZSA9IGFk
b3B0TlMoW1tXZWJSZXNvdXJjZSBhbGxvY10gaW5pdFdpdGhEYXRhOlttYXJrdXBTdHJpbmcoKSBk
YXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gVVJMOm1haW5SZXNvdXJjZVVS
TCBNSU1FVHlwZTpAInRleHQvaHRtbCIgdGV4dEVuY29kaW5nTmFtZTpAInV0Zi04IiBmcmFtZU5h
bWU6bmlsXSk7CisgICAgYXV0byBhcmNoaXZlID0gYWRvcHROUyhbW1dlYkFyY2hpdmUgYWxsb2Nd
IGluaXRXaXRoTWFpblJlc291cmNlOm1haW5SZXNvdXJjZS5nZXQoKSBzdWJyZXNvdXJjZXM6bmls
IHN1YmZyYW1lQXJjaGl2ZXM6bmlsXSk7CisgICAgd3JpdGVUeXBlc0FuZERhdGFUb1Bhc3RlYm9h
cmQoTlNGaWxlbmFtZXNQYm9hcmRUeXBlLCBAWyBpbWFnZVBhdGgoKSBdLCBXZWJBcmNoaXZlUGJv
YXJkVHlwZSwgW2FyY2hpdmUgZGF0YV0sIG5pbCk7CisgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsK
KworICAgIEVYUEVDVF9XS19TVFJFUSgiRmlsZXMsIHRleHQvaHRtbCIsIFt3ZWJWaWV3IHN0cmlu
Z0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0eXBlcy50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoIihTVFJJTkcsIHRleHQvaHRtbCksIChGSUxFLCBpbWFnZS9wbmcpIiwgW3dl
YlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIml0ZW1zLnRleHRDb250ZW50Il0p
OworICAgIEVYUEVDVF9XS19TVFJFUSgiKCdpY29uLnBuZycsIGltYWdlL3BuZykiLCBbd2ViVmll
dyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZmlsZXMudGV4dENvbnRlbnQiXSk7Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAidXJsRGF0YS50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIFt3
ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0ZXh0RGF0YS50ZXh0Q29udGVu
dCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkhFTExPIFdPUkxEIiwgW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImh0bWxEYXRhLnRleHRDb250ZW50Il0pOworICAgIEVY
UEVDVF9GQUxTRShbW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInJhd0hU
TUxEYXRhLnRleHRDb250ZW50Il0gY29udGFpbnNTdHJpbmc6QCJzY3JpcHQiXSk7Cit9CisKK1RF
U1QoUGFzdGVNaXhlZENvbnRlbnQsIEltYWdlRmlsZUFuZEhUTUwpCit7CisgICAgYXV0byB3ZWJW
aWV3ID0gc2V0VXBXZWJWaWV3KCk7CisgICAgd3JpdGVUeXBlc0FuZERhdGFUb1Bhc3RlYm9hcmQo
TlNGaWxlbmFtZXNQYm9hcmRUeXBlLCBAWyBpbWFnZVBhdGgoKSBdLCBOU1Bhc3RlYm9hcmRUeXBl
SFRNTCwgbWFya3VwU3RyaW5nKCksIG5pbCk7CisgICAgW3dlYlZpZXcgcGFzdGU6bmlsXTsKKwor
ICAgIEVYUEVDVF9XS19TVFJFUSgiRmlsZXMsIHRleHQvaHRtbCIsIFt3ZWJWaWV3IHN0cmluZ0J5
RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0eXBlcy50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoIihTVFJJTkcsIHRleHQvaHRtbCksIChGSUxFLCBpbWFnZS9wbmcpIiwgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIml0ZW1zLnRleHRDb250ZW50Il0pOwor
ICAgIEVYUEVDVF9XS19TVFJFUSgiKCdpY29uLnBuZycsIGltYWdlL3BuZykiLCBbd2ViVmlldyBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZmlsZXMudGV4dENvbnRlbnQiXSk7CisgICAg
RVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0
OkAidXJsRGF0YS50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIiIsIFt3ZWJW
aWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0ZXh0RGF0YS50ZXh0Q29udGVudCJd
KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkhFTExPIFdPUkxEIiwgW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImh0bWxEYXRhLnRleHRDb250ZW50Il0pOworICAgIEVYUEVD
VF9GQUxTRShbW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInJhd0hUTUxE
YXRhLnRleHRDb250ZW50Il0gY29udGFpbnNTdHJpbmc6QCJzY3JpcHQiXSk7Cit9CisKK1RFU1Qo
UGFzdGVNaXhlZENvbnRlbnQsIEltYWdlRmlsZUFuZFJURikKK3sKKyAgICBhdXRvIHdlYlZpZXcg
PSBzZXRVcFdlYlZpZXcoKTsKKyAgICBhdXRvIHRleHQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0
cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF0pOworICAgIFt0ZXh0IGFwcGVuZEF0dHJpYnV0ZWRT
dHJpbmc6W1tOU0F0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRXaXRoU3RyaW5nOkAibGluayB0
byAiXV07CisgICAgW3RleHQgYXBwZW5kQXR0cmlidXRlZFN0cmluZzpbW05TQXR0cmlidXRlZFN0
cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6QCJhcHBsZSIgYXR0cmlidXRlczpAeyBOU0xpbmtB
dHRyaWJ1dGVOYW1lOiBbTlNVUkwgVVJMV2l0aFN0cmluZzpAImh0dHBzOi8vd3d3LmFwcGxlLmNv
bS8iXSB9XV07CisgICAgTlNEYXRhICpydGZEYXRhID0gW3RleHQgUlRGRnJvbVJhbmdlOk5TTWFr
ZVJhbmdlKDAsIFt0ZXh0IGxlbmd0aF0pIGRvY3VtZW50QXR0cmlidXRlczpAeyB9XTsKKyAgICB3
cml0ZVR5cGVzQW5kRGF0YVRvUGFzdGVib2FyZChOU0ZpbGVuYW1lc1Bib2FyZFR5cGUsIEBbIGlt
YWdlUGF0aCgpIF0sIE5TUGFzdGVib2FyZFR5cGVSVEYsIHJ0ZkRhdGEsIG5pbCk7CisgICAgW3dl
YlZpZXcgcGFzdGU6bmlsXTsKKworICAgIEVYUEVDVF9XS19TVFJFUSgiRmlsZXMsIHRleHQvaHRt
bCIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0eXBlcy50ZXh0Q29u
dGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIihTVFJJTkcsIHRleHQvaHRtbCksIChGSUxF
LCBpbWFnZS9wbmcpIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAIml0
ZW1zLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiKCdpY29uLnBuZycsIGlt
YWdlL3BuZykiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZmlsZXMu
dGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCIiLCBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAidXJsRGF0YS50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoIiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ0
ZXh0RGF0YS50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoImxpbmsgdG8gYXBw
bGUiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaHRtbERhdGEudGV4
dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJodHRwczovL3d3dy5hcHBsZS5jb20v
IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImh0bWxEYXRhLnF1ZXJ5
U2VsZWN0b3IoJ2EnKS5ocmVmIl0pOworfQorCitURVNUKFBhc3RlTWl4ZWRDb250ZW50LCBJbWFn
ZUZpbGVBbmRVUkwpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gc2V0VXBXZWJWaWV3KCk7CisgICAg
d3JpdGVUeXBlc0FuZERhdGFUb1Bhc3RlYm9hcmQoTlNVUkxQYm9hcmRUeXBlLCBAImh0dHBzOi8v
d3d3LndlYmtpdC5vcmcvIiwgTlNGaWxlbmFtZXNQYm9hcmRUeXBlLCBAWyBpbWFnZVBhdGgoKSBd
LCBuaWwpOworICAgIFt3ZWJWaWV3IHBhc3RlOm5pbF07CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
IkZpbGVzLCB0ZXh0L3VyaS1saXN0IiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNj
cmlwdDpAInR5cGVzLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiKFNUUklO
RywgdGV4dC91cmktbGlzdCksIChGSUxFLCBpbWFnZS9wbmcpIiwgW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAIml0ZW1zLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9X
S19TVFJFUSgiKCdpY29uLnBuZycsIGltYWdlL3BuZykiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1
YXRpbmdKYXZhU2NyaXB0OkAiZmlsZXMudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NU
UkVRKCJodHRwczovL3d3dy53ZWJraXQub3JnLyIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJ1cmxEYXRhLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJF
USgiIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInRleHREYXRhLnRl
eHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImh0bWxEYXRhLnRleHRDb250ZW50Il0pOworfQorCitURVNU
KFBhc3RlTWl4ZWRDb250ZW50LCBJbWFnZUZpbGVXaXRoSFRNTEFuZFVSTCkKK3sKKyAgICBhdXRv
IHdlYlZpZXcgPSBzZXRVcFdlYlZpZXcoKTsKKyAgICB3cml0ZVR5cGVzQW5kRGF0YVRvUGFzdGVi
b2FyZChOU1VSTFBib2FyZFR5cGUsIEAiaHR0cHM6Ly93d3cud2Via2l0Lm9yZy8iLCBOU1Bhc3Rl
Ym9hcmRUeXBlSFRNTCwgbWFya3VwU3RyaW5nKCksIE5TRmlsZW5hbWVzUGJvYXJkVHlwZSwgQFsg
aW1hZ2VQYXRoKCkgXSwgbmlsKTsKKyAgICBbd2ViVmlldyBwYXN0ZTpuaWxdOworCisgICAgRVhQ
RUNUX1dLX1NUUkVRKCJGaWxlcywgdGV4dC91cmktbGlzdCwgdGV4dC9odG1sIiwgW3dlYlZpZXcg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInR5cGVzLnRleHRDb250ZW50Il0pOworICAg
IEVYUEVDVF9XS19TVFJFUSgiKFNUUklORywgdGV4dC91cmktbGlzdCksIChTVFJJTkcsIHRleHQv
aHRtbCksIChGSUxFLCBpbWFnZS9wbmcpIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAIml0ZW1zLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiKCdp
Y29uLnBuZycsIGltYWdlL3BuZykiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAiZmlsZXMudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJodHRwczov
L3d3dy53ZWJraXQub3JnLyIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6
QCJ1cmxEYXRhLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZp
ZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInRleHREYXRhLnRleHRDb250ZW50Il0p
OworICAgIEVYUEVDVF9XS19TVFJFUSgiSEVMTE8gV09STEQiLCBbd2ViVmlldyBzdHJpbmdCeUV2
YWx1YXRpbmdKYXZhU2NyaXB0OkAiaHRtbERhdGEudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNU
X0ZBTFNFKFtbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicmF3SFRNTERh
dGEudGV4dENvbnRlbnQiXSBjb250YWluc1N0cmluZzpAInNjcmlwdCJdKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSQorCisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSAmJiBXS19B
UElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9pb3MvRGF0
YUludGVyYWN0aW9uVGVzdHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRh
SW50ZXJhY3Rpb25UZXN0cy5tbQppbmRleCA0MDg1ZmFiOWNhNWMyZjcwOWEwZWY4ZWRmYWU2NjYw
NDdkOTQ3Nzc1Li5jZDIxYzAyOWMyMDM0YzQ2NTEwOTdkZjEwOGE0ZDY1YjVhOGZiMGZlIDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25UZXN0
cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL2lvcy9EYXRhSW50ZXJhY3Rpb25U
ZXN0cy5tbQpAQCAtMTQ5OSw2ICsxNDk5LDM1IEBAIFRFU1QoRGF0YUludGVyYWN0aW9uVGVzdHMs
IERyYWdMaWZ0UHJldmlld0RhdGFUcmFuc2ZlclNldERyYWdJbWFnZSkKIAogI2lmIF9fSVBIT05F
X09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDExMDMwMAogCitzdGF0aWMgTlNEYXRhICp0ZXN0
SWNvbkltYWdlRGF0YSgpCit7CisgICAgcmV0dXJuIFtOU0RhdGEgZGF0YVdpdGhDb250ZW50c09m
RmlsZTpbW05TQnVuZGxlIG1haW5CdW5kbGVdIHBhdGhGb3JSZXNvdXJjZTpAImljb24iIG9mVHlw
ZTpAInBuZyIgaW5EaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKK30KKwor
VEVTVChEYXRhSW50ZXJhY3Rpb25UZXN0cywgRGF0YVRyYW5zZmVyR2V0RGF0YVdoZW5Ecm9wcGlu
Z0ltYWdlQW5kTWFya3VwKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApXSk7
CisgICAgV0tQcmVmZXJlbmNlc1NldEN1c3RvbVBhc3RlYm9hcmREYXRhRW5hYmxlZCgoV0tQcmVm
ZXJlbmNlc1JlZilbd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcmVmZXJlbmNlcywgdHJ1ZSk7Cisg
ICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRUZXN0UGFnZU5hbWVkOkAiRGF0YVRyYW5zZmVy
Il07CisKKyAgICBhdXRvIHNpbXVsYXRvciA9IGFkb3B0TlMoW1tEYXRhSW50ZXJhY3Rpb25TaW11
bGF0b3IgYWxsb2NdIGluaXRXaXRoV2ViVmlldzp3ZWJWaWV3LmdldCgpXSk7CisgICAgYXV0byBp
dGVtUHJvdmlkZXIgPSBhZG9wdE5TKFtbVUlJdGVtUHJvdmlkZXIgYWxsb2NdIGluaXRdKTsKKyAg
ICBbaXRlbVByb3ZpZGVyIHJlZ2lzdGVyRGF0YVJlcHJlc2VudGF0aW9uRm9yVHlwZUlkZW50aWZp
ZXI6KE5TU3RyaW5nICopa1VUVHlwZVBORyB3aXRoRGF0YTp0ZXN0SWNvbkltYWdlRGF0YSgpXTsK
KyAgICBOU1N0cmluZyAqbWFya3VwU3RyaW5nID0gQCI8c2NyaXB0PmJhcigpPC9zY3JpcHQ+PHN0
cm9uZyBvbm1vdXNlZG93bj1qYXZhc2NyaXB0OnZvaWQoMCk+SEVMTE8gV09STEQ8L3N0cm9uZz4i
OworICAgIFtpdGVtUHJvdmlkZXIgcmVnaXN0ZXJEYXRhUmVwcmVzZW50YXRpb25Gb3JUeXBlSWRl
bnRpZmllcjooTlNTdHJpbmcgKilrVVRUeXBlSFRNTCB3aXRoRGF0YTpbbWFya3VwU3RyaW5nIGRh
dGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXV07CisgICAgW2l0ZW1Qcm92aWRl
ciBzZXRTdWdnZXN0ZWROYW1lOkAiaWNvbiJdOworICAgIFtzaW11bGF0b3Igc2V0RXh0ZXJuYWxJ
dGVtUHJvdmlkZXJzOkBbIGl0ZW1Qcm92aWRlci5nZXQoKSBdXTsKKyAgICBbc2ltdWxhdG9yIHJ1
bkZyb206Q0dQb2ludFplcm8gdG86Q0dQb2ludE1ha2UoNTAsIDEwMCldOworCisgICAgRVhQRUNU
X1dLX1NUUkVRKCJGaWxlcywgdGV4dC9odG1sIiwgW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdDpAInR5cGVzLnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgi
KFNUUklORywgdGV4dC9odG1sKSwgKEZJTEUsIGltYWdlL3BuZykiLCBbd2ViVmlldyBzdHJpbmdC
eUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiaXRlbXMudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNU
X1dLX1NUUkVRKCIoJ2ljb24ucG5nJywgaW1hZ2UvcG5nKSIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJmaWxlcy50ZXh0Q29udGVudCJdKTsKKyAgICBFWFBFQ1RfV0tf
U1RSRVEoIiIsIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJ1cmxEYXRh
LnRleHRDb250ZW50Il0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiIiwgW3dlYlZpZXcgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAInRleHREYXRhLnRleHRDb250ZW50Il0pOworICAgIEVY
UEVDVF9XS19TVFJFUSgiSEVMTE8gV09STEQiLCBbd2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdK
YXZhU2NyaXB0OkAiaHRtbERhdGEudGV4dENvbnRlbnQiXSk7CisgICAgRVhQRUNUX0ZBTFNFKFtb
d2ViVmlldyBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicmF3SFRNTERhdGEudGV4dENv
bnRlbnQiXSBjb250YWluc1N0cmluZzpAInNjcmlwdCJdKTsKK30KKwogVEVTVChEYXRhSW50ZXJh
Y3Rpb25UZXN0cywgRGF0YVRyYW5zZmVyR2V0RGF0YVdoZW5Ecm9wcGluZ1BsYWluVGV4dCkKIHsK
ICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdp
dGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKV0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcuaAppbmRleCBkYWEzYjI2ZDY2YjhlODkwMTcwNGNiNTlmNWYx
NzQxMDE3ZDAxY2RlLi45MDhlMDUyYjNhMWMyOWJkN2U1YWI3OTJlMGQ4ZjhjNDU2MzBkZGFhIDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaApAQCAtMzQsNiArMzQs
MTIgQEAKIEBjbGFzcyBfV0tBY3RpdmF0ZWRFbGVtZW50SW5mbzsKICNlbmRpZgogCitAaW50ZXJm
YWNlIFdLV2ViVmlldyAoQWRkaXRpb25hbERlY2xhcmF0aW9ucykKKyNpZiBQTEFURk9STShNQUMp
CistICh2b2lkKXBhc3RlOihpZClzZW5kZXI7CisjZW5kaWYKK0BlbmQKKwogQGludGVyZmFjZSBU
ZXN0TWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KIC0g
KHZvaWQpYWRkTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIHdpdGhIYW5kbGVyOihkaXNwYXRj
aF9ibG9ja190KWhhbmRsZXI7CiBAZW5kCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMmUxYjVlMzNhYjNjNzNkZDVjZDFmMzY3
YmEwOGU1MTI1MTdmZDQ1NS4uMDZhNmEyZGE4MGQ0OWQ0MTU5NzRlYjk5YzY4NjY5MGZiOThkYzYz
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE4LTAyLTA4ICBXZW5zb24gSHNpZWggIDx3ZW5z
b25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIFBhc3RpbmcgZnJvbSBFeGNlbCBubyBsb25n
ZXIgcHJvdmlkZXMgdGV4dC9odG1sIGRhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4MjYzNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzcwODcw
NjA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIFJlYmFz
ZWxpbmUgc29tZSBleGlzdGluZyBsYXlvdXQgdGVzdHMuIFdlIG5vdyBleHBvc2UgInRleHQvaHRt
bCIgYWxvbmdzaWRlICJGaWxlcyIgb24gRGF0YVRyYW5zZmVyLnR5cGVzKCkgaW4KKyAgICAgICAg
c29tZSBjaXJjdW1zdGFuY2VzLiBUaGlzIGFsc28gcHJvdmlkZXMgc29tZSB0ZXN0IGNvdmVyYWdl
IGZvciBlbnN1cmluZyB0aGF0IHRoZSBwYXN0ZSBjb2RlcGF0aCBpT1MgYWxsb3dzIHRoZQorICAg
ICAgICBwYWdlIHRvIHJlcXVlc3QgSFRNTCwgZXZlbiBpZiB0aGVyZSBhcmUgZmlsZXMgb24gdGhl
IHBhc3RlYm9hcmQuIFNlZSB0aGUgV2ViQ29yZSBDaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlsLgor
CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFk
ZC1maWxlLW11bHRpcGxlLXRpbWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0aW5nL3Bh
c3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tY29weS1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1s
aXN0LWFkZC1maWxlLW9uLWRyYWctZXhwZWN0ZWQudHh0OgorCisgICAgICAgIEFkanVzdCB0ZXN0
IGV4cGVjdGF0aW9ucyBmb3IgdGhlIGFkZGl0aW9uYWwgInRleHQvaHRtbCIgdHlwZS4KKworICAg
ICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1pbWFnZS1kb2VzLW5vdC1yZXZlYWwtZmls
ZS11cmwtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1p
bWFnZS1kb2VzLW5vdC1yZXZlYWwtZmlsZS11cmwuaHRtbDoKKworICAgICAgICBJbnN0ZWFkIG9m
IGNoZWNraW5nIHRoYXQgdHlwZXMgaXMgWyAiRmlsZXMiIF0sIGp1c3QgY2hlY2sgdGhhdCB0eXBl
cyBjb250YWlucyAiRmlsZXMiLiBPbiBpT1MsIGNvcHlpbmcgYQorICAgICAgICBzZWxlY3RlZCBp
bWFnZSBkb2VzIG5vdCBhbHNvIGNvcHkgSFRNTCwgYnV0IG9uIG1hY09TIGl0IGRvZXM7IHRoaXMg
Y292ZXJzIGJvdGggY2FzZXMuCisKIDIwMTgtMDItMDkgIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE9iamVjdC5zaGFsbG93RXF1YWwg
YWx3YXlzIGZhaWxzIHdoZW4gY29tcGFyaW5nIGFycmF5IHByb3BlcnR5IHZhbHVlcwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1s
aXN0LWFkZC1maWxlLW11bHRpcGxlLXRpbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1tdWx0aXBs
ZS10aW1lcy1leHBlY3RlZC50eHQKaW5kZXggMWY4MGM1OWRjOWNiNjJkNzJlYzlhMDQ1MDM2ZGY1
NTY0OWFkNDc4Ni4uNmVmMTAzODRjMWFhNzBkNTRlYTM3YzJiOGJjNGJlOTNiODM5M2MxYSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRl
bS1saXN0LWFkZC1maWxlLW11bHRpcGxlLXRpbWVzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUt
bXVsdGlwbGUtdGltZXMtZXhwZWN0ZWQudHh0CkBAIC0yNDcsNyArMjQ3LDggQEAgcmVtb3ZlZEl0
ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6IG51bGwKIDYuIEFmdGVyIGFkZGluZyB0d28g
ZmlsZXMgYW5kIHNvbWUgc3RyaW5nIGRhdGEgYWdhaW4KIHsKICAgICAiZGF0YSI6IHsKLSAgICAg
ICAgIkZpbGVzIjogIiIKKyAgICAgICAgIkZpbGVzIjogIiIsCisgICAgICAgICJ0ZXh0L2h0bWwi
OiAiPHN0cm9uZz5zb21lIHN0eWxlZCB0ZXh0PC9zdHJvbmc+IgogICAgIH0sCiAgICAgIml0ZW1z
IjogWwogICAgICAgICB7CkBAIC0yOTYsNyArMjk3LDggQEAgcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxl
KCkgc2hvdWxkIGJlIG51bGw6IG51bGwKIDcuIEFmdGVyIHJlbW92aW5nIGF0IGluZGV4IDIKIHsK
ICAgICAiZGF0YSI6IHsKLSAgICAgICAgIkZpbGVzIjogIiIKKyAgICAgICAgIkZpbGVzIjogIiIs
CisgICAgICAgICJ0ZXh0L2h0bWwiOiAiPHN0cm9uZz5zb21lIHN0eWxlZCB0ZXh0PC9zdHJvbmc+
IgogICAgIH0sCiAgICAgIml0ZW1zIjogWwogICAgICAgICB7CkBAIC0zNDEsNyArMzQzLDggQEAg
cmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6IG51bGwKIDguIEFmdGVyIHJl
bW92aW5nIGF0IGluZGV4IDIKIHsKICAgICAiZGF0YSI6IHsKLSAgICAgICAgIkZpbGVzIjogIiIK
KyAgICAgICAgIkZpbGVzIjogIiIsCisgICAgICAgICJ0ZXh0L2h0bWwiOiAiPHN0cm9uZz5zb21l
IHN0eWxlZCB0ZXh0PC9zdHJvbmc+IgogICAgIH0sCiAgICAgIml0ZW1zIjogWwogICAgICAgICB7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zl
ci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tY29weS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tY29w
eS1leHBlY3RlZC50eHQKaW5kZXggZmZkZjY3Y2FlZDFiMTE3OGM0MmY4YzVkMDBiNTk1NDc3MWU2
Y2U5Yi4uMjliYzk0OWE0ODljZWY5OWVkMTZjYjhmNDAyNmE4OTYyNWYwZDNkMSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0
LWFkZC1maWxlLW9uLWNvcHktZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmlsZS1vbi1jb3B5LWV4cGVj
dGVkLnR4dApAQCAtMTI5LDcgKzEyOSw4IEBAIHJlbW92ZWRJdGVtLmdldEFzRmlsZSgpIHNob3Vs
ZCBiZSBudWxsOiBudWxsCiA1LiBBZnRlciBhZGRpbmcgYW4gSFRNTCBzdHJpbmcKIHsKICAgICAi
ZGF0YSI6IHsKLSAgICAgICAgIkZpbGVzIjogIiIKKyAgICAgICAgIkZpbGVzIjogIiIsCisgICAg
ICAgICJ0ZXh0L2h0bWwiOiAiPGE+Z29vZGJ5ZSB3b3JsZDwvYT4iCiAgICAgfSwKICAgICAiaXRl
bXMiOiBbCiAgICAgICAgIHsKQEAgLTE2NCw3ICsxNjUsOCBAQCByZW1vdmVkSXRlbS5nZXRBc0Zp
bGUoKSBzaG91bGQgYmUgbnVsbDogbnVsbAogNi4gQWZ0ZXIgYWRkaW5nIGFub3RoZXIgcGxhaW4g
dGV4dCBmaWxlCiB7CiAgICAgImRhdGEiOiB7Ci0gICAgICAgICJGaWxlcyI6ICIiCisgICAgICAg
ICJGaWxlcyI6ICIiLAorICAgICAgICAidGV4dC9odG1sIjogIjxhPmdvb2RieWUgd29ybGQ8L2E+
IgogICAgIH0sCiAgICAgIml0ZW1zIjogWwogICAgICAgICB7CkBAIC0yMTMsNyArMjE1LDggQEAg
cmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hvdWxkIGJlIG51bGw6IG51bGwKIDcuIEFmdGVyIHJl
bW92aW5nIHRoZSBjdXN0b20gZmlsZQogewogICAgICJkYXRhIjogewotICAgICAgICAiRmlsZXMi
OiAiIgorICAgICAgICAiRmlsZXMiOiAiIiwKKyAgICAgICAgInRleHQvaHRtbCI6ICI8YT5nb29k
YnllIHdvcmxkPC9hPiIKICAgICB9LAogICAgICJpdGVtcyI6IFsKICAgICAgICAgewpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1s
aXN0LWFkZC1maWxlLW9uLWRyYWctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbS1saXN0LWFkZC1maWxlLW9uLWRyYWctZXhwZWN0
ZWQudHh0CmluZGV4IDdhZGE2NTQxOTNmZGUwZGE1ZmZiOGE3NjVmMWIwYTgxNjU5OTY1YzEuLjA3
YzA2Y2NkZTVkZWYzOTU0MWJlODlhMDg4MzczOWU4OWQ4ZjU4NjMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW0tbGlzdC1hZGQtZmls
ZS1vbi1kcmFnLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvZGF0YS10cmFuc2Zlci1pdGVtLWxpc3QtYWRkLWZpbGUtb24tZHJhZy1leHBlY3RlZC50eHQK
QEAgLTEyOSw3ICsxMjksOCBAQCByZW1vdmVkSXRlbS5nZXRBc0ZpbGUoKSBzaG91bGQgYmUgbnVs
bDogbnVsbAogNS4gQWZ0ZXIgYWRkaW5nIGFuIEhUTUwgc3RyaW5nCiB7CiAgICAgImRhdGEiOiB7
Ci0gICAgICAgICJGaWxlcyI6ICIiCisgICAgICAgICJGaWxlcyI6ICIiLAorICAgICAgICAidGV4
dC9odG1sIjogIjxhPmdvb2RieWUgd29ybGQ8L2E+IgogICAgIH0sCiAgICAgIml0ZW1zIjogWwog
ICAgICAgICB7CkBAIC0xNjQsNyArMTY1LDggQEAgcmVtb3ZlZEl0ZW0uZ2V0QXNGaWxlKCkgc2hv
dWxkIGJlIG51bGw6IG51bGwKIDYuIEFmdGVyIGFkZGluZyBhbm90aGVyIHBsYWluIHRleHQgZmls
ZQogewogICAgICJkYXRhIjogewotICAgICAgICAiRmlsZXMiOiAiIgorICAgICAgICAiRmlsZXMi
OiAiIiwKKyAgICAgICAgInRleHQvaHRtbCI6ICI8YT5nb29kYnllIHdvcmxkPC9hPiIKICAgICB9
LAogICAgICJpdGVtcyI6IFsKICAgICAgICAgewpAQCAtMjEzLDcgKzIxNSw4IEBAIHJlbW92ZWRJ
dGVtLmdldEFzRmlsZSgpIHNob3VsZCBiZSBudWxsOiBudWxsCiA3LiBBZnRlciByZW1vdmluZyB0
aGUgY3VzdG9tIGZpbGUKIHsKICAgICAiZGF0YSI6IHsKLSAgICAgICAgIkZpbGVzIjogIiIKKyAg
ICAgICAgIkZpbGVzIjogIiIsCisgICAgICAgICJ0ZXh0L2h0bWwiOiAiPGE+Z29vZGJ5ZSB3b3Js
ZDwvYT4iCiAgICAgfSwKICAgICAiaXRlbXMiOiBbCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1pbWFnZS1kb2VzLW5vdC1yZXZlYWwt
ZmlsZS11cmwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bh
c3RlLWltYWdlLWRvZXMtbm90LXJldmVhbC1maWxlLXVybC1leHBlY3RlZC50eHQKaW5kZXggZGY2
NGIwMTBlOWI4YTY4NmZiNjhiYzZiMWRiNTA3MTRmMjk0NWNkYS4uNGM5NDkzMTczYWM5OGI5YjVh
NjQ1NDQ5MDc2NTNjOWYzYjdmOWZhZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL3Bhc3RlLWltYWdlLWRvZXMtbm90LXJldmVhbC1maWxlLXVybC1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWltYWdlLWRvZXMt
bm90LXJldmVhbC1maWxlLXVybC1leHBlY3RlZC50eHQKQEAgLTMsNyArMyw3IEBAIFRlc3RzIHRo
YXQgcGFzdGluZyBpbWFnZXMgZG8gbm90IHJldmVhbCBpdHMgZmlsZSBVUkwuIFRvIG1hbnVhbGx5
IHRlc3QsIGNvcHkgdGhlCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAotUEFTUyBKU09O
LnN0cmluZ2lmeShldmVudC5jbGlwYm9hcmREYXRhLnR5cGVzKSBpcyAiW1wiRmlsZXNcIl0iCitQ
QVNTIGV2ZW50LmNsaXBib2FyZERhdGEudHlwZXMuaW5jbHVkZXMoIkZpbGVzIikgaXMgdHJ1ZQog
UEFTUyBldmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEoInVybCIpIGlzICIiCiBQQVNTIGV2ZW50
LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgidGV4dC9wbGFpbiIpIGlzICIiCiBQQVNTIGV2ZW50LmNs
aXBib2FyZERhdGEuZ2V0RGF0YSgidGV4dC91cmktbGlzdCIpIGlzICIiCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtaW1hZ2UtZG9lcy1ub3QtcmV2ZWFs
LWZpbGUtdXJsLmh0bWwgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtaW1h
Z2UtZG9lcy1ub3QtcmV2ZWFsLWZpbGUtdXJsLmh0bWwKaW5kZXggMmQ1ZThlZWU5ZmRkNGFlNjkz
ODdjNjZiZmY5ODA2OTNkZTQyNDc3MC4uMDU1OTJhZjdjMTg4ZDIyNTM3ZGFjNDI2MzhjOTlmYmQ3
NGVmOTUyOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3Rl
LWltYWdlLWRvZXMtbm90LXJldmVhbC1maWxlLXVybC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1pbWFnZS1kb2VzLW5vdC1yZXZlYWwtZmlsZS11cmwuaHRt
bApAQCAtMzEsNyArMzEsNyBAQCBmdW5jdGlvbiBydW5UZXN0KCkKIAogZnVuY3Rpb24gY2hlY2so
ZXZlbnQpCiB7Ci0gICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdKU09OLnN0cmluZ2lmeShldmVu
dC5jbGlwYm9hcmREYXRhLnR5cGVzKScsICdbIkZpbGVzIl0nKTsKKyAgICBzaG91bGRCZVRydWUo
J2V2ZW50LmNsaXBib2FyZERhdGEudHlwZXMuaW5jbHVkZXMoIkZpbGVzIiknKTsKICAgICBzaG91
bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgidXJsIiknLCAn
Jyk7CiAgICAgc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCdldmVudC5jbGlwYm9hcmREYXRhLmdldERh
dGEoInRleHQvcGxhaW4iKScsICcnKTsKICAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2ZW50
LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgidGV4dC91cmktbGlzdCIpJywgJycpOwo=
</data>
<flag name="commit-queue"
          id="352409"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>