<?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>167734</bug_id>
          
          <creation_ts>2017-02-02 08:45:14 -0800</creation_ts>
          <short_desc>[Cocoa] Would like modern API for setting the viewport configuration, overriding anything the webpage specifies</short_desc>
          <delta_ts>2019-04-17 17:22:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>mitz</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>sroberts</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bot-watchers-bugzilla</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1272472</commentid>
    <comment_count>0</comment_count>
    <who name="">mitz</who>
    <bug_when>2017-02-02 08:45:14 -0800</bug_when>
    <thetext>WebView’s -_setFixedLayoutSize: and a few other methods allow clients such as UIKit to control the viewport parameters in a way that overrides anything done by the webpage. Clients that use WKWebView would like to have similar control. However, WKWebView’s _fixedLayoutSize property does not have the same effect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1272530</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-02-02 10:54:57 -0800</bug_when>
    <thetext>&lt;rdar://problem/30331795&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525849</commentid>
    <comment_count>2</comment_count>
      <attachid>367094</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-04-09 18:46:15 -0700</bug_when>
    <thetext>Created attachment 367094
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525853</commentid>
    <comment_count>3</comment_count>
      <attachid>367094</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-04-09 19:04:09 -0700</bug_when>
    <thetext>Comment on attachment 367094
Patch

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

&gt; Source/WebCore/dom/Document.h:414
&gt; +    ViewportArguments viewportArguments() const { return m_overrideViewportArguments ? *m_overrideViewportArguments : m_viewportArguments; }

valueOr? Or is it value_or()?

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:494
&gt; +    [viewportArgumentPairs enumerateKeysAndObjectsUsingBlock:makeBlockPtr([&amp;] (NSString *key, NSString *value, BOOL* stop) {
&gt; +        String keyString = key;
&gt; +        String valueString = value;
&gt; +        WebCore::setViewportFeature(viewportArguments, keyString, valueString, viewportFitEnabled, [] (WebCore::ViewportErrorCode, const String&amp; errorMessage) {
&gt; +            NSLog(@&quot;-[WKWebView _setOverrideViewportArguments]: Error parsing viewport argument: %s&quot;, errorMessage.utf8().data());
&gt; +        });
&gt; +    }).get()];

It seems like an easy mistake to make with this SPI would be to use non-string values: @{ @&quot;width&quot; : @1000 }. What&apos;s going to happen there?

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:511
&gt; +    _page-&gt;setOverrideViewportArguments(viewportArgumentsFromDictionary(viewportArguments, _page-&gt;preferences().viewportFitEnabled()));

If preferences().viewportFitEnabled() changes after we&apos;ve pushed these viewport arguments, they will not adjust, right? Should they? Actually, can viewportArguments contain @&quot;viewport-fit&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525860</commentid>
    <comment_count>4</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-04-09 19:24:53 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #3)
&gt; Comment on attachment 367094 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=367094&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.h:414
&gt; &gt; +    ViewportArguments viewportArguments() const { return m_overrideViewportArguments ? *m_overrideViewportArguments : m_viewportArguments; }
&gt; 
&gt; valueOr? Or is it value_or()?

Sure!

&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:494
&gt; &gt; +    [viewportArgumentPairs enumerateKeysAndObjectsUsingBlock:makeBlockPtr([&amp;] (NSString *key, NSString *value, BOOL* stop) {
&gt; &gt; +        String keyString = key;
&gt; &gt; +        String valueString = value;
&gt; &gt; +        WebCore::setViewportFeature(viewportArguments, keyString, valueString, viewportFitEnabled, [] (WebCore::ViewportErrorCode, const String&amp; errorMessage) {
&gt; &gt; +            NSLog(@&quot;-[WKWebView _setOverrideViewportArguments]: Error parsing viewport argument: %s&quot;, errorMessage.utf8().data());
&gt; &gt; +        });
&gt; &gt; +    }).get()];
&gt; 
&gt; It seems like an easy mistake to make with this SPI would be to use
&gt; non-string values: @{ @&quot;width&quot; : @1000 }. What&apos;s going to happen there?

A fair point! We should probably throw an exception.

&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:511
&gt; &gt; +    _page-&gt;setOverrideViewportArguments(viewportArgumentsFromDictionary(viewportArguments, _page-&gt;preferences().viewportFitEnabled()));
&gt; 
&gt; If preferences().viewportFitEnabled() changes after we&apos;ve pushed these
&gt; viewport arguments, they will not adjust, right?

Correct.

&gt; Should they?

Probably? Though I bet we have this problem with &lt;meta viewport&gt; too. And API clients can just do things in the right order :( but it&apos;s true, it would be nice if it worked.

&gt; Actually, can viewportArguments contain @&quot;viewport-fit&quot;?

Yes! (if viewportFitEnabled is YES)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525865</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-04-09 19:46:26 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #4)
&gt; (In reply to Simon Fraser (smfr) from comment #3)

&gt; &gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:511
&gt; &gt; &gt; +    _page-&gt;setOverrideViewportArguments(viewportArgumentsFromDictionary(viewportArguments, _page-&gt;preferences().viewportFitEnabled()));
&gt; &gt; 
&gt; &gt; If preferences().viewportFitEnabled() changes after we&apos;ve pushed these
&gt; &gt; viewport arguments, they will not adjust, right?
&gt; 
&gt; Correct.
&gt; 
&gt; &gt; Should they?
&gt; 
&gt; Probably? Though I bet we have this problem with &lt;meta viewport&gt; too. And
&gt; API clients can just do things in the right order :( but it&apos;s true, it would
&gt; be nice if it worked.
&gt; 
&gt; &gt; Actually, can viewportArguments contain @&quot;viewport-fit&quot;?
&gt; 
&gt; Yes! (if viewportFitEnabled is YES)

Oh, viewportFitEnabled is not affected by the value of  @&quot;viewport-fit&quot;, OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525878</commentid>
    <comment_count>6</comment_count>
      <attachid>367103</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-04-09 22:37:35 -0700</bug_when>
    <thetext>Created attachment 367103
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525880</commentid>
    <comment_count>7</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-04-09 22:40:21 -0700</bug_when>
    <thetext>&gt; &gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:511
&gt; &gt; &gt; +    _page-&gt;setOverrideViewportArguments(viewportArgumentsFromDictionary(viewportArguments, _page-&gt;preferences().viewportFitEnabled()));
&gt; &gt; 
&gt; &gt; If preferences().viewportFitEnabled() changes after we&apos;ve pushed these
&gt; &gt; viewport arguments, they will not adjust, right?
&gt; 
&gt; Correct.
&gt; 
&gt; &gt; Should they?
&gt; 
&gt; Probably? Though I bet we have this problem with &lt;meta viewport&gt; too. And
&gt; API clients can just do things in the right order :( but it&apos;s true, it would
&gt; be nice if it worked.

I&apos;m not sure how to easily get this right, and it doesn&apos;t matter while this is SPI; I fixed all the other things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525990</commentid>
    <comment_count>8</comment_count>
      <attachid>367103</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-04-10 09:53:54 -0700</bug_when>
    <thetext>Comment on attachment 367103
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:508
&gt; +    _overrideViewportArguments = adoptNS([viewportArguments copy]);

Should we deep-copy all the strings? They may be mutable and mutated by the caller after this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526024</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-04-10 11:15:41 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #8)
&gt; Comment on attachment 367103 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=367103&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:508
&gt; &gt; +    _overrideViewportArguments = adoptNS([viewportArguments copy]);
&gt; 
&gt; Should we deep-copy all the strings? They may be mutable and mutated by the
&gt; caller after this.

We could also make it write-only like some of the other overrides, and not even store the dictionary at all (just the parsed ViewportArguments)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526062</commentid>
    <comment_count>10</comment_count>
      <attachid>367146</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-04-10 12:32:08 -0700</bug_when>
    <thetext>Created attachment 367146
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526087</commentid>
    <comment_count>11</comment_count>
      <attachid>367153</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-04-10 13:21:13 -0700</bug_when>
    <thetext>Created attachment 367153
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526132</commentid>
    <comment_count>12</comment_count>
      <attachid>367153</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-10 14:33:04 -0700</bug_when>
    <thetext>Comment on attachment 367153
Patch

Clearing flags on attachment: 367153

Committed r244151: &lt;https://trac.webkit.org/changeset/244151&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1526133</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-10 14:33:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527240</commentid>
    <comment_count>14</comment_count>
    <who name="Shawn Roberts">sroberts</who>
    <bug_when>2019-04-15 10:45:39 -0700</bug_when>
    <thetext>New API test TestWebKitAPI.WebKit.OverrideViewportArguments added in https://trac.webkit.org/changeset/244151 is failing on iOS Simulator Debug

https://build.webkit.org/builders/Apple%20iOS%2012%20Simulator%20Debug%20WK2%20%28Tests%29/builds/3239/steps/run-api-tests/logs/stdio

TestWebKitAPI.WebKit.OverrideViewportArguments
        2019-04-10 17:41:45.743 TestWebKitAPI[3470:6770579] -[WKWebView _overrideViewportWithArguments:]: Error parsing viewport argument: Viewport argument key &quot;garbage&quot; not recognized and ignored.
        LEAK: 1 WebProcessPool
        LEAK: 1 WebPageProxy
        
        /Volumes/Data/slave/ios-simulator-12-debug/build/Tools/TestWebKitAPI/Tests/WebKitCocoa/OverrideViewportArguments.mm:54
        Expected equality of these values:
          1.
            Which is: 1
          [webView scrollView].zoomScale
            Which is: 0.25</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528188</commentid>
    <comment_count>15</comment_count>
    <who name="Shawn Roberts">sroberts</who>
    <bug_when>2019-04-17 11:27:12 -0700</bug_when>
    <thetext>Any progress on this failure? It is failing every run on the bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528232</commentid>
    <comment_count>16</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-04-17 12:53:57 -0700</bug_when>
    <thetext>(In reply to Shawn Roberts from comment #15)
&gt; Any progress on this failure? It is failing every run on the bots.

The test passes 100% of the time when run locally :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1528262</commentid>
    <comment_count>17</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-04-17 14:03:13 -0700</bug_when>
    <thetext>(In reply to Tim Horton from comment #16)
&gt; (In reply to Shawn Roberts from comment #15)
&gt; &gt; Any progress on this failure? It is failing every run on the bots.
&gt; 
&gt; The test passes 100% of the time when run locally :(

Ah! It fails in debug. Will take a peek.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367094</attachid>
            <date>2019-04-09 18:46:15 -0700</date>
            <delta_ts>2019-04-09 22:37:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167734-20190409184614.patch</filename>
            <type>text/plain</type>
            <size>33400</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0MDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTJiYTY2N2VlODRkNGI5
YjI3YmQxNDc1MTk5ZjNiMmU2NmZkNzFlZi4uZWQ2ZDM5NGE5NzcwZWM4NTBkNDA5NWJlNjIxY2Q1
MGYzZjkyMTg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE5LTA0LTA5ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBtb2Rlcm4g
QVBJIGZvciBvdmVycmlkaW5nIHRoZSBwYWdlJ3Mgc3BlY2lmaWVkIHZpZXdwb3J0IGNvbmZpZ3Vy
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NzczNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzAzMzE3OTU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IEFQSSB0ZXN0OiBXZWJLaXQuT3Zl
cnJpZGVWaWV3cG9ydEFyZ3VtZW50cworCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVWaWV3cG9ydEFyZ3VtZW50cyk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dmlld3Bv
cnRBcmd1bWVudHMgY29uc3QpOgorICAgICAgICBNYWtlIHRoZSB2aWV3cG9ydEFyZ3VtZW50cygp
IGdldHRlciByZXNwZWN0IHRoZSBvdmVycmlkZGVuIGFyZ3VtZW50cy4KKworICAgICAgICAqIGRv
bS9WaWV3cG9ydEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpudW1lcmljUHJlZml4
KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRTaXplVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
ZmluZFNjYWxlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEJvb2xlYW5WYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZVZpZXdwb3J0Rml0VmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6dmlld3BvcnRFcnJvck1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0Vmlld3Bv
cnRXYXJuaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFZpZXdwb3J0RmVhdHVyZSk6CisgICAg
ICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmg6CisgICAgICAgIE1ha2UgaXQgcG9zc2libGUg
dG8gcGFyc2UgVmlld3BvcnRBcmd1bWVudHMgd2l0aG91dCBhIERvY3VtZW50LCBzbworICAgICAg
ICB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIHRoZSBVSSBwcm9jZXNzLiBXZSBvbmx5IHVzZWQgdGhl
IERvY3VtZW50IGZvcgorICAgICAgICB0d28gdGhpbmdzOiBlcnJvciByZXBvcnRpbmcsIGFuZCBn
ZXR0aW5nIHRoZSBzdGF0ZSBvZiBvbmUgc2V0dGluZy4KKyAgICAgICAgUmVmYWN0b3IgZXJyb3Ig
aGFuZGxpbmcgdG8gdXNlIGEgcGFzc2VkLWFydW5kIGZ1bmN0aW9uLCBhbmQgYWRkIGEKKyAgICAg
ICAgdmFyaWFudCBvZiBzZXRWaWV3cG9ydEZlYXR1cmUoKSB0aGF0IGRvZXNuJ3QgdGFrZSBhIERv
Y3VtZW50LgorCiAyMDE5LTA0LTA4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1NdIERvIG5vdCBhbGxvdyBzdGFydGluZyBzZWxlY3Rpb24gZHJh
Z3Mgd2hlbiBzZWxlY3Rpb24gdmlld3MgYXJlIG5vdCB2aXNpYmxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQzMTU5
ZjAyOWZiOWNjZDVhZDQyOTJmYTAxMDVmM2VhNWRjMjZhZDkuLmJiNjZiNjJmYjM5ZjQyOWE3MmE3
MDQ0ZjhiMmM0ZTI5YzliNDU4YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTktMDQt
MDkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRk
IG1vZGVybiBBUEkgZm9yIG92ZXJyaWRpbmcgdGhlIHBhZ2UncyBzcGVjaWZpZWQgdmlld3BvcnQg
Y29uZmlndXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY3NzM0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDMzMTc5NT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5oOgorICAgICAgICBQbHVtYiBvdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzIGlu
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMsIHNvIHRoYXQKKyAgICAgICAgaWYgdGhlIHByb2Nl
c3MgY3Jhc2hlcyAob3Igc3dhcHMpIHRoZXkgYXJlIG1haW50YWluZWQuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKHZpZXdwb3J0QXJndW1l
bnRzRnJvbURpY3Rpb25hcnkpOgorICAgICAgICAoLVtXS1dlYlZpZXcgX292ZXJyaWRlVmlld3Bv
cnRBcmd1bWVudHNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRPdmVycmlkZVZpZXdwb3J0
QXJndW1lbnRzOl0pOgorICAgICAgICBBZGQgU1BJIHRvIHNldCBvdmVycmlkZSB2aWV3cG9ydCBh
cmd1bWVudHMuIFBhcnNlIHRoZW0gaW50byBhIFZpZXdwb3J0QXJndW1lbnRzCisgICAgICAgIG9i
amVjdCBhbmQgdXNlIHRoZSBleGlzdGluZyAobm93IGltcHJvdmVkKSBvdmVycmlkZVZpZXdwb3J0
QXJndW1lbnRzIG1lY2hhbmlzbQorICAgICAgICB0byB0YWtlIG92ZXIgdGhlIHBhZ2UncyB2aWV3
cG9ydCBhcmd1bWVudHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRPdmVycmlk
ZVZpZXdwb3J0QXJndW1lbnRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIFBsdW1iIG92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMgYXJvdW5kIG1v
cmUuCisKIDIwMTktMDQtMDggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPU10gRG8gbm90IGFsbG93IHN0YXJ0aW5nIHNlbGVjdGlvbiBkcmFncyB3
aGVuIHNlbGVjdGlvbiB2aWV3cyBhcmUgbm90IHZpc2libGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CmluZGV4IGVmOTY0ZmI0ZTY5ODllYWFlNTg3ZGY5NmJhY2YwODVhMjVmYWYzZmQuLjA2NGViOTRj
NThlMDBhYzViN2FiMzhkNmU2ZjI0ODJjOTdiMTc5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cApAQCAtMzYyMSw3ICszNjIxLDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlVmlld3BvcnRBcmd1
bWVudHMoKQogI2lmbmRlZiBOREVCVUcKICAgICAgICAgbV9kaWREaXNwYXRjaFZpZXdwb3J0UHJv
cGVydGllc0NoYW5nZWQgPSB0cnVlOwogI2VuZGlmCi0gICAgICAgIHBhZ2UoKS0+Y2hyb21lKCku
ZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2UobV9vdmVycmlkZVZpZXdwb3J0QXJn
dW1lbnRzID8gbV9vdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzLnZhbHVlKCkgOiBtX3ZpZXdwb3J0
QXJndW1lbnRzKTsKKyAgICAgICAgcGFnZSgpLT5jaHJvbWUoKS5kaXNwYXRjaFZpZXdwb3J0UHJv
cGVydGllc0RpZENoYW5nZSh2aWV3cG9ydEFyZ3VtZW50cygpKTsKICAgICAgICAgcGFnZSgpLT5j
aHJvbWUoKS5kaWRSZWNlaXZlRG9jVHlwZSgqZnJhbWUoKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAppbmRleCBkNjdmNmU4ODM4NDk4NDZiOGY4NzQyMzE4ZDg0NjczYzRkZjJlN2Q5Li43
MGYzYTkyNDU2MGFlYWQ5OTQzMWYwMzk1NDlkNGQ5NGY3NWFhMThiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaApAQCAtNDExLDcgKzQxMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyU2VsZWN0b3JR
dWVyeUNhY2hlKCk7CiAKICAgICB2b2lkIHNldFZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFZpZXdw
b3J0QXJndW1lbnRzJiB2aWV3cG9ydEFyZ3VtZW50cykgeyBtX3ZpZXdwb3J0QXJndW1lbnRzID0g
dmlld3BvcnRBcmd1bWVudHM7IH0KLSAgICBWaWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9ydEFyZ3Vt
ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRBcmd1bWVudHM7IH0KKyAgICBWaWV3cG9y
dEFyZ3VtZW50cyB2aWV3cG9ydEFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVW
aWV3cG9ydEFyZ3VtZW50cyA/ICptX292ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMgOiBtX3ZpZXdw
b3J0QXJndW1lbnRzOyB9CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE92ZXJyaWRlVmll
d3BvcnRBcmd1bWVudHMoY29uc3QgT3B0aW9uYWw8Vmlld3BvcnRBcmd1bWVudHM+Jik7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCmluZGV4IGYzYTg0NjE2ZTQyZWY3
NGYwMTBmZWQzZmY5OGNjZDE5MzkzYjM5ZWMuLmNjNjNkOTZlYTljNTUwNDdmYTU1ZTdmOTRlOTJi
M2Q4YTk0ZmJhM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3Vt
ZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcApA
QCAtMzgsNiArMzgsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3R5cGVkZWYgV1RGOjpG
dW5jdGlvbjx2b2lkKFZpZXdwb3J0RXJyb3JDb2RlLCBTdHJpbmdWaWV3LCBTdHJpbmdWaWV3KT4g
SW50ZXJuYWxWaWV3cG9ydEVycm9ySGFuZGxlcjsKKwogI2lmIFBMQVRGT1JNKEdUSykKIGNvbnN0
IGZsb2F0IFZpZXdwb3J0QXJndW1lbnRzOjpkZXByZWNhdGVkVGFyZ2V0RFBJID0gMTYwOwogI2Vu
ZGlmCkBAIC0yODgsOSArMjkwLDcgQEAgdm9pZCByZXN0cmljdFNjYWxlRmFjdG9yVG9Jbml0aWFs
U2NhbGVJZk5vdFVzZXJTY2FsYWJsZShWaWV3cG9ydEF0dHJpYnV0ZXMmIHJlc3UKICAgICAgICAg
cmVzdWx0Lm1heGltdW1TY2FsZSA9IHJlc3VsdC5taW5pbXVtU2NhbGUgPSByZXN1bHQuaW5pdGlh
bFNjYWxlOwogfQogCi1zdGF0aWMgdm9pZCByZXBvcnRWaWV3cG9ydFdhcm5pbmcoRG9jdW1lbnQm
LCBWaWV3cG9ydEVycm9yQ29kZSwgU3RyaW5nVmlldyByZXBsYWNlbWVudDEgPSB7IH0sIFN0cmlu
Z1ZpZXcgcmVwbGFjZW1lbnQyID0geyB9KTsKLQotc3RhdGljIGZsb2F0IG51bWVyaWNQcmVmaXgo
RG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSwgYm9v
bCogb2sgPSBudWxscHRyKQorc3RhdGljIGZsb2F0IG51bWVyaWNQcmVmaXgoU3RyaW5nVmlldyBr
ZXksIFN0cmluZ1ZpZXcgdmFsdWUsIGNvbnN0IEludGVybmFsVmlld3BvcnRFcnJvckhhbmRsZXIm
IGVycm9ySGFuZGxlciwgYm9vbCogb2sgPSBudWxscHRyKQogewogICAgIHNpemVfdCBwYXJzZWRM
ZW5ndGg7CiAgICAgZmxvYXQgbnVtZXJpY1ZhbHVlOwpAQCAtMjk5LDE5ICsyOTksMTkgQEAgc3Rh
dGljIGZsb2F0IG51bWVyaWNQcmVmaXgoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IGtl
eSwgU3RyaW5nVmlldyB2YWx1ZSwKICAgICBlbHNlCiAgICAgICAgIG51bWVyaWNWYWx1ZSA9IGNo
YXJhY3RlcnNUb0Zsb2F0KHZhbHVlLmNoYXJhY3RlcnMxNigpLCB2YWx1ZS5sZW5ndGgoKSwgcGFy
c2VkTGVuZ3RoKTsKICAgICBpZiAoIXBhcnNlZExlbmd0aCkgewotICAgICAgICByZXBvcnRWaWV3
cG9ydFdhcm5pbmcoZG9jdW1lbnQsIFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVy
cm9yLCB2YWx1ZSwga2V5KTsKKyAgICAgICAgZXJyb3JIYW5kbGVyKFVucmVjb2duaXplZFZpZXdw
b3J0QXJndW1lbnRWYWx1ZUVycm9yLCB2YWx1ZSwga2V5KTsKICAgICAgICAgaWYgKG9rKQogICAg
ICAgICAgICAgKm9rID0gZmFsc2U7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAo
cGFyc2VkTGVuZ3RoIDwgdmFsdWUubGVuZ3RoKCkpCi0gICAgICAgIHJlcG9ydFZpZXdwb3J0V2Fy
bmluZyhkb2N1bWVudCwgVHJ1bmNhdGVkVmlld3BvcnRBcmd1bWVudFZhbHVlRXJyb3IsIHZhbHVl
LCBrZXkpOworICAgICAgICBlcnJvckhhbmRsZXIoVHJ1bmNhdGVkVmlld3BvcnRBcmd1bWVudFZh
bHVlRXJyb3IsIHZhbHVlLCBrZXkpOwogICAgIGlmIChvaykKICAgICAgICAgKm9rID0gdHJ1ZTsK
ICAgICByZXR1cm4gbnVtZXJpY1ZhbHVlOwogfQogCi1zdGF0aWMgZmxvYXQgZmluZFNpemVWYWx1
ZShEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWV3IHZhbHVlLCBi
b29sKiB2YWx1ZVdhc0V4cGxpY2l0ID0gbnVsbHB0cikKK3N0YXRpYyBmbG9hdCBmaW5kU2l6ZVZh
bHVlKFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWV3IHZhbHVlLCBjb25zdCBJbnRlcm5hbFZpZXdw
b3J0RXJyb3JIYW5kbGVyJiBlcnJvckhhbmRsZXIsIGJvb2wqIHZhbHVlV2FzRXhwbGljaXQgPSBu
dWxscHRyKQogewogICAgIC8vIDEpIE5vbi1uZWdhdGl2ZSBudW1iZXIgdmFsdWVzIGFyZSB0cmFu
c2xhdGVkIHRvIHB4IGxlbmd0aHMuCiAgICAgLy8gMikgTmVnYXRpdmUgbnVtYmVyIHZhbHVlcyBh
cmUgdHJhbnNsYXRlZCB0byBhdXRvLgpAQCAtMzI3LDcgKzMyNyw3IEBAIHN0YXRpYyBmbG9hdCBm
aW5kU2l6ZVZhbHVlKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nVmlldyBrZXksIFN0cmluZ1Zp
ZXcgdmFsdWUsCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAi
ZGV2aWNlLWhlaWdodCIpKQogICAgICAgICByZXR1cm4gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVl
RGV2aWNlSGVpZ2h0OwogCi0gICAgZmxvYXQgc2l6ZVZhbHVlID0gbnVtZXJpY1ByZWZpeChkb2N1
bWVudCwga2V5LCB2YWx1ZSk7CisgICAgZmxvYXQgc2l6ZVZhbHVlID0gbnVtZXJpY1ByZWZpeChr
ZXksIHZhbHVlLCBlcnJvckhhbmRsZXIpOwogCiAgICAgaWYgKHNpemVWYWx1ZSA8IDApIHsKICAg
ICAgICAgaWYgKHZhbHVlV2FzRXhwbGljaXQpCkBAIC0zMzgsNyArMzM4LDcgQEAgc3RhdGljIGZs
b2F0IGZpbmRTaXplVmFsdWUoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IGtleSwgU3Ry
aW5nVmlldyB2YWx1ZSwKICAgICByZXR1cm4gc2l6ZVZhbHVlOwogfQogCi1zdGF0aWMgZmxvYXQg
ZmluZFNjYWxlVmFsdWUoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IGtleSwgU3RyaW5n
VmlldyB2YWx1ZSkKK3N0YXRpYyBmbG9hdCBmaW5kU2NhbGVWYWx1ZShTdHJpbmdWaWV3IGtleSwg
U3RyaW5nVmlldyB2YWx1ZSwgY29uc3QgSW50ZXJuYWxWaWV3cG9ydEVycm9ySGFuZGxlciYgZXJy
b3JIYW5kbGVyKQogewogICAgIC8vIDEpIE5vbi1uZWdhdGl2ZSBudW1iZXIgdmFsdWVzIGFyZSB0
cmFuc2xhdGVkIHRvIDxudW1iZXI+IHZhbHVlcy4KICAgICAvLyAyKSBOZWdhdGl2ZSBudW1iZXIg
dmFsdWVzIGFyZSB0cmFuc2xhdGVkIHRvIGF1dG8uCkBAIC0zNTUsMTggKzM1NSwxOCBAQCBzdGF0
aWMgZmxvYXQgZmluZFNjYWxlVmFsdWUoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IGtl
eSwgU3RyaW5nVmlldyB2YWx1ZQogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2Fz
ZSh2YWx1ZSwgImRldmljZS1oZWlnaHQiKSkKICAgICAgICAgcmV0dXJuIDEwOwogCi0gICAgZmxv
YXQgbnVtZXJpY1ZhbHVlID0gbnVtZXJpY1ByZWZpeChkb2N1bWVudCwga2V5LCB2YWx1ZSk7Cisg
ICAgZmxvYXQgbnVtZXJpY1ZhbHVlID0gbnVtZXJpY1ByZWZpeChrZXksIHZhbHVlLCBlcnJvckhh
bmRsZXIpOwogCiAgICAgaWYgKG51bWVyaWNWYWx1ZSA8IDApCiAgICAgICAgIHJldHVybiBWaWV3
cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRvOwogCiAgICAgaWYgKG51bWVyaWNWYWx1ZSA+IDEwLjAp
Ci0gICAgICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwgTWF4aW11bVNjYWxlVG9v
TGFyZ2VFcnJvcik7CisgICAgICAgIGVycm9ySGFuZGxlcihNYXhpbXVtU2NhbGVUb29MYXJnZUVy
cm9yLCB7IH0sIHsgfSk7CiAKICAgICByZXR1cm4gbnVtZXJpY1ZhbHVlOwogfQogCi1zdGF0aWMg
Ym9vbCBmaW5kQm9vbGVhblZhbHVlKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nVmlldyBrZXks
IFN0cmluZ1ZpZXcgdmFsdWUpCitzdGF0aWMgYm9vbCBmaW5kQm9vbGVhblZhbHVlKFN0cmluZ1Zp
ZXcga2V5LCBTdHJpbmdWaWV3IHZhbHVlLCBjb25zdCBJbnRlcm5hbFZpZXdwb3J0RXJyb3JIYW5k
bGVyJiBlcnJvckhhbmRsZXIpCiB7CiAgICAgLy8geWVzIGFuZCBubyBhcmUgdXNlZCBhcyBrZXl3
b3Jkcy4KICAgICAvLyBOdW1iZXJzID49IDEsIG51bWJlcnMgPD0gLTEsIGRldmljZS13aWR0aCBh
bmQgZGV2aWNlLWhlaWdodCBhcmUgbWFwcGVkIHRvIHllcy4KQEAgLTM4MCwxMCArMzgwLDEwIEBA
IHN0YXRpYyBib29sIGZpbmRCb29sZWFuVmFsdWUoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdW
aWV3IGtleSwgU3RyaW5nVmlldyB2YWx1CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgImRldmljZS1oZWlnaHQiKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuIHN0ZDo6YWJzKG51bWVyaWNQcmVmaXgoZG9j
dW1lbnQsIGtleSwgdmFsdWUpKSA+PSAxOworICAgIHJldHVybiBzdGQ6OmFicyhudW1lcmljUHJl
Zml4KGtleSwgdmFsdWUsIGVycm9ySGFuZGxlcikpID49IDE7CiB9CiAKLXN0YXRpYyBWaWV3cG9y
dEZpdCBwYXJzZVZpZXdwb3J0Rml0VmFsdWUoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3
IGtleSwgU3RyaW5nVmlldyB2YWx1ZSkKK3N0YXRpYyBWaWV3cG9ydEZpdCBwYXJzZVZpZXdwb3J0
Rml0VmFsdWUoU3RyaW5nVmlldyBrZXksIFN0cmluZ1ZpZXcgdmFsdWUsIGNvbnN0IEludGVybmFs
Vmlld3BvcnRFcnJvckhhbmRsZXImIGVycm9ySGFuZGxlcikKIHsKICAgICBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJhdXRvIikpCiAgICAgICAgIHJldHVybiBWaWV3
cG9ydEZpdDo6QXV0bzsKQEAgLTM5MiwzOSArMzkyLDExIEBAIHN0YXRpYyBWaWV3cG9ydEZpdCBw
YXJzZVZpZXdwb3J0Rml0VmFsdWUoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IGtleSwg
U3RyCiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAiY292ZXIi
KSkKICAgICAgICAgcmV0dXJuIFZpZXdwb3J0Rml0OjpDb3ZlcjsKIAotICAgIHJlcG9ydFZpZXdw
b3J0V2FybmluZyhkb2N1bWVudCwgVW5yZWNvZ25pemVkVmlld3BvcnRBcmd1bWVudFZhbHVlRXJy
b3IsIHZhbHVlLCBrZXkpOworICAgIGVycm9ySGFuZGxlcihVbnJlY29nbml6ZWRWaWV3cG9ydEFy
Z3VtZW50VmFsdWVFcnJvciwgdmFsdWUsIGtleSk7CiAKICAgICByZXR1cm4gVmlld3BvcnRGaXQ6
OkF1dG87CiB9CiAKLXZvaWQgc2V0Vmlld3BvcnRGZWF0dXJlKFZpZXdwb3J0QXJndW1lbnRzJiBh
cmd1bWVudHMsIERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nVmlldyBrZXksIFN0cmluZ1ZpZXcg
dmFsdWUpCi17Ci0gICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleSwgIndp
ZHRoIikpCi0gICAgICAgIGFyZ3VtZW50cy53aWR0aCA9IGZpbmRTaXplVmFsdWUoZG9jdW1lbnQs
IGtleSwgdmFsdWUsICZhcmd1bWVudHMud2lkdGhXYXNFeHBsaWNpdCk7Ci0gICAgZWxzZSBpZiAo
ZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5LCAiaGVpZ2h0IikpCi0gICAgICAgIGFy
Z3VtZW50cy5oZWlnaHQgPSBmaW5kU2l6ZVZhbHVlKGRvY3VtZW50LCBrZXksIHZhbHVlKTsKLSAg
ICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJpbml0aWFsLXNj
YWxlIikpCi0gICAgICAgIGFyZ3VtZW50cy56b29tID0gZmluZFNjYWxlVmFsdWUoZG9jdW1lbnQs
IGtleSwgdmFsdWUpOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNl
KGtleSwgIm1pbmltdW0tc2NhbGUiKSkKLSAgICAgICAgYXJndW1lbnRzLm1pblpvb20gPSBmaW5k
U2NhbGVWYWx1ZShkb2N1bWVudCwga2V5LCB2YWx1ZSk7Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5LCAibWF4aW11bS1zY2FsZSIpKQotICAgICAgICBhcmd1
bWVudHMubWF4Wm9vbSA9IGZpbmRTY2FsZVZhbHVlKGRvY3VtZW50LCBrZXksIHZhbHVlKTsKLSAg
ICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJ1c2VyLXNjYWxh
YmxlIikpCi0gICAgICAgIGFyZ3VtZW50cy51c2VyWm9vbSA9IGZpbmRCb29sZWFuVmFsdWUoZG9j
dW1lbnQsIGtleSwgdmFsdWUpOwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgZWxzZSBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5LCAibWluaW1hbC11aSIpKSB7Ci0g
ICAgICAgIC8vIEZJWE1FOiBJZ25vcmUgc2lsZW50bHkgZm9yIG5vdy4gVGhpcyBjb2RlIHNob3Vs
ZCBldmVudHVhbGx5IGJlIHJlbW92ZWQKLSAgICAgICAgLy8gc28gd2Ugc3RhcnQgZ2l2aW5nIHRo
ZSB3YXJuaW5nIGluIHRoZSB3ZWIgaW5zcGVjdG9yIGFzIGZvciBvdGhlciB1bmltcGxlbWVudGVk
IGtleXMuCi0gICAgfQotI2VuZGlmCi0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2Uoa2V5LCAic2hyaW5rLXRvLWZpdCIpKQotICAgICAgICBhcmd1bWVudHMuc2hyaW5r
VG9GaXQgPSBmaW5kQm9vbGVhblZhbHVlKGRvY3VtZW50LCBrZXksIHZhbHVlKTsKLSAgICBlbHNl
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJ2aWV3cG9ydC1maXQiKSAm
JiBkb2N1bWVudC5zZXR0aW5ncygpLnZpZXdwb3J0Rml0RW5hYmxlZCgpKQotICAgICAgICBhcmd1
bWVudHMudmlld3BvcnRGaXQgPSBwYXJzZVZpZXdwb3J0Rml0VmFsdWUoZG9jdW1lbnQsIGtleSwg
dmFsdWUpOwotICAgIGVsc2UKLSAgICAgICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50
LCBVbnJlY29nbml6ZWRWaWV3cG9ydEFyZ3VtZW50S2V5RXJyb3IsIGtleSk7Ci19Ci0KIHN0YXRp
YyBjb25zdCBjaGFyKiB2aWV3cG9ydEVycm9yTWVzc2FnZVRlbXBsYXRlKFZpZXdwb3J0RXJyb3JD
b2RlIGVycm9yQ29kZSkKIHsKICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZXJyb3JzW10g
PSB7CkBAIC00NTIsMTIgKzQyNCw4IEBAIHN0YXRpYyBNZXNzYWdlTGV2ZWwgdmlld3BvcnRFcnJv
ck1lc3NhZ2VMZXZlbChWaWV3cG9ydEVycm9yQ29kZSBlcnJvckNvZGUpCiAgICAgcmV0dXJuIE1l
c3NhZ2VMZXZlbDo6RXJyb3I7CiB9CiAKLXZvaWQgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKERvY3Vt
ZW50JiBkb2N1bWVudCwgVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlLCBTdHJpbmdWaWV3IHJl
cGxhY2VtZW50MSwgU3RyaW5nVmlldyByZXBsYWNlbWVudDIpCitzdGF0aWMgU3RyaW5nIHZpZXdw
b3J0RXJyb3JNZXNzYWdlKFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSwgU3RyaW5nVmlldyBy
ZXBsYWNlbWVudDEsIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQyKQogewotICAgIC8vIEZJWE1FOiBX
aHkgaXMgdGhpcyBudWxsIGNoZWNrIG5lZWRlZD8gQ2FuJ3QgYWRkQ29uc29sZU1lc3NhZ2UgZGVh
bCB3aXRoIHRoaXM/Ci0gICAgaWYgKCFkb2N1bWVudC5mcmFtZSgpKQotICAgICAgICByZXR1cm47
Ci0KICAgICBTdHJpbmcgbWVzc2FnZSA9IHZpZXdwb3J0RXJyb3JNZXNzYWdlVGVtcGxhdGUoZXJy
b3JDb2RlKTsKICAgICBpZiAoIXJlcGxhY2VtZW50MS5pc051bGwoKSkKICAgICAgICAgbWVzc2Fn
ZS5yZXBsYWNlKCIlcmVwbGFjZW1lbnQxIiwgcmVwbGFjZW1lbnQxLnRvU3RyaW5nV2l0aG91dENv
cHlpbmcoKSk7CkBAIC00NjgsMTAgKzQzNiw1OCBAQCB2b2lkIHJlcG9ydFZpZXdwb3J0V2Fybmlu
ZyhEb2N1bWVudCYgZG9jdW1lbnQsIFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSwgU3RyaQog
ICAgIGlmICgoZXJyb3JDb2RlID09IFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVy
cm9yIHx8IGVycm9yQ29kZSA9PSBUcnVuY2F0ZWRWaWV3cG9ydEFyZ3VtZW50VmFsdWVFcnJvcikg
JiYgcmVwbGFjZW1lbnQxLmNvbnRhaW5zKCc7JykpCiAgICAgICAgIG1lc3NhZ2UuYXBwZW5kKCIg
Tm90ZSB0aGF0ICc7JyBpcyBub3QgYSBzZXBhcmF0b3IgaW4gdmlld3BvcnQgdmFsdWVzLiBUaGUg
bGlzdCBzaG91bGQgYmUgY29tbWEtc2VwYXJhdGVkLiIpOwogCisgICAgcmV0dXJuIG1lc3NhZ2U7
Cit9CisKK3N0YXRpYyB2b2lkIHJlcG9ydFZpZXdwb3J0V2FybmluZyhEb2N1bWVudCYgZG9jdW1l
bnQsIFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQor
eworICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBudWxsIGNoZWNrIG5lZWRlZD8gQ2FuJ3QgYWRk
Q29uc29sZU1lc3NhZ2UgZGVhbCB3aXRoIHRoaXM/CisgICAgaWYgKCFkb2N1bWVudC5mcmFtZSgp
KQorICAgICAgICByZXR1cm47CisKICAgICAvLyBGSVhNRTogVGhpcyBtZXNzYWdlIHNob3VsZCBi
ZSBtb3ZlZCBvZmYgdGhlIGNvbnNvbGUgb25jZSBhIHNvbHV0aW9uIHRvIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMyNzQgZXhpc3RzLgogICAgIGRvY3VtZW50LmFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgdmlld3BvcnRFcnJvck1l
c3NhZ2VMZXZlbChlcnJvckNvZGUpLCBtZXNzYWdlKTsKIH0KIAordm9pZCBzZXRWaWV3cG9ydEZl
YXR1cmUoVmlld3BvcnRBcmd1bWVudHMmIGFyZ3VtZW50cywgU3RyaW5nVmlldyBrZXksIFN0cmlu
Z1ZpZXcgdmFsdWUsIGJvb2wgdmlld3BvcnRGaXRFbmFibGVkLCBjb25zdCBWaWV3cG9ydEVycm9y
SGFuZGxlciYgZXJyb3JIYW5kbGVyKQoreworICAgIEludGVybmFsVmlld3BvcnRFcnJvckhhbmRs
ZXIgaW50ZXJuYWxFcnJvckhhbmRsZXIgPSBbJmVycm9ySGFuZGxlcl0gKFZpZXdwb3J0RXJyb3JD
b2RlIGVycm9yQ29kZSwgU3RyaW5nVmlldyByZXBsYWNlbWVudDEsIFN0cmluZ1ZpZXcgcmVwbGFj
ZW1lbnQyKSB7CisgICAgICAgIGVycm9ySGFuZGxlcihlcnJvckNvZGUsIHZpZXdwb3J0RXJyb3JN
ZXNzYWdlKGVycm9yQ29kZSwgcmVwbGFjZW1lbnQxLCByZXBsYWNlbWVudDIpKTsKKyAgICB9Owor
CisgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleSwgIndpZHRoIikpCisg
ICAgICAgIGFyZ3VtZW50cy53aWR0aCA9IGZpbmRTaXplVmFsdWUoa2V5LCB2YWx1ZSwgaW50ZXJu
YWxFcnJvckhhbmRsZXIsICZhcmd1bWVudHMud2lkdGhXYXNFeHBsaWNpdCk7CisgICAgZWxzZSBp
ZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5LCAiaGVpZ2h0IikpCisgICAgICAg
IGFyZ3VtZW50cy5oZWlnaHQgPSBmaW5kU2l6ZVZhbHVlKGtleSwgdmFsdWUsIGludGVybmFsRXJy
b3JIYW5kbGVyKTsKKyAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShr
ZXksICJpbml0aWFsLXNjYWxlIikpCisgICAgICAgIGFyZ3VtZW50cy56b29tID0gZmluZFNjYWxl
VmFsdWUoa2V5LCB2YWx1ZSwgaW50ZXJuYWxFcnJvckhhbmRsZXIpOworICAgIGVsc2UgaWYgKGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleSwgIm1pbmltdW0tc2NhbGUiKSkKKyAgICAg
ICAgYXJndW1lbnRzLm1pblpvb20gPSBmaW5kU2NhbGVWYWx1ZShrZXksIHZhbHVlLCBpbnRlcm5h
bEVycm9ySGFuZGxlcik7CisgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2Uoa2V5LCAibWF4aW11bS1zY2FsZSIpKQorICAgICAgICBhcmd1bWVudHMubWF4Wm9vbSA9IGZp
bmRTY2FsZVZhbHVlKGtleSwgdmFsdWUsIGludGVybmFsRXJyb3JIYW5kbGVyKTsKKyAgICBlbHNl
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJ1c2VyLXNjYWxhYmxlIikp
CisgICAgICAgIGFyZ3VtZW50cy51c2VyWm9vbSA9IGZpbmRCb29sZWFuVmFsdWUoa2V5LCB2YWx1
ZSwgaW50ZXJuYWxFcnJvckhhbmRsZXIpOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAg
ZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5LCAibWluaW1hbC11aSIp
KSB7CisgICAgICAgIC8vIEZJWE1FOiBJZ25vcmUgc2lsZW50bHkgZm9yIG5vdy4gVGhpcyBjb2Rl
IHNob3VsZCBldmVudHVhbGx5IGJlIHJlbW92ZWQKKyAgICAgICAgLy8gc28gd2Ugc3RhcnQgZ2l2
aW5nIHRoZSB3YXJuaW5nIGluIHRoZSB3ZWIgaW5zcGVjdG9yIGFzIGZvciBvdGhlciB1bmltcGxl
bWVudGVkIGtleXMuCisgICAgfQorI2VuZGlmCisgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2Uoa2V5LCAic2hyaW5rLXRvLWZpdCIpKQorICAgICAgICBhcmd1bWVudHMu
c2hyaW5rVG9GaXQgPSBmaW5kQm9vbGVhblZhbHVlKGtleSwgdmFsdWUsIGludGVybmFsRXJyb3JI
YW5kbGVyKTsKKyAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXks
ICJ2aWV3cG9ydC1maXQiKSAmJiB2aWV3cG9ydEZpdEVuYWJsZWQpCisgICAgICAgIGFyZ3VtZW50
cy52aWV3cG9ydEZpdCA9IHBhcnNlVmlld3BvcnRGaXRWYWx1ZShrZXksIHZhbHVlLCBpbnRlcm5h
bEVycm9ySGFuZGxlcik7CisgICAgZWxzZQorICAgICAgICBpbnRlcm5hbEVycm9ySGFuZGxlcihV
bnJlY29nbml6ZWRWaWV3cG9ydEFyZ3VtZW50S2V5RXJyb3IsIGtleSwgeyB9KTsKK30KKwordm9p
ZCBzZXRWaWV3cG9ydEZlYXR1cmUoVmlld3BvcnRBcmd1bWVudHMmIGFyZ3VtZW50cywgRG9jdW1l
bnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSkKK3sKKyAgICBz
ZXRWaWV3cG9ydEZlYXR1cmUoYXJndW1lbnRzLCBrZXksIHZhbHVlLCBkb2N1bWVudC5zZXR0aW5n
cygpLnZpZXdwb3J0Rml0RW5hYmxlZCgpLCBbJl0oVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2Rl
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsKKyAgICAgICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5n
KGRvY3VtZW50LCBlcnJvckNvZGUsIG1lc3NhZ2UpOworICAgIH0pOworfQorCiBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYgdmll
d3BvcnRBcmd1bWVudHMpCiB7CiAgICAgVGV4dFN0cmVhbTo6SW5kZW50U2NvcGUgaW5kZW50U2Nv
cGUodHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRz
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaAppbmRleCA0ZGJmMDkz
ZjZiMDIyOTAzYzQ3MjUwZGExZWYxMzBkNzgzYjRiZTcyLi44MjUwOTg2ZTQwMDIyYjRmN2E4NmQ3
ZmY4MWY4ZTQ2ZDE0MTUzNDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3Bv
cnRBcmd1bWVudHMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMu
aApAQCAtMTQzLDcgKzE0Myw5IEBAIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdHJpY3RNaW5pbXVt
U2NhbGVGYWN0b3JUb1ZpZXdwb3J0U2l6ZShWaWV3cG9ydEF0dHJpYnV0ZXMmCiBXRUJDT1JFX0VY
UE9SVCB2b2lkIHJlc3RyaWN0U2NhbGVGYWN0b3JUb0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxh
YmxlKFZpZXdwb3J0QXR0cmlidXRlcyYgcmVzdWx0KTsKIFdFQkNPUkVfRVhQT1JUIGZsb2F0IGNv
bXB1dGVNaW5pbXVtU2NhbGVGYWN0b3JGb3JDb250ZW50Q29udGFpbmVkKGNvbnN0IFZpZXdwb3J0
QXR0cmlidXRlcyYgcmVzdWx0LCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IElu
dFNpemUmIGNvbnRlbnRTaXplKTsKIAordHlwZWRlZiBXVEY6OkZ1bmN0aW9uPHZvaWQoVmlld3Bv
cnRFcnJvckNvZGUsIGNvbnN0IFN0cmluZyYpPiBWaWV3cG9ydEVycm9ySGFuZGxlcjsKIHZvaWQg
c2V0Vmlld3BvcnRGZWF0dXJlKFZpZXdwb3J0QXJndW1lbnRzJiwgRG9jdW1lbnQmLCBTdHJpbmdW
aWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZXdw
b3J0RmVhdHVyZShWaWV3cG9ydEFyZ3VtZW50cyYsIFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWV3
IHZhbHVlLCBib29sIHZpZXdwb3J0Rml0RW5hYmxlZCwgY29uc3QgVmlld3BvcnRFcnJvckhhbmRs
ZXImKTsKIAogV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNv
bnN0IFZpZXdwb3J0QXJndW1lbnRzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggMThiMjViMWI0NGVmYmNiMGQ5ODNk
OTk1MTdlZjU1OWIxZDcyOTQ5OC4uNzYwNTRiMWIwNjZkNjMyNzlmNmZiYmQ2OGU4YWMxOTNhZGMz
MWRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5jcHAKQEAgLTEyOCw2ICsxMjgsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8
PCBjb250ZW50UnVsZUxpc3RzOwogI2VuZGlmCiAgICAgZW5jb2RlciA8PCBiYWNrZ3JvdW5kQ29s
b3I7CisgICAgZW5jb2RlciA8PCBvdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzOwogfQogCiBPcHRp
b25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyKQpAQCAtMzc4LDYgKzM3OSwxMiBAQCBPcHRp
b25hbDxXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzPiBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUoSVBDOjpEZWNvZAogICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogICAgIHBh
cmFtZXRlcnMuYmFja2dyb3VuZENvbG9yID0gV1RGTW92ZSgqYmFja2dyb3VuZENvbG9yKTsKIAor
ICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzPj4gb3ZlcnJp
ZGVWaWV3cG9ydEFyZ3VtZW50czsKKyAgICBkZWNvZGVyID4+IG92ZXJyaWRlVmlld3BvcnRBcmd1
bWVudHM7CisgICAgaWYgKCFvdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMub3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50
cyA9IFdURk1vdmUoKm92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMpOworCiAgICAgcmV0dXJuIHBh
cmFtZXRlcnM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuaAppbmRleCBhYjNiOGUwMTAxMzdlNTNmZGZjMDgyMWYzYjIyZTI0MzY3MmUz
YWYwLi44NzViNmI3YzFlZjQ1MzI4NmRiMDZhYzQ1YzBkNmQyNzkyNDBkMDAwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC00Miw2
ICs0Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdpbmF0aW9uLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TY3JvbGxUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4KICNp
bmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTE5Nyw2ICsxOTgsOCBAQCBzdHJ1Y3QgV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAjZW5kaWYKIAogICAgIE9wdGlvbmFsPFdlYkNvcmU6
OkNvbG9yPiBiYWNrZ3JvdW5kQ29sb3I7CisKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpWaWV3cG9y
dEFyZ3VtZW50cz4gb3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50czsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0KaW5kZXggZDg0MTFkMzkyNDUwNDI2MmQ0MmQ1NjAxNWQ1ZTAzM2ExZTI2NzQxYS4uNTky
NmZhZGVjYTUwZWU5NzA1MDRiNzk3NjhkYTg1MTQzZTZkZjNjNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0zNzYsNiArMzc2LDggQEAg
QGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyB7CiAKICAgICBOU1VJbnRlZ2VyIF9mb2N1c1ByZXNl
cnZhdGlvbkNvdW50OwogICAgIE5TVUludGVnZXIgX2FjdGl2ZUZvY3VzZWRTdGF0ZVJldGFpbkNv
dW50OworCisgICAgUmV0YWluUHRyPE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1N0cmluZyAq
Pj4gX292ZXJyaWRlVmlld3BvcnRBcmd1bWVudHM7CiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMp
CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6V2ViVmlld0ltcGw+IF9pbXBsOwpAQCAtNDc2
LDYgKzQ3OCwzOSBAQCAtIChCT09MKV9pc1JldGFpbmluZ0FjdGl2ZUZvY3VzZWRTdGF0ZQogICAg
IHJldHVybiBfZm9jdXNQcmVzZXJ2YXRpb25Db3VudCB8fCBfYWN0aXZlRm9jdXNlZFN0YXRlUmV0
YWluQ291bnQ7CiB9CiAKK3N0YXRpYyBXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJn
dW1lbnRzPiB2aWV3cG9ydEFyZ3VtZW50c0Zyb21EaWN0aW9uYXJ5KE5TRGljdGlvbmFyeTxOU1N0
cmluZyAqLCBOU1N0cmluZyAqPiAqdmlld3BvcnRBcmd1bWVudFBhaXJzLCBib29sIHZpZXdwb3J0
Rml0RW5hYmxlZCkKK3sKKyAgICBpZiAoIXZpZXdwb3J0QXJndW1lbnRQYWlycykKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIHZp
ZXdwb3J0QXJndW1lbnRzKFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWaWV3cG9ydE1ldGEp
OworCisgICAgW3ZpZXdwb3J0QXJndW1lbnRQYWlycyBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1Vz
aW5nQmxvY2s6bWFrZUJsb2NrUHRyKFsmXSAoTlNTdHJpbmcgKmtleSwgTlNTdHJpbmcgKnZhbHVl
LCBCT09MKiBzdG9wKSB7CisgICAgICAgIFN0cmluZyBrZXlTdHJpbmcgPSBrZXk7CisgICAgICAg
IFN0cmluZyB2YWx1ZVN0cmluZyA9IHZhbHVlOworICAgICAgICBXZWJDb3JlOjpzZXRWaWV3cG9y
dEZlYXR1cmUodmlld3BvcnRBcmd1bWVudHMsIGtleVN0cmluZywgdmFsdWVTdHJpbmcsIHZpZXdw
b3J0Rml0RW5hYmxlZCwgW10gKFdlYkNvcmU6OlZpZXdwb3J0RXJyb3JDb2RlLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkgeworICAgICAgICAgICAgTlNMb2coQCItW1dLV2ViVmlldyBfc2V0
T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50c106IEVycm9yIHBhcnNpbmcgdmlld3BvcnQgYXJndW1l
bnQ6ICVzIiwgZXJyb3JNZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICB9KTsKKyAgICB9
KS5nZXQoKV07CisKKyAgICByZXR1cm4gdmlld3BvcnRBcmd1bWVudHM7Cit9CisKKy0gKE5TRGlj
dGlvbmFyeTxOU1N0cmluZyAqLCBOU1N0cmluZyAqPiAqKV9vdmVycmlkZVZpZXdwb3J0QXJndW1l
bnRzCit7CisgICAgcmV0dXJuIF9vdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzLmdldCgpOworfQor
CistICh2b2lkKV9zZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzOihOU0RpY3Rpb25hcnk8TlNT
dHJpbmcgKiwgTlNTdHJpbmcgKj4gKil2aWV3cG9ydEFyZ3VtZW50cworeworICAgIF9vdmVycmlk
ZVZpZXdwb3J0QXJndW1lbnRzID0gYWRvcHROUyhbdmlld3BvcnRBcmd1bWVudHMgY29weV0pOwor
CisgICAgaWYgKCFfcGFnZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgX3BhZ2UtPnNldE92ZXJy
aWRlVmlld3BvcnRBcmd1bWVudHModmlld3BvcnRBcmd1bWVudHNGcm9tRGljdGlvbmFyeSh2aWV3
cG9ydEFyZ3VtZW50cywgX3BhZ2UtPnByZWZlcmVuY2VzKCkudmlld3BvcnRGaXRFbmFibGVkKCkp
KTsKK30KKwogI2VuZGlmCiAKICNpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5k
ZXggYmQzNDRjMjQwYjE2MmNiNjgxNGVlOGJkOTE0YzkyNmI4MjdkZDA2OS4uNWE3MGI0NDcyMDEz
OTNlNWRiMTM5Njg5ODZkOWFkN2EyOWI2ZjQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0yNzAsNiArMjcwLDgg
QEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiAKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBzZXR0ZXI9X3NldERyYWdJbnRlcmFjdGlvblBvbGljeTopIF9XS0Ry
YWdJbnRlcmFjdGlvblBvbGljeSBfZHJhZ0ludGVyYWN0aW9uUG9saWN5IFdLX0FQSV9BVkFJTEFC
TEUoaW9zKDExLjApKTsKIAorQHByb3BlcnR5IChub25hdG9taWMsIGNvcHksIHNldHRlcj1fc2V0
T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50czopIE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1N0
cmluZyAqPiAqX292ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMgV0tfQVBJX0FWQUlMQUJMRShpb3Mo
V0tfSU9TX1RCQSkpOworCiAtICh2b2lkKV9iZWdpbkludGVyYWN0aXZlT2JzY3VyZWRJbnNldHND
aGFuZ2U7CiAtICh2b2lkKV9lbmRJbnRlcmFjdGl2ZU9ic2N1cmVkSW5zZXRzQ2hhbmdlOwogLSAo
dm9pZClfaGlkZUNvbnRlbnRVbnRpbE5leHRVcGRhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcAppbmRleCBiZTE2MTFmZWMwZGM4NjAzMjY3NjMxMmQyMzhmZjAwZmY1
MmUwYzdmLi5lYmQwNjc1MGViNjZlNDE3NGQyNzU5MThmYmYxNTdkNGE5OGVjZTc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTcwMjcsNiArNzAyNyw3IEBA
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRl
cnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAgICAgcGFyYW1ldGVycy5tYXhpbXVtVW5vYnNjdXJl
ZFNpemUgPSBtX21heGltdW1Vbm9ic2N1cmVkU2l6ZTsKICAgICBwYXJhbWV0ZXJzLmRldmljZU9y
aWVudGF0aW9uID0gbV9kZXZpY2VPcmllbnRhdGlvbjsKICAgICBwYXJhbWV0ZXJzLmtleWJvYXJk
SXNBdHRhY2hlZCA9IGlzSW5IYXJkd2FyZUtleWJvYXJkTW9kZSgpOworICAgIHBhcmFtZXRlcnMu
b3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cyA9IG1fb3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50czsK
ICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAppbmRleCA0NjBhMTkzMWVlMDM3YzNjN2RjN2Q2YjZkNmM0NWYyNWExYzZiODNmLi41
ZGEzMGUyMTdmYTJiMmI4ZWE5MDI5YmZjYjYzNmUxZWU2YjQzOGQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtOTEsNiArOTEsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvVGV4dENoZWNraW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0R3JhbnVsYXJpdHkuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgogI2lu
Y2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CkBAIC0yMTE3LDYgKzIxMTgsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQorICAgIE9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzPiBtX292
ZXJyaWRlVmlld3BvcnRBcmd1bWVudHM7CiAgICAgVmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5m
byBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGU7CiAgICAgdWludDY0X3QgbV9maXJzdExh
eWVyVHJlZVRyYW5zYWN0aW9uSWRBZnRlckRpZENvbW1pdExvYWQgeyAwIH07CiAgICAgaW50MzJf
dCBtX2RldmljZU9yaWVudGF0aW9uIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggZmY4YmY2OWJlZDEyNjg2MDMwMjJiZGI1MDJi
NjZhYzEwNmMwNThhOS4uNWE0ODM1ZmY0YWUwYmY0YzExMGE2MDFhMzFiMGExOGNlNjE1OTM3MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBA
IC0zNjQsNiArMzY0LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXREZXZpY2VPcmllbnRhdGlv
bihpbnQzMl90IGRldmljZU9yaWVudGF0aW9uKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0T3Zl
cnJpZGVWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBPcHRpb25hbDxWaWV3cG9ydEFyZ3VtZW50cz4m
IHZpZXdwb3J0QXJndW1lbnRzKQogeworICAgIGlmICh2aWV3cG9ydEFyZ3VtZW50cyA9PSBtX292
ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMpCisgICAgICAgIHJldHVybjsKKworICAgIG1fb3ZlcnJp
ZGVWaWV3cG9ydEFyZ3VtZW50cyA9IHZpZXdwb3J0QXJndW1lbnRzOworCiAgICAgaWYgKGhhc1J1
bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6U2V0T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cyh2aWV3cG9ydEFyZ3VtZW50cyksIG1fcGFn
ZUlEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
aW5kZXggMDYyMzNjNzJjMTFhMDliYjk1MjAyMWUwODg5YTJiOGYwNDc1NTBlYi4uYTRhZTJmYjc0
NDFjNDBiMDY0NTkyMzlhZjA0ZWQyNmQzODUwYzU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTU1MSw2ICs1NTEsOCBAQCBXZWJQYWdlOjpX
ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYmIHBhcmFt
ZXRlcnMpCiAKICAgICBzZXRVc2VEYXJrQXBwZWFyYW5jZShwYXJhbWV0ZXJzLnVzZURhcmtBcHBl
YXJhbmNlKTsKIAorICAgIHNldE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMocGFyYW1ldGVycy5v
dmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKTsKKwogICAgIGlmIChwYXJhbWV0ZXJzLmlzRWRpdGFi
bGUpCiAgICAgICAgIHNldEVkaXRhYmxlKHRydWUpOwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzAyYjJiMzQwMTZiMWI0ZWM5MzAwNDYwYzVl
ZmQyNTRiYjAzMmZjNy4uNTQyNmEzZTQzY2NjOWM2MGJhMGQzMmFjMDExYzA2NTA0NjgyZDQwYiAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDE5LTA0LTA5ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUu
Y29tPgorCisgICAgICAgIEFkZCBtb2Rlcm4gQVBJIGZvciBvdmVycmlkaW5nIHRoZSBwYWdlJ3Mg
c3BlY2lmaWVkIHZpZXdwb3J0IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzczNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MzAzMzE3OTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL092ZXJyaWRlVmll
d3BvcnRBcmd1bWVudHMubW06IEFkZGVkLgorCiAyMDE5LTA0LTA4ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIERvIG5vdCBhbGxvdyBzdGFy
dGluZyBzZWxlY3Rpb24gZHJhZ3Mgd2hlbiBzZWxlY3Rpb24gdmlld3MgYXJlIG5vdCB2aXNpYmxl
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGI2NmM1Y2M3NjBmODg0MDliOGUwZjMyMjZkZTU3
ZGFjM2RiNTczZjkuLjJlZjM2YzQwN2FmM2U5YjIxNzhiMmQ5YmVkZGVkNDZiZGNlOTYwZjYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDAsNiArMTAwLDcgQEAKIAkJMkQ3MDA1OTkyMUVE
QTREMDAwMzQ2M0NCIC8qIE9mZnNjcmVlbldpbmRvdy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJENzAwNTk3MjFFREE0RDAwMDM0NjNDQiAvKiBPZmZz
Y3JlZW5XaW5kb3cubW0gKi87IH07CiAJCTJEN0ZEMTkzMjI0MTkwODcwMDc4ODdGMSAvKiBEb2N1
bWVudEVkaXRpbmdDb250ZXh0Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkQ3RkQxOTIyMjQxOTA4NzAwNzg4N0YxIC8qIERvY3VtZW50RWRpdGluZ0Nv
bnRleHQubW0gKi87IH07CiAJCTJEODM4QjFGMUVFRjNBNUMwMDlCOTgwRSAvKiBXS0NvbnRlbnRW
aWV3RWRpdGluZ0FjdGlvbnMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRDgzOEIxRTFFRUYzQTVCMDA5Qjk4MEUgLyogV0tDb250ZW50Vmlld0VkaXRp
bmdBY3Rpb25zLm1tICovOyB9OworCQkyREEyNTg2RjIyNUM2N0RDMDBCNDVDMUMgLyogT3ZlcnJp
ZGVWaWV3cG9ydEFyZ3VtZW50cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDJEQTI1ODZFMjI1QzY3REMwMEI0NUMxQyAvKiBPdmVycmlkZVZpZXdwb3J0
QXJndW1lbnRzLm1tICovOyB9OwogCQkyREFERjI2MzIxQ0I4RjMyMDAzRDNFM0EgLyogR2V0UmVz
b3VyY2VEYXRhLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMkRBREYyNjIyMUNCOEYzMjAwM0QzRTNBIC8qIEdldFJlc291cmNlRGF0YS5tbSAqLzsgfTsK
IAkJMkRCMDIzMkYxRTRFODcxODAwNzA3MTIzIC8qIEludGVyYWN0aW9uRGVhZGxvY2tBZnRlckNy
YXNoLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkRC
MDIzMkUxRTRFODcxODAwNzA3MTIzIC8qIEludGVyYWN0aW9uRGVhZGxvY2tBZnRlckNyYXNoLm1t
ICovOyB9OwogCQkyREI2NDc4ODFGNDE2M0Q2MDA1MUE4OUUgLyogV0tXZWJWaWV3RG9lc05vdExv
Z0R1cmluZ0luaXRpYWxpemF0aW9uLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkRCNjQ3ODcxRjQxNjFGNzAwNTFBODlFIC8qIFdLV2ViVmlld0RvZXNO
b3RMb2dEdXJpbmdJbml0aWFsaXphdGlvbi5tbSAqLzsgfTsKQEAgLTE0NTgsNiArMTQ1OSw3IEBA
CiAJCTJEODEwNENCMUJFQzEzRTcwMDIwREE0NiAvKiBGaW5kSW5QYWdlLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmluZEluUGFnZS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkQ4MzhCMUUxRUVGM0E1QjAwOUI5ODBFIC8qIFdLQ29udGVudFZp
ZXdFZGl0aW5nQWN0aW9ucy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdLQ29udGVudFZpZXdFZGl0aW5nQWN0aW9ucy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMkQ5QTUzQUUxQjMxRkE4RDAwNzRENUFBIC8qIFNocmlua1RvRml0Lm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2hyaW5rVG9GaXQubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTJEQTI1ODZFMjI1QzY3REMwMEI0NUMxQyAvKiBPdmVy
cmlkZVZpZXdwb3J0QXJndW1lbnRzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gT3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMkRBREYyNjIyMUNCOEYzMjAwM0QzRTNBIC8qIEdldFJlc291cmNlRGF0YS5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEdldFJlc291cmNlRGF0
YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkRCMDIzMkUxRTRFODcxODAwNzA3
MTIzIC8qIEludGVyYWN0aW9uRGVhZGxvY2tBZnRlckNyYXNoLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gSW50ZXJhY3Rpb25EZWFkbG9ja0FmdGVyQ3Jhc2gubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQjY0Nzg3MUY0MTYxRjcwMDUxQTg5RSAv
KiBXS1dlYlZpZXdEb2VzTm90TG9nRHVyaW5nSW5pdGlhbGl6YXRpb24ubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXS1dlYlZpZXdEb2VzTm90TG9nRHVyaW5nSW5pdGlhbGl6YXRpb24ubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNjA4LDYgKzI2MTAsNyBAQAogCQkJCTM3QTIy
QUE1MURDQUEyNzIwMEFGQkZDNCAvKiBPYnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzQWZ0
ZXJDcmFzaC5tbSAqLywKIAkJCQlDRUE2Q0YyMjE5Q0NGNUJEMDA2NEY1QTcgLyogT3BlbkFuZENs
b3NlV2luZG93Lm1tICovLAogCQkJCUNFQkNBMTJFMUUzQTY2MDEwMEM3MzI5MyAvKiBPdmVycmlk
ZUNvbnRlbnRTZWN1cml0eVBvbGljeS5tbSAqLywKKwkJCQkyREEyNTg2RTIyNUM2N0RDMDBCNDVD
MUMgLyogT3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cy5tbSAqLywKIAkJCQkyRDNDQTNBNDIyMURG
MjM5MDA4OEU4MDMgLyogUGFnZU92ZXJsYXlQbHVnaW4ubW0gKi8sCiAJCQkJRjQ0Qzc5RkIyMEY5
RTUwQzAwMTQ0NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5QbHVnSW4ubW0gKi8sCiAJCQkJRjQ0Qzc5
RkQyMEY5RTg3MTAwMTQ0NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5UZXN0cy5oICovLApAQCAtNDIz
MCw2ICs0MjMzLDcgQEAKIAkJCQkyRDcwMDU5OTIxRURBNEQwMDAzNDYzQ0IgLyogT2Zmc2NyZWVu
V2luZG93Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMjUxQTQxMUFGNjAwNDQ3QzRDIC8q
IE9wZW5BbmRDbG9zZVdpbmRvdy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUNFQkNBMTJGMUUzQTY2
MDEwMEM3MzI5MyAvKiBPdmVycmlkZUNvbnRlbnRTZWN1cml0eVBvbGljeS5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCTJEQTI1ODZGMjI1QzY3REMwMEI0NUMxQyAvKiBPdmVycmlkZVZpZXdwb3J0QXJn
dW1lbnRzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDQjREQTkxQzgzQUU3MzAwQ0M2OTE4IC8q
IFBhZ2VHcm91cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwNzFBNDExQUU2MDA0NDdD
NEMgLyogUGFnZUxvYWRCYXNpYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwODFBNDEx
QUU2MDA0NDdDNEMgLyogUGFnZUxvYWREaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFt
ZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvT3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cy5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvT3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cy5tbQpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5lYzVlNGIwZjE0ZTBmNTdiOTcwNDUzMDg4ZmIxMzE5OGQwY2E2ZmNkCi0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9PdmVy
cmlkZVZpZXdwb3J0QXJndW1lbnRzLm1tCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1w
b3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3Lmgi
CisjaW1wb3J0IDxXZWJLaXQvV0tQcmVmZXJlbmNlcy5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCisKK1RFU1QoV2ViS2l0LCBPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKQor
eworICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCAyMCwgMjApXSk7
CisKKyAgICBhdXRvIGJvZHlXaWR0aCA9IF57CisgICAgICAgIHJldHVybiBbd2ViVmlldyBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCJdOwor
ICAgIH07CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8bWV0
YSBuYW1lPSd2aWV3cG9ydCcgY29udGVudD0naW5pdGlhbC1zY2FsZT0xJz48ZGl2IGlkPSdkaXZX
aXRoVmlld3BvcnRVbml0cycgc3R5bGU9J3dpZHRoOiAxMDB2dzsnPjwvZGl2PiJdOworICAgIEVY
UEVDVF9XS19TVFJFUSgiMjAiLCBib2R5V2lkdGgoKSk7CisKKyAgICBbd2ViVmlldyBfc2V0T3Zl
cnJpZGVWaWV3cG9ydEFyZ3VtZW50czpAeyBAIndpZHRoIiA6IEAiMTAwMCIgfV07CisgICAgRVhQ
RUNUX1dLX1NUUkVRKCIxMDAwIiwgYm9keVdpZHRoKCkpOworCisgICAgW3dlYlZpZXcgX3NldE92
ZXJyaWRlVmlld3BvcnRBcmd1bWVudHM6QHsgQCJ3aWR0aCIgOiBAIjEwMDAiLCBAImluaXRpYWwt
c2NhbGUiOiBAIjEiIH1dOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBk
YXRlXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIjEwMDAiLCBib2R5V2lkdGgoKSk7CisgICAgRVhQ
RUNUX0VRKDEuLCBbd2ViVmlldyBzY3JvbGxWaWV3XS56b29tU2NhbGUpOworCisgICAgW3dlYlZp
ZXcgX3NldE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHM6QHsgQCJ3aWR0aCIgOiBAIjEwMDAiLCBA
ImluaXRpYWwtc2NhbGUiOiBAIjUiIH1dOworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2Vu
dGF0aW9uVXBkYXRlXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIjEwMDAiLCBib2R5V2lkdGgoKSk7
CisgICAgRVhQRUNUX0VRKDUuLCBbd2ViVmlldyBzY3JvbGxWaWV3XS56b29tU2NhbGUpOworCisg
ICAgW3dlYlZpZXcgX3NldE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHM6bmlsXTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoIjIwIiwgYm9keVdpZHRoKCkpOworCisgICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRIVE1MU3RyaW5nOkAiPG1ldGEgbmFtZT0ndmlld3BvcnQnIGNvbnRlbnQ9J3dpZHRo
PTEwJz48ZGl2IGlkPSdkaXZXaXRoVmlld3BvcnRVbml0cycgc3R5bGU9J3dpZHRoOiAxMDB2dzsn
PjwvZGl2PiJdOworICAgIEVYUEVDVF9XS19TVFJFUSgiMTAiLCBib2R5V2lkdGgoKSk7CisKKyAg
ICBbd2ViVmlldyBfc2V0T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50czpAeyBAIndpZHRoIiA6IEAi
MTAwMCIsIEAiaW5pdGlhbC1zY2FsZSI6IEAiMSIgfV07CisgICAgRVhQRUNUX1dLX1NUUkVRKCIx
MDAwIiwgYm9keVdpZHRoKCkpOworCisgICAgW3dlYlZpZXcgX3NldE92ZXJyaWRlVmlld3BvcnRB
cmd1bWVudHM6QHsgQCJ3aWR0aCIgOiBAImRldmljZS13aWR0aCIsIEAiaW5pdGlhbC1zY2FsZSI6
IEAiMSIgfV07CisgICAgRVhQRUNUX1dLX1NUUkVRKCIyMCIsIGJvZHlXaWR0aCgpKTsKKworICAg
IFt3ZWJWaWV3IF9zZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzOkB7IEAid2lkdGgiIDogQCI1
MDAiLCBAImluaXRpYWwtc2NhbGUiOiBAIjEiLCBAImdhcmJhZ2UiOiBAIm5vbnNlbnNlIiB9XTsK
KyAgICBFWFBFQ1RfV0tfU1RSRVEoIjUwMCIsIGJvZHlXaWR0aCgpKTsKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367103</attachid>
            <date>2019-04-09 22:37:35 -0700</date>
            <delta_ts>2019-04-10 12:32:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167734-20190409223734.patch</filename>
            <type>text/plain</type>
            <size>33843</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0MDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTJiYTY2N2VlODRkNGI5
YjI3YmQxNDc1MTk5ZjNiMmU2NmZkNzFlZi4uZWQ2ZDM5NGE5NzcwZWM4NTBkNDA5NWJlNjIxY2Q1
MGYzZjkyMTg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE5LTA0LTA5ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBtb2Rlcm4g
QVBJIGZvciBvdmVycmlkaW5nIHRoZSBwYWdlJ3Mgc3BlY2lmaWVkIHZpZXdwb3J0IGNvbmZpZ3Vy
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NzczNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzAzMzE3OTU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IEFQSSB0ZXN0OiBXZWJLaXQuT3Zl
cnJpZGVWaWV3cG9ydEFyZ3VtZW50cworCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVWaWV3cG9ydEFyZ3VtZW50cyk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dmlld3Bv
cnRBcmd1bWVudHMgY29uc3QpOgorICAgICAgICBNYWtlIHRoZSB2aWV3cG9ydEFyZ3VtZW50cygp
IGdldHRlciByZXNwZWN0IHRoZSBvdmVycmlkZGVuIGFyZ3VtZW50cy4KKworICAgICAgICAqIGRv
bS9WaWV3cG9ydEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpudW1lcmljUHJlZml4
KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRTaXplVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
ZmluZFNjYWxlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEJvb2xlYW5WYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZVZpZXdwb3J0Rml0VmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6dmlld3BvcnRFcnJvck1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0Vmlld3Bv
cnRXYXJuaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFZpZXdwb3J0RmVhdHVyZSk6CisgICAg
ICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmg6CisgICAgICAgIE1ha2UgaXQgcG9zc2libGUg
dG8gcGFyc2UgVmlld3BvcnRBcmd1bWVudHMgd2l0aG91dCBhIERvY3VtZW50LCBzbworICAgICAg
ICB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIHRoZSBVSSBwcm9jZXNzLiBXZSBvbmx5IHVzZWQgdGhl
IERvY3VtZW50IGZvcgorICAgICAgICB0d28gdGhpbmdzOiBlcnJvciByZXBvcnRpbmcsIGFuZCBn
ZXR0aW5nIHRoZSBzdGF0ZSBvZiBvbmUgc2V0dGluZy4KKyAgICAgICAgUmVmYWN0b3IgZXJyb3Ig
aGFuZGxpbmcgdG8gdXNlIGEgcGFzc2VkLWFydW5kIGZ1bmN0aW9uLCBhbmQgYWRkIGEKKyAgICAg
ICAgdmFyaWFudCBvZiBzZXRWaWV3cG9ydEZlYXR1cmUoKSB0aGF0IGRvZXNuJ3QgdGFrZSBhIERv
Y3VtZW50LgorCiAyMDE5LTA0LTA4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1NdIERvIG5vdCBhbGxvdyBzdGFydGluZyBzZWxlY3Rpb24gZHJh
Z3Mgd2hlbiBzZWxlY3Rpb24gdmlld3MgYXJlIG5vdCB2aXNpYmxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQzMTU5
ZjAyOWZiOWNjZDVhZDQyOTJmYTAxMDVmM2VhNWRjMjZhZDkuLmJiNjZiNjJmYjM5ZjQyOWE3MmE3
MDQ0ZjhiMmM0ZTI5YzliNDU4YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTktMDQt
MDkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRk
IG1vZGVybiBBUEkgZm9yIG92ZXJyaWRpbmcgdGhlIHBhZ2UncyBzcGVjaWZpZWQgdmlld3BvcnQg
Y29uZmlndXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY3NzM0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDMzMTc5NT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5oOgorICAgICAgICBQbHVtYiBvdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzIGlu
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMsIHNvIHRoYXQKKyAgICAgICAgaWYgdGhlIHByb2Nl
c3MgY3Jhc2hlcyAob3Igc3dhcHMpIHRoZXkgYXJlIG1haW50YWluZWQuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKHZpZXdwb3J0QXJndW1l
bnRzRnJvbURpY3Rpb25hcnkpOgorICAgICAgICAoLVtXS1dlYlZpZXcgX292ZXJyaWRlVmlld3Bv
cnRBcmd1bWVudHNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRPdmVycmlkZVZpZXdwb3J0
QXJndW1lbnRzOl0pOgorICAgICAgICBBZGQgU1BJIHRvIHNldCBvdmVycmlkZSB2aWV3cG9ydCBh
cmd1bWVudHMuIFBhcnNlIHRoZW0gaW50byBhIFZpZXdwb3J0QXJndW1lbnRzCisgICAgICAgIG9i
amVjdCBhbmQgdXNlIHRoZSBleGlzdGluZyAobm93IGltcHJvdmVkKSBvdmVycmlkZVZpZXdwb3J0
QXJndW1lbnRzIG1lY2hhbmlzbQorICAgICAgICB0byB0YWtlIG92ZXIgdGhlIHBhZ2UncyB2aWV3
cG9ydCBhcmd1bWVudHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRPdmVycmlk
ZVZpZXdwb3J0QXJndW1lbnRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIFBsdW1iIG92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMgYXJvdW5kIG1v
cmUuCisKIDIwMTktMDQtMDggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+
CiAKICAgICAgICAgW2lPU10gRG8gbm90IGFsbG93IHN0YXJ0aW5nIHNlbGVjdGlvbiBkcmFncyB3
aGVuIHNlbGVjdGlvbiB2aWV3cyBhcmUgbm90IHZpc2libGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CmluZGV4IGVmOTY0ZmI0ZTY5ODllYWFlNTg3ZGY5NmJhY2YwODVhMjVmYWYzZmQuLjA2NGViOTRj
NThlMDBhYzViN2FiMzhkNmU2ZjI0ODJjOTdiMTc5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cApAQCAtMzYyMSw3ICszNjIxLDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlVmlld3BvcnRBcmd1
bWVudHMoKQogI2lmbmRlZiBOREVCVUcKICAgICAgICAgbV9kaWREaXNwYXRjaFZpZXdwb3J0UHJv
cGVydGllc0NoYW5nZWQgPSB0cnVlOwogI2VuZGlmCi0gICAgICAgIHBhZ2UoKS0+Y2hyb21lKCku
ZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2UobV9vdmVycmlkZVZpZXdwb3J0QXJn
dW1lbnRzID8gbV9vdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzLnZhbHVlKCkgOiBtX3ZpZXdwb3J0
QXJndW1lbnRzKTsKKyAgICAgICAgcGFnZSgpLT5jaHJvbWUoKS5kaXNwYXRjaFZpZXdwb3J0UHJv
cGVydGllc0RpZENoYW5nZSh2aWV3cG9ydEFyZ3VtZW50cygpKTsKICAgICAgICAgcGFnZSgpLT5j
aHJvbWUoKS5kaWRSZWNlaXZlRG9jVHlwZSgqZnJhbWUoKSk7CiAgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAppbmRleCBkNjdmNmU4ODM4NDk4NDZiOGY4NzQyMzE4ZDg0NjczYzRkZjJlN2Q5Li43
MjJiMDdmNDIwYzE5ZTQ4MTQzNjgxM2E5MWM0ZGU1YWM3ZmY4ZGVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaApAQCAtNDExLDcgKzQxMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyU2VsZWN0b3JR
dWVyeUNhY2hlKCk7CiAKICAgICB2b2lkIHNldFZpZXdwb3J0QXJndW1lbnRzKGNvbnN0IFZpZXdw
b3J0QXJndW1lbnRzJiB2aWV3cG9ydEFyZ3VtZW50cykgeyBtX3ZpZXdwb3J0QXJndW1lbnRzID0g
dmlld3BvcnRBcmd1bWVudHM7IH0KLSAgICBWaWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9ydEFyZ3Vt
ZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRBcmd1bWVudHM7IH0KKyAgICBWaWV3cG9y
dEFyZ3VtZW50cyB2aWV3cG9ydEFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVW
aWV3cG9ydEFyZ3VtZW50cy52YWx1ZU9yKG1fdmlld3BvcnRBcmd1bWVudHMpOyB9CiAKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMoY29uc3QgT3B0
aW9uYWw8Vmlld3BvcnRBcmd1bWVudHM+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRB
cmd1bWVudHMuY3BwCmluZGV4IGYzYTg0NjE2ZTQyZWY3NGYwMTBmZWQzZmY5OGNjZDE5MzkzYjM5
ZWMuLmNjNjNkOTZlYTljNTUwNDdmYTU1ZTdmOTRlOTJiM2Q4YTk0ZmJhM2YgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcApAQCAtMzgsNiArMzgsOCBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK3R5cGVkZWYgV1RGOjpGdW5jdGlvbjx2b2lkKFZpZXdwb3J0RXJy
b3JDb2RlLCBTdHJpbmdWaWV3LCBTdHJpbmdWaWV3KT4gSW50ZXJuYWxWaWV3cG9ydEVycm9ySGFu
ZGxlcjsKKwogI2lmIFBMQVRGT1JNKEdUSykKIGNvbnN0IGZsb2F0IFZpZXdwb3J0QXJndW1lbnRz
OjpkZXByZWNhdGVkVGFyZ2V0RFBJID0gMTYwOwogI2VuZGlmCkBAIC0yODgsOSArMjkwLDcgQEAg
dm9pZCByZXN0cmljdFNjYWxlRmFjdG9yVG9Jbml0aWFsU2NhbGVJZk5vdFVzZXJTY2FsYWJsZShW
aWV3cG9ydEF0dHJpYnV0ZXMmIHJlc3UKICAgICAgICAgcmVzdWx0Lm1heGltdW1TY2FsZSA9IHJl
c3VsdC5taW5pbXVtU2NhbGUgPSByZXN1bHQuaW5pdGlhbFNjYWxlOwogfQogCi1zdGF0aWMgdm9p
ZCByZXBvcnRWaWV3cG9ydFdhcm5pbmcoRG9jdW1lbnQmLCBWaWV3cG9ydEVycm9yQ29kZSwgU3Ry
aW5nVmlldyByZXBsYWNlbWVudDEgPSB7IH0sIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQyID0geyB9
KTsKLQotc3RhdGljIGZsb2F0IG51bWVyaWNQcmVmaXgoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJp
bmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSwgYm9vbCogb2sgPSBudWxscHRyKQorc3RhdGlj
IGZsb2F0IG51bWVyaWNQcmVmaXgoU3RyaW5nVmlldyBrZXksIFN0cmluZ1ZpZXcgdmFsdWUsIGNv
bnN0IEludGVybmFsVmlld3BvcnRFcnJvckhhbmRsZXImIGVycm9ySGFuZGxlciwgYm9vbCogb2sg
PSBudWxscHRyKQogewogICAgIHNpemVfdCBwYXJzZWRMZW5ndGg7CiAgICAgZmxvYXQgbnVtZXJp
Y1ZhbHVlOwpAQCAtMjk5LDE5ICsyOTksMTkgQEAgc3RhdGljIGZsb2F0IG51bWVyaWNQcmVmaXgo
RG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSwKICAg
ICBlbHNlCiAgICAgICAgIG51bWVyaWNWYWx1ZSA9IGNoYXJhY3RlcnNUb0Zsb2F0KHZhbHVlLmNo
YXJhY3RlcnMxNigpLCB2YWx1ZS5sZW5ndGgoKSwgcGFyc2VkTGVuZ3RoKTsKICAgICBpZiAoIXBh
cnNlZExlbmd0aCkgewotICAgICAgICByZXBvcnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1lbnQsIFVu
cmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yLCB2YWx1ZSwga2V5KTsKKyAgICAg
ICAgZXJyb3JIYW5kbGVyKFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yLCB2
YWx1ZSwga2V5KTsKICAgICAgICAgaWYgKG9rKQogICAgICAgICAgICAgKm9rID0gZmFsc2U7CiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAocGFyc2VkTGVuZ3RoIDwgdmFsdWUubGVu
Z3RoKCkpCi0gICAgICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwgVHJ1bmNhdGVk
Vmlld3BvcnRBcmd1bWVudFZhbHVlRXJyb3IsIHZhbHVlLCBrZXkpOworICAgICAgICBlcnJvckhh
bmRsZXIoVHJ1bmNhdGVkVmlld3BvcnRBcmd1bWVudFZhbHVlRXJyb3IsIHZhbHVlLCBrZXkpOwog
ICAgIGlmIChvaykKICAgICAgICAgKm9rID0gdHJ1ZTsKICAgICByZXR1cm4gbnVtZXJpY1ZhbHVl
OwogfQogCi1zdGF0aWMgZmxvYXQgZmluZFNpemVWYWx1ZShEb2N1bWVudCYgZG9jdW1lbnQsIFN0
cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWV3IHZhbHVlLCBib29sKiB2YWx1ZVdhc0V4cGxpY2l0ID0g
bnVsbHB0cikKK3N0YXRpYyBmbG9hdCBmaW5kU2l6ZVZhbHVlKFN0cmluZ1ZpZXcga2V5LCBTdHJp
bmdWaWV3IHZhbHVlLCBjb25zdCBJbnRlcm5hbFZpZXdwb3J0RXJyb3JIYW5kbGVyJiBlcnJvckhh
bmRsZXIsIGJvb2wqIHZhbHVlV2FzRXhwbGljaXQgPSBudWxscHRyKQogewogICAgIC8vIDEpIE5v
bi1uZWdhdGl2ZSBudW1iZXIgdmFsdWVzIGFyZSB0cmFuc2xhdGVkIHRvIHB4IGxlbmd0aHMuCiAg
ICAgLy8gMikgTmVnYXRpdmUgbnVtYmVyIHZhbHVlcyBhcmUgdHJhbnNsYXRlZCB0byBhdXRvLgpA
QCAtMzI3LDcgKzMyNyw3IEBAIHN0YXRpYyBmbG9hdCBmaW5kU2l6ZVZhbHVlKERvY3VtZW50JiBk
b2N1bWVudCwgU3RyaW5nVmlldyBrZXksIFN0cmluZ1ZpZXcgdmFsdWUsCiAgICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAiZGV2aWNlLWhlaWdodCIpKQogICAgICAg
ICByZXR1cm4gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlRGV2aWNlSGVpZ2h0OwogCi0gICAgZmxv
YXQgc2l6ZVZhbHVlID0gbnVtZXJpY1ByZWZpeChkb2N1bWVudCwga2V5LCB2YWx1ZSk7CisgICAg
ZmxvYXQgc2l6ZVZhbHVlID0gbnVtZXJpY1ByZWZpeChrZXksIHZhbHVlLCBlcnJvckhhbmRsZXIp
OwogCiAgICAgaWYgKHNpemVWYWx1ZSA8IDApIHsKICAgICAgICAgaWYgKHZhbHVlV2FzRXhwbGlj
aXQpCkBAIC0zMzgsNyArMzM4LDcgQEAgc3RhdGljIGZsb2F0IGZpbmRTaXplVmFsdWUoRG9jdW1l
bnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSwKICAgICByZXR1
cm4gc2l6ZVZhbHVlOwogfQogCi1zdGF0aWMgZmxvYXQgZmluZFNjYWxlVmFsdWUoRG9jdW1lbnQm
IGRvY3VtZW50LCBTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSkKK3N0YXRpYyBmbG9h
dCBmaW5kU2NhbGVWYWx1ZShTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSwgY29uc3Qg
SW50ZXJuYWxWaWV3cG9ydEVycm9ySGFuZGxlciYgZXJyb3JIYW5kbGVyKQogewogICAgIC8vIDEp
IE5vbi1uZWdhdGl2ZSBudW1iZXIgdmFsdWVzIGFyZSB0cmFuc2xhdGVkIHRvIDxudW1iZXI+IHZh
bHVlcy4KICAgICAvLyAyKSBOZWdhdGl2ZSBudW1iZXIgdmFsdWVzIGFyZSB0cmFuc2xhdGVkIHRv
IGF1dG8uCkBAIC0zNTUsMTggKzM1NSwxOCBAQCBzdGF0aWMgZmxvYXQgZmluZFNjYWxlVmFsdWUo
RG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZQogICAg
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgImRldmljZS1oZWlnaHQi
KSkKICAgICAgICAgcmV0dXJuIDEwOwogCi0gICAgZmxvYXQgbnVtZXJpY1ZhbHVlID0gbnVtZXJp
Y1ByZWZpeChkb2N1bWVudCwga2V5LCB2YWx1ZSk7CisgICAgZmxvYXQgbnVtZXJpY1ZhbHVlID0g
bnVtZXJpY1ByZWZpeChrZXksIHZhbHVlLCBlcnJvckhhbmRsZXIpOwogCiAgICAgaWYgKG51bWVy
aWNWYWx1ZSA8IDApCiAgICAgICAgIHJldHVybiBWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVBdXRv
OwogCiAgICAgaWYgKG51bWVyaWNWYWx1ZSA+IDEwLjApCi0gICAgICAgIHJlcG9ydFZpZXdwb3J0
V2FybmluZyhkb2N1bWVudCwgTWF4aW11bVNjYWxlVG9vTGFyZ2VFcnJvcik7CisgICAgICAgIGVy
cm9ySGFuZGxlcihNYXhpbXVtU2NhbGVUb29MYXJnZUVycm9yLCB7IH0sIHsgfSk7CiAKICAgICBy
ZXR1cm4gbnVtZXJpY1ZhbHVlOwogfQogCi1zdGF0aWMgYm9vbCBmaW5kQm9vbGVhblZhbHVlKERv
Y3VtZW50JiBkb2N1bWVudCwgU3RyaW5nVmlldyBrZXksIFN0cmluZ1ZpZXcgdmFsdWUpCitzdGF0
aWMgYm9vbCBmaW5kQm9vbGVhblZhbHVlKFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWV3IHZhbHVl
LCBjb25zdCBJbnRlcm5hbFZpZXdwb3J0RXJyb3JIYW5kbGVyJiBlcnJvckhhbmRsZXIpCiB7CiAg
ICAgLy8geWVzIGFuZCBubyBhcmUgdXNlZCBhcyBrZXl3b3Jkcy4KICAgICAvLyBOdW1iZXJzID49
IDEsIG51bWJlcnMgPD0gLTEsIGRldmljZS13aWR0aCBhbmQgZGV2aWNlLWhlaWdodCBhcmUgbWFw
cGVkIHRvIHllcy4KQEAgLTM4MCwxMCArMzgwLDEwIEBAIHN0YXRpYyBib29sIGZpbmRCb29sZWFu
VmFsdWUoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZSh2YWx1ZSwgImRldmljZS1oZWlnaHQiKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
cmV0dXJuIHN0ZDo6YWJzKG51bWVyaWNQcmVmaXgoZG9jdW1lbnQsIGtleSwgdmFsdWUpKSA+PSAx
OworICAgIHJldHVybiBzdGQ6OmFicyhudW1lcmljUHJlZml4KGtleSwgdmFsdWUsIGVycm9ySGFu
ZGxlcikpID49IDE7CiB9CiAKLXN0YXRpYyBWaWV3cG9ydEZpdCBwYXJzZVZpZXdwb3J0Rml0VmFs
dWUoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSkK
K3N0YXRpYyBWaWV3cG9ydEZpdCBwYXJzZVZpZXdwb3J0Rml0VmFsdWUoU3RyaW5nVmlldyBrZXks
IFN0cmluZ1ZpZXcgdmFsdWUsIGNvbnN0IEludGVybmFsVmlld3BvcnRFcnJvckhhbmRsZXImIGVy
cm9ySGFuZGxlcikKIHsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFs
dWUsICJhdXRvIikpCiAgICAgICAgIHJldHVybiBWaWV3cG9ydEZpdDo6QXV0bzsKQEAgLTM5Miwz
OSArMzkyLDExIEBAIHN0YXRpYyBWaWV3cG9ydEZpdCBwYXJzZVZpZXdwb3J0Rml0VmFsdWUoRG9j
dW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IGtleSwgU3RyCiAgICAgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAiY292ZXIiKSkKICAgICAgICAgcmV0dXJuIFZpZXdw
b3J0Rml0OjpDb3ZlcjsKIAotICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwgVW5y
ZWNvZ25pemVkVmlld3BvcnRBcmd1bWVudFZhbHVlRXJyb3IsIHZhbHVlLCBrZXkpOworICAgIGVy
cm9ySGFuZGxlcihVbnJlY29nbml6ZWRWaWV3cG9ydEFyZ3VtZW50VmFsdWVFcnJvciwgdmFsdWUs
IGtleSk7CiAKICAgICByZXR1cm4gVmlld3BvcnRGaXQ6OkF1dG87CiB9CiAKLXZvaWQgc2V0Vmll
d3BvcnRGZWF0dXJlKFZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMsIERvY3VtZW50JiBkb2N1
bWVudCwgU3RyaW5nVmlldyBrZXksIFN0cmluZ1ZpZXcgdmFsdWUpCi17Ci0gICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleSwgIndpZHRoIikpCi0gICAgICAgIGFyZ3VtZW50
cy53aWR0aCA9IGZpbmRTaXplVmFsdWUoZG9jdW1lbnQsIGtleSwgdmFsdWUsICZhcmd1bWVudHMu
d2lkdGhXYXNFeHBsaWNpdCk7Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2Uoa2V5LCAiaGVpZ2h0IikpCi0gICAgICAgIGFyZ3VtZW50cy5oZWlnaHQgPSBmaW5kU2l6
ZVZhbHVlKGRvY3VtZW50LCBrZXksIHZhbHVlKTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShrZXksICJpbml0aWFsLXNjYWxlIikpCi0gICAgICAgIGFyZ3VtZW50
cy56b29tID0gZmluZFNjYWxlVmFsdWUoZG9jdW1lbnQsIGtleSwgdmFsdWUpOwotICAgIGVsc2Ug
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleSwgIm1pbmltdW0tc2NhbGUiKSkK
LSAgICAgICAgYXJndW1lbnRzLm1pblpvb20gPSBmaW5kU2NhbGVWYWx1ZShkb2N1bWVudCwga2V5
LCB2YWx1ZSk7Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5
LCAibWF4aW11bS1zY2FsZSIpKQotICAgICAgICBhcmd1bWVudHMubWF4Wm9vbSA9IGZpbmRTY2Fs
ZVZhbHVlKGRvY3VtZW50LCBrZXksIHZhbHVlKTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShrZXksICJ1c2VyLXNjYWxhYmxlIikpCi0gICAgICAgIGFyZ3VtZW50
cy51c2VyWm9vbSA9IGZpbmRCb29sZWFuVmFsdWUoZG9jdW1lbnQsIGtleSwgdmFsdWUpOwotI2lm
IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2Uoa2V5LCAibWluaW1hbC11aSIpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJZ25vcmUg
c2lsZW50bHkgZm9yIG5vdy4gVGhpcyBjb2RlIHNob3VsZCBldmVudHVhbGx5IGJlIHJlbW92ZWQK
LSAgICAgICAgLy8gc28gd2Ugc3RhcnQgZ2l2aW5nIHRoZSB3YXJuaW5nIGluIHRoZSB3ZWIgaW5z
cGVjdG9yIGFzIGZvciBvdGhlciB1bmltcGxlbWVudGVkIGtleXMuCi0gICAgfQotI2VuZGlmCi0g
ICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5LCAic2hyaW5rLXRv
LWZpdCIpKQotICAgICAgICBhcmd1bWVudHMuc2hyaW5rVG9GaXQgPSBmaW5kQm9vbGVhblZhbHVl
KGRvY3VtZW50LCBrZXksIHZhbHVlKTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShrZXksICJ2aWV3cG9ydC1maXQiKSAmJiBkb2N1bWVudC5zZXR0aW5ncygpLnZp
ZXdwb3J0Rml0RW5hYmxlZCgpKQotICAgICAgICBhcmd1bWVudHMudmlld3BvcnRGaXQgPSBwYXJz
ZVZpZXdwb3J0Rml0VmFsdWUoZG9jdW1lbnQsIGtleSwgdmFsdWUpOwotICAgIGVsc2UKLSAgICAg
ICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBVbnJlY29nbml6ZWRWaWV3cG9ydEFy
Z3VtZW50S2V5RXJyb3IsIGtleSk7Ci19Ci0KIHN0YXRpYyBjb25zdCBjaGFyKiB2aWV3cG9ydEVy
cm9yTWVzc2FnZVRlbXBsYXRlKFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSkKIHsKICAgICBz
dGF0aWMgY29uc3QgY2hhciogY29uc3QgZXJyb3JzW10gPSB7CkBAIC00NTIsMTIgKzQyNCw4IEBA
IHN0YXRpYyBNZXNzYWdlTGV2ZWwgdmlld3BvcnRFcnJvck1lc3NhZ2VMZXZlbChWaWV3cG9ydEVy
cm9yQ29kZSBlcnJvckNvZGUpCiAgICAgcmV0dXJuIE1lc3NhZ2VMZXZlbDo6RXJyb3I7CiB9CiAK
LXZvaWQgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKERvY3VtZW50JiBkb2N1bWVudCwgVmlld3BvcnRF
cnJvckNvZGUgZXJyb3JDb2RlLCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50MSwgU3RyaW5nVmlldyBy
ZXBsYWNlbWVudDIpCitzdGF0aWMgU3RyaW5nIHZpZXdwb3J0RXJyb3JNZXNzYWdlKFZpZXdwb3J0
RXJyb3JDb2RlIGVycm9yQ29kZSwgU3RyaW5nVmlldyByZXBsYWNlbWVudDEsIFN0cmluZ1ZpZXcg
cmVwbGFjZW1lbnQyKQogewotICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBudWxsIGNoZWNrIG5l
ZWRlZD8gQ2FuJ3QgYWRkQ29uc29sZU1lc3NhZ2UgZGVhbCB3aXRoIHRoaXM/Ci0gICAgaWYgKCFk
b2N1bWVudC5mcmFtZSgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBTdHJpbmcgbWVzc2FnZSA9
IHZpZXdwb3J0RXJyb3JNZXNzYWdlVGVtcGxhdGUoZXJyb3JDb2RlKTsKICAgICBpZiAoIXJlcGxh
Y2VtZW50MS5pc051bGwoKSkKICAgICAgICAgbWVzc2FnZS5yZXBsYWNlKCIlcmVwbGFjZW1lbnQx
IiwgcmVwbGFjZW1lbnQxLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7CkBAIC00NjgsMTAgKzQz
Niw1OCBAQCB2b2lkIHJlcG9ydFZpZXdwb3J0V2FybmluZyhEb2N1bWVudCYgZG9jdW1lbnQsIFZp
ZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSwgU3RyaQogICAgIGlmICgoZXJyb3JDb2RlID09IFVu
cmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yIHx8IGVycm9yQ29kZSA9PSBUcnVu
Y2F0ZWRWaWV3cG9ydEFyZ3VtZW50VmFsdWVFcnJvcikgJiYgcmVwbGFjZW1lbnQxLmNvbnRhaW5z
KCc7JykpCiAgICAgICAgIG1lc3NhZ2UuYXBwZW5kKCIgTm90ZSB0aGF0ICc7JyBpcyBub3QgYSBz
ZXBhcmF0b3IgaW4gdmlld3BvcnQgdmFsdWVzLiBUaGUgbGlzdCBzaG91bGQgYmUgY29tbWEtc2Vw
YXJhdGVkLiIpOwogCisgICAgcmV0dXJuIG1lc3NhZ2U7Cit9CisKK3N0YXRpYyB2b2lkIHJlcG9y
dFZpZXdwb3J0V2FybmluZyhEb2N1bWVudCYgZG9jdW1lbnQsIFZpZXdwb3J0RXJyb3JDb2RlIGVy
cm9yQ29kZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIC8vIEZJWE1FOiBXaHkgaXMg
dGhpcyBudWxsIGNoZWNrIG5lZWRlZD8gQ2FuJ3QgYWRkQ29uc29sZU1lc3NhZ2UgZGVhbCB3aXRo
IHRoaXM/CisgICAgaWYgKCFkb2N1bWVudC5mcmFtZSgpKQorICAgICAgICByZXR1cm47CisKICAg
ICAvLyBGSVhNRTogVGhpcyBtZXNzYWdlIHNob3VsZCBiZSBtb3ZlZCBvZmYgdGhlIGNvbnNvbGUg
b25jZSBhIHNvbHV0aW9uIHRvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDMyNzQgZXhpc3RzLgogICAgIGRvY3VtZW50LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OlJlbmRlcmluZywgdmlld3BvcnRFcnJvck1lc3NhZ2VMZXZlbChlcnJvckNvZGUpLCBt
ZXNzYWdlKTsKIH0KIAordm9pZCBzZXRWaWV3cG9ydEZlYXR1cmUoVmlld3BvcnRBcmd1bWVudHMm
IGFyZ3VtZW50cywgU3RyaW5nVmlldyBrZXksIFN0cmluZ1ZpZXcgdmFsdWUsIGJvb2wgdmlld3Bv
cnRGaXRFbmFibGVkLCBjb25zdCBWaWV3cG9ydEVycm9ySGFuZGxlciYgZXJyb3JIYW5kbGVyKQor
eworICAgIEludGVybmFsVmlld3BvcnRFcnJvckhhbmRsZXIgaW50ZXJuYWxFcnJvckhhbmRsZXIg
PSBbJmVycm9ySGFuZGxlcl0gKFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSwgU3RyaW5nVmll
dyByZXBsYWNlbWVudDEsIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQyKSB7CisgICAgICAgIGVycm9y
SGFuZGxlcihlcnJvckNvZGUsIHZpZXdwb3J0RXJyb3JNZXNzYWdlKGVycm9yQ29kZSwgcmVwbGFj
ZW1lbnQxLCByZXBsYWNlbWVudDIpKTsKKyAgICB9OworCisgICAgaWYgKGVxdWFsTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGtleSwgIndpZHRoIikpCisgICAgICAgIGFyZ3VtZW50cy53aWR0aCA9
IGZpbmRTaXplVmFsdWUoa2V5LCB2YWx1ZSwgaW50ZXJuYWxFcnJvckhhbmRsZXIsICZhcmd1bWVu
dHMud2lkdGhXYXNFeHBsaWNpdCk7CisgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2Uoa2V5LCAiaGVpZ2h0IikpCisgICAgICAgIGFyZ3VtZW50cy5oZWlnaHQgPSBmaW5k
U2l6ZVZhbHVlKGtleSwgdmFsdWUsIGludGVybmFsRXJyb3JIYW5kbGVyKTsKKyAgICBlbHNlIGlm
IChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJpbml0aWFsLXNjYWxlIikpCisg
ICAgICAgIGFyZ3VtZW50cy56b29tID0gZmluZFNjYWxlVmFsdWUoa2V5LCB2YWx1ZSwgaW50ZXJu
YWxFcnJvckhhbmRsZXIpOworICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlD
YXNlKGtleSwgIm1pbmltdW0tc2NhbGUiKSkKKyAgICAgICAgYXJndW1lbnRzLm1pblpvb20gPSBm
aW5kU2NhbGVWYWx1ZShrZXksIHZhbHVlLCBpbnRlcm5hbEVycm9ySGFuZGxlcik7CisgICAgZWxz
ZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5LCAibWF4aW11bS1zY2FsZSIp
KQorICAgICAgICBhcmd1bWVudHMubWF4Wm9vbSA9IGZpbmRTY2FsZVZhbHVlKGtleSwgdmFsdWUs
IGludGVybmFsRXJyb3JIYW5kbGVyKTsKKyAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShrZXksICJ1c2VyLXNjYWxhYmxlIikpCisgICAgICAgIGFyZ3VtZW50cy51c2Vy
Wm9vbSA9IGZpbmRCb29sZWFuVmFsdWUoa2V5LCB2YWx1ZSwgaW50ZXJuYWxFcnJvckhhbmRsZXIp
OworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2Uoa2V5LCAibWluaW1hbC11aSIpKSB7CisgICAgICAgIC8vIEZJWE1FOiBJ
Z25vcmUgc2lsZW50bHkgZm9yIG5vdy4gVGhpcyBjb2RlIHNob3VsZCBldmVudHVhbGx5IGJlIHJl
bW92ZWQKKyAgICAgICAgLy8gc28gd2Ugc3RhcnQgZ2l2aW5nIHRoZSB3YXJuaW5nIGluIHRoZSB3
ZWIgaW5zcGVjdG9yIGFzIGZvciBvdGhlciB1bmltcGxlbWVudGVkIGtleXMuCisgICAgfQorI2Vu
ZGlmCisgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5LCAic2hy
aW5rLXRvLWZpdCIpKQorICAgICAgICBhcmd1bWVudHMuc2hyaW5rVG9GaXQgPSBmaW5kQm9vbGVh
blZhbHVlKGtleSwgdmFsdWUsIGludGVybmFsRXJyb3JIYW5kbGVyKTsKKyAgICBlbHNlIGlmIChl
cXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJ2aWV3cG9ydC1maXQiKSAmJiB2aWV3
cG9ydEZpdEVuYWJsZWQpCisgICAgICAgIGFyZ3VtZW50cy52aWV3cG9ydEZpdCA9IHBhcnNlVmll
d3BvcnRGaXRWYWx1ZShrZXksIHZhbHVlLCBpbnRlcm5hbEVycm9ySGFuZGxlcik7CisgICAgZWxz
ZQorICAgICAgICBpbnRlcm5hbEVycm9ySGFuZGxlcihVbnJlY29nbml6ZWRWaWV3cG9ydEFyZ3Vt
ZW50S2V5RXJyb3IsIGtleSwgeyB9KTsKK30KKwordm9pZCBzZXRWaWV3cG9ydEZlYXR1cmUoVmll
d3BvcnRBcmd1bWVudHMmIGFyZ3VtZW50cywgRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3
IGtleSwgU3RyaW5nVmlldyB2YWx1ZSkKK3sKKyAgICBzZXRWaWV3cG9ydEZlYXR1cmUoYXJndW1l
bnRzLCBrZXksIHZhbHVlLCBkb2N1bWVudC5zZXR0aW5ncygpLnZpZXdwb3J0Rml0RW5hYmxlZCgp
LCBbJl0oVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
IHsKKyAgICAgICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBlcnJvckNvZGUsIG1l
c3NhZ2UpOworICAgIH0pOworfQorCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYgdmlld3BvcnRBcmd1bWVudHMpCiB7CiAgICAg
VGV4dFN0cmVhbTo6SW5kZW50U2NvcGUgaW5kZW50U2NvcGUodHMpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
Vmlld3BvcnRBcmd1bWVudHMuaAppbmRleCA0ZGJmMDkzZjZiMDIyOTAzYzQ3MjUwZGExZWYxMzBk
NzgzYjRiZTcyLi44MjUwOTg2ZTQwMDIyYjRmN2E4NmQ3ZmY4MWY4ZTQ2ZDE0MTUzNDFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaApAQCAtMTQzLDcgKzE0Myw5IEBAIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcmVzdHJpY3RNaW5pbXVtU2NhbGVGYWN0b3JUb1ZpZXdwb3J0U2l6
ZShWaWV3cG9ydEF0dHJpYnV0ZXMmCiBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RyaWN0U2NhbGVG
YWN0b3JUb0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxlKFZpZXdwb3J0QXR0cmlidXRlcyYg
cmVzdWx0KTsKIFdFQkNPUkVfRVhQT1JUIGZsb2F0IGNvbXB1dGVNaW5pbXVtU2NhbGVGYWN0b3JG
b3JDb250ZW50Q29udGFpbmVkKGNvbnN0IFZpZXdwb3J0QXR0cmlidXRlcyYgcmVzdWx0LCBjb25z
dCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEludFNpemUmIGNvbnRlbnRTaXplKTsKIAor
dHlwZWRlZiBXVEY6OkZ1bmN0aW9uPHZvaWQoVmlld3BvcnRFcnJvckNvZGUsIGNvbnN0IFN0cmlu
ZyYpPiBWaWV3cG9ydEVycm9ySGFuZGxlcjsKIHZvaWQgc2V0Vmlld3BvcnRGZWF0dXJlKFZpZXdw
b3J0QXJndW1lbnRzJiwgRG9jdW1lbnQmLCBTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1
ZSk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZXdwb3J0RmVhdHVyZShWaWV3cG9ydEFyZ3Vt
ZW50cyYsIFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWV3IHZhbHVlLCBib29sIHZpZXdwb3J0Rml0
RW5hYmxlZCwgY29uc3QgVmlld3BvcnRFcnJvckhhbmRsZXImKTsKIAogV1RGOjpUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJik7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFt
ZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAKaW5kZXggMThiMjViMWI0NGVmYmNiMGQ5ODNkOTk1MTdlZjU1OWIxZDcyOTQ5OC4uNDdj
NmVkNjJiYzBiZWMwODk2OTA2NjlhNDVkMTY4ZjBkYzJhZjU2MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTk1LDYgKzk1
LDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVy
JiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbWF4aW11bVVub2JzY3VyZWRTaXplOwog
ICAgIGVuY29kZXIgPDwgZGV2aWNlT3JpZW50YXRpb247CiAgICAgZW5jb2RlciA8PCBrZXlib2Fy
ZElzQXR0YWNoZWQ7CisgICAgZW5jb2RlciA8PCBvdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzOwog
I2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW5jb2RlciA8PCBzbWFydEluc2VydERl
bGV0ZUVuYWJsZWQ7CkBAIC0yNzksNiArMjgwLDEyIEBAIE9wdGlvbmFsPFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29k
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShw
YXJhbWV0ZXJzLmtleWJvYXJkSXNBdHRhY2hlZCkpCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisKKyAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cz4+
IG92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHM7CisgICAgZGVjb2RlciA+PiBvdmVycmlkZVZpZXdw
b3J0QXJndW1lbnRzOworICAgIGlmICghb3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cykKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBwYXJhbWV0ZXJzLm92ZXJyaWRlVmlld3BvcnRB
cmd1bWVudHMgPSBXVEZNb3ZlKCpvdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKTsKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggYWIzYjhlMDEwMTM3ZTUzZmRmYzA4MjFmM2IyMmUy
NDM2NzJlM2FmMC4uMTU5ZmRlZWRlNGY5MDZjODQyNjNiYzM2NDYzMTNiNjNlMGZmMmI5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaApA
QCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnaW5hdGlvbi5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJJbnRlcmZh
Y2VMYXlvdXREaXJlY3Rpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRz
Lmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xNTMsNiArMTU0LDcgQEAgc3Ry
dWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSBt
YXhpbXVtVW5vYnNjdXJlZFNpemU7CiAgICAgaW50MzJfdCBkZXZpY2VPcmllbnRhdGlvbiB7IDAg
fTsKICAgICBib29sIGtleWJvYXJkSXNBdHRhY2hlZCB7IGZhbHNlIH07CisgICAgT3B0aW9uYWw8
V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM+IG92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHM7CiAj
ZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIHNtYXJ0SW5zZXJ0RGVsZXRlRW5h
YmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CmluZGV4IGQ4NDExZDM5MjQ1MDQyNjJkNDJkNTYwMTVkNWUwMzNhMWUyNjc0MWEuLjQ5MDgzZGMx
MzZhYTg2NDQzZGRmYWRkZWQ2M2Q5NWMyMDQyMWFkZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMzc2LDYgKzM3Niw4IEBAIEBpbXBs
ZW1lbnRhdGlvbiBXS1dlYlZpZXcgewogCiAgICAgTlNVSW50ZWdlciBfZm9jdXNQcmVzZXJ2YXRp
b25Db3VudDsKICAgICBOU1VJbnRlZ2VyIF9hY3RpdmVGb2N1c2VkU3RhdGVSZXRhaW5Db3VudDsK
KworICAgIFJldGFpblB0cjxOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNTdHJpbmcgKj4+IF9v
dmVycmlkZVZpZXdwb3J0QXJndW1lbnRzOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKQogICAg
IHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OldlYlZpZXdJbXBsPiBfaW1wbDsKQEAgLTQ3Niw2ICs0
NzgsNDEgQEAgLSAoQk9PTClfaXNSZXRhaW5pbmdBY3RpdmVGb2N1c2VkU3RhdGUKICAgICByZXR1
cm4gX2ZvY3VzUHJlc2VydmF0aW9uQ291bnQgfHwgX2FjdGl2ZUZvY3VzZWRTdGF0ZVJldGFpbkNv
dW50OwogfQogCitzdGF0aWMgV1RGOjpPcHRpb25hbDxXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50
cz4gdmlld3BvcnRBcmd1bWVudHNGcm9tRGljdGlvbmFyeShOU0RpY3Rpb25hcnk8TlNTdHJpbmcg
KiwgTlNTdHJpbmcgKj4gKnZpZXdwb3J0QXJndW1lbnRQYWlycywgYm9vbCB2aWV3cG9ydEZpdEVu
YWJsZWQpCit7CisgICAgaWYgKCF2aWV3cG9ydEFyZ3VtZW50UGFpcnMpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisKKyAgICBXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9y
dEFyZ3VtZW50cyhXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50czo6Vmlld3BvcnRNZXRhKTsKKwor
ICAgIFt2aWV3cG9ydEFyZ3VtZW50UGFpcnMgZW51bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Js
b2NrOm1ha2VCbG9ja1B0cihbJl0gKE5TU3RyaW5nICprZXksIE5TU3RyaW5nICp2YWx1ZSwgQk9P
TCogc3RvcCkgeworICAgICAgICBpZiAoIVtrZXkgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xh
c3NdXSB8fCAhW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCisgICAgICAg
ICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0
OkAiLVtXS1dlYlZpZXcgX3NldE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHNdOiBLZXlzIGFuZCB2
YWx1ZXMgbXVzdCBhbGwgYmUgTlNTdHJpbmdzLiJdOworICAgICAgICBTdHJpbmcga2V5U3RyaW5n
ID0ga2V5OworICAgICAgICBTdHJpbmcgdmFsdWVTdHJpbmcgPSB2YWx1ZTsKKyAgICAgICAgV2Vi
Q29yZTo6c2V0Vmlld3BvcnRGZWF0dXJlKHZpZXdwb3J0QXJndW1lbnRzLCBrZXlTdHJpbmcsIHZh
bHVlU3RyaW5nLCB2aWV3cG9ydEZpdEVuYWJsZWQsIFtdIChXZWJDb3JlOjpWaWV3cG9ydEVycm9y
Q29kZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKKyAgICAgICAgICAgIE5TTG9nKEAi
LVtXS1dlYlZpZXcgX3NldE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHNdOiBFcnJvciBwYXJzaW5n
IHZpZXdwb3J0IGFyZ3VtZW50OiAlcyIsIGVycm9yTWVzc2FnZS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgfSk7CisgICAgfSkuZ2V0KCldOworCisgICAgcmV0dXJuIHZpZXdwb3J0QXJndW1lbnRz
OworfQorCistIChOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNTdHJpbmcgKj4gKilfb3ZlcnJp
ZGVWaWV3cG9ydEFyZ3VtZW50cworeworICAgIHJldHVybiBfb3ZlcnJpZGVWaWV3cG9ydEFyZ3Vt
ZW50cy5nZXQoKTsKK30KKworLSAodm9pZClfc2V0T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50czoo
TlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU3RyaW5nICo+ICopdmlld3BvcnRBcmd1bWVudHMK
K3sKKyAgICBfb3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cyA9IGFkb3B0TlMoW3ZpZXdwb3J0QXJn
dW1lbnRzIGNvcHldKTsKKworICAgIGlmICghX3BhZ2UpCisgICAgICAgIHJldHVybjsKKworICAg
IF9wYWdlLT5zZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKHZpZXdwb3J0QXJndW1lbnRzRnJv
bURpY3Rpb25hcnkodmlld3BvcnRBcmd1bWVudHMsIF9wYWdlLT5wcmVmZXJlbmNlcygpLnZpZXdw
b3J0Rml0RW5hYmxlZCgpKSk7Cit9CisKICNlbmRpZgogCiAjaWYgVVNFKEFQUExFX0lOVEVSTkFM
X1NESykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oCmluZGV4IGJkMzQ0YzI0MGIxNjJjYjY4MTRlZThiZDkxNGM5MjZiODI3ZGQw
NjkuLjVhNzBiNDQ3MjAxMzkzZTVkYjEzOTY4OTg2ZDlhZDdhMjliNmY0MjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApA
QCAtMjcwLDYgKzI3MCw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0
RWRnZSkgewogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXREcmFnSW50ZXJhY3Rp
b25Qb2xpY3k6KSBfV0tEcmFnSW50ZXJhY3Rpb25Qb2xpY3kgX2RyYWdJbnRlcmFjdGlvblBvbGlj
eSBXS19BUElfQVZBSUxBQkxFKGlvcygxMS4wKSk7CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBj
b3B5LCBzZXR0ZXI9X3NldE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHM6KSBOU0RpY3Rpb25hcnk8
TlNTdHJpbmcgKiwgTlNTdHJpbmcgKj4gKl9vdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzIFdLX0FQ
SV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKKwogLSAodm9pZClfYmVnaW5JbnRlcmFjdGl2
ZU9ic2N1cmVkSW5zZXRzQ2hhbmdlOwogLSAodm9pZClfZW5kSW50ZXJhY3RpdmVPYnNjdXJlZElu
c2V0c0NoYW5nZTsKIC0gKHZvaWQpX2hpZGVDb250ZW50VW50aWxOZXh0VXBkYXRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYmUxNjExZmVjMGRjODYwMzI2
NzYzMTJkMjM4ZmYwMGZmNTJlMGM3Zi4uZWJkMDY3NTBlYjY2ZTQxNzRkMjc1OTE4ZmJmMTU3ZDRh
OThlY2U3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC03
MDI3LDYgKzcwMjcsNyBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzIFdlYlBhZ2VQcm94eTo6
Y3JlYXRpb25QYXJhbWV0ZXJzKFdlYlByb2Nlc3NQcm94eSYgcHJvYwogICAgIHBhcmFtZXRlcnMu
bWF4aW11bVVub2JzY3VyZWRTaXplID0gbV9tYXhpbXVtVW5vYnNjdXJlZFNpemU7CiAgICAgcGFy
YW1ldGVycy5kZXZpY2VPcmllbnRhdGlvbiA9IG1fZGV2aWNlT3JpZW50YXRpb247CiAgICAgcGFy
YW1ldGVycy5rZXlib2FyZElzQXR0YWNoZWQgPSBpc0luSGFyZHdhcmVLZXlib2FyZE1vZGUoKTsK
KyAgICBwYXJhbWV0ZXJzLm92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMgPSBtX292ZXJyaWRlVmll
d3BvcnRBcmd1bWVudHM7CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKE1BQykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNDYwYTE5MzFlZTAzN2MzYzdkYzdkNmI2ZDZj
NDVmMjVhMWM2YjgzZi4uNWRhMzBlMjE3ZmEyYjJiOGVhOTAyOWJmY2I2MzZlMWVlNmI0MzhkNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTkxLDYgKzkxLDcgQEAK
ICNpbmNsdWRlIDxXZWJDb3JlL1RleHRDaGVja2luZy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVGV4
dEdyYW51bGFyaXR5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9WaWV3cG9ydEFyZ3VtZW50cy5oPgogI2luY2x1
ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgpAQCAtMjExNyw2ICsyMTE4LDcgQEAgcHJpdmF0ZToKICNlbmRpZgog
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBPcHRpb25hbDxXZWJDb3JlOjpWaWV3cG9y
dEFyZ3VtZW50cz4gbV9vdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzOwogICAgIFZpc2libGVDb250
ZW50UmVjdFVwZGF0ZUluZm8gbV9sYXN0VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlOwogICAgIHVp
bnQ2NF90IG1fZmlyc3RMYXllclRyZWVUcmFuc2FjdGlvbklkQWZ0ZXJEaWRDb21taXRMb2FkIHsg
MCB9OwogICAgIGludDMyX3QgbV9kZXZpY2VPcmllbnRhdGlvbiB7IDAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGZmOGJmNjliZWQx
MjY4NjAzMDIyYmRiNTAyYjY2YWMxMDZjMDU4YTkuLjVhNDgzNWZmNGFlMGJmNGMxMTBhNjAxYTMx
YjBhMThjZTYxNTkzNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbQpAQCAtMzY0LDYgKzM2NCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
RGV2aWNlT3JpZW50YXRpb24oaW50MzJfdCBkZXZpY2VPcmllbnRhdGlvbikKIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnNldE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMoY29uc3QgT3B0aW9uYWw8Vmll
d3BvcnRBcmd1bWVudHM+JiB2aWV3cG9ydEFyZ3VtZW50cykKIHsKKyAgICBpZiAodmlld3BvcnRB
cmd1bWVudHMgPT0gbV9vdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX292ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMgPSB2aWV3cG9ydEFyZ3VtZW50czsK
KwogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICBtX3Byb2Nlc3MtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlNldE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHModmlld3BvcnRB
cmd1bWVudHMpLCBtX3BhZ2VJRCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IDA2MjMzYzcyYzExYTA5YmI5NTIwMjFlMDg4OWEyYjhmMDQ3
NTUwZWIuLmIzMThjZDVlZDAwNTA5MmNkOTE2NTRhYjc5ZDAwNjYzODg0YzZjNTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC01MzUsNiArNTM1
LDcgQEAgV2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIFdlYlBhZ2VDcmVhdGlvblBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIG1fcGFnZS0+c2V0VXNlckludGVyZmFjZUxheW91
dERpcmVjdGlvbihtX3VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24pOwogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCiAgICAgbV9wYWdlLT5zZXRUZXh0QXV0b3NpemluZ1dpZHRoKHBhcmFtZXRl
cnMudGV4dEF1dG9zaXppbmdXaWR0aCk7CisgICAgc2V0T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50
cyhwYXJhbWV0ZXJzLm92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMpOwogI2VuZGlmCiAKICAgICBw
bGF0Zm9ybUluaXRpYWxpemUoKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xz
L0NoYW5nZUxvZwppbmRleCA3MDJiMmIzNDAxNmIxYjRlYzkzMDA0NjBjNWVmZDI1NGJiMDMyZmM3
Li41NDI2YTNlNDNjY2M5YzYwYmEwZDMyYWMwMTFjMDY1MDQ2ODJkNDBiIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIw
MTktMDQtMDkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgQWRkIG1vZGVybiBBUEkgZm9yIG92ZXJyaWRpbmcgdGhlIHBhZ2UncyBzcGVjaWZpZWQgdmll
d3BvcnQgY29uZmlndXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY3NzM0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDMzMTc5NT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvT3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50
cy5tbTogQWRkZWQuCisKIDIwMTktMDQtMDggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBh
cHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gRG8gbm90IGFsbG93IHN0YXJ0aW5nIHNlbGVjdGlv
biBkcmFncyB3aGVuIHNlbGVjdGlvbiB2aWV3cyBhcmUgbm90IHZpc2libGUKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggYjY2YzVjYzc2MGY4ODQwOWI4ZTBmMzIyNmRlNTdkYWMzZGI1NzNmOS4u
MmVmMzZjNDA3YWYzZTliMjE3OGIyZDliZWRkZWQ0NmJkY2U5NjBmNiAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTEwMCw2ICsxMDAsNyBAQAogCQkyRDcwMDU5OTIxRURBNEQwMDAzNDYzQ0Ig
LyogT2Zmc2NyZWVuV2luZG93Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMkQ3MDA1OTcyMUVEQTREMDAwMzQ2M0NCIC8qIE9mZnNjcmVlbldpbmRvdy5t
bSAqLzsgfTsKIAkJMkQ3RkQxOTMyMjQxOTA4NzAwNzg4N0YxIC8qIERvY3VtZW50RWRpdGluZ0Nv
bnRleHQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAy
RDdGRDE5MjIyNDE5MDg3MDA3ODg3RjEgLyogRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5tbSAqLzsg
fTsKIAkJMkQ4MzhCMUYxRUVGM0E1QzAwOUI5ODBFIC8qIFdLQ29udGVudFZpZXdFZGl0aW5nQWN0
aW9ucy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
ODM4QjFFMUVFRjNBNUIwMDlCOTgwRSAvKiBXS0NvbnRlbnRWaWV3RWRpdGluZ0FjdGlvbnMubW0g
Ki87IH07CisJCTJEQTI1ODZGMjI1QzY3REMwMEI0NUMxQyAvKiBPdmVycmlkZVZpZXdwb3J0QXJn
dW1lbnRzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MkRBMjU4NkUyMjVDNjdEQzAwQjQ1QzFDIC8qIE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMubW0g
Ki87IH07CiAJCTJEQURGMjYzMjFDQjhGMzIwMDNEM0UzQSAvKiBHZXRSZXNvdXJjZURhdGEubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREFERjI2MjIx
Q0I4RjMyMDAzRDNFM0EgLyogR2V0UmVzb3VyY2VEYXRhLm1tICovOyB9OwogCQkyREIwMjMyRjFF
NEU4NzE4MDA3MDcxMjMgLyogSW50ZXJhY3Rpb25EZWFkbG9ja0FmdGVyQ3Jhc2gubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREIwMjMyRTFFNEU4NzE4
MDA3MDcxMjMgLyogSW50ZXJhY3Rpb25EZWFkbG9ja0FmdGVyQ3Jhc2gubW0gKi87IH07CiAJCTJE
QjY0Nzg4MUY0MTYzRDYwMDUxQTg5RSAvKiBXS1dlYlZpZXdEb2VzTm90TG9nRHVyaW5nSW5pdGlh
bGl6YXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAyREI2NDc4NzFGNDE2MUY3MDA1MUE4OUUgLyogV0tXZWJWaWV3RG9lc05vdExvZ0R1cmluZ0lu
aXRpYWxpemF0aW9uLm1tICovOyB9OwpAQCAtMTQ1OCw2ICsxNDU5LDcgQEAKIAkJMkQ4MTA0Q0Ix
QkVDMTNFNzAwMjBEQTQ2IC8qIEZpbmRJblBhZ2UubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBGaW5kSW5QYWdlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkyRDgzOEIxRTFFRUYzQTVCMDA5Qjk4MEUgLyogV0tDb250ZW50Vmlld0VkaXRpbmdBY3Rp
b25zLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tDb250ZW50
Vmlld0VkaXRpbmdBY3Rpb25zLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDlB
NTNBRTFCMzFGQThEMDA3NEQ1QUEgLyogU2hyaW5rVG9GaXQubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTaHJpbmtUb0ZpdC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMkRBMjU4NkUyMjVDNjdEQzAwQjQ1QzFDIC8qIE92ZXJyaWRlVmlld3BvcnRB
cmd1bWVudHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBPdmVy
cmlkZVZpZXdwb3J0QXJndW1lbnRzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
REFERjI2MjIxQ0I4RjMyMDAzRDNFM0EgLyogR2V0UmVzb3VyY2VEYXRhLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gR2V0UmVzb3VyY2VEYXRhLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkyREIwMjMyRTFFNEU4NzE4MDA3MDcxMjMgLyogSW50ZXJh
Y3Rpb25EZWFkbG9ja0FmdGVyQ3Jhc2gubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBJbnRlcmFjdGlvbkRlYWRsb2NrQWZ0ZXJDcmFzaC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMkRCNjQ3ODcxRjQxNjFGNzAwNTFBODlFIC8qIFdLV2ViVmlld0Rv
ZXNOb3RMb2dEdXJpbmdJbml0aWFsaXphdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdL
V2ViVmlld0RvZXNOb3RMb2dEdXJpbmdJbml0aWFsaXphdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTI2MDgsNiArMjYxMCw3IEBACiAJCQkJMzdBMjJBQTUxRENBQTI3MjAw
QUZCRkM0IC8qIE9ic2VydmVkUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHNBZnRlckNyYXNoLm1tICov
LAogCQkJCUNFQTZDRjIyMTlDQ0Y1QkQwMDY0RjVBNyAvKiBPcGVuQW5kQ2xvc2VXaW5kb3cubW0g
Ki8sCiAJCQkJQ0VCQ0ExMkUxRTNBNjYwMTAwQzczMjkzIC8qIE92ZXJyaWRlQ29udGVudFNlY3Vy
aXR5UG9saWN5Lm1tICovLAorCQkJCTJEQTI1ODZFMjI1QzY3REMwMEI0NUMxQyAvKiBPdmVycmlk
ZVZpZXdwb3J0QXJndW1lbnRzLm1tICovLAogCQkJCTJEM0NBM0E0MjIxREYyMzkwMDg4RTgwMyAv
KiBQYWdlT3ZlcmxheVBsdWdpbi5tbSAqLywKIAkJCQlGNDRDNzlGQjIwRjlFNTBDMDAxNDQ3OEMg
LyogUGFyc2VyWWllbGRUb2tlblBsdWdJbi5tbSAqLywKIAkJCQlGNDRDNzlGRDIwRjlFODcxMDAx
NDQ3OEMgLyogUGFyc2VyWWllbGRUb2tlblRlc3RzLmggKi8sCkBAIC00MjMwLDYgKzQyMzMsNyBA
QAogCQkJCTJENzAwNTk5MjFFREE0RDAwMDM0NjNDQiAvKiBPZmZzY3JlZW5XaW5kb3cubW0gaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NFN0YyNTFBNDExQUY2MDA0NDdDNEMgLyogT3BlbkFuZENsb3Nl
V2luZG93Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0VCQ0ExMkYxRTNBNjYwMTAwQzczMjkzIC8q
IE92ZXJyaWRlQ29udGVudFNlY3VyaXR5UG9saWN5Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJMkRB
MjU4NkYyMjVDNjdEQzAwQjQ1QzFDIC8qIE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMubW0gaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NCNERBOTFDODNBRTczMDBDQzY5MTggLyogUGFnZUdyb3VwLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjA3MUE0MTFBRTYwMDQ0N0M0QyAvKiBQYWdlTG9h
ZEJhc2ljLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjA4MUE0MTFBRTYwMDQ0N0M0QyAv
KiBQYWdlTG9hZERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZUZvckZyYW1lLmNwcCBpbiBTb3Vy
Y2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9PdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9PdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzLm1tCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVj
NWU0YjBmMTRlMGY1N2I5NzA0NTMwODhmYjEzMTk4ZDBjYTZmY2QKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL092ZXJyaWRlVmlld3BvcnRB
cmd1bWVudHMubW0KQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3ROYXZp
Z2F0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdl
YktpdC9XS1ByZWZlcmVuY2VzLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5o
PgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkK
KworVEVTVChXZWJLaXQsIE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMpCit7CisgICAgUmV0YWlu
UHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDIwLCAyMCldKTsKKworICAgIGF1dG8g
Ym9keVdpZHRoID0gXnsKKyAgICAgICAgcmV0dXJuIFt3ZWJWaWV3IHN0cmluZ0J5RXZhbHVhdGlu
Z0phdmFTY3JpcHQ6QCJkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoIl07CisgICAgfTsKKworICAg
IFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxtZXRhIG5hbWU9J3ZpZXdw
b3J0JyBjb250ZW50PSdpbml0aWFsLXNjYWxlPTEnPjxkaXYgaWQ9J2RpdldpdGhWaWV3cG9ydFVu
aXRzJyBzdHlsZT0nd2lkdGg6IDEwMHZ3Oyc+PC9kaXY+Il07CisgICAgRVhQRUNUX1dLX1NUUkVR
KCIyMCIsIGJvZHlXaWR0aCgpKTsKKworICAgIFt3ZWJWaWV3IF9zZXRPdmVycmlkZVZpZXdwb3J0
QXJndW1lbnRzOkB7IEAid2lkdGgiIDogQCIxMDAwIiB9XTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEo
IjEwMDAiLCBib2R5V2lkdGgoKSk7CisKKyAgICBbd2ViVmlldyBfc2V0T3ZlcnJpZGVWaWV3cG9y
dEFyZ3VtZW50czpAeyBAIndpZHRoIiA6IEAiMTAwMCIsIEAiaW5pdGlhbC1zY2FsZSI6IEAiMSIg
fV07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVdOworICAgIEVY
UEVDVF9XS19TVFJFUSgiMTAwMCIsIGJvZHlXaWR0aCgpKTsKKyAgICBFWFBFQ1RfRVEoMS4sIFt3
ZWJWaWV3IHNjcm9sbFZpZXddLnpvb21TY2FsZSk7CisKKyAgICBbd2ViVmlldyBfc2V0T3ZlcnJp
ZGVWaWV3cG9ydEFyZ3VtZW50czpAeyBAIndpZHRoIiA6IEAiMTAwMCIsIEAiaW5pdGlhbC1zY2Fs
ZSI6IEAiNSIgfV07CisgICAgW3dlYlZpZXcgd2FpdEZvck5leHRQcmVzZW50YXRpb25VcGRhdGVd
OworICAgIEVYUEVDVF9XS19TVFJFUSgiMTAwMCIsIGJvZHlXaWR0aCgpKTsKKyAgICBFWFBFQ1Rf
RVEoNS4sIFt3ZWJWaWV3IHNjcm9sbFZpZXddLnpvb21TY2FsZSk7CisKKyAgICBbd2ViVmlldyBf
c2V0T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50czpuaWxdOworICAgIEVYUEVDVF9XS19TVFJFUSgi
MjAiLCBib2R5V2lkdGgoKSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxT
dHJpbmc6QCI8bWV0YSBuYW1lPSd2aWV3cG9ydCcgY29udGVudD0nd2lkdGg9MTAnPjxkaXYgaWQ9
J2RpdldpdGhWaWV3cG9ydFVuaXRzJyBzdHlsZT0nd2lkdGg6IDEwMHZ3Oyc+PC9kaXY+Il07Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKCIxMCIsIGJvZHlXaWR0aCgpKTsKKworICAgIFt3ZWJWaWV3IF9z
ZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzOkB7IEAid2lkdGgiIDogQCIxMDAwIiwgQCJpbml0
aWFsLXNjYWxlIjogQCIxIiB9XTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIjEwMDAiLCBib2R5V2lk
dGgoKSk7CisKKyAgICBbd2ViVmlldyBfc2V0T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50czpAeyBA
IndpZHRoIiA6IEAiZGV2aWNlLXdpZHRoIiwgQCJpbml0aWFsLXNjYWxlIjogQCIxIiB9XTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoIjIwIiwgYm9keVdpZHRoKCkpOworCisgICAgW3dlYlZpZXcgX3Nl
dE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHM6QHsgQCJ3aWR0aCIgOiBAIjUwMCIsIEAiaW5pdGlh
bC1zY2FsZSI6IEAiMSIsIEAiZ2FyYmFnZSI6IEAibm9uc2Vuc2UiIH1dOworICAgIEVYUEVDVF9X
S19TVFJFUSgiNTAwIiwgYm9keVdpZHRoKCkpOworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367146</attachid>
            <date>2019-04-10 12:32:08 -0700</date>
            <delta_ts>2019-04-10 13:21:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167734-20190410123207.patch</filename>
            <type>text/plain</type>
            <size>33447</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0MDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTJiYTY2N2VlODRkNGI5
YjI3YmQxNDc1MTk5ZjNiMmU2NmZkNzFlZi4uZWQ2ZDM5NGE5NzcwZWM4NTBkNDA5NWJlNjIxY2Q1
MGYzZjkyMTg4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE5LTA0LTA5ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBtb2Rlcm4g
QVBJIGZvciBvdmVycmlkaW5nIHRoZSBwYWdlJ3Mgc3BlY2lmaWVkIHZpZXdwb3J0IGNvbmZpZ3Vy
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NzczNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzAzMzE3OTU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTmV3IEFQSSB0ZXN0OiBXZWJLaXQuT3Zl
cnJpZGVWaWV3cG9ydEFyZ3VtZW50cworCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1cGRhdGVWaWV3cG9ydEFyZ3VtZW50cyk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dmlld3Bv
cnRBcmd1bWVudHMgY29uc3QpOgorICAgICAgICBNYWtlIHRoZSB2aWV3cG9ydEFyZ3VtZW50cygp
IGdldHRlciByZXNwZWN0IHRoZSBvdmVycmlkZGVuIGFyZ3VtZW50cy4KKworICAgICAgICAqIGRv
bS9WaWV3cG9ydEFyZ3VtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpudW1lcmljUHJlZml4
KToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRTaXplVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6
ZmluZFNjYWxlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZEJvb2xlYW5WYWx1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpwYXJzZVZpZXdwb3J0Rml0VmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6dmlld3BvcnRFcnJvck1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6cmVwb3J0Vmlld3Bv
cnRXYXJuaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OnNldFZpZXdwb3J0RmVhdHVyZSk6CisgICAg
ICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmg6CisgICAgICAgIE1ha2UgaXQgcG9zc2libGUg
dG8gcGFyc2UgVmlld3BvcnRBcmd1bWVudHMgd2l0aG91dCBhIERvY3VtZW50LCBzbworICAgICAg
ICB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIHRoZSBVSSBwcm9jZXNzLiBXZSBvbmx5IHVzZWQgdGhl
IERvY3VtZW50IGZvcgorICAgICAgICB0d28gdGhpbmdzOiBlcnJvciByZXBvcnRpbmcsIGFuZCBn
ZXR0aW5nIHRoZSBzdGF0ZSBvZiBvbmUgc2V0dGluZy4KKyAgICAgICAgUmVmYWN0b3IgZXJyb3Ig
aGFuZGxpbmcgdG8gdXNlIGEgcGFzc2VkLWFydW5kIGZ1bmN0aW9uLCBhbmQgYWRkIGEKKyAgICAg
ICAgdmFyaWFudCBvZiBzZXRWaWV3cG9ydEZlYXR1cmUoKSB0aGF0IGRvZXNuJ3QgdGFrZSBhIERv
Y3VtZW50LgorCiAyMDE5LTA0LTA4ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtpT1NdIERvIG5vdCBhbGxvdyBzdGFydGluZyBzZWxlY3Rpb24gZHJh
Z3Mgd2hlbiBzZWxlY3Rpb24gdmlld3MgYXJlIG5vdCB2aXNpYmxlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQzMTU5
ZjAyOWZiOWNjZDVhZDQyOTJmYTAxMDVmM2VhNWRjMjZhZDkuLjhkMTQ0MTNiY2VkMzI2MDkwYTkx
NzIzM2VlMDJkMjg4YTI1Njk1Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTktMDQt
MDkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRk
IG1vZGVybiBBUEkgZm9yIG92ZXJyaWRpbmcgdGhlIHBhZ2UncyBzcGVjaWZpZWQgdmlld3BvcnQg
Y29uZmlndXJhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY3NzM0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMDMzMTc5NT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9XZWJQYWdl
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9u
UGFyYW1ldGVycy5oOgorICAgICAgICBQbHVtYiBvdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzIGlu
IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMsIHNvIHRoYXQKKyAgICAgICAgaWYgdGhlIHByb2Nl
c3MgY3Jhc2hlcyAob3Igc3dhcHMpIHRoZXkgYXJlIG1haW50YWluZWQuCisKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKHZpZXdwb3J0QXJndW1l
bnRzRnJvbURpY3Rpb25hcnkpOgorICAgICAgICAoLVtXS1dlYlZpZXcgX292ZXJyaWRlVmlld3Bv
cnRXaXRoQXJndW1lbnRzOl0pOgorICAgICAgICBBZGQgU1BJIHRvIHNldCBvdmVycmlkZSB2aWV3
cG9ydCBhcmd1bWVudHMuIFBhcnNlIHRoZW0gaW50byBhIFZpZXdwb3J0QXJndW1lbnRzCisgICAg
ICAgIG9iamVjdCBhbmQgdXNlIHRoZSBleGlzdGluZyAobm93IGltcHJvdmVkKSBvdmVycmlkZVZp
ZXdwb3J0QXJndW1lbnRzIG1lY2hhbmlzbQorICAgICAgICB0byB0YWtlIG92ZXIgdGhlIHBhZ2Un
cyB2aWV3cG9ydCBhcmd1bWVudHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpjcmVhdGlvblBhcmFtZXRlcnMpOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRP
dmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHA6CisgICAgICAgIFBsdW1iIG92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMgYXJv
dW5kIG1vcmUuCisKIDIwMTktMDQtMDggIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgW2lPU10gRG8gbm90IGFsbG93IHN0YXJ0aW5nIHNlbGVjdGlvbiBk
cmFncyB3aGVuIHNlbGVjdGlvbiB2aWV3cyBhcmUgbm90IHZpc2libGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCmluZGV4IGVmOTY0ZmI0ZTY5ODllYWFlNTg3ZGY5NmJhY2YwODVhMjVmYWYzZmQuLjA2
NGViOTRjNThlMDBhYzViN2FiMzhkNmU2ZjI0ODJjOTdiMTc5OTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcApAQCAtMzYyMSw3ICszNjIxLDcgQEAgdm9pZCBEb2N1bWVudDo6dXBkYXRlVmlld3Bv
cnRBcmd1bWVudHMoKQogI2lmbmRlZiBOREVCVUcKICAgICAgICAgbV9kaWREaXNwYXRjaFZpZXdw
b3J0UHJvcGVydGllc0NoYW5nZWQgPSB0cnVlOwogI2VuZGlmCi0gICAgICAgIHBhZ2UoKS0+Y2hy
b21lKCkuZGlzcGF0Y2hWaWV3cG9ydFByb3BlcnRpZXNEaWRDaGFuZ2UobV9vdmVycmlkZVZpZXdw
b3J0QXJndW1lbnRzID8gbV9vdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzLnZhbHVlKCkgOiBtX3Zp
ZXdwb3J0QXJndW1lbnRzKTsKKyAgICAgICAgcGFnZSgpLT5jaHJvbWUoKS5kaXNwYXRjaFZpZXdw
b3J0UHJvcGVydGllc0RpZENoYW5nZSh2aWV3cG9ydEFyZ3VtZW50cygpKTsKICAgICAgICAgcGFn
ZSgpLT5jaHJvbWUoKS5kaWRSZWNlaXZlRG9jVHlwZSgqZnJhbWUoKSk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCBkNjdmNmU4ODM4NDk4NDZiOGY4NzQyMzE4ZDg0NjczYzRkZjJl
N2Q5Li43MjJiMDdmNDIwYzE5ZTQ4MTQzNjgxM2E5MWM0ZGU1YWM3ZmY4ZGVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaApAQCAtNDExLDcgKzQxMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNsZWFyU2Vs
ZWN0b3JRdWVyeUNhY2hlKCk7CiAKICAgICB2b2lkIHNldFZpZXdwb3J0QXJndW1lbnRzKGNvbnN0
IFZpZXdwb3J0QXJndW1lbnRzJiB2aWV3cG9ydEFyZ3VtZW50cykgeyBtX3ZpZXdwb3J0QXJndW1l
bnRzID0gdmlld3BvcnRBcmd1bWVudHM7IH0KLSAgICBWaWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9y
dEFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fdmlld3BvcnRBcmd1bWVudHM7IH0KKyAgICBW
aWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9ydEFyZ3VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fb3Zl
cnJpZGVWaWV3cG9ydEFyZ3VtZW50cy52YWx1ZU9yKG1fdmlld3BvcnRBcmd1bWVudHMpOyB9CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMoY29u
c3QgT3B0aW9uYWw8Vmlld3BvcnRBcmd1bWVudHM+Jik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVmll
d3BvcnRBcmd1bWVudHMuY3BwCmluZGV4IGYzYTg0NjE2ZTQyZWY3NGYwMTBmZWQzZmY5OGNjZDE5
MzkzYjM5ZWMuLmNjNjNkOTZlYTljNTUwNDdmYTU1ZTdmOTRlOTJiM2Q4YTk0ZmJhM2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcApAQCAtMzgsNiArMzgsOCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3R5cGVkZWYgV1RGOjpGdW5jdGlvbjx2b2lkKFZpZXdw
b3J0RXJyb3JDb2RlLCBTdHJpbmdWaWV3LCBTdHJpbmdWaWV3KT4gSW50ZXJuYWxWaWV3cG9ydEVy
cm9ySGFuZGxlcjsKKwogI2lmIFBMQVRGT1JNKEdUSykKIGNvbnN0IGZsb2F0IFZpZXdwb3J0QXJn
dW1lbnRzOjpkZXByZWNhdGVkVGFyZ2V0RFBJID0gMTYwOwogI2VuZGlmCkBAIC0yODgsOSArMjkw
LDcgQEAgdm9pZCByZXN0cmljdFNjYWxlRmFjdG9yVG9Jbml0aWFsU2NhbGVJZk5vdFVzZXJTY2Fs
YWJsZShWaWV3cG9ydEF0dHJpYnV0ZXMmIHJlc3UKICAgICAgICAgcmVzdWx0Lm1heGltdW1TY2Fs
ZSA9IHJlc3VsdC5taW5pbXVtU2NhbGUgPSByZXN1bHQuaW5pdGlhbFNjYWxlOwogfQogCi1zdGF0
aWMgdm9pZCByZXBvcnRWaWV3cG9ydFdhcm5pbmcoRG9jdW1lbnQmLCBWaWV3cG9ydEVycm9yQ29k
ZSwgU3RyaW5nVmlldyByZXBsYWNlbWVudDEgPSB7IH0sIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQy
ID0geyB9KTsKLQotc3RhdGljIGZsb2F0IG51bWVyaWNQcmVmaXgoRG9jdW1lbnQmIGRvY3VtZW50
LCBTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSwgYm9vbCogb2sgPSBudWxscHRyKQor
c3RhdGljIGZsb2F0IG51bWVyaWNQcmVmaXgoU3RyaW5nVmlldyBrZXksIFN0cmluZ1ZpZXcgdmFs
dWUsIGNvbnN0IEludGVybmFsVmlld3BvcnRFcnJvckhhbmRsZXImIGVycm9ySGFuZGxlciwgYm9v
bCogb2sgPSBudWxscHRyKQogewogICAgIHNpemVfdCBwYXJzZWRMZW5ndGg7CiAgICAgZmxvYXQg
bnVtZXJpY1ZhbHVlOwpAQCAtMjk5LDE5ICsyOTksMTkgQEAgc3RhdGljIGZsb2F0IG51bWVyaWNQ
cmVmaXgoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1
ZSwKICAgICBlbHNlCiAgICAgICAgIG51bWVyaWNWYWx1ZSA9IGNoYXJhY3RlcnNUb0Zsb2F0KHZh
bHVlLmNoYXJhY3RlcnMxNigpLCB2YWx1ZS5sZW5ndGgoKSwgcGFyc2VkTGVuZ3RoKTsKICAgICBp
ZiAoIXBhcnNlZExlbmd0aCkgewotICAgICAgICByZXBvcnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1l
bnQsIFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yLCB2YWx1ZSwga2V5KTsK
KyAgICAgICAgZXJyb3JIYW5kbGVyKFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVy
cm9yLCB2YWx1ZSwga2V5KTsKICAgICAgICAgaWYgKG9rKQogICAgICAgICAgICAgKm9rID0gZmFs
c2U7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBpZiAocGFyc2VkTGVuZ3RoIDwgdmFs
dWUubGVuZ3RoKCkpCi0gICAgICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwgVHJ1
bmNhdGVkVmlld3BvcnRBcmd1bWVudFZhbHVlRXJyb3IsIHZhbHVlLCBrZXkpOworICAgICAgICBl
cnJvckhhbmRsZXIoVHJ1bmNhdGVkVmlld3BvcnRBcmd1bWVudFZhbHVlRXJyb3IsIHZhbHVlLCBr
ZXkpOwogICAgIGlmIChvaykKICAgICAgICAgKm9rID0gdHJ1ZTsKICAgICByZXR1cm4gbnVtZXJp
Y1ZhbHVlOwogfQogCi1zdGF0aWMgZmxvYXQgZmluZFNpemVWYWx1ZShEb2N1bWVudCYgZG9jdW1l
bnQsIFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWV3IHZhbHVlLCBib29sKiB2YWx1ZVdhc0V4cGxp
Y2l0ID0gbnVsbHB0cikKK3N0YXRpYyBmbG9hdCBmaW5kU2l6ZVZhbHVlKFN0cmluZ1ZpZXcga2V5
LCBTdHJpbmdWaWV3IHZhbHVlLCBjb25zdCBJbnRlcm5hbFZpZXdwb3J0RXJyb3JIYW5kbGVyJiBl
cnJvckhhbmRsZXIsIGJvb2wqIHZhbHVlV2FzRXhwbGljaXQgPSBudWxscHRyKQogewogICAgIC8v
IDEpIE5vbi1uZWdhdGl2ZSBudW1iZXIgdmFsdWVzIGFyZSB0cmFuc2xhdGVkIHRvIHB4IGxlbmd0
aHMuCiAgICAgLy8gMikgTmVnYXRpdmUgbnVtYmVyIHZhbHVlcyBhcmUgdHJhbnNsYXRlZCB0byBh
dXRvLgpAQCAtMzI3LDcgKzMyNyw3IEBAIHN0YXRpYyBmbG9hdCBmaW5kU2l6ZVZhbHVlKERvY3Vt
ZW50JiBkb2N1bWVudCwgU3RyaW5nVmlldyBrZXksIFN0cmluZ1ZpZXcgdmFsdWUsCiAgICAgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAiZGV2aWNlLWhlaWdodCIpKQog
ICAgICAgICByZXR1cm4gVmlld3BvcnRBcmd1bWVudHM6OlZhbHVlRGV2aWNlSGVpZ2h0OwogCi0g
ICAgZmxvYXQgc2l6ZVZhbHVlID0gbnVtZXJpY1ByZWZpeChkb2N1bWVudCwga2V5LCB2YWx1ZSk7
CisgICAgZmxvYXQgc2l6ZVZhbHVlID0gbnVtZXJpY1ByZWZpeChrZXksIHZhbHVlLCBlcnJvckhh
bmRsZXIpOwogCiAgICAgaWYgKHNpemVWYWx1ZSA8IDApIHsKICAgICAgICAgaWYgKHZhbHVlV2Fz
RXhwbGljaXQpCkBAIC0zMzgsNyArMzM4LDcgQEAgc3RhdGljIGZsb2F0IGZpbmRTaXplVmFsdWUo
RG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSwKICAg
ICByZXR1cm4gc2l6ZVZhbHVlOwogfQogCi1zdGF0aWMgZmxvYXQgZmluZFNjYWxlVmFsdWUoRG9j
dW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSkKK3N0YXRp
YyBmbG9hdCBmaW5kU2NhbGVWYWx1ZShTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSwg
Y29uc3QgSW50ZXJuYWxWaWV3cG9ydEVycm9ySGFuZGxlciYgZXJyb3JIYW5kbGVyKQogewogICAg
IC8vIDEpIE5vbi1uZWdhdGl2ZSBudW1iZXIgdmFsdWVzIGFyZSB0cmFuc2xhdGVkIHRvIDxudW1i
ZXI+IHZhbHVlcy4KICAgICAvLyAyKSBOZWdhdGl2ZSBudW1iZXIgdmFsdWVzIGFyZSB0cmFuc2xh
dGVkIHRvIGF1dG8uCkBAIC0zNTUsMTggKzM1NSwxOCBAQCBzdGF0aWMgZmxvYXQgZmluZFNjYWxl
VmFsdWUoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1
ZQogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2YWx1ZSwgImRldmljZS1o
ZWlnaHQiKSkKICAgICAgICAgcmV0dXJuIDEwOwogCi0gICAgZmxvYXQgbnVtZXJpY1ZhbHVlID0g
bnVtZXJpY1ByZWZpeChkb2N1bWVudCwga2V5LCB2YWx1ZSk7CisgICAgZmxvYXQgbnVtZXJpY1Zh
bHVlID0gbnVtZXJpY1ByZWZpeChrZXksIHZhbHVlLCBlcnJvckhhbmRsZXIpOwogCiAgICAgaWYg
KG51bWVyaWNWYWx1ZSA8IDApCiAgICAgICAgIHJldHVybiBWaWV3cG9ydEFyZ3VtZW50czo6VmFs
dWVBdXRvOwogCiAgICAgaWYgKG51bWVyaWNWYWx1ZSA+IDEwLjApCi0gICAgICAgIHJlcG9ydFZp
ZXdwb3J0V2FybmluZyhkb2N1bWVudCwgTWF4aW11bVNjYWxlVG9vTGFyZ2VFcnJvcik7CisgICAg
ICAgIGVycm9ySGFuZGxlcihNYXhpbXVtU2NhbGVUb29MYXJnZUVycm9yLCB7IH0sIHsgfSk7CiAK
ICAgICByZXR1cm4gbnVtZXJpY1ZhbHVlOwogfQogCi1zdGF0aWMgYm9vbCBmaW5kQm9vbGVhblZh
bHVlKERvY3VtZW50JiBkb2N1bWVudCwgU3RyaW5nVmlldyBrZXksIFN0cmluZ1ZpZXcgdmFsdWUp
CitzdGF0aWMgYm9vbCBmaW5kQm9vbGVhblZhbHVlKFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWV3
IHZhbHVlLCBjb25zdCBJbnRlcm5hbFZpZXdwb3J0RXJyb3JIYW5kbGVyJiBlcnJvckhhbmRsZXIp
CiB7CiAgICAgLy8geWVzIGFuZCBubyBhcmUgdXNlZCBhcyBrZXl3b3Jkcy4KICAgICAvLyBOdW1i
ZXJzID49IDEsIG51bWJlcnMgPD0gLTEsIGRldmljZS13aWR0aCBhbmQgZGV2aWNlLWhlaWdodCBh
cmUgbWFwcGVkIHRvIHllcy4KQEAgLTM4MCwxMCArMzgwLDEwIEBAIHN0YXRpYyBib29sIGZpbmRC
b29sZWFuVmFsdWUoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmll
dyB2YWx1CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZSh2YWx1ZSwgImRldmljZS1oZWlnaHQiKSkKICAgICAgICAgcmV0dXJuIHRydWU7
Ci0gICAgcmV0dXJuIHN0ZDo6YWJzKG51bWVyaWNQcmVmaXgoZG9jdW1lbnQsIGtleSwgdmFsdWUp
KSA+PSAxOworICAgIHJldHVybiBzdGQ6OmFicyhudW1lcmljUHJlZml4KGtleSwgdmFsdWUsIGVy
cm9ySGFuZGxlcikpID49IDE7CiB9CiAKLXN0YXRpYyBWaWV3cG9ydEZpdCBwYXJzZVZpZXdwb3J0
Rml0VmFsdWUoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2
YWx1ZSkKK3N0YXRpYyBWaWV3cG9ydEZpdCBwYXJzZVZpZXdwb3J0Rml0VmFsdWUoU3RyaW5nVmll
dyBrZXksIFN0cmluZ1ZpZXcgdmFsdWUsIGNvbnN0IEludGVybmFsVmlld3BvcnRFcnJvckhhbmRs
ZXImIGVycm9ySGFuZGxlcikKIHsKICAgICBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2UodmFsdWUsICJhdXRvIikpCiAgICAgICAgIHJldHVybiBWaWV3cG9ydEZpdDo6QXV0bzsKQEAg
LTM5MiwzOSArMzkyLDExIEBAIHN0YXRpYyBWaWV3cG9ydEZpdCBwYXJzZVZpZXdwb3J0Rml0VmFs
dWUoRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IGtleSwgU3RyCiAgICAgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAiY292ZXIiKSkKICAgICAgICAgcmV0dXJu
IFZpZXdwb3J0Rml0OjpDb3ZlcjsKIAotICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVu
dCwgVW5yZWNvZ25pemVkVmlld3BvcnRBcmd1bWVudFZhbHVlRXJyb3IsIHZhbHVlLCBrZXkpOwor
ICAgIGVycm9ySGFuZGxlcihVbnJlY29nbml6ZWRWaWV3cG9ydEFyZ3VtZW50VmFsdWVFcnJvciwg
dmFsdWUsIGtleSk7CiAKICAgICByZXR1cm4gVmlld3BvcnRGaXQ6OkF1dG87CiB9CiAKLXZvaWQg
c2V0Vmlld3BvcnRGZWF0dXJlKFZpZXdwb3J0QXJndW1lbnRzJiBhcmd1bWVudHMsIERvY3VtZW50
JiBkb2N1bWVudCwgU3RyaW5nVmlldyBrZXksIFN0cmluZ1ZpZXcgdmFsdWUpCi17Ci0gICAgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleSwgIndpZHRoIikpCi0gICAgICAgIGFy
Z3VtZW50cy53aWR0aCA9IGZpbmRTaXplVmFsdWUoZG9jdW1lbnQsIGtleSwgdmFsdWUsICZhcmd1
bWVudHMud2lkdGhXYXNFeHBsaWNpdCk7Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3Jp
bmdBU0NJSUNhc2Uoa2V5LCAiaGVpZ2h0IikpCi0gICAgICAgIGFyZ3VtZW50cy5oZWlnaHQgPSBm
aW5kU2l6ZVZhbHVlKGRvY3VtZW50LCBrZXksIHZhbHVlKTsKLSAgICBlbHNlIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJpbml0aWFsLXNjYWxlIikpCi0gICAgICAgIGFy
Z3VtZW50cy56b29tID0gZmluZFNjYWxlVmFsdWUoZG9jdW1lbnQsIGtleSwgdmFsdWUpOwotICAg
IGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleSwgIm1pbmltdW0tc2Nh
bGUiKSkKLSAgICAgICAgYXJndW1lbnRzLm1pblpvb20gPSBmaW5kU2NhbGVWYWx1ZShkb2N1bWVu
dCwga2V5LCB2YWx1ZSk7Ci0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNh
c2Uoa2V5LCAibWF4aW11bS1zY2FsZSIpKQotICAgICAgICBhcmd1bWVudHMubWF4Wm9vbSA9IGZp
bmRTY2FsZVZhbHVlKGRvY3VtZW50LCBrZXksIHZhbHVlKTsKLSAgICBlbHNlIGlmIChlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJ1c2VyLXNjYWxhYmxlIikpCi0gICAgICAgIGFy
Z3VtZW50cy51c2VyWm9vbSA9IGZpbmRCb29sZWFuVmFsdWUoZG9jdW1lbnQsIGtleSwgdmFsdWUp
OwotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2Uoa2V5LCAibWluaW1hbC11aSIpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBJ
Z25vcmUgc2lsZW50bHkgZm9yIG5vdy4gVGhpcyBjb2RlIHNob3VsZCBldmVudHVhbGx5IGJlIHJl
bW92ZWQKLSAgICAgICAgLy8gc28gd2Ugc3RhcnQgZ2l2aW5nIHRoZSB3YXJuaW5nIGluIHRoZSB3
ZWIgaW5zcGVjdG9yIGFzIGZvciBvdGhlciB1bmltcGxlbWVudGVkIGtleXMuCi0gICAgfQotI2Vu
ZGlmCi0gICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5LCAic2hy
aW5rLXRvLWZpdCIpKQotICAgICAgICBhcmd1bWVudHMuc2hyaW5rVG9GaXQgPSBmaW5kQm9vbGVh
blZhbHVlKGRvY3VtZW50LCBrZXksIHZhbHVlKTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShrZXksICJ2aWV3cG9ydC1maXQiKSAmJiBkb2N1bWVudC5zZXR0aW5n
cygpLnZpZXdwb3J0Rml0RW5hYmxlZCgpKQotICAgICAgICBhcmd1bWVudHMudmlld3BvcnRGaXQg
PSBwYXJzZVZpZXdwb3J0Rml0VmFsdWUoZG9jdW1lbnQsIGtleSwgdmFsdWUpOwotICAgIGVsc2UK
LSAgICAgICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBVbnJlY29nbml6ZWRWaWV3
cG9ydEFyZ3VtZW50S2V5RXJyb3IsIGtleSk7Ci19Ci0KIHN0YXRpYyBjb25zdCBjaGFyKiB2aWV3
cG9ydEVycm9yTWVzc2FnZVRlbXBsYXRlKFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSkKIHsK
ICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgZXJyb3JzW10gPSB7CkBAIC00NTIsMTIgKzQy
NCw4IEBAIHN0YXRpYyBNZXNzYWdlTGV2ZWwgdmlld3BvcnRFcnJvck1lc3NhZ2VMZXZlbChWaWV3
cG9ydEVycm9yQ29kZSBlcnJvckNvZGUpCiAgICAgcmV0dXJuIE1lc3NhZ2VMZXZlbDo6RXJyb3I7
CiB9CiAKLXZvaWQgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKERvY3VtZW50JiBkb2N1bWVudCwgVmll
d3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlLCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50MSwgU3RyaW5n
VmlldyByZXBsYWNlbWVudDIpCitzdGF0aWMgU3RyaW5nIHZpZXdwb3J0RXJyb3JNZXNzYWdlKFZp
ZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSwgU3RyaW5nVmlldyByZXBsYWNlbWVudDEsIFN0cmlu
Z1ZpZXcgcmVwbGFjZW1lbnQyKQogewotICAgIC8vIEZJWE1FOiBXaHkgaXMgdGhpcyBudWxsIGNo
ZWNrIG5lZWRlZD8gQ2FuJ3QgYWRkQ29uc29sZU1lc3NhZ2UgZGVhbCB3aXRoIHRoaXM/Ci0gICAg
aWYgKCFkb2N1bWVudC5mcmFtZSgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBTdHJpbmcgbWVz
c2FnZSA9IHZpZXdwb3J0RXJyb3JNZXNzYWdlVGVtcGxhdGUoZXJyb3JDb2RlKTsKICAgICBpZiAo
IXJlcGxhY2VtZW50MS5pc051bGwoKSkKICAgICAgICAgbWVzc2FnZS5yZXBsYWNlKCIlcmVwbGFj
ZW1lbnQxIiwgcmVwbGFjZW1lbnQxLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7CkBAIC00Njgs
MTAgKzQzNiw1OCBAQCB2b2lkIHJlcG9ydFZpZXdwb3J0V2FybmluZyhEb2N1bWVudCYgZG9jdW1l
bnQsIFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSwgU3RyaQogICAgIGlmICgoZXJyb3JDb2Rl
ID09IFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yIHx8IGVycm9yQ29kZSA9
PSBUcnVuY2F0ZWRWaWV3cG9ydEFyZ3VtZW50VmFsdWVFcnJvcikgJiYgcmVwbGFjZW1lbnQxLmNv
bnRhaW5zKCc7JykpCiAgICAgICAgIG1lc3NhZ2UuYXBwZW5kKCIgTm90ZSB0aGF0ICc7JyBpcyBu
b3QgYSBzZXBhcmF0b3IgaW4gdmlld3BvcnQgdmFsdWVzLiBUaGUgbGlzdCBzaG91bGQgYmUgY29t
bWEtc2VwYXJhdGVkLiIpOwogCisgICAgcmV0dXJuIG1lc3NhZ2U7Cit9CisKK3N0YXRpYyB2b2lk
IHJlcG9ydFZpZXdwb3J0V2FybmluZyhEb2N1bWVudCYgZG9jdW1lbnQsIFZpZXdwb3J0RXJyb3JD
b2RlIGVycm9yQ29kZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQoreworICAgIC8vIEZJWE1FOiBX
aHkgaXMgdGhpcyBudWxsIGNoZWNrIG5lZWRlZD8gQ2FuJ3QgYWRkQ29uc29sZU1lc3NhZ2UgZGVh
bCB3aXRoIHRoaXM/CisgICAgaWYgKCFkb2N1bWVudC5mcmFtZSgpKQorICAgICAgICByZXR1cm47
CisKICAgICAvLyBGSVhNRTogVGhpcyBtZXNzYWdlIHNob3VsZCBiZSBtb3ZlZCBvZmYgdGhlIGNv
bnNvbGUgb25jZSBhIHNvbHV0aW9uIHRvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDMyNzQgZXhpc3RzLgogICAgIGRvY3VtZW50LmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgdmlld3BvcnRFcnJvck1lc3NhZ2VMZXZlbChlcnJvckNv
ZGUpLCBtZXNzYWdlKTsKIH0KIAordm9pZCBzZXRWaWV3cG9ydEZlYXR1cmUoVmlld3BvcnRBcmd1
bWVudHMmIGFyZ3VtZW50cywgU3RyaW5nVmlldyBrZXksIFN0cmluZ1ZpZXcgdmFsdWUsIGJvb2wg
dmlld3BvcnRGaXRFbmFibGVkLCBjb25zdCBWaWV3cG9ydEVycm9ySGFuZGxlciYgZXJyb3JIYW5k
bGVyKQoreworICAgIEludGVybmFsVmlld3BvcnRFcnJvckhhbmRsZXIgaW50ZXJuYWxFcnJvckhh
bmRsZXIgPSBbJmVycm9ySGFuZGxlcl0gKFZpZXdwb3J0RXJyb3JDb2RlIGVycm9yQ29kZSwgU3Ry
aW5nVmlldyByZXBsYWNlbWVudDEsIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQyKSB7CisgICAgICAg
IGVycm9ySGFuZGxlcihlcnJvckNvZGUsIHZpZXdwb3J0RXJyb3JNZXNzYWdlKGVycm9yQ29kZSwg
cmVwbGFjZW1lbnQxLCByZXBsYWNlbWVudDIpKTsKKyAgICB9OworCisgICAgaWYgKGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleSwgIndpZHRoIikpCisgICAgICAgIGFyZ3VtZW50cy53
aWR0aCA9IGZpbmRTaXplVmFsdWUoa2V5LCB2YWx1ZSwgaW50ZXJuYWxFcnJvckhhbmRsZXIsICZh
cmd1bWVudHMud2lkdGhXYXNFeHBsaWNpdCk7CisgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2Uoa2V5LCAiaGVpZ2h0IikpCisgICAgICAgIGFyZ3VtZW50cy5oZWlnaHQg
PSBmaW5kU2l6ZVZhbHVlKGtleSwgdmFsdWUsIGludGVybmFsRXJyb3JIYW5kbGVyKTsKKyAgICBl
bHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJpbml0aWFsLXNjYWxl
IikpCisgICAgICAgIGFyZ3VtZW50cy56b29tID0gZmluZFNjYWxlVmFsdWUoa2V5LCB2YWx1ZSwg
aW50ZXJuYWxFcnJvckhhbmRsZXIpOworICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5n
QVNDSUlDYXNlKGtleSwgIm1pbmltdW0tc2NhbGUiKSkKKyAgICAgICAgYXJndW1lbnRzLm1pblpv
b20gPSBmaW5kU2NhbGVWYWx1ZShrZXksIHZhbHVlLCBpbnRlcm5hbEVycm9ySGFuZGxlcik7Cisg
ICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5LCAibWF4aW11bS1z
Y2FsZSIpKQorICAgICAgICBhcmd1bWVudHMubWF4Wm9vbSA9IGZpbmRTY2FsZVZhbHVlKGtleSwg
dmFsdWUsIGludGVybmFsRXJyb3JIYW5kbGVyKTsKKyAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShrZXksICJ1c2VyLXNjYWxhYmxlIikpCisgICAgICAgIGFyZ3VtZW50
cy51c2VyWm9vbSA9IGZpbmRCb29sZWFuVmFsdWUoa2V5LCB2YWx1ZSwgaW50ZXJuYWxFcnJvckhh
bmRsZXIpOworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgZWxzZSBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5LCAibWluaW1hbC11aSIpKSB7CisgICAgICAgIC8vIEZJ
WE1FOiBJZ25vcmUgc2lsZW50bHkgZm9yIG5vdy4gVGhpcyBjb2RlIHNob3VsZCBldmVudHVhbGx5
IGJlIHJlbW92ZWQKKyAgICAgICAgLy8gc28gd2Ugc3RhcnQgZ2l2aW5nIHRoZSB3YXJuaW5nIGlu
IHRoZSB3ZWIgaW5zcGVjdG9yIGFzIGZvciBvdGhlciB1bmltcGxlbWVudGVkIGtleXMuCisgICAg
fQorI2VuZGlmCisgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5
LCAic2hyaW5rLXRvLWZpdCIpKQorICAgICAgICBhcmd1bWVudHMuc2hyaW5rVG9GaXQgPSBmaW5k
Qm9vbGVhblZhbHVlKGtleSwgdmFsdWUsIGludGVybmFsRXJyb3JIYW5kbGVyKTsKKyAgICBlbHNl
IGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJ2aWV3cG9ydC1maXQiKSAm
JiB2aWV3cG9ydEZpdEVuYWJsZWQpCisgICAgICAgIGFyZ3VtZW50cy52aWV3cG9ydEZpdCA9IHBh
cnNlVmlld3BvcnRGaXRWYWx1ZShrZXksIHZhbHVlLCBpbnRlcm5hbEVycm9ySGFuZGxlcik7Cisg
ICAgZWxzZQorICAgICAgICBpbnRlcm5hbEVycm9ySGFuZGxlcihVbnJlY29nbml6ZWRWaWV3cG9y
dEFyZ3VtZW50S2V5RXJyb3IsIGtleSwgeyB9KTsKK30KKwordm9pZCBzZXRWaWV3cG9ydEZlYXR1
cmUoVmlld3BvcnRBcmd1bWVudHMmIGFyZ3VtZW50cywgRG9jdW1lbnQmIGRvY3VtZW50LCBTdHJp
bmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSkKK3sKKyAgICBzZXRWaWV3cG9ydEZlYXR1cmUo
YXJndW1lbnRzLCBrZXksIHZhbHVlLCBkb2N1bWVudC5zZXR0aW5ncygpLnZpZXdwb3J0Rml0RW5h
YmxlZCgpLCBbJl0oVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIG1l
c3NhZ2UpIHsKKyAgICAgICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBlcnJvckNv
ZGUsIG1lc3NhZ2UpOworICAgIH0pOworfQorCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mIHRzLCBjb25zdCBWaWV3cG9ydEFyZ3VtZW50cyYgdmlld3BvcnRBcmd1bWVudHMpCiB7
CiAgICAgVGV4dFN0cmVhbTo6SW5kZW50U2NvcGUgaW5kZW50U2NvcGUodHMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaAppbmRleCA0ZGJmMDkzZjZiMDIyOTAzYzQ3MjUwZGEx
ZWYxMzBkNzgzYjRiZTcyLi44MjUwOTg2ZTQwMDIyYjRmN2E4NmQ3ZmY4MWY4ZTQ2ZDE0MTUzNDFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaApAQCAtMTQzLDcgKzE0Myw5
IEBAIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdHJpY3RNaW5pbXVtU2NhbGVGYWN0b3JUb1ZpZXdw
b3J0U2l6ZShWaWV3cG9ydEF0dHJpYnV0ZXMmCiBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RyaWN0
U2NhbGVGYWN0b3JUb0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxlKFZpZXdwb3J0QXR0cmli
dXRlcyYgcmVzdWx0KTsKIFdFQkNPUkVfRVhQT1JUIGZsb2F0IGNvbXB1dGVNaW5pbXVtU2NhbGVG
YWN0b3JGb3JDb250ZW50Q29udGFpbmVkKGNvbnN0IFZpZXdwb3J0QXR0cmlidXRlcyYgcmVzdWx0
LCBjb25zdCBJbnRTaXplJiB2aWV3cG9ydFNpemUsIGNvbnN0IEludFNpemUmIGNvbnRlbnRTaXpl
KTsKIAordHlwZWRlZiBXVEY6OkZ1bmN0aW9uPHZvaWQoVmlld3BvcnRFcnJvckNvZGUsIGNvbnN0
IFN0cmluZyYpPiBWaWV3cG9ydEVycm9ySGFuZGxlcjsKIHZvaWQgc2V0Vmlld3BvcnRGZWF0dXJl
KFZpZXdwb3J0QXJndW1lbnRzJiwgRG9jdW1lbnQmLCBTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmll
dyB2YWx1ZSk7CitXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZXdwb3J0RmVhdHVyZShWaWV3cG9y
dEFyZ3VtZW50cyYsIFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWV3IHZhbHVlLCBib29sIHZpZXdw
b3J0Rml0RW5hYmxlZCwgY29uc3QgVmlld3BvcnRFcnJvckhhbmRsZXImKTsKIAogV1RGOjpUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIGNvbnN0IFZpZXdwb3J0QXJndW1l
bnRzJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5jcHAKaW5kZXggMThiMjViMWI0NGVmYmNiMGQ5ODNkOTk1MTdlZjU1OWIxZDcyOTQ5
OC4uNDdjNmVkNjJiYzBiZWMwODk2OTA2NjlhNDVkMTY4ZjBkYzJhZjU2MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTk1
LDYgKzk1LDcgQEAgdm9pZCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgbWF4aW11bVVub2JzY3VyZWRT
aXplOwogICAgIGVuY29kZXIgPDwgZGV2aWNlT3JpZW50YXRpb247CiAgICAgZW5jb2RlciA8PCBr
ZXlib2FyZElzQXR0YWNoZWQ7CisgICAgZW5jb2RlciA8PCBvdmVycmlkZVZpZXdwb3J0QXJndW1l
bnRzOwogI2VuZGlmCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgZW5jb2RlciA8PCBzbWFydElu
c2VydERlbGV0ZUVuYWJsZWQ7CkBAIC0yNzksNiArMjgwLDEyIEBAIE9wdGlvbmFsPFdlYlBhZ2VD
cmVhdGlvblBhcmFtZXRlcnM+IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6
OkRlY29kCiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAgICAgaWYgKCFkZWNvZGVyLmRl
Y29kZShwYXJhbWV0ZXJzLmtleWJvYXJkSXNBdHRhY2hlZCkpCiAgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisKKyAgICBPcHRpb25hbDxPcHRpb25hbDxXZWJDb3JlOjpWaWV3cG9ydEFyZ3Vt
ZW50cz4+IG92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHM7CisgICAgZGVjb2RlciA+PiBvdmVycmlk
ZVZpZXdwb3J0QXJndW1lbnRzOworICAgIGlmICghb3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cykK
KyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBwYXJhbWV0ZXJzLm92ZXJyaWRlVmll
d3BvcnRBcmd1bWVudHMgPSBXVEZNb3ZlKCpvdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKTsKICNl
bmRpZgogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggYWIzYjhlMDEwMTM3ZTUzZmRmYzA4MjFm
M2IyMmUyNDM2NzJlM2FmMC4uMTU5ZmRlZWRlNGY5MDZjODQyNjNiYzM2NDYzMTNiNjNlMGZmMmI5
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRl
cnMuaApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGFnaW5hdGlvbi5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJJ
bnRlcmZhY2VMYXlvdXREaXJlY3Rpb24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdwb3J0QXJn
dW1lbnRzLmg+CiAjaW5jbHVkZSA8cGFsL1Nlc3Npb25JRC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xNTMsNiArMTU0LDcg
QEAgc3RydWN0IFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIFdlYkNvcmU6OkZsb2F0
U2l6ZSBtYXhpbXVtVW5vYnNjdXJlZFNpemU7CiAgICAgaW50MzJfdCBkZXZpY2VPcmllbnRhdGlv
biB7IDAgfTsKICAgICBib29sIGtleWJvYXJkSXNBdHRhY2hlZCB7IGZhbHNlIH07CisgICAgT3B0
aW9uYWw8V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM+IG92ZXJyaWRlVmlld3BvcnRBcmd1bWVu
dHM7CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIHNtYXJ0SW5zZXJ0RGVs
ZXRlRW5hYmxlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tCmluZGV4IGQ4NDExZDM5MjQ1MDQyNjJkNDJkNTYwMTVkNWUwMzNhMWUyNjc0MWEuLmQ5
OGMyYTFiNmYyNTUyMGIwMmVhNGE0MTcwODViOTAxZDgyYjllZTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNDc2LDYgKzQ3NiwzNCBA
QCAtIChCT09MKV9pc1JldGFpbmluZ0FjdGl2ZUZvY3VzZWRTdGF0ZQogICAgIHJldHVybiBfZm9j
dXNQcmVzZXJ2YXRpb25Db3VudCB8fCBfYWN0aXZlRm9jdXNlZFN0YXRlUmV0YWluQ291bnQ7CiB9
CiAKK3N0YXRpYyBXVEY6Ok9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzPiB2aWV3
cG9ydEFyZ3VtZW50c0Zyb21EaWN0aW9uYXJ5KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1N0
cmluZyAqPiAqdmlld3BvcnRBcmd1bWVudFBhaXJzLCBib29sIHZpZXdwb3J0Rml0RW5hYmxlZCkK
K3sKKyAgICBpZiAoIXZpZXdwb3J0QXJndW1lbnRQYWlycykKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKworICAgIFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzIHZpZXdwb3J0QXJndW1l
bnRzKFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRzOjpWaWV3cG9ydE1ldGEpOworCisgICAgW3Zp
ZXdwb3J0QXJndW1lbnRQYWlycyBlbnVtZXJhdGVLZXlzQW5kT2JqZWN0c1VzaW5nQmxvY2s6bWFr
ZUJsb2NrUHRyKFsmXSAoTlNTdHJpbmcgKmtleSwgTlNTdHJpbmcgKnZhbHVlLCBCT09MKiBzdG9w
KSB7CisgICAgICAgIGlmICghW2tleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dIHx8
ICFbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAgICAgIFtO
U0V4Y2VwdGlvbiByYWlzZTpOU0ludmFsaWRBcmd1bWVudEV4Y2VwdGlvbiBmb3JtYXQ6QCItW1dL
V2ViVmlldyBfc2V0T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50c106IEtleXMgYW5kIHZhbHVlcyBt
dXN0IGFsbCBiZSBOU1N0cmluZ3MuIl07CisgICAgICAgIFN0cmluZyBrZXlTdHJpbmcgPSBrZXk7
CisgICAgICAgIFN0cmluZyB2YWx1ZVN0cmluZyA9IHZhbHVlOworICAgICAgICBXZWJDb3JlOjpz
ZXRWaWV3cG9ydEZlYXR1cmUodmlld3BvcnRBcmd1bWVudHMsIGtleVN0cmluZywgdmFsdWVTdHJp
bmcsIHZpZXdwb3J0Rml0RW5hYmxlZCwgW10gKFdlYkNvcmU6OlZpZXdwb3J0RXJyb3JDb2RlLCBj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeworICAgICAgICAgICAgTlNMb2coQCItW1dLV2Vi
VmlldyBfc2V0T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50c106IEVycm9yIHBhcnNpbmcgdmlld3Bv
cnQgYXJndW1lbnQ6ICVzIiwgZXJyb3JNZXNzYWdlLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICB9
KTsKKyAgICB9KS5nZXQoKV07CisKKyAgICByZXR1cm4gdmlld3BvcnRBcmd1bWVudHM7Cit9CisK
Ky0gKHZvaWQpX292ZXJyaWRlVmlld3BvcnRXaXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnk8TlNT
dHJpbmcgKiwgTlNTdHJpbmcgKj4gKilhcmd1bWVudHMKK3sKKyAgICBpZiAoIV9wYWdlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBfcGFnZS0+c2V0T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cyh2
aWV3cG9ydEFyZ3VtZW50c0Zyb21EaWN0aW9uYXJ5KGFyZ3VtZW50cywgX3BhZ2UtPnByZWZlcmVu
Y2VzKCkudmlld3BvcnRGaXRFbmFibGVkKCkpKTsKK30KKwogI2VuZGlmCiAKICNpZiBVU0UoQVBQ
TEVfSU5URVJOQUxfU0RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggYmQzNDRjMjQwYjE2MmNiNjgxNGVlOGJkOTE0
YzkyNmI4MjdkZDA2OS4uNDk5NTg4YzQ1NTBkZTM0OWMxMWE5YjkxNDkzMDI3ZWI4MzkxYjBkZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oCkBAIC0yODEsNiArMjgxLDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVn
ZXIsIF9XS1JlY3RFZGdlKSB7CiAtICh2b2lkKV9zbmFwc2hvdFJlY3Q6KENHUmVjdClyZWN0SW5W
aWV3Q29vcmRpbmF0ZXMgaW50b0ltYWdlT2ZXaWR0aDooQ0dGbG9hdClpbWFnZVdpZHRoIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkKF4pKENHSW1hZ2VSZWYpKWNvbXBsZXRpb25IYW5kbGVyOwogCiAt
ICh2b2lkKV9vdmVycmlkZUxheW91dFBhcmFtZXRlcnNXaXRoTWluaW11bUxheW91dFNpemU6KENH
U2l6ZSltaW5pbXVtTGF5b3V0U2l6ZSBtYXhpbXVtVW5vYnNjdXJlZFNpemVPdmVycmlkZTooQ0dT
aXplKW1heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlIFdLX0FQSV9BVkFJTEFCTEUoaW9zKDlf
MCkpOworLSAodm9pZClfb3ZlcnJpZGVWaWV3cG9ydFdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFy
eTxOU1N0cmluZyAqLCBOU1N0cmluZyAqPiAqKWFyZ3VtZW50cyBXS19BUElfQVZBSUxBQkxFKGlv
cyhXS19JT1NfVEJBKSk7CiAKIC0gKHZvaWQpX2NsZWFyT3ZlcnJpZGVMYXlvdXRQYXJhbWV0ZXJz
IFdLX0FQSV9BVkFJTEFCTEUoaW9zKDExLjApKTsKIC0gKHZvaWQpX2NsZWFySW50ZXJmYWNlT3Jp
ZW50YXRpb25PdmVycmlkZSBXS19BUElfQVZBSUxBQkxFKGlvcygxMS4wKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCBiZTE2MTFmZWMwZGM4NjAzMjY3NjMx
MmQyMzhmZjAwZmY1MmUwYzdmLi5lYmQwNjc1MGViNjZlNDE3NGQyNzU5MThmYmYxNTdkNGE5OGVj
ZTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTcwMjcs
NiArNzAyNyw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFnZVByb3h5OjpjcmVh
dGlvblBhcmFtZXRlcnMoV2ViUHJvY2Vzc1Byb3h5JiBwcm9jCiAgICAgcGFyYW1ldGVycy5tYXhp
bXVtVW5vYnNjdXJlZFNpemUgPSBtX21heGltdW1Vbm9ic2N1cmVkU2l6ZTsKICAgICBwYXJhbWV0
ZXJzLmRldmljZU9yaWVudGF0aW9uID0gbV9kZXZpY2VPcmllbnRhdGlvbjsKICAgICBwYXJhbWV0
ZXJzLmtleWJvYXJkSXNBdHRhY2hlZCA9IGlzSW5IYXJkd2FyZUtleWJvYXJkTW9kZSgpOworICAg
IHBhcmFtZXRlcnMub3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cyA9IG1fb3ZlcnJpZGVWaWV3cG9y
dEFyZ3VtZW50czsKICNlbmRpZgogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCA0NjBhMTkzMWVlMDM3YzNjN2RjN2Q2YjZkNmM0NWYy
NWExYzZiODNmLi41ZGEzMGUyMTdmYTJiMmI4ZWE5MDI5YmZjYjYzNmUxZWU2YjQzOGQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtOTEsNiArOTEsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvVGV4dENoZWNraW5nLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0R3Jh
bnVsYXJpdHkuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rp
b24uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1ZpZXdwb3J0QXJndW1lbnRzLmg+CiAjaW5jbHVkZSA8
bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CkBAIC0yMTE3LDYgKzIxMTgsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIE9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJn
dW1lbnRzPiBtX292ZXJyaWRlVmlld3BvcnRBcmd1bWVudHM7CiAgICAgVmlzaWJsZUNvbnRlbnRS
ZWN0VXBkYXRlSW5mbyBtX2xhc3RWaXNpYmxlQ29udGVudFJlY3RVcGRhdGU7CiAgICAgdWludDY0
X3QgbV9maXJzdExheWVyVHJlZVRyYW5zYWN0aW9uSWRBZnRlckRpZENvbW1pdExvYWQgeyAwIH07
CiAgICAgaW50MzJfdCBtX2RldmljZU9yaWVudGF0aW9uIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggZmY4YmY2OWJlZDEyNjg2
MDMwMjJiZGI1MDJiNjZhYzEwNmMwNThhOS4uNWE0ODM1ZmY0YWUwYmY0YzExMGE2MDFhMzFiMGEx
OGNlNjE1OTM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVBy
b3h5SU9TLm1tCkBAIC0zNjQsNiArMzY0LDExIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXREZXZp
Y2VPcmllbnRhdGlvbihpbnQzMl90IGRldmljZU9yaWVudGF0aW9uKQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6c2V0T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBPcHRpb25hbDxWaWV3cG9y
dEFyZ3VtZW50cz4mIHZpZXdwb3J0QXJndW1lbnRzKQogeworICAgIGlmICh2aWV3cG9ydEFyZ3Vt
ZW50cyA9PSBtX292ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fb3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cyA9IHZpZXdwb3J0QXJndW1lbnRzOworCiAg
ICAgaWYgKGhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cyh2aWV3cG9ydEFyZ3Vt
ZW50cyksIG1fcGFnZUlEKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKaW5kZXggMDYyMzNjNzJjMTFhMDliYjk1MjAyMWUwODg5YTJiOGYwNDc1NTBl
Yi4uYjMxOGNkNWVkMDA1MDkyY2Q5MTY1NGFiNzlkMDA2NjM4ODRjNmM1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTUzNSw2ICs1MzUsNyBA
QCBXZWJQYWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMpCiAgICAgbV9wYWdlLT5zZXRVc2VySW50ZXJmYWNlTGF5b3V0RGly
ZWN0aW9uKG1fdXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbik7CiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICBtX3BhZ2UtPnNldFRleHRBdXRvc2l6aW5nV2lkdGgocGFyYW1ldGVycy50
ZXh0QXV0b3NpemluZ1dpZHRoKTsKKyAgICBzZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKHBh
cmFtZXRlcnMub3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cyk7CiAjZW5kaWYKIAogICAgIHBsYXRm
b3JtSW5pdGlhbGl6ZSgpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDcwMmIyYjM0MDE2YjFiNGVjOTMwMDQ2MGM1ZWZkMjU0YmIwMzJmYzcuLjU0
MjZhM2U0M2NjYzljNjBiYTBkMzJhYzAxMWMwNjUwNDY4MmQ0MGIgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxOS0w
NC0wOSAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KKworICAgICAgICBB
ZGQgbW9kZXJuIEFQSSBmb3Igb3ZlcnJpZGluZyB0aGUgcGFnZSdzIHNwZWNpZmllZCB2aWV3cG9y
dCBjb25maWd1cmF0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjc3MzQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMwMzMxNzk1PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9PdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzLm1t
OiBBZGRlZC4KKwogMjAxOS0wNC0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxl
LmNvbT4KIAogICAgICAgICBbaU9TXSBEbyBub3QgYWxsb3cgc3RhcnRpbmcgc2VsZWN0aW9uIGRy
YWdzIHdoZW4gc2VsZWN0aW9uIHZpZXdzIGFyZSBub3QgdmlzaWJsZQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBiNjZjNWNjNzYwZjg4NDA5YjhlMGYzMjI2ZGU1N2RhYzNkYjU3M2Y5Li4yZWYz
NmM0MDdhZjNlOWIyMTc4YjJkOWJlZGRlZDQ2YmRjZTk2MGY2IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTAwLDYgKzEwMCw3IEBACiAJCTJENzAwNTk5MjFFREE0RDAwMDM0NjNDQiAvKiBP
ZmZzY3JlZW5XaW5kb3cubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAyRDcwMDU5NzIxRURBNEQwMDAzNDYzQ0IgLyogT2Zmc2NyZWVuV2luZG93Lm1tICov
OyB9OwogCQkyRDdGRDE5MzIyNDE5MDg3MDA3ODg3RjEgLyogRG9jdW1lbnRFZGl0aW5nQ29udGV4
dC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEN0ZE
MTkyMjI0MTkwODcwMDc4ODdGMSAvKiBEb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tICovOyB9Owog
CQkyRDgzOEIxRjFFRUYzQTVDMDA5Qjk4MEUgLyogV0tDb250ZW50Vmlld0VkaXRpbmdBY3Rpb25z
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ4MzhC
MUUxRUVGM0E1QjAwOUI5ODBFIC8qIFdLQ29udGVudFZpZXdFZGl0aW5nQWN0aW9ucy5tbSAqLzsg
fTsKKwkJMkRBMjU4NkYyMjVDNjdEQzAwQjQ1QzFDIC8qIE92ZXJyaWRlVmlld3BvcnRBcmd1bWVu
dHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREEy
NTg2RTIyNUM2N0RDMDBCNDVDMUMgLyogT3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cy5tbSAqLzsg
fTsKIAkJMkRBREYyNjMyMUNCOEYzMjAwM0QzRTNBIC8qIEdldFJlc291cmNlRGF0YS5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQURGMjYyMjFDQjhG
MzIwMDNEM0UzQSAvKiBHZXRSZXNvdXJjZURhdGEubW0gKi87IH07CiAJCTJEQjAyMzJGMUU0RTg3
MTgwMDcwNzEyMyAvKiBJbnRlcmFjdGlvbkRlYWRsb2NrQWZ0ZXJDcmFzaC5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQjAyMzJFMUU0RTg3MTgwMDcw
NzEyMyAvKiBJbnRlcmFjdGlvbkRlYWRsb2NrQWZ0ZXJDcmFzaC5tbSAqLzsgfTsKIAkJMkRCNjQ3
ODgxRjQxNjNENjAwNTFBODlFIC8qIFdLV2ViVmlld0RvZXNOb3RMb2dEdXJpbmdJbml0aWFsaXph
dGlvbi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJE
QjY0Nzg3MUY0MTYxRjcwMDUxQTg5RSAvKiBXS1dlYlZpZXdEb2VzTm90TG9nRHVyaW5nSW5pdGlh
bGl6YXRpb24ubW0gKi87IH07CkBAIC0xNDU4LDYgKzE0NTksNyBAQAogCQkyRDgxMDRDQjFCRUMx
M0U3MDAyMERBNDYgLyogRmluZEluUGFnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEZpbmRJblBhZ2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTJEODM4QjFFMUVFRjNBNUIwMDlCOTgwRSAvKiBXS0NvbnRlbnRWaWV3RWRpdGluZ0FjdGlvbnMu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0NvbnRlbnRWaWV3
RWRpdGluZ0FjdGlvbnMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEOUE1M0FF
MUIzMUZBOEQwMDc0RDVBQSAvKiBTaHJpbmtUb0ZpdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IFNocmlua1RvRml0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkyREEyNTg2RTIyNUM2N0RDMDBCNDVDMUMgLyogT3ZlcnJpZGVWaWV3cG9ydEFyZ3Vt
ZW50cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE92ZXJyaWRl
Vmlld3BvcnRBcmd1bWVudHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQURG
MjYyMjFDQjhGMzIwMDNEM0UzQSAvKiBHZXRSZXNvdXJjZURhdGEubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBHZXRSZXNvdXJjZURhdGEubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTJEQjAyMzJFMUU0RTg3MTgwMDcwNzEyMyAvKiBJbnRlcmFjdGlv
bkRlYWRsb2NrQWZ0ZXJDcmFzaC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEludGVyYWN0aW9uRGVhZGxvY2tBZnRlckNyYXNoLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkyREI2NDc4NzFGNDE2MUY3MDA1MUE4OUUgLyogV0tXZWJWaWV3RG9lc05v
dExvZ0R1cmluZ0luaXRpYWxpemF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJW
aWV3RG9lc05vdExvZ0R1cmluZ0luaXRpYWxpemF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjYwOCw2ICsyNjEwLDcgQEAKIAkJCQkzN0EyMkFBNTFEQ0FBMjcyMDBBRkJG
QzQgLyogT2JzZXJ2ZWRSZW5kZXJpbmdQcm9ncmVzc0V2ZW50c0FmdGVyQ3Jhc2gubW0gKi8sCiAJ
CQkJQ0VBNkNGMjIxOUNDRjVCRDAwNjRGNUE3IC8qIE9wZW5BbmRDbG9zZVdpbmRvdy5tbSAqLywK
IAkJCQlDRUJDQTEyRTFFM0E2NjAxMDBDNzMyOTMgLyogT3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQ
b2xpY3kubW0gKi8sCisJCQkJMkRBMjU4NkUyMjVDNjdEQzAwQjQ1QzFDIC8qIE92ZXJyaWRlVmll
d3BvcnRBcmd1bWVudHMubW0gKi8sCiAJCQkJMkQzQ0EzQTQyMjFERjIzOTAwODhFODAzIC8qIFBh
Z2VPdmVybGF5UGx1Z2luLm1tICovLAogCQkJCUY0NEM3OUZCMjBGOUU1MEMwMDE0NDc4QyAvKiBQ
YXJzZXJZaWVsZFRva2VuUGx1Z0luLm1tICovLAogCQkJCUY0NEM3OUZEMjBGOUU4NzEwMDE0NDc4
QyAvKiBQYXJzZXJZaWVsZFRva2VuVGVzdHMuaCAqLywKQEAgLTQyMzAsNiArNDIzMyw3IEBACiAJ
CQkJMkQ3MDA1OTkyMUVEQTREMDAwMzQ2M0NCIC8qIE9mZnNjcmVlbldpbmRvdy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDQ0U3RjI1MUE0MTFBRjYwMDQ0N0M0QyAvKiBPcGVuQW5kQ2xvc2VXaW5k
b3cubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRUJDQTEyRjFFM0E2NjAxMDBDNzMyOTMgLyogT3Zl
cnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kubW0gaW4gU291cmNlcyAqLywKKwkJCQkyREEyNTg2
RjIyNUM2N0RDMDBCNDVDMUMgLyogT3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTdDQ0I0REE5MUM4M0FFNzMwMENDNjkxOCAvKiBQYWdlR3JvdXAuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMDcxQTQxMUFFNjAwNDQ3QzRDIC8qIFBhZ2VMb2FkQmFz
aWMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMDgxQTQxMUFFNjAwNDQ3QzRDIC8qIFBh
Z2VMb2FkRGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5QYWdlRm9yRnJhbWUuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL092
ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL092ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMubW0KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2UxMGZh
ZGI3ODY4Njc1OWE2NTU4OWEwZTM4MDFiZjg4ZTg1YmU0NQotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvT3ZlcnJpZGVWaWV3cG9ydEFyZ3Vt
ZW50cy5tbQpAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRp
b25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0
L1dLUHJlZmVyZW5jZXMuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+Cisj
aW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCitU
RVNUKFdlYktpdCwgT3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cykKK3sKKyAgICBSZXRhaW5QdHI8
VGVzdFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgMjAsIDIwKV0pOworCisgICAgYXV0byBib2R5
V2lkdGggPSBeeworICAgICAgICByZXR1cm4gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGgiXTsKKyAgICB9OworCisgICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPG1ldGEgbmFtZT0ndmlld3BvcnQn
IGNvbnRlbnQ9J2luaXRpYWwtc2NhbGU9MSc+PGRpdiBpZD0nZGl2V2l0aFZpZXdwb3J0VW5pdHMn
IHN0eWxlPSd3aWR0aDogMTAwdnc7Jz48L2Rpdj4iXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIjIw
IiwgYm9keVdpZHRoKCkpOworCisgICAgW3dlYlZpZXcgX292ZXJyaWRlVmlld3BvcnRXaXRoQXJn
dW1lbnRzOkB7IEAid2lkdGgiIDogQCIxMDAwIiB9XTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIjEw
MDAiLCBib2R5V2lkdGgoKSk7CisKKyAgICBbd2ViVmlldyBfb3ZlcnJpZGVWaWV3cG9ydFdpdGhB
cmd1bWVudHM6QHsgQCJ3aWR0aCIgOiBAIjEwMDAiLCBAImluaXRpYWwtc2NhbGUiOiBAIjEiIH1d
OworICAgIFt3ZWJWaWV3IHdhaXRGb3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICBFWFBF
Q1RfV0tfU1RSRVEoIjEwMDAiLCBib2R5V2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKDEuLCBbd2Vi
VmlldyBzY3JvbGxWaWV3XS56b29tU2NhbGUpOworCisgICAgW3dlYlZpZXcgX292ZXJyaWRlVmll
d3BvcnRXaXRoQXJndW1lbnRzOkB7IEAid2lkdGgiIDogQCIxMDAwIiwgQCJpbml0aWFsLXNjYWxl
IjogQCI1IiB9XTsKKyAgICBbd2ViVmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07
CisgICAgRVhQRUNUX1dLX1NUUkVRKCIxMDAwIiwgYm9keVdpZHRoKCkpOworICAgIEVYUEVDVF9F
USg1LiwgW3dlYlZpZXcgc2Nyb2xsVmlld10uem9vbVNjYWxlKTsKKworICAgIFt3ZWJWaWV3IF9v
dmVycmlkZVZpZXdwb3J0V2l0aEFyZ3VtZW50czpuaWxdOworICAgIEVYUEVDVF9XS19TVFJFUSgi
MjAiLCBib2R5V2lkdGgoKSk7CisKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxT
dHJpbmc6QCI8bWV0YSBuYW1lPSd2aWV3cG9ydCcgY29udGVudD0nd2lkdGg9MTAnPjxkaXYgaWQ9
J2RpdldpdGhWaWV3cG9ydFVuaXRzJyBzdHlsZT0nd2lkdGg6IDEwMHZ3Oyc+PC9kaXY+Il07Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKCIxMCIsIGJvZHlXaWR0aCgpKTsKKworICAgIFt3ZWJWaWV3IF9v
dmVycmlkZVZpZXdwb3J0V2l0aEFyZ3VtZW50czpAeyBAIndpZHRoIiA6IEAiMTAwMCIsIEAiaW5p
dGlhbC1zY2FsZSI6IEAiMSIgfV07CisgICAgRVhQRUNUX1dLX1NUUkVRKCIxMDAwIiwgYm9keVdp
ZHRoKCkpOworCisgICAgW3dlYlZpZXcgX292ZXJyaWRlVmlld3BvcnRXaXRoQXJndW1lbnRzOkB7
IEAid2lkdGgiIDogQCJkZXZpY2Utd2lkdGgiLCBAImluaXRpYWwtc2NhbGUiOiBAIjEiIH1dOwor
ICAgIEVYUEVDVF9XS19TVFJFUSgiMjAiLCBib2R5V2lkdGgoKSk7CisKKyAgICBbd2ViVmlldyBf
b3ZlcnJpZGVWaWV3cG9ydFdpdGhBcmd1bWVudHM6QHsgQCJ3aWR0aCIgOiBAIjUwMCIsIEAiaW5p
dGlhbC1zY2FsZSI6IEAiMSIsIEAiZ2FyYmFnZSI6IEAibm9uc2Vuc2UiIH1dOworICAgIEVYUEVD
VF9XS19TVFJFUSgiNTAwIiwgYm9keVdpZHRoKCkpOworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>367153</attachid>
            <date>2019-04-10 13:21:13 -0700</date>
            <delta_ts>2019-04-10 14:33:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-167734-20190410132112.patch</filename>
            <type>text/plain</type>
            <size>33483</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ0MDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTJiYTY2N2VlODRkNGI5
YjI3YmQxNDc1MTk5ZjNiMmU2NmZkNzFlZi4uOTg1MzBkOWRmN2NkOTk5NjU2YWIwNmUwODgzY2E1
M2FkODA5MmIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE5LTA0LTA5ICBUaW0g
SG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBtb2Rlcm4g
QVBJIGZvciBvdmVycmlkaW5nIHRoZSBwYWdlJ3Mgc3BlY2lmaWVkIHZpZXdwb3J0IGNvbmZpZ3Vy
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NzczNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzAzMzE3OTU+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgIE5ldyBBUEkgdGVzdDogV2ViS2l0Lk92ZXJy
aWRlVmlld3BvcnRBcmd1bWVudHMKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRlVmlld3BvcnRBcmd1bWVudHMpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnZpZXdwb3J0
QXJndW1lbnRzIGNvbnN0KToKKyAgICAgICAgTWFrZSB0aGUgdmlld3BvcnRBcmd1bWVudHMoKSBn
ZXR0ZXIgcmVzcGVjdCB0aGUgb3ZlcnJpZGRlbiBhcmd1bWVudHMuCisKKyAgICAgICAgKiBkb20v
Vmlld3BvcnRBcmd1bWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bnVtZXJpY1ByZWZpeCk6
CisgICAgICAgIChXZWJDb3JlOjpmaW5kU2l6ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmZp
bmRTY2FsZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRCb29sZWFuVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VWaWV3cG9ydEZpdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OnZpZXdwb3J0RXJyb3JNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OnJlcG9ydFZpZXdwb3J0
V2FybmluZyk6CisgICAgICAgIChXZWJDb3JlOjpzZXRWaWV3cG9ydEZlYXR1cmUpOgorICAgICAg
ICAqIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5oOgorICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRv
IHBhcnNlIFZpZXdwb3J0QXJndW1lbnRzIHdpdGhvdXQgYSBEb2N1bWVudCwgc28KKyAgICAgICAg
dGhhdCBpdCBjYW4gYmUgdXNlZCBpbiB0aGUgVUkgcHJvY2Vzcy4gV2Ugb25seSB1c2VkIHRoZSBE
b2N1bWVudCBmb3IKKyAgICAgICAgdHdvIHRoaW5nczogZXJyb3IgcmVwb3J0aW5nLCBhbmQgZ2V0
dGluZyB0aGUgc3RhdGUgb2Ygb25lIHNldHRpbmcuCisgICAgICAgIFJlZmFjdG9yIGVycm9yIGhh
bmRsaW5nIHRvIHVzZSBhIHBhc3NlZC1hcnVuZCBmdW5jdGlvbiwgYW5kIGFkZCBhCisgICAgICAg
IHZhcmlhbnQgb2Ygc2V0Vmlld3BvcnRGZWF0dXJlKCkgdGhhdCBkb2Vzbid0IHRha2UgYSBEb2N1
bWVudC4KKwogMjAxOS0wNC0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KIAogICAgICAgICBbaU9TXSBEbyBub3QgYWxsb3cgc3RhcnRpbmcgc2VsZWN0aW9uIGRyYWdz
IHdoZW4gc2VsZWN0aW9uIHZpZXdzIGFyZSBub3QgdmlzaWJsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA0MzE1OWYw
MjlmYjljY2Q1YWQ0MjkyZmEwMTA1ZjNlYTVkYzI2YWQ5Li5lZmU5ZGFiNTZmMzdjZjYwZjEyMzgy
OGU2ZmFkNGYxNDQ0ODM4YzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE5LTA0LTA5
ICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBt
b2Rlcm4gQVBJIGZvciBvdmVycmlkaW5nIHRoZSBwYWdlJ3Mgc3BlY2lmaWVkIHZpZXdwb3J0IGNv
bmZpZ3VyYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NzczNAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzAzMzE3OTU+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgorCisgICAgICAgICogU2hhcmVkL1dlYlBhZ2VDcmVh
dGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlQ3JlYXRpb25Q
YXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmg6CisgICAgICAgIFBsdW1iIG92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMgaW4gV2Vi
UGFnZUNyZWF0aW9uUGFyYW1ldGVycywgc28gdGhhdAorICAgICAgICBpZiB0aGUgcHJvY2VzcyBj
cmFzaGVzIChvciBzd2FwcykgdGhleSBhcmUgbWFpbnRhaW5lZC4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAodmlld3BvcnRBcmd1bWVudHNG
cm9tRGljdGlvbmFyeSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfb3ZlcnJpZGVWaWV3cG9ydFdp
dGhBcmd1bWVudHM6XSk6CisgICAgICAgIEFkZCBTUEkgdG8gc2V0IG92ZXJyaWRlIHZpZXdwb3J0
IGFyZ3VtZW50cy4gUGFyc2UgdGhlbSBpbnRvIGEgVmlld3BvcnRBcmd1bWVudHMKKyAgICAgICAg
b2JqZWN0IGFuZCB1c2UgdGhlIGV4aXN0aW5nIChub3cgaW1wcm92ZWQpIG92ZXJyaWRlVmlld3Bv
cnRBcmd1bWVudHMgbWVjaGFuaXNtCisgICAgICAgIHRvIHRha2Ugb3ZlciB0aGUgcGFnZSdzIHZp
ZXdwb3J0IGFyZ3VtZW50cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldE92ZXJy
aWRlVmlld3BvcnRBcmd1bWVudHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcDoKKyAgICAgICAgUGx1bWIgb3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cyBhcm91bmQg
bW9yZS4KKwogMjAxOS0wNC0wOCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KIAogICAgICAgICBbaU9TXSBEbyBub3QgYWxsb3cgc3RhcnRpbmcgc2VsZWN0aW9uIGRyYWdz
IHdoZW4gc2VsZWN0aW9uIHZpZXdzIGFyZSBub3QgdmlzaWJsZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKaW5kZXggZWY5NjRmYjRlNjk4OWVhYWU1ODdkZjk2YmFjZjA4NWEyNWZhZjNmZC4uMDY0ZWI5
NGM1OGUwMGFjNWI3YWIzOGQ2ZTZmMjQ4MmM5N2IxNzk5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCkBAIC0zNjIxLDcgKzM2MjEsNyBAQCB2b2lkIERvY3VtZW50Ojp1cGRhdGVWaWV3cG9ydEFy
Z3VtZW50cygpCiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBtX2RpZERpc3BhdGNoVmlld3BvcnRQ
cm9wZXJ0aWVzQ2hhbmdlZCA9IHRydWU7CiAjZW5kaWYKLSAgICAgICAgcGFnZSgpLT5jaHJvbWUo
KS5kaXNwYXRjaFZpZXdwb3J0UHJvcGVydGllc0RpZENoYW5nZShtX292ZXJyaWRlVmlld3BvcnRB
cmd1bWVudHMgPyBtX292ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMudmFsdWUoKSA6IG1fdmlld3Bv
cnRBcmd1bWVudHMpOworICAgICAgICBwYWdlKCktPmNocm9tZSgpLmRpc3BhdGNoVmlld3BvcnRQ
cm9wZXJ0aWVzRGlkQ2hhbmdlKHZpZXdwb3J0QXJndW1lbnRzKCkpOwogICAgICAgICBwYWdlKCkt
PmNocm9tZSgpLmRpZFJlY2VpdmVEb2NUeXBlKCpmcmFtZSgpKTsKICAgICB9CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5oCmluZGV4IGQ2N2Y2ZTg4Mzg0OTg0NmI4Zjg3NDIzMThkODQ2NzNjNGRmMmU3ZDku
LjcyMmIwN2Y0MjBjMTllNDgxNDM2ODEzYTkxYzRkZTVhYzdmZjhkZWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCkBAIC00MTEsNyArNDExLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJTZWxlY3Rv
clF1ZXJ5Q2FjaGUoKTsKIAogICAgIHZvaWQgc2V0Vmlld3BvcnRBcmd1bWVudHMoY29uc3QgVmll
d3BvcnRBcmd1bWVudHMmIHZpZXdwb3J0QXJndW1lbnRzKSB7IG1fdmlld3BvcnRBcmd1bWVudHMg
PSB2aWV3cG9ydEFyZ3VtZW50czsgfQotICAgIFZpZXdwb3J0QXJndW1lbnRzIHZpZXdwb3J0QXJn
dW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV92aWV3cG9ydEFyZ3VtZW50czsgfQorICAgIFZpZXdw
b3J0QXJndW1lbnRzIHZpZXdwb3J0QXJndW1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlk
ZVZpZXdwb3J0QXJndW1lbnRzLnZhbHVlT3IobV92aWV3cG9ydEFyZ3VtZW50cyk7IH0KIAogICAg
IFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cyhjb25zdCBP
cHRpb25hbDxWaWV3cG9ydEFyZ3VtZW50cz4mKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9y
dEFyZ3VtZW50cy5jcHAKaW5kZXggZjNhODQ2MTZlNDJlZjc0ZjAxMGZlZDNmZjk4Y2NkMTkzOTNi
MzllYy4uY2M2M2Q5NmVhOWM1NTA0N2ZhNTVlN2Y5NGU5MmIzZDhhOTRmYmEzZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3BwCkBAIC0zOCw2ICszOCw4IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAordHlwZWRlZiBXVEY6OkZ1bmN0aW9uPHZvaWQoVmlld3BvcnRF
cnJvckNvZGUsIFN0cmluZ1ZpZXcsIFN0cmluZ1ZpZXcpPiBJbnRlcm5hbFZpZXdwb3J0RXJyb3JI
YW5kbGVyOworCiAjaWYgUExBVEZPUk0oR1RLKQogY29uc3QgZmxvYXQgVmlld3BvcnRBcmd1bWVu
dHM6OmRlcHJlY2F0ZWRUYXJnZXREUEkgPSAxNjA7CiAjZW5kaWYKQEAgLTI4OCw5ICsyOTAsNyBA
QCB2b2lkIHJlc3RyaWN0U2NhbGVGYWN0b3JUb0luaXRpYWxTY2FsZUlmTm90VXNlclNjYWxhYmxl
KFZpZXdwb3J0QXR0cmlidXRlcyYgcmVzdQogICAgICAgICByZXN1bHQubWF4aW11bVNjYWxlID0g
cmVzdWx0Lm1pbmltdW1TY2FsZSA9IHJlc3VsdC5pbml0aWFsU2NhbGU7CiB9CiAKLXN0YXRpYyB2
b2lkIHJlcG9ydFZpZXdwb3J0V2FybmluZyhEb2N1bWVudCYsIFZpZXdwb3J0RXJyb3JDb2RlLCBT
dHJpbmdWaWV3IHJlcGxhY2VtZW50MSA9IHsgfSwgU3RyaW5nVmlldyByZXBsYWNlbWVudDIgPSB7
IH0pOwotCi1zdGF0aWMgZmxvYXQgbnVtZXJpY1ByZWZpeChEb2N1bWVudCYgZG9jdW1lbnQsIFN0
cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWV3IHZhbHVlLCBib29sKiBvayA9IG51bGxwdHIpCitzdGF0
aWMgZmxvYXQgbnVtZXJpY1ByZWZpeChTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSwg
Y29uc3QgSW50ZXJuYWxWaWV3cG9ydEVycm9ySGFuZGxlciYgZXJyb3JIYW5kbGVyLCBib29sKiBv
ayA9IG51bGxwdHIpCiB7CiAgICAgc2l6ZV90IHBhcnNlZExlbmd0aDsKICAgICBmbG9hdCBudW1l
cmljVmFsdWU7CkBAIC0yOTksMTkgKzI5OSwxOSBAQCBzdGF0aWMgZmxvYXQgbnVtZXJpY1ByZWZp
eChEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWV3IHZhbHVlLAog
ICAgIGVsc2UKICAgICAgICAgbnVtZXJpY1ZhbHVlID0gY2hhcmFjdGVyc1RvRmxvYXQodmFsdWUu
Y2hhcmFjdGVyczE2KCksIHZhbHVlLmxlbmd0aCgpLCBwYXJzZWRMZW5ndGgpOwogICAgIGlmICgh
cGFyc2VkTGVuZ3RoKSB7Ci0gICAgICAgIHJlcG9ydFZpZXdwb3J0V2FybmluZyhkb2N1bWVudCwg
VW5yZWNvZ25pemVkVmlld3BvcnRBcmd1bWVudFZhbHVlRXJyb3IsIHZhbHVlLCBrZXkpOworICAg
ICAgICBlcnJvckhhbmRsZXIoVW5yZWNvZ25pemVkVmlld3BvcnRBcmd1bWVudFZhbHVlRXJyb3Is
IHZhbHVlLCBrZXkpOwogICAgICAgICBpZiAob2spCiAgICAgICAgICAgICAqb2sgPSBmYWxzZTsK
ICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIGlmIChwYXJzZWRMZW5ndGggPCB2YWx1ZS5s
ZW5ndGgoKSkKLSAgICAgICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBUcnVuY2F0
ZWRWaWV3cG9ydEFyZ3VtZW50VmFsdWVFcnJvciwgdmFsdWUsIGtleSk7CisgICAgICAgIGVycm9y
SGFuZGxlcihUcnVuY2F0ZWRWaWV3cG9ydEFyZ3VtZW50VmFsdWVFcnJvciwgdmFsdWUsIGtleSk7
CiAgICAgaWYgKG9rKQogICAgICAgICAqb2sgPSB0cnVlOwogICAgIHJldHVybiBudW1lcmljVmFs
dWU7CiB9CiAKLXN0YXRpYyBmbG9hdCBmaW5kU2l6ZVZhbHVlKERvY3VtZW50JiBkb2N1bWVudCwg
U3RyaW5nVmlldyBrZXksIFN0cmluZ1ZpZXcgdmFsdWUsIGJvb2wqIHZhbHVlV2FzRXhwbGljaXQg
PSBudWxscHRyKQorc3RhdGljIGZsb2F0IGZpbmRTaXplVmFsdWUoU3RyaW5nVmlldyBrZXksIFN0
cmluZ1ZpZXcgdmFsdWUsIGNvbnN0IEludGVybmFsVmlld3BvcnRFcnJvckhhbmRsZXImIGVycm9y
SGFuZGxlciwgYm9vbCogdmFsdWVXYXNFeHBsaWNpdCA9IG51bGxwdHIpCiB7CiAgICAgLy8gMSkg
Tm9uLW5lZ2F0aXZlIG51bWJlciB2YWx1ZXMgYXJlIHRyYW5zbGF0ZWQgdG8gcHggbGVuZ3Rocy4K
ICAgICAvLyAyKSBOZWdhdGl2ZSBudW1iZXIgdmFsdWVzIGFyZSB0cmFuc2xhdGVkIHRvIGF1dG8u
CkBAIC0zMjcsNyArMzI3LDcgQEAgc3RhdGljIGZsb2F0IGZpbmRTaXplVmFsdWUoRG9jdW1lbnQm
IGRvY3VtZW50LCBTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSwKICAgICBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJkZXZpY2UtaGVpZ2h0IikpCiAgICAg
ICAgIHJldHVybiBWaWV3cG9ydEFyZ3VtZW50czo6VmFsdWVEZXZpY2VIZWlnaHQ7CiAKLSAgICBm
bG9hdCBzaXplVmFsdWUgPSBudW1lcmljUHJlZml4KGRvY3VtZW50LCBrZXksIHZhbHVlKTsKKyAg
ICBmbG9hdCBzaXplVmFsdWUgPSBudW1lcmljUHJlZml4KGtleSwgdmFsdWUsIGVycm9ySGFuZGxl
cik7CiAKICAgICBpZiAoc2l6ZVZhbHVlIDwgMCkgewogICAgICAgICBpZiAodmFsdWVXYXNFeHBs
aWNpdCkKQEAgLTMzOCw3ICszMzgsNyBAQCBzdGF0aWMgZmxvYXQgZmluZFNpemVWYWx1ZShEb2N1
bWVudCYgZG9jdW1lbnQsIFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWV3IHZhbHVlLAogICAgIHJl
dHVybiBzaXplVmFsdWU7CiB9CiAKLXN0YXRpYyBmbG9hdCBmaW5kU2NhbGVWYWx1ZShEb2N1bWVu
dCYgZG9jdW1lbnQsIFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWV3IHZhbHVlKQorc3RhdGljIGZs
b2F0IGZpbmRTY2FsZVZhbHVlKFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWV3IHZhbHVlLCBjb25z
dCBJbnRlcm5hbFZpZXdwb3J0RXJyb3JIYW5kbGVyJiBlcnJvckhhbmRsZXIpCiB7CiAgICAgLy8g
MSkgTm9uLW5lZ2F0aXZlIG51bWJlciB2YWx1ZXMgYXJlIHRyYW5zbGF0ZWQgdG8gPG51bWJlcj4g
dmFsdWVzLgogICAgIC8vIDIpIE5lZ2F0aXZlIG51bWJlciB2YWx1ZXMgYXJlIHRyYW5zbGF0ZWQg
dG8gYXV0by4KQEAgLTM1NSwxOCArMzU1LDE4IEBAIHN0YXRpYyBmbG9hdCBmaW5kU2NhbGVWYWx1
ZShEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWV3IHZhbHVlCiAg
ICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAiZGV2aWNlLWhlaWdo
dCIpKQogICAgICAgICByZXR1cm4gMTA7CiAKLSAgICBmbG9hdCBudW1lcmljVmFsdWUgPSBudW1l
cmljUHJlZml4KGRvY3VtZW50LCBrZXksIHZhbHVlKTsKKyAgICBmbG9hdCBudW1lcmljVmFsdWUg
PSBudW1lcmljUHJlZml4KGtleSwgdmFsdWUsIGVycm9ySGFuZGxlcik7CiAKICAgICBpZiAobnVt
ZXJpY1ZhbHVlIDwgMCkKICAgICAgICAgcmV0dXJuIFZpZXdwb3J0QXJndW1lbnRzOjpWYWx1ZUF1
dG87CiAKICAgICBpZiAobnVtZXJpY1ZhbHVlID4gMTAuMCkKLSAgICAgICAgcmVwb3J0Vmlld3Bv
cnRXYXJuaW5nKGRvY3VtZW50LCBNYXhpbXVtU2NhbGVUb29MYXJnZUVycm9yKTsKKyAgICAgICAg
ZXJyb3JIYW5kbGVyKE1heGltdW1TY2FsZVRvb0xhcmdlRXJyb3IsIHsgfSwgeyB9KTsKIAogICAg
IHJldHVybiBudW1lcmljVmFsdWU7CiB9CiAKLXN0YXRpYyBib29sIGZpbmRCb29sZWFuVmFsdWUo
RG9jdW1lbnQmIGRvY3VtZW50LCBTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSkKK3N0
YXRpYyBib29sIGZpbmRCb29sZWFuVmFsdWUoU3RyaW5nVmlldyBrZXksIFN0cmluZ1ZpZXcgdmFs
dWUsIGNvbnN0IEludGVybmFsVmlld3BvcnRFcnJvckhhbmRsZXImIGVycm9ySGFuZGxlcikKIHsK
ICAgICAvLyB5ZXMgYW5kIG5vIGFyZSB1c2VkIGFzIGtleXdvcmRzLgogICAgIC8vIE51bWJlcnMg
Pj0gMSwgbnVtYmVycyA8PSAtMSwgZGV2aWNlLXdpZHRoIGFuZCBkZXZpY2UtaGVpZ2h0IGFyZSBt
YXBwZWQgdG8geWVzLgpAQCAtMzgwLDEwICszODAsMTAgQEAgc3RhdGljIGJvb2wgZmluZEJvb2xl
YW5WYWx1ZShEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWV3IHZh
bHUKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgaWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVND
SUlDYXNlKHZhbHVlLCAiZGV2aWNlLWhlaWdodCIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg
ICByZXR1cm4gc3RkOjphYnMobnVtZXJpY1ByZWZpeChkb2N1bWVudCwga2V5LCB2YWx1ZSkpID49
IDE7CisgICAgcmV0dXJuIHN0ZDo6YWJzKG51bWVyaWNQcmVmaXgoa2V5LCB2YWx1ZSwgZXJyb3JI
YW5kbGVyKSkgPj0gMTsKIH0KIAotc3RhdGljIFZpZXdwb3J0Rml0IHBhcnNlVmlld3BvcnRGaXRW
YWx1ZShEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWV3IHZhbHVl
KQorc3RhdGljIFZpZXdwb3J0Rml0IHBhcnNlVmlld3BvcnRGaXRWYWx1ZShTdHJpbmdWaWV3IGtl
eSwgU3RyaW5nVmlldyB2YWx1ZSwgY29uc3QgSW50ZXJuYWxWaWV3cG9ydEVycm9ySGFuZGxlciYg
ZXJyb3JIYW5kbGVyKQogewogICAgIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZSh2
YWx1ZSwgImF1dG8iKSkKICAgICAgICAgcmV0dXJuIFZpZXdwb3J0Rml0OjpBdXRvOwpAQCAtMzky
LDM5ICszOTIsMTEgQEAgc3RhdGljIFZpZXdwb3J0Rml0IHBhcnNlVmlld3BvcnRGaXRWYWx1ZShE
b2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZ1ZpZXcga2V5LCBTdHIKICAgICBpZiAoZXF1YWxMZXR0
ZXJzSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICJjb3ZlciIpKQogICAgICAgICByZXR1cm4gVmll
d3BvcnRGaXQ6OkNvdmVyOwogCi0gICAgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKGRvY3VtZW50LCBV
bnJlY29nbml6ZWRWaWV3cG9ydEFyZ3VtZW50VmFsdWVFcnJvciwgdmFsdWUsIGtleSk7CisgICAg
ZXJyb3JIYW5kbGVyKFVucmVjb2duaXplZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yLCB2YWx1
ZSwga2V5KTsKIAogICAgIHJldHVybiBWaWV3cG9ydEZpdDo6QXV0bzsKIH0KIAotdm9pZCBzZXRW
aWV3cG9ydEZlYXR1cmUoVmlld3BvcnRBcmd1bWVudHMmIGFyZ3VtZW50cywgRG9jdW1lbnQmIGRv
Y3VtZW50LCBTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSkKLXsKLSAgICBpZiAoZXF1
YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5LCAid2lkdGgiKSkKLSAgICAgICAgYXJndW1l
bnRzLndpZHRoID0gZmluZFNpemVWYWx1ZShkb2N1bWVudCwga2V5LCB2YWx1ZSwgJmFyZ3VtZW50
cy53aWR0aFdhc0V4cGxpY2l0KTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShrZXksICJoZWlnaHQiKSkKLSAgICAgICAgYXJndW1lbnRzLmhlaWdodCA9IGZpbmRT
aXplVmFsdWUoZG9jdW1lbnQsIGtleSwgdmFsdWUpOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKGtleSwgImluaXRpYWwtc2NhbGUiKSkKLSAgICAgICAgYXJndW1l
bnRzLnpvb20gPSBmaW5kU2NhbGVWYWx1ZShkb2N1bWVudCwga2V5LCB2YWx1ZSk7Ci0gICAgZWxz
ZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoa2V5LCAibWluaW11bS1zY2FsZSIp
KQotICAgICAgICBhcmd1bWVudHMubWluWm9vbSA9IGZpbmRTY2FsZVZhbHVlKGRvY3VtZW50LCBr
ZXksIHZhbHVlKTsKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShr
ZXksICJtYXhpbXVtLXNjYWxlIikpCi0gICAgICAgIGFyZ3VtZW50cy5tYXhab29tID0gZmluZFNj
YWxlVmFsdWUoZG9jdW1lbnQsIGtleSwgdmFsdWUpOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVy
c0lnbm9yaW5nQVNDSUlDYXNlKGtleSwgInVzZXItc2NhbGFibGUiKSkKLSAgICAgICAgYXJndW1l
bnRzLnVzZXJab29tID0gZmluZEJvb2xlYW5WYWx1ZShkb2N1bWVudCwga2V5LCB2YWx1ZSk7Ci0j
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShrZXksICJtaW5pbWFsLXVpIikpIHsKLSAgICAgICAgLy8gRklYTUU6IElnbm9y
ZSBzaWxlbnRseSBmb3Igbm93LiBUaGlzIGNvZGUgc2hvdWxkIGV2ZW50dWFsbHkgYmUgcmVtb3Zl
ZAotICAgICAgICAvLyBzbyB3ZSBzdGFydCBnaXZpbmcgdGhlIHdhcm5pbmcgaW4gdGhlIHdlYiBp
bnNwZWN0b3IgYXMgZm9yIG90aGVyIHVuaW1wbGVtZW50ZWQga2V5cy4KLSAgICB9Ci0jZW5kaWYK
LSAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJzaHJpbmst
dG8tZml0IikpCi0gICAgICAgIGFyZ3VtZW50cy5zaHJpbmtUb0ZpdCA9IGZpbmRCb29sZWFuVmFs
dWUoZG9jdW1lbnQsIGtleSwgdmFsdWUpOwotICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGtleSwgInZpZXdwb3J0LWZpdCIpICYmIGRvY3VtZW50LnNldHRpbmdzKCku
dmlld3BvcnRGaXRFbmFibGVkKCkpCi0gICAgICAgIGFyZ3VtZW50cy52aWV3cG9ydEZpdCA9IHBh
cnNlVmlld3BvcnRGaXRWYWx1ZShkb2N1bWVudCwga2V5LCB2YWx1ZSk7Ci0gICAgZWxzZQotICAg
ICAgICByZXBvcnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1lbnQsIFVucmVjb2duaXplZFZpZXdwb3J0
QXJndW1lbnRLZXlFcnJvciwga2V5KTsKLX0KLQogc3RhdGljIGNvbnN0IGNoYXIqIHZpZXdwb3J0
RXJyb3JNZXNzYWdlVGVtcGxhdGUoVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlKQogewogICAg
IHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBlcnJvcnNbXSA9IHsKQEAgLTQ1MiwxMiArNDI0LDgg
QEAgc3RhdGljIE1lc3NhZ2VMZXZlbCB2aWV3cG9ydEVycm9yTWVzc2FnZUxldmVsKFZpZXdwb3J0
RXJyb3JDb2RlIGVycm9yQ29kZSkKICAgICByZXR1cm4gTWVzc2FnZUxldmVsOjpFcnJvcjsKIH0K
IAotdm9pZCByZXBvcnRWaWV3cG9ydFdhcm5pbmcoRG9jdW1lbnQmIGRvY3VtZW50LCBWaWV3cG9y
dEVycm9yQ29kZSBlcnJvckNvZGUsIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQxLCBTdHJpbmdWaWV3
IHJlcGxhY2VtZW50MikKK3N0YXRpYyBTdHJpbmcgdmlld3BvcnRFcnJvck1lc3NhZ2UoVmlld3Bv
cnRFcnJvckNvZGUgZXJyb3JDb2RlLCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50MSwgU3RyaW5nVmll
dyByZXBsYWNlbWVudDIpCiB7Ci0gICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIG51bGwgY2hlY2sg
bmVlZGVkPyBDYW4ndCBhZGRDb25zb2xlTWVzc2FnZSBkZWFsIHdpdGggdGhpcz8KLSAgICBpZiAo
IWRvY3VtZW50LmZyYW1lKCkpCi0gICAgICAgIHJldHVybjsKLQogICAgIFN0cmluZyBtZXNzYWdl
ID0gdmlld3BvcnRFcnJvck1lc3NhZ2VUZW1wbGF0ZShlcnJvckNvZGUpOwogICAgIGlmICghcmVw
bGFjZW1lbnQxLmlzTnVsbCgpKQogICAgICAgICBtZXNzYWdlLnJlcGxhY2UoIiVyZXBsYWNlbWVu
dDEiLCByZXBsYWNlbWVudDEudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKQEAgLTQ2OCwxMCAr
NDM2LDU4IEBAIHZvaWQgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKERvY3VtZW50JiBkb2N1bWVudCwg
Vmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlLCBTdHJpCiAgICAgaWYgKChlcnJvckNvZGUgPT0g
VW5yZWNvZ25pemVkVmlld3BvcnRBcmd1bWVudFZhbHVlRXJyb3IgfHwgZXJyb3JDb2RlID09IFRy
dW5jYXRlZFZpZXdwb3J0QXJndW1lbnRWYWx1ZUVycm9yKSAmJiByZXBsYWNlbWVudDEuY29udGFp
bnMoJzsnKSkKICAgICAgICAgbWVzc2FnZS5hcHBlbmQoIiBOb3RlIHRoYXQgJzsnIGlzIG5vdCBh
IHNlcGFyYXRvciBpbiB2aWV3cG9ydCB2YWx1ZXMuIFRoZSBsaXN0IHNob3VsZCBiZSBjb21tYS1z
ZXBhcmF0ZWQuIik7CiAKKyAgICByZXR1cm4gbWVzc2FnZTsKK30KKworc3RhdGljIHZvaWQgcmVw
b3J0Vmlld3BvcnRXYXJuaW5nKERvY3VtZW50JiBkb2N1bWVudCwgVmlld3BvcnRFcnJvckNvZGUg
ZXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgLy8gRklYTUU6IFdoeSBp
cyB0aGlzIG51bGwgY2hlY2sgbmVlZGVkPyBDYW4ndCBhZGRDb25zb2xlTWVzc2FnZSBkZWFsIHdp
dGggdGhpcz8KKyAgICBpZiAoIWRvY3VtZW50LmZyYW1lKCkpCisgICAgICAgIHJldHVybjsKKwog
ICAgIC8vIEZJWE1FOiBUaGlzIG1lc3NhZ2Ugc2hvdWxkIGJlIG1vdmVkIG9mZiB0aGUgY29uc29s
ZSBvbmNlIGEgc29sdXRpb24gdG8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMzI3NCBleGlzdHMuCiAgICAgZG9jdW1lbnQuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6UmVuZGVyaW5nLCB2aWV3cG9ydEVycm9yTWVzc2FnZUxldmVsKGVycm9yQ29kZSks
IG1lc3NhZ2UpOwogfQogCit2b2lkIHNldFZpZXdwb3J0RmVhdHVyZShWaWV3cG9ydEFyZ3VtZW50
cyYgYXJndW1lbnRzLCBTdHJpbmdWaWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSwgYm9vbCB2aWV3
cG9ydEZpdEVuYWJsZWQsIGNvbnN0IFZpZXdwb3J0RXJyb3JIYW5kbGVyJiBlcnJvckhhbmRsZXIp
Cit7CisgICAgSW50ZXJuYWxWaWV3cG9ydEVycm9ySGFuZGxlciBpbnRlcm5hbEVycm9ySGFuZGxl
ciA9IFsmZXJyb3JIYW5kbGVyXSAoVmlld3BvcnRFcnJvckNvZGUgZXJyb3JDb2RlLCBTdHJpbmdW
aWV3IHJlcGxhY2VtZW50MSwgU3RyaW5nVmlldyByZXBsYWNlbWVudDIpIHsKKyAgICAgICAgZXJy
b3JIYW5kbGVyKGVycm9yQ29kZSwgdmlld3BvcnRFcnJvck1lc3NhZ2UoZXJyb3JDb2RlLCByZXBs
YWNlbWVudDEsIHJlcGxhY2VtZW50MikpOworICAgIH07CisKKyAgICBpZiAoZXF1YWxMZXR0ZXJz
SWdub3JpbmdBU0NJSUNhc2Uoa2V5LCAid2lkdGgiKSkKKyAgICAgICAgYXJndW1lbnRzLndpZHRo
ID0gZmluZFNpemVWYWx1ZShrZXksIHZhbHVlLCBpbnRlcm5hbEVycm9ySGFuZGxlciwgJmFyZ3Vt
ZW50cy53aWR0aFdhc0V4cGxpY2l0KTsKKyAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmlu
Z0FTQ0lJQ2FzZShrZXksICJoZWlnaHQiKSkKKyAgICAgICAgYXJndW1lbnRzLmhlaWdodCA9IGZp
bmRTaXplVmFsdWUoa2V5LCB2YWx1ZSwgaW50ZXJuYWxFcnJvckhhbmRsZXIpOworICAgIGVsc2Ug
aWYgKGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleSwgImluaXRpYWwtc2NhbGUiKSkK
KyAgICAgICAgYXJndW1lbnRzLnpvb20gPSBmaW5kU2NhbGVWYWx1ZShrZXksIHZhbHVlLCBpbnRl
cm5hbEVycm9ySGFuZGxlcik7CisgICAgZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJ
SUNhc2Uoa2V5LCAibWluaW11bS1zY2FsZSIpKQorICAgICAgICBhcmd1bWVudHMubWluWm9vbSA9
IGZpbmRTY2FsZVZhbHVlKGtleSwgdmFsdWUsIGludGVybmFsRXJyb3JIYW5kbGVyKTsKKyAgICBl
bHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJtYXhpbXVtLXNjYWxl
IikpCisgICAgICAgIGFyZ3VtZW50cy5tYXhab29tID0gZmluZFNjYWxlVmFsdWUoa2V5LCB2YWx1
ZSwgaW50ZXJuYWxFcnJvckhhbmRsZXIpOworICAgIGVsc2UgaWYgKGVxdWFsTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGtleSwgInVzZXItc2NhbGFibGUiKSkKKyAgICAgICAgYXJndW1lbnRzLnVz
ZXJab29tID0gZmluZEJvb2xlYW5WYWx1ZShrZXksIHZhbHVlLCBpbnRlcm5hbEVycm9ySGFuZGxl
cik7CisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJ
Z25vcmluZ0FTQ0lJQ2FzZShrZXksICJtaW5pbWFsLXVpIikpIHsKKyAgICAgICAgLy8gRklYTUU6
IElnbm9yZSBzaWxlbnRseSBmb3Igbm93LiBUaGlzIGNvZGUgc2hvdWxkIGV2ZW50dWFsbHkgYmUg
cmVtb3ZlZAorICAgICAgICAvLyBzbyB3ZSBzdGFydCBnaXZpbmcgdGhlIHdhcm5pbmcgaW4gdGhl
IHdlYiBpbnNwZWN0b3IgYXMgZm9yIG90aGVyIHVuaW1wbGVtZW50ZWQga2V5cy4KKyAgICB9Cisj
ZW5kaWYKKyAgICBlbHNlIGlmIChlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShrZXksICJz
aHJpbmstdG8tZml0IikpCisgICAgICAgIGFyZ3VtZW50cy5zaHJpbmtUb0ZpdCA9IGZpbmRCb29s
ZWFuVmFsdWUoa2V5LCB2YWx1ZSwgaW50ZXJuYWxFcnJvckhhbmRsZXIpOworICAgIGVsc2UgaWYg
KGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGtleSwgInZpZXdwb3J0LWZpdCIpICYmIHZp
ZXdwb3J0Rml0RW5hYmxlZCkKKyAgICAgICAgYXJndW1lbnRzLnZpZXdwb3J0Rml0ID0gcGFyc2VW
aWV3cG9ydEZpdFZhbHVlKGtleSwgdmFsdWUsIGludGVybmFsRXJyb3JIYW5kbGVyKTsKKyAgICBl
bHNlCisgICAgICAgIGludGVybmFsRXJyb3JIYW5kbGVyKFVucmVjb2duaXplZFZpZXdwb3J0QXJn
dW1lbnRLZXlFcnJvciwga2V5LCB7IH0pOworfQorCit2b2lkIHNldFZpZXdwb3J0RmVhdHVyZShW
aWV3cG9ydEFyZ3VtZW50cyYgYXJndW1lbnRzLCBEb2N1bWVudCYgZG9jdW1lbnQsIFN0cmluZ1Zp
ZXcga2V5LCBTdHJpbmdWaWV3IHZhbHVlKQoreworICAgIHNldFZpZXdwb3J0RmVhdHVyZShhcmd1
bWVudHMsIGtleSwgdmFsdWUsIGRvY3VtZW50LnNldHRpbmdzKCkudmlld3BvcnRGaXRFbmFibGVk
KCksIFsmXShWaWV3cG9ydEVycm9yQ29kZSBlcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkgeworICAgICAgICByZXBvcnRWaWV3cG9ydFdhcm5pbmcoZG9jdW1lbnQsIGVycm9yQ29kZSwg
bWVzc2FnZSk7CisgICAgfSk7Cit9CisKIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IFZpZXdwb3J0QXJndW1lbnRzJiB2aWV3cG9ydEFyZ3VtZW50cykKIHsKICAg
ICBUZXh0U3RyZWFtOjpJbmRlbnRTY29wZSBpbmRlbnRTY29wZSh0cyk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9WaWV3cG9ydEFyZ3VtZW50cy5oCmluZGV4IDRkYmYwOTNmNmIwMjI5MDNjNDcyNTBkYTFlZjEz
MGQ3ODNiNGJlNzIuLjgyNTA5ODZlNDAwMjJiNGY3YTg2ZDdmZjgxZjhlNDZkMTQxNTM0MWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50cy5oCkBAIC0xNDMsNyArMTQzLDkgQEAg
V0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0cmljdE1pbmltdW1TY2FsZUZhY3RvclRvVmlld3BvcnRT
aXplKFZpZXdwb3J0QXR0cmlidXRlcyYKIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdHJpY3RTY2Fs
ZUZhY3RvclRvSW5pdGlhbFNjYWxlSWZOb3RVc2VyU2NhbGFibGUoVmlld3BvcnRBdHRyaWJ1dGVz
JiByZXN1bHQpOwogV0VCQ09SRV9FWFBPUlQgZmxvYXQgY29tcHV0ZU1pbmltdW1TY2FsZUZhY3Rv
ckZvckNvbnRlbnRDb250YWluZWQoY29uc3QgVmlld3BvcnRBdHRyaWJ1dGVzJiByZXN1bHQsIGNv
bnN0IEludFNpemUmIHZpZXdwb3J0U2l6ZSwgY29uc3QgSW50U2l6ZSYgY29udGVudFNpemUpOwog
Cit0eXBlZGVmIFdURjo6RnVuY3Rpb248dm9pZChWaWV3cG9ydEVycm9yQ29kZSwgY29uc3QgU3Ry
aW5nJik+IFZpZXdwb3J0RXJyb3JIYW5kbGVyOwogdm9pZCBzZXRWaWV3cG9ydEZlYXR1cmUoVmll
d3BvcnRBcmd1bWVudHMmLCBEb2N1bWVudCYsIFN0cmluZ1ZpZXcga2V5LCBTdHJpbmdWaWV3IHZh
bHVlKTsKK1dFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Vmlld3BvcnRGZWF0dXJlKFZpZXdwb3J0QXJn
dW1lbnRzJiwgU3RyaW5nVmlldyBrZXksIFN0cmluZ1ZpZXcgdmFsdWUsIGJvb2wgdmlld3BvcnRG
aXRFbmFibGVkLCBjb25zdCBWaWV3cG9ydEVycm9ySGFuZGxlciYpOwogCiBXVEY6OlRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29uc3QgVmlld3BvcnRBcmd1bWVudHMm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFy
YW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAppbmRleCAxOGIyNWIxYjQ0ZWZiY2IwZDk4M2Q5OTUxN2VmNTU5YjFkNzI5NDk4Li40
N2M2ZWQ2MmJjMGJlYzA4OTY5MDY2OWE0NWQxNjhmMGRjMmFmNTYzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtOTUsNiAr
OTUsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29k
ZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBtYXhpbXVtVW5vYnNjdXJlZFNpemU7
CiAgICAgZW5jb2RlciA8PCBkZXZpY2VPcmllbnRhdGlvbjsKICAgICBlbmNvZGVyIDw8IGtleWJv
YXJkSXNBdHRhY2hlZDsKKyAgICBlbmNvZGVyIDw8IG92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHM7
CiAjZW5kaWYKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBlbmNvZGVyIDw8IHNtYXJ0SW5zZXJ0
RGVsZXRlRW5hYmxlZDsKQEAgLTI3OSw2ICsyODAsMTIgQEAgT3B0aW9uYWw8V2ViUGFnZUNyZWF0
aW9uUGFyYW1ldGVycz4gV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVj
b2QKICAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHBhcmFtZXRlcnMua2V5Ym9hcmRJc0F0dGFjaGVkKSkKICAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKworICAgIE9wdGlvbmFsPE9wdGlvbmFsPFdlYkNvcmU6OlZpZXdwb3J0QXJndW1lbnRz
Pj4gb3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50czsKKyAgICBkZWNvZGVyID4+IG92ZXJyaWRlVmll
d3BvcnRBcmd1bWVudHM7CisgICAgaWYgKCFvdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHBhcmFtZXRlcnMub3ZlcnJpZGVWaWV3cG9y
dEFyZ3VtZW50cyA9IFdURk1vdmUoKm92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMpOwogI2VuZGlm
CiAKICNpZiBQTEFURk9STShDT0NPQSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBh
Z2VDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCBhYjNiOGUwMTAxMzdlNTNmZGZjMDgyMWYzYjIy
ZTI0MzY3MmUzYWYwLi4xNTlmZGVlZGU0ZjkwNmM4NDI2M2JjMzY0NjMxM2I2M2UwZmYyYjlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5o
CkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdpbmF0aW9uLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TY3JvbGxUeXBlcy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckludGVy
ZmFjZUxheW91dERpcmVjdGlvbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVmlld3BvcnRBcmd1bWVu
dHMuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTE1Myw2ICsxNTQsNyBAQCBz
dHJ1Y3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXpl
IG1heGltdW1Vbm9ic2N1cmVkU2l6ZTsKICAgICBpbnQzMl90IGRldmljZU9yaWVudGF0aW9uIHsg
MCB9OwogICAgIGJvb2wga2V5Ym9hcmRJc0F0dGFjaGVkIHsgZmFsc2UgfTsKKyAgICBPcHRpb25h
bDxXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cz4gb3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50czsK
ICNlbmRpZgogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgc21hcnRJbnNlcnREZWxldGVF
bmFibGVkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KaW5kZXggZDg0MTFkMzkyNDUwNDI2MmQ0MmQ1NjAxNWQ1ZTAzM2ExZTI2NzQxYS4uMGM0YWQ2
ODU2ODRkMmUxZDNkNjlmMTExYTcyNzczYWY5ZjI3YWZlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC02MjQ1LDYgKzYyNDUsMzQgQEAg
LSAodm9pZClfY2xlYXJPdmVycmlkZUxheW91dFBhcmFtZXRlcnMKICAgICBfbWF4aW11bVVub2Jz
Y3VyZWRTaXplT3ZlcnJpZGUgPSBDR1NpemVaZXJvOwogfQogCitzdGF0aWMgV1RGOjpPcHRpb25h
bDxXZWJDb3JlOjpWaWV3cG9ydEFyZ3VtZW50cz4gdmlld3BvcnRBcmd1bWVudHNGcm9tRGljdGlv
bmFyeShOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNTdHJpbmcgKj4gKnZpZXdwb3J0QXJndW1l
bnRQYWlycywgYm9vbCB2aWV3cG9ydEZpdEVuYWJsZWQpCit7CisgICAgaWYgKCF2aWV3cG9ydEFy
Z3VtZW50UGFpcnMpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisKKyAgICBXZWJDb3Jl
OjpWaWV3cG9ydEFyZ3VtZW50cyB2aWV3cG9ydEFyZ3VtZW50cyhXZWJDb3JlOjpWaWV3cG9ydEFy
Z3VtZW50czo6Vmlld3BvcnRNZXRhKTsKKworICAgIFt2aWV3cG9ydEFyZ3VtZW50UGFpcnMgZW51
bWVyYXRlS2V5c0FuZE9iamVjdHNVc2luZ0Jsb2NrOm1ha2VCbG9ja1B0cihbJl0gKE5TU3RyaW5n
ICprZXksIE5TU3RyaW5nICp2YWx1ZSwgQk9PTCogc3RvcCkgeworICAgICAgICBpZiAoIVtrZXkg
aXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSB8fCAhW3ZhbHVlIGlzS2luZE9mQ2xhc3M6
W05TU3RyaW5nIGNsYXNzXV0pCisgICAgICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZh
bGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiLVtXS1dlYlZpZXcgX292ZXJyaWRlVmlld3Bv
cnRXaXRoQXJndW1lbnRzOl06IEtleXMgYW5kIHZhbHVlcyBtdXN0IGFsbCBiZSBOU1N0cmluZ3Mu
Il07CisgICAgICAgIFN0cmluZyBrZXlTdHJpbmcgPSBrZXk7CisgICAgICAgIFN0cmluZyB2YWx1
ZVN0cmluZyA9IHZhbHVlOworICAgICAgICBXZWJDb3JlOjpzZXRWaWV3cG9ydEZlYXR1cmUodmll
d3BvcnRBcmd1bWVudHMsIGtleVN0cmluZywgdmFsdWVTdHJpbmcsIHZpZXdwb3J0Rml0RW5hYmxl
ZCwgW10gKFdlYkNvcmU6OlZpZXdwb3J0RXJyb3JDb2RlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVz
c2FnZSkgeworICAgICAgICAgICAgTlNMb2coQCItW1dLV2ViVmlldyBfb3ZlcnJpZGVWaWV3cG9y
dFdpdGhBcmd1bWVudHM6XTogRXJyb3IgcGFyc2luZyB2aWV3cG9ydCBhcmd1bWVudDogJXMiLCBl
cnJvck1lc3NhZ2UudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIH0pOworICAgIH0pLmdldCgpXTsK
KworICAgIHJldHVybiB2aWV3cG9ydEFyZ3VtZW50czsKK30KKworLSAodm9pZClfb3ZlcnJpZGVW
aWV3cG9ydFdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBOU1N0cmluZyAq
PiAqKWFyZ3VtZW50cworeworICAgIGlmICghX3BhZ2UpCisgICAgICAgIHJldHVybjsKKworICAg
IF9wYWdlLT5zZXRPdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKHZpZXdwb3J0QXJndW1lbnRzRnJv
bURpY3Rpb25hcnkoYXJndW1lbnRzLCBfcGFnZS0+cHJlZmVyZW5jZXMoKS52aWV3cG9ydEZpdEVu
YWJsZWQoKSkpOworfQorCiAtIChVSVZpZXcgKilfdmlld0ZvckZpbmRVSQogewogICAgIHJldHVy
biBbc2VsZiB2aWV3Rm9yWm9vbWluZ0luU2Nyb2xsVmlldzpbc2VsZiBzY3JvbGxWaWV3XV07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZh
dGUuaAppbmRleCBiZDM0NGMyNDBiMTYyY2I2ODE0ZWU4YmQ5MTRjOTI2YjgyN2RkMDY5Li40OTk1
ODhjNDU1MGRlMzQ5YzExYTliOTE0OTMwMjdlYjgzOTFiMGRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTI4MSw2
ICsyODEsNyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsK
IC0gKHZvaWQpX3NuYXBzaG90UmVjdDooQ0dSZWN0KXJlY3RJblZpZXdDb29yZGluYXRlcyBpbnRv
SW1hZ2VPZldpZHRoOihDR0Zsb2F0KWltYWdlV2lkdGggY29tcGxldGlvbkhhbmRsZXI6KHZvaWQo
XikoQ0dJbWFnZVJlZikpY29tcGxldGlvbkhhbmRsZXI7CiAKIC0gKHZvaWQpX292ZXJyaWRlTGF5
b3V0UGFyYW1ldGVyc1dpdGhNaW5pbXVtTGF5b3V0U2l6ZTooQ0dTaXplKW1pbmltdW1MYXlvdXRT
aXplIG1heGltdW1Vbm9ic2N1cmVkU2l6ZU92ZXJyaWRlOihDR1NpemUpbWF4aW11bVVub2JzY3Vy
ZWRTaXplT3ZlcnJpZGUgV0tfQVBJX0FWQUlMQUJMRShpb3MoOV8wKSk7CistICh2b2lkKV9vdmVy
cmlkZVZpZXdwb3J0V2l0aEFyZ3VtZW50czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIE5TU3Ry
aW5nICo+ICopYXJndW1lbnRzIFdLX0FQSV9BVkFJTEFCTEUoaW9zKFdLX0lPU19UQkEpKTsKIAog
LSAodm9pZClfY2xlYXJPdmVycmlkZUxheW91dFBhcmFtZXRlcnMgV0tfQVBJX0FWQUlMQUJMRShp
b3MoMTEuMCkpOwogLSAodm9pZClfY2xlYXJJbnRlcmZhY2VPcmllbnRhdGlvbk92ZXJyaWRlIFdL
X0FQSV9BVkFJTEFCTEUoaW9zKDExLjApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCmluZGV4IGJlMTYxMWZlYzBkYzg2MDMyNjc2MzEyZDIzOGZmMDBmZjUyZTBjN2Yu
LmViZDA2NzUwZWI2NmU0MTc0ZDI3NTkxOGZiZjE1N2Q0YTk4ZWNlNzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtNzAyNyw2ICs3MDI3LDcgQEAgV2ViUGFn
ZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6OmNyZWF0aW9uUGFyYW1ldGVycyhXZWJQ
cm9jZXNzUHJveHkmIHByb2MKICAgICBwYXJhbWV0ZXJzLm1heGltdW1Vbm9ic2N1cmVkU2l6ZSA9
IG1fbWF4aW11bVVub2JzY3VyZWRTaXplOwogICAgIHBhcmFtZXRlcnMuZGV2aWNlT3JpZW50YXRp
b24gPSBtX2RldmljZU9yaWVudGF0aW9uOwogICAgIHBhcmFtZXRlcnMua2V5Ym9hcmRJc0F0dGFj
aGVkID0gaXNJbkhhcmR3YXJlS2V5Ym9hcmRNb2RlKCk7CisgICAgcGFyYW1ldGVycy5vdmVycmlk
ZVZpZXdwb3J0QXJndW1lbnRzID0gbV9vdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzOwogI2VuZGlm
CiAKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IDQ2MGExOTMxZWUwMzdjM2M3ZGM3ZDZiNmQ2YzQ1ZjI1YTFjNmI4M2YuLjVkYTMwZTIx
N2ZhMmIyYjhlYTkwMjliZmNiNjM2ZTFlZTZiNDM4ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC05MSw2ICs5MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0
Q2hlY2tpbmcuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRHcmFudWxhcml0eS5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVXNlckludGVyZmFjZUxheW91dERpcmVjdGlvbi5oPgorI2luY2x1ZGUgPFdl
YkNvcmUvVmlld3BvcnRBcmd1bWVudHMuaD4KICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTIx
MTcsNiArMjExOCw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisgICAgT3B0aW9uYWw8V2ViQ29yZTo6Vmlld3BvcnRBcmd1bWVudHM+IG1fb3ZlcnJpZGVW
aWV3cG9ydEFyZ3VtZW50czsKICAgICBWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVJbmZvIG1fbGFz
dFZpc2libGVDb250ZW50UmVjdFVwZGF0ZTsKICAgICB1aW50NjRfdCBtX2ZpcnN0TGF5ZXJUcmVl
VHJhbnNhY3Rpb25JZEFmdGVyRGlkQ29tbWl0TG9hZCB7IDAgfTsKICAgICBpbnQzMl90IG1fZGV2
aWNlT3JpZW50YXRpb24geyAwIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dl
YlBhZ2VQcm94eUlPUy5tbQppbmRleCBmZjhiZjY5YmVkMTI2ODYwMzAyMmJkYjUwMmI2NmFjMTA2
YzA1OGE5Li41YTQ4MzVmZjRhZTBiZjRjMTEwYTYwMWEzMWIwYTE4Y2U2MTU5MzcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTM2NCw2
ICszNjQsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNldERldmljZU9yaWVudGF0aW9uKGludDMy
X3QgZGV2aWNlT3JpZW50YXRpb24pCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRPdmVycmlkZVZp
ZXdwb3J0QXJndW1lbnRzKGNvbnN0IE9wdGlvbmFsPFZpZXdwb3J0QXJndW1lbnRzPiYgdmlld3Bv
cnRBcmd1bWVudHMpCiB7CisgICAgaWYgKHZpZXdwb3J0QXJndW1lbnRzID09IG1fb3ZlcnJpZGVW
aWV3cG9ydEFyZ3VtZW50cykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9vdmVycmlkZVZpZXdw
b3J0QXJndW1lbnRzID0gdmlld3BvcnRBcmd1bWVudHM7CisKICAgICBpZiAoaGFzUnVubmluZ1By
b2Nlc3MoKSkKICAgICAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpTZXRP
dmVycmlkZVZpZXdwb3J0QXJndW1lbnRzKHZpZXdwb3J0QXJndW1lbnRzKSwgbV9wYWdlSUQpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCAw
NjIzM2M3MmMxMWEwOWJiOTUyMDIxZTA4ODlhMmI4ZjA0NzU1MGViLi5iMzE4Y2Q1ZWQwMDUwOTJj
ZDkxNjU0YWI3OWQwMDY2Mzg4NGM2YzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNTM1LDYgKzUzNSw3IEBAIFdlYlBhZ2U6OldlYlBhZ2Uo
dWludDY0X3QgcGFnZUlELCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykK
ICAgICBtX3BhZ2UtPnNldFVzZXJJbnRlcmZhY2VMYXlvdXREaXJlY3Rpb24obV91c2VySW50ZXJm
YWNlTGF5b3V0RGlyZWN0aW9uKTsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIG1fcGFn
ZS0+c2V0VGV4dEF1dG9zaXppbmdXaWR0aChwYXJhbWV0ZXJzLnRleHRBdXRvc2l6aW5nV2lkdGgp
OworICAgIHNldE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMocGFyYW1ldGVycy5vdmVycmlkZVZp
ZXdwb3J0QXJndW1lbnRzKTsKICNlbmRpZgogCiAgICAgcGxhdGZvcm1Jbml0aWFsaXplKCk7CmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzAyYjJi
MzQwMTZiMWI0ZWM5MzAwNDYwYzVlZmQyNTRiYjAzMmZjNy4uN2NkM2ZjMDBkZmY5OTkzOGEzY2Nh
NjA2NWZlNjlhOGRlNzhjZDBjYSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE5LTA0LTA5ICBUaW0gSG9ydG9uICA8
dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBtb2Rlcm4gQVBJIGZvciBv
dmVycmlkaW5nIHRoZSBwYWdlJ3Mgc3BlY2lmaWVkIHZpZXdwb3J0IGNvbmZpZ3VyYXRpb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzczNAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzAzMzE3OTU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2lt
b24gRnJhc2VyLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9PdmVycmlkZVZpZXdwb3J0QXJndW1lbnRzLm1tOiBBZGRlZC4KKwogMjAxOS0wNC0w
OCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9T
XSBEbyBub3QgYWxsb3cgc3RhcnRpbmcgc2VsZWN0aW9uIGRyYWdzIHdoZW4gc2VsZWN0aW9uIHZp
ZXdzIGFyZSBub3QgdmlzaWJsZQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiNjZjNWNjNzYw
Zjg4NDA5YjhlMGYzMjI2ZGU1N2RhYzNkYjU3M2Y5Li4yZWYzNmM0MDdhZjNlOWIyMTc4YjJkOWJl
ZGRlZDQ2YmRjZTk2MGY2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAwLDYgKzEwMCw3
IEBACiAJCTJENzAwNTk5MjFFREE0RDAwMDM0NjNDQiAvKiBPZmZzY3JlZW5XaW5kb3cubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDcwMDU5NzIxRURB
NEQwMDAzNDYzQ0IgLyogT2Zmc2NyZWVuV2luZG93Lm1tICovOyB9OwogCQkyRDdGRDE5MzIyNDE5
MDg3MDA3ODg3RjEgLyogRG9jdW1lbnRFZGl0aW5nQ29udGV4dC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEN0ZEMTkyMjI0MTkwODcwMDc4ODdGMSAv
KiBEb2N1bWVudEVkaXRpbmdDb250ZXh0Lm1tICovOyB9OwogCQkyRDgzOEIxRjFFRUYzQTVDMDA5
Qjk4MEUgLyogV0tDb250ZW50Vmlld0VkaXRpbmdBY3Rpb25zLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ4MzhCMUUxRUVGM0E1QjAwOUI5ODBFIC8q
IFdLQ29udGVudFZpZXdFZGl0aW5nQWN0aW9ucy5tbSAqLzsgfTsKKwkJMkRBMjU4NkYyMjVDNjdE
QzAwQjQ1QzFDIC8qIE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyREEyNTg2RTIyNUM2N0RDMDBCNDVDMUMg
LyogT3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cy5tbSAqLzsgfTsKIAkJMkRBREYyNjMyMUNCOEYz
MjAwM0QzRTNBIC8qIEdldFJlc291cmNlRGF0YS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQURGMjYyMjFDQjhGMzIwMDNEM0UzQSAvKiBHZXRSZXNv
dXJjZURhdGEubW0gKi87IH07CiAJCTJEQjAyMzJGMUU0RTg3MTgwMDcwNzEyMyAvKiBJbnRlcmFj
dGlvbkRlYWRsb2NrQWZ0ZXJDcmFzaC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDJEQjAyMzJFMUU0RTg3MTgwMDcwNzEyMyAvKiBJbnRlcmFjdGlvbkRl
YWRsb2NrQWZ0ZXJDcmFzaC5tbSAqLzsgfTsKIAkJMkRCNjQ3ODgxRjQxNjNENjAwNTFBODlFIC8q
IFdLV2ViVmlld0RvZXNOb3RMb2dEdXJpbmdJbml0aWFsaXphdGlvbi5tbSBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEQjY0Nzg3MUY0MTYxRjcwMDUxQTg5
RSAvKiBXS1dlYlZpZXdEb2VzTm90TG9nRHVyaW5nSW5pdGlhbGl6YXRpb24ubW0gKi87IH07CkBA
IC0xNDU4LDYgKzE0NTksNyBAQAogCQkyRDgxMDRDQjFCRUMxM0U3MDAyMERBNDYgLyogRmluZElu
UGFnZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEZpbmRJblBh
Z2UubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEODM4QjFFMUVFRjNBNUIwMDlC
OTgwRSAvKiBXS0NvbnRlbnRWaWV3RWRpdGluZ0FjdGlvbnMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0NvbnRlbnRWaWV3RWRpdGluZ0FjdGlvbnMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEOUE1M0FFMUIzMUZBOEQwMDc0RDVBQSAvKiBT
aHJpbmtUb0ZpdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNo
cmlua1RvRml0Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkyREEyNTg2RTIyNUM2
N0RDMDBCNDVDMUMgLyogT3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cy5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJEQURGMjYyMjFDQjhGMzIwMDNEM0UzQSAv
KiBHZXRSZXNvdXJjZURhdGEubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBHZXRSZXNvdXJjZURhdGEubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTJE
QjAyMzJFMUU0RTg3MTgwMDcwNzEyMyAvKiBJbnRlcmFjdGlvbkRlYWRsb2NrQWZ0ZXJDcmFzaC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEludGVyYWN0aW9uRGVh
ZGxvY2tBZnRlckNyYXNoLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyREI2NDc4
NzFGNDE2MUY3MDA1MUE4OUUgLyogV0tXZWJWaWV3RG9lc05vdExvZ0R1cmluZ0luaXRpYWxpemF0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tXZWJWaWV3RG9lc05vdExvZ0R1cmluZ0lu
aXRpYWxpemF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjYwOCw2ICsy
NjEwLDcgQEAKIAkJCQkzN0EyMkFBNTFEQ0FBMjcyMDBBRkJGQzQgLyogT2JzZXJ2ZWRSZW5kZXJp
bmdQcm9ncmVzc0V2ZW50c0FmdGVyQ3Jhc2gubW0gKi8sCiAJCQkJQ0VBNkNGMjIxOUNDRjVCRDAw
NjRGNUE3IC8qIE9wZW5BbmRDbG9zZVdpbmRvdy5tbSAqLywKIAkJCQlDRUJDQTEyRTFFM0E2NjAx
MDBDNzMyOTMgLyogT3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kubW0gKi8sCisJCQkJMkRB
MjU4NkUyMjVDNjdEQzAwQjQ1QzFDIC8qIE92ZXJyaWRlVmlld3BvcnRBcmd1bWVudHMubW0gKi8s
CiAJCQkJMkQzQ0EzQTQyMjFERjIzOTAwODhFODAzIC8qIFBhZ2VPdmVybGF5UGx1Z2luLm1tICov
LAogCQkJCUY0NEM3OUZCMjBGOUU1MEMwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuUGx1Z0lu
Lm1tICovLAogCQkJCUY0NEM3OUZEMjBGOUU4NzEwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2Vu
VGVzdHMuaCAqLywKQEAgLTQyMzAsNiArNDIzMyw3IEBACiAJCQkJMkQ3MDA1OTkyMUVEQTREMDAw
MzQ2M0NCIC8qIE9mZnNjcmVlbldpbmRvdy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjI1
MUE0MTFBRjYwMDQ0N0M0QyAvKiBPcGVuQW5kQ2xvc2VXaW5kb3cubW0gaW4gU291cmNlcyAqLywK
IAkJCQlDRUJDQTEyRjFFM0E2NjAxMDBDNzMyOTMgLyogT3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQ
b2xpY3kubW0gaW4gU291cmNlcyAqLywKKwkJCQkyREEyNTg2RjIyNUM2N0RDMDBCNDVDMUMgLyog
T3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0I0REE5
MUM4M0FFNzMwMENDNjkxOCAvKiBQYWdlR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ND
RTdGMDcxQTQxMUFFNjAwNDQ3QzRDIC8qIFBhZ2VMb2FkQmFzaWMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0NDRTdGMDgxQTQxMUFFNjAwNDQ3QzRDIC8qIFBhZ2VMb2FkRGlkQ2hhbmdlTG9jYXRp
b25XaXRoaW5QYWdlRm9yRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL092ZXJyaWRlVmlld3BvcnRBcmd1bWVu
dHMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL092ZXJyaWRlVmll
d3BvcnRBcmd1bWVudHMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2UxMGZhZGI3ODY4Njc1OWE2NTU4OWEwZTM4
MDFiZjg4ZTg1YmU0NQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvT3ZlcnJpZGVWaWV3cG9ydEFyZ3VtZW50cy5tbQpAQCAtMCwwICsxLDc3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9y
bVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9y
dCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLUHJlZmVyZW5jZXMuaD4KKyNp
bXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRy
Lmg+CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKQorCitURVNUKFdlYktpdCwgT3ZlcnJpZGVW
aWV3cG9ydEFyZ3VtZW50cykKK3sKKyAgICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmll
dyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJl
Y3QoMCwgMCwgMjAsIDIwKV0pOworCisgICAgYXV0byBib2R5V2lkdGggPSBeeworICAgICAgICBy
ZXR1cm4gW3dlYlZpZXcgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmJv
ZHkuY2xpZW50V2lkdGgiXTsKKyAgICB9OworCisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRIVE1MU3RyaW5nOkAiPG1ldGEgbmFtZT0ndmlld3BvcnQnIGNvbnRlbnQ9J2luaXRpYWwtc2Nh
bGU9MSc+PGRpdiBpZD0nZGl2V2l0aFZpZXdwb3J0VW5pdHMnIHN0eWxlPSd3aWR0aDogMTAwdnc7
Jz48L2Rpdj4iXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIjIwIiwgYm9keVdpZHRoKCkpOworCisg
ICAgW3dlYlZpZXcgX292ZXJyaWRlVmlld3BvcnRXaXRoQXJndW1lbnRzOkB7IEAid2lkdGgiIDog
QCIxMDAwIiB9XTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIjEwMDAiLCBib2R5V2lkdGgoKSk7CisK
KyAgICBbd2ViVmlldyBfb3ZlcnJpZGVWaWV3cG9ydFdpdGhBcmd1bWVudHM6QHsgQCJ3aWR0aCIg
OiBAIjEwMDAiLCBAImluaXRpYWwtc2NhbGUiOiBAIjEiIH1dOworICAgIFt3ZWJWaWV3IHdhaXRG
b3JOZXh0UHJlc2VudGF0aW9uVXBkYXRlXTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIjEwMDAiLCBi
b2R5V2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKDEuLCBbd2ViVmlldyBzY3JvbGxWaWV3XS56b29t
U2NhbGUpOworCisgICAgW3dlYlZpZXcgX292ZXJyaWRlVmlld3BvcnRXaXRoQXJndW1lbnRzOkB7
IEAid2lkdGgiIDogQCIxMDAwIiwgQCJpbml0aWFsLXNjYWxlIjogQCI1IiB9XTsKKyAgICBbd2Vi
VmlldyB3YWl0Rm9yTmV4dFByZXNlbnRhdGlvblVwZGF0ZV07CisgICAgRVhQRUNUX1dLX1NUUkVR
KCIxMDAwIiwgYm9keVdpZHRoKCkpOworICAgIEVYUEVDVF9FUSg1LiwgW3dlYlZpZXcgc2Nyb2xs
Vmlld10uem9vbVNjYWxlKTsKKworICAgIFt3ZWJWaWV3IF9vdmVycmlkZVZpZXdwb3J0V2l0aEFy
Z3VtZW50czpuaWxdOworICAgIEVYUEVDVF9XS19TVFJFUSgiMjAiLCBib2R5V2lkdGgoKSk7CisK
KyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8bWV0YSBuYW1lPSd2
aWV3cG9ydCcgY29udGVudD0nd2lkdGg9MTAnPjxkaXYgaWQ9J2RpdldpdGhWaWV3cG9ydFVuaXRz
JyBzdHlsZT0nd2lkdGg6IDEwMHZ3Oyc+PC9kaXY+Il07CisgICAgRVhQRUNUX1dLX1NUUkVRKCIx
MCIsIGJvZHlXaWR0aCgpKTsKKworICAgIFt3ZWJWaWV3IF9vdmVycmlkZVZpZXdwb3J0V2l0aEFy
Z3VtZW50czpAeyBAIndpZHRoIiA6IEAiMTAwMCIsIEAiaW5pdGlhbC1zY2FsZSI6IEAiMSIgfV07
CisgICAgRVhQRUNUX1dLX1NUUkVRKCIxMDAwIiwgYm9keVdpZHRoKCkpOworCisgICAgW3dlYlZp
ZXcgX292ZXJyaWRlVmlld3BvcnRXaXRoQXJndW1lbnRzOkB7IEAid2lkdGgiIDogQCJkZXZpY2Ut
d2lkdGgiLCBAImluaXRpYWwtc2NhbGUiOiBAIjEiIH1dOworICAgIEVYUEVDVF9XS19TVFJFUSgi
MjAiLCBib2R5V2lkdGgoKSk7CisKKyAgICBbd2ViVmlldyBfb3ZlcnJpZGVWaWV3cG9ydFdpdGhB
cmd1bWVudHM6QHsgQCJ3aWR0aCIgOiBAIjUwMCIsIEAiaW5pdGlhbC1zY2FsZSI6IEAiMSIsIEAi
Z2FyYmFnZSI6IEAibm9uc2Vuc2UiIH1dOworICAgIEVYUEVDVF9XS19TVFJFUSgiNTAwIiwgYm9k
eVdpZHRoKCkpOworfQorCisjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>