<?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>196339</bug_id>
          
          <creation_ts>2019-03-27 22:12:36 -0700</creation_ts>
          <short_desc>[WinCairo][WK2] WebView should call WebPageProxy::setIntrinsicDeviceScaleFactor for high DPI</short_desc>
          <delta_ts>2024-06-06 22:57:16 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=201361</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=173152</see_also>
          <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>
          <dependson>196340</dependson>
          <blocked>201361</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Fujii Hironori">fujii</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>pvollan</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1522000</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-27 22:12:36 -0700</bug_when>
    <thetext>[WinCairo][WK2] WebView should call WebPageProxy::setIntrinsicDeviceScaleFactor for high DPI

WebView paints tiny texts in high DPI at the moment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522001</commentid>
    <comment_count>1</comment_count>
      <attachid>366152</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-27 22:13:22 -0700</bug_when>
    <thetext>Created attachment 366152
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1522395</commentid>
    <comment_count>2</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-03-29 00:17:29 -0700</bug_when>
    <thetext>In this approach, we need to convert between Windows coordinate system and WebCore coordinate system in so many place.
We can know how much it is by grepping &apos;deviceScaleFactor&apos; in WebKitLegacy Windows port.
This approach seems too complicated for Windows. I filed Bug 196391 for another approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567120</commentid>
    <comment_count>3</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-09-01 22:26:11 -0700</bug_when>
    <thetext>It turned out that there are some problem with Bug 196391 approach.
1. scrool bars aren&apos;t scaled
2. web inspector isn&apos;t scaled

Reopen this. We should implement the same approach with WK1 Windows port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567121</commentid>
    <comment_count>4</comment_count>
      <attachid>366152</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-09-01 22:42:18 -0700</bug_when>
    <thetext>Comment on attachment 366152
WIP patch

This looks reasonable to me. If EWS is happy I suggest landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567132</commentid>
    <comment_count>5</comment_count>
      <attachid>377841</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-09-01 23:34:01 -0700</bug_when>
    <thetext>Created attachment 377841
WIP patch

* Rebased onto ToT
* points in all mouse events should be transformed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567137</commentid>
    <comment_count>6</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-09-02 00:35:08 -0700</bug_when>
    <thetext>* Transformed points in all mouse events
* Transformed web inspector geometry

Issues:

* Caret doesn&apos;t blink. 
* Web inspector renders texts sparsely (same with WebKit1) https://ibb.co/G9XNP9J</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567138</commentid>
    <comment_count>7</comment_count>
      <attachid>377843</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-09-02 00:35:30 -0700</bug_when>
    <thetext>Created attachment 377843
WIP patch

* Transformed points in all mouse events
* Transformed web inspector geometry

* Caret doesn&apos;t blink. Why?
* Web inspector renders texts sparsely (same with WebKit1) https://ibb.co/G9XNP9J</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567139</commentid>
    <comment_count>8</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-09-02 00:54:54 -0700</bug_when>
    <thetext>* Pink noisy lines by scrolling. (Same with WK1) https://ibb.co/y5xcg02</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567141</commentid>
    <comment_count>9</comment_count>
      <attachid>377844</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-09-02 01:16:15 -0700</bug_when>
    <thetext>Created attachment 377844
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567174</commentid>
    <comment_count>10</comment_count>
      <attachid>377847</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-09-02 03:03:12 -0700</bug_when>
    <thetext>Created attachment 377847
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567181</commentid>
    <comment_count>11</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-09-02 03:58:56 -0700</bug_when>
    <thetext>* MouseEvent.screenX and MouseEvent.screenY should be in CSS pixels.

https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/screenX
https://drafts.csswg.org/cssom-view/#web-exposed-screen-area</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567300</commentid>
    <comment_count>12</comment_count>
      <attachid>377874</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-09-03 01:06:22 -0700</bug_when>
    <thetext>Created attachment 377874
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567317</commentid>
    <comment_count>13</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-09-03 03:08:36 -0700</bug_when>
    <thetext>Windows supports fractional device scale factors. Actually, I&apos;m
using 1.5x device scale factor display.

It seems that WebKit has architectural problem for fractional
device scale factors.

In 1.5x DPI, 2x2 CSS pixels are rendered onto 3x3 device pixels.
If WebKit is going to render some text in (1,1) CSS pixel position,
it will be placed in (1.5, 1.5) device pixel position.

Here is test case to demonstrate the problem:
https://jsfiddle.net/fujihiro/2wa4zbhy/1/embedded/result/

At first rendering, all text are shown clear:
https://ibb.co/dthYf8X

But, after repaint texts by hovering all texts, only odd-y-axis positioned texts are blurred and have noisy horizontal lines:
https://ibb.co/ZWncf6z

Brent, do you have a fractional device scale factor display?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567393</commentid>
    <comment_count>14</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2019-09-03 08:56:35 -0700</bug_when>
    <thetext>Fujii -- I think this is indeed a problem. Apple devices are locked in at 1x, 2x, and 3x dimensions, so we have not had to deal with this.

I&apos;ll pull Zalan and Antti in for discussion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568374</commentid>
    <comment_count>15</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-09-05 20:39:00 -0700</bug_when>
    <thetext>Windows WebKit1 also has the fractional scaling factor issue. It repaints the whole scroll area of WebChromeClient::scroll.

Bug 173152 – [Win][HighDPI] Repaint glitches when scrolling.
Bug 193542 – [Win] Scrolling should not repaint dirty region.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569468</commentid>
    <comment_count>16</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2019-09-10 00:23:19 -0700</bug_when>
    <thetext>I compiled and checked ToT Chromium.
It is using page zoom for device scale factor.
page_zoom_factor is 1.5 in LocalFrame::SetPageAndTextZoomFactors in 1.5 device scale factor display.

Callstack:

&gt; blink_core.dll!blink::LocalFrame::SetPageAndTextZoomFactors(float page_zoom_factor, float text_zoom_factor) Line 768	C++
&gt; blink_core.dll!blink::LocalFrame::SetPageZoomFactor(float factor) Line 740	C++
&gt; blink_core.dll!blink::WebViewImpl::PropagateZoomFactorToLocalFrameRoots(blink::Frame * frame, float zoom_factor) Line 2362	C++
&gt; blink_core.dll!blink::WebViewImpl::SetZoomLevel(double zoom_level) Line 2395	C++
&gt; blink_core.dll!blink::WebViewImpl::SetZoomFactorForDeviceScaleFactor(float zoom_factor_for_device_scale_factor) Line 2493	C++
&gt; content.dll!content::RenderWidget::UpdateWebViewWithDeviceScaleFactor() Line 1969	C++
&gt; content.dll!content::RenderWidget::UpdateSurfaceAndScreenInfo(const viz::LocalSurfaceIdAllocation &amp; new_local_surface_id_allocation, const gfx::Rect &amp; compositor_viewport_pixel_rect, const content::ScreenInfo &amp; new_screen_info) Line 2238	C++
&gt; content.dll!content::RenderWidget::SynchronizeVisualProperties(const content::VisualProperties &amp; visual_properties) Line 1654	C++
&gt; content.dll!content::RenderWidget::OnSynchronizeVisualProperties(const content::VisualProperties &amp; visual_properties_from_browser) Line 896	C++
&gt; content.dll!base::DispatchToMethodImpl&lt;content::RenderWidget *,void (content::RenderWidget::*)(const content::VisualProperties &amp;),std::__1::tuple&lt;content::VisualProperties&gt;,0&gt;(content::RenderWidget * const &amp; obj, void(content::RenderWidget::*)(const content::VisualProperties &amp;) method, std::__1::tuple&lt;content::VisualProperties&gt; &amp;&amp; args, std::__1::integer_sequence&lt;unsigned long long,0&gt;) Line 53	C++
&gt; content.dll!base::DispatchToMethod&lt;content::RenderWidget *,void (content::RenderWidget::*)(const content::VisualProperties &amp;),std::__1::tuple&lt;content::VisualProperties&gt; &gt;(content::RenderWidget * const &amp; obj, void(content::RenderWidget::*)(const content::VisualProperties &amp;) method, std::__1::tuple&lt;content::VisualProperties&gt; &amp;&amp; args) Line 60	C++
&gt; content.dll!IPC::DispatchToMethod&lt;content::RenderWidget,void (content::RenderWidget::*)(const content::VisualProperties &amp;),void,std::__1::tuple&lt;content::VisualProperties&gt; &gt;(content::RenderWidget * obj, void(content::RenderWidget::*)(const content::VisualProperties &amp;) method, void *, std::__1::tuple&lt;content::VisualProperties&gt; &amp;&amp; tuple) Line 51	C++
&gt; content.dll!IPC::MessageT&lt;WidgetMsg_SynchronizeVisualProperties_Meta,std::__1::tuple&lt;content::VisualProperties&gt;,void&gt;::Dispatch&lt;content::RenderWidget,content::RenderWidget,void,void (content::RenderWidget::*)(const content::VisualProperties &amp;)&gt;(const IPC::Message * msg, content::RenderWidget * obj, content::RenderWidget * sender, void * parameter, void(content::RenderWidget::*)(const content::VisualProperties &amp;) func) Line 147	C++
&gt; content.dll!content::RenderWidget::OnMessageReceived(const IPC::Message &amp; message) Line 622	C++
&gt; ipc.dll!IPC::MessageRouter::RouteMessage(const IPC::Message &amp; msg) Line 56	C++
&gt; content.dll!content::ChildThreadImpl::ChildThreadMessageRouter::RouteMessage(const IPC::Message &amp; msg) Line 502	C++
&gt; ipc.dll!IPC::MessageRouter::OnMessageReceived(const IPC::Message &amp; msg) Line 48	C++
&gt; content.dll!content::ChildThreadImpl::OnMessageReceived(const IPC::Message &amp; msg) Line 841	C++
&gt; ipc.dll!IPC::ChannelProxy::Context::OnDispatchMessage(const IPC::Message &amp; message) Line 324	C++
&gt; ipc.dll!base::internal::FunctorTraits&lt;void (IPC::ChannelProxy::Context::*)(const IPC::Message &amp;),void&gt;::Invoke&lt;void (IPC::ChannelProxy::Context::*)(const IPC::Message &amp;),scoped_refptr&lt;IPC::ChannelProxy::Context&gt;,IPC::Message&gt;(void(IPC::ChannelProxy::Context::*)(const IPC::Message &amp;) method, scoped_refptr&lt;IPC::ChannelProxy::Context&gt; &amp;&amp; receiver_ptr, IPC::Message &amp;&amp; args) Line 499	C++
&gt; ipc.dll!base::internal::InvokeHelper&lt;0,void&gt;::MakeItSo&lt;void (IPC::ChannelProxy::Context::*)(const IPC::Message &amp;),scoped_refptr&lt;IPC::ChannelProxy::Context&gt;,IPC::Message&gt;(void(IPC::ChannelProxy::Context::*)(const IPC::Message &amp;) &amp;&amp; functor, scoped_refptr&lt;IPC::ChannelProxy::Context&gt; &amp;&amp; args, IPC::Message &amp;&amp; args) Line 599	C++
&gt; ipc.dll!base::internal::Invoker&lt;base::internal::BindState&lt;void (IPC::ChannelProxy::Context::*)(const IPC::Message &amp;),scoped_refptr&lt;IPC::ChannelProxy::Context&gt;,IPC::Message&gt;,void ()&gt;::RunImpl&lt;void (IPC::ChannelProxy::Context::*)(const IPC::Message &amp;),std::__1::tuple&lt;scoped_refptr&lt;IPC::ChannelProxy::Context&gt;,IPC::Message&gt;,0,1&gt;(void(IPC::ChannelProxy::Context::*)(const IPC::Message &amp;) &amp;&amp; functor, std::__1::tuple&lt;scoped_refptr&lt;IPC::ChannelProxy::Context&gt;,IPC::Message&gt; &amp;&amp; bound, std::__1::integer_sequence&lt;unsigned long long,0,1&gt;) Line 672	C++
&gt; ipc.dll!base::internal::Invoker&lt;base::internal::BindState&lt;void (IPC::ChannelProxy::Context::*)(const IPC::Message &amp;),scoped_refptr&lt;IPC::ChannelProxy::Context&gt;,IPC::Message&gt;,void ()&gt;::RunOnce(base::internal::BindStateBase * base) Line 641	C++
&gt; base.dll!base::OnceCallback&lt;void ()&gt;::Run() Line 99	C++
&gt; base.dll!base::TaskAnnotator::RunTask(const char * trace_event_name, base::PendingTask * pending_task) Line 144	C++
&gt; base.dll!base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl(base::sequence_manager::LazyNow * continuation_lazy_now, bool * ran_task) Line 366	C++
&gt; base.dll!base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoSomeWork() Line 221	C++
&gt; base.dll!base::MessagePumpDefault::Run(base::MessagePump::Delegate * delegate) Line 40	C++
&gt; base.dll!base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run(bool application_tasks_allowed, base::TimeDelta timeout) Line 467	C++
&gt; base.dll!base::RunLoop::Run() Line 156	C++
&gt; content.dll!content::RendererMain(const content::MainFunctionParams &amp; parameters) Line 214	C++
&gt; content.dll!content::RunOtherNamedProcessTypeMain(const std::__1::basic_string&lt;char,std::__1::char_traits&lt;char&gt;,std::__1::allocator&lt;char&gt; &gt; &amp; process_type, const content::MainFunctionParams &amp; main_function_params, content::ContentMainDelegate * delegate) Line 581	C++
&gt; content.dll!content::ContentMainRunnerImpl::Run(bool start_service_manager_only) Line 874	C++
&gt; content.dll!content::ContentServiceManagerMainDelegate::RunEmbedderProcess() Line 52	C++
&gt; embedder.dll!service_manager::Main(const service_manager::MainParams &amp; params) Line 423	C++
&gt; content.dll!content::ContentMain(const content::ContentMainParams &amp; params) Line 20	C++
&gt; chrome.dll!ChromeMain(HINSTANCE__ * instance, sandbox::SandboxInterfaceInfo * sandbox_info, __int64 exe_entry_point_ticks) Line 110	C++
&gt; chrome.exe!MainDllLoader::Launch(HINSTANCE__ * instance, base::TimeTicks exe_entry_point_ticks) Line 202	C++
&gt; chrome.exe!wWinMain(HINSTANCE__ * instance, HINSTANCE__ * prev, wchar_t *, int) Line 234	C++
&gt; [External Code]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835804</commentid>
    <comment_count>17</comment_count>
      <attachid>450489</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2022-01-31 18:17:35 -0800</bug_when>
    <thetext>Created attachment 450489
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2036658</commentid>
    <comment_count>18</comment_count>
    <who name="">ryosei.otaka</who>
    <bug_when>2024-05-21 01:11:42 -0700</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/28842</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2040246</commentid>
    <comment_count>19</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-06-06 22:56:13 -0700</bug_when>
    <thetext>Committed 279794@main (b6d35ab492c2): &lt;https://commits.webkit.org/279794@main&gt;

Reviewed commits have been landed. Closing PR #28842 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2040247</commentid>
    <comment_count>20</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2024-06-06 22:57:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/129382860&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366152</attachid>
            <date>2019-03-27 22:13:22 -0700</date>
            <delta_ts>2019-09-01 23:34:13 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>a.diff</filename>
            <type>text/plain</type>
            <size>5550</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwCmluZGV4
IGI1MjJiOTQ2YzY4Li44MTM2MjhhMjg1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy93aW4vUGFnZUNsaWVudEltcGwuY3BwCkBAIC02NywxMCArNjcsNyBAQCBXZWJDb3JlOjpGbG9h
dFBvaW50IFBhZ2VDbGllbnRJbXBsOjp2aWV3U2Nyb2xsUG9zaXRpb24oKQogCiBXZWJDb3JlOjpJ
bnRTaXplIFBhZ2VDbGllbnRJbXBsOjp2aWV3U2l6ZSgpCiB7Ci0gICAgUkVDVCBjbGllbnRSZWN0
OwotICAgIEdldENsaWVudFJlY3QobV92aWV3LndpbmRvdygpLCAmY2xpZW50UmVjdCk7Ci0KLSAg
ICByZXR1cm4gSW50UmVjdChjbGllbnRSZWN0KS5zaXplKCk7CisgICAgcmV0dXJuIG1fdmlldy52
aWV3U2l6ZSgpOwogfQogCiBib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCmluZGV4IDk2MmYzMDJjOTg4
Li40Y2ExMWJiOThiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dl
YlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcApA
QCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ3Vyc29yLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9FZGl0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvR0RJVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IV25kREMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CkBAIC0yMzIsOSArMjMzLDcgQEAgV2ViVmlldzo6V2ViVmlldyhSRUNUIHJlY3Qs
IGNvbnN0IEFQSTo6UGFnZUNvbmZpZ3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIEhXTkQgcGEKICAg
ICBXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wgPSBwYWdlQ29uZmlndXJhdGlvbi0+cHJvY2Vz
c1Bvb2woKTsKICAgICBtX3BhZ2UgPSBwcm9jZXNzUG9vbC0+Y3JlYXRlV2ViUGFnZSgqbV9wYWdl
Q2xpZW50LCBXVEZNb3ZlKHBhZ2VDb25maWd1cmF0aW9uKSk7CiAgICAgbV9wYWdlLT5pbml0aWFs
aXplV2ViUGFnZSgpOwotCi0gICAgaWYgKG1fcGFnZS0+ZHJhd2luZ0FyZWEoKSkKLSAgICAgICAg
bV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5zZXRTaXplKEludFNpemUocmVjdC5yaWdodCAtIHJlY3Qu
bGVmdCwgcmVjdC5ib3R0b20gLSByZWN0LnRvcCkpOworICAgIG1fcGFnZS0+c2V0SW50cmluc2lj
RGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3JGb3JXaW5kb3cobV93aW5kb3cpKTsK
IAogICAgIC8vIEZJWE1FOiBJbml0aWFsaXppbmcgdGhlIHRvb2x0aXAgd2luZG93IGhlcmUgbWF0
Y2hlcyBXZWJLaXQgd2luLCBidXQgc2VlbXMgbGlrZSBzb21ldGhpbmcKICAgICAvLyB3ZSBjb3Vs
ZCBkbyBvbiBkZW1hbmQgdG8gc2F2ZSByZXNvdXJjZXMuCkBAIC00NDksMjUgKzQ0OCwyOSBAQCBM
UkVTVUxUIFdlYlZpZXc6Om9uS2V5RXZlbnQoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJB
TSB3UGFyYW0sIExQQVJBTSBsUGFyYQogICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBk
cmF3UGFnZUJhY2tncm91bmQoSERDIGRjLCBjb25zdCBXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0
IFJFQ1QmIHJlY3QpCitzdGF0aWMgdm9pZCBkcmF3UGFnZUJhY2tncm91bmQoSERDIGRjLCBjb25z
dCBXZWJQYWdlUHJveHkqIHBhZ2UsIEludFJlY3QgcmVjdCkKIHsKICAgICBhdXRvJiBiYWNrZ3Jv
dW5kQ29sb3IgPSBwYWdlLT5iYWNrZ3JvdW5kQ29sb3IoKTsKICAgICBpZiAoIWJhY2tncm91bmRD
b2xvciB8fCBiYWNrZ3JvdW5kQ29sb3IudmFsdWUoKS5pc1Zpc2libGUoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgOjpGaWxsUmVjdChkYywgJnJlY3QsIHJlaW50ZXJwcmV0X2Nhc3Q8SEJSVVNI
PihDT0xPUl9XSU5ET1cgKyAxKSk7CisgICAgcmVjdC5zY2FsZShwYWdlLT5kZXZpY2VTY2FsZUZh
Y3RvcigpKTsKKyAgICBSRUNUIHZpZXdSZWN0KHJlY3QpOworICAgIDo6RmlsbFJlY3QoZGMsICZ2
aWV3UmVjdCwgcmVpbnRlcnByZXRfY2FzdDxIQlJVU0g+KENPTE9SX1dJTkRPVyArIDEpKTsKIH0K
IAogdm9pZCBXZWJWaWV3OjpwYWludChIREMgaGRjLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3Qp
CiB7CiAgICAgaWYgKGRpcnR5UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKKyAgICBh
dXRvIGRldmljZVNjYWxlRmFjdG9yID0gbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAg
IG1fcGFnZS0+ZW5kUHJpbnRpbmcoKTsKICAgICBpZiAoYXV0byogZHJhd2luZ0FyZWEgPSBzdGF0
aWNfY2FzdDxEcmF3aW5nQXJlYVByb3h5Q29vcmRpbmF0ZWRHcmFwaGljcyo+KG1fcGFnZS0+ZHJh
d2luZ0FyZWEoKSkpIHsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwb3J0IFdlYktpdDEn
cyByZWN0IGNvYWxlc2NpbmcgbG9naWMgaGVyZS4KICAgICAgICAgUmVnaW9uIHVucGFpbnRlZFJl
Z2lvbjsKICAgICAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gY2Fpcm9fd2luMzJfc3Vy
ZmFjZV9jcmVhdGUoaGRjKTsKICAgICAgICAgY2Fpcm9fdCogY29udGV4dCA9IGNhaXJvX2NyZWF0
ZShzdXJmYWNlKTsKKyAgICAgICAgY2Fpcm9fc2NhbGUoY29udGV4dCwgZGV2aWNlU2NhbGVGYWN0
b3IsIGRldmljZVNjYWxlRmFjdG9yKTsKIAogICAgICAgICBkcmF3aW5nQXJlYS0+cGFpbnQoY29u
dGV4dCwgZGlydHlSZWN0LCB1bnBhaW50ZWRSZWdpb24pOwogCkBAIC00ODgsNyArNDkxLDkgQEAg
TFJFU1VMVCBXZWJWaWV3OjpvblBhaW50RXZlbnQoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQ
QVJBTSwgTFBBUkFNLCBib29sJiBoYW4KIAogICAgIFBBSU5UU1RSVUNUIHBhaW50U3RydWN0Owog
ICAgIEhEQyBoZGMgPSA6OkJlZ2luUGFpbnQobV93aW5kb3csICZwYWludFN0cnVjdCk7Ci0gICAg
cGFpbnQoaGRjLCBwYWludFN0cnVjdC5yY1BhaW50KTsKKyAgICBJbnRSZWN0IGRpcnR5UmVjdChw
YWludFN0cnVjdC5yY1BhaW50KTsKKyAgICBkaXJ0eVJlY3Quc2NhbGUoMSAvIG1fcGFnZS0+ZGV2
aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgcGFpbnQoaGRjLCBkaXJ0eVJlY3QpOwogCiAgICAgOjpF
bmRQYWludChtX3dpbmRvdywgJnBhaW50U3RydWN0KTsKIApAQCAtNTA4LDE0ICs1MTMsMTQgQEAg
TFJFU1VMVCBXZWJWaWV3OjpvblByaW50Q2xpZW50RXZlbnQoSFdORCBoV25kLCBVSU5ULCBXUEFS
QU0gd1BhcmFtLCBMUEFSQU0sIGJvb2wKICAgICByZXR1cm4gMDsKIH0KIAotTFJFU1VMVCBXZWJW
aWV3OjpvblNpemVFdmVudChIV05ELCBVSU5ULCBXUEFSQU0sIExQQVJBTSBsUGFyYW0sIGJvb2wm
IGhhbmRsZWQpCitMUkVTVUxUIFdlYlZpZXc6Om9uU2l6ZUV2ZW50KEhXTkQgaHduZCwgVUlOVCwg
V1BBUkFNLCBMUEFSQU0gbFBhcmFtLCBib29sJiBoYW5kbGVkKQogewotICAgIGludCB3aWR0aCA9
IExPV09SRChsUGFyYW0pOwotICAgIGludCBoZWlnaHQgPSBISVdPUkQobFBhcmFtKTsKKyAgICBt
X3ZpZXdTaXplID0gSW50U2l6ZShMT1dPUkQobFBhcmFtKSwgSElXT1JEKGxQYXJhbSkpOworICAg
IG1fdmlld1NpemUuc2NhbGUoMSAvIGRldmljZVNjYWxlRmFjdG9yRm9yV2luZG93KGh3bmQpKTsK
IAogICAgIGlmIChtX3BhZ2UgJiYgbV9wYWdlLT5kcmF3aW5nQXJlYSgpKSB7CiAgICAgICAgIC8v
IEZJWE1FIHNwZWNpZnkgY29ycmVjdGx5IGxheWVyUG9zaXRpb24uCi0gICAgICAgIG1fcGFnZS0+
ZHJhd2luZ0FyZWEoKS0+c2V0U2l6ZShJbnRTaXplKHdpZHRoLCBoZWlnaHQpLCBtX25leHRSZXNp
emVTY3JvbGxPZmZzZXQpOworICAgICAgICBtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPnNldFNpemUo
bV92aWV3U2l6ZSwgbV9uZXh0UmVzaXplU2Nyb2xsT2Zmc2V0KTsKICAgICAgICAgbV9uZXh0UmVz
aXplU2Nyb2xsT2Zmc2V0ID0gSW50U2l6ZSgpOwogICAgIH0KIApAQCAtODA5LDEyICs4MTQsMTUg
QEAgdm9pZCBXZWJWaWV3OjpzZXRTY3JvbGxPZmZzZXRPbk5leHRSZXNpemUoY29uc3QgSW50U2l6
ZSYgc2Nyb2xsT2Zmc2V0KQogewogICAgIC8vIFRoZSBuZXh0IHRpbWUgd2UgZ2V0IGEgV01fU0la
RSBtZXNzYWdlLCBzY3JvbGwgYnkgdGhlIHNwZWNpZmllZCBhbW91bnQgaW4gb25TaXplRXZlbnQo
KS4KICAgICBtX25leHRSZXNpemVTY3JvbGxPZmZzZXQgPSBzY3JvbGxPZmZzZXQ7CisgICAgbV9u
ZXh0UmVzaXplU2Nyb2xsT2Zmc2V0LnNjYWxlKDEgLyBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9y
KCkpOwogfQogCiB2b2lkIFdlYlZpZXc6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29y
ZTo6UmVnaW9uJiByZWdpb24pCiB7Ci0gICAgY29uc3QgUkVDVCByID0gcmVnaW9uLmJvdW5kcygp
OwotICAgIDo6SW52YWxpZGF0ZVJlY3QobV93aW5kb3csICZyLCB0cnVlKTsKKyAgICBhdXRvIHJl
Y3QgPSByZWdpb24uYm91bmRzKCk7CisgICAgcmVjdC5zY2FsZShtX3BhZ2UtPmRldmljZVNjYWxl
RmFjdG9yKCkpOworICAgIGNvbnN0IFJFQ1Qgdmlld1JlY3QocmVjdCk7CisgICAgOjpJbnZhbGlk
YXRlUmVjdChtX3dpbmRvdywgJnZpZXdSZWN0LCB0cnVlKTsKIH0KIAogI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dl
YlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmgKaW5kZXggZjRl
ZTU3MDM0ZjEuLjk0ZDNlOTFmNjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy93aW4vV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3
LmgKQEAgLTUzLDYgKzUzLDcgQEAgcHVibGljOgogICAgIEhXTkQgd2luZG93KCkgY29uc3QgeyBy
ZXR1cm4gbV93aW5kb3c7IH0KICAgICB2b2lkIHNldFBhcmVudFdpbmRvdyhIV05EKTsKICAgICB2
b2lkIHdpbmRvd0FuY2VzdHJ5RGlkQ2hhbmdlKCk7CisgICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3
U2l6ZSgpIHsgcmV0dXJuIG1fdmlld1NpemU7IH0KICAgICB2b2lkIHNldElzSW5XaW5kb3coYm9v
bCk7CiAgICAgdm9pZCBzZXRJc1Zpc2libGUoYm9vbCk7CiAgICAgYm9vbCBpc1dpbmRvd0FjdGl2
ZSgpOwpAQCAtMTQ2LDYgKzE0Nyw3IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViS2l0OjpQYWdlQ2xpZW50SW1wbD4gbV9wYWdlQ2xpZW50OwogICAgIFJlZlB0cjxXZWJQYWdl
UHJveHk+IG1fcGFnZTsKKyAgICBXZWJDb3JlOjpJbnRTaXplIG1fdmlld1NpemU7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377841</attachid>
            <date>2019-09-01 23:34:01 -0700</date>
            <delta_ts>2019-09-02 00:35:30 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>wip.diff</filename>
            <type>text/plain</type>
            <size>7087</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwCmluZGV4
IGJlNjFiYmRmZTVlLi5jZDU3NjgwZGM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy93aW4vUGFnZUNsaWVudEltcGwuY3BwCkBAIC02OCwxMCArNjgsNyBAQCBXZWJDb3JlOjpGbG9h
dFBvaW50IFBhZ2VDbGllbnRJbXBsOjp2aWV3U2Nyb2xsUG9zaXRpb24oKQogCiBXZWJDb3JlOjpJ
bnRTaXplIFBhZ2VDbGllbnRJbXBsOjp2aWV3U2l6ZSgpCiB7Ci0gICAgUkVDVCBjbGllbnRSZWN0
OwotICAgIEdldENsaWVudFJlY3QobV92aWV3LndpbmRvdygpLCAmY2xpZW50UmVjdCk7Ci0KLSAg
ICByZXR1cm4gSW50UmVjdChjbGllbnRSZWN0KS5zaXplKCk7CisgICAgcmV0dXJuIG1fdmlldy52
aWV3U2l6ZSgpOwogfQogCiBib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCmluZGV4IDAwMDM1MGNhNWZl
Li5kYzAzNjZjZjAxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dl
YlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmNwcApA
QCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvQ3Vyc29yLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9FZGl0b3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvR0RJVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9IV25kREMuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL0ludFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxl
bWVudGVkLmg+CkBAIC0yNDcsMTcgKzI0OCwxNSBAQCBXZWJWaWV3OjpXZWJWaWV3KFJFQ1QgcmVj
dCwgY29uc3QgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiYgY29uZmlndXJhdGlvbiwgSFdORCBwYQog
ICAgIFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCA9IHBhZ2VDb25maWd1cmF0aW9uLT5wcm9j
ZXNzUG9vbCgpOwogICAgIG1fcGFnZSA9IHByb2Nlc3NQb29sLT5jcmVhdGVXZWJQYWdlKCptX3Bh
Z2VDbGllbnQsIFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24pKTsKICAgICBtX3BhZ2UtPmluaXRp
YWxpemVXZWJQYWdlKCk7CisgICAgbV9wYWdlLT5zZXRJbnRyaW5zaWNEZXZpY2VTY2FsZUZhY3Rv
cihkZXZpY2VTY2FsZUZhY3RvckZvcldpbmRvdyhtX3dpbmRvdykpOwogCi0gICAgSW50U2l6ZSB3
aW5kb3dTaXplKHJlY3QucmlnaHQgLSByZWN0LmxlZnQsIHJlY3QuYm90dG9tIC0gcmVjdC50b3Ap
OwogI2lmIFVTRShESVJFQ1QyRCkKKyAgICBJbnRTaXplIHdpbmRvd1NpemUocmVjdC5yaWdodCAt
IHJlY3QubGVmdCwgcmVjdC5ib3R0b20gLSByZWN0LnRvcCk7CiAgICAgRGlyZWN0MkQ6OmNyZWF0
ZURldmljZUFuZENvbnRleHQobV9kM2REZXZpY2UsIG1faW1tZWRpYXRlQ29udGV4dCk7CiAgICAg
bV9wYWdlLT5zZXREZXZpY2UobV9kM2REZXZpY2UuZ2V0KCkpOwogICAgIHNldHVwU3dhcENoYWlu
KHdpbmRvd1NpemUpOwogI2VuZGlmCiAKLSAgICBpZiAobV9wYWdlLT5kcmF3aW5nQXJlYSgpKQot
ICAgICAgICBtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPnNldFNpemUod2luZG93U2l6ZSk7Ci0KICNp
ZiBFTkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICBtX3BhZ2UtPnNldFVSTFNjaGVtZUhhbmRs
ZXJGb3JTY2hlbWUoUmVtb3RlSW5zcGVjdG9yUHJvdG9jb2xIYW5kbGVyOjpjcmVhdGUoKm1fcGFn
ZSksICJpbnNwZWN0b3IiKTsKICNlbmRpZgpAQCAtNDc1LDI1ICs0NzQsMjkgQEAgTFJFU1VMVCBX
ZWJWaWV3OjpvbktleUV2ZW50KEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFt
LCBMUEFSQU0gbFBhcmEKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgZHJhd1BhZ2VC
YWNrZ3JvdW5kKEhEQyBkYywgY29uc3QgV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBSRUNUJiBy
ZWN0KQorc3RhdGljIHZvaWQgZHJhd1BhZ2VCYWNrZ3JvdW5kKEhEQyBkYywgY29uc3QgV2ViUGFn
ZVByb3h5KiBwYWdlLCBJbnRSZWN0IHJlY3QpCiB7CiAgICAgYXV0byYgYmFja2dyb3VuZENvbG9y
ID0gcGFnZS0+YmFja2dyb3VuZENvbG9yKCk7CiAgICAgaWYgKCFiYWNrZ3JvdW5kQ29sb3IgfHwg
YmFja2dyb3VuZENvbG9yLnZhbHVlKCkuaXNWaXNpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIDo6RmlsbFJlY3QoZGMsICZyZWN0LCByZWludGVycHJldF9jYXN0PEhCUlVTSD4oQ09MT1Jf
V0lORE9XICsgMSkpOworICAgIHJlY3Quc2NhbGUocGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7
CisgICAgUkVDVCB2aWV3UmVjdChyZWN0KTsKKyAgICA6OkZpbGxSZWN0KGRjLCAmdmlld1JlY3Qs
IHJlaW50ZXJwcmV0X2Nhc3Q8SEJSVVNIPihDT0xPUl9XSU5ET1cgKyAxKSk7CiB9CiAKIHZvaWQg
V2ViVmlldzo6cGFpbnQoSERDIGhkYywgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogewogICAg
IGlmIChkaXJ0eVJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CisgICAgYXV0byBkZXZp
Y2VTY2FsZUZhY3RvciA9IG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBtX3BhZ2Ut
PmVuZFByaW50aW5nKCk7CiAgICAgaWYgKGF1dG8qIGRyYXdpbmdBcmVhID0gc3RhdGljX2Nhc3Q8
RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MqPihtX3BhZ2UtPmRyYXdpbmdBcmVh
KCkpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcG9ydCBXZWJLaXQxJ3MgcmVjdCBj
b2FsZXNjaW5nIGxvZ2ljIGhlcmUuCiAgICAgICAgIFJlZ2lvbiB1bnBhaW50ZWRSZWdpb247CiAj
aWYgVVNFKENBSVJPKQogICAgICAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2UgPSBjYWlyb193
aW4zMl9zdXJmYWNlX2NyZWF0ZShoZGMpOworICAgICAgICBjYWlyb19zdXJmYWNlX3NldF9kZXZp
Y2Vfc2NhbGUoc3VyZmFjZSwgZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yKTsK
ICAgICAgICAgY2Fpcm9fdCogY29udGV4dCA9IGNhaXJvX2NyZWF0ZShzdXJmYWNlKTsKIAogICAg
ICAgICBkcmF3aW5nQXJlYS0+cGFpbnQoY29udGV4dCwgZGlydHlSZWN0LCB1bnBhaW50ZWRSZWdp
b24pOwpAQCAtNTI1LDcgKzUyOCw5IEBAIExSRVNVTFQgV2ViVmlldzo6b25QYWludEV2ZW50KEhX
TkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0sIExQQVJBTSwgYm9vbCYgaGFuCiAKICAgICBQ
QUlOVFNUUlVDVCBwYWludFN0cnVjdDsKICAgICBIREMgaGRjID0gOjpCZWdpblBhaW50KG1fd2lu
ZG93LCAmcGFpbnRTdHJ1Y3QpOwotICAgIHBhaW50KGhkYywgcGFpbnRTdHJ1Y3QucmNQYWludCk7
CisgICAgSW50UmVjdCBkaXJ0eVJlY3QocGFpbnRTdHJ1Y3QucmNQYWludCk7CisgICAgZGlydHlS
ZWN0LnNjYWxlKDEgLyBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgIHBhaW50KGhk
YywgZGlydHlSZWN0KTsKIAogICAgIDo6RW5kUGFpbnQobV93aW5kb3csICZwYWludFN0cnVjdCk7
CiAKQEAgLTU0NywxNCArNTUyLDEzIEBAIExSRVNVTFQgV2ViVmlldzo6b25QcmludENsaWVudEV2
ZW50KEhXTkQgaFduZCwgVUlOVCwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNLCBib29sCiAKIExSRVNV
TFQgV2ViVmlldzo6b25TaXplRXZlbnQoSFdORCBod25kLCBVSU5ULCBXUEFSQU0sIExQQVJBTSBs
UGFyYW0sIGJvb2wmIGhhbmRsZWQpCiB7Ci0gICAgaW50IHdpZHRoID0gTE9XT1JEKGxQYXJhbSk7
Ci0gICAgaW50IGhlaWdodCA9IEhJV09SRChsUGFyYW0pOworICAgIG1fdmlld1NpemUgPSBJbnRT
aXplKExPV09SRChsUGFyYW0pLCBISVdPUkQobFBhcmFtKSk7CisgICAgbV92aWV3U2l6ZS5zY2Fs
ZSgxIC8gZGV2aWNlU2NhbGVGYWN0b3JGb3JXaW5kb3coaHduZCkpOwogCi0gICAgSW50U2l6ZSB3
aW5kb3dTaXplKHdpZHRoLCBoZWlnaHQpOwogCiAgICAgaWYgKG1fcGFnZSAmJiBtX3BhZ2UtPmRy
YXdpbmdBcmVhKCkpIHsKICAgICAgICAgLy8gRklYTUUgc3BlY2lmeSBjb3JyZWN0bHkgbGF5ZXJQ
b3NpdGlvbi4KLSAgICAgICAgbV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5zZXRTaXplKHdpbmRvd1Np
emUsIG1fbmV4dFJlc2l6ZVNjcm9sbE9mZnNldCk7CisgICAgICAgIG1fcGFnZS0+ZHJhd2luZ0Fy
ZWEoKS0+c2V0U2l6ZShtX3ZpZXdTaXplLCBtX25leHRSZXNpemVTY3JvbGxPZmZzZXQpOwogICAg
ICAgICBtX25leHRSZXNpemVTY3JvbGxPZmZzZXQgPSBJbnRTaXplKCk7CiAgICAgfQogCkBAIC01
NjksNiArNTczLDcgQEAgTFJFU1VMVCBXZWJWaWV3OjpvblNpemVFdmVudChIV05EIGh3bmQsIFVJ
TlQsIFdQQVJBTSwgTFBBUkFNIGxQYXJhbSwgYm9vbCYgaGFuZGwKICAgICAgICAgSFJFU1VMVCBo
ciA9IG1fc3dhcENoYWluLT5SZXNpemVCdWZmZXJzKDAsIDAsIDAsIERYR0lfRk9STUFUX1VOS05P
V04sIERYR0lfU1dBUF9DSEFJTl9GTEFHX0dESV9DT01QQVRJQkxFKTsKICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoU1VDQ0VFREVEKGhyKSk7CiAKKyAgICAgICAgSW50U2l6ZSB3aW5kb3dTaXplKExP
V09SRChsUGFyYW0pLCBISVdPUkQobFBhcmFtKSk7CiAgICAgICAgIGNvbmZpZ3VyZUJhY2tpbmdT
dG9yZSh3aW5kb3dTaXplKTsKICAgICB9CiAjZW5kaWYKQEAgLTg2MywxMiArODY4LDE1IEBAIHZv
aWQgV2ViVmlldzo6c2V0U2Nyb2xsT2Zmc2V0T25OZXh0UmVzaXplKGNvbnN0IEludFNpemUmIHNj
cm9sbE9mZnNldCkKIHsKICAgICAvLyBUaGUgbmV4dCB0aW1lIHdlIGdldCBhIFdNX1NJWkUgbWVz
c2FnZSwgc2Nyb2xsIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50IGluIG9uU2l6ZUV2ZW50KCkuCiAg
ICAgbV9uZXh0UmVzaXplU2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0OworICAgIG1fbmV4dFJl
c2l6ZVNjcm9sbE9mZnNldC5zY2FsZSgxIC8gbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsK
IH0KIAogdm9pZCBXZWJWaWV3OjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OlJl
Z2lvbiYgcmVnaW9uKQogewotICAgIGNvbnN0IFJFQ1QgciA9IHJlZ2lvbi5ib3VuZHMoKTsKLSAg
ICA6OkludmFsaWRhdGVSZWN0KG1fd2luZG93LCAmciwgdHJ1ZSk7CisgICAgYXV0byByZWN0ID0g
cmVnaW9uLmJvdW5kcygpOworICAgIHJlY3Quc2NhbGUobV9wYWdlLT5kZXZpY2VTY2FsZUZhY3Rv
cigpKTsKKyAgICBjb25zdCBSRUNUIHZpZXdSZWN0KHJlY3QpOworICAgIDo6SW52YWxpZGF0ZVJl
Y3QobV93aW5kb3csICZ2aWV3UmVjdCwgdHJ1ZSk7CiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQ
RV9DT0xPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCmluZGV4IDI3Zjg5NzIw
Y2Q1Li41MjAwNmQxNzg1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2lu
L1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCkBA
IC02NSw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICBIV05EIHdpbmRvdygpIGNvbnN0IHsgcmV0dXJu
IG1fd2luZG93OyB9CiAgICAgdm9pZCBzZXRQYXJlbnRXaW5kb3coSFdORCk7CiAgICAgdm9pZCB3
aW5kb3dBbmNlc3RyeURpZENoYW5nZSgpOworICAgIFdlYkNvcmU6OkludFNpemUgdmlld1NpemUo
KSB7IHJldHVybiBtX3ZpZXdTaXplOyB9CiAgICAgdm9pZCBzZXRJc0luV2luZG93KGJvb2wpOwog
ICAgIHZvaWQgc2V0SXNWaXNpYmxlKGJvb2wpOwogICAgIGJvb2wgaXNXaW5kb3dBY3RpdmUoKTsK
QEAgLTE2Nyw2ICsxNjgsNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktp
dDo6UGFnZUNsaWVudEltcGw+IG1fcGFnZUNsaWVudDsKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5
PiBtX3BhZ2U7CisgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3ZpZXdTaXplOwogI2lmIFVTRShESVJF
Q1QyRCkKICAgICBDT01QdHI8SUQzRDExRGV2aWNlMT4gbV9kM2REZXZpY2U7CiAgICAgQ09NUHRy
PElEM0QxMURldmljZUNvbnRleHQxPiBtX2ltbWVkaWF0ZUNvbnRleHQ7CmRpZmYgLS1naXQgYS9U
b29scy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0QnJvd3NlcldpbmRvdy5jcHAgYi9Ub29scy9NaW5p
QnJvd3Nlci93aW4vV2ViS2l0QnJvd3NlcldpbmRvdy5jcHAKaW5kZXggY2FmYWFhNDE2MWYuLjI2
OWNjZWMzOTA2IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0QnJvd3Nl
cldpbmRvdy5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL1dlYktpdEJyb3dzZXJXaW5k
b3cuY3BwCkBAIC0xNTksNyArMTU5LDYgQEAgV2ViS2l0QnJvd3NlcldpbmRvdzo6V2ViS2l0QnJv
d3NlcldpbmRvdyhCcm93c2VyV2luZG93Q2xpZW50JiBjbGllbnQsIFdLUGFnZUNvbmYKICAgICBX
S1BhZ2VTZXRQYWdlU3RhdGVDbGllbnQocGFnZSwgJnN0YXRlQ2xpZW50LmJhc2UpOwogCiAgICAg
dXBkYXRlUHJveHlTZXR0aW5ncygpOwotICAgIHJlc2V0Wm9vbSgpOwogfQogCiB2b2lkIFdlYktp
dEJyb3dzZXJXaW5kb3c6OnVwZGF0ZVByb3h5U2V0dGluZ3MoKQpAQCAtMjgxLDcgKzI4MCw3IEBA
IHZvaWQgV2ViS2l0QnJvd3NlcldpbmRvdzo6dXBkYXRlU3RhdGlzdGljcyhIV05EIGhEbGcpCiB2
b2lkIFdlYktpdEJyb3dzZXJXaW5kb3c6OnJlc2V0Wm9vbSgpCiB7CiAgICAgYXV0byBwYWdlID0g
V0tWaWV3R2V0UGFnZShtX3ZpZXcuZ2V0KCkpOwotICAgIFdLUGFnZVNldFBhZ2Vab29tRmFjdG9y
KHBhZ2UsIFdlYkNvcmU6OmRldmljZVNjYWxlRmFjdG9yRm9yV2luZG93KGh3bmQoKSkpOworICAg
IFdLUGFnZVNldFBhZ2Vab29tRmFjdG9yKHBhZ2UsIDEpOwogfQogCiB2b2lkIFdlYktpdEJyb3dz
ZXJXaW5kb3c6Onpvb21JbigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377843</attachid>
            <date>2019-09-02 00:35:30 -0700</date>
            <delta_ts>2019-09-02 01:16:15 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>wip.diff</filename>
            <type>text/plain</type>
            <size>11431</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwCmluZGV4
IGJlNjFiYmRmZTVlLi5jZDU3NjgwZGM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy93aW4vUGFnZUNsaWVudEltcGwuY3BwCkBAIC02OCwxMCArNjgsNyBAQCBXZWJDb3JlOjpGbG9h
dFBvaW50IFBhZ2VDbGllbnRJbXBsOjp2aWV3U2Nyb2xsUG9zaXRpb24oKQogCiBXZWJDb3JlOjpJ
bnRTaXplIFBhZ2VDbGllbnRJbXBsOjp2aWV3U2l6ZSgpCiB7Ci0gICAgUkVDVCBjbGllbnRSZWN0
OwotICAgIEdldENsaWVudFJlY3QobV92aWV3LndpbmRvdygpLCAmY2xpZW50UmVjdCk7Ci0KLSAg
ICByZXR1cm4gSW50UmVjdChjbGllbnRSZWN0KS5zaXplKCk7CisgICAgcmV0dXJuIG1fdmlldy52
aWV3U2l6ZSgpOwogfQogCiBib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkNvbnRleHRNZW51
UHJveHlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkNvbnRleHRNZW51
UHJveHlXaW4uY3BwCmluZGV4IGFhMTcxZjQ4YmM0Li4zM2QxZTdjNDFkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkNvbnRleHRNZW51UHJveHlXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJDb250ZXh0TWVudVByb3h5V2luLmNw
cApAQCAtMTAzLDcgKzEwMyw5IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eVdpbjo6c2hvd0Nv
bnRleHRNZW51V2l0aEl0ZW1zKFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJCiAgICAgcG9wdWxh
dGUobV9jb250ZXh0LCBtX21lbnUsIGl0ZW1zKTsKIAogICAgIFVJTlQgZmxhZ3MgPSBUUE1fUklH
SFRCVVRUT04gfCBUUE1fVE9QQUxJR04gfCBUUE1fVkVSUE9TQU5JTUFUSU9OIHwgVFBNX0hPUkla
T05UQUwgfCBUUE1fTEVGVEFMSUdOIHwgVFBNX0hPUlBPU0FOSU1BVElPTjsKLSAgICBQT0lOVCBw
dCB7IG1fY29udGV4dC5tZW51TG9jYXRpb24oKS54KCksIG1fY29udGV4dC5tZW51TG9jYXRpb24o
KS55KCkgfTsKKyAgICBhdXRvIGxvY2F0aW9uID0gbV9jb250ZXh0Lm1lbnVMb2NhdGlvbigpOwor
ICAgIGxvY2F0aW9uLnNjYWxlKG1fcGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICBQT0lO
VCBwdCA9IGxvY2F0aW9uOwogICAgIEhXTkQgd25kID0gbV9wYWdlLnZpZXdXaWRnZXQoKTsKICAg
ICA6OkNsaWVudFRvU2NyZWVuKHduZCwgJnB0KTsKICAgICA6OlRyYWNrUG9wdXBNZW51RXgobV9t
ZW51LCBmbGFncywgcHQueCwgcHQueSwgbV9wYWdlLnZpZXdXaWRnZXQoKSwgbnVsbHB0cik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlX
aW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2lu
LmNwcAppbmRleCBkYjkyZTEyMzc1Mi4uMzExMTI2MGI2MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcApAQCAtMzgsNiAr
MzgsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9HRElVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9XZWJDb3JlQnVuZGxlV2luLmg+CkBAIC0yOTgsMTYgKzI5OSwxOCBAQCBTdHJp
bmcgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvckJhc2VVUkwoKQogCiB1bnNpZ25lZCBXZWJJ
bnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dIZWlnaHQoKQogeworICAgIGF1
dG8gZGV2aWNlU2NhbGVGYWN0b3IgPSBXZWJDb3JlOjpkZXZpY2VTY2FsZUZhY3RvckZvcldpbmRv
dyhtX2luc3BlY3RvclZpZXdXaW5kb3cpOwogICAgIFJFQ1QgcmVjdDsKICAgICA6OkdldENsaWVu
dFJlY3QobV9pbnNwZWN0ZWRWaWV3V2luZG93LCAmcmVjdCk7Ci0gICAgcmV0dXJuIHJlY3QuYm90
dG9tIC0gcmVjdC50b3A7CisgICAgcmV0dXJuIChyZWN0LmJvdHRvbSAtIHJlY3QudG9wKSAvIGRl
dmljZVNjYWxlRmFjdG9yOwogfQogCiB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1JbnNwZWN0ZWRXaW5kb3dXaWR0aCgpCiB7CisgICAgYXV0byBkZXZpY2VTY2FsZUZhY3RvciA9
IFdlYkNvcmU6OmRldmljZVNjYWxlRmFjdG9yRm9yV2luZG93KG1faW5zcGVjdG9yVmlld1dpbmRv
dyk7CiAgICAgUkVDVCByZWN0OwogICAgIDo6R2V0Q2xpZW50UmVjdChtX2luc3BlY3RlZFZpZXdX
aW5kb3csICZyZWN0KTsKLSAgICByZXR1cm4gcmVjdC5yaWdodCAtIHJlY3QubGVmdDsKKyAgICBy
ZXR1cm4gKHJlY3QucmlnaHQgLSByZWN0LmxlZnQpIC8gZGV2aWNlU2NhbGVGYWN0b3I7CiB9CiAK
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKCkKQEAgLTM2MSw2ICszNjQs
NyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybURldGFjaCgpCiAKIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQg
aGVpZ2h0KQogeworICAgIGhlaWdodCAqPSBXZWJDb3JlOjpkZXZpY2VTY2FsZUZhY3RvckZvcldp
bmRvdyhtX2luc3BlY3RvclZpZXdXaW5kb3cpOwogICAgIGF1dG8gd2luZG93SW5mbyA9IGdldElu
c3BlY3RlZFdpbmRvd0luZm8obV9pbnNwZWN0ZWRWaWV3V2luZG93LCBtX2luc3BlY3RlZFZpZXdQ
YXJlbnRXaW5kb3cpOwogICAgIDo6U2V0V2luZG93UG9zKG1faW5zcGVjdG9yVmlld1dpbmRvdywg
MCwgd2luZG93SW5mby5sZWZ0LCB3aW5kb3dJbmZvLnBhcmVudEhlaWdodCAtIGhlaWdodCwgd2lu
ZG93SW5mby5wYXJlbnRXaWR0aCAtIHdpbmRvd0luZm8ubGVmdCwgaGVpZ2h0LCBTV1BfTk9aT1JE
RVIpOwogICAgIDo6U2V0V2luZG93UG9zKG1faW5zcGVjdGVkVmlld1dpbmRvdywgMCwgd2luZG93
SW5mby5sZWZ0LCB3aW5kb3dJbmZvLnRvcCwgd2luZG93SW5mby5wYXJlbnRXaWR0aCAtIHdpbmRv
d0luZm8ubGVmdCwgd2luZG93SW5mby5wYXJlbnRIZWlnaHQgLSB3aW5kb3dJbmZvLnRvcCwgU1dQ
X05PWk9SREVSKTsKQEAgLTM2OCw2ICszNzIsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybVNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKIAogdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVk
IHdpZHRoKQogeworICAgIHdpZHRoICo9IFdlYkNvcmU6OmRldmljZVNjYWxlRmFjdG9yRm9yV2lu
ZG93KG1faW5zcGVjdG9yVmlld1dpbmRvdyk7CiAgICAgYXV0byB3aW5kb3dJbmZvID0gZ2V0SW5z
cGVjdGVkV2luZG93SW5mbyhtX2luc3BlY3RlZFZpZXdXaW5kb3csIG1faW5zcGVjdGVkVmlld1Bh
cmVudFdpbmRvdyk7CiAgICAgOjpTZXRXaW5kb3dQb3MobV9pbnNwZWN0b3JWaWV3V2luZG93LCAw
LCB3aW5kb3dJbmZvLnBhcmVudFdpZHRoIC0gd2lkdGgsIHdpbmRvd0luZm8udG9wLCB3aWR0aCwg
d2luZG93SW5mby5wYXJlbnRIZWlnaHQgLSB3aW5kb3dJbmZvLnRvcCwgU1dQX05PWk9SREVSKTsK
ICAgICA6OlNldFdpbmRvd1BvcyhtX2luc3BlY3RlZFZpZXdXaW5kb3csIDAsIHdpbmRvd0luZm8u
bGVmdCwgd2luZG93SW5mby50b3AsIHdpbmRvd0luZm8ucGFyZW50V2lkdGggLSB3aW5kb3dJbmZv
LmxlZnQsIHdpbmRvd0luZm8ucGFyZW50SGVpZ2h0IC0gd2luZG93SW5mby50b3AsIFNXUF9OT1pP
UkRFUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKaW5kZXggMDAwMzUw
Y2E1ZmUuLjczNGE3OTA3ZDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93
aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcu
Y3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbmNs
dWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+Cisj
aW5jbHVkZSA8V2ViQ29yZS9HRElVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hXbmRE
Qy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90
SW1wbGVtZW50ZWQuaD4KQEAgLTI0NywxNyArMjQ4LDE1IEBAIFdlYlZpZXc6OldlYlZpZXcoUkVD
VCByZWN0LCBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBIV05E
IHBhCiAgICAgV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sID0gcGFnZUNvbmZpZ3VyYXRpb24t
PnByb2Nlc3NQb29sKCk7CiAgICAgbV9wYWdlID0gcHJvY2Vzc1Bvb2wtPmNyZWF0ZVdlYlBhZ2Uo
Km1fcGFnZUNsaWVudCwgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogICAgIG1fcGFnZS0+
aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKKyAgICBtX3BhZ2UtPnNldEludHJpbnNpY0RldmljZVNjYWxl
RmFjdG9yKGRldmljZVNjYWxlRmFjdG9yRm9yV2luZG93KG1fd2luZG93KSk7CiAKLSAgICBJbnRT
aXplIHdpbmRvd1NpemUocmVjdC5yaWdodCAtIHJlY3QubGVmdCwgcmVjdC5ib3R0b20gLSByZWN0
LnRvcCk7CiAjaWYgVVNFKERJUkVDVDJEKQorICAgIEludFNpemUgd2luZG93U2l6ZShyZWN0LnJp
Z2h0IC0gcmVjdC5sZWZ0LCByZWN0LmJvdHRvbSAtIHJlY3QudG9wKTsKICAgICBEaXJlY3QyRDo6
Y3JlYXRlRGV2aWNlQW5kQ29udGV4dChtX2QzZERldmljZSwgbV9pbW1lZGlhdGVDb250ZXh0KTsK
ICAgICBtX3BhZ2UtPnNldERldmljZShtX2QzZERldmljZS5nZXQoKSk7CiAgICAgc2V0dXBTd2Fw
Q2hhaW4od2luZG93U2l6ZSk7CiAjZW5kaWYKIAotICAgIGlmIChtX3BhZ2UtPmRyYXdpbmdBcmVh
KCkpCi0gICAgICAgIG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+c2V0U2l6ZSh3aW5kb3dTaXplKTsK
LQogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIG1fcGFnZS0+c2V0VVJMU2NoZW1l
SGFuZGxlckZvclNjaGVtZShSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OmNyZWF0ZSgq
bV9wYWdlKSwgImluc3BlY3RvciIpOwogI2VuZGlmCkBAIC0zNTAsNiArMzQ5LDI1IEBAIHZvaWQg
V2ViVmlldzo6d2luZG93QW5jZXN0cnlEaWRDaGFuZ2UoKQogCiBMUkVTVUxUIFdlYlZpZXc6Om9u
TW91c2VFdmVudChIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFN
IGxQYXJhbSwgYm9vbCYgaGFuZGxlZCkKIHsKKyAgICBzd2l0Y2ggKG1lc3NhZ2UpIHsKKyAgICBj
YXNlIFdNX0xCVVRUT05ET1dOOgorICAgIGNhc2UgV01fTUJVVFRPTkRPV046CisgICAgY2FzZSBX
TV9SQlVUVE9ORE9XTjoKKyAgICBjYXNlIFdNX0xCVVRUT05VUDoKKyAgICBjYXNlIFdNX01CVVRU
T05VUDoKKyAgICBjYXNlIFdNX1JCVVRUT05VUDoKKyAgICBjYXNlIFdNX01PVVNFTU9WRToKKyAg
ICBjYXNlIFdNX0xCVVRUT05EQkxDTEs6CisgICAgY2FzZSBXTV9NQlVUVE9OREJMQ0xLOgorICAg
IGNhc2UgV01fUkJVVFRPTkRCTENMSzoKKyAgICAgICAgbFBhcmFtID0gbWFrZVNjYWxlZFBvaW50
KE1BS0VQT0lOVFMobFBhcmFtKSwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBXTV9NT1VTRUxFQVZFOgorICAgICAgICBicmVhazsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKICAgICBOYXRp
dmVXZWJNb3VzZUV2ZW50IG1vdXNlRXZlbnQgPSBOYXRpdmVXZWJNb3VzZUV2ZW50KGhXbmQsIG1l
c3NhZ2UsIHdQYXJhbSwgbFBhcmFtLCBtX3dhc0FjdGl2YXRlZEJ5TW91c2VFdmVudCk7CiAgICAg
c2V0V2FzQWN0aXZhdGVkQnlNb3VzZUV2ZW50KGZhbHNlKTsKIApAQCAtNDc1LDI1ICs0OTMsMjkg
QEAgTFJFU1VMVCBXZWJWaWV3OjpvbktleUV2ZW50KEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBX
UEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmEKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIHZv
aWQgZHJhd1BhZ2VCYWNrZ3JvdW5kKEhEQyBkYywgY29uc3QgV2ViUGFnZVByb3h5KiBwYWdlLCBj
b25zdCBSRUNUJiByZWN0KQorc3RhdGljIHZvaWQgZHJhd1BhZ2VCYWNrZ3JvdW5kKEhEQyBkYywg
Y29uc3QgV2ViUGFnZVByb3h5KiBwYWdlLCBJbnRSZWN0IHJlY3QpCiB7CiAgICAgYXV0byYgYmFj
a2dyb3VuZENvbG9yID0gcGFnZS0+YmFja2dyb3VuZENvbG9yKCk7CiAgICAgaWYgKCFiYWNrZ3Jv
dW5kQ29sb3IgfHwgYmFja2dyb3VuZENvbG9yLnZhbHVlKCkuaXNWaXNpYmxlKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIDo6RmlsbFJlY3QoZGMsICZyZWN0LCByZWludGVycHJldF9jYXN0PEhC
UlVTSD4oQ09MT1JfV0lORE9XICsgMSkpOworICAgIHJlY3Quc2NhbGUocGFnZS0+ZGV2aWNlU2Nh
bGVGYWN0b3IoKSk7CisgICAgUkVDVCB2aWV3UmVjdChyZWN0KTsKKyAgICA6OkZpbGxSZWN0KGRj
LCAmdmlld1JlY3QsIHJlaW50ZXJwcmV0X2Nhc3Q8SEJSVVNIPihDT0xPUl9XSU5ET1cgKyAxKSk7
CiB9CiAKIHZvaWQgV2ViVmlldzo6cGFpbnQoSERDIGhkYywgY29uc3QgSW50UmVjdCYgZGlydHlS
ZWN0KQogewogICAgIGlmIChkaXJ0eVJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47Cisg
ICAgYXV0byBkZXZpY2VTY2FsZUZhY3RvciA9IG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsK
ICAgICBtX3BhZ2UtPmVuZFByaW50aW5nKCk7CiAgICAgaWYgKGF1dG8qIGRyYXdpbmdBcmVhID0g
c3RhdGljX2Nhc3Q8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MqPihtX3BhZ2Ut
PmRyYXdpbmdBcmVhKCkpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcG9ydCBXZWJL
aXQxJ3MgcmVjdCBjb2FsZXNjaW5nIGxvZ2ljIGhlcmUuCiAgICAgICAgIFJlZ2lvbiB1bnBhaW50
ZWRSZWdpb247CiAjaWYgVVNFKENBSVJPKQogICAgICAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZh
Y2UgPSBjYWlyb193aW4zMl9zdXJmYWNlX2NyZWF0ZShoZGMpOworICAgICAgICBjYWlyb19zdXJm
YWNlX3NldF9kZXZpY2Vfc2NhbGUoc3VyZmFjZSwgZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNj
YWxlRmFjdG9yKTsKICAgICAgICAgY2Fpcm9fdCogY29udGV4dCA9IGNhaXJvX2NyZWF0ZShzdXJm
YWNlKTsKIAogICAgICAgICBkcmF3aW5nQXJlYS0+cGFpbnQoY29udGV4dCwgZGlydHlSZWN0LCB1
bnBhaW50ZWRSZWdpb24pOwpAQCAtNTI1LDcgKzU0Nyw5IEBAIExSRVNVTFQgV2ViVmlldzo6b25Q
YWludEV2ZW50KEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0sIExQQVJBTSwgYm9vbCYg
aGFuCiAKICAgICBQQUlOVFNUUlVDVCBwYWludFN0cnVjdDsKICAgICBIREMgaGRjID0gOjpCZWdp
blBhaW50KG1fd2luZG93LCAmcGFpbnRTdHJ1Y3QpOwotICAgIHBhaW50KGhkYywgcGFpbnRTdHJ1
Y3QucmNQYWludCk7CisgICAgSW50UmVjdCBkaXJ0eVJlY3QocGFpbnRTdHJ1Y3QucmNQYWludCk7
CisgICAgZGlydHlSZWN0LnNjYWxlKDEgLyBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOwor
ICAgIHBhaW50KGhkYywgZGlydHlSZWN0KTsKIAogICAgIDo6RW5kUGFpbnQobV93aW5kb3csICZw
YWludFN0cnVjdCk7CiAKQEAgLTU0NywxNCArNTcxLDEzIEBAIExSRVNVTFQgV2ViVmlldzo6b25Q
cmludENsaWVudEV2ZW50KEhXTkQgaFduZCwgVUlOVCwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNLCBi
b29sCiAKIExSRVNVTFQgV2ViVmlldzo6b25TaXplRXZlbnQoSFdORCBod25kLCBVSU5ULCBXUEFS
QU0sIExQQVJBTSBsUGFyYW0sIGJvb2wmIGhhbmRsZWQpCiB7Ci0gICAgaW50IHdpZHRoID0gTE9X
T1JEKGxQYXJhbSk7Ci0gICAgaW50IGhlaWdodCA9IEhJV09SRChsUGFyYW0pOworICAgIG1fdmll
d1NpemUgPSBJbnRTaXplKExPV09SRChsUGFyYW0pLCBISVdPUkQobFBhcmFtKSk7CisgICAgbV92
aWV3U2l6ZS5zY2FsZSgxIC8gZGV2aWNlU2NhbGVGYWN0b3JGb3JXaW5kb3coaHduZCkpOwogCi0g
ICAgSW50U2l6ZSB3aW5kb3dTaXplKHdpZHRoLCBoZWlnaHQpOwogCiAgICAgaWYgKG1fcGFnZSAm
JiBtX3BhZ2UtPmRyYXdpbmdBcmVhKCkpIHsKICAgICAgICAgLy8gRklYTUUgc3BlY2lmeSBjb3Jy
ZWN0bHkgbGF5ZXJQb3NpdGlvbi4KLSAgICAgICAgbV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5zZXRT
aXplKHdpbmRvd1NpemUsIG1fbmV4dFJlc2l6ZVNjcm9sbE9mZnNldCk7CisgICAgICAgIG1fcGFn
ZS0+ZHJhd2luZ0FyZWEoKS0+c2V0U2l6ZShtX3ZpZXdTaXplLCBtX25leHRSZXNpemVTY3JvbGxP
ZmZzZXQpOwogICAgICAgICBtX25leHRSZXNpemVTY3JvbGxPZmZzZXQgPSBJbnRTaXplKCk7CiAg
ICAgfQogCkBAIC01NjksNiArNTkyLDcgQEAgTFJFU1VMVCBXZWJWaWV3OjpvblNpemVFdmVudChI
V05EIGh3bmQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNIGxQYXJhbSwgYm9vbCYgaGFuZGwKICAgICAg
ICAgSFJFU1VMVCBociA9IG1fc3dhcENoYWluLT5SZXNpemVCdWZmZXJzKDAsIDAsIDAsIERYR0lf
Rk9STUFUX1VOS05PV04sIERYR0lfU1dBUF9DSEFJTl9GTEFHX0dESV9DT01QQVRJQkxFKTsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoU1VDQ0VFREVEKGhyKSk7CiAKKyAgICAgICAgSW50U2l6ZSB3
aW5kb3dTaXplKExPV09SRChsUGFyYW0pLCBISVdPUkQobFBhcmFtKSk7CiAgICAgICAgIGNvbmZp
Z3VyZUJhY2tpbmdTdG9yZSh3aW5kb3dTaXplKTsKICAgICB9CiAjZW5kaWYKQEAgLTg2MywxMiAr
ODg3LDE1IEBAIHZvaWQgV2ViVmlldzo6c2V0U2Nyb2xsT2Zmc2V0T25OZXh0UmVzaXplKGNvbnN0
IEludFNpemUmIHNjcm9sbE9mZnNldCkKIHsKICAgICAvLyBUaGUgbmV4dCB0aW1lIHdlIGdldCBh
IFdNX1NJWkUgbWVzc2FnZSwgc2Nyb2xsIGJ5IHRoZSBzcGVjaWZpZWQgYW1vdW50IGluIG9uU2l6
ZUV2ZW50KCkuCiAgICAgbV9uZXh0UmVzaXplU2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0Owor
ICAgIG1fbmV4dFJlc2l6ZVNjcm9sbE9mZnNldC5zY2FsZSgxIC8gbV9wYWdlLT5kZXZpY2VTY2Fs
ZUZhY3RvcigpKTsKIH0KIAogdm9pZCBXZWJWaWV3OjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0
IFdlYkNvcmU6OlJlZ2lvbiYgcmVnaW9uKQogewotICAgIGNvbnN0IFJFQ1QgciA9IHJlZ2lvbi5i
b3VuZHMoKTsKLSAgICA6OkludmFsaWRhdGVSZWN0KG1fd2luZG93LCAmciwgdHJ1ZSk7CisgICAg
YXV0byByZWN0ID0gcmVnaW9uLmJvdW5kcygpOworICAgIHJlY3Quc2NhbGUobV9wYWdlLT5kZXZp
Y2VTY2FsZUZhY3RvcigpKTsKKyAgICBjb25zdCBSRUNUIHZpZXdSZWN0KHJlY3QpOworICAgIDo6
SW52YWxpZGF0ZVJlY3QobV93aW5kb3csICZ2aWV3UmVjdCwgdHJ1ZSk7CiB9CiAKICNpZiBFTkFC
TEUoSU5QVVRfVFlQRV9DT0xPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L3dpbi9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCmlu
ZGV4IDI3Zjg5NzIwY2Q1Li41MjAwNmQxNzg1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4v
V2ViVmlldy5oCkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICBIV05EIHdpbmRvdygpIGNv
bnN0IHsgcmV0dXJuIG1fd2luZG93OyB9CiAgICAgdm9pZCBzZXRQYXJlbnRXaW5kb3coSFdORCk7
CiAgICAgdm9pZCB3aW5kb3dBbmNlc3RyeURpZENoYW5nZSgpOworICAgIFdlYkNvcmU6OkludFNp
emUgdmlld1NpemUoKSB7IHJldHVybiBtX3ZpZXdTaXplOyB9CiAgICAgdm9pZCBzZXRJc0luV2lu
ZG93KGJvb2wpOwogICAgIHZvaWQgc2V0SXNWaXNpYmxlKGJvb2wpOwogICAgIGJvb2wgaXNXaW5k
b3dBY3RpdmUoKTsKQEAgLTE2Nyw2ICsxNjgsNyBAQCBwcml2YXRlOgogCiAgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYktpdDo6UGFnZUNsaWVudEltcGw+IG1fcGFnZUNsaWVudDsKICAgICBSZWZQdHI8
V2ViUGFnZVByb3h5PiBtX3BhZ2U7CisgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3ZpZXdTaXplOwog
I2lmIFVTRShESVJFQ1QyRCkKICAgICBDT01QdHI8SUQzRDExRGV2aWNlMT4gbV9kM2REZXZpY2U7
CiAgICAgQ09NUHRyPElEM0QxMURldmljZUNvbnRleHQxPiBtX2ltbWVkaWF0ZUNvbnRleHQ7CmRp
ZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0QnJvd3NlcldpbmRvdy5jcHAg
Yi9Ub29scy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0QnJvd3NlcldpbmRvdy5jcHAKaW5kZXggY2Fm
YWFhNDE2MWYuLjI2OWNjZWMzOTA2IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci93aW4v
V2ViS2l0QnJvd3NlcldpbmRvdy5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL1dlYktp
dEJyb3dzZXJXaW5kb3cuY3BwCkBAIC0xNTksNyArMTU5LDYgQEAgV2ViS2l0QnJvd3NlcldpbmRv
dzo6V2ViS2l0QnJvd3NlcldpbmRvdyhCcm93c2VyV2luZG93Q2xpZW50JiBjbGllbnQsIFdLUGFn
ZUNvbmYKICAgICBXS1BhZ2VTZXRQYWdlU3RhdGVDbGllbnQocGFnZSwgJnN0YXRlQ2xpZW50LmJh
c2UpOwogCiAgICAgdXBkYXRlUHJveHlTZXR0aW5ncygpOwotICAgIHJlc2V0Wm9vbSgpOwogfQog
CiB2b2lkIFdlYktpdEJyb3dzZXJXaW5kb3c6OnVwZGF0ZVByb3h5U2V0dGluZ3MoKQpAQCAtMjgx
LDcgKzI4MCw3IEBAIHZvaWQgV2ViS2l0QnJvd3NlcldpbmRvdzo6dXBkYXRlU3RhdGlzdGljcyhI
V05EIGhEbGcpCiB2b2lkIFdlYktpdEJyb3dzZXJXaW5kb3c6OnJlc2V0Wm9vbSgpCiB7CiAgICAg
YXV0byBwYWdlID0gV0tWaWV3R2V0UGFnZShtX3ZpZXcuZ2V0KCkpOwotICAgIFdLUGFnZVNldFBh
Z2Vab29tRmFjdG9yKHBhZ2UsIFdlYkNvcmU6OmRldmljZVNjYWxlRmFjdG9yRm9yV2luZG93KGh3
bmQoKSkpOworICAgIFdLUGFnZVNldFBhZ2Vab29tRmFjdG9yKHBhZ2UsIDEpOwogfQogCiB2b2lk
IFdlYktpdEJyb3dzZXJXaW5kb3c6Onpvb21JbigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377844</attachid>
            <date>2019-09-02 01:16:15 -0700</date>
            <delta_ts>2019-09-02 03:03:12 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>wip.diff</filename>
            <type>text/plain</type>
            <size>12051</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwCmluZGV4
IGJlNjFiYmRmZTVlLi5jZDU3NjgwZGM4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy93aW4vUGFnZUNsaWVudEltcGwuY3BwCkBAIC02OCwxMCArNjgsNyBAQCBXZWJDb3JlOjpGbG9h
dFBvaW50IFBhZ2VDbGllbnRJbXBsOjp2aWV3U2Nyb2xsUG9zaXRpb24oKQogCiBXZWJDb3JlOjpJ
bnRTaXplIFBhZ2VDbGllbnRJbXBsOjp2aWV3U2l6ZSgpCiB7Ci0gICAgUkVDVCBjbGllbnRSZWN0
OwotICAgIEdldENsaWVudFJlY3QobV92aWV3LndpbmRvdygpLCAmY2xpZW50UmVjdCk7Ci0KLSAg
ICByZXR1cm4gSW50UmVjdChjbGllbnRSZWN0KS5zaXplKCk7CisgICAgcmV0dXJuIG1fdmlldy52
aWV3U2l6ZSgpOwogfQogCiBib29sIFBhZ2VDbGllbnRJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkNvbnRleHRNZW51
UHJveHlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkNvbnRleHRNZW51
UHJveHlXaW4uY3BwCmluZGV4IGFhMTcxZjQ4YmM0Li4zM2QxZTdjNDFkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkNvbnRleHRNZW51UHJveHlXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJDb250ZXh0TWVudVByb3h5V2luLmNw
cApAQCAtMTAzLDcgKzEwMyw5IEBAIHZvaWQgV2ViQ29udGV4dE1lbnVQcm94eVdpbjo6c2hvd0Nv
bnRleHRNZW51V2l0aEl0ZW1zKFZlY3RvcjxSZWY8V2ViQ29udGV4dE1lbnVJCiAgICAgcG9wdWxh
dGUobV9jb250ZXh0LCBtX21lbnUsIGl0ZW1zKTsKIAogICAgIFVJTlQgZmxhZ3MgPSBUUE1fUklH
SFRCVVRUT04gfCBUUE1fVE9QQUxJR04gfCBUUE1fVkVSUE9TQU5JTUFUSU9OIHwgVFBNX0hPUkla
T05UQUwgfCBUUE1fTEVGVEFMSUdOIHwgVFBNX0hPUlBPU0FOSU1BVElPTjsKLSAgICBQT0lOVCBw
dCB7IG1fY29udGV4dC5tZW51TG9jYXRpb24oKS54KCksIG1fY29udGV4dC5tZW51TG9jYXRpb24o
KS55KCkgfTsKKyAgICBhdXRvIGxvY2F0aW9uID0gbV9jb250ZXh0Lm1lbnVMb2NhdGlvbigpOwor
ICAgIGxvY2F0aW9uLnNjYWxlKG1fcGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICBQT0lO
VCBwdCA9IGxvY2F0aW9uOwogICAgIEhXTkQgd25kID0gbV9wYWdlLnZpZXdXaWRnZXQoKTsKICAg
ICA6OkNsaWVudFRvU2NyZWVuKHduZCwgJnB0KTsKICAgICA6OlRyYWNrUG9wdXBNZW51RXgobV9t
ZW51LCBmbGFncywgcHQueCwgcHQueSwgbV9wYWdlLnZpZXdXaWRnZXQoKSwgbnVsbHB0cik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlX
aW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2lu
LmNwcAppbmRleCBkYjkyZTEyMzc1Mi4uMzExMTI2MGI2MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0b3JQcm94eVdpbi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcApAQCAtMzgsNiAr
MzgsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5o
IgogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZvLmg+CisjaW5jbHVkZSA8V2ViQ29y
ZS9HRElVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9XZWJDb3JlQnVuZGxlV2luLmg+CkBAIC0yOTgsMTYgKzI5OSwxOCBAQCBTdHJp
bmcgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3RvckJhc2VVUkwoKQogCiB1bnNpZ25lZCBXZWJJ
bnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dIZWlnaHQoKQogeworICAgIGF1
dG8gZGV2aWNlU2NhbGVGYWN0b3IgPSBXZWJDb3JlOjpkZXZpY2VTY2FsZUZhY3RvckZvcldpbmRv
dyhtX2luc3BlY3RvclZpZXdXaW5kb3cpOwogICAgIFJFQ1QgcmVjdDsKICAgICA6OkdldENsaWVu
dFJlY3QobV9pbnNwZWN0ZWRWaWV3V2luZG93LCAmcmVjdCk7Ci0gICAgcmV0dXJuIHJlY3QuYm90
dG9tIC0gcmVjdC50b3A7CisgICAgcmV0dXJuIChyZWN0LmJvdHRvbSAtIHJlY3QudG9wKSAvIGRl
dmljZVNjYWxlRmFjdG9yOwogfQogCiB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZv
cm1JbnNwZWN0ZWRXaW5kb3dXaWR0aCgpCiB7CisgICAgYXV0byBkZXZpY2VTY2FsZUZhY3RvciA9
IFdlYkNvcmU6OmRldmljZVNjYWxlRmFjdG9yRm9yV2luZG93KG1faW5zcGVjdG9yVmlld1dpbmRv
dyk7CiAgICAgUkVDVCByZWN0OwogICAgIDo6R2V0Q2xpZW50UmVjdChtX2luc3BlY3RlZFZpZXdX
aW5kb3csICZyZWN0KTsKLSAgICByZXR1cm4gcmVjdC5yaWdodCAtIHJlY3QubGVmdDsKKyAgICBy
ZXR1cm4gKHJlY3QucmlnaHQgLSByZWN0LmxlZnQpIC8gZGV2aWNlU2NhbGVGYWN0b3I7CiB9CiAK
IHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtQXR0YWNoKCkKQEAgLTM2MSw2ICszNjQs
NyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybURldGFjaCgpCiAKIHZvaWQgV2Vi
SW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQg
aGVpZ2h0KQogeworICAgIGhlaWdodCAqPSBXZWJDb3JlOjpkZXZpY2VTY2FsZUZhY3RvckZvcldp
bmRvdyhtX2luc3BlY3RvclZpZXdXaW5kb3cpOwogICAgIGF1dG8gd2luZG93SW5mbyA9IGdldElu
c3BlY3RlZFdpbmRvd0luZm8obV9pbnNwZWN0ZWRWaWV3V2luZG93LCBtX2luc3BlY3RlZFZpZXdQ
YXJlbnRXaW5kb3cpOwogICAgIDo6U2V0V2luZG93UG9zKG1faW5zcGVjdG9yVmlld1dpbmRvdywg
MCwgd2luZG93SW5mby5sZWZ0LCB3aW5kb3dJbmZvLnBhcmVudEhlaWdodCAtIGhlaWdodCwgd2lu
ZG93SW5mby5wYXJlbnRXaWR0aCAtIHdpbmRvd0luZm8ubGVmdCwgaGVpZ2h0LCBTV1BfTk9aT1JE
RVIpOwogICAgIDo6U2V0V2luZG93UG9zKG1faW5zcGVjdGVkVmlld1dpbmRvdywgMCwgd2luZG93
SW5mby5sZWZ0LCB3aW5kb3dJbmZvLnRvcCwgd2luZG93SW5mby5wYXJlbnRXaWR0aCAtIHdpbmRv
d0luZm8ubGVmdCwgd2luZG93SW5mby5wYXJlbnRIZWlnaHQgLSB3aW5kb3dJbmZvLnRvcCwgU1dQ
X05PWk9SREVSKTsKQEAgLTM2OCw2ICszNzIsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybVNldEF0dGFjaGVkV2luZG93SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCkKIAogdm9pZCBX
ZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVk
IHdpZHRoKQogeworICAgIHdpZHRoICo9IFdlYkNvcmU6OmRldmljZVNjYWxlRmFjdG9yRm9yV2lu
ZG93KG1faW5zcGVjdG9yVmlld1dpbmRvdyk7CiAgICAgYXV0byB3aW5kb3dJbmZvID0gZ2V0SW5z
cGVjdGVkV2luZG93SW5mbyhtX2luc3BlY3RlZFZpZXdXaW5kb3csIG1faW5zcGVjdGVkVmlld1Bh
cmVudFdpbmRvdyk7CiAgICAgOjpTZXRXaW5kb3dQb3MobV9pbnNwZWN0b3JWaWV3V2luZG93LCAw
LCB3aW5kb3dJbmZvLnBhcmVudFdpZHRoIC0gd2lkdGgsIHdpbmRvd0luZm8udG9wLCB3aWR0aCwg
d2luZG93SW5mby5wYXJlbnRIZWlnaHQgLSB3aW5kb3dJbmZvLnRvcCwgU1dQX05PWk9SREVSKTsK
ICAgICA6OlNldFdpbmRvd1BvcyhtX2luc3BlY3RlZFZpZXdXaW5kb3csIDAsIHdpbmRvd0luZm8u
bGVmdCwgd2luZG93SW5mby50b3AsIHdpbmRvd0luZm8ucGFyZW50V2lkdGggLSB3aW5kb3dJbmZv
LmxlZnQsIHdpbmRvd0luZm8ucGFyZW50SGVpZ2h0IC0gd2luZG93SW5mby50b3AsIFNXUF9OT1pP
UkRFUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKaW5kZXggMDAwMzUw
Y2E1ZmUuLjQxZDNmOWEwZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93
aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcu
Y3BwCkBAIC00Miw5ICs0MiwxMSBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5j
bHVkZSA8Q29tbWN0cmwuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0JpdG1hcEluZm8uaD4KKyNpbmNs
dWRlIDxXZWJDb3JlL0NhaXJvVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJzb3Iu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRS
ZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HRElVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0hXbmREQy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdl
YkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTI0NywxNyArMjQ5LDE1IEBAIFdlYlZpZXc6Oldl
YlZpZXcoUkVDVCByZWN0LCBjb25zdCBBUEk6OlBhZ2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0
aW9uLCBIV05EIHBhCiAgICAgV2ViUHJvY2Vzc1Bvb2wqIHByb2Nlc3NQb29sID0gcGFnZUNvbmZp
Z3VyYXRpb24tPnByb2Nlc3NQb29sKCk7CiAgICAgbV9wYWdlID0gcHJvY2Vzc1Bvb2wtPmNyZWF0
ZVdlYlBhZ2UoKm1fcGFnZUNsaWVudCwgV1RGTW92ZShwYWdlQ29uZmlndXJhdGlvbikpOwogICAg
IG1fcGFnZS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsKKyAgICBtX3BhZ2UtPnNldEludHJpbnNpY0Rl
dmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yRm9yV2luZG93KG1fd2luZG93KSk7CiAK
LSAgICBJbnRTaXplIHdpbmRvd1NpemUocmVjdC5yaWdodCAtIHJlY3QubGVmdCwgcmVjdC5ib3R0
b20gLSByZWN0LnRvcCk7CiAjaWYgVVNFKERJUkVDVDJEKQorICAgIEludFNpemUgd2luZG93U2l6
ZShyZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0LCByZWN0LmJvdHRvbSAtIHJlY3QudG9wKTsKICAgICBE
aXJlY3QyRDo6Y3JlYXRlRGV2aWNlQW5kQ29udGV4dChtX2QzZERldmljZSwgbV9pbW1lZGlhdGVD
b250ZXh0KTsKICAgICBtX3BhZ2UtPnNldERldmljZShtX2QzZERldmljZS5nZXQoKSk7CiAgICAg
c2V0dXBTd2FwQ2hhaW4od2luZG93U2l6ZSk7CiAjZW5kaWYKIAotICAgIGlmIChtX3BhZ2UtPmRy
YXdpbmdBcmVhKCkpCi0gICAgICAgIG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+c2V0U2l6ZSh3aW5k
b3dTaXplKTsKLQogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIG1fcGFnZS0+c2V0
VVJMU2NoZW1lSGFuZGxlckZvclNjaGVtZShSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6
OmNyZWF0ZSgqbV9wYWdlKSwgImluc3BlY3RvciIpOwogI2VuZGlmCkBAIC0zNTAsNiArMzUwLDI1
IEBAIHZvaWQgV2ViVmlldzo6d2luZG93QW5jZXN0cnlEaWRDaGFuZ2UoKQogCiBMUkVTVUxUIFdl
YlZpZXc6Om9uTW91c2VFdmVudChIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJh
bSwgTFBBUkFNIGxQYXJhbSwgYm9vbCYgaGFuZGxlZCkKIHsKKyAgICBzd2l0Y2ggKG1lc3NhZ2Up
IHsKKyAgICBjYXNlIFdNX0xCVVRUT05ET1dOOgorICAgIGNhc2UgV01fTUJVVFRPTkRPV046Cisg
ICAgY2FzZSBXTV9SQlVUVE9ORE9XTjoKKyAgICBjYXNlIFdNX0xCVVRUT05VUDoKKyAgICBjYXNl
IFdNX01CVVRUT05VUDoKKyAgICBjYXNlIFdNX1JCVVRUT05VUDoKKyAgICBjYXNlIFdNX01PVVNF
TU9WRToKKyAgICBjYXNlIFdNX0xCVVRUT05EQkxDTEs6CisgICAgY2FzZSBXTV9NQlVUVE9OREJM
Q0xLOgorICAgIGNhc2UgV01fUkJVVFRPTkRCTENMSzoKKyAgICAgICAgbFBhcmFtID0gbWFrZVNj
YWxlZFBvaW50KE1BS0VQT0lOVFMobFBhcmFtKSwgbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3Rvcigp
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXTV9NT1VTRUxFQVZFOgorICAgICAgICBicmVh
azsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisK
ICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50IG1vdXNlRXZlbnQgPSBOYXRpdmVXZWJNb3VzZUV2ZW50
KGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFtLCBtX3dhc0FjdGl2YXRlZEJ5TW91c2VFdmVu
dCk7CiAgICAgc2V0V2FzQWN0aXZhdGVkQnlNb3VzZUV2ZW50KGZhbHNlKTsKIApAQCAtMzg3LDYg
KzQwNiw3IEBAIExSRVNVTFQgV2ViVmlldzo6b25Nb3VzZUV2ZW50KEhXTkQgaFduZCwgVUlOVCBt
ZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhCiAKIExSRVNVTFQgV2ViVmlldzo6b25X
aGVlbEV2ZW50KEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0g
bFBhcmFtLCBib29sJiBoYW5kbGVkKQogeworICAgIGxQYXJhbSA9IG1ha2VTY2FsZWRQb2ludChN
QUtFUE9JTlRTKGxQYXJhbSksIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiAgICAgTmF0
aXZlV2ViV2hlZWxFdmVudCB3aGVlbEV2ZW50KGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFt
KTsKICAgICBpZiAod2hlZWxFdmVudC5jb250cm9sS2V5KCkpIHsKICAgICAgICAgLy8gV2UgZG8g
bm90IHdhbnQgV2ViS2l0IHRvIGhhbmRsZSBDb250cm9sICsgV2hlZWwsIHRoaXMgc2hvdWxkIGJl
IGhhbmRsZWQgYnkgdGhlIGNsaWVudCBhcHBsaWNhdGlvbgpAQCAtNDc1LDI1ICs0OTUsMjkgQEAg
TFJFU1VMVCBXZWJWaWV3OjpvbktleUV2ZW50KEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFS
QU0gd1BhcmFtLCBMUEFSQU0gbFBhcmEKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQg
ZHJhd1BhZ2VCYWNrZ3JvdW5kKEhEQyBkYywgY29uc3QgV2ViUGFnZVByb3h5KiBwYWdlLCBjb25z
dCBSRUNUJiByZWN0KQorc3RhdGljIHZvaWQgZHJhd1BhZ2VCYWNrZ3JvdW5kKEhEQyBkYywgY29u
c3QgV2ViUGFnZVByb3h5KiBwYWdlLCBJbnRSZWN0IHJlY3QpCiB7CiAgICAgYXV0byYgYmFja2dy
b3VuZENvbG9yID0gcGFnZS0+YmFja2dyb3VuZENvbG9yKCk7CiAgICAgaWYgKCFiYWNrZ3JvdW5k
Q29sb3IgfHwgYmFja2dyb3VuZENvbG9yLnZhbHVlKCkuaXNWaXNpYmxlKCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIDo6RmlsbFJlY3QoZGMsICZyZWN0LCByZWludGVycHJldF9jYXN0PEhCUlVT
SD4oQ09MT1JfV0lORE9XICsgMSkpOworICAgIHJlY3Quc2NhbGUocGFnZS0+ZGV2aWNlU2NhbGVG
YWN0b3IoKSk7CisgICAgUkVDVCB2aWV3UmVjdChyZWN0KTsKKyAgICA6OkZpbGxSZWN0KGRjLCAm
dmlld1JlY3QsIHJlaW50ZXJwcmV0X2Nhc3Q8SEJSVVNIPihDT0xPUl9XSU5ET1cgKyAxKSk7CiB9
CiAKIHZvaWQgV2ViVmlldzo6cGFpbnQoSERDIGhkYywgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
KQogewogICAgIGlmIChkaXJ0eVJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CisgICAg
YXV0byBkZXZpY2VTY2FsZUZhY3RvciA9IG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAg
ICBtX3BhZ2UtPmVuZFByaW50aW5nKCk7CiAgICAgaWYgKGF1dG8qIGRyYXdpbmdBcmVhID0gc3Rh
dGljX2Nhc3Q8RHJhd2luZ0FyZWFQcm94eUNvb3JkaW5hdGVkR3JhcGhpY3MqPihtX3BhZ2UtPmRy
YXdpbmdBcmVhKCkpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcG9ydCBXZWJLaXQx
J3MgcmVjdCBjb2FsZXNjaW5nIGxvZ2ljIGhlcmUuCiAgICAgICAgIFJlZ2lvbiB1bnBhaW50ZWRS
ZWdpb247CiAjaWYgVVNFKENBSVJPKQogICAgICAgICBjYWlyb19zdXJmYWNlX3QqIHN1cmZhY2Ug
PSBjYWlyb193aW4zMl9zdXJmYWNlX2NyZWF0ZShoZGMpOworICAgICAgICBjYWlyb1N1cmZhY2VT
ZXREZXZpY2VTY2FsZShzdXJmYWNlLCBkZXZpY2VTY2FsZUZhY3RvciwgZGV2aWNlU2NhbGVGYWN0
b3IpOwogICAgICAgICBjYWlyb190KiBjb250ZXh0ID0gY2Fpcm9fY3JlYXRlKHN1cmZhY2UpOwog
CiAgICAgICAgIGRyYXdpbmdBcmVhLT5wYWludChjb250ZXh0LCBkaXJ0eVJlY3QsIHVucGFpbnRl
ZFJlZ2lvbik7CkBAIC01MjUsNyArNTQ5LDkgQEAgTFJFU1VMVCBXZWJWaWV3OjpvblBhaW50RXZl
bnQoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSwgTFBBUkFNLCBib29sJiBoYW4KIAog
ICAgIFBBSU5UU1RSVUNUIHBhaW50U3RydWN0OwogICAgIEhEQyBoZGMgPSA6OkJlZ2luUGFpbnQo
bV93aW5kb3csICZwYWludFN0cnVjdCk7Ci0gICAgcGFpbnQoaGRjLCBwYWludFN0cnVjdC5yY1Bh
aW50KTsKKyAgICBJbnRSZWN0IGRpcnR5UmVjdChwYWludFN0cnVjdC5yY1BhaW50KTsKKyAgICBk
aXJ0eVJlY3Quc2NhbGUoMSAvIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgcGFp
bnQoaGRjLCBkaXJ0eVJlY3QpOwogCiAgICAgOjpFbmRQYWludChtX3dpbmRvdywgJnBhaW50U3Ry
dWN0KTsKIApAQCAtNTQ3LDE0ICs1NzMsMTMgQEAgTFJFU1VMVCBXZWJWaWV3OjpvblByaW50Q2xp
ZW50RXZlbnQoSFdORCBoV25kLCBVSU5ULCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0sIGJvb2wKIAog
TFJFU1VMVCBXZWJWaWV3OjpvblNpemVFdmVudChIV05EIGh3bmQsIFVJTlQsIFdQQVJBTSwgTFBB
UkFNIGxQYXJhbSwgYm9vbCYgaGFuZGxlZCkKIHsKLSAgICBpbnQgd2lkdGggPSBMT1dPUkQobFBh
cmFtKTsKLSAgICBpbnQgaGVpZ2h0ID0gSElXT1JEKGxQYXJhbSk7CisgICAgbV92aWV3U2l6ZSA9
IEludFNpemUoTE9XT1JEKGxQYXJhbSksIEhJV09SRChsUGFyYW0pKTsKKyAgICBtX3ZpZXdTaXpl
LnNjYWxlKDEgLyBkZXZpY2VTY2FsZUZhY3RvckZvcldpbmRvdyhod25kKSk7CiAKLSAgICBJbnRT
aXplIHdpbmRvd1NpemUod2lkdGgsIGhlaWdodCk7CiAKICAgICBpZiAobV9wYWdlICYmIG1fcGFn
ZS0+ZHJhd2luZ0FyZWEoKSkgewogICAgICAgICAvLyBGSVhNRSBzcGVjaWZ5IGNvcnJlY3RseSBs
YXllclBvc2l0aW9uLgotICAgICAgICBtX3BhZ2UtPmRyYXdpbmdBcmVhKCktPnNldFNpemUod2lu
ZG93U2l6ZSwgbV9uZXh0UmVzaXplU2Nyb2xsT2Zmc2V0KTsKKyAgICAgICAgbV9wYWdlLT5kcmF3
aW5nQXJlYSgpLT5zZXRTaXplKG1fdmlld1NpemUsIG1fbmV4dFJlc2l6ZVNjcm9sbE9mZnNldCk7
CiAgICAgICAgIG1fbmV4dFJlc2l6ZVNjcm9sbE9mZnNldCA9IEludFNpemUoKTsKICAgICB9CiAK
QEAgLTU2OSw2ICs1OTQsNyBAQCBMUkVTVUxUIFdlYlZpZXc6Om9uU2l6ZUV2ZW50KEhXTkQgaHdu
ZCwgVUlOVCwgV1BBUkFNLCBMUEFSQU0gbFBhcmFtLCBib29sJiBoYW5kbAogICAgICAgICBIUkVT
VUxUIGhyID0gbV9zd2FwQ2hhaW4tPlJlc2l6ZUJ1ZmZlcnMoMCwgMCwgMCwgRFhHSV9GT1JNQVRf
VU5LTk9XTiwgRFhHSV9TV0FQX0NIQUlOX0ZMQUdfR0RJX0NPTVBBVElCTEUpOwogICAgICAgICBS
RUxFQVNFX0FTU0VSVChTVUNDRUVERUQoaHIpKTsKIAorICAgICAgICBJbnRTaXplIHdpbmRvd1Np
emUoTE9XT1JEKGxQYXJhbSksIEhJV09SRChsUGFyYW0pKTsKICAgICAgICAgY29uZmlndXJlQmFj
a2luZ1N0b3JlKHdpbmRvd1NpemUpOwogICAgIH0KICNlbmRpZgpAQCAtODYzLDEyICs4ODksMTUg
QEAgdm9pZCBXZWJWaWV3OjpzZXRTY3JvbGxPZmZzZXRPbk5leHRSZXNpemUoY29uc3QgSW50U2l6
ZSYgc2Nyb2xsT2Zmc2V0KQogewogICAgIC8vIFRoZSBuZXh0IHRpbWUgd2UgZ2V0IGEgV01fU0la
RSBtZXNzYWdlLCBzY3JvbGwgYnkgdGhlIHNwZWNpZmllZCBhbW91bnQgaW4gb25TaXplRXZlbnQo
KS4KICAgICBtX25leHRSZXNpemVTY3JvbGxPZmZzZXQgPSBzY3JvbGxPZmZzZXQ7CisgICAgbV9u
ZXh0UmVzaXplU2Nyb2xsT2Zmc2V0LnNjYWxlKDEgLyBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9y
KCkpOwogfQogCiB2b2lkIFdlYlZpZXc6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgV2ViQ29y
ZTo6UmVnaW9uJiByZWdpb24pCiB7Ci0gICAgY29uc3QgUkVDVCByID0gcmVnaW9uLmJvdW5kcygp
OwotICAgIDo6SW52YWxpZGF0ZVJlY3QobV93aW5kb3csICZyLCB0cnVlKTsKKyAgICBhdXRvIHJl
Y3QgPSByZWdpb24uYm91bmRzKCk7CisgICAgcmVjdC5zY2FsZShtX3BhZ2UtPmRldmljZVNjYWxl
RmFjdG9yKCkpOworICAgIGNvbnN0IFJFQ1Qgdmlld1JlY3QocmVjdCk7CisgICAgOjpJbnZhbGlk
YXRlUmVjdChtX3dpbmRvdywgJnZpZXdSZWN0LCB0cnVlKTsKIH0KIAogI2lmIEVOQUJMRShJTlBV
VF9UWVBFX0NPTE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dl
YlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmgKaW5kZXggMjdm
ODk3MjBjZDUuLjUyMDA2ZDE3ODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy93aW4vV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3
LmgKQEAgLTY1LDYgKzY1LDcgQEAgcHVibGljOgogICAgIEhXTkQgd2luZG93KCkgY29uc3QgeyBy
ZXR1cm4gbV93aW5kb3c7IH0KICAgICB2b2lkIHNldFBhcmVudFdpbmRvdyhIV05EKTsKICAgICB2
b2lkIHdpbmRvd0FuY2VzdHJ5RGlkQ2hhbmdlKCk7CisgICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3
U2l6ZSgpIHsgcmV0dXJuIG1fdmlld1NpemU7IH0KICAgICB2b2lkIHNldElzSW5XaW5kb3coYm9v
bCk7CiAgICAgdm9pZCBzZXRJc1Zpc2libGUoYm9vbCk7CiAgICAgYm9vbCBpc1dpbmRvd0FjdGl2
ZSgpOwpAQCAtMTY3LDYgKzE2OCw3IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
V2ViS2l0OjpQYWdlQ2xpZW50SW1wbD4gbV9wYWdlQ2xpZW50OwogICAgIFJlZlB0cjxXZWJQYWdl
UHJveHk+IG1fcGFnZTsKKyAgICBXZWJDb3JlOjpJbnRTaXplIG1fdmlld1NpemU7CiAjaWYgVVNF
KERJUkVDVDJEKQogICAgIENPTVB0cjxJRDNEMTFEZXZpY2UxPiBtX2QzZERldmljZTsKICAgICBD
T01QdHI8SUQzRDExRGV2aWNlQ29udGV4dDE+IG1faW1tZWRpYXRlQ29udGV4dDsKZGlmZiAtLWdp
dCBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93c2VyV2luZG93LmNwcCBiL1Rvb2xz
L01pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93c2VyV2luZG93LmNwcAppbmRleCBjYWZhYWE0MTYx
Zi4uMjY5Y2NlYzM5MDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XZWJLaXRC
cm93c2VyV2luZG93LmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0QnJvd3Nl
cldpbmRvdy5jcHAKQEAgLTE1OSw3ICsxNTksNiBAQCBXZWJLaXRCcm93c2VyV2luZG93OjpXZWJL
aXRCcm93c2VyV2luZG93KEJyb3dzZXJXaW5kb3dDbGllbnQmIGNsaWVudCwgV0tQYWdlQ29uZgog
ICAgIFdLUGFnZVNldFBhZ2VTdGF0ZUNsaWVudChwYWdlLCAmc3RhdGVDbGllbnQuYmFzZSk7CiAK
ICAgICB1cGRhdGVQcm94eVNldHRpbmdzKCk7Ci0gICAgcmVzZXRab29tKCk7CiB9CiAKIHZvaWQg
V2ViS2l0QnJvd3NlcldpbmRvdzo6dXBkYXRlUHJveHlTZXR0aW5ncygpCkBAIC0yODEsNyArMjgw
LDcgQEAgdm9pZCBXZWJLaXRCcm93c2VyV2luZG93Ojp1cGRhdGVTdGF0aXN0aWNzKEhXTkQgaERs
ZykKIHZvaWQgV2ViS2l0QnJvd3NlcldpbmRvdzo6cmVzZXRab29tKCkKIHsKICAgICBhdXRvIHBh
Z2UgPSBXS1ZpZXdHZXRQYWdlKG1fdmlldy5nZXQoKSk7Ci0gICAgV0tQYWdlU2V0UGFnZVpvb21G
YWN0b3IocGFnZSwgV2ViQ29yZTo6ZGV2aWNlU2NhbGVGYWN0b3JGb3JXaW5kb3coaHduZCgpKSk7
CisgICAgV0tQYWdlU2V0UGFnZVpvb21GYWN0b3IocGFnZSwgMSk7CiB9CiAKIHZvaWQgV2ViS2l0
QnJvd3NlcldpbmRvdzo6em9vbUluKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377847</attachid>
            <date>2019-09-02 03:03:12 -0700</date>
            <delta_ts>2019-09-03 01:06:22 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>wip.diff</filename>
            <type>text/plain</type>
            <size>12823</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJFdmVudEZhY3RvcnkuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkV2ZW50RmFjdG9yeS5jcHAKaW5kZXggYWNm
YTNiYWZmZmIuLmI4YjJhMGYwZmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93
aW4vV2ViRXZlbnRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2Vi
RXZlbnRGYWN0b3J5LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgogCisjaW5jbHVkZSA8V2ViQ29yZS9HRElVdGls
aXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1XaGVlbEV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
Y3JvbGxiYXIuaD4KQEAgLTQwMiw5ICs0MDMsMTMgQEAgV2ViTW91c2VFdmVudCBXZWJFdmVudEZh
Y3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVIK
IAogV2ViV2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZlbnQoSFdO
RCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiB7Ci0g
ICAgUE9JTlQgZ2xvYmFsUG9zaXRpb24gPSBwb2ludChsUGFyYW0pOwotICAgIFBPSU5UIHBvc2l0
aW9uID0gZ2xvYmFsUG9zaXRpb247Ci0gICAgOjpTY3JlZW5Ub0NsaWVudChoV25kLCAmcG9zaXRp
b24pOworICAgIGF1dG8gZGV2aWNlU2NhbGVGYWN0b3IgPSBkZXZpY2VTY2FsZUZhY3RvckZvcldp
bmRvdyhoV25kKTsKKyAgICBQT0lOVCBwb3NpdGlvblBvaW50ID0gcG9pbnQobFBhcmFtKTsKKyAg
ICBJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiA9IHBvc2l0aW9uUG9pbnQ7CisgICAgOjpTY3JlZW5U
b0NsaWVudChoV25kLCAmcG9zaXRpb25Qb2ludCk7CisgICAgZ2xvYmFsUG9zaXRpb24uc2NhbGUo
MSAvIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBJbnRQb2ludCBwb3NpdGlvbiA9IHBvc2l0aW9u
UG9pbnQ7CisgICAgcG9zaXRpb24uc2NhbGUoMSAvIGRldmljZVNjYWxlRmFjdG9yKTsKIAogICAg
IFdlYldoZWVsRXZlbnQ6OkdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0gV2ViV2hlZWxFdmVudDo6
U2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93
aW4vUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGJlNjFiYmRmZTVlLi5jZDU3NjgwZGM4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwCkBAIC02
OCwxMCArNjgsNyBAQCBXZWJDb3JlOjpGbG9hdFBvaW50IFBhZ2VDbGllbnRJbXBsOjp2aWV3U2Ny
b2xsUG9zaXRpb24oKQogCiBXZWJDb3JlOjpJbnRTaXplIFBhZ2VDbGllbnRJbXBsOjp2aWV3U2l6
ZSgpCiB7Ci0gICAgUkVDVCBjbGllbnRSZWN0OwotICAgIEdldENsaWVudFJlY3QobV92aWV3Lndp
bmRvdygpLCAmY2xpZW50UmVjdCk7Ci0KLSAgICByZXR1cm4gSW50UmVjdChjbGllbnRSZWN0KS5z
aXplKCk7CisgICAgcmV0dXJuIG1fdmlldy52aWV3U2l6ZSgpOwogfQogCiBib29sIFBhZ2VDbGll
bnRJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1dlYkNvbnRleHRNZW51UHJveHlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1dlYkNvbnRleHRNZW51UHJveHlXaW4uY3BwCmluZGV4IGFhMTcxZjQ4YmM0
Li4zM2QxZTdjNDFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dl
YkNvbnRleHRNZW51UHJveHlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dp
bi9XZWJDb250ZXh0TWVudVByb3h5V2luLmNwcApAQCAtMTAzLDcgKzEwMyw5IEBAIHZvaWQgV2Vi
Q29udGV4dE1lbnVQcm94eVdpbjo6c2hvd0NvbnRleHRNZW51V2l0aEl0ZW1zKFZlY3RvcjxSZWY8
V2ViQ29udGV4dE1lbnVJCiAgICAgcG9wdWxhdGUobV9jb250ZXh0LCBtX21lbnUsIGl0ZW1zKTsK
IAogICAgIFVJTlQgZmxhZ3MgPSBUUE1fUklHSFRCVVRUT04gfCBUUE1fVE9QQUxJR04gfCBUUE1f
VkVSUE9TQU5JTUFUSU9OIHwgVFBNX0hPUklaT05UQUwgfCBUUE1fTEVGVEFMSUdOIHwgVFBNX0hP
UlBPU0FOSU1BVElPTjsKLSAgICBQT0lOVCBwdCB7IG1fY29udGV4dC5tZW51TG9jYXRpb24oKS54
KCksIG1fY29udGV4dC5tZW51TG9jYXRpb24oKS55KCkgfTsKKyAgICBhdXRvIGxvY2F0aW9uID0g
bV9jb250ZXh0Lm1lbnVMb2NhdGlvbigpOworICAgIGxvY2F0aW9uLnNjYWxlKG1fcGFnZS5kZXZp
Y2VTY2FsZUZhY3RvcigpKTsKKyAgICBQT0lOVCBwdCA9IGxvY2F0aW9uOwogICAgIEhXTkQgd25k
ID0gbV9wYWdlLnZpZXdXaWRnZXQoKTsKICAgICA6OkNsaWVudFRvU2NyZWVuKHduZCwgJnB0KTsK
ICAgICA6OlRyYWNrUG9wdXBNZW51RXgobV9tZW51LCBmbGFncywgcHQueCwgcHQueSwgbV9wYWdl
LnZpZXdXaWRnZXQoKSwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcAppbmRleCBkYjkyZTEyMzc1Mi4uMzExMTI2
MGI2MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0
b3JQcm94eVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkluc3Bl
Y3RvclByb3h5V2luLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
b29sLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNh
dGVJbmZvLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HRElVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlQnVuZGxlV2luLmg+
CkBAIC0yOTgsMTYgKzI5OSwxOCBAQCBTdHJpbmcgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3Rv
ckJhc2VVUkwoKQogCiB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0
ZWRXaW5kb3dIZWlnaHQoKQogeworICAgIGF1dG8gZGV2aWNlU2NhbGVGYWN0b3IgPSBXZWJDb3Jl
OjpkZXZpY2VTY2FsZUZhY3RvckZvcldpbmRvdyhtX2luc3BlY3RvclZpZXdXaW5kb3cpOwogICAg
IFJFQ1QgcmVjdDsKICAgICA6OkdldENsaWVudFJlY3QobV9pbnNwZWN0ZWRWaWV3V2luZG93LCAm
cmVjdCk7Ci0gICAgcmV0dXJuIHJlY3QuYm90dG9tIC0gcmVjdC50b3A7CisgICAgcmV0dXJuIChy
ZWN0LmJvdHRvbSAtIHJlY3QudG9wKSAvIGRldmljZVNjYWxlRmFjdG9yOwogfQogCiB1bnNpZ25l
ZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dXaWR0aCgpCiB7Cisg
ICAgYXV0byBkZXZpY2VTY2FsZUZhY3RvciA9IFdlYkNvcmU6OmRldmljZVNjYWxlRmFjdG9yRm9y
V2luZG93KG1faW5zcGVjdG9yVmlld1dpbmRvdyk7CiAgICAgUkVDVCByZWN0OwogICAgIDo6R2V0
Q2xpZW50UmVjdChtX2luc3BlY3RlZFZpZXdXaW5kb3csICZyZWN0KTsKLSAgICByZXR1cm4gcmVj
dC5yaWdodCAtIHJlY3QubGVmdDsKKyAgICByZXR1cm4gKHJlY3QucmlnaHQgLSByZWN0LmxlZnQp
IC8gZGV2aWNlU2NhbGVGYWN0b3I7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtQXR0YWNoKCkKQEAgLTM2MSw2ICszNjQsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybURldGFjaCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0
YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQogeworICAgIGhlaWdodCAqPSBXZWJD
b3JlOjpkZXZpY2VTY2FsZUZhY3RvckZvcldpbmRvdyhtX2luc3BlY3RvclZpZXdXaW5kb3cpOwog
ICAgIGF1dG8gd2luZG93SW5mbyA9IGdldEluc3BlY3RlZFdpbmRvd0luZm8obV9pbnNwZWN0ZWRW
aWV3V2luZG93LCBtX2luc3BlY3RlZFZpZXdQYXJlbnRXaW5kb3cpOwogICAgIDo6U2V0V2luZG93
UG9zKG1faW5zcGVjdG9yVmlld1dpbmRvdywgMCwgd2luZG93SW5mby5sZWZ0LCB3aW5kb3dJbmZv
LnBhcmVudEhlaWdodCAtIGhlaWdodCwgd2luZG93SW5mby5wYXJlbnRXaWR0aCAtIHdpbmRvd0lu
Zm8ubGVmdCwgaGVpZ2h0LCBTV1BfTk9aT1JERVIpOwogICAgIDo6U2V0V2luZG93UG9zKG1faW5z
cGVjdGVkVmlld1dpbmRvdywgMCwgd2luZG93SW5mby5sZWZ0LCB3aW5kb3dJbmZvLnRvcCwgd2lu
ZG93SW5mby5wYXJlbnRXaWR0aCAtIHdpbmRvd0luZm8ubGVmdCwgd2luZG93SW5mby5wYXJlbnRI
ZWlnaHQgLSB3aW5kb3dJbmZvLnRvcCwgU1dQX05PWk9SREVSKTsKQEAgLTM2OCw2ICszNzIsNyBA
QCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93SGVpZ2h0
KHVuc2lnbmVkIGhlaWdodCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRB
dHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQogeworICAgIHdpZHRoICo9IFdlYkNv
cmU6OmRldmljZVNjYWxlRmFjdG9yRm9yV2luZG93KG1faW5zcGVjdG9yVmlld1dpbmRvdyk7CiAg
ICAgYXV0byB3aW5kb3dJbmZvID0gZ2V0SW5zcGVjdGVkV2luZG93SW5mbyhtX2luc3BlY3RlZFZp
ZXdXaW5kb3csIG1faW5zcGVjdGVkVmlld1BhcmVudFdpbmRvdyk7CiAgICAgOjpTZXRXaW5kb3dQ
b3MobV9pbnNwZWN0b3JWaWV3V2luZG93LCAwLCB3aW5kb3dJbmZvLnBhcmVudFdpZHRoIC0gd2lk
dGgsIHdpbmRvd0luZm8udG9wLCB3aWR0aCwgd2luZG93SW5mby5wYXJlbnRIZWlnaHQgLSB3aW5k
b3dJbmZvLnRvcCwgU1dQX05PWk9SREVSKTsKICAgICA6OlNldFdpbmRvd1BvcyhtX2luc3BlY3Rl
ZFZpZXdXaW5kb3csIDAsIHdpbmRvd0luZm8ubGVmdCwgd2luZG93SW5mby50b3AsIHdpbmRvd0lu
Zm8ucGFyZW50V2lkdGggLSB3aW5kb3dJbmZvLmxlZnQsIHdpbmRvd0luZm8ucGFyZW50SGVpZ2h0
IC0gd2luZG93SW5mby50b3AsIFNXUF9OT1pPUkRFUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93
aW4vV2ViVmlldy5jcHAKaW5kZXggMDAwMzUwY2E1ZmUuLjkwMGIwZTdiNTZhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC00Miw5ICs0MiwxMSBAQAogI2luY2x1
ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSA8Q29tbWN0cmwuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0JpdG1hcEluZm8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NhaXJvVXRpbGl0aWVzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HRElV
dGlsaXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hXbmREQy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTI0
NywxNyArMjQ5LDE1IEBAIFdlYlZpZXc6OldlYlZpZXcoUkVDVCByZWN0LCBjb25zdCBBUEk6OlBh
Z2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBIV05EIHBhCiAgICAgV2ViUHJvY2Vzc1Bv
b2wqIHByb2Nlc3NQb29sID0gcGFnZUNvbmZpZ3VyYXRpb24tPnByb2Nlc3NQb29sKCk7CiAgICAg
bV9wYWdlID0gcHJvY2Vzc1Bvb2wtPmNyZWF0ZVdlYlBhZ2UoKm1fcGFnZUNsaWVudCwgV1RGTW92
ZShwYWdlQ29uZmlndXJhdGlvbikpOwogICAgIG1fcGFnZS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsK
KyAgICBtX3BhZ2UtPnNldEludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFj
dG9yRm9yV2luZG93KG1fd2luZG93KSk7CiAKLSAgICBJbnRTaXplIHdpbmRvd1NpemUocmVjdC5y
aWdodCAtIHJlY3QubGVmdCwgcmVjdC5ib3R0b20gLSByZWN0LnRvcCk7CiAjaWYgVVNFKERJUkVD
VDJEKQorICAgIEludFNpemUgd2luZG93U2l6ZShyZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0LCByZWN0
LmJvdHRvbSAtIHJlY3QudG9wKTsKICAgICBEaXJlY3QyRDo6Y3JlYXRlRGV2aWNlQW5kQ29udGV4
dChtX2QzZERldmljZSwgbV9pbW1lZGlhdGVDb250ZXh0KTsKICAgICBtX3BhZ2UtPnNldERldmlj
ZShtX2QzZERldmljZS5nZXQoKSk7CiAgICAgc2V0dXBTd2FwQ2hhaW4od2luZG93U2l6ZSk7CiAj
ZW5kaWYKIAotICAgIGlmIChtX3BhZ2UtPmRyYXdpbmdBcmVhKCkpCi0gICAgICAgIG1fcGFnZS0+
ZHJhd2luZ0FyZWEoKS0+c2V0U2l6ZSh3aW5kb3dTaXplKTsKLQogI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQogICAgIG1fcGFnZS0+c2V0VVJMU2NoZW1lSGFuZGxlckZvclNjaGVtZShSZW1v
dGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OmNyZWF0ZSgqbV9wYWdlKSwgImluc3BlY3RvciIp
OwogI2VuZGlmCkBAIC0zNTAsNiArMzUwLDI1IEBAIHZvaWQgV2ViVmlldzo6d2luZG93QW5jZXN0
cnlEaWRDaGFuZ2UoKQogCiBMUkVTVUxUIFdlYlZpZXc6Om9uTW91c2VFdmVudChIV05EIGhXbmQs
IFVJTlQgbWVzc2FnZSwgV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSwgYm9vbCYgaGFuZGxl
ZCkKIHsKKyAgICBzd2l0Y2ggKG1lc3NhZ2UpIHsKKyAgICBjYXNlIFdNX0xCVVRUT05ET1dOOgor
ICAgIGNhc2UgV01fTUJVVFRPTkRPV046CisgICAgY2FzZSBXTV9SQlVUVE9ORE9XTjoKKyAgICBj
YXNlIFdNX0xCVVRUT05VUDoKKyAgICBjYXNlIFdNX01CVVRUT05VUDoKKyAgICBjYXNlIFdNX1JC
VVRUT05VUDoKKyAgICBjYXNlIFdNX01PVVNFTU9WRToKKyAgICBjYXNlIFdNX0xCVVRUT05EQkxD
TEs6CisgICAgY2FzZSBXTV9NQlVUVE9OREJMQ0xLOgorICAgIGNhc2UgV01fUkJVVFRPTkRCTENM
SzoKKyAgICAgICAgbFBhcmFtID0gbWFrZVNjYWxlZFBvaW50KE1BS0VQT0lOVFMobFBhcmFtKSwg
bV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBX
TV9NT1VTRUxFQVZFOgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisKICAgICBOYXRpdmVXZWJNb3VzZUV2ZW50IG1vdXNl
RXZlbnQgPSBOYXRpdmVXZWJNb3VzZUV2ZW50KGhXbmQsIG1lc3NhZ2UsIHdQYXJhbSwgbFBhcmFt
LCBtX3dhc0FjdGl2YXRlZEJ5TW91c2VFdmVudCk7CiAgICAgc2V0V2FzQWN0aXZhdGVkQnlNb3Vz
ZUV2ZW50KGZhbHNlKTsKIApAQCAtNDc1LDI1ICs0OTQsMzAgQEAgTFJFU1VMVCBXZWJWaWV3Ojpv
bktleUV2ZW50KEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0g
bFBhcmEKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgZHJhd1BhZ2VCYWNrZ3JvdW5k
KEhEQyBkYywgY29uc3QgV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBSRUNUJiByZWN0KQorc3Rh
dGljIHZvaWQgZHJhd1BhZ2VCYWNrZ3JvdW5kKEhEQyBkYywgY29uc3QgV2ViUGFnZVByb3h5KiBw
YWdlLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGF1dG8mIGJhY2tncm91bmRDb2xvciA9
IHBhZ2UtPmJhY2tncm91bmRDb2xvcigpOwogICAgIGlmICghYmFja2dyb3VuZENvbG9yIHx8IGJh
Y2tncm91bmRDb2xvci52YWx1ZSgpLmlzVmlzaWJsZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICA6OkZpbGxSZWN0KGRjLCAmcmVjdCwgcmVpbnRlcnByZXRfY2FzdDxIQlJVU0g+KENPTE9SX1dJ
TkRPVyArIDEpKTsKKyAgICBhdXRvIHNjYWxlZFJlY3QgPSByZWN0OworICAgIHNjYWxlZFJlY3Qu
c2NhbGUocGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgUkVDVCB2aWV3UmVjdCA9IHNj
YWxlZFJlY3Q7CisgICAgOjpGaWxsUmVjdChkYywgJnZpZXdSZWN0LCByZWludGVycHJldF9jYXN0
PEhCUlVTSD4oQ09MT1JfV0lORE9XICsgMSkpOwogfQogCiB2b2lkIFdlYlZpZXc6OnBhaW50KEhE
QyBoZGMsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKIHsKICAgICBpZiAoZGlydHlSZWN0Lmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuOworICAgIGF1dG8gZGV2aWNlU2NhbGVGYWN0b3IgPSBt
X3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgbV9wYWdlLT5lbmRQcmludGluZygpOwog
ICAgIGlmIChhdXRvKiBkcmF3aW5nQXJlYSA9IHN0YXRpY19jYXN0PERyYXdpbmdBcmVhUHJveHlD
b29yZGluYXRlZEdyYXBoaWNzKj4obV9wYWdlLT5kcmF3aW5nQXJlYSgpKSkgewogICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIHBvcnQgV2ViS2l0MSdzIHJlY3QgY29hbGVzY2luZyBsb2dpYyBo
ZXJlLgogICAgICAgICBSZWdpb24gdW5wYWludGVkUmVnaW9uOwogI2lmIFVTRShDQUlSTykKICAg
ICAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gY2Fpcm9fd2luMzJfc3VyZmFjZV9jcmVh
dGUoaGRjKTsKKyAgICAgICAgY2Fpcm9TdXJmYWNlU2V0RGV2aWNlU2NhbGUoc3VyZmFjZSwgZGV2
aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgY2Fpcm9fdCogY29u
dGV4dCA9IGNhaXJvX2NyZWF0ZShzdXJmYWNlKTsKIAogICAgICAgICBkcmF3aW5nQXJlYS0+cGFp
bnQoY29udGV4dCwgZGlydHlSZWN0LCB1bnBhaW50ZWRSZWdpb24pOwpAQCAtNTI1LDcgKzU0OSw5
IEBAIExSRVNVTFQgV2ViVmlldzo6b25QYWludEV2ZW50KEhXTkQgaFduZCwgVUlOVCBtZXNzYWdl
LCBXUEFSQU0sIExQQVJBTSwgYm9vbCYgaGFuCiAKICAgICBQQUlOVFNUUlVDVCBwYWludFN0cnVj
dDsKICAgICBIREMgaGRjID0gOjpCZWdpblBhaW50KG1fd2luZG93LCAmcGFpbnRTdHJ1Y3QpOwot
ICAgIHBhaW50KGhkYywgcGFpbnRTdHJ1Y3QucmNQYWludCk7CisgICAgSW50UmVjdCBkaXJ0eVJl
Y3QocGFpbnRTdHJ1Y3QucmNQYWludCk7CisgICAgZGlydHlSZWN0LnNjYWxlKDEgLyBtX3BhZ2Ut
PmRldmljZVNjYWxlRmFjdG9yKCkpOworICAgIHBhaW50KGhkYywgZGlydHlSZWN0KTsKIAogICAg
IDo6RW5kUGFpbnQobV93aW5kb3csICZwYWludFN0cnVjdCk7CiAKQEAgLTU0NywxNCArNTczLDEz
IEBAIExSRVNVTFQgV2ViVmlldzo6b25QcmludENsaWVudEV2ZW50KEhXTkQgaFduZCwgVUlOVCwg
V1BBUkFNIHdQYXJhbSwgTFBBUkFNLCBib29sCiAKIExSRVNVTFQgV2ViVmlldzo6b25TaXplRXZl
bnQoSFdORCBod25kLCBVSU5ULCBXUEFSQU0sIExQQVJBTSBsUGFyYW0sIGJvb2wmIGhhbmRsZWQp
CiB7Ci0gICAgaW50IHdpZHRoID0gTE9XT1JEKGxQYXJhbSk7Ci0gICAgaW50IGhlaWdodCA9IEhJ
V09SRChsUGFyYW0pOworICAgIG1fdmlld1NpemUgPSBJbnRTaXplKExPV09SRChsUGFyYW0pLCBI
SVdPUkQobFBhcmFtKSk7CisgICAgbV92aWV3U2l6ZS5zY2FsZSgxIC8gZGV2aWNlU2NhbGVGYWN0
b3JGb3JXaW5kb3coaHduZCkpOwogCi0gICAgSW50U2l6ZSB3aW5kb3dTaXplKHdpZHRoLCBoZWln
aHQpOwogCiAgICAgaWYgKG1fcGFnZSAmJiBtX3BhZ2UtPmRyYXdpbmdBcmVhKCkpIHsKICAgICAg
ICAgLy8gRklYTUUgc3BlY2lmeSBjb3JyZWN0bHkgbGF5ZXJQb3NpdGlvbi4KLSAgICAgICAgbV9w
YWdlLT5kcmF3aW5nQXJlYSgpLT5zZXRTaXplKHdpbmRvd1NpemUsIG1fbmV4dFJlc2l6ZVNjcm9s
bE9mZnNldCk7CisgICAgICAgIG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+c2V0U2l6ZShtX3ZpZXdT
aXplLCBtX25leHRSZXNpemVTY3JvbGxPZmZzZXQpOwogICAgICAgICBtX25leHRSZXNpemVTY3Jv
bGxPZmZzZXQgPSBJbnRTaXplKCk7CiAgICAgfQogCkBAIC01NjksNiArNTk0LDcgQEAgTFJFU1VM
VCBXZWJWaWV3OjpvblNpemVFdmVudChIV05EIGh3bmQsIFVJTlQsIFdQQVJBTSwgTFBBUkFNIGxQ
YXJhbSwgYm9vbCYgaGFuZGwKICAgICAgICAgSFJFU1VMVCBociA9IG1fc3dhcENoYWluLT5SZXNp
emVCdWZmZXJzKDAsIDAsIDAsIERYR0lfRk9STUFUX1VOS05PV04sIERYR0lfU1dBUF9DSEFJTl9G
TEFHX0dESV9DT01QQVRJQkxFKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoU1VDQ0VFREVEKGhy
KSk7CiAKKyAgICAgICAgSW50U2l6ZSB3aW5kb3dTaXplKExPV09SRChsUGFyYW0pLCBISVdPUkQo
bFBhcmFtKSk7CiAgICAgICAgIGNvbmZpZ3VyZUJhY2tpbmdTdG9yZSh3aW5kb3dTaXplKTsKICAg
ICB9CiAjZW5kaWYKQEAgLTg2MywxMiArODg5LDE1IEBAIHZvaWQgV2ViVmlldzo6c2V0U2Nyb2xs
T2Zmc2V0T25OZXh0UmVzaXplKGNvbnN0IEludFNpemUmIHNjcm9sbE9mZnNldCkKIHsKICAgICAv
LyBUaGUgbmV4dCB0aW1lIHdlIGdldCBhIFdNX1NJWkUgbWVzc2FnZSwgc2Nyb2xsIGJ5IHRoZSBz
cGVjaWZpZWQgYW1vdW50IGluIG9uU2l6ZUV2ZW50KCkuCiAgICAgbV9uZXh0UmVzaXplU2Nyb2xs
T2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0OworICAgIG1fbmV4dFJlc2l6ZVNjcm9sbE9mZnNldC5zY2Fs
ZSgxIC8gbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKIH0KIAogdm9pZCBXZWJWaWV3Ojpz
ZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYgcmVnaW9uKQogewotICAg
IGNvbnN0IFJFQ1QgciA9IHJlZ2lvbi5ib3VuZHMoKTsKLSAgICA6OkludmFsaWRhdGVSZWN0KG1f
d2luZG93LCAmciwgdHJ1ZSk7CisgICAgYXV0byByZWN0ID0gcmVnaW9uLmJvdW5kcygpOworICAg
IHJlY3Quc2NhbGUobV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICBjb25zdCBSRUNU
IHZpZXdSZWN0KHJlY3QpOworICAgIDo6SW52YWxpZGF0ZVJlY3QobV93aW5kb3csICZ2aWV3UmVj
dCwgdHJ1ZSk7CiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy93aW4vV2ViVmlldy5oCmluZGV4IDI3Zjg5NzIwY2Q1Li41MjAwNmQxNzg1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCkBAIC02NSw2ICs2NSw3IEBAIHB1Ymxp
YzoKICAgICBIV05EIHdpbmRvdygpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93OyB9CiAgICAgdm9p
ZCBzZXRQYXJlbnRXaW5kb3coSFdORCk7CiAgICAgdm9pZCB3aW5kb3dBbmNlc3RyeURpZENoYW5n
ZSgpOworICAgIFdlYkNvcmU6OkludFNpemUgdmlld1NpemUoKSB7IHJldHVybiBtX3ZpZXdTaXpl
OyB9CiAgICAgdm9pZCBzZXRJc0luV2luZG93KGJvb2wpOwogICAgIHZvaWQgc2V0SXNWaXNpYmxl
KGJvb2wpOwogICAgIGJvb2wgaXNXaW5kb3dBY3RpdmUoKTsKQEAgLTE2Nyw2ICsxNjgsNyBAQCBw
cml2YXRlOgogCiAgICAgc3RkOjp1bmlxdWVfcHRyPFdlYktpdDo6UGFnZUNsaWVudEltcGw+IG1f
cGFnZUNsaWVudDsKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBtX3BhZ2U7CisgICAgV2ViQ29y
ZTo6SW50U2l6ZSBtX3ZpZXdTaXplOwogI2lmIFVTRShESVJFQ1QyRCkKICAgICBDT01QdHI8SUQz
RDExRGV2aWNlMT4gbV9kM2REZXZpY2U7CiAgICAgQ09NUHRyPElEM0QxMURldmljZUNvbnRleHQx
PiBtX2ltbWVkaWF0ZUNvbnRleHQ7CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci93aW4v
V2ViS2l0QnJvd3NlcldpbmRvdy5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0QnJv
d3NlcldpbmRvdy5jcHAKaW5kZXggY2FmYWFhNDE2MWYuLjI2OWNjZWMzOTA2IDEwMDY0NAotLS0g
YS9Ub29scy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0QnJvd3NlcldpbmRvdy5jcHAKKysrIGIvVG9v
bHMvTWluaUJyb3dzZXIvd2luL1dlYktpdEJyb3dzZXJXaW5kb3cuY3BwCkBAIC0xNTksNyArMTU5
LDYgQEAgV2ViS2l0QnJvd3NlcldpbmRvdzo6V2ViS2l0QnJvd3NlcldpbmRvdyhCcm93c2VyV2lu
ZG93Q2xpZW50JiBjbGllbnQsIFdLUGFnZUNvbmYKICAgICBXS1BhZ2VTZXRQYWdlU3RhdGVDbGll
bnQocGFnZSwgJnN0YXRlQ2xpZW50LmJhc2UpOwogCiAgICAgdXBkYXRlUHJveHlTZXR0aW5ncygp
OwotICAgIHJlc2V0Wm9vbSgpOwogfQogCiB2b2lkIFdlYktpdEJyb3dzZXJXaW5kb3c6OnVwZGF0
ZVByb3h5U2V0dGluZ3MoKQpAQCAtMjgxLDcgKzI4MCw3IEBAIHZvaWQgV2ViS2l0QnJvd3Nlcldp
bmRvdzo6dXBkYXRlU3RhdGlzdGljcyhIV05EIGhEbGcpCiB2b2lkIFdlYktpdEJyb3dzZXJXaW5k
b3c6OnJlc2V0Wm9vbSgpCiB7CiAgICAgYXV0byBwYWdlID0gV0tWaWV3R2V0UGFnZShtX3ZpZXcu
Z2V0KCkpOwotICAgIFdLUGFnZVNldFBhZ2Vab29tRmFjdG9yKHBhZ2UsIFdlYkNvcmU6OmRldmlj
ZVNjYWxlRmFjdG9yRm9yV2luZG93KGh3bmQoKSkpOworICAgIFdLUGFnZVNldFBhZ2Vab29tRmFj
dG9yKHBhZ2UsIDEpOwogfQogCiB2b2lkIFdlYktpdEJyb3dzZXJXaW5kb3c6Onpvb21JbigpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377874</attachid>
            <date>2019-09-03 01:06:22 -0700</date>
            <delta_ts>2022-01-31 18:17:35 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>wip.diff</filename>
            <type>text/plain</type>
            <size>13067</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJFdmVudEZhY3RvcnkuY3Bw
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvd2luL1dlYkV2ZW50RmFjdG9yeS5jcHAKaW5kZXggYWNm
YTNiYWZmZmIuLmE1MDU1OGI1MWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93
aW4vV2ViRXZlbnRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC93aW4vV2Vi
RXZlbnRGYWN0b3J5LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIldlYkV2ZW50RmFjdG9yeS5oIgogCisjaW5jbHVkZSA8V2ViQ29yZS9HRElVdGls
aXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGxhdGZvcm1XaGVlbEV2ZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
Y3JvbGxiYXIuaD4KQEAgLTM4OCwxMyArMzg5LDE4IEBAIFdlYk1vdXNlRXZlbnQgV2ViRXZlbnRG
YWN0b3J5OjpjcmVhdGVXZWJNb3VzZUV2ZW50KEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFS
CiAgICAgICAgIHR5cGUgPSBXZWJFdmVudDo6S2V5RG93bjsKICAgICB9CiAKLSAgICBQT0lOVCBw
b3NpdGlvbiA9IHBvaW50KGxQYXJhbSk7Ci0gICAgUE9JTlQgZ2xvYmFsUG9zaXRpb24gPSBwb3Np
dGlvbjsKLSAgICA6OkNsaWVudFRvU2NyZWVuKGhXbmQsICZnbG9iYWxQb3NpdGlvbik7CisgICAg
YXV0byBkZXZpY2VTY2FsZUZhY3RvciA9IGRldmljZVNjYWxlRmFjdG9yRm9yV2luZG93KGhXbmQp
OworICAgIFBPSU5UIHBvc2l0aW9uUG9pbnQgPSBwb2ludChsUGFyYW0pOworICAgIFBPSU5UIGds
b2JhbFBvc2l0aW9uUG9pbnQgPSBwb3NpdGlvblBvaW50OworICAgIDo6Q2xpZW50VG9TY3JlZW4o
aFduZCwgJmdsb2JhbFBvc2l0aW9uUG9pbnQpOworICAgIEludFBvaW50IGdsb2JhbFBvc2l0aW9u
KGdsb2JhbFBvc2l0aW9uUG9pbnQpOworICAgIGdsb2JhbFBvc2l0aW9uLnNjYWxlKDEgLyBkZXZp
Y2VTY2FsZUZhY3Rvcik7CisgICAgSW50UG9pbnQgcG9zaXRpb24gPSBwb3NpdGlvblBvaW50Owor
ICAgIHBvc2l0aW9uLnNjYWxlKDEgLyBkZXZpY2VTY2FsZUZhY3Rvcik7CiAKICAgICBkb3VibGUg
dGltZXN0YW1wID0gOjpHZXRUaWNrQ291bnQoKSAqIDAuMDAxOyAvLyA6OkdldFRpY2tDb3VudCBy
ZXR1cm5zIG1pbGxpc2Vjb25kcyAoQ2hyb21lIHVzZXMgR2V0TWVzc2FnZVRpbWUoKSAvIDEwMDAu
MCkKIAotICAgIGludCBjbGlja0NvdW50ID0gV2ViS2l0OjpjbGlja0NvdW50KHR5cGUsIGJ1dHRv
biwgcG9zaXRpb24sIHRpbWVzdGFtcCk7CisgICAgaW50IGNsaWNrQ291bnQgPSBXZWJLaXQ6OmNs
aWNrQ291bnQodHlwZSwgYnV0dG9uLCBwb3NpdGlvblBvaW50LCB0aW1lc3RhbXApOwogICAgIGF1
dG8gbW9kaWZpZXJzID0gbW9kaWZpZXJzRm9yRXZlbnQod1BhcmFtKTsKIAogICAgIHJldHVybiBX
ZWJNb3VzZUV2ZW50KHR5cGUsIGJ1dHRvbiwgMCwgcG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCAw
LCAwLCAwLCBjbGlja0NvdW50LCBtb2RpZmllcnMsIFdhbGxUaW1lOjpub3coKSwgZGlkQWN0aXZh
dGVXZWJWaWV3KTsKQEAgLTQwMiw5ICs0MDgsMTMgQEAgV2ViTW91c2VFdmVudCBXZWJFdmVudEZh
Y3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVIK
IAogV2ViV2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldoZWVsRXZlbnQoSFdO
RCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiB7Ci0g
ICAgUE9JTlQgZ2xvYmFsUG9zaXRpb24gPSBwb2ludChsUGFyYW0pOwotICAgIFBPSU5UIHBvc2l0
aW9uID0gZ2xvYmFsUG9zaXRpb247Ci0gICAgOjpTY3JlZW5Ub0NsaWVudChoV25kLCAmcG9zaXRp
b24pOworICAgIGF1dG8gZGV2aWNlU2NhbGVGYWN0b3IgPSBkZXZpY2VTY2FsZUZhY3RvckZvcldp
bmRvdyhoV25kKTsKKyAgICBQT0lOVCBwb3NpdGlvblBvaW50ID0gcG9pbnQobFBhcmFtKTsKKyAg
ICBJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiA9IHBvc2l0aW9uUG9pbnQ7CisgICAgOjpTY3JlZW5U
b0NsaWVudChoV25kLCAmcG9zaXRpb25Qb2ludCk7CisgICAgZ2xvYmFsUG9zaXRpb24uc2NhbGUo
MSAvIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBJbnRQb2ludCBwb3NpdGlvbiA9IHBvc2l0aW9u
UG9pbnQ7CisgICAgcG9zaXRpb24uc2NhbGUoMSAvIGRldmljZVNjYWxlRmFjdG9yKTsKIAogICAg
IFdlYldoZWVsRXZlbnQ6OkdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0gV2ViV2hlZWxFdmVudDo6
U2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93
aW4vUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGJlNjFiYmRmZTVlLi5jZDU3NjgwZGM4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vUGFnZUNsaWVudEltcGwuY3BwCkBAIC02
OCwxMCArNjgsNyBAQCBXZWJDb3JlOjpGbG9hdFBvaW50IFBhZ2VDbGllbnRJbXBsOjp2aWV3U2Ny
b2xsUG9zaXRpb24oKQogCiBXZWJDb3JlOjpJbnRTaXplIFBhZ2VDbGllbnRJbXBsOjp2aWV3U2l6
ZSgpCiB7Ci0gICAgUkVDVCBjbGllbnRSZWN0OwotICAgIEdldENsaWVudFJlY3QobV92aWV3Lndp
bmRvdygpLCAmY2xpZW50UmVjdCk7Ci0KLSAgICByZXR1cm4gSW50UmVjdChjbGllbnRSZWN0KS5z
aXplKCk7CisgICAgcmV0dXJuIG1fdmlldy52aWV3U2l6ZSgpOwogfQogCiBib29sIFBhZ2VDbGll
bnRJbXBsOjppc1ZpZXdXaW5kb3dBY3RpdmUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1dlYkNvbnRleHRNZW51UHJveHlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1dlYkNvbnRleHRNZW51UHJveHlXaW4uY3BwCmluZGV4IGFhMTcxZjQ4YmM0
Li4zM2QxZTdjNDFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dl
YkNvbnRleHRNZW51UHJveHlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dp
bi9XZWJDb250ZXh0TWVudVByb3h5V2luLmNwcApAQCAtMTAzLDcgKzEwMyw5IEBAIHZvaWQgV2Vi
Q29udGV4dE1lbnVQcm94eVdpbjo6c2hvd0NvbnRleHRNZW51V2l0aEl0ZW1zKFZlY3RvcjxSZWY8
V2ViQ29udGV4dE1lbnVJCiAgICAgcG9wdWxhdGUobV9jb250ZXh0LCBtX21lbnUsIGl0ZW1zKTsK
IAogICAgIFVJTlQgZmxhZ3MgPSBUUE1fUklHSFRCVVRUT04gfCBUUE1fVE9QQUxJR04gfCBUUE1f
VkVSUE9TQU5JTUFUSU9OIHwgVFBNX0hPUklaT05UQUwgfCBUUE1fTEVGVEFMSUdOIHwgVFBNX0hP
UlBPU0FOSU1BVElPTjsKLSAgICBQT0lOVCBwdCB7IG1fY29udGV4dC5tZW51TG9jYXRpb24oKS54
KCksIG1fY29udGV4dC5tZW51TG9jYXRpb24oKS55KCkgfTsKKyAgICBhdXRvIGxvY2F0aW9uID0g
bV9jb250ZXh0Lm1lbnVMb2NhdGlvbigpOworICAgIGxvY2F0aW9uLnNjYWxlKG1fcGFnZS5kZXZp
Y2VTY2FsZUZhY3RvcigpKTsKKyAgICBQT0lOVCBwdCA9IGxvY2F0aW9uOwogICAgIEhXTkQgd25k
ID0gbV9wYWdlLnZpZXdXaWRnZXQoKTsKICAgICA6OkNsaWVudFRvU2NyZWVuKHduZCwgJnB0KTsK
ICAgICA6OlRyYWNrUG9wdXBNZW51RXgobV9tZW51LCBmbGFncywgcHQueCwgcHQueSwgbV9wYWdl
LnZpZXdXaWRnZXQoKSwgbnVsbHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy93aW4vV2ViSW5zcGVjdG9yUHJveHlXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1dlYkluc3BlY3RvclByb3h5V2luLmNwcAppbmRleCBkYjkyZTEyMzc1Mi4uMzExMTI2
MGI2MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJJbnNwZWN0
b3JQcm94eVdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYkluc3Bl
Y3RvclByb3h5V2luLmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIldlYlByb2Nlc3NQ
b29sLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNh
dGVJbmZvLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HRElVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9XZWJDb3JlQnVuZGxlV2luLmg+
CkBAIC0yOTgsMTYgKzI5OSwxOCBAQCBTdHJpbmcgV2ViSW5zcGVjdG9yUHJveHk6Omluc3BlY3Rv
ckJhc2VVUkwoKQogCiB1bnNpZ25lZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0
ZWRXaW5kb3dIZWlnaHQoKQogeworICAgIGF1dG8gZGV2aWNlU2NhbGVGYWN0b3IgPSBXZWJDb3Jl
OjpkZXZpY2VTY2FsZUZhY3RvckZvcldpbmRvdyhtX2luc3BlY3RvclZpZXdXaW5kb3cpOwogICAg
IFJFQ1QgcmVjdDsKICAgICA6OkdldENsaWVudFJlY3QobV9pbnNwZWN0ZWRWaWV3V2luZG93LCAm
cmVjdCk7Ci0gICAgcmV0dXJuIHJlY3QuYm90dG9tIC0gcmVjdC50b3A7CisgICAgcmV0dXJuIChy
ZWN0LmJvdHRvbSAtIHJlY3QudG9wKSAvIGRldmljZVNjYWxlRmFjdG9yOwogfQogCiB1bnNpZ25l
ZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1JbnNwZWN0ZWRXaW5kb3dXaWR0aCgpCiB7Cisg
ICAgYXV0byBkZXZpY2VTY2FsZUZhY3RvciA9IFdlYkNvcmU6OmRldmljZVNjYWxlRmFjdG9yRm9y
V2luZG93KG1faW5zcGVjdG9yVmlld1dpbmRvdyk7CiAgICAgUkVDVCByZWN0OwogICAgIDo6R2V0
Q2xpZW50UmVjdChtX2luc3BlY3RlZFZpZXdXaW5kb3csICZyZWN0KTsKLSAgICByZXR1cm4gcmVj
dC5yaWdodCAtIHJlY3QubGVmdDsKKyAgICByZXR1cm4gKHJlY3QucmlnaHQgLSByZWN0LmxlZnQp
IC8gZGV2aWNlU2NhbGVGYWN0b3I7CiB9CiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRm
b3JtQXR0YWNoKCkKQEAgLTM2MSw2ICszNjQsNyBAQCB2b2lkIFdlYkluc3BlY3RvclByb3h5Ojpw
bGF0Zm9ybURldGFjaCgpCiAKIHZvaWQgV2ViSW5zcGVjdG9yUHJveHk6OnBsYXRmb3JtU2V0QXR0
YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQogeworICAgIGhlaWdodCAqPSBXZWJD
b3JlOjpkZXZpY2VTY2FsZUZhY3RvckZvcldpbmRvdyhtX2luc3BlY3RvclZpZXdXaW5kb3cpOwog
ICAgIGF1dG8gd2luZG93SW5mbyA9IGdldEluc3BlY3RlZFdpbmRvd0luZm8obV9pbnNwZWN0ZWRW
aWV3V2luZG93LCBtX2luc3BlY3RlZFZpZXdQYXJlbnRXaW5kb3cpOwogICAgIDo6U2V0V2luZG93
UG9zKG1faW5zcGVjdG9yVmlld1dpbmRvdywgMCwgd2luZG93SW5mby5sZWZ0LCB3aW5kb3dJbmZv
LnBhcmVudEhlaWdodCAtIGhlaWdodCwgd2luZG93SW5mby5wYXJlbnRXaWR0aCAtIHdpbmRvd0lu
Zm8ubGVmdCwgaGVpZ2h0LCBTV1BfTk9aT1JERVIpOwogICAgIDo6U2V0V2luZG93UG9zKG1faW5z
cGVjdGVkVmlld1dpbmRvdywgMCwgd2luZG93SW5mby5sZWZ0LCB3aW5kb3dJbmZvLnRvcCwgd2lu
ZG93SW5mby5wYXJlbnRXaWR0aCAtIHdpbmRvd0luZm8ubGVmdCwgd2luZG93SW5mby5wYXJlbnRI
ZWlnaHQgLSB3aW5kb3dJbmZvLnRvcCwgU1dQX05PWk9SREVSKTsKQEAgLTM2OCw2ICszNzIsNyBA
QCB2b2lkIFdlYkluc3BlY3RvclByb3h5OjpwbGF0Zm9ybVNldEF0dGFjaGVkV2luZG93SGVpZ2h0
KHVuc2lnbmVkIGhlaWdodCkKIAogdm9pZCBXZWJJbnNwZWN0b3JQcm94eTo6cGxhdGZvcm1TZXRB
dHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkIHdpZHRoKQogeworICAgIHdpZHRoICo9IFdlYkNv
cmU6OmRldmljZVNjYWxlRmFjdG9yRm9yV2luZG93KG1faW5zcGVjdG9yVmlld1dpbmRvdyk7CiAg
ICAgYXV0byB3aW5kb3dJbmZvID0gZ2V0SW5zcGVjdGVkV2luZG93SW5mbyhtX2luc3BlY3RlZFZp
ZXdXaW5kb3csIG1faW5zcGVjdGVkVmlld1BhcmVudFdpbmRvdyk7CiAgICAgOjpTZXRXaW5kb3dQ
b3MobV9pbnNwZWN0b3JWaWV3V2luZG93LCAwLCB3aW5kb3dJbmZvLnBhcmVudFdpZHRoIC0gd2lk
dGgsIHdpbmRvd0luZm8udG9wLCB3aWR0aCwgd2luZG93SW5mby5wYXJlbnRIZWlnaHQgLSB3aW5k
b3dJbmZvLnRvcCwgU1dQX05PWk9SREVSKTsKICAgICA6OlNldFdpbmRvd1BvcyhtX2luc3BlY3Rl
ZFZpZXdXaW5kb3csIDAsIHdpbmRvd0luZm8ubGVmdCwgd2luZG93SW5mby50b3AsIHdpbmRvd0lu
Zm8ucGFyZW50V2lkdGggLSB3aW5kb3dJbmZvLmxlZnQsIHdpbmRvd0luZm8ucGFyZW50SGVpZ2h0
IC0gd2luZG93SW5mby50b3AsIFNXUF9OT1pPUkRFUik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93
aW4vV2ViVmlldy5jcHAKaW5kZXggMDAwMzUwY2E1ZmUuLjRmNGJiODgyM2FhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC00Miw5ICs0MiwxMSBAQAogI2luY2x1
ZGUgIldlYlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSA8Q29tbWN0cmwuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL0JpdG1hcEluZm8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NhaXJvVXRpbGl0aWVzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HRElV
dGlsaXRpZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hXbmREQy5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvSW50UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTI0
NywxNyArMjQ5LDE1IEBAIFdlYlZpZXc6OldlYlZpZXcoUkVDVCByZWN0LCBjb25zdCBBUEk6OlBh
Z2VDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uLCBIV05EIHBhCiAgICAgV2ViUHJvY2Vzc1Bv
b2wqIHByb2Nlc3NQb29sID0gcGFnZUNvbmZpZ3VyYXRpb24tPnByb2Nlc3NQb29sKCk7CiAgICAg
bV9wYWdlID0gcHJvY2Vzc1Bvb2wtPmNyZWF0ZVdlYlBhZ2UoKm1fcGFnZUNsaWVudCwgV1RGTW92
ZShwYWdlQ29uZmlndXJhdGlvbikpOwogICAgIG1fcGFnZS0+aW5pdGlhbGl6ZVdlYlBhZ2UoKTsK
KyAgICBtX3BhZ2UtPnNldEludHJpbnNpY0RldmljZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFj
dG9yRm9yV2luZG93KG1fd2luZG93KSk7CiAKLSAgICBJbnRTaXplIHdpbmRvd1NpemUocmVjdC5y
aWdodCAtIHJlY3QubGVmdCwgcmVjdC5ib3R0b20gLSByZWN0LnRvcCk7CiAjaWYgVVNFKERJUkVD
VDJEKQorICAgIEludFNpemUgd2luZG93U2l6ZShyZWN0LnJpZ2h0IC0gcmVjdC5sZWZ0LCByZWN0
LmJvdHRvbSAtIHJlY3QudG9wKTsKICAgICBEaXJlY3QyRDo6Y3JlYXRlRGV2aWNlQW5kQ29udGV4
dChtX2QzZERldmljZSwgbV9pbW1lZGlhdGVDb250ZXh0KTsKICAgICBtX3BhZ2UtPnNldERldmlj
ZShtX2QzZERldmljZS5nZXQoKSk7CiAgICAgc2V0dXBTd2FwQ2hhaW4od2luZG93U2l6ZSk7CiAj
ZW5kaWYKIAotICAgIGlmIChtX3BhZ2UtPmRyYXdpbmdBcmVhKCkpCi0gICAgICAgIG1fcGFnZS0+
ZHJhd2luZ0FyZWEoKS0+c2V0U2l6ZSh3aW5kb3dTaXplKTsKLQogI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQogICAgIG1fcGFnZS0+c2V0VVJMU2NoZW1lSGFuZGxlckZvclNjaGVtZShSZW1v
dGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6OmNyZWF0ZSgqbV9wYWdlKSwgImluc3BlY3RvciIp
OwogI2VuZGlmCkBAIC00NzUsMTMgKzQ3NSwxNiBAQCBMUkVTVUxUIFdlYlZpZXc6Om9uS2V5RXZl
bnQoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYQog
ICAgIHJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBkcmF3UGFnZUJhY2tncm91bmQoSERDIGRj
LCBjb25zdCBXZWJQYWdlUHJveHkqIHBhZ2UsIGNvbnN0IFJFQ1QmIHJlY3QpCitzdGF0aWMgdm9p
ZCBkcmF3UGFnZUJhY2tncm91bmQoSERDIGRjLCBjb25zdCBXZWJQYWdlUHJveHkqIHBhZ2UsIGNv
bnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgYXV0byYgYmFja2dyb3VuZENvbG9yID0gcGFnZS0+
YmFja2dyb3VuZENvbG9yKCk7CiAgICAgaWYgKCFiYWNrZ3JvdW5kQ29sb3IgfHwgYmFja2dyb3Vu
ZENvbG9yLnZhbHVlKCkuaXNWaXNpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIDo6Rmls
bFJlY3QoZGMsICZyZWN0LCByZWludGVycHJldF9jYXN0PEhCUlVTSD4oQ09MT1JfV0lORE9XICsg
MSkpOworICAgIGF1dG8gc2NhbGVkUmVjdCA9IHJlY3Q7CisgICAgc2NhbGVkUmVjdC5zY2FsZShw
YWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICBSRUNUIHZpZXdSZWN0ID0gc2NhbGVkUmVj
dDsKKyAgICA6OkZpbGxSZWN0KGRjLCAmdmlld1JlY3QsIHJlaW50ZXJwcmV0X2Nhc3Q8SEJSVVNI
PihDT0xPUl9XSU5ET1cgKyAxKSk7CiB9CiAKIHZvaWQgV2ViVmlldzo6cGFpbnQoSERDIGhkYywg
Y29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQpAQCAtNDkzLDcgKzQ5Niw5IEBAIHZvaWQgV2ViVmll
dzo6cGFpbnQoSERDIGhkYywgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0KQogICAgICAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIHBvcnQgV2ViS2l0MSdzIHJlY3QgY29hbGVzY2luZyBsb2dpYyBoZXJl
LgogICAgICAgICBSZWdpb24gdW5wYWludGVkUmVnaW9uOwogI2lmIFVTRShDQUlSTykKKyAgICAg
ICAgYXV0byBkZXZpY2VTY2FsZUZhY3RvciA9IG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsK
ICAgICAgICAgY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlID0gY2Fpcm9fd2luMzJfc3VyZmFjZV9j
cmVhdGUoaGRjKTsKKyAgICAgICAgY2Fpcm9TdXJmYWNlU2V0RGV2aWNlU2NhbGUoc3VyZmFjZSwg
ZGV2aWNlU2NhbGVGYWN0b3IsIGRldmljZVNjYWxlRmFjdG9yKTsKICAgICAgICAgY2Fpcm9fdCog
Y29udGV4dCA9IGNhaXJvX2NyZWF0ZShzdXJmYWNlKTsKIAogICAgICAgICBkcmF3aW5nQXJlYS0+
cGFpbnQoY29udGV4dCwgZGlydHlSZWN0LCB1bnBhaW50ZWRSZWdpb24pOwpAQCAtNTI1LDcgKzUz
MCw5IEBAIExSRVNVTFQgV2ViVmlldzo6b25QYWludEV2ZW50KEhXTkQgaFduZCwgVUlOVCBtZXNz
YWdlLCBXUEFSQU0sIExQQVJBTSwgYm9vbCYgaGFuCiAKICAgICBQQUlOVFNUUlVDVCBwYWludFN0
cnVjdDsKICAgICBIREMgaGRjID0gOjpCZWdpblBhaW50KG1fd2luZG93LCAmcGFpbnRTdHJ1Y3Qp
OwotICAgIHBhaW50KGhkYywgcGFpbnRTdHJ1Y3QucmNQYWludCk7CisgICAgRmxvYXRSZWN0IGRp
cnR5UmVjdChwYWludFN0cnVjdC5yY1BhaW50KTsKKyAgICBkaXJ0eVJlY3Quc2NhbGUoMSAvIG1f
cGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgcGFpbnQoaGRjLCBlbmNsb3NpbmdJbnRS
ZWN0KGRpcnR5UmVjdCkpOwogCiAgICAgOjpFbmRQYWludChtX3dpbmRvdywgJnBhaW50U3RydWN0
KTsKIApAQCAtNTQ3LDE0ICs1NTQsMTEgQEAgTFJFU1VMVCBXZWJWaWV3OjpvblByaW50Q2xpZW50
RXZlbnQoSFdORCBoV25kLCBVSU5ULCBXUEFSQU0gd1BhcmFtLCBMUEFSQU0sIGJvb2wKIAogTFJF
U1VMVCBXZWJWaWV3OjpvblNpemVFdmVudChIV05EIGh3bmQsIFVJTlQsIFdQQVJBTSwgTFBBUkFN
IGxQYXJhbSwgYm9vbCYgaGFuZGxlZCkKIHsKLSAgICBpbnQgd2lkdGggPSBMT1dPUkQobFBhcmFt
KTsKLSAgICBpbnQgaGVpZ2h0ID0gSElXT1JEKGxQYXJhbSk7Ci0KLSAgICBJbnRTaXplIHdpbmRv
d1NpemUod2lkdGgsIGhlaWdodCk7CisgICAgbV92aWV3U2l6ZSA9IGV4cGFuZGVkSW50U2l6ZShG
bG9hdFNpemUoTE9XT1JEKGxQYXJhbSksIEhJV09SRChsUGFyYW0pKSAvIGRldmljZVNjYWxlRmFj
dG9yRm9yV2luZG93KGh3bmQpKTsKIAogICAgIGlmIChtX3BhZ2UgJiYgbV9wYWdlLT5kcmF3aW5n
QXJlYSgpKSB7CiAgICAgICAgIC8vIEZJWE1FIHNwZWNpZnkgY29ycmVjdGx5IGxheWVyUG9zaXRp
b24uCi0gICAgICAgIG1fcGFnZS0+ZHJhd2luZ0FyZWEoKS0+c2V0U2l6ZSh3aW5kb3dTaXplLCBt
X25leHRSZXNpemVTY3JvbGxPZmZzZXQpOworICAgICAgICBtX3BhZ2UtPmRyYXdpbmdBcmVhKCkt
PnNldFNpemUobV92aWV3U2l6ZSwgbV9uZXh0UmVzaXplU2Nyb2xsT2Zmc2V0KTsKICAgICAgICAg
bV9uZXh0UmVzaXplU2Nyb2xsT2Zmc2V0ID0gSW50U2l6ZSgpOwogICAgIH0KIApAQCAtNTY5LDYg
KzU3Myw3IEBAIExSRVNVTFQgV2ViVmlldzo6b25TaXplRXZlbnQoSFdORCBod25kLCBVSU5ULCBX
UEFSQU0sIExQQVJBTSBsUGFyYW0sIGJvb2wmIGhhbmRsCiAgICAgICAgIEhSRVNVTFQgaHIgPSBt
X3N3YXBDaGFpbi0+UmVzaXplQnVmZmVycygwLCAwLCAwLCBEWEdJX0ZPUk1BVF9VTktOT1dOLCBE
WEdJX1NXQVBfQ0hBSU5fRkxBR19HRElfQ09NUEFUSUJMRSk7CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKFNVQ0NFRURFRChocikpOwogCisgICAgICAgIEludFNpemUgd2luZG93U2l6ZShMT1dPUkQo
bFBhcmFtKSwgSElXT1JEKGxQYXJhbSkpOwogICAgICAgICBjb25maWd1cmVCYWNraW5nU3RvcmUo
d2luZG93U2l6ZSk7CiAgICAgfQogI2VuZGlmCkBAIC04NjMsMTIgKzg2OCwxNSBAQCB2b2lkIFdl
YlZpZXc6OnNldFNjcm9sbE9mZnNldE9uTmV4dFJlc2l6ZShjb25zdCBJbnRTaXplJiBzY3JvbGxP
ZmZzZXQpCiB7CiAgICAgLy8gVGhlIG5leHQgdGltZSB3ZSBnZXQgYSBXTV9TSVpFIG1lc3NhZ2Us
IHNjcm9sbCBieSB0aGUgc3BlY2lmaWVkIGFtb3VudCBpbiBvblNpemVFdmVudCgpLgogICAgIG1f
bmV4dFJlc2l6ZVNjcm9sbE9mZnNldCA9IHNjcm9sbE9mZnNldDsKKyAgICBtX25leHRSZXNpemVT
Y3JvbGxPZmZzZXQuc2NhbGUoMSAvIG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CiB9CiAK
IHZvaWQgV2ViVmlldzo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBXZWJDb3JlOjpSZWdpb24m
IHJlZ2lvbikKIHsKLSAgICBjb25zdCBSRUNUIHIgPSByZWdpb24uYm91bmRzKCk7Ci0gICAgOjpJ
bnZhbGlkYXRlUmVjdChtX3dpbmRvdywgJnIsIHRydWUpOworICAgIGF1dG8gcmVjdCA9IHJlZ2lv
bi5ib3VuZHMoKTsKKyAgICByZWN0LnNjYWxlKG1fcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7
CisgICAgY29uc3QgUkVDVCB2aWV3UmVjdChyZWN0KTsKKyAgICA6OkludmFsaWRhdGVSZWN0KG1f
d2luZG93LCAmdmlld1JlY3QsIHRydWUpOwogfQogCiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfQ09M
T1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuaAppbmRleCAyN2Y4OTcyMGNkNS4u
NTIwMDZkMTc4NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJW
aWV3LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZpZXcuaApAQCAtNjUs
NiArNjUsNyBAQCBwdWJsaWM6CiAgICAgSFdORCB3aW5kb3coKSBjb25zdCB7IHJldHVybiBtX3dp
bmRvdzsgfQogICAgIHZvaWQgc2V0UGFyZW50V2luZG93KEhXTkQpOwogICAgIHZvaWQgd2luZG93
QW5jZXN0cnlEaWRDaGFuZ2UoKTsKKyAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCkgeyBy
ZXR1cm4gbV92aWV3U2l6ZTsgfQogICAgIHZvaWQgc2V0SXNJbldpbmRvdyhib29sKTsKICAgICB2
b2lkIHNldElzVmlzaWJsZShib29sKTsKICAgICBib29sIGlzV2luZG93QWN0aXZlKCk7CkBAIC0x
NjcsNiArMTY4LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJLaXQ6OlBh
Z2VDbGllbnRJbXBsPiBtX3BhZ2VDbGllbnQ7CiAgICAgUmVmUHRyPFdlYlBhZ2VQcm94eT4gbV9w
YWdlOworICAgIFdlYkNvcmU6OkludFNpemUgbV92aWV3U2l6ZTsKICNpZiBVU0UoRElSRUNUMkQp
CiAgICAgQ09NUHRyPElEM0QxMURldmljZTE+IG1fZDNkRGV2aWNlOwogICAgIENPTVB0cjxJRDNE
MTFEZXZpY2VDb250ZXh0MT4gbV9pbW1lZGlhdGVDb250ZXh0OwpkaWZmIC0tZ2l0IGEvVG9vbHMv
TWluaUJyb3dzZXIvd2luL1dlYktpdEJyb3dzZXJXaW5kb3cuY3BwIGIvVG9vbHMvTWluaUJyb3dz
ZXIvd2luL1dlYktpdEJyb3dzZXJXaW5kb3cuY3BwCmluZGV4IGNhZmFhYTQxNjFmLi4yNjljY2Vj
MzkwNiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL1dlYktpdEJyb3dzZXJXaW5k
b3cuY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3dpbi9XZWJLaXRCcm93c2VyV2luZG93LmNw
cApAQCAtMTU5LDcgKzE1OSw2IEBAIFdlYktpdEJyb3dzZXJXaW5kb3c6OldlYktpdEJyb3dzZXJX
aW5kb3coQnJvd3NlcldpbmRvd0NsaWVudCYgY2xpZW50LCBXS1BhZ2VDb25mCiAgICAgV0tQYWdl
U2V0UGFnZVN0YXRlQ2xpZW50KHBhZ2UsICZzdGF0ZUNsaWVudC5iYXNlKTsKIAogICAgIHVwZGF0
ZVByb3h5U2V0dGluZ3MoKTsKLSAgICByZXNldFpvb20oKTsKIH0KIAogdm9pZCBXZWJLaXRCcm93
c2VyV2luZG93Ojp1cGRhdGVQcm94eVNldHRpbmdzKCkKQEAgLTI4MSw3ICsyODAsNyBAQCB2b2lk
IFdlYktpdEJyb3dzZXJXaW5kb3c6OnVwZGF0ZVN0YXRpc3RpY3MoSFdORCBoRGxnKQogdm9pZCBX
ZWJLaXRCcm93c2VyV2luZG93OjpyZXNldFpvb20oKQogewogICAgIGF1dG8gcGFnZSA9IFdLVmll
d0dldFBhZ2UobV92aWV3LmdldCgpKTsKLSAgICBXS1BhZ2VTZXRQYWdlWm9vbUZhY3RvcihwYWdl
LCBXZWJDb3JlOjpkZXZpY2VTY2FsZUZhY3RvckZvcldpbmRvdyhod25kKCkpKTsKKyAgICBXS1Bh
Z2VTZXRQYWdlWm9vbUZhY3RvcihwYWdlLCAxKTsKIH0KIAogdm9pZCBXZWJLaXRCcm93c2VyV2lu
ZG93Ojp6b29tSW4oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450489</attachid>
            <date>2022-01-31 18:17:35 -0800</date>
            <delta_ts>2022-01-31 18:17:35 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>wc-2022-02-01.diff</filename>
            <type>text/plain</type>
            <size>25420</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy93Yy9XQ1NjZW5l
LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy93Yy9XQ1NjZW5lLmNwcApp
bmRleCBkMmI5MjkxZDAzYzAuLjk3ZDNlYWQ2ZGE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9HUFVQcm9jZXNzL2dyYXBoaWNzL3djL1dDU2NlbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
R1BVUHJvY2Vzcy9ncmFwaGljcy93Yy9XQ1NjZW5lLmNwcApAQCAtMTMzLDcgKzEzMyw3IEBAIHN0
ZDo6b3B0aW9uYWw8VXBkYXRlSW5mbz4gV0NTY2VuZTo6dXBkYXRlKFdDVXBhdGVJbmZvJiYgdXBk
YXRlKQogICAgICAgICAgICAgICAgICAgICBsYXllci0+dGV4bWFwTGF5ZXIuc2V0QmFja2luZ1N0
b3JlKCZiYWNraW5nU3RvcmUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBh
dXRvJiBiYWNraW5nU3RvcmUgPSAqbGF5ZXItPmJhY2tpbmdTdG9yZTsKLSAgICAgICAgICAgICAg
ICBiYWNraW5nU3RvcmUuc2V0U2l6ZShXZWJDb3JlOjpJbnRTaXplKGxheWVyLT50ZXhtYXBMYXll
ci5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICBiYWNraW5nU3RvcmUuc2V0U2l6ZShsYXllclVw
ZGF0ZS5iYWNraW5nU3RvcmVTaXplKTsKICAgICAgICAgICAgICAgICBiYWNraW5nU3RvcmUucmVt
b3ZlVW5jb3ZlcmVkVGlsZXMobGF5ZXJVcGRhdGUuY292ZXJhZ2VSZWN0KTsKICAgICAgICAgICAg
ICAgICBhdXRvIGJpdG1hcCA9IGxheWVyVXBkYXRlLmJhY2tpbmdTdG9yZS5iaXRtYXAoKTsKICAg
ICAgICAgICAgICAgICBpZiAoYml0bWFwKSB7CkBAIC0xOTgsOCArMTk4LDcgQEAgc3RkOjpvcHRp
b25hbDxVcGRhdGVJbmZvPiBXQ1NjZW5lOjp1cGRhdGUoV0NVcGF0ZUluZm8mJiB1cGRhdGUpCiAg
ICAgYXV0byByb290TGF5ZXIgPSAmbV9sYXllcnMuZ2V0KHVwZGF0ZS5yb290TGF5ZXIpLT50ZXht
YXBMYXllcjsKICAgICByb290TGF5ZXItPmFwcGx5QW5pbWF0aW9uc1JlY3Vyc2l2ZWx5KE1vbm90
b25pY1RpbWU6Om5vdygpKTsKIAotICAgIFdlYkNvcmU6OkludFNpemUgd2luZG93U2l6ZSA9IGV4
cGFuZGVkSW50U2l6ZShyb290TGF5ZXItPnNpemUoKSk7Ci0gICAgZ2xWaWV3cG9ydCgwLCAwLCB3
aW5kb3dTaXplLndpZHRoKCksIHdpbmRvd1NpemUuaGVpZ2h0KCkpOworICAgIGdsVmlld3BvcnQo
MCwgMCwgdXBkYXRlLnZpZXdwb3J0LndpZHRoKCksIHVwZGF0ZS52aWV3cG9ydC5oZWlnaHQoKSk7
CiAKICAgICBtX3RleHR1cmVNYXBwZXItPmJlZ2luUGFpbnRpbmcobV91c2VzT2Zmc2NyZWVuUmVu
ZGVyaW5nID8gV2ViQ29yZTo6VGV4dHVyZU1hcHBlcjo6UGFpbnRpbmdNaXJyb3JlZCA6IDApOwog
ICAgIHJvb3RMYXllci0+cGFpbnQoKm1fdGV4dHVyZU1hcHBlcik7CkBAIC0yMDgsMTUgKzIwNywx
NSBAQCBzdGQ6Om9wdGlvbmFsPFVwZGF0ZUluZm8+IFdDU2NlbmU6OnVwZGF0ZShXQ1VwYXRlSW5m
byYmIHVwZGF0ZSkKIAogICAgIHN0ZDo6b3B0aW9uYWw8VXBkYXRlSW5mbz4gcmVzdWx0OwogICAg
IGlmIChtX3VzZXNPZmZzY3JlZW5SZW5kZXJpbmcpIHsKLSAgICAgICAgYXV0byBiaXRtYXAgPSBT
aGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNoYXJlYWJsZSh3aW5kb3dTaXplLCB7IH0pOwotICAgICAg
ICBnbFJlYWRQaXhlbHMoMCwgMCwgd2luZG93U2l6ZS53aWR0aCgpLCB3aW5kb3dTaXplLmhlaWdo
dCgpLCBHTF9CR1JBX0VYVCwgR0xfVU5TSUdORURfQllURSwgYml0bWFwLT5kYXRhKCkpOworICAg
ICAgICBhdXRvIGJpdG1hcCA9IFNoYXJlYWJsZUJpdG1hcDo6Y3JlYXRlU2hhcmVhYmxlKHVwZGF0
ZS52aWV3cG9ydCwgeyB9KTsKKyAgICAgICAgZ2xSZWFkUGl4ZWxzKDAsIDAsIHVwZGF0ZS52aWV3
cG9ydC53aWR0aCgpLCB1cGRhdGUudmlld3BvcnQuaGVpZ2h0KCksIEdMX0JHUkFfRVhULCBHTF9V
TlNJR05FRF9CWVRFLCBiaXRtYXAtPmRhdGEoKSk7CiAgICAgICAgIFNoYXJlYWJsZUJpdG1hcDo6
SGFuZGxlIGhhbmRsZTsKICAgICAgICAgaWYgKGJpdG1hcC0+Y3JlYXRlSGFuZGxlKGhhbmRsZSkp
IHsKICAgICAgICAgICAgIHJlc3VsdC5lbXBsYWNlKCk7Ci0gICAgICAgICAgICByZXN1bHQtPnZp
ZXdTaXplID0gd2luZG93U2l6ZTsKKyAgICAgICAgICAgIHJlc3VsdC0+dmlld1NpemUgPSB1cGRh
dGUudmlld3BvcnQ7CiAgICAgICAgICAgICByZXN1bHQtPmRldmljZVNjYWxlRmFjdG9yID0gMTsK
ICAgICAgICAgICAgIHJlc3VsdC0+dXBkYXRlU2NhbGVGYWN0b3IgPSAxOwotICAgICAgICAgICAg
V2ViQ29yZTo6SW50UmVjdCB2aWV3cG9ydCA9IHsgeyB9LCB3aW5kb3dTaXplIH07CisgICAgICAg
ICAgICBXZWJDb3JlOjpJbnRSZWN0IHZpZXdwb3J0ID0geyB7IH0sIHVwZGF0ZS52aWV3cG9ydCB9
OwogICAgICAgICAgICAgcmVzdWx0LT51cGRhdGVSZWN0Qm91bmRzID0gdmlld3BvcnQ7CiAgICAg
ICAgICAgICByZXN1bHQtPnVwZGF0ZVJlY3RzLmFwcGVuZCh2aWV3cG9ydCk7CiAgICAgICAgICAg
ICByZXN1bHQtPmJpdG1hcEhhbmRsZSA9IFdURk1vdmUoaGFuZGxlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJFdmVudEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvd2luL1dlYkV2ZW50RmFjdG9yeS5jcHAKaW5kZXggODVkNmY3NDExNGY0Li42ODgw
NmEwZDFmZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJFdmVudEZh
Y3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL3dpbi9XZWJFdmVudEZhY3Rvcnku
Y3BwCkBAIC0zOTAsMTMgKzM5MCwxOCBAQCBXZWJNb3VzZUV2ZW50IFdlYkV2ZW50RmFjdG9yeTo6
Y3JlYXRlV2ViTW91c2VFdmVudChIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUgogICAgICAg
ICB0eXBlID0gV2ViRXZlbnQ6OktleURvd247CiAgICAgfQogCi0gICAgUE9JTlQgcG9zaXRpb24g
PSBwb2ludChsUGFyYW0pOwotICAgIFBPSU5UIGdsb2JhbFBvc2l0aW9uID0gcG9zaXRpb247Ci0g
ICAgOjpDbGllbnRUb1NjcmVlbihoV25kLCAmZ2xvYmFsUG9zaXRpb24pOworICAgIGF1dG8gZGV2
aWNlU2NhbGVGYWN0b3IgPSBkZXZpY2VTY2FsZUZhY3RvckZvcldpbmRvdyhoV25kKTsKKyAgICBQ
T0lOVCBwb3NpdGlvblBvaW50ID0gcG9pbnQobFBhcmFtKTsKKyAgICBQT0lOVCBnbG9iYWxQb3Np
dGlvblBvaW50ID0gcG9zaXRpb25Qb2ludDsKKyAgICA6OkNsaWVudFRvU2NyZWVuKGhXbmQsICZn
bG9iYWxQb3NpdGlvblBvaW50KTsKKyAgICBJbnRQb2ludCBnbG9iYWxQb3NpdGlvbihnbG9iYWxQ
b3NpdGlvblBvaW50KTsKKyAgICBnbG9iYWxQb3NpdGlvbi5zY2FsZSgxIC8gZGV2aWNlU2NhbGVG
YWN0b3IpOworICAgIEludFBvaW50IHBvc2l0aW9uID0gcG9zaXRpb25Qb2ludDsKKyAgICBwb3Np
dGlvbi5zY2FsZSgxIC8gZGV2aWNlU2NhbGVGYWN0b3IpOwogCiAgICAgZG91YmxlIHRpbWVzdGFt
cCA9IDo6R2V0VGlja0NvdW50KCkgKiAwLjAwMTsgLy8gOjpHZXRUaWNrQ291bnQgcmV0dXJucyBt
aWxsaXNlY29uZHMgKENocm9tZSB1c2VzIEdldE1lc3NhZ2VUaW1lKCkgLyAxMDAwLjApCiAKLSAg
ICBpbnQgY2xpY2tDb3VudCA9IFdlYktpdDo6Y2xpY2tDb3VudCh0eXBlLCBidXR0b24sIHBvc2l0
aW9uLCB0aW1lc3RhbXApOworICAgIGludCBjbGlja0NvdW50ID0gV2ViS2l0OjpjbGlja0NvdW50
KHR5cGUsIGJ1dHRvbiwgcG9zaXRpb25Qb2ludCwgdGltZXN0YW1wKTsKICAgICBhdXRvIG1vZGlm
aWVycyA9IG1vZGlmaWVyc0ZvckV2ZW50KHdQYXJhbSk7CiAgICAgYXV0byBidXR0b25zID0gYnV0
dG9uc0ZvckV2ZW50KHdQYXJhbSk7CiAKQEAgLTQwNSw5ICs0MTAsMTMgQEAgV2ViTW91c2VFdmVu
dCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYk1vdXNlRXZlbnQoSFdORCBoV25kLCBVSU5UIG1l
c3NhZ2UsIFdQQVIKIAogV2ViV2hlZWxFdmVudCBXZWJFdmVudEZhY3Rvcnk6OmNyZWF0ZVdlYldo
ZWVsRXZlbnQoSFdORCBoV25kLCBVSU5UIG1lc3NhZ2UsIFdQQVJBTSB3UGFyYW0sIExQQVJBTSBs
UGFyYW0pCiB7Ci0gICAgUE9JTlQgZ2xvYmFsUG9zaXRpb24gPSBwb2ludChsUGFyYW0pOwotICAg
IFBPSU5UIHBvc2l0aW9uID0gZ2xvYmFsUG9zaXRpb247Ci0gICAgOjpTY3JlZW5Ub0NsaWVudCho
V25kLCAmcG9zaXRpb24pOworICAgIGF1dG8gZGV2aWNlU2NhbGVGYWN0b3IgPSBkZXZpY2VTY2Fs
ZUZhY3RvckZvcldpbmRvdyhoV25kKTsKKyAgICBQT0lOVCBwb3NpdGlvblBvaW50ID0gcG9pbnQo
bFBhcmFtKTsKKyAgICBJbnRQb2ludCBnbG9iYWxQb3NpdGlvbiA9IHBvc2l0aW9uUG9pbnQ7Cisg
ICAgOjpTY3JlZW5Ub0NsaWVudChoV25kLCAmcG9zaXRpb25Qb2ludCk7CisgICAgZ2xvYmFsUG9z
aXRpb24uc2NhbGUoMSAvIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICBJbnRQb2ludCBwb3NpdGlv
biA9IHBvc2l0aW9uUG9pbnQ7CisgICAgcG9zaXRpb24uc2NhbGUoMSAvIGRldmljZVNjYWxlRmFj
dG9yKTsKIAogICAgIFdlYldoZWVsRXZlbnQ6OkdyYW51bGFyaXR5IGdyYW51bGFyaXR5ID0gV2Vi
V2hlZWxFdmVudDo6U2Nyb2xsQnlQaXhlbFdoZWVsRXZlbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9CYWNraW5nU3RvcmUuY3BwCmluZGV4IGFiNzkwNTAyNzU1YS4uMzA2NWIyMGFmNTA2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9CYWNraW5nU3RvcmUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0JhY2tpbmdTdG9yZS5jcHAKQEAgLTU1LDcgKzU1LDcg
QEAgdm9pZCBCYWNraW5nU3RvcmU6OmluY29ycG9yYXRlVXBkYXRlKGNvbnN0IFVwZGF0ZUluZm8m
IHVwZGF0ZUluZm8pCiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBJbnRTaXplIHVwZGF0ZVNpemUg
PSB1cGRhdGVJbmZvLnVwZGF0ZVJlY3RCb3VuZHMuc2l6ZSgpOwogICAgIHVwZGF0ZVNpemUuc2Nh
bGUobV9kZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgQVNTRVJUKGJpdG1hcC0+c2l6ZSgpID09IHVw
ZGF0ZVNpemUpOworICAgIC8vQVNTRVJUKGJpdG1hcC0+c2l6ZSgpID09IHVwZGF0ZVNpemUpOwog
I2VuZGlmCiAgICAgCiAgICAgaW5jb3Jwb3JhdGVVcGRhdGUoYml0bWFwLmdldCgpLCB1cGRhdGVJ
bmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3djL0RyYXdpbmdBcmVh
UHJveHlXQy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93Yy9EcmF3aW5nQXJlYVByb3h5
V0MuY3BwCmluZGV4IGVlNGVjZmUwYTU2ZS4uMDcwNTFjYmQxOTg1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93Yy9EcmF3aW5nQXJlYVByb3h5V0MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL3djL0RyYXdpbmdBcmVhUHJveHlXQy5jcHAKQEAgLTUyLDExICs1
MiwxNiBAQCB2b2lkIERyYXdpbmdBcmVhUHJveHlXQzo6cGFpbnQoQmFja2luZ1N0b3JlOjpQbGF0
Zm9ybUdyYXBoaWNzQ29udGV4dCBjb250ZXh0LCBjbwogICAgIHVucGFpbnRlZFJlZ2lvbi5zdWJ0
cmFjdChXZWJDb3JlOjpJbnRSZWN0KHsgfSwgbV9iYWNraW5nU3RvcmUtPnNpemUoKSkpOwogfQog
Cit2b2lkIERyYXdpbmdBcmVhUHJveHlXQzo6ZGV2aWNlU2NhbGVGYWN0b3JEaWRDaGFuZ2UoKQor
eworICAgIHNpemVEaWRDaGFuZ2UoKTsKK30KKwogdm9pZCBEcmF3aW5nQXJlYVByb3h5V0M6OnNp
emVEaWRDaGFuZ2UoKQogewogICAgIGRpc2NhcmRCYWNraW5nU3RvcmUoKTsKICAgICBtX2N1cnJl
bnRCYWNraW5nU3RvcmVTdGF0ZUlEKys7Ci0gICAgc2VuZChNZXNzYWdlczo6RHJhd2luZ0FyZWE6
OlVwZGF0ZUdlb21ldHJ5KG1fY3VycmVudEJhY2tpbmdTdG9yZVN0YXRlSUQsIG1fc2l6ZSkpOwor
ICAgIHNlbmQoTWVzc2FnZXM6OkRyYXdpbmdBcmVhOjpVcGRhdGVHZW9tZXRyeShtX2N1cnJlbnRC
YWNraW5nU3RvcmVTdGF0ZUlELCBtX3NpemUsIG1fd2ViUGFnZVByb3h5LmRldmljZVNjYWxlRmFj
dG9yKCkpKTsKIH0KIAogdm9pZCBEcmF3aW5nQXJlYVByb3h5V0M6OmRpc3BhdGNoQWZ0ZXJFbnN1
cmluZ0RyYXdpbmcoV1RGOjpGdW5jdGlvbjx2b2lkKENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2Mv
RHJhd2luZ0FyZWFQcm94eVdDLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93Yy9EcmF3aW5n
QXJlYVByb3h5V0MuaAppbmRleCAwZjYzMWU0MTExOTAuLjMwZmUxMGY2YzZiOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2MvRHJhd2luZ0FyZWFQcm94eVdDLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2MvRHJhd2luZ0FyZWFQcm94eVdDLmgKQEAgLTQyLDcg
KzQyLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vIERyYXdpbmdBcmVhUHJveHkKLSAg
ICB2b2lkIGRldmljZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKCkgb3ZlcnJpZGUgeyB9CisgICAgdm9p
ZCBkZXZpY2VTY2FsZUZhY3RvckRpZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2l6ZURp
ZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzcGF0Y2hBZnRlckVuc3VyaW5nRHJhd2lu
ZyhXVEY6OkZ1bmN0aW9uPHZvaWQoQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpIG92ZXJyaWRlOwog
ICAgIC8vIG1lc3NhZ2UgaGFuZGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9Q
YWdlQ2xpZW50SW1wbC5jcHAKaW5kZXggNGJmZTRkNmNlNTA3Li5mYjM3MzE1YmRlN2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9QYWdlQ2xpZW50SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1BhZ2VDbGllbnRJbXBsLmNwcApAQCAtNzAs
MTAgKzcwLDcgQEAgV2ViQ29yZTo6RmxvYXRQb2ludCBQYWdlQ2xpZW50SW1wbDo6dmlld1Njcm9s
bFBvc2l0aW9uKCkKIAogV2ViQ29yZTo6SW50U2l6ZSBQYWdlQ2xpZW50SW1wbDo6dmlld1NpemUo
KQogewotICAgIFJFQ1QgY2xpZW50UmVjdDsKLSAgICBHZXRDbGllbnRSZWN0KG1fdmlldy53aW5k
b3coKSwgJmNsaWVudFJlY3QpOwotCi0gICAgcmV0dXJuIEludFJlY3QoY2xpZW50UmVjdCkuc2l6
ZSgpOworICAgIHJldHVybiBtX3ZpZXcudmlld1NpemUoKTsKIH0KIAogYm9vbCBQYWdlQ2xpZW50
SW1wbDo6aXNWaWV3V2luZG93QWN0aXZlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dpbi9XZWJDb250ZXh0TWVudVByb3h5V2luLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL3dpbi9XZWJDb250ZXh0TWVudVByb3h5V2luLmNwcAppbmRleCAzZGNkMGVjMzVjOTIu
LjE4ZjJlMmY5NDRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dl
YkNvbnRleHRNZW51UHJveHlXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dp
bi9XZWJDb250ZXh0TWVudVByb3h5V2luLmNwcApAQCAtOTQsNyArOTQsOSBAQCB2b2lkIFdlYkNv
bnRleHRNZW51UHJveHlXaW46OnNob3dDb250ZXh0TWVudVdpdGhJdGVtcyhWZWN0b3I8UmVmPFdl
YkNvbnRleHRNZW51SQogICAgIHBvcHVsYXRlKG1fY29udGV4dCwgbV9tZW51LCBpdGVtcyk7CiAK
ICAgICBVSU5UIGZsYWdzID0gVFBNX1JJR0hUQlVUVE9OIHwgVFBNX1RPUEFMSUdOIHwgVFBNX1ZF
UlBPU0FOSU1BVElPTiB8IFRQTV9IT1JJWk9OVEFMIHwgVFBNX0xFRlRBTElHTiB8IFRQTV9IT1JQ
T1NBTklNQVRJT047Ci0gICAgUE9JTlQgcHQgeyBtX2NvbnRleHQubWVudUxvY2F0aW9uKCkueCgp
LCBtX2NvbnRleHQubWVudUxvY2F0aW9uKCkueSgpIH07CisgICAgYXV0byBsb2NhdGlvbiA9IG1f
Y29udGV4dC5tZW51TG9jYXRpb24oKTsKKyAgICBsb2NhdGlvbi5zY2FsZShwYWdlKCktPmRldmlj
ZVNjYWxlRmFjdG9yKCkpOworICAgIFBPSU5UIHB0ID0gbG9jYXRpb247CiAgICAgSFdORCB3bmQg
PSBwYWdlKCktPnZpZXdXaWRnZXQoKTsKICAgICA6OkNsaWVudFRvU2NyZWVuKHduZCwgJnB0KTsK
ICAgICA6OlRyYWNrUG9wdXBNZW51RXgobV9tZW51LCBmbGFncywgcHQueCwgcHQueSwgcGFnZSgp
LT52aWV3V2lkZ2V0KCksIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3Mvd2luL1dlYlZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlZp
ZXcuY3BwCmluZGV4IGU1YThjM2I2OWUxNy4uMDEwNDNkNjM4NmY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3Mvd2luL1dlYlZpZXcuY3BwCkBAIC00Myw5ICs0MywxMSBAQAogI2luY2x1ZGUgIldl
YlByb2Nlc3NQb29sLmgiCiAjaW5jbHVkZSA8Q29tbWN0cmwuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0JpdG1hcEluZm8uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL0NhaXJvVXRpbGl0aWVzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9DdXJzb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRvci5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HRElVdGlsaXRp
ZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0hXbmREQy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW50
UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KQEAgLTIzMywxMSAr
MjM1LDcgQEAgV2ViVmlldzo6V2ViVmlldyhSRUNUIHJlY3QsIGNvbnN0IEFQSTo6UGFnZUNvbmZp
Z3VyYXRpb24mIGNvbmZpZ3VyYXRpb24sIEhXTkQgcGEKICAgICBXZWJQcm9jZXNzUG9vbCogcHJv
Y2Vzc1Bvb2wgPSBwYWdlQ29uZmlndXJhdGlvbi0+cHJvY2Vzc1Bvb2woKTsKICAgICBtX3BhZ2Ug
PSBwcm9jZXNzUG9vbC0+Y3JlYXRlV2ViUGFnZSgqbV9wYWdlQ2xpZW50LCBXVEZNb3ZlKHBhZ2VD
b25maWd1cmF0aW9uKSk7CiAgICAgbV9wYWdlLT5pbml0aWFsaXplV2ViUGFnZSgpOwotCi0gICAg
SW50U2l6ZSB3aW5kb3dTaXplKHJlY3QucmlnaHQgLSByZWN0LmxlZnQsIHJlY3QuYm90dG9tIC0g
cmVjdC50b3ApOwotCi0gICAgaWYgKG1fcGFnZS0+ZHJhd2luZ0FyZWEoKSkKLSAgICAgICAgbV9w
YWdlLT5kcmF3aW5nQXJlYSgpLT5zZXRTaXplKHdpbmRvd1NpemUpOworICAgIG1fcGFnZS0+c2V0
SW50cmluc2ljRGV2aWNlU2NhbGVGYWN0b3IoZGV2aWNlU2NhbGVGYWN0b3JGb3JXaW5kb3cobV93
aW5kb3cpKTsKIAogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9SKQogICAgIG1fcGFnZS0+c2V0
VVJMU2NoZW1lSGFuZGxlckZvclNjaGVtZShSZW1vdGVJbnNwZWN0b3JQcm90b2NvbEhhbmRsZXI6
OmNyZWF0ZSgqbV9wYWdlKSwgImluc3BlY3RvciIpOwpAQCAtNDY1LDEzICs0NjMsMTYgQEAgTFJF
U1VMVCBXZWJWaWV3OjpvbktleUV2ZW50KEhXTkQgaFduZCwgVUlOVCBtZXNzYWdlLCBXUEFSQU0g
d1BhcmFtLCBMUEFSQU0gbFBhcmEKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgZHJh
d1BhZ2VCYWNrZ3JvdW5kKEhEQyBkYywgY29uc3QgV2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBS
RUNUJiByZWN0KQorc3RhdGljIHZvaWQgZHJhd1BhZ2VCYWNrZ3JvdW5kKEhEQyBkYywgY29uc3Qg
V2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIGF1dG8mIGJh
Y2tncm91bmRDb2xvciA9IHBhZ2UtPmJhY2tncm91bmRDb2xvcigpOwogICAgIGlmICghYmFja2dy
b3VuZENvbG9yIHx8IGJhY2tncm91bmRDb2xvci52YWx1ZSgpLmlzVmlzaWJsZSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICA6OkZpbGxSZWN0KGRjLCAmcmVjdCwgcmVpbnRlcnByZXRfY2FzdDxI
QlJVU0g+KENPTE9SX1dJTkRPVyArIDEpKTsKKyAgICBhdXRvIHNjYWxlZFJlY3QgPSByZWN0Owor
ICAgIHNjYWxlZFJlY3Quc2NhbGUocGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKSk7CisgICAgUkVD
VCB2aWV3UmVjdCA9IHNjYWxlZFJlY3Q7CisgICAgOjpGaWxsUmVjdChkYywgJnZpZXdSZWN0LCBy
ZWludGVycHJldF9jYXN0PEhCUlVTSD4oQ09MT1JfV0lORE9XICsgMSkpOwogfQogCiB2b2lkIFdl
YlZpZXc6OnBhaW50KEhEQyBoZGMsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCkKQEAgLTQ4NSw4
ICs0ODYsMTAgQEAgdm9pZCBXZWJWaWV3OjpwYWludChIREMgaGRjLCBjb25zdCBJbnRSZWN0JiBk
aXJ0eVJlY3QpCiAgICAgICAgICAgICBSZWdpb24gdW5wYWludGVkUmVnaW9uOwogI2lmIFVTRShD
QUlSTykKICAgICAgICAgICAgIGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSA9IGNhaXJvX3dpbjMy
X3N1cmZhY2VfY3JlYXRlKGhkYyk7CisgICAgICAgICAgICBhdXRvIGRldmljZVNjYWxlRmFjdG9y
ID0gbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgICAgICAgICAgY2Fpcm9fc3VyZmFj
ZV9zZXRfZGV2aWNlX3NjYWxlKHN1cmZhY2UsIGRldmljZVNjYWxlRmFjdG9yLCBkZXZpY2VTY2Fs
ZUZhY3Rvcik7CiAgICAgICAgICAgICBjYWlyb190KiBjb250ZXh0ID0gY2Fpcm9fY3JlYXRlKHN1
cmZhY2UpOwotICAgIAorCiAgICAgICAgICAgICBkcmF3aW5nQXJlYS0+cGFpbnQoY29udGV4dCwg
ZGlydHlSZWN0LCB1bnBhaW50ZWRSZWdpb24pOwogICAgIAogICAgICAgICAgICAgY2Fpcm9fZGVz
dHJveShjb250ZXh0KTsKQEAgLTUxOCw3ICs1MjEsOSBAQCBMUkVTVUxUIFdlYlZpZXc6Om9uUGFp
bnRFdmVudChIV05EIGhXbmQsIFVJTlQgbWVzc2FnZSwgV1BBUkFNLCBMUEFSQU0sIGJvb2wmIGhh
bgogCiAgICAgUEFJTlRTVFJVQ1QgcGFpbnRTdHJ1Y3Q7CiAgICAgSERDIGhkYyA9IDo6QmVnaW5Q
YWludChtX3dpbmRvdywgJnBhaW50U3RydWN0KTsKLSAgICBwYWludChoZGMsIHBhaW50U3RydWN0
LnJjUGFpbnQpOworICAgIEZsb2F0UmVjdCBkaXJ0eVJlY3QocGFpbnRTdHJ1Y3QucmNQYWludCk7
CisgICAgZGlydHlSZWN0LnNjYWxlKDEgLyBtX3BhZ2UtPmRldmljZVNjYWxlRmFjdG9yKCkpOwor
ICAgIHBhaW50KGhkYywgZW5jbG9zaW5nSW50UmVjdChkaXJ0eVJlY3QpKTsKIAogICAgIDo6RW5k
UGFpbnQobV93aW5kb3csICZwYWludFN0cnVjdCk7CiAKQEAgLTU0MCwxNCArNTQ1LDExIEBAIExS
RVNVTFQgV2ViVmlldzo6b25QcmludENsaWVudEV2ZW50KEhXTkQgaFduZCwgVUlOVCwgV1BBUkFN
IHdQYXJhbSwgTFBBUkFNLCBib29sCiAKIExSRVNVTFQgV2ViVmlldzo6b25TaXplRXZlbnQoSFdO
RCBod25kLCBVSU5ULCBXUEFSQU0sIExQQVJBTSBsUGFyYW0sIGJvb2wmIGhhbmRsZWQpCiB7Ci0g
ICAgaW50IHdpZHRoID0gTE9XT1JEKGxQYXJhbSk7Ci0gICAgaW50IGhlaWdodCA9IEhJV09SRChs
UGFyYW0pOwotCi0gICAgSW50U2l6ZSB3aW5kb3dTaXplKHdpZHRoLCBoZWlnaHQpOworICAgIG1f
dmlld1NpemUgPSBleHBhbmRlZEludFNpemUoRmxvYXRTaXplKExPV09SRChsUGFyYW0pLCBISVdP
UkQobFBhcmFtKSkgLyBkZXZpY2VTY2FsZUZhY3RvckZvcldpbmRvdyhod25kKSk7CiAKICAgICBp
ZiAobV9wYWdlICYmIG1fcGFnZS0+ZHJhd2luZ0FyZWEoKSkgewogICAgICAgICAvLyBGSVhNRSBz
cGVjaWZ5IGNvcnJlY3RseSBsYXllclBvc2l0aW9uLgotICAgICAgICBtX3BhZ2UtPmRyYXdpbmdB
cmVhKCktPnNldFNpemUod2luZG93U2l6ZSwgbV9uZXh0UmVzaXplU2Nyb2xsT2Zmc2V0KTsKKyAg
ICAgICAgbV9wYWdlLT5kcmF3aW5nQXJlYSgpLT5zZXRTaXplKG1fdmlld1NpemUsIG1fbmV4dFJl
c2l6ZVNjcm9sbE9mZnNldCk7CiAgICAgICAgIG1fbmV4dFJlc2l6ZVNjcm9sbE9mZnNldCA9IElu
dFNpemUoKTsKICAgICB9CiAKQEAgLTg1MCwxMiArODUyLDE1IEBAIHZvaWQgV2ViVmlldzo6c2V0
U2Nyb2xsT2Zmc2V0T25OZXh0UmVzaXplKGNvbnN0IEludFNpemUmIHNjcm9sbE9mZnNldCkKIHsK
ICAgICAvLyBUaGUgbmV4dCB0aW1lIHdlIGdldCBhIFdNX1NJWkUgbWVzc2FnZSwgc2Nyb2xsIGJ5
IHRoZSBzcGVjaWZpZWQgYW1vdW50IGluIG9uU2l6ZUV2ZW50KCkuCiAgICAgbV9uZXh0UmVzaXpl
U2Nyb2xsT2Zmc2V0ID0gc2Nyb2xsT2Zmc2V0OworICAgIG1fbmV4dFJlc2l6ZVNjcm9sbE9mZnNl
dC5zY2FsZSgxIC8gbV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKIH0KIAogdm9pZCBXZWJW
aWV3OjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFdlYkNvcmU6OlJlZ2lvbiYgcmVnaW9uKQog
ewotICAgIGNvbnN0IFJFQ1QgciA9IHJlZ2lvbi5ib3VuZHMoKTsKLSAgICA6OkludmFsaWRhdGVS
ZWN0KG1fd2luZG93LCAmciwgdHJ1ZSk7CisgICAgYXV0byByZWN0ID0gcmVnaW9uLmJvdW5kcygp
OworICAgIHJlY3Quc2NhbGUobV9wYWdlLT5kZXZpY2VTY2FsZUZhY3RvcigpKTsKKyAgICBjb25z
dCBSRUNUIHZpZXdSZWN0KHJlY3QpOworICAgIDo6SW52YWxpZGF0ZVJlY3QobV93aW5kb3csICZ2
aWV3UmVjdCwgdHJ1ZSk7CiB9CiAKICNpZiBFTkFCTEUoSU5QVVRfVFlQRV9DT0xPUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCmluZGV4IGM5NTg2ZDRiMmExYy4uMGJkZjE3Nzg1
ZmE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJWaWV3LmgKQEAgLTU4LDYgKzU4LDcg
QEAgcHVibGljOgogICAgIEhXTkQgd2luZG93KCkgY29uc3QgeyByZXR1cm4gbV93aW5kb3c7IH0K
ICAgICB2b2lkIHNldFBhcmVudFdpbmRvdyhIV05EKTsKICAgICB2b2lkIHdpbmRvd0FuY2VzdHJ5
RGlkQ2hhbmdlKCk7CisgICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSgpIHsgcmV0dXJuIG1f
dmlld1NpemU7IH0KICAgICB2b2lkIHNldElzSW5XaW5kb3coYm9vbCk7CiAgICAgdm9pZCBzZXRJ
c1Zpc2libGUoYm9vbCk7CiAgICAgYm9vbCBpc1dpbmRvd0FjdGl2ZSgpOwpAQCAtMTU0LDYgKzE1
NSw3IEBAIHByaXZhdGU6CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViS2l0OjpQYWdlQ2xpZW50
SW1wbD4gbV9wYWdlQ2xpZW50OwogICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+IG1fcGFnZTsKKyAg
ICBXZWJDb3JlOjpJbnRTaXplIG1fdmlld1NpemU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdB
cmVhLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCmlu
ZGV4IDI5ZDk5YWFmOTUyYi4uNWNlYzEyNGI1YzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL0RyYXdpbmdBcmVhLmgKQEAgLTEzNyw3ICsxMzcsNyBAQCBwdWJsaWM6
CiAjZW5kaWYKIAogI2lmIFVTRShHUkFQSElDU19MQVlFUl9XQykKLSAgICB2aXJ0dWFsIHZvaWQg
dXBkYXRlR2VvbWV0cnkodWludDY0X3QsIFdlYkNvcmU6OkludFNpemUpIHsgfTsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlR2VvbWV0cnkodWludDY0X3QsIFdlYkNvcmU6OkludFNpemUsIGZsb2F0
KSB7IH07CiAjZW5kaWYKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykgfHwgVVNFKEdS
QVBISUNTX0xBWUVSX1RFWFRVUkVfTUFQUEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9EcmF3aW5nQXJlYS5tZXNzYWdlcy5pbgppbmRleCBiMTk2YTlm
MDVkMjQuLmE4OWQyNTUwNDNkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRHJhd2luZ0FyZWEubWVzc2FnZXMuaW4KQEAgLTQxLDcgKzQxLDcgQEAg
bWVzc2FnZXMgLT4gRHJhd2luZ0FyZWEgTm90UmVmQ291bnRlZCB7CiAjZW5kaWYKIAogI2lmIFVT
RShHUkFQSElDU19MQVlFUl9XQykKLSAgICBVcGRhdGVHZW9tZXRyeSh1aW50NjRfdCBiYWNraW5n
U3RvcmVTdGF0ZUlELCBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKQorICAgIFVwZGF0ZUdlb21l
dHJ5KHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIFdlYkNvcmU6OkludFNpemUgdmlld1Np
emUsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogI2VuZGlmCiAKICNpZiBQTEFURk9STShDT0NP
QSkgfHwgUExBVEZPUk0oR1RLKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2Uvd2MvRHJhd2luZ0FyZWFXQy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS93Yy9EcmF3aW5nQXJlYVdDLmNwcAppbmRleCAyN2QxMjM1YmU4ZDcuLjI0ZmZjM2Vj
YTZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvRHJh
d2luZ0FyZWFXQy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2Mv
RHJhd2luZ0FyZWFXQy5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgRHJhd2luZ0FyZWFXQzo6RHJhd2lu
Z0FyZWFXQyhXZWJQYWdlJiB3ZWJQYWdlLCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
JgogICAgICwgbV9jb21taXRRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiRHJhd2luZ0FyZWFXQyBD
b21taXRRdWV1ZSJfcykpCiB7CiAgICAgbV9yb290TGF5ZXItPnNldE5hbWUoTUFLRV9TVEFUSUNf
U1RSSU5HX0lNUEwoImRyYXdpbmcgYXJlYSByb290IikpOwotICAgIG1fcm9vdExheWVyLT5zZXRT
aXplKG1fd2ViUGFnZS5zaXplKCkpOworICAgIHVwZGF0ZVJvb3RMYXllclNpemUoKTsKIH0KIAog
RHJhd2luZ0FyZWFXQzo6fkRyYXdpbmdBcmVhV0MoKQpAQCAtNzYsNiArNzYsMjAgQEAgdm9pZCBE
cmF3aW5nQXJlYVdDOjp1cGRhdGVSb290TGF5ZXJzKCkKICAgICB0cmlnZ2VyUmVuZGVyaW5nVXBk
YXRlKCk7CiB9CiAKK3ZvaWQgRHJhd2luZ0FyZWFXQzo6dXBkYXRlUm9vdExheWVyU2l6ZSgpCit7
CisgICAgY29uc3QgRmxvYXRTaXplJiBzaXplID0gbV93ZWJQYWdlLnNpemUoKTsKKyAgICBtX3Jv
b3RMYXllci0+c2V0U2l6ZShzaXplKTsKKyAgICBmbG9hdCBkZXZpY2VTY2FsZUZhY3RvciA9IG1f
d2ViUGFnZS5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG07
CisgICAgbS5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgLy8gQ2VudGVyIHZpZXcKKyAg
ICBkb3VibGUgdHggPSAoc2l6ZS53aWR0aCgpIC0gc2l6ZS53aWR0aCgpIC8gZGV2aWNlU2NhbGVG
YWN0b3IpIC8gMi4wOworICAgIGRvdWJsZSB0eSA9IChzaXplLmhlaWdodCgpIC0gc2l6ZS5oZWln
aHQoKSAvIGRldmljZVNjYWxlRmFjdG9yKSAvIDIuMDsKKyAgICBtLnRyYW5zbGF0ZSh0eCwgdHkp
OworICAgIG1fcm9vdExheWVyLT5zZXRUcmFuc2Zvcm0obSk7Cit9CisKIHZvaWQgRHJhd2luZ0Fy
ZWFXQzo6c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoR3JhcGhpY3NMYXllciogcm9vdExheWVyKQog
ewogICAgIG1fY29udGVudExheWVyID0gcm9vdExheWVyOwpAQCAtMTEyLDExICsxMjYsMTIgQEAg
dm9pZCBEcmF3aW5nQXJlYVdDOjpzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wgaXNGcm96
ZW4pCiAgICAgfQogfQogCi12b2lkIERyYXdpbmdBcmVhV0M6OnVwZGF0ZUdlb21ldHJ5KHVpbnQ2
NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIEludFNpemUgdmlld1NpemUpCit2b2lkIERyYXdpbmdB
cmVhV0M6OnVwZGF0ZUdlb21ldHJ5KHVpbnQ2NF90IGJhY2tpbmdTdG9yZVN0YXRlSUQsIEludFNp
emUgdmlld1NpemUsIGZsb2F0IGRldmljZVNjYWxlRmFjdG9yKQogewogICAgIG1fYmFja2luZ1N0
b3JlU3RhdGVJRCA9IGJhY2tpbmdTdG9yZVN0YXRlSUQ7CisgICAgbV93ZWJQYWdlLnNldERldmlj
ZVNjYWxlRmFjdG9yKGRldmljZVNjYWxlRmFjdG9yKTsKICAgICBtX3dlYlBhZ2Uuc2V0U2l6ZSh2
aWV3U2l6ZSk7Ci0gICAgbV9yb290TGF5ZXItPnNldFNpemUobV93ZWJQYWdlLnNpemUoKSk7Cisg
ICAgdXBkYXRlUm9vdExheWVyU2l6ZSgpOwogfQogCiB2b2lkIERyYXdpbmdBcmVhV0M6OnNldE5l
ZWRzRGlzcGxheSgpCkBAIC0yNDMsNiArMjU4LDkgQEAgdm9pZCBEcmF3aW5nQXJlYVdDOjpzZW5k
VXBkYXRlQUMoKQogICAgICAgICBtX3ZpZXdPdmVybGF5Um9vdExheWVyLT5mbHVzaENvbXBvc2l0
aW5nU3RhdGUodmlzaWJsZVJlY3QpOwogICAgIH0KIAorICAgIEZsb2F0U2l6ZSB2aWV3cG9ydCA9
IG1fd2ViUGFnZS5zaXplKCk7CisgICAgdmlld3BvcnQuc2NhbGUobV93ZWJQYWdlLmRldmljZVNj
YWxlRmFjdG9yKCkpOworICAgIG1fdXBkYXRlSW5mby52aWV3cG9ydCA9IFdlYkNvcmU6OmV4cGFu
ZGVkSW50U2l6ZSh2aWV3cG9ydCk7CiAgICAgbV91cGRhdGVJbmZvLnJvb3RMYXllciA9IG1fcm9v
dExheWVyLT5wcmltYXJ5TGF5ZXJJRCgpOwogCiAgICAgbV9jb21taXRRdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0cigqdGhpcyksIHN0YXRlSUQgPSBtX2JhY2tpbmdTdG9y
ZVN0YXRlSUQsIHVwZGF0ZUluZm8gPSBzdGQ6OmV4Y2hhbmdlKG1fdXBkYXRlSW5mbywgeyB9KV0o
KSBtdXRhYmxlIHsKQEAgLTI5MCw3ICszMDgsNiBAQCB2b2lkIERyYXdpbmdBcmVhV0M6OnNlbmRV
cGRhdGVOb25BQygpCiAgICAgQVNTRVJUKG1fd2ViUGFnZS5ib3VuZHMoKS5jb250YWlucyhib3Vu
ZHMpKTsKICAgICBJbnRTaXplIGJpdG1hcFNpemUgPSBib3VuZHMuc2l6ZSgpOwogICAgIGZsb2F0
IGRldmljZVNjYWxlRmFjdG9yID0gbV93ZWJQYWdlLmNvcmVQYWdlKCktPmRldmljZVNjYWxlRmFj
dG9yKCk7Ci0gICAgYml0bWFwU2l6ZS5zY2FsZShkZXZpY2VTY2FsZUZhY3Rvcik7CiAKICAgICBh
dXRvIGltYWdlID0gY3JlYXRlSW1hZ2VCdWZmZXIoYml0bWFwU2l6ZSk7CiAgICAgYXV0byByZWN0
cyA9IG1fZGlydHlSZWdpb24ucmVjdHMoKTsKQEAgLTMxMSwxMCArMzI4LDkgQEAgdm9pZCBEcmF3
aW5nQXJlYVdDOjpzZW5kVXBkYXRlTm9uQUMoKQogICAgIG1fc2Nyb2xsT2Zmc2V0ID0geyB9Owog
CiAgICAgYXV0byYgZ3JhcGhpY3NDb250ZXh0ID0gaW1hZ2UtPmNvbnRleHQoKTsKLSAgICBncmFw
aGljc0NvbnRleHQuYXBwbHlEZXZpY2VTY2FsZUZhY3RvcihkZXZpY2VTY2FsZUZhY3Rvcik7CiAg
ICAgZ3JhcGhpY3NDb250ZXh0LnRyYW5zbGF0ZSgtYm91bmRzLngoKSwgLWJvdW5kcy55KCkpOwog
ICAgIGZvciAoY29uc3QgYXV0byYgcmVjdCA6IHJlY3RzKQotICAgICAgICBtX3dlYlBhZ2UuZHJh
d1JlY3QoaW1hZ2UtPmNvbnRleHQoKSwgcmVjdCk7CisgICAgICAgIG1fd2ViUGFnZS5kcmF3UmVj
dChncmFwaGljc0NvbnRleHQsIHJlY3QpOwogICAgIGltYWdlLT5mbHVzaERyYXdpbmdDb250ZXh0
QXN5bmMoKTsKIAogICAgIG1fY29tbWl0UXVldWUtPmRpc3BhdGNoKFt0aGlzLCB3ZWFrVGhpcyA9
IFdlYWtQdHIoKnRoaXMpLCBzdGF0ZUlEID0gbV9iYWNraW5nU3RvcmVTdGF0ZUlELCB1cGRhdGVJ
bmZvID0gV1RGTW92ZSh1cGRhdGVJbmZvKSwgaW1hZ2VdKCkgbXV0YWJsZSB7CkBAIC0zNTMsOSAr
MzY5LDEwIEBAIHZvaWQgRHJhd2luZ0FyZWFXQzo6Y29tbWl0TGF5ZXJVcGF0ZUluZm8oV0NMYXll
clVwYXRlSW5mbyYmIGluZm8pCiAKIFJlZlB0cjxJbWFnZUJ1ZmZlcj4gRHJhd2luZ0FyZWFXQzo6
Y3JlYXRlSW1hZ2VCdWZmZXIoRmxvYXRTaXplIHNpemUpCiB7CisgICAgZmxvYXQgZGV2aWNlU2Nh
bGVGYWN0b3IgPSBtX3dlYlBhZ2UuY29yZVBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAg
ICBpZiAoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuc2hvdWxkVXNlUmVtb3RlUmVuZGVyaW5nRm9y
KFJlbmRlcmluZ1B1cnBvc2U6OkRPTSkpCi0gICAgICAgIHJldHVybiBtX3dlYlBhZ2UuZW5zdXJl
UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5KCkuY3JlYXRlSW1hZ2VCdWZmZXIoc2l6ZSwgUmVu
ZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCwgMSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdC
KCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7Ci0gICAgcmV0dXJuIENvbmNyZXRlSW1hZ2VCdWZmZXI8
VW5hY2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZD46OmNyZWF0ZShzaXplLCAx
LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4LCBudWxs
cHRyKTsKKyAgICAgICAgcmV0dXJuIG1fd2ViUGFnZS5lbnN1cmVSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHkoKS5jcmVhdGVJbWFnZUJ1ZmZlcihzaXplLCBSZW5kZXJpbmdNb2RlOjpVbmFjY2Vs
ZXJhdGVkLCBkZXZpY2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCks
IFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgcmV0dXJuIENvbmNyZXRlSW1hZ2VCdWZmZXI8VW5h
Y2NlbGVyYXRlZEltYWdlQnVmZmVyU2hhcmVhYmxlQmFja2VuZD46OmNyZWF0ZShzaXplLCBkZXZp
Y2VTY2FsZUZhY3RvciwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0
OjpCR1JBOCwgbnVsbHB0cik7CiB9CiAKIHZvaWQgRHJhd2luZ0FyZWFXQzo6ZGlkVXBkYXRlKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0RyYXdpbmdB
cmVhV0MuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0RyYXdpbmdBcmVh
V0MuaAppbmRleCBiNDMzODg5NzcyZTUuLjZlMmQ2OTQyZWVhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvRHJhd2luZ0FyZWFXQy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0RyYXdpbmdBcmVhV0MuaApAQCAtNTMsNyAr
NTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZGV2aWNlT3JQYWdlU2NhbGVGYWN0b3JDaGFuZ2Vk
KCkgb3ZlcnJpZGUgeyB9CiAgICAgdm9pZCBzZXRMYXllclRyZWVTdGF0ZUlzRnJvemVuKGJvb2wp
IG92ZXJyaWRlOwogICAgIGJvb2wgbGF5ZXJUcmVlU3RhdGVJc0Zyb3plbigpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1faXNSZW5kZXJpbmdTdXNwZW5kZWQ7IH0KLSAgICB2b2lkIHVwZGF0ZUdl
b21ldHJ5KHVpbnQ2NF90LCBXZWJDb3JlOjpJbnRTaXplKSBvdmVycmlkZTsKKyAgICB2b2lkIHVw
ZGF0ZUdlb21ldHJ5KHVpbnQ2NF90LCBXZWJDb3JlOjpJbnRTaXplLCBmbG9hdCBkZXZpY2VTY2Fs
ZUZhY3Rvcikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRSb290Q29tcG9zaXRpbmdMYXllcihXZWJD
b3JlOjpHcmFwaGljc0xheWVyKikgb3ZlcnJpZGU7CiAgICAgdm9pZCBhdHRhY2hWaWV3T3Zlcmxh
eUdyYXBoaWNzTGF5ZXIoV2ViQ29yZTo6R3JhcGhpY3NMYXllciopIG92ZXJyaWRlOwogICAgIHZv
aWQgdXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYpIG92ZXJyaWRl
OwpAQCAtNzAsNiArNzAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2VuZFVwZGF0ZUFDKCk7CiAg
ICAgdm9pZCBzZW5kVXBkYXRlTm9uQUMoKTsKICAgICB2b2lkIHVwZGF0ZVJvb3RMYXllcnMoKTsK
KyAgICB2b2lkIHVwZGF0ZVJvb3RMYXllclNpemUoKTsKIAogICAgIFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJDbGllbnQgbV9yb290TGF5ZXJDbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW90
ZVdDTGF5ZXJUcmVlSG9zdFByb3h5PiBtX3JlbW90ZVdDTGF5ZXJUcmVlSG9zdFByb3h5OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXll
cldDLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5
ZXJXQy5jcHAKaW5kZXggNzMxNGViYjE5NzIyLi45ZDM2NzY5NjQ5OTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3djL0dyYXBoaWNzTGF5ZXJXQy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvR3JhcGhpY3NMYXllcldDLmNw
cApAQCAtMzMsNiArMzMsMTIgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKK2F1dG8gc2NhbGVkKGF1dG8gcmVjdCwgZmxvYXQgc2NhbGUpCit7CisgICAg
cmVjdC5zY2FsZShzY2FsZSk7CisgICAgcmV0dXJuIHJlY3Q7Cit9CisKIGNsYXNzIFdDVGlsZWRC
YWNraW5nIGZpbmFsIDogcHVibGljIFRpbGVkQmFja2luZyB7CiAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiBwdWJsaWM6CkBAIC00MSwxOCArNDcsMTggQEAgcHVibGljOgogCiAgICAgYm9v
bCBwYWludEFuZEZsdXNoKFdDTGF5ZXJVcGF0ZUluZm8mIHVwZGF0ZSkKICAgICB7Ci0gICAgICAg
IHVwZGF0ZS5kaXJ0eVJlY3QgPSBlbmNsb3NpbmdJbnRSZWN0KG1fZGlydHlSZWN0KTsKLSAgICAg
ICAgdXBkYXRlLmNvdmVyYWdlUmVjdCA9IG1fY292ZXJhZ2VSZWN0OwotICAgICAgICBtX2RpcnR5
UmVjdCA9IHsgfTsKLSAgICAgICAgYXV0byYgaW1hZ2VSZWN0ID0gdXBkYXRlLmRpcnR5UmVjdDsK
LSAgICAgICAgaWYgKGltYWdlUmVjdC5pc0VtcHR5KCkpCisgICAgICAgIGZsb2F0IGRldmljZVNj
YWxlRmFjdG9yID0gbV9vd25lci5kZXZpY2VTY2FsZUZhY3RvcigpOworICAgICAgICB1cGRhdGUu
ZGlydHlSZWN0ID0gV2ViQ29yZTo6ZW5jbG9zaW5nSW50UmVjdChzY2FsZWQobV9kaXJ0eVJlY3Qs
IGRldmljZVNjYWxlRmFjdG9yKSk7CisgICAgICAgIHVwZGF0ZS5jb3ZlcmFnZVJlY3QgPSBzY2Fs
ZWQobV9jb3ZlcmFnZVJlY3QsIGRldmljZVNjYWxlRmFjdG9yKTsKKyAgICAgICAgaWYgKG1fZGly
dHlSZWN0LmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgYXV0
byBpbWFnZSA9IG1fb3duZXIuY3JlYXRlSW1hZ2VCdWZmZXIoaW1hZ2VSZWN0LnNpemUoKSk7Cisg
ICAgICAgIGF1dG8gaW1hZ2UgPSBtX293bmVyLmNyZWF0ZUltYWdlQnVmZmVyKG1fZGlydHlSZWN0
LnNpemUoKSk7CiAgICAgICAgIGF1dG8mIGNvbnRleHQgPSBpbWFnZS0+Y29udGV4dCgpOwotICAg
ICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtaW1hZ2VSZWN0LngoKSwgLWltYWdlUmVjdC55KCkpOwot
ICAgICAgICBtX293bmVyLnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKGNvbnRleHQsIHVwZGF0
ZS5kaXJ0eVJlY3QpOworICAgICAgICBjb250ZXh0LnRyYW5zbGF0ZSgtbV9kaXJ0eVJlY3QueCgp
LCAtbV9kaXJ0eVJlY3QueSgpKTsKKyAgICAgICAgbV9vd25lci5wYWludEdyYXBoaWNzTGF5ZXJD
b250ZW50cyhjb250ZXh0LCBtX2RpcnR5UmVjdCk7CiAgICAgICAgIGltYWdlLT5mbHVzaERyYXdp
bmdDb250ZXh0QXN5bmMoKTsKICAgICAgICAgdXBkYXRlLmJhY2tpbmdTdG9yZS5zZXRJbWFnZUJ1
ZmZlcihXVEZNb3ZlKGltYWdlKSk7CisgICAgICAgIG1fZGlydHlSZWN0ID0geyB9OwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTU1MCw2ICs1NTYsNyBAQCB2b2lkIEdyYXBoaWNz
TGF5ZXJXQzo6Zmx1c2hDb21wb3NpdGluZ1N0YXRlRm9yVGhpc0xheWVyT25seSgpCiAgICAgICAg
IHVwZGF0ZS5iYWNrZ3JvdW5kQ29sb3IgPSBiYWNrZ3JvdW5kQ29sb3IoKTsKICAgICAgICAgaWYg
KGRyYXdzQ29udGVudCgpICYmIGNvbnRlbnRzQXJlVmlzaWJsZSgpKSB7CiAgICAgICAgICAgICB1
cGRhdGUuaGFzQmFja2luZ1N0b3JlID0gdHJ1ZTsKKyAgICAgICAgICAgIHVwZGF0ZS5iYWNraW5n
U3RvcmVTaXplID0gV2ViQ29yZTo6ZXhwYW5kZWRJbnRTaXplKHNjYWxlZChzaXplKCksIGRldmlj
ZVNjYWxlRmFjdG9yKCkpKTsKICAgICAgICAgICAgIGlmIChtX3RpbGVkQmFja2luZy0+cGFpbnRB
bmRGbHVzaCh1cGRhdGUpKSB7CiAgICAgICAgICAgICAgICAgaW5jcmVtZW50UmVwYWludENvdW50
KCk7CiAgICAgICAgICAgICAgICAgdXBkYXRlLmNoYW5nZXMuYWRkKFdDTGF5ZXJDaGFuZ2U6OlJl
cGFpbnRDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS93Yy9XQ1VwYXRlSW5mby5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2Mv
V0NVcGF0ZUluZm8uaAppbmRleCAwNWEyYWVkZWI0MWYuLjBmNjU3N2NlZDY2YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd2MvV0NVcGF0ZUluZm8uaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93Yy9XQ1VwYXRlSW5mby5oCkBAIC04
NCw2ICs4NCw3IEBAIHN0cnVjdCBXQ0xheWVyVXBhdGVJbmZvIHsKICAgICBpbnQgcmVwYWludENv
dW50OwogICAgIFdlYkNvcmU6OkZsb2F0UmVjdCBjb250ZW50c1JlY3Q7CiAgICAgV0NCYWNraW5n
U3RvcmUgYmFja2luZ1N0b3JlOworICAgIFdlYkNvcmU6OkludFNpemUgYmFja2luZ1N0b3JlU2l6
ZTsKICAgICBXZWJDb3JlOjpJbnRSZWN0IGRpcnR5UmVjdDsKICAgICBXZWJDb3JlOjpJbnRSZWN0
IGNvdmVyYWdlUmVjdDsKICAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zv
cm07CkBAIC0xMjgsNyArMTI5LDcgQEAgc3RydWN0IFdDTGF5ZXJVcGF0ZUluZm8gewogICAgICAg
ICBpZiAoY2hhbmdlcyAmIFdDTGF5ZXJDaGFuZ2U6Ok9wYWNpdHkpCiAgICAgICAgICAgICBlbmNv
ZGVyIDw8IG9wYWNpdHk7CiAgICAgICAgIGlmIChjaGFuZ2VzICYgV0NMYXllckNoYW5nZTo6QmFj
a2dyb3VuZCkKLSAgICAgICAgICAgIGVuY29kZXIgPDwgYmFja2dyb3VuZENvbG9yIDw8IGhhc0Jh
Y2tpbmdTdG9yZSA8PCBiYWNraW5nU3RvcmUgPDwgZGlydHlSZWN0IDw8IGNvdmVyYWdlUmVjdDsK
KyAgICAgICAgICAgIGVuY29kZXIgPDwgYmFja2dyb3VuZENvbG9yIDw8IGhhc0JhY2tpbmdTdG9y
ZSA8PCBiYWNraW5nU3RvcmUgPDwgYmFja2luZ1N0b3JlU2l6ZSA8PCBkaXJ0eVJlY3QgPDwgY292
ZXJhZ2VSZWN0OwogICAgICAgICBpZiAoY2hhbmdlcyAmIFdDTGF5ZXJDaGFuZ2U6OlRyYW5zZm9y
bSkKICAgICAgICAgICAgIGVuY29kZXIgPDwgdHJhbnNmb3JtOwogICAgICAgICBpZiAoY2hhbmdl
cyAmIFdDTGF5ZXJDaGFuZ2U6OkNoaWxkcmVuVHJhbnNmb3JtKQpAQCAtMjIzLDYgKzIyNCw4IEBA
IHN0cnVjdCBXQ0xheWVyVXBhdGVJbmZvIHsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5iYWNraW5nU3RvcmUpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LmJhY2tpbmdTdG9yZVNpemUpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmRpcnR5UmVjdCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgaWYgKCFkZWNvZGVy
LmRlY29kZShyZXN1bHQuY292ZXJhZ2VSZWN0KSkKQEAgLTI1Nyw2ICsyNjAsNyBAQCBzdHJ1Y3Qg
V0NMYXllclVwYXRlSW5mbyB7CiB9OwogCiBzdHJ1Y3QgV0NVcGF0ZUluZm8geworICAgIFdlYkNv
cmU6OkludFNpemUgdmlld3BvcnQ7CiAgICAgV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6UGxhdGZv
cm1MYXllcklEIHJvb3RMYXllcjsKICAgICBWZWN0b3I8V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6
UGxhdGZvcm1MYXllcklEPiBhZGRlZExheWVyczsKICAgICBWZWN0b3I8V2ViQ29yZTo6R3JhcGhp
Y3NMYXllcjo6UGxhdGZvcm1MYXllcklEPiByZW1vdmVkTGF5ZXJzOwpAQCAtMjY1LDYgKzI2OSw3
IEBAIHN0cnVjdCBXQ1VwYXRlSW5mbyB7CiAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KICAg
ICB2b2lkIGVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIHsKKyAgICAgICAgZW5j
b2RlciA8PCB2aWV3cG9ydDsKICAgICAgICAgZW5jb2RlciA8PCByb290TGF5ZXI7CiAgICAgICAg
IGVuY29kZXIgPDwgYWRkZWRMYXllcnM7CiAgICAgICAgIGVuY29kZXIgPDwgcmVtb3ZlZExheWVy
czsKQEAgLTI3NCw2ICsyNzksOCBAQCBzdHJ1Y3QgV0NVcGF0ZUluZm8gewogICAgIHRlbXBsYXRl
IDxjbGFzcyBEZWNvZGVyPgogICAgIHN0YXRpYyBXQVJOX1VOVVNFRF9SRVRVUk4gYm9vbCBkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlciwgV0NVcGF0ZUluZm8mIHJlc3VsdCkKICAgICB7CisgICAgICAg
IGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnZpZXdwb3J0KSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQucm9vdExheWVyKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShy
ZXN1bHQuYWRkZWRMYXllcnMpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvd2luL1dl
YktpdEJyb3dzZXJXaW5kb3cuY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvd2luL1dlYktpdEJyb3dz
ZXJXaW5kb3cuY3BwCmluZGV4IGU3ZDM1MTcxNWQ1Zi4uYTNlNWM4NTIwMDFmIDEwMDY0NAotLS0g
YS9Ub29scy9NaW5pQnJvd3Nlci93aW4vV2ViS2l0QnJvd3NlcldpbmRvdy5jcHAKKysrIGIvVG9v
bHMvTWluaUJyb3dzZXIvd2luL1dlYktpdEJyb3dzZXJXaW5kb3cuY3BwCkBAIC0xNzUsNyArMTc1
LDYgQEAgV2ViS2l0QnJvd3NlcldpbmRvdzo6V2ViS2l0QnJvd3NlcldpbmRvdyhCcm93c2VyV2lu
ZG93Q2xpZW50JiBjbGllbnQsIFdLUGFnZUNvbmYKICAgICBXS1BhZ2VTZXRQYWdlU3RhdGVDbGll
bnQocGFnZSwgJnN0YXRlQ2xpZW50LmJhc2UpOwogCiAgICAgdXBkYXRlUHJveHlTZXR0aW5ncygp
OwotICAgIHJlc2V0Wm9vbSgpOwogfQogCiB2b2lkIFdlYktpdEJyb3dzZXJXaW5kb3c6OnVwZGF0
ZVByb3h5U2V0dGluZ3MoKQpAQCAtMzA5LDcgKzMwOCw3IEBAIHZvaWQgV2ViS2l0QnJvd3Nlcldp
bmRvdzo6dXBkYXRlU3RhdGlzdGljcyhIV05EIGhEbGcpCiB2b2lkIFdlYktpdEJyb3dzZXJXaW5k
b3c6OnJlc2V0Wm9vbSgpCiB7CiAgICAgYXV0byBwYWdlID0gV0tWaWV3R2V0UGFnZShtX3ZpZXcu
Z2V0KCkpOwotICAgIFdLUGFnZVNldFBhZ2Vab29tRmFjdG9yKHBhZ2UsIFdlYkNvcmU6OmRldmlj
ZVNjYWxlRmFjdG9yRm9yV2luZG93KGh3bmQoKSkpOworICAgIFdLUGFnZVNldFBhZ2Vab29tRmFj
dG9yKHBhZ2UsIDEpOwogfQogCiB2b2lkIFdlYktpdEJyb3dzZXJXaW5kb3c6Onpvb21JbigpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>