<?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>165533</bug_id>
          
          <creation_ts>2016-12-07 10:46:28 -0800</creation_ts>
          <short_desc>Memory warning logging appears to capture resident footprint, missing compress/swap.</short_desc>
          <delta_ts>2017-05-04 13:07:36 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Rollin">krollin</reporter>
          <assigned_to name="Keith Rollin">krollin</assigned_to>
          <cc>barraclough</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>ltilve</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1257272</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-12-07 10:46:28 -0800</bug_when>
    <thetext>In macOS/iOS, the critical pressure handler logs information about memory usage, logging footprint of the process between each step of freeing memory.

The problem is that by the look of it the logging is only reflecting the resident footprint. (The code is logging the internal value provided by the kernel – this is presumably just resident memory).

Knowing the resident number is interesting (it may indicate which tabs are touching pages), but incomplete, and means the value varies greatly throughout the process of running the low memory handler.

We should work out whether the struct passed by the kernel also provides data on the compressed/swapped footprint, and print this in addition to the resident value.

Ideally we should log –
• resident – dirty anonymous, and resident purgeable non-volatile
• swapped/compressed – dirty anonymous, and non-resident purgeable non-volatile

Clean / file-backed or purgeable volatile pages ought not be included.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257273</commentid>
    <comment_count>1</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-12-07 10:46:45 -0800</bug_when>
    <thetext>&lt;rdar://problem/29318410&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257392</commentid>
    <comment_count>2</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-12-07 15:10:32 -0800</bug_when>
    <thetext>The best value for resident + swapped is vmInfo.phys_footprint.

If we&apos;re going to be printing out two values (resident memory, physical footprint memory), it no longer makes sense to use the current approach and print one of three different logging lines depending on whether memory usage went up, went down, or stayed the same after releasing memory. It seems possible for the two figures to change in different ways, leading to a combinatorial explosion of possible logging strings to print. Therefore, I&apos;m trying the following:

                                                      Resident                             Resident + Swapped
                                     ------------- ------------- ------------- ------------- ------------- -------------
             Memory pressure relief:        Before         After         Delta        Before         After         Delta
------------------------------------ ------------- ------------- ------------- ------------- ------------- -------------
                Empty the PageCache:      51974144      51974144             0      52621312      52621312             0
   Prune MemoryCache live resources:      51974144      51974144             0      52621312      52621312             0
                 Drain CSSValuePool:      51974144      52002816         28672      52621312      52649984         28672
             Discard StyleResolvers:      52002816      52002816             0      52649984      52649984             0
      Discard all JIT-compiled code:      52002816      52359168        356352      52649984      53006336        356352
Dropping buffered data from paused :      52359168      52359168             0      53006336      53006336             0
            Purge inactive FontData:      52359168      52359168             0      53006336      53006336             0
                  Clear WidthCaches:      52359168      52359168             0      53006336      53006336             0
       Discard Selector Query Cache:      52359168      52359168             0      53006336      53006336             0
   Prune MemoryCache dead resources:      52359168      52359168             0      53006336      53006336             0
 Prune presentation attribute cache:      52359168      52359168             0      53006336      53006336             0
      Clear inline stylesheet cache:      52359168      52359168             0      53006336      53006336             0
              Purging SQLite caches:      52359168      52359168             0      53006336      53006336             0
                   Drain LayerPools:      52359168      52359168             0      53006336      53006336             0
                Drain IOSurfacePool:      52359168      52359168             0      53006336      53006336             0
     Release free FastMalloc memory:      52359168      52346880        -12288      53006336      52994048        -12288
            Purging libcache caches:      52346880      52346880             0      52994048      52994048             0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257394</commentid>
    <comment_count>3</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-12-07 15:15:35 -0800</bug_when>
    <thetext>Side note, most deltas are going to be 0 from now on, since we no longer explicitly free malloc() and fastMalloc() memory for each ReliefLogger.
With that in mind, it might not be worth to keep this detailed logging, and instead focus on presenting a single before/after delta.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257396</commentid>
    <comment_count>4</comment_count>
      <attachid>296428</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-12-07 15:21:12 -0800</bug_when>
    <thetext>Created attachment 296428
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257399</commentid>
    <comment_count>5</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-12-07 15:24:38 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Side note, most deltas are going to be 0 from now on, since we no longer
&gt; explicitly free malloc() and fastMalloc() memory for each ReliefLogger.
&gt; With that in mind, it might not be worth to keep this detailed logging, and
&gt; instead focus on presenting a single before/after delta.

I don&apos;t think we log anything after we eventually do free that memory, either. Perhaps we should? Say, at the end of MemoryPressureHandler::releaseMemory?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257408</commentid>
    <comment_count>6</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-12-07 15:57:45 -0800</bug_when>
    <thetext>Never mind. I see that we already have something like that with &quot;Release free FastMalloc memory&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257423</commentid>
    <comment_count>7</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-12-07 16:14:47 -0800</bug_when>
    <thetext>Here&apos;s an interesting one. While testing out what it would look like to generate and print a grand total, I saw this:

...
...     Drain CSSValuePool:      49803264      49836032         32768      ...
... Discard StyleResolvers:      49389568      49389568             0      ...
...

Note that there&apos;s a 432K drop between Drain CSSValuePool (After) and Discard StyleResolvers (Before). Is this just a case of &quot;something in the background&quot; happening to free up some memory at the same time we&apos;re doing our general cleanup?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257442</commentid>
    <comment_count>8</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-12-07 16:32:46 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Here&apos;s an interesting one. While testing out what it would look like to
&gt; generate and print a grand total, I saw this:
&gt; 
&gt; ...
&gt; ...     Drain CSSValuePool:      49803264      49836032         32768     
&gt; ...
&gt; ... Discard StyleResolvers:      49389568      49389568             0     
&gt; ...
&gt; ...
&gt; 
&gt; Note that there&apos;s a 432K drop between Drain CSSValuePool (After) and Discard
&gt; StyleResolvers (Before). Is this just a case of &quot;something in the
&gt; background&quot; happening to free up some memory at the same time we&apos;re doing
&gt; our general cleanup?

Yeah that&apos;s probably the case. My guess would be bmalloc&apos;s scavenger thread that periodically returns memory to the operating system in the background.

See bmalloc::Heap::m_scavenger for implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257464</commentid>
    <comment_count>9</comment_count>
      <attachid>296442</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-12-07 16:57:14 -0800</bug_when>
    <thetext>Created attachment 296442
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257466</commentid>
    <comment_count>10</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-12-07 16:58:43 -0800</bug_when>
    <thetext>Here&apos;s a slight update. It adds a grand total line at the bottom, which may or may not add up to the sum of the Deltas above it, depending on whether or not &quot;something in the background&quot; has also cleaned up. It also builds on iOS.

I&apos;m not sure what to do about all those zeroes. What did you have in mind?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257474</commentid>
    <comment_count>11</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-12-07 17:04:28 -0800</bug_when>
    <thetext>I guess you&apos;re saying get rid of the entire table? And just display the grand total? I&apos;m worried that we&apos;d be hiding something that might be valuable. Not all of the pruning is malloc or fastMalloc based, and so will generally show some memory being recovered. I think we&apos;d like to still see that. So maybe get rid of just the rows that are malloc/fastMalloc-based? Which are those?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257679</commentid>
    <comment_count>12</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-12-08 03:32:27 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; I guess you&apos;re saying get rid of the entire table? And just display the
&gt; grand total? I&apos;m worried that we&apos;d be hiding something that might be
&gt; valuable. Not all of the pruning is malloc or fastMalloc based, and so will
&gt; generally show some memory being recovered. I think we&apos;d like to still see
&gt; that. So maybe get rid of just the rows that are malloc/fastMalloc-based?
&gt; Which are those?

Regardless, these are the passes (...I think) that could free memory other than malloc/fastMalloc:

- Discard all JIT-compiled code
- Drain LayerPools
- Drain IOSurfacePool
- Dropping buffered data from paused media elements

IMO this per-pass logging has never been particularly interesting to begin with, which is a large part of the reason we want to add more logging :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258356</commentid>
    <comment_count>13</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-12-09 14:43:30 -0800</bug_when>
    <thetext>Based on Andreas&apos;s comments and discussion with Gavin, I&apos;ve taken out all of the current ReliefLogger instances and replaced them with one that provides a grand total. The result is now just a single statement:

14:40:36.224304 -0800	Safari	Memory pressure relief: Total: res = 45481984/44896256/-585728, res+swap =  46080000/45494272/-585728</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258366</commentid>
    <comment_count>14</comment_count>
      <attachid>296706</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-12-09 14:49:41 -0800</bug_when>
    <thetext>Created attachment 296706
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259183</commentid>
    <comment_count>15</comment_count>
      <attachid>296948</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-12-12 13:40:07 -0800</bug_when>
    <thetext>Created attachment 296948
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259184</commentid>
    <comment_count>16</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-12-12 13:40:44 -0800</bug_when>
    <thetext>Fixes a merge conflict.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259253</commentid>
    <comment_count>17</comment_count>
      <attachid>296948</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-12 16:28:51 -0800</bug_when>
    <thetext>Comment on attachment 296948
Patch

Clearing flags on attachment: 296948

Committed r209744: &lt;http://trac.webkit.org/changeset/209744&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259254</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-12 16:28:57 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259347</commentid>
    <comment_count>19</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-12-12 23:00:32 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; Comment on attachment 296948 [details]
&gt; Patch
&gt; 
&gt; Clearing flags on attachment: 296948
&gt; 
&gt; Committed r209744: &lt;http://trac.webkit.org/changeset/209744&gt;

It broke the GTK build, see build.webkit.org for details.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259440</commentid>
    <comment_count>20</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-12-13 10:30:26 -0800</bug_when>
    <thetext>The error message is:

FAILED: /usr/lib/ccache/c++   -DBUILDING_GTK__=1 -DBUILDING_WEBKIT -DBUILDING_WITH_CMAKE=1 -DBUILDING_WebCore -DDATA_DIR=\&quot;share\&quot; -DGETTEXT_PACKAGE=\&quot;WebKit2GTK-4.0\&quot; -DHAVE_CONFIG_H=1 -DUSER_AGENT_GTK_MAJOR_VERSION=\&quot;603\&quot; -DUSER_AGENT_GTK_MINOR_VERSION=\&quot;1\&quot; -DWEBKITGTK_API_VERSION_STRING=\&quot;4.0\&quot; -std=c++1y -O3 -DNDEBUG -fno-exceptions -fno-strict-aliasing -fno-rtti ...&lt;includes elided&gt;...    -Wall -Wextra -Wcast-align -Wformat-security -Wmissing-format-attribute -Wpointer-arith -Wundef -Wwrite-strings -Wno-missing-field-initializers -fPIC -MMD -MT Source/WebCore/CMakeFiles/WebCore.dir/platform/linux/MemoryPressureHandlerLinux.cpp.o -MF Source/WebCore/CMakeFiles/WebCore.dir/platform/linux/MemoryPressureHandlerLinux.cpp.o.d -o Source/WebCore/CMakeFiles/WebCore.dir/platform/linux/MemoryPressureHandlerLinux.cpp.o -c ../../Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp
../../Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp: In member function ‘std::optional&lt;WebCore::MemoryPressureHandler::ReliefLogger::MemoryUsage&gt; WebCore::MemoryPressureHandler::ReliefLogger::platformMemoryUsage()’:
../../Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:301:48: error: no matching function for call to ‘WebCore::MemoryPressureHandler::ReliefLogger::MemoryUsage::MemoryUsage(&lt;brace-enclosed initializer list&gt;)’
     return MemoryUsage {processMemoryUsage(), 0};
                                                ^
../../Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:301:48: note: candidates are:
In file included from ../../Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:28:0:
../../Source/WebCore/platform/MemoryPressureHandler.h:117:16: note: constexpr WebCore::MemoryPressureHandler::ReliefLogger::MemoryUsage::MemoryUsage()
         struct MemoryUsage {
                ^
../../Source/WebCore/platform/MemoryPressureHandler.h:117:16: note:   candidate expects 0 arguments, 2 provided
../../Source/WebCore/platform/MemoryPressureHandler.h:117:16: note: constexpr WebCore::MemoryPressureHandler::ReliefLogger::MemoryUsage::MemoryUsage(const WebCore::MemoryPressureHandler::ReliefLogger::MemoryUsage&amp;)
../../Source/WebCore/platform/MemoryPressureHandler.h:117:16: note:   candidate expects 1 argument, 2 provided
../../Source/WebCore/platform/MemoryPressureHandler.h:117:16: note: constexpr WebCore::MemoryPressureHandler::ReliefLogger::MemoryUsage::MemoryUsage(WebCore::MemoryPressureHandler::ReliefLogger::MemoryUsage&amp;&amp;)
../../Source/WebCore/platform/MemoryPressureHandler.h:117:16: note:   candidate expects 1 argument, 2 provided
../../Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp:302:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
ninja: build stopped: subcommand failed.

It&apos;s not apparent to me what&apos;s wrong with the code. It&apos;s very similar to the code that compiles on cocoa:

Source/WebCore/platform/cocoa/MemoryPressureHandlerCocoa.mm
196:    return MemoryUsage {static_cast&lt;size_t&gt;(vmInfo.internal), static_cast&lt;size_t&gt;(vmInfo.phys_footprint)};

Source/WebCore/platform/linux/MemoryPressureHandlerLinux.cpp
301:    return MemoryUsage {processMemoryUsage(), 0};

Perhaps the processMemoryUsage() needs to be cast to a size_t? Not likely, since it&apos;s already a size_t. Perhaps the zero needs to be cast to a size_t? Not likely because zero converts to just about anything. Perhaps MemoryUsage needs an explicit constructor? Not likely, since &lt;http://en.cppreference.com/w/cpp/language/aggregate_initialization&gt; says this initialization form works since C++11.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259447</commentid>
    <comment_count>21</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-12-13 10:51:05 -0800</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259448</commentid>
    <comment_count>22</comment_count>
      <attachid>297025</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-12-13 10:51:07 -0800</bug_when>
    <thetext>Created attachment 297025
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259449</commentid>
    <comment_count>23</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2016-12-13 10:52:07 -0800</bug_when>
    <thetext>This patch adds a constructor. Submitting to EWS to see if it works.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259642</commentid>
    <comment_count>24</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2016-12-13 21:47:33 -0800</bug_when>
    <thetext>(In reply to comment #23)
&gt; This patch adds a constructor. Submitting to EWS to see if it works.

There was an issue with the GTK+ EWS. Is it now working back.

The patch has just built fine on it, so please feel free to commit it (no review needed I think, is a build fix).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259643</commentid>
    <comment_count>25</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-12-13 22:01:01 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; Perhaps MemoryUsage needs an explicit constructor? Not likely, since
&gt; &lt;http://en.cppreference.com/w/cpp/language/aggregate_initialization&gt; says
&gt; this initialization form works since C++11.

Notice that MemoryUsage has default initializer, we build GTK using standard c++1y, c++1y represents a revisions of the standard before C++14 and after C++11, and aggregate initialization is not allowed between [C++11, C++14] by &lt;http://en.cppreference.com/w/cpp/language/aggregate_initialization&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259644</commentid>
    <comment_count>26</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-12-13 22:02:48 -0800</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #20)
&gt; &gt; Perhaps MemoryUsage needs an explicit constructor? Not likely, since
&gt; &gt; &lt;http://en.cppreference.com/w/cpp/language/aggregate_initialization&gt; says
&gt; &gt; this initialization form works since C++11.
&gt; 
&gt; Notice that MemoryUsage has default initializer, we build GTK using standard
&gt; c++1y, c++1y represents a revisions of the standard before C++14 and after
&gt; C++11, and aggregate initialization is not allowed between [C++11, C++14] by
&gt; &lt;http://en.cppreference.com/w/cpp/language/aggregate_initialization&gt;.


*and aggregate initialization is not allowed for a struct with default member initializer between [C++11, C++14] by &lt;http://en.cppreference.com/w/cpp/language/aggregate_initialization&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259647</commentid>
    <comment_count>27</comment_count>
      <attachid>297025</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-12-13 22:08:20 -0800</bug_when>
    <thetext>Comment on attachment 297025
Patch

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

Will fix style and land this patch towards fixing the GTK build. We should consider revising this patch and the decision to have default member initializers for MemoryUsage. I take it that it makes sense to default construct MemoryUsage()?

&gt; Source/WebCore/platform/MemoryPressureHandler.h:121
&gt; +                , physical(physical) { }

Each of the braces should be on its own line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259648</commentid>
    <comment_count>28</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2016-12-13 22:10:44 -0800</bug_when>
    <thetext>Committed GTK build fix in &lt;http://trac.webkit.org/changeset/209790&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261312</commentid>
    <comment_count>29</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-12-19 20:15:39 -0800</bug_when>
    <thetext>So we should probably implement this for Linux. I guess we should change WebCore::processMemoryUsage to return a WebCore::MemoryPressureHandler::ReliefLogger::MemoryUsage, using the current value for MemoryUsage.resident, then for MemoryUsage.physical... Carlos or Carlos, would ProcessMemoryStatus.size - ProcessMemoryStatus.shared be the right value...?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1261313</commentid>
    <comment_count>30</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-12-19 20:16:35 -0800</bug_when>
    <thetext>Or just ProcessMemoryStatus.size would probably make more sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1262254</commentid>
    <comment_count>31</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2016-12-21 20:32:43 -0800</bug_when>
    <thetext>(In reply to comment #29)
&gt; So we should probably implement this for Linux. I guess we should change
&gt; WebCore::processMemoryUsage to return a
&gt; WebCore::MemoryPressureHandler::ReliefLogger::MemoryUsage, using the current
&gt; value for MemoryUsage.resident, then for MemoryUsage.physical... Carlos or
&gt; Carlos, would ProcessMemoryStatus.size - ProcessMemoryStatus.shared be the
&gt; right value...?

This patch seems to be reporting as &quot;physical&quot; memory the phys_footprint value for the process. That means this: https://github.com/aosm/xnu/blob/master/osfmk/kern/task.c#L560

I don&apos;t think there is a direct equivalent of that on Linux, but an idea can be to report VmSize+VmSwap from /proc/self/status &lt;-- http://man7.org/linux/man-pages/man5/proc.5.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1304799</commentid>
    <comment_count>32</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2017-05-04 13:07:36 -0700</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #31)
&gt; (In reply to comment #29)
&gt; &gt; So we should probably implement this for Linux. I guess we should change
&gt; &gt; WebCore::processMemoryUsage to return a
&gt; &gt; WebCore::MemoryPressureHandler::ReliefLogger::MemoryUsage, using the current
&gt; &gt; value for MemoryUsage.resident, then for MemoryUsage.physical... Carlos or
&gt; &gt; Carlos, would ProcessMemoryStatus.size - ProcessMemoryStatus.shared be the
&gt; &gt; right value...?
&gt; 
&gt; This patch seems to be reporting as &quot;physical&quot; memory the phys_footprint
&gt; value for the process. That means this:
&gt; https://github.com/aosm/xnu/blob/master/osfmk/kern/task.c#L560
&gt; 
&gt; I don&apos;t think there is a direct equivalent of that on Linux, but an idea can
&gt; be to report VmSize+VmSwap from /proc/self/status &lt;--
&gt; http://man7.org/linux/man-pages/man5/proc.5.html

Yusuke implemented this on bug 171680 .

I see how Yusuke&apos;s implementation of reading anonymous page sizes is much better than just VmSize+VmSwap as I was proposing. It gives a value much more real.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296428</attachid>
            <date>2016-12-07 15:21:12 -0800</date>
            <delta_ts>2016-12-07 16:57:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165533-20161207152033.patch</filename>
            <type>text/plain</type>
            <size>10559</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5NDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzNlMDYyN2RmN2U1NGFk
ZmQxMjZmZjBiMzk5Njk3OGVhNTEzYzkxYy4uOWRiN2UwNThjMTMwNzQxNGMzNjIxZTUxYTVhZjky
MTEwZDc4NTA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE2LTEyLTA3ICBLZWl0
aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBNZW1vcnkgd2FybmluZyBs
b2dnaW5nIGFwcGVhcnMgdG8gY2FwdHVyZSByZXNpZGVudCBmb290cHJpbnQsIG1pc3NpbmcgY29t
cHJlc3Mvc3dhcC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NTUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjkzMTg0MTA+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGF2ZSBwbGF0Zm9ybU1lbW9y
eVVzYWdlIHJldHVybiBib3RoIHJlc2lkZW50IGFuZCByZXNpZGVudCArIHN3YXBwZWQKKyAgICAg
ICAgdmFsdWVzLiBUaGlzIGlzIG5vdyByZXR1cm5lZCBhcyBhIHN0cnVjdCBpbiBhIHN0ZDo6b3B0
aW9uYWwgdG8gYmV0dGVyCisgICAgICAgIHN1cHBvcnQgY2FzZXMgd2hlcmUgdmFsdWVzIGNhbm5v
dCBvciBhcmUgbm90IHJldHVybmVkLiBSZXBvcnQgdGhlc2UKKyAgICAgICAgdmFsdWVzIGluIGxv
Z01lbW9yeVVzYWdlQ2hhbmdlLiBGb3JtYXQgaW5mb3JtYXRpb24gYXMgYSB0YWJsZSwgbWFraW5n
CisgICAgICAgIGl0IGVhc2llciB0byBwYXJzZSBhbmQgdW5kZXJzdGFuZC4KKworICAgICAgICBO
byBuZXcgdGVzdHMgLS0gbm8gY2hhbmdlcyB0byBmdW5jdGlvbmFsaXR5LiBKdXN0IGNoYW5naW5n
IHNvbWUKKyAgICAgICAgbG9nZ2luZy4KKworICAgICAgICAqIHBsYXRmb3JtL01lbW9yeVByZXNz
dXJlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnJlbGVhc2VNZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjpSZWxpZWZMb2dnZXI6OmxvZ01lbW9yeVVzYWdlSGVhZGVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6bG9nTWVtb3J5VXNhZ2VDaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dn
ZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL01lbW9yeVByZXNz
dXJlSGFuZGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpS
ZWxpZWZMb2dnZXI6OlJlbGllZkxvZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6flJlbGllZkxvZ2dlcik6CisgICAgICAgIChXZWJD
b3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6c2hvdWxkUGVyZm9ybUxv
Z2dpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZM
b2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2xpbnV4L01l
bW9yeVByZXNzdXJlSGFuZGxlckxpbnV4LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vTWVt
b3J5UHJlc3N1cmVIYW5kbGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybU1lbW9yeVVzYWdlKToKKwogMjAxNi0x
Mi0wNiAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgQXBwbHkgc3R5
bGluZyB0byBtZWRpYSBkb2N1bWVudHMgd2l0aCBtb2Rlcm4gY29udHJvbHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCmluZGV4IDk1YWMz
ZjI3OGI5ZjQwZWYwM2U0YWEwNDliZGM2NTM0YmNjYjY0NmMuLmJmMzYzMTMxMTQ0YTkzOTAxODkw
MjcwZGVhYzJjN2VhZjk2NjhlOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcApAQCAtNjEsMzMgKzYxLDQ0IEBAIHZvaWQgTWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpyZWxlYXNlTWVtb3J5KENyaXRpY2FsIGNyaXRpY2FsLCBTeW5jaHJv
bm91cyBzeW5jaHJvCiAgICAgaWYgKCFtX2xvd01lbW9yeUhhbmRsZXIpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIGlmIChSZWxpZWZMb2dnZXI6OnNob3VsZFBlcmZvcm1Mb2dnaW5nKCkpCisgICAg
ICAgIFJlbGllZkxvZ2dlcjo6bG9nTWVtb3J5VXNhZ2VIZWFkZXJzKCk7CisKICAgICBtX2xvd01l
bW9yeUhhbmRsZXIoY3JpdGljYWwsIHN5bmNocm9ub3VzKTsKICAgICBwbGF0Zm9ybVJlbGVhc2VN
ZW1vcnkoY3JpdGljYWwpOwogfQogCi12b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVm
TG9nZ2VyOjpsb2dNZW1vcnlVc2FnZUNoYW5nZSgpCi17CiAjaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECi0jZGVmaW5lIFNUUklOR19TUEVDSUZJQ0FUSU9OICIle3B1YmxpY31zIgorI2RlZmluZSBT
VFJJTkdfU1BFQ0lGSUNBVElPTiAiJXtwdWJsaWN9MzUuMzVzIgogI2RlZmluZSBNRU1PUllQUkVT
U1VSRV9MT0coLi4uKSBSRUxFQVNFX0xPRyhNZW1vcnlQcmVzc3VyZSwgX19WQV9BUkdTX18pCiAj
ZWxzZQogI2RlZmluZSBTVFJJTkdfU1BFQ0lGSUNBVElPTiAiJXMiCiAjZGVmaW5lIE1FTU9SWVBS
RVNTVVJFX0xPRyguLi4pIFdURkxvZ0Fsd2F5cyhfX1ZBX0FSR1NfXykKICNlbmRpZgogCi0gICAg
c2l6ZV90IGN1cnJlbnRNZW1vcnkgPSBwbGF0Zm9ybU1lbW9yeVVzYWdlKCk7Ci0gICAgaWYgKGN1
cnJlbnRNZW1vcnkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSkgfHwgbV9pbml0aWFsTWVtb3J5
ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpKSB7Cit2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxl
cjo6UmVsaWVmTG9nZ2VyOjpsb2dNZW1vcnlVc2FnZUhlYWRlcnMoKQoreworICAgIE1FTU9SWVBS
RVNTVVJFX0xPRygiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgUmVzaWRlbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc2lkZW50ICsg
U3dhcHBlZCAgICAgICAgICAgIik7CisgICAgTUVNT1JZUFJFU1NVUkVfTE9HKCIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tIC0t
LS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0iKTsK
KyAgICBNRU1PUllQUkVTU1VSRV9MT0coIiAgICAgICAgICAgICBNZW1vcnkgcHJlc3N1cmUgcmVs
aWVmOiAgICAgICAgQmVmb3JlICAgICAgICAgQWZ0ZXIgICAgICAgICBEZWx0YSAgICAgICAgQmVm
b3JlICAgICAgICAgQWZ0ZXIgICAgICAgICBEZWx0YSIpOworICAgIE1FTU9SWVBSRVNTVVJFX0xP
RygiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0gLS0t
LS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLSAtLS0t
LS0tLS0tLS0tIik7Cit9CisKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dn
ZXI6OmxvZ01lbW9yeVVzYWdlQ2hhbmdlKCkKK3sKKyAgICBhdXRvIGN1cnJlbnRNZW1vcnkgPSBw
bGF0Zm9ybU1lbW9yeVVzYWdlKCk7CisgICAgaWYgKCFjdXJyZW50TWVtb3J5IHx8ICFtX2luaXRp
YWxNZW1vcnkpIHsKICAgICAgICAgTUVNT1JZUFJFU1NVUkVfTE9HKCJNZW1vcnkgcHJlc3N1cmUg
cmVsaWVmOiAiIFNUUklOR19TUEVDSUZJQ0FUSU9OICI6IChVbmFibGUgdG8gZ2V0IGRpcnR5IG1l
bW9yeSBpbmZvcm1hdGlvbiBmb3IgcHJvY2VzcykiLCBtX2xvZ1N0cmluZyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBsb25nIG1lbW9yeURpZmYgPSBjdXJyZW50TWVtb3J5IC0gbV9p
bml0aWFsTWVtb3J5OwotICAgIGlmIChtZW1vcnlEaWZmIDwgMCkKLSAgICAgICAgTUVNT1JZUFJF
U1NVUkVfTE9HKCJNZW1vcnkgcHJlc3N1cmUgcmVsaWVmOiAiIFNUUklOR19TUEVDSUZJQ0FUSU9O
ICI6IC1kaXJ0eSAlbGQgYnl0ZXMgKGZyb20gJXp1IHRvICV6dSkiLCBtX2xvZ1N0cmluZywgKG1l
bW9yeURpZmYgKiAtMSksIG1faW5pdGlhbE1lbW9yeSwgY3VycmVudE1lbW9yeSk7Ci0gICAgZWxz
ZSBpZiAobWVtb3J5RGlmZiA+IDApCi0gICAgICAgIE1FTU9SWVBSRVNTVVJFX0xPRygiTWVtb3J5
IHByZXNzdXJlIHJlbGllZjogIiBTVFJJTkdfU1BFQ0lGSUNBVElPTiAiOiArZGlydHkgJWxkIGJ5
dGVzIChmcm9tICV6dSB0byAlenUpIiwgbV9sb2dTdHJpbmcsIG1lbW9yeURpZmYsIG1faW5pdGlh
bE1lbW9yeSwgY3VycmVudE1lbW9yeSk7Ci0gICAgZWxzZQotICAgICAgICBNRU1PUllQUkVTU1VS
RV9MT0coIk1lbW9yeSBwcmVzc3VyZSByZWxpZWY6ICIgU1RSSU5HX1NQRUNJRklDQVRJT04gIjog
PWRpcnR5IChhdCAlenUgYnl0ZXMpIiwgbV9sb2dTdHJpbmcsIGN1cnJlbnRNZW1vcnkpOworICAg
IGxvbmcgcmVzaWRlbnREaWZmID0gY3VycmVudE1lbW9yeS0+cmVzaWRlbnQgLSBtX2luaXRpYWxN
ZW1vcnktPnJlc2lkZW50OworICAgIGxvbmcgcGh5c2ljYWxEaWZmID0gY3VycmVudE1lbW9yeS0+
cGh5c2ljYWwgLSBtX2luaXRpYWxNZW1vcnktPnBoeXNpY2FsOworCisgICAgTUVNT1JZUFJFU1NV
UkVfTE9HKFNUUklOR19TUEVDSUZJQ0FUSU9OICI6ICUxM3p1ICUxM3p1ICUxM2xkICUxM3p1ICUx
M3p1ICUxM2xkIiwKKyAgICAgICAgbV9sb2dTdHJpbmcsCisgICAgICAgIG1faW5pdGlhbE1lbW9y
eS0+cmVzaWRlbnQsIGN1cnJlbnRNZW1vcnktPnJlc2lkZW50LCByZXNpZGVudERpZmYsCisgICAg
ICAgIG1faW5pdGlhbE1lbW9yeS0+cGh5c2ljYWwsIGN1cnJlbnRNZW1vcnktPnBoeXNpY2FsLCBw
aHlzaWNhbERpZmYpOwogfQogCiAjaWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhT1MoTElOVVgpICYm
ICFQTEFURk9STShXSU4pCkBAIC05Niw3ICsxMDcsNyBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6dW5pbnN0YWxsKCkgeyB9CiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6aG9sZE9m
Zih1bnNpZ25lZCkgeyB9CiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRvTWVt
b3J5UHJlc3N1cmUoQ3JpdGljYWwsIFN5bmNocm9ub3VzKSB7IH0KIHZvaWQgTWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpwbGF0Zm9ybVJlbGVhc2VNZW1vcnkoQ3JpdGljYWwpIHsgfQotc2l6ZV90IE1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybU1lbW9yeVVzYWdlKCkg
eyByZXR1cm4gMDsgfQorc3RkOjpvcHRpb25hbDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGll
ZkxvZ2dlcjo6TWVtb3J5VXNhZ2U+IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2Vy
OjpwbGF0Zm9ybU1lbW9yeVVzYWdlKCkgeyByZXR1cm4gc3RkOjpudWxsb3B0OyB9CiAjZW5kaWYK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9N
ZW1vcnlQcmVzc3VyZUhhbmRsZXIuaAppbmRleCBmOWZkM2E2OWZlYWQzMGJmNGU2ZjhjZDExMjA3
ZTQ3ZWE5YjI3YmU2Li43NjM1ZmExZmQzNTVmMzhlYzBjODUzNzkxMDAwZWNmMmZkY2Q4MjRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuaApA
QCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvT3B0aW9uYWwuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKICNpbmNsdWRlIDx3dGYvTG9j
ay5oPgpAQCAtOTAsMzQgKzkxLDQwIEBAIHB1YmxpYzoKICAgICBwdWJsaWM6CiAgICAgICAgIGV4
cGxpY2l0IFJlbGllZkxvZ2dlcihjb25zdCBjaGFyICpsb2cpCiAgICAgICAgICAgICA6IG1fbG9n
U3RyaW5nKGxvZykKLSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAgICAgICAgICwgbV9p
bml0aWFsTWVtb3J5KHBsYXRmb3JtTWVtb3J5VXNhZ2UoKSkKLSNlbHNlCi0gICAgICAgICAgICAs
IG1faW5pdGlhbE1lbW9yeShzX2xvZ2dpbmdFbmFibGVkID8gcGxhdGZvcm1NZW1vcnlVc2FnZSgp
IDogMCkKLSNlbmRpZgorICAgICAgICAgICAgLCBtX2luaXRpYWxNZW1vcnkoc2hvdWxkUGVyZm9y
bUxvZ2dpbmcoKSA/IHBsYXRmb3JtTWVtb3J5VXNhZ2UoKSA6IE1lbW9yeVVzYWdlIHsgfSkKICAg
ICAgICAgewogICAgICAgICB9CiAKICAgICAgICAgflJlbGllZkxvZ2dlcigpCiAgICAgICAgIHsK
LSNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSAgICAgICAgICAgIGxvZ01lbW9yeVVzYWdlQ2hh
bmdlKCk7Ci0jZWxzZQotICAgICAgICAgICAgaWYgKHNfbG9nZ2luZ0VuYWJsZWQpCisgICAgICAg
ICAgICBpZiAoc2hvdWxkUGVyZm9ybUxvZ2dpbmcoKSkKICAgICAgICAgICAgICAgICBsb2dNZW1v
cnlVc2FnZUNoYW5nZSgpOwotI2VuZGlmCiAgICAgICAgIH0KIAorCiAgICAgICAgIGNvbnN0IGNo
YXIqIGxvZ1N0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fbG9nU3RyaW5nOyB9CiAgICAgICAgIHN0
YXRpYyB2b2lkIHNldExvZ2dpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBzX2xvZ2dpbmdFbmFi
bGVkID0gZW5hYmxlZDsgfQogICAgICAgICBzdGF0aWMgYm9vbCBsb2dnaW5nRW5hYmxlZCgpIHsg
cmV0dXJuIHNfbG9nZ2luZ0VuYWJsZWQ7IH0KKyAgICAgICAgc3RhdGljIGJvb2wgc2hvdWxkUGVy
Zm9ybUxvZ2dpbmcoKQorICAgICAgICB7CisjaWYgIVJFTEVBU0VfTE9HX0RJU0FCTEVECisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbHNlCisgICAgICAgICAgICByZXR1cm4gbG9nZ2luZ0Vu
YWJsZWQoKTsKKyNlbmRpZgorICAgICAgICB9CisgICAgICAgIHN0YXRpYyB2b2lkIGxvZ01lbW9y
eVVzYWdlSGVhZGVycygpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgc2l6ZV90IHBsYXRmb3Jt
TWVtb3J5VXNhZ2UoKTsKKyAgICAgICAgc3RydWN0IE1lbW9yeVVzYWdlIHsKKyAgICAgICAgICAg
IHNpemVfdCByZXNpZGVudCB7IDAgfTsKKyAgICAgICAgICAgIHNpemVfdCBwaHlzaWNhbCB7IDAg
fTsKKyAgICAgICAgfTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxNZW1vcnlVc2FnZT4gcGxhdGZv
cm1NZW1vcnlVc2FnZSgpOwogICAgICAgICB2b2lkIGxvZ01lbW9yeVVzYWdlQ2hhbmdlKCk7CiAK
ICAgICAgICAgY29uc3QgY2hhciogbV9sb2dTdHJpbmc7Ci0gICAgICAgIHNpemVfdCBtX2luaXRp
YWxNZW1vcnk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8TWVtb3J5VXNhZ2U+IG1faW5pdGlhbE1l
bW9yeTsKIAogICAgICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBzX2xvZ2dpbmdFbmFi
bGVkOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9N
ZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCmluZGV4IDNiYjFlMGRiNTU1MjNhNWE3
ZDIzNGJkNjdkYzdkNDc4NDMyYzZkMDEuLjQzZTdiMmFkZTQzNTk0MDY4ZTFjYzk3NDY1OWVmODdi
MmRmZTFjN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01lbW9y
eVByZXNzdXJlSGFuZGxlckNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nv
Y29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCkBAIC0xODYsMTUgKzE4NiwxNSBAQCB2
b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUoQ3JpdGlj
YWwgY3JpdGljYWwsIFN5bmNocm9ubwogI2VuZGlmCiB9CiAKLXNpemVfdCBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1NZW1vcnlVc2FnZSgpCitzdGQ6Om9wdGlv
bmFsPE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpNZW1vcnlVc2FnZT4gTWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UoKQog
ewogICAgIHRhc2tfdm1faW5mb19kYXRhX3Qgdm1JbmZvOwogICAgIG1hY2hfbXNnX3R5cGVfbnVt
YmVyX3QgY291bnQgPSBUQVNLX1ZNX0lORk9fQ09VTlQ7CiAgICAga2Vybl9yZXR1cm5fdCBlcnIg
PSB0YXNrX2luZm8obWFjaF90YXNrX3NlbGYoKSwgVEFTS19WTV9JTkZPLCAodGFza19pbmZvX3Qp
ICZ2bUluZm8sICZjb3VudCk7CiAgICAgaWYgKGVyciAhPSBLRVJOX1NVQ0NFU1MpCi0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KHZtSW5mby5pbnRlcm5hbCk7
CisgICAgcmV0dXJuIE1lbW9yeVVzYWdlIHt2bUluZm8uaW50ZXJuYWwsIHZtSW5mby5waHlzX2Zv
b3RwcmludH07CiB9CiAKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAK
aW5kZXggNDIxYzYxNjBmODg5MTI0NjQ3NzNkNGVhM2ZjYWVkNDk2M2Q1YTdmZC4uOGZjNTY2ZDAx
YTZjYzlkYjYyN2E1ZDhjZTRhMjE4ZDkzNTA2MjU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L01lbW9yeVByZXNzdXJlSGFuZGxlckxpbnV4LmNw
cApAQCAtMjk3LDkgKzI5Nyw5IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpwbGF0Zm9y
bVJlbGVhc2VNZW1vcnkoQ3JpdGljYWwpCiAjZW5kaWYKIH0KIAotc2l6ZV90IE1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybU1lbW9yeVVzYWdlKCkKK3N0ZDo6b3B0
aW9uYWw8TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6Ok1lbW9yeVVzYWdlPiBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1NZW1vcnlVc2FnZSgp
CiB7Ci0gICAgcmV0dXJuIHByb2Nlc3NNZW1vcnlVc2FnZSgpOworICAgIHJldHVybiBNZW1vcnlV
c2FnZSB7cHJvY2Vzc01lbW9yeVVzYWdlKCksIDB9OwogfQogCiB2b2lkIE1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6c2V0TWVtb3J5UHJlc3N1cmVNb25pdG9ySGFuZGxlKGludCBmZCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9NZW1vcnlQcmVzc3VyZUhhbmRsZXJXaW4u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldp
bi5jcHAKaW5kZXggZmM4N2I3MDMyOTIzODcxNmQxYzYzNTg3OGNlMDc5MmRiYjdkZmQzMi4uZDE0
ODBkZmNlYzMxZjg3NTQzNjA2OGUxMGQ0MjJlMzhlYzY0MWIzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5jcHAK
QEAgLTEyNCw5ICsxMjQsOSBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRv
TWVtb3J5UHJlc3N1cmUoQ3JpdGljYWwgY3JpdGljYWwsIFN5bmNocm9ubwogICAgIHJlbGVhc2VN
ZW1vcnkoY3JpdGljYWwsIHN5bmNocm9ub3VzKTsKIH0KIAotc2l6ZV90IE1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybU1lbW9yeVVzYWdlKCkKK3N0ZDo6b3B0aW9u
YWw8TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6Ok1lbW9yeVVzYWdlPiBNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1NZW1vcnlVc2FnZSgpCiB7
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296442</attachid>
            <date>2016-12-07 16:57:14 -0800</date>
            <delta_ts>2016-12-09 14:49:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165533-20161207165635.patch</filename>
            <type>text/plain</type>
            <size>10633</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5NDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzNlMDYyN2RmN2U1NGFk
ZmQxMjZmZjBiMzk5Njk3OGVhNTEzYzkxYy4uOWRiN2UwNThjMTMwNzQxNGMzNjIxZTUxYTVhZjky
MTEwZDc4NTA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE2LTEyLTA3ICBLZWl0
aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBNZW1vcnkgd2FybmluZyBs
b2dnaW5nIGFwcGVhcnMgdG8gY2FwdHVyZSByZXNpZGVudCBmb290cHJpbnQsIG1pc3NpbmcgY29t
cHJlc3Mvc3dhcC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NTUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjkzMTg0MTA+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGF2ZSBwbGF0Zm9ybU1lbW9y
eVVzYWdlIHJldHVybiBib3RoIHJlc2lkZW50IGFuZCByZXNpZGVudCArIHN3YXBwZWQKKyAgICAg
ICAgdmFsdWVzLiBUaGlzIGlzIG5vdyByZXR1cm5lZCBhcyBhIHN0cnVjdCBpbiBhIHN0ZDo6b3B0
aW9uYWwgdG8gYmV0dGVyCisgICAgICAgIHN1cHBvcnQgY2FzZXMgd2hlcmUgdmFsdWVzIGNhbm5v
dCBvciBhcmUgbm90IHJldHVybmVkLiBSZXBvcnQgdGhlc2UKKyAgICAgICAgdmFsdWVzIGluIGxv
Z01lbW9yeVVzYWdlQ2hhbmdlLiBGb3JtYXQgaW5mb3JtYXRpb24gYXMgYSB0YWJsZSwgbWFraW5n
CisgICAgICAgIGl0IGVhc2llciB0byBwYXJzZSBhbmQgdW5kZXJzdGFuZC4KKworICAgICAgICBO
byBuZXcgdGVzdHMgLS0gbm8gY2hhbmdlcyB0byBmdW5jdGlvbmFsaXR5LiBKdXN0IGNoYW5naW5n
IHNvbWUKKyAgICAgICAgbG9nZ2luZy4KKworICAgICAgICAqIHBsYXRmb3JtL01lbW9yeVByZXNz
dXJlSGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6
OnJlbGVhc2VNZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjpSZWxpZWZMb2dnZXI6OmxvZ01lbW9yeVVzYWdlSGVhZGVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6bG9nTWVtb3J5VXNhZ2VDaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dn
ZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL01lbW9yeVByZXNz
dXJlSGFuZGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpS
ZWxpZWZMb2dnZXI6OlJlbGllZkxvZ2dlcik6CisgICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6flJlbGllZkxvZ2dlcik6CisgICAgICAgIChXZWJD
b3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6c2hvdWxkUGVyZm9ybUxv
Z2dpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZM
b2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2xpbnV4L01l
bW9yeVByZXNzdXJlSGFuZGxlckxpbnV4LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vTWVt
b3J5UHJlc3N1cmVIYW5kbGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybU1lbW9yeVVzYWdlKToKKwogMjAxNi0x
Mi0wNiAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgQXBwbHkgc3R5
bGluZyB0byBtZWRpYSBkb2N1bWVudHMgd2l0aCBtb2Rlcm4gY29udHJvbHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCmluZGV4IDk1YWMz
ZjI3OGI5ZjQwZWYwM2U0YWEwNDliZGM2NTM0YmNjYjY0NmMuLjRkMzBkNjcwNGM4OGM0MmI0NTU4
MDBkODEwNDIzZDA5N2I0YTMzOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcApAQCAtNjEsMzMgKzYxLDQ1IEBAIHZvaWQgTWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpyZWxlYXNlTWVtb3J5KENyaXRpY2FsIGNyaXRpY2FsLCBTeW5jaHJv
bm91cyBzeW5jaHJvCiAgICAgaWYgKCFtX2xvd01lbW9yeUhhbmRsZXIpCiAgICAgICAgIHJldHVy
bjsKIAorICAgIGlmIChSZWxpZWZMb2dnZXI6OnNob3VsZFBlcmZvcm1Mb2dnaW5nKCkpCisgICAg
ICAgIFJlbGllZkxvZ2dlcjo6bG9nTWVtb3J5VXNhZ2VIZWFkZXJzKCk7CisKKyAgICBSZWxpZWZM
b2dnZXIgbG9nKCJUb3RhbCIpOwogICAgIG1fbG93TWVtb3J5SGFuZGxlcihjcml0aWNhbCwgc3lu
Y2hyb25vdXMpOwogICAgIHBsYXRmb3JtUmVsZWFzZU1lbW9yeShjcml0aWNhbCk7CiB9CiAKLXZv
aWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OmxvZ01lbW9yeVVzYWdlQ2hh
bmdlKCkKLXsKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKLSNkZWZpbmUgU1RSSU5HX1NQRUNJ
RklDQVRJT04gIiV7cHVibGljfXMiCisjZGVmaW5lIFNUUklOR19TUEVDSUZJQ0FUSU9OICIle3B1
YmxpY30zNS4zNXMiCiAjZGVmaW5lIE1FTU9SWVBSRVNTVVJFX0xPRyguLi4pIFJFTEVBU0VfTE9H
KE1lbW9yeVByZXNzdXJlLCBfX1ZBX0FSR1NfXykKICNlbHNlCiAjZGVmaW5lIFNUUklOR19TUEVD
SUZJQ0FUSU9OICIlcyIKICNkZWZpbmUgTUVNT1JZUFJFU1NVUkVfTE9HKC4uLikgV1RGTG9nQWx3
YXlzKF9fVkFfQVJHU19fKQogI2VuZGlmCiAKLSAgICBzaXplX3QgY3VycmVudE1lbW9yeSA9IHBs
YXRmb3JtTWVtb3J5VXNhZ2UoKTsKLSAgICBpZiAoY3VycmVudE1lbW9yeSA9PSBzdGF0aWNfY2Fz
dDxzaXplX3Q+KC0xKSB8fCBtX2luaXRpYWxNZW1vcnkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90Pigt
MSkpIHsKK3ZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OmxvZ01lbW9y
eVVzYWdlSGVhZGVycygpCit7CisgICAgTUVNT1JZUFJFU1NVUkVfTE9HKCIgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNpZGVudCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVzaWRlbnQgKyBTd2FwcGVkICAgICAgICAgICAiKTsKKyAg
ICBNRU1PUllQUkVTU1VSRV9MT0coIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAtLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0t
IC0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLSIpOworICAgIE1FTU9SWVBSRVNTVVJFX0xPRygi
ICAgICAgICAgICAgIE1lbW9yeSBwcmVzc3VyZSByZWxpZWY6ICAgICAgICBCZWZvcmUgICAgICAg
ICBBZnRlciAgICAgICAgIERlbHRhICAgICAgICBCZWZvcmUgICAgICAgICBBZnRlciAgICAgICAg
IERlbHRhIik7CisgICAgTUVNT1JZUFJFU1NVUkVfTE9HKCItLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0g
LS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0iKTsKK30KKwordm9pZCBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6bG9nTWVtb3J5VXNhZ2VDaGFuZ2Uo
KQoreworICAgIGF1dG8gY3VycmVudE1lbW9yeSA9IHBsYXRmb3JtTWVtb3J5VXNhZ2UoKTsKKyAg
ICBpZiAoIWN1cnJlbnRNZW1vcnkgfHwgIW1faW5pdGlhbE1lbW9yeSkgewogICAgICAgICBNRU1P
UllQUkVTU1VSRV9MT0coIk1lbW9yeSBwcmVzc3VyZSByZWxpZWY6ICIgU1RSSU5HX1NQRUNJRklD
QVRJT04gIjogKFVuYWJsZSB0byBnZXQgZGlydHkgbWVtb3J5IGluZm9ybWF0aW9uIGZvciBwcm9j
ZXNzKSIsIG1fbG9nU3RyaW5nKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGxvbmcg
bWVtb3J5RGlmZiA9IGN1cnJlbnRNZW1vcnkgLSBtX2luaXRpYWxNZW1vcnk7Ci0gICAgaWYgKG1l
bW9yeURpZmYgPCAwKQotICAgICAgICBNRU1PUllQUkVTU1VSRV9MT0coIk1lbW9yeSBwcmVzc3Vy
ZSByZWxpZWY6ICIgU1RSSU5HX1NQRUNJRklDQVRJT04gIjogLWRpcnR5ICVsZCBieXRlcyAoZnJv
bSAlenUgdG8gJXp1KSIsIG1fbG9nU3RyaW5nLCAobWVtb3J5RGlmZiAqIC0xKSwgbV9pbml0aWFs
TWVtb3J5LCBjdXJyZW50TWVtb3J5KTsKLSAgICBlbHNlIGlmIChtZW1vcnlEaWZmID4gMCkKLSAg
ICAgICAgTUVNT1JZUFJFU1NVUkVfTE9HKCJNZW1vcnkgcHJlc3N1cmUgcmVsaWVmOiAiIFNUUklO
R19TUEVDSUZJQ0FUSU9OICI6ICtkaXJ0eSAlbGQgYnl0ZXMgKGZyb20gJXp1IHRvICV6dSkiLCBt
X2xvZ1N0cmluZywgbWVtb3J5RGlmZiwgbV9pbml0aWFsTWVtb3J5LCBjdXJyZW50TWVtb3J5KTsK
LSAgICBlbHNlCi0gICAgICAgIE1FTU9SWVBSRVNTVVJFX0xPRygiTWVtb3J5IHByZXNzdXJlIHJl
bGllZjogIiBTVFJJTkdfU1BFQ0lGSUNBVElPTiAiOiA9ZGlydHkgKGF0ICV6dSBieXRlcykiLCBt
X2xvZ1N0cmluZywgY3VycmVudE1lbW9yeSk7CisgICAgbG9uZyByZXNpZGVudERpZmYgPSBjdXJy
ZW50TWVtb3J5LT5yZXNpZGVudCAtIG1faW5pdGlhbE1lbW9yeS0+cmVzaWRlbnQ7CisgICAgbG9u
ZyBwaHlzaWNhbERpZmYgPSBjdXJyZW50TWVtb3J5LT5waHlzaWNhbCAtIG1faW5pdGlhbE1lbW9y
eS0+cGh5c2ljYWw7CisKKyAgICBNRU1PUllQUkVTU1VSRV9MT0coU1RSSU5HX1NQRUNJRklDQVRJ
T04gIjogJTEzenUgJTEzenUgJTEzbGQgJTEzenUgJTEzenUgJTEzbGQiLAorICAgICAgICBtX2xv
Z1N0cmluZywKKyAgICAgICAgbV9pbml0aWFsTWVtb3J5LT5yZXNpZGVudCwgY3VycmVudE1lbW9y
eS0+cmVzaWRlbnQsIHJlc2lkZW50RGlmZiwKKyAgICAgICAgbV9pbml0aWFsTWVtb3J5LT5waHlz
aWNhbCwgY3VycmVudE1lbW9yeS0+cGh5c2ljYWwsIHBoeXNpY2FsRGlmZik7CiB9CiAKICNpZiAh
UExBVEZPUk0oQ09DT0EpICYmICFPUyhMSU5VWCkgJiYgIVBMQVRGT1JNKFdJTikKQEAgLTk2LDcg
KzEwOCw3IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp1bmluc3RhbGwoKSB7IH0KIHZv
aWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpob2xkT2ZmKHVuc2lnbmVkKSB7IH0KIHZvaWQgTWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1vcnlQcmVzc3VyZShDcml0aWNhbCwgU3lu
Y2hyb25vdXMpIHsgfQogdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnBsYXRmb3JtUmVsZWFz
ZU1lbW9yeShDcml0aWNhbCkgeyB9Ci1zaXplX3QgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxp
ZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UoKSB7IHJldHVybiAwOyB9CitzdGQ6Om9wdGlv
bmFsPE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpNZW1vcnlVc2FnZT4gTWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UoKSB7
IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCmlu
ZGV4IGY5ZmQzYTY5ZmVhZDMwYmY0ZTZmOGNkMTEyMDdlNDdlYTliMjdiZTYuLjc2MzVmYTFmZDM1
NWYzOGVjMGM4NTM3OTEwMDBlY2YyZmRjZDgyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiAjaWYg
UExBVEZPUk0oSU9TKQogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CkBAIC05MCwzNCArOTEsNDAgQEAg
cHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgUmVsaWVmTG9nZ2VyKGNvbnN0
IGNoYXIgKmxvZykKICAgICAgICAgICAgIDogbV9sb2dTdHJpbmcobG9nKQotI2lmICFSRUxFQVNF
X0xPR19ESVNBQkxFRAotICAgICAgICAgICAgLCBtX2luaXRpYWxNZW1vcnkocGxhdGZvcm1NZW1v
cnlVc2FnZSgpKQotI2Vsc2UKLSAgICAgICAgICAgICwgbV9pbml0aWFsTWVtb3J5KHNfbG9nZ2lu
Z0VuYWJsZWQgPyBwbGF0Zm9ybU1lbW9yeVVzYWdlKCkgOiAwKQotI2VuZGlmCisgICAgICAgICAg
ICAsIG1faW5pdGlhbE1lbW9yeShzaG91bGRQZXJmb3JtTG9nZ2luZygpID8gcGxhdGZvcm1NZW1v
cnlVc2FnZSgpIDogTWVtb3J5VXNhZ2UgeyB9KQogICAgICAgICB7CiAgICAgICAgIH0KIAogICAg
ICAgICB+UmVsaWVmTG9nZ2VyKCkKICAgICAgICAgewotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxF
RAotICAgICAgICAgICAgbG9nTWVtb3J5VXNhZ2VDaGFuZ2UoKTsKLSNlbHNlCi0gICAgICAgICAg
ICBpZiAoc19sb2dnaW5nRW5hYmxlZCkKKyAgICAgICAgICAgIGlmIChzaG91bGRQZXJmb3JtTG9n
Z2luZygpKQogICAgICAgICAgICAgICAgIGxvZ01lbW9yeVVzYWdlQ2hhbmdlKCk7Ci0jZW5kaWYK
ICAgICAgICAgfQogCisKICAgICAgICAgY29uc3QgY2hhciogbG9nU3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2dTdHJpbmc7IH0KICAgICAgICAgc3RhdGljIHZvaWQgc2V0TG9nZ2luZ0VuYWJs
ZWQoYm9vbCBlbmFibGVkKSB7IHNfbG9nZ2luZ0VuYWJsZWQgPSBlbmFibGVkOyB9CiAgICAgICAg
IHN0YXRpYyBib29sIGxvZ2dpbmdFbmFibGVkKCkgeyByZXR1cm4gc19sb2dnaW5nRW5hYmxlZDsg
fQorICAgICAgICBzdGF0aWMgYm9vbCBzaG91bGRQZXJmb3JtTG9nZ2luZygpCisgICAgICAgIHsK
KyNpZiAhUkVMRUFTRV9MT0dfRElTQUJMRUQKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2Vs
c2UKKyAgICAgICAgICAgIHJldHVybiBsb2dnaW5nRW5hYmxlZCgpOworI2VuZGlmCisgICAgICAg
IH0KKyAgICAgICAgc3RhdGljIHZvaWQgbG9nTWVtb3J5VXNhZ2VIZWFkZXJzKCk7CiAKICAgICBw
cml2YXRlOgotICAgICAgICBzaXplX3QgcGxhdGZvcm1NZW1vcnlVc2FnZSgpOworICAgICAgICBz
dHJ1Y3QgTWVtb3J5VXNhZ2UgeworICAgICAgICAgICAgc2l6ZV90IHJlc2lkZW50IHsgMCB9Owor
ICAgICAgICAgICAgc2l6ZV90IHBoeXNpY2FsIHsgMCB9OworICAgICAgICB9OworICAgICAgICBz
dGQ6Om9wdGlvbmFsPE1lbW9yeVVzYWdlPiBwbGF0Zm9ybU1lbW9yeVVzYWdlKCk7CiAgICAgICAg
IHZvaWQgbG9nTWVtb3J5VXNhZ2VDaGFuZ2UoKTsKIAogICAgICAgICBjb25zdCBjaGFyKiBtX2xv
Z1N0cmluZzsKLSAgICAgICAgc2l6ZV90IG1faW5pdGlhbE1lbW9yeTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxNZW1vcnlVc2FnZT4gbV9pbml0aWFsTWVtb3J5OwogCiAgICAgICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIHNfbG9nZ2luZ0VuYWJsZWQ7CiAgICAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Q29jb2EubW0KaW5kZXggM2JiMWUwZGI1NTUyM2E1YTdkMjM0YmQ2N2RjN2Q0Nzg0MzJjNmQwMS4u
ZWM2MWUzYzNjODU4ODYyNDVmM2JhYjcwM2FkYzhhZWNiZWRlMmE5MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Q29jb2EubW0KQEAgLTE4NiwxNSArMTg2LDE1IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjpyZXNwb25kVG9NZW1vcnlQcmVzc3VyZShDcml0aWNhbCBjcml0aWNhbCwgU3luY2hyb25vCiAj
ZW5kaWYKIH0KIAotc2l6ZV90IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpw
bGF0Zm9ybU1lbW9yeVVzYWdlKCkKK3N0ZDo6b3B0aW9uYWw8TWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjpSZWxpZWZMb2dnZXI6Ok1lbW9yeVVzYWdlPiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGll
ZkxvZ2dlcjo6cGxhdGZvcm1NZW1vcnlVc2FnZSgpCiB7CiAgICAgdGFza192bV9pbmZvX2RhdGFf
dCB2bUluZm87CiAgICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCBjb3VudCA9IFRBU0tfVk1fSU5G
T19DT1VOVDsKICAgICBrZXJuX3JldHVybl90IGVyciA9IHRhc2tfaW5mbyhtYWNoX3Rhc2tfc2Vs
ZigpLCBUQVNLX1ZNX0lORk8sICh0YXNrX2luZm9fdCkgJnZtSW5mbywgJmNvdW50KTsKICAgICBp
ZiAoZXJyICE9IEtFUk5fU1VDQ0VTUykKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHNpemVf
dD4oLTEpOworICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHN0YXRp
Y19jYXN0PHNpemVfdD4odm1JbmZvLmludGVybmFsKTsKKyAgICByZXR1cm4gTWVtb3J5VXNhZ2Ug
e3N0YXRpY19jYXN0PHNpemVfdD4odm1JbmZvLmludGVybmFsKSwgc3RhdGljX2Nhc3Q8c2l6ZV90
Pih2bUluZm8ucGh5c19mb290cHJpbnQpfTsKIH0KIAogI2lmIFBMQVRGT1JNKElPUykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L01lbW9yeVByZXNzdXJlSGFuZGxl
ckxpbnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xpbnV4L01lbW9yeVByZXNzdXJl
SGFuZGxlckxpbnV4LmNwcAppbmRleCA0MjFjNjE2MGY4ODkxMjQ2NDc3M2Q0ZWEzZmNhZWQ0OTYz
ZDVhN2ZkLi44ZmM1NjZkMDFhNmNjOWRiNjI3YTVkOGNlNGEyMThkOTM1MDYyNTliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJM
aW51eC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbGludXgvTWVtb3J5UHJlc3N1
cmVIYW5kbGVyTGludXguY3BwCkBAIC0yOTcsOSArMjk3LDkgQEAgdm9pZCBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OnBsYXRmb3JtUmVsZWFzZU1lbW9yeShDcml0aWNhbCkKICNlbmRpZgogfQogCi1z
aXplX3QgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5
VXNhZ2UoKQorc3RkOjpvcHRpb25hbDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dl
cjo6TWVtb3J5VXNhZ2U+IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0
Zm9ybU1lbW9yeVVzYWdlKCkKIHsKLSAgICByZXR1cm4gcHJvY2Vzc01lbW9yeVVzYWdlKCk7Cisg
ICAgcmV0dXJuIE1lbW9yeVVzYWdlIHtwcm9jZXNzTWVtb3J5VXNhZ2UoKSwgMH07CiB9CiAKIHZv
aWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzZXRNZW1vcnlQcmVzc3VyZU1vbml0b3JIYW5kbGUo
aW50IGZkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL01lbW9yeVBy
ZXNzdXJlSGFuZGxlcldpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTWVtb3J5
UHJlc3N1cmVIYW5kbGVyV2luLmNwcAppbmRleCBmYzg3YjcwMzI5MjM4NzE2ZDFjNjM1ODc4Y2Uw
NzkyZGJiN2RmZDMyLi5kMTQ4MGRmY2VjMzFmODc1NDM2MDY4ZTEwZDQyMmUzOGVjNjQxYjNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTWVtb3J5UHJlc3N1cmVIYW5k
bGVyV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vTWVtb3J5UHJlc3N1
cmVIYW5kbGVyV2luLmNwcApAQCAtMTI0LDkgKzEyNCw5IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjpyZXNwb25kVG9NZW1vcnlQcmVzc3VyZShDcml0aWNhbCBjcml0aWNhbCwgU3luY2hy
b25vCiAgICAgcmVsZWFzZU1lbW9yeShjcml0aWNhbCwgc3luY2hyb25vdXMpOwogfQogCi1zaXpl
X3QgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNh
Z2UoKQorc3RkOjpvcHRpb25hbDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6
TWVtb3J5VXNhZ2U+IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9y
bU1lbW9yeVVzYWdlKCkKIHsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296706</attachid>
            <date>2016-12-09 14:49:41 -0800</date>
            <delta_ts>2016-12-12 13:40:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165533-20161209144859.patch</filename>
            <type>text/plain</type>
            <size>17159</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5NDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzNlMDYyN2RmN2U1NGFk
ZmQxMjZmZjBiMzk5Njk3OGVhNTEzYzkxYy4uZjAwZDA0ZDhlZmIzNGVjMWJhYmZhY2JjNmYzMjEw
OGZkMDk1NDQwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTEyLTA5ICBLZWl0
aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBNZW1vcnkgd2FybmluZyBs
b2dnaW5nIGFwcGVhcnMgdG8gY2FwdHVyZSByZXNpZGVudCBmb290cHJpbnQsIG1pc3NpbmcgY29t
cHJlc3Mvc3dhcC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NTUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjkzMTg0MTA+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGF2ZSBwbGF0Zm9ybU1lbW9y
eVVzYWdlIHJldHVybiBib3RoIHJlc2lkZW50IGFuZCByZXNpZGVudCArIHN3YXBwZWQKKyAgICAg
ICAgdmFsdWVzLiBUaGlzIGlzIG5vdyByZXR1cm5lZCBhcyBhIHN0cnVjdCBpbiBhIHN0ZDo6b3B0
aW9uYWwgdG8gYmV0dGVyCisgICAgICAgIHN1cHBvcnQgY2FzZXMgd2hlcmUgdmFsdWVzIGNhbm5v
dCBvciBhcmUgbm90IHJldHVybmVkLiBSZXBvcnQgdGhlc2UKKyAgICAgICAgdmFsdWVzIGluIGxv
Z01lbW9yeVVzYWdlQ2hhbmdlLgorCisgICAgICAgIFJlbW92ZSBtb3N0IG9mIHRoZSBSZWxpZWZM
b2dnZXIgaW5zdGFuY2VzIGFuZCB0aGVpciBtZXNzYWdlcy4gV2Ugbm8KKyAgICAgICAgbG9uZ2Vy
IGZyZWUgdXAgZmFzdE1hbGxvYyBtZW1vcnkgYWZ0ZXIgZWFjaCBtZW1vcnktcmVsZWFzZSBvcGVy
YXRpb24sCisgICAgICAgIHNvIHRoZXJlIGFyZSBubyBtZW1vcnkgcmVnaW9ucyByZXR1cm5lZCB0
byB0aGUgT1MuIEluc3RlYWQsIHdlIG5vdworICAgICAgICBmcmVlIHVwIGZhc3RNYWxsb2MgbWVt
b3J5IHJlZ2lvbnMgYXQgdGhlIGVuZCBvZiBhbGwgbWVtb3J5LXJlbGVhc2luZworICAgICAgICBv
cGVyYXRpb25zIGluIG9uZSBmZWxsIHN3b29wIGFuZCByZXBvcnQgYSBncmFuZCB0b3RhbCBvZiBt
ZW1vcnkKKyAgICAgICAgcmV0dXJuZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0tIG5vIGNo
YW5nZXMgdG8gdXNlciBhY2Nlc3NpYmxlIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBwYWdl
L01lbW9yeVJlbGVhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVsZWFzZU5vbmNyaXRpY2Fs
TWVtb3J5KToKKyAgICAgICAgKFdlYkNvcmU6OnJlbGVhc2VDcml0aWNhbE1lbW9yeSk6CisgICAg
ICAgIChXZWJDb3JlOjpyZWxlYXNlTWVtb3J5KToKKyAgICAgICAgKiBwYWdlL2NvY29hL01lbW9y
eVJlbGVhc2VDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtUmVsZWFzZU1lbW9y
eSk6CisgICAgICAgICogcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFzZU1lbW9yeSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6bG9nTWVt
b3J5VXNhZ2VDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L01lbW9yeVByZXNzdXJlSGFuZGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OlJlbGllZkxvZ2dlcik6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6flJlbGllZkxvZ2dlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6bG9n
Z2luZ0VuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL01lbW9yeVByZXNzdXJlSGFu
ZGxlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpw
bGF0Zm9ybVJlbGVhc2VNZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2xpbnV4L01lbW9yeVByZXNzdXJlSGFuZGxlckxpbnV4LmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vTWVtb3J5UHJlc3N1cmVIYW5kbGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybU1lbW9yeVVz
YWdlKToKKwogMjAxNi0xMi0wNiAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAg
ICAgICAgQXBwbHkgc3R5bGluZyB0byBtZWRpYSBkb2N1bWVudHMgd2l0aCBtb2Rlcm4gY29udHJv
bHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCmluZGV4IGYzYTRlZjBmYTQ2MzY4
YTIzY2QxYzA4MGI4MjY2NTlmMWNmOTlhYjMuLjIxZDU1MTk4MjI2NWJkM2JhNDJiZmQzN2I5YjIz
MWRhNTZhZjU5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFz
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9NZW1vcnlSZWxlYXNlLmNwcApAQCAtNDgs
ODIgKzQ4LDQ1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RhdGljIHZvaWQgcmVsZWFzZU5v
bmNyaXRpY2FsTWVtb3J5KCkKIHsKLSAgICB7Ci0gICAgICAgIE1lbW9yeVByZXNzdXJlSGFuZGxl
cjo6UmVsaWVmTG9nZ2VyIGxvZygiUHVyZ2UgaW5hY3RpdmUgRm9udERhdGEiKTsKLSAgICAgICAg
Rm9udENhY2hlOjpzaW5nbGV0b24oKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKLSAgICB9Cisg
ICAgRm9udENhY2hlOjpzaW5nbGV0b24oKS5wdXJnZUluYWN0aXZlRm9udERhdGEoKTsKIAotICAg
IHsKLSAgICAgICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXIgbG9nKCJDbGVh
ciBXaWR0aENhY2hlcyIpOwotICAgICAgICBjbGVhcldpZHRoQ2FjaGVzKCk7Ci0gICAgfQorICAg
IGNsZWFyV2lkdGhDYWNoZXMoKTsKIAotICAgIHsKLSAgICAgICAgTWVtb3J5UHJlc3N1cmVIYW5k
bGVyOjpSZWxpZWZMb2dnZXIgbG9nKCJEaXNjYXJkIFNlbGVjdG9yIFF1ZXJ5IENhY2hlIik7Ci0g
ICAgICAgIGZvciAoYXV0byogZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpCi0g
ICAgICAgICAgICBkb2N1bWVudC0+Y2xlYXJTZWxlY3RvclF1ZXJ5Q2FjaGUoKTsKLSAgICB9Cisg
ICAgZm9yIChhdXRvKiBkb2N1bWVudCA6IERvY3VtZW50OjphbGxEb2N1bWVudHMoKSkKKyAgICAg
ICAgZG9jdW1lbnQtPmNsZWFyU2VsZWN0b3JRdWVyeUNhY2hlKCk7CiAKLSAgICB7Ci0gICAgICAg
IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyIGxvZygiUHJ1bmUgTWVtb3J5Q2Fj
aGUgZGVhZCByZXNvdXJjZXMiKTsKLSAgICAgICAgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnBy
dW5lRGVhZFJlc291cmNlc1RvU2l6ZSgwKTsKLSAgICB9CisgICAgTWVtb3J5Q2FjaGU6OnNpbmds
ZXRvbigpLnBydW5lRGVhZFJlc291cmNlc1RvU2l6ZSgwKTsKIAotICAgIHsKLSAgICAgICAgTWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXIgbG9nKCJQcnVuZSBwcmVzZW50YXRpb24g
YXR0cmlidXRlIGNhY2hlIik7Ci0gICAgICAgIFN0eWxlZEVsZW1lbnQ6OmNsZWFyUHJlc2VudGF0
aW9uQXR0cmlidXRlQ2FjaGUoKTsKLSAgICB9CisgICAgU3R5bGVkRWxlbWVudDo6Y2xlYXJQcmVz
ZW50YXRpb25BdHRyaWJ1dGVDYWNoZSgpOwogCi0gICAgewotICAgICAgICBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OlJlbGllZkxvZ2dlciBsb2coIkNsZWFyIGlubGluZSBzdHlsZXNoZWV0IGNhY2hl
Iik7Ci0gICAgICAgIElubGluZVN0eWxlU2hlZXRPd25lcjo6Y2xlYXJDYWNoZSgpOwotICAgIH0K
KyAgICBJbmxpbmVTdHlsZVNoZWV0T3duZXI6OmNsZWFyQ2FjaGUoKTsKIH0KIAogc3RhdGljIHZv
aWQgcmVsZWFzZUNyaXRpY2FsTWVtb3J5KFN5bmNocm9ub3VzIHN5bmNocm9ub3VzKQogewotICAg
IHsKLSAgICAgICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXIgbG9nKCJFbXB0
eSB0aGUgUGFnZUNhY2hlIik7Ci0gICAgICAgIC8vIFJpZ2h0IG5vdywgdGhlIG9ubHkgcmVhc29u
IHdlIGNhbGwgcmVsZWFzZSBjcml0aWNhbCBtZW1vcnkgd2hpbGUgbm90IHVuZGVyIG1lbW9yeSBw
cmVzc3VyZSBpcyBpZiB0aGUgcHJvY2VzcyBpcyBhYm91dCB0byBiZSBzdXNwZW5kZWQuCi0gICAg
ICAgIFBydW5pbmdSZWFzb24gcHJ1bmluZ1JlYXNvbiA9IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6
c2luZ2xldG9uKCkuaXNVbmRlck1lbW9yeVByZXNzdXJlKCkgPyBQcnVuaW5nUmVhc29uOjpNZW1v
cnlQcmVzc3VyZSA6IFBydW5pbmdSZWFzb246OlByb2Nlc3NTdXNwZW5kZWQ7Ci0gICAgICAgIFBh
Z2VDYWNoZTo6c2luZ2xldG9uKCkucHJ1bmVUb1NpemVOb3coMCwgcHJ1bmluZ1JlYXNvbik7Ci0g
ICAgfQorICAgIC8vIFJpZ2h0IG5vdywgdGhlIG9ubHkgcmVhc29uIHdlIGNhbGwgcmVsZWFzZSBj
cml0aWNhbCBtZW1vcnkgd2hpbGUgbm90IHVuZGVyIG1lbW9yeSBwcmVzc3VyZSBpcyBpZiB0aGUg
cHJvY2VzcyBpcyBhYm91dCB0byBiZSBzdXNwZW5kZWQuCisgICAgUHJ1bmluZ1JlYXNvbiBwcnVu
aW5nUmVhc29uID0gTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpzaW5nbGV0b24oKS5pc1VuZGVyTWVt
b3J5UHJlc3N1cmUoKSA/IFBydW5pbmdSZWFzb246Ok1lbW9yeVByZXNzdXJlIDogUHJ1bmluZ1Jl
YXNvbjo6UHJvY2Vzc1N1c3BlbmRlZDsKKyAgICBQYWdlQ2FjaGU6OnNpbmdsZXRvbigpLnBydW5l
VG9TaXplTm93KDAsIHBydW5pbmdSZWFzb24pOwogCi0gICAgewotICAgICAgICBNZW1vcnlQcmVz
c3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlciBsb2coIlBydW5lIE1lbW9yeUNhY2hlIGxpdmUgcmVz
b3VyY2VzIik7Ci0gICAgICAgIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5wcnVuZUxpdmVSZXNv
dXJjZXNUb1NpemUoMCwgLypzaG91bGREZXN0cm95RGVjb2RlZERhdGFGb3JBbGxMaXZlUmVzb3Vy
Y2VzKi8gdHJ1ZSk7Ci0gICAgfQorICAgIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5wcnVuZUxp
dmVSZXNvdXJjZXNUb1NpemUoMCwgLypzaG91bGREZXN0cm95RGVjb2RlZERhdGFGb3JBbGxMaXZl
UmVzb3VyY2VzKi8gdHJ1ZSk7CiAKLSAgICB7Ci0gICAgICAgIE1lbW9yeVByZXNzdXJlSGFuZGxl
cjo6UmVsaWVmTG9nZ2VyIGxvZygiRHJhaW4gQ1NTVmFsdWVQb29sIik7Ci0gICAgICAgIENTU1Zh
bHVlUG9vbDo6c2luZ2xldG9uKCkuZHJhaW4oKTsKLSAgICB9CisgICAgQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5kcmFpbigpOwogCi0gICAgewotICAgICAgICBNZW1vcnlQcmVzc3VyZUhhbmRs
ZXI6OlJlbGllZkxvZ2dlciBsb2coIkRpc2NhcmQgU3R5bGVSZXNvbHZlcnMiKTsKLSAgICAgICAg
VmVjdG9yPFJlZlB0cjxEb2N1bWVudD4+IGRvY3VtZW50czsKLSAgICAgICAgY29weVRvVmVjdG9y
KERvY3VtZW50OjphbGxEb2N1bWVudHMoKSwgZG9jdW1lbnRzKTsKLSAgICAgICAgZm9yIChhdXRv
JiBkb2N1bWVudCA6IGRvY3VtZW50cykKLSAgICAgICAgICAgIGRvY3VtZW50LT5zdHlsZVNjb3Bl
KCkuY2xlYXJSZXNvbHZlcigpOwotICAgIH0KKyAgICBWZWN0b3I8UmVmUHRyPERvY3VtZW50Pj4g
ZG9jdW1lbnRzOworICAgIGNvcHlUb1ZlY3RvcihEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCksIGRv
Y3VtZW50cyk7CisgICAgZm9yIChhdXRvJiBkb2N1bWVudCA6IGRvY3VtZW50cykKKyAgICAgICAg
ZG9jdW1lbnQtPnN0eWxlU2NvcGUoKS5jbGVhclJlc29sdmVyKCk7CiAKLSAgICB7Ci0gICAgICAg
IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyIGxvZygiRGlzY2FyZCBhbGwgSklU
LWNvbXBpbGVkIGNvZGUiKTsKLSAgICAgICAgR0NDb250cm9sbGVyOjpzaW5nbGV0b24oKS5kZWxl
dGVBbGxDb2RlKCk7Ci0gICAgfQorICAgIEdDQ29udHJvbGxlcjo6c2luZ2xldG9uKCkuZGVsZXRl
QWxsQ29kZSgpOwogCiAjaWYgRU5BQkxFKFZJREVPKQotICAgIHsKLSAgICAgICAgTWVtb3J5UHJl
c3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXIgbG9nKCJEcm9wcGluZyBidWZmZXJlZCBkYXRhIGZy
b20gcGF1c2VkIG1lZGlhIGVsZW1lbnRzIik7Ci0gICAgICAgIGZvciAoYXV0byogbWVkaWFFbGVt
ZW50IDogSFRNTE1lZGlhRWxlbWVudDo6YWxsTWVkaWFFbGVtZW50cygpKSB7Ci0gICAgICAgICAg
ICBpZiAobWVkaWFFbGVtZW50LT5wYXVzZWQoKSkKLSAgICAgICAgICAgICAgICBtZWRpYUVsZW1l
bnQtPnB1cmdlQnVmZmVyZWREYXRhSWZQb3NzaWJsZSgpOwotICAgICAgICB9CisgICAgZm9yIChh
dXRvKiBtZWRpYUVsZW1lbnQgOiBIVE1MTWVkaWFFbGVtZW50OjphbGxNZWRpYUVsZW1lbnRzKCkp
IHsKKyAgICAgICAgaWYgKG1lZGlhRWxlbWVudC0+cGF1c2VkKCkpCisgICAgICAgICAgICBtZWRp
YUVsZW1lbnQtPnB1cmdlQnVmZmVyZWREYXRhSWZQb3NzaWJsZSgpOwogICAgIH0KICNlbmRpZgog
CiAgICAgaWYgKHN5bmNocm9ub3VzID09IFN5bmNocm9ub3VzOjpZZXMpIHsKLSAgICAgICAgTWVt
b3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXIgbG9nKCJDb2xsZWN0aW5nIEphdmFTY3Jp
cHQgZ2FyYmFnZSIpOwogICAgICAgICBHQ0NvbnRyb2xsZXI6OnNpbmdsZXRvbigpLmdhcmJhZ2VD
b2xsZWN0Tm93KCk7CiAgICAgfSBlbHNlIHsKICNpZiBQTEFURk9STShJT1MpCkBAIC0xNDgsMTcg
KzExMSwxNCBAQCB2b2lkIHJlbGVhc2VNZW1vcnkoQ3JpdGljYWwgY3JpdGljYWwsIFN5bmNocm9u
b3VzIHN5bmNocm9ub3VzKQogCiAgICAgcGxhdGZvcm1SZWxlYXNlTWVtb3J5KGNyaXRpY2FsKTsK
IAotICAgIHsKLSAgICAgICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXIgbG9n
KCJSZWxlYXNlIGZyZWUgRmFzdE1hbGxvYyBtZW1vcnkiKTsKLSAgICAgICAgLy8gRmFzdE1hbGxv
YyBoYXMgbG9jay1mcmVlIHRocmVhZCBzcGVjaWZpYyBjYWNoZXMgdGhhdCBjYW4gb25seSBiZSBj
bGVhcmVkIGZyb20gdGhlIHRocmVhZCBpdHNlbGYuCi0gICAgICAgIFdvcmtlclRocmVhZDo6cmVs
ZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWRzKCk7CisgICAgLy8gRmFzdE1hbGxv
YyBoYXMgbG9jay1mcmVlIHRocmVhZCBzcGVjaWZpYyBjYWNoZXMgdGhhdCBjYW4gb25seSBiZSBj
bGVhcmVkIGZyb20gdGhlIHRocmVhZCBpdHNlbGYuCisgICAgV29ya2VyVGhyZWFkOjpyZWxlYXNl
RmFzdE1hbGxvY0ZyZWVNZW1vcnlJbkFsbFRocmVhZHMoKTsKICNpZiBFTkFCTEUoQVNZTkNfU0NS
T0xMSU5HKSAmJiAhUExBVEZPUk0oSU9TKQotICAgICAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3Bh
dGNoKFtdKCkgewotICAgICAgICAgICAgV1RGOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnko
KTsKLSAgICAgICAgfSk7Ci0jZW5kaWYKKyAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKFtd
KCkgewogICAgICAgICBXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgpOwotICAgIH0K
KyAgICB9KTsKKyNlbmRpZgorICAgIFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7
CiAKICNpZiBFTkFCTEUoUkVTT1VSQ0VfVVNBR0UpCiAgICAgUGFnZTo6Zm9yRWFjaFBhZ2UoWyZd
KFBhZ2UmIHBhZ2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvTWVt
b3J5UmVsZWFzZUNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9NZW1vcnlSZWxl
YXNlQ29jb2EubW0KaW5kZXggMjEzNWI3MjcxYTc5MTc0M2Q2YTIxNjE2Y2MzZTMyODQwYmE2YjFk
Mi4uMmNmNDlhNzMwYzQ5MzgzM2FlYTRmNTgzMTNlYzBkYTNhYjRmNmVjNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9NZW1vcnlSZWxlYXNlQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9jb2NvYS9NZW1vcnlSZWxlYXNlQ29jb2EubW0KQEAgLTM3LDIxICsz
NywxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgcGxhdGZvcm1SZWxlYXNlTWVtb3J5
KENyaXRpY2FsKQogewotICAgIHsKLSAgICAgICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxp
ZWZMb2dnZXIgbG9nKCJQdXJnaW5nIFNRTGl0ZSBjYWNoZXMiKTsKLSAgICAgICAgX3NxbGl0ZTNf
cHVyZ2VFbGlnaWJsZVBhZ2VyQ2FjaGVNZW1vcnkoKTsKLSAgICB9CisgICAgX3NxbGl0ZTNfcHVy
Z2VFbGlnaWJsZVBhZ2VyQ2FjaGVNZW1vcnkoKTsKKworICAgIGZvciAoYXV0byYgcG9vbCA6IExh
eWVyUG9vbDo6YWxsTGF5ZXJQb29scygpKQorICAgICAgICBwb29sLT5kcmFpbigpOwogCi0gICAg
ewotICAgICAgICBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlciBsb2coIkRyYWlu
IExheWVyUG9vbHMiKTsKLSAgICAgICAgZm9yIChhdXRvJiBwb29sIDogTGF5ZXJQb29sOjphbGxM
YXllclBvb2xzKCkpCi0gICAgICAgICAgICBwb29sLT5kcmFpbigpOwotICAgIH0KICNpZiBVU0Uo
SU9TVVJGQUNFKQotICAgIHsKLSAgICAgICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZM
b2dnZXIgbG9nKCJEcmFpbiBJT1N1cmZhY2VQb29sIik7Ci0gICAgICAgIElPU3VyZmFjZVBvb2w6
OnNoYXJlZFBvb2woKS5kaXNjYXJkQWxsU3VyZmFjZXMoKTsKLSAgICB9CisgICAgSU9TdXJmYWNl
UG9vbDo6c2hhcmVkUG9vbCgpLmRpc2NhcmRBbGxTdXJmYWNlcygpOwogI2VuZGlmCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCmlu
ZGV4IDk1YWMzZjI3OGI5ZjQwZWYwM2U0YWEwNDliZGM2NTM0YmNjYjY0NmMuLmI5YWMwZTU5MDBk
YmZmOTA5NmU3YjExZjgxZjBjNmE5YTk3NTQ3YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcApAQCAtNjEsNiArNjEsNyBAQCB2b2lk
IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFzZU1lbW9yeShDcml0aWNhbCBjcml0aWNhbCwg
U3luY2hyb25vdXMgc3luY2hybwogICAgIGlmICghbV9sb3dNZW1vcnlIYW5kbGVyKQogICAgICAg
ICByZXR1cm47CiAKKyAgICBSZWxpZWZMb2dnZXIgbG9nKCJUb3RhbCIpOwogICAgIG1fbG93TWVt
b3J5SGFuZGxlcihjcml0aWNhbCwgc3luY2hyb25vdXMpOwogICAgIHBsYXRmb3JtUmVsZWFzZU1l
bW9yeShjcml0aWNhbCk7CiB9CkBAIC03NSwxOSArNzYsMTkgQEAgdm9pZCBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6bG9nTWVtb3J5VXNhZ2VDaGFuZ2UoKQogI2RlZmluZSBN
RU1PUllQUkVTU1VSRV9MT0coLi4uKSBXVEZMb2dBbHdheXMoX19WQV9BUkdTX18pCiAjZW5kaWYK
IAotICAgIHNpemVfdCBjdXJyZW50TWVtb3J5ID0gcGxhdGZvcm1NZW1vcnlVc2FnZSgpOwotICAg
IGlmIChjdXJyZW50TWVtb3J5ID09IHN0YXRpY19jYXN0PHNpemVfdD4oLTEpIHx8IG1faW5pdGlh
bE1lbW9yeSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSkgeworICAgIGF1dG8gY3VycmVudE1l
bW9yeSA9IHBsYXRmb3JtTWVtb3J5VXNhZ2UoKTsKKyAgICBpZiAoIWN1cnJlbnRNZW1vcnkgfHwg
IW1faW5pdGlhbE1lbW9yeSkgewogICAgICAgICBNRU1PUllQUkVTU1VSRV9MT0coIk1lbW9yeSBw
cmVzc3VyZSByZWxpZWY6ICIgU1RSSU5HX1NQRUNJRklDQVRJT04gIjogKFVuYWJsZSB0byBnZXQg
ZGlydHkgbWVtb3J5IGluZm9ybWF0aW9uIGZvciBwcm9jZXNzKSIsIG1fbG9nU3RyaW5nKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGxvbmcgbWVtb3J5RGlmZiA9IGN1cnJlbnRNZW1v
cnkgLSBtX2luaXRpYWxNZW1vcnk7Ci0gICAgaWYgKG1lbW9yeURpZmYgPCAwKQotICAgICAgICBN
RU1PUllQUkVTU1VSRV9MT0coIk1lbW9yeSBwcmVzc3VyZSByZWxpZWY6ICIgU1RSSU5HX1NQRUNJ
RklDQVRJT04gIjogLWRpcnR5ICVsZCBieXRlcyAoZnJvbSAlenUgdG8gJXp1KSIsIG1fbG9nU3Ry
aW5nLCAobWVtb3J5RGlmZiAqIC0xKSwgbV9pbml0aWFsTWVtb3J5LCBjdXJyZW50TWVtb3J5KTsK
LSAgICBlbHNlIGlmIChtZW1vcnlEaWZmID4gMCkKLSAgICAgICAgTUVNT1JZUFJFU1NVUkVfTE9H
KCJNZW1vcnkgcHJlc3N1cmUgcmVsaWVmOiAiIFNUUklOR19TUEVDSUZJQ0FUSU9OICI6ICtkaXJ0
eSAlbGQgYnl0ZXMgKGZyb20gJXp1IHRvICV6dSkiLCBtX2xvZ1N0cmluZywgbWVtb3J5RGlmZiwg
bV9pbml0aWFsTWVtb3J5LCBjdXJyZW50TWVtb3J5KTsKLSAgICBlbHNlCi0gICAgICAgIE1FTU9S
WVBSRVNTVVJFX0xPRygiTWVtb3J5IHByZXNzdXJlIHJlbGllZjogIiBTVFJJTkdfU1BFQ0lGSUNB
VElPTiAiOiA9ZGlydHkgKGF0ICV6dSBieXRlcykiLCBtX2xvZ1N0cmluZywgY3VycmVudE1lbW9y
eSk7CisgICAgbG9uZyByZXNpZGVudERpZmYgPSBjdXJyZW50TWVtb3J5LT5yZXNpZGVudCAtIG1f
aW5pdGlhbE1lbW9yeS0+cmVzaWRlbnQ7CisgICAgbG9uZyBwaHlzaWNhbERpZmYgPSBjdXJyZW50
TWVtb3J5LT5waHlzaWNhbCAtIG1faW5pdGlhbE1lbW9yeS0+cGh5c2ljYWw7CisKKyAgICBNRU1P
UllQUkVTU1VSRV9MT0coIk1lbW9yeSBwcmVzc3VyZSByZWxpZWY6ICIgU1RSSU5HX1NQRUNJRklD
QVRJT04gIjogcmVzID0gJXp1LyV6dS8lbGQsIHJlcytzd2FwID0gJXp1LyV6dS8lbGQiLAorICAg
ICAgICBtX2xvZ1N0cmluZywKKyAgICAgICAgbV9pbml0aWFsTWVtb3J5LT5yZXNpZGVudCwgY3Vy
cmVudE1lbW9yeS0+cmVzaWRlbnQsIHJlc2lkZW50RGlmZiwKKyAgICAgICAgbV9pbml0aWFsTWVt
b3J5LT5waHlzaWNhbCwgY3VycmVudE1lbW9yeS0+cGh5c2ljYWwsIHBoeXNpY2FsRGlmZik7CiB9
CiAKICNpZiAhUExBVEZPUk0oQ09DT0EpICYmICFPUyhMSU5VWCkgJiYgIVBMQVRGT1JNKFdJTikK
QEAgLTk2LDcgKzk3LDcgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnVuaW5zdGFsbCgp
IHsgfQogdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OmhvbGRPZmYodW5zaWduZWQpIHsgfQog
dm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01lbW9yeVByZXNzdXJlKENyaXRp
Y2FsLCBTeW5jaHJvbm91cykgeyB9CiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cGxhdGZv
cm1SZWxlYXNlTWVtb3J5KENyaXRpY2FsKSB7IH0KLXNpemVfdCBNZW1vcnlQcmVzc3VyZUhhbmRs
ZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1NZW1vcnlVc2FnZSgpIHsgcmV0dXJuIDA7IH0KK3N0
ZDo6b3B0aW9uYWw8TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6Ok1lbW9yeVVz
YWdlPiBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1NZW1vcnlV
c2FnZSgpIHsgcmV0dXJuIHN0ZDo6bnVsbG9wdDsgfQogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNz
dXJlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5k
bGVyLmgKaW5kZXggZjlmZDNhNjlmZWFkMzBiZjRlNmY4Y2QxMTIwN2U0N2VhOWIyN2JlNi4uZjg2
ZTliZTNmNmU1NjZjNjg0MzRhY2RiNTU1MzM2M2I2ZDAzNTQwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKQEAgLTMzLDYgKzMzLDcgQEAK
ICNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAj
aW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+
CiAKICNpZiBQTEFURk9STShJT1MpCiAjaW5jbHVkZSA8d3RmL0xvY2suaD4KQEAgLTkwLDM0ICs5
MSwzOCBAQCBwdWJsaWM6CiAgICAgcHVibGljOgogICAgICAgICBleHBsaWNpdCBSZWxpZWZMb2dn
ZXIoY29uc3QgY2hhciAqbG9nKQogICAgICAgICAgICAgOiBtX2xvZ1N0cmluZyhsb2cpCi0jaWYg
IVJFTEVBU0VfTE9HX0RJU0FCTEVECi0gICAgICAgICAgICAsIG1faW5pdGlhbE1lbW9yeShwbGF0
Zm9ybU1lbW9yeVVzYWdlKCkpCi0jZWxzZQotICAgICAgICAgICAgLCBtX2luaXRpYWxNZW1vcnko
c19sb2dnaW5nRW5hYmxlZCA/IHBsYXRmb3JtTWVtb3J5VXNhZ2UoKSA6IDApCi0jZW5kaWYKKyAg
ICAgICAgICAgICwgbV9pbml0aWFsTWVtb3J5KGxvZ2dpbmdFbmFibGVkKCkgPyBwbGF0Zm9ybU1l
bW9yeVVzYWdlKCkgOiBNZW1vcnlVc2FnZSB7IH0pCiAgICAgICAgIHsKICAgICAgICAgfQogCiAg
ICAgICAgIH5SZWxpZWZMb2dnZXIoKQogICAgICAgICB7Ci0jaWYgIVJFTEVBU0VfTE9HX0RJU0FC
TEVECi0gICAgICAgICAgICBsb2dNZW1vcnlVc2FnZUNoYW5nZSgpOwotI2Vsc2UKLSAgICAgICAg
ICAgIGlmIChzX2xvZ2dpbmdFbmFibGVkKQorICAgICAgICAgICAgaWYgKGxvZ2dpbmdFbmFibGVk
KCkpCiAgICAgICAgICAgICAgICAgbG9nTWVtb3J5VXNhZ2VDaGFuZ2UoKTsKLSNlbmRpZgogICAg
ICAgICB9CiAKKwogICAgICAgICBjb25zdCBjaGFyKiBsb2dTdHJpbmcoKSBjb25zdCB7IHJldHVy
biBtX2xvZ1N0cmluZzsgfQogICAgICAgICBzdGF0aWMgdm9pZCBzZXRMb2dnaW5nRW5hYmxlZChi
b29sIGVuYWJsZWQpIHsgc19sb2dnaW5nRW5hYmxlZCA9IGVuYWJsZWQ7IH0KLSAgICAgICAgc3Rh
dGljIGJvb2wgbG9nZ2luZ0VuYWJsZWQoKSB7IHJldHVybiBzX2xvZ2dpbmdFbmFibGVkOyB9Cisg
ICAgICAgIHN0YXRpYyBib29sIGxvZ2dpbmdFbmFibGVkKCkKKyAgICAgICAgeworI2lmIFJFTEVB
U0VfTE9HX0RJU0FCTEVECisgICAgICAgICAgICByZXR1cm4gc19sb2dnaW5nRW5hYmxlZDsKKyNl
bHNlCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorICAgICAgICB9CiAKICAgICBw
cml2YXRlOgotICAgICAgICBzaXplX3QgcGxhdGZvcm1NZW1vcnlVc2FnZSgpOworICAgICAgICBz
dHJ1Y3QgTWVtb3J5VXNhZ2UgeworICAgICAgICAgICAgc2l6ZV90IHJlc2lkZW50IHsgMCB9Owor
ICAgICAgICAgICAgc2l6ZV90IHBoeXNpY2FsIHsgMCB9OworICAgICAgICB9OworICAgICAgICBz
dGQ6Om9wdGlvbmFsPE1lbW9yeVVzYWdlPiBwbGF0Zm9ybU1lbW9yeVVzYWdlKCk7CiAgICAgICAg
IHZvaWQgbG9nTWVtb3J5VXNhZ2VDaGFuZ2UoKTsKIAogICAgICAgICBjb25zdCBjaGFyKiBtX2xv
Z1N0cmluZzsKLSAgICAgICAgc2l6ZV90IG1faW5pdGlhbE1lbW9yeTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxNZW1vcnlVc2FnZT4gbV9pbml0aWFsTWVtb3J5OwogCiAgICAgICAgIFdFQkNPUkVf
RVhQT1JUIHN0YXRpYyBib29sIHNfbG9nZ2luZ0VuYWJsZWQ7CiAgICAgfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29h
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Q29jb2EubW0KaW5kZXggM2JiMWUwZGI1NTUyM2E1YTdkMjM0YmQ2N2RjN2Q0Nzg0MzJjNmQwMS4u
M2VlYzdjN2FjNzJhOGU3MGZmNjk2NWFiYjVmNDc4OGQ3OTdlZTZmYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVyQ29jb2EubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvTWVtb3J5UHJlc3N1cmVIYW5kbGVy
Q29jb2EubW0KQEAgLTQ5LDcgKzQ5LDYgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnBs
YXRmb3JtUmVsZWFzZU1lbW9yeShDcml0aWNhbCBjcml0aWNhbCkKICAgICBpZiAoY3JpdGljYWwg
PT0gQ3JpdGljYWw6OlllcyAmJiAoIWlzVW5kZXJNZW1vcnlQcmVzc3VyZSgpIHx8IG1faXNTaW11
bGF0aW5nTWVtb3J5UHJlc3N1cmUpKSB7CiAgICAgICAgIC8vIGxpYmNhY2hlIGxpc3RlbnMgdG8g
T1MgbWVtb3J5IG5vdGlmaWNhdGlvbnMsIGJ1dCBmb3IgcHJvY2VzcyBzdXNwZW5zaW9uCiAgICAg
ICAgIC8vIG9yIG1lbW9yeSBwcmVzc3VyZSBzaW11bGF0aW9uLCB3ZSBuZWVkIHRvIHByb2QgaXQg
bWFudWFsbHk6Ci0gICAgICAgIFJlbGllZkxvZ2dlciBsb2coIlB1cmdpbmcgbGliY2FjaGUgY2Fj
aGVzIik7CiAgICAgICAgIGNhY2hlX3NpbXVsYXRlX21lbW9yeV93YXJuaW5nX2V2ZW50KERJU1BB
VENIX01FTU9SWVBSRVNTVVJFX0NSSVRJQ0FMKTsKICAgICB9CiB9CkBAIC0xODYsMTUgKzE4NSwx
NSBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1cmUo
Q3JpdGljYWwgY3JpdGljYWwsIFN5bmNocm9ubwogI2VuZGlmCiB9CiAKLXNpemVfdCBNZW1vcnlQ
cmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1NZW1vcnlVc2FnZSgpCitzdGQ6
Om9wdGlvbmFsPE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpNZW1vcnlVc2Fn
ZT4gTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNh
Z2UoKQogewogICAgIHRhc2tfdm1faW5mb19kYXRhX3Qgdm1JbmZvOwogICAgIG1hY2hfbXNnX3R5
cGVfbnVtYmVyX3QgY291bnQgPSBUQVNLX1ZNX0lORk9fQ09VTlQ7CiAgICAga2Vybl9yZXR1cm5f
dCBlcnIgPSB0YXNrX2luZm8obWFjaF90YXNrX3NlbGYoKSwgVEFTS19WTV9JTkZPLCAodGFza19p
bmZvX3QpICZ2bUluZm8sICZjb3VudCk7CiAgICAgaWYgKGVyciAhPSBLRVJOX1NVQ0NFU1MpCi0g
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKTsKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBzdGF0aWNfY2FzdDxzaXplX3Q+KHZtSW5mby5pbnRl
cm5hbCk7CisgICAgcmV0dXJuIE1lbW9yeVVzYWdlIHtzdGF0aWNfY2FzdDxzaXplX3Q+KHZtSW5m
by5pbnRlcm5hbCksIHN0YXRpY19jYXN0PHNpemVfdD4odm1JbmZvLnBoeXNfZm9vdHByaW50KX07
CiB9CiAKICNpZiBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAKaW5kZXggNDIx
YzYxNjBmODg5MTI0NjQ3NzNkNGVhM2ZjYWVkNDk2M2Q1YTdmZC4uNGQzM2FiZmE4ZGFhMTJlY2Zm
YzcxYzI5NjEyZmE5MzRlYjg3Y2UzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2xpbnV4L01lbW9yeVByZXNzdXJlSGFuZGxlckxpbnV4LmNwcApAQCAtMjky
LDE0ICsyOTIsMTMgQEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01lbW9y
eVByZXNzdXJlKENyaXRpY2FsIGNyaXRpY2FsLCBTeW5jaHJvbm8KIHZvaWQgTWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpwbGF0Zm9ybVJlbGVhc2VNZW1vcnkoQ3JpdGljYWwpCiB7CiAjaWZkZWYgX19H
TElCQ19fCi0gICAgUmVsaWVmTG9nZ2VyIGxvZygiUnVuIG1hbGxvY190cmltIik7CiAgICAgbWFs
bG9jX3RyaW0oMCk7CiAjZW5kaWYKIH0KIAotc2l6ZV90IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6
UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybU1lbW9yeVVzYWdlKCkKK3N0ZDo6b3B0aW9uYWw8TWVtb3J5
UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6Ok1lbW9yeVVzYWdlPiBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1NZW1vcnlVc2FnZSgpCiB7Ci0gICAgcmV0
dXJuIHByb2Nlc3NNZW1vcnlVc2FnZSgpOworICAgIHJldHVybiBNZW1vcnlVc2FnZSB7cHJvY2Vz
c01lbW9yeVVzYWdlKCksIDB9OwogfQogCiB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6c2V0
TWVtb3J5UHJlc3N1cmVNb25pdG9ySGFuZGxlKGludCBmZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9NZW1vcnlQcmVzc3VyZUhhbmRsZXJXaW4uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5jcHAKaW5kZXgg
ZmM4N2I3MDMyOTIzODcxNmQxYzYzNTg3OGNlMDc5MmRiYjdkZmQzMi4uZDE0ODBkZmNlYzMxZjg3
NTQzNjA2OGUxMGQ0MjJlMzhlYzY0MWIzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vd2luL01lbW9yeVByZXNzdXJlSGFuZGxlcldpbi5jcHAKQEAgLTEyNCw5ICsx
MjQsOSBAQCB2b2lkIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVzcG9uZFRvTWVtb3J5UHJlc3N1
cmUoQ3JpdGljYWwgY3JpdGljYWwsIFN5bmNocm9ubwogICAgIHJlbGVhc2VNZW1vcnkoY3JpdGlj
YWwsIHN5bmNocm9ub3VzKTsKIH0KIAotc2l6ZV90IE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVs
aWVmTG9nZ2VyOjpwbGF0Zm9ybU1lbW9yeVVzYWdlKCkKK3N0ZDo6b3B0aW9uYWw8TWVtb3J5UHJl
c3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6Ok1lbW9yeVVzYWdlPiBNZW1vcnlQcmVzc3VyZUhh
bmRsZXI6OlJlbGllZkxvZ2dlcjo6cGxhdGZvcm1NZW1vcnlVc2FnZSgpCiB7Ci0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296948</attachid>
            <date>2016-12-12 13:40:07 -0800</date>
            <delta_ts>2016-12-13 10:50:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165533-20161212133919.patch</filename>
            <type>text/plain</type>
            <size>17268</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5NzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODEzYjY5ZGYzNGQzNTAw
YThmMDlhNzU0NzRkZjVjYzU1ZmZlZTNkOC4uZTg4MjMwOGU2ZWM5ZWNhZGE4NzkwYzRhNTc5NTQ0
ZjljZWIxZDQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDE2LTEyLTA5ICBLZWl0
aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBNZW1vcnkgd2FybmluZyBs
b2dnaW5nIGFwcGVhcnMgdG8gY2FwdHVyZSByZXNpZGVudCBmb290cHJpbnQsIG1pc3NpbmcgY29t
cHJlc3Mvc3dhcC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NTUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjkzMTg0MTA+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGF2ZSBwbGF0Zm9ybU1lbW9y
eVVzYWdlIHJldHVybiBib3RoIHJlc2lkZW50IGFuZCByZXNpZGVudCArIHN3YXBwZWQKKyAgICAg
ICAgdmFsdWVzLiBUaGlzIGlzIG5vdyByZXR1cm5lZCBhcyBhIHN0cnVjdCBpbiBhIHN0ZDo6b3B0
aW9uYWwgdG8gYmV0dGVyCisgICAgICAgIHN1cHBvcnQgY2FzZXMgd2hlcmUgdmFsdWVzIGNhbm5v
dCBvciBhcmUgbm90IHJldHVybmVkLiBSZXBvcnQgdGhlc2UKKyAgICAgICAgdmFsdWVzIGluIGxv
Z01lbW9yeVVzYWdlQ2hhbmdlLgorCisgICAgICAgIFJlbW92ZSBtb3N0IG9mIHRoZSBSZWxpZWZM
b2dnZXIgaW5zdGFuY2VzIGFuZCB0aGVpciBtZXNzYWdlcy4gV2Ugbm8KKyAgICAgICAgbG9uZ2Vy
IGZyZWUgdXAgZmFzdE1hbGxvYyBtZW1vcnkgYWZ0ZXIgZWFjaCBtZW1vcnktcmVsZWFzZSBvcGVy
YXRpb24sCisgICAgICAgIHNvIHRoZXJlIGFyZSBubyBtZW1vcnkgcmVnaW9ucyByZXR1cm5lZCB0
byB0aGUgT1MuIEluc3RlYWQsIHdlIG5vdworICAgICAgICBmcmVlIHVwIGZhc3RNYWxsb2MgbWVt
b3J5IHJlZ2lvbnMgYXQgdGhlIGVuZCBvZiBhbGwgbWVtb3J5LXJlbGVhc2luZworICAgICAgICBv
cGVyYXRpb25zIGluIG9uZSBmZWxsIHN3b29wIGFuZCByZXBvcnQgYSBncmFuZCB0b3RhbCBvZiBt
ZW1vcnkKKyAgICAgICAgcmV0dXJuZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIC0tIG5vIGNo
YW5nZXMgdG8gdXNlciBhY2Nlc3NpYmxlIGZ1bmN0aW9uYWxpdHkuCisKKyAgICAgICAgKiBwYWdl
L01lbW9yeVJlbGVhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmVsZWFzZU5vbmNyaXRpY2Fs
TWVtb3J5KToKKyAgICAgICAgKFdlYkNvcmU6OnJlbGVhc2VDcml0aWNhbE1lbW9yeSk6CisgICAg
ICAgIChXZWJDb3JlOjpyZWxlYXNlTWVtb3J5KToKKyAgICAgICAgKiBwYWdlL2NvY29hL01lbW9y
eVJlbGVhc2VDb2NvYS5tbToKKyAgICAgICAgKFdlYkNvcmU6OnBsYXRmb3JtUmVsZWFzZU1lbW9y
eSk6CisgICAgICAgICogcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6cmVsZWFzZU1lbW9yeSk6CisgICAg
ICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6bG9nTWVt
b3J5VXNhZ2VDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UpOgorICAgICAgICAqIHBsYXRmb3Jt
L01lbW9yeVByZXNzdXJlSGFuZGxlci5oOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OlJlbGllZkxvZ2dlcik6CisgICAgICAgIChXZWJDb3Jl
OjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6flJlbGllZkxvZ2dlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6bG9n
Z2luZ0VuYWJsZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2NvY29hL01lbW9yeVByZXNzdXJlSGFu
ZGxlckNvY29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpw
bGF0Zm9ybVJlbGVhc2VNZW1vcnkpOgorICAgICAgICAoV2ViQ29yZTo6TWVtb3J5UHJlc3N1cmVI
YW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UpOgorICAgICAgICAqIHBs
YXRmb3JtL2xpbnV4L01lbW9yeVByZXNzdXJlSGFuZGxlckxpbnV4LmNwcDoKKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vTWVtb3J5UHJlc3N1cmVIYW5kbGVyV2luLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybU1lbW9yeVVz
YWdlKToKKwogMjAxNi0xMi0xMiAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+
CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4aW5nIGJ1aWxkIGJyZWFrYWdlIGluIEdTdHJlYW1l
cidzIFdlYktpdENvbW1vbkVuY3J5cHRpb25EZWNyeXB0b3JHU3RyZWFtZXIuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9NZW1vcnlSZWxlYXNlLmNwcAppbmRleCA0ODMwZmFjZGE1NTA5NTUyYTY1YjNkNmFlYWMz
OGQ5NmNhZTg1MWU0Li43YWZmZTI5N2VmMzQ4NDMwZTA0ZjM5MWYyODMxNmFlYWQ1ODUzNjJhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL01lbW9yeVJlbGVhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvTWVtb3J5UmVsZWFzZS5jcHAKQEAgLTQ4LDgyICs0OCw0NSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyB2b2lkIHJlbGVhc2VOb25jcml0aWNhbE1lbW9y
eSgpCiB7Ci0gICAgewotICAgICAgICBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dl
ciBsb2coIlB1cmdlIGluYWN0aXZlIEZvbnREYXRhIik7Ci0gICAgICAgIEZvbnRDYWNoZTo6c2lu
Z2xldG9uKCkucHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7Ci0gICAgfQorICAgIEZvbnRDYWNoZTo6
c2luZ2xldG9uKCkucHVyZ2VJbmFjdGl2ZUZvbnREYXRhKCk7CiAKLSAgICB7Ci0gICAgICAgIE1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyIGxvZygiQ2xlYXIgV2lkdGhDYWNoZXMi
KTsKLSAgICAgICAgY2xlYXJXaWR0aENhY2hlcygpOwotICAgIH0KKyAgICBjbGVhcldpZHRoQ2Fj
aGVzKCk7CiAKLSAgICB7Ci0gICAgICAgIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9n
Z2VyIGxvZygiRGlzY2FyZCBTZWxlY3RvciBRdWVyeSBDYWNoZSIpOwotICAgICAgICBmb3IgKGF1
dG8qIGRvY3VtZW50IDogRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpKQotICAgICAgICAgICAgZG9j
dW1lbnQtPmNsZWFyU2VsZWN0b3JRdWVyeUNhY2hlKCk7Ci0gICAgfQorICAgIGZvciAoYXV0byog
ZG9jdW1lbnQgOiBEb2N1bWVudDo6YWxsRG9jdW1lbnRzKCkpCisgICAgICAgIGRvY3VtZW50LT5j
bGVhclNlbGVjdG9yUXVlcnlDYWNoZSgpOwogCi0gICAgewotICAgICAgICBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OlJlbGllZkxvZ2dlciBsb2coIlBydW5lIE1lbW9yeUNhY2hlIGRlYWQgcmVzb3Vy
Y2VzIik7Ci0gICAgICAgIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5wcnVuZURlYWRSZXNvdXJj
ZXNUb1NpemUoMCk7Ci0gICAgfQorICAgIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5wcnVuZURl
YWRSZXNvdXJjZXNUb1NpemUoMCk7CiAKLSAgICB7Ci0gICAgICAgIE1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6UmVsaWVmTG9nZ2VyIGxvZygiUHJ1bmUgcHJlc2VudGF0aW9uIGF0dHJpYnV0ZSBjYWNo
ZSIpOwotICAgICAgICBTdHlsZWRFbGVtZW50OjpjbGVhclByZXNlbnRhdGlvbkF0dHJpYnV0ZUNh
Y2hlKCk7Ci0gICAgfQorICAgIFN0eWxlZEVsZW1lbnQ6OmNsZWFyUHJlc2VudGF0aW9uQXR0cmli
dXRlQ2FjaGUoKTsKIAotICAgIHsKLSAgICAgICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxp
ZWZMb2dnZXIgbG9nKCJDbGVhciBpbmxpbmUgc3R5bGVzaGVldCBjYWNoZSIpOwotICAgICAgICBJ
bmxpbmVTdHlsZVNoZWV0T3duZXI6OmNsZWFyQ2FjaGUoKTsKLSAgICB9CisgICAgSW5saW5lU3R5
bGVTaGVldE93bmVyOjpjbGVhckNhY2hlKCk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlbGVhc2VDcml0
aWNhbE1lbW9yeShTeW5jaHJvbm91cyBzeW5jaHJvbm91cykKIHsKLSAgICB7Ci0gICAgICAgIE1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyIGxvZygiRW1wdHkgdGhlIFBhZ2VDYWNo
ZSIpOwotICAgICAgICAvLyBSaWdodCBub3csIHRoZSBvbmx5IHJlYXNvbiB3ZSBjYWxsIHJlbGVh
c2UgY3JpdGljYWwgbWVtb3J5IHdoaWxlIG5vdCB1bmRlciBtZW1vcnkgcHJlc3N1cmUgaXMgaWYg
dGhlIHByb2Nlc3MgaXMgYWJvdXQgdG8gYmUgc3VzcGVuZGVkLgotICAgICAgICBQcnVuaW5nUmVh
c29uIHBydW5pbmdSZWFzb24gPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNpbmdsZXRvbigpLmlz
VW5kZXJNZW1vcnlQcmVzc3VyZSgpID8gUHJ1bmluZ1JlYXNvbjo6TWVtb3J5UHJlc3N1cmUgOiBQ
cnVuaW5nUmVhc29uOjpQcm9jZXNzU3VzcGVuZGVkOwotICAgICAgICBQYWdlQ2FjaGU6OnNpbmds
ZXRvbigpLnBydW5lVG9TaXplTm93KDAsIHBydW5pbmdSZWFzb24pOwotICAgIH0KKyAgICAvLyBS
aWdodCBub3csIHRoZSBvbmx5IHJlYXNvbiB3ZSBjYWxsIHJlbGVhc2UgY3JpdGljYWwgbWVtb3J5
IHdoaWxlIG5vdCB1bmRlciBtZW1vcnkgcHJlc3N1cmUgaXMgaWYgdGhlIHByb2Nlc3MgaXMgYWJv
dXQgdG8gYmUgc3VzcGVuZGVkLgorICAgIFBydW5pbmdSZWFzb24gcHJ1bmluZ1JlYXNvbiA9IE1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6c2luZ2xldG9uKCkuaXNVbmRlck1lbW9yeVByZXNzdXJlKCkg
PyBQcnVuaW5nUmVhc29uOjpNZW1vcnlQcmVzc3VyZSA6IFBydW5pbmdSZWFzb246OlByb2Nlc3NT
dXNwZW5kZWQ7CisgICAgUGFnZUNhY2hlOjpzaW5nbGV0b24oKS5wcnVuZVRvU2l6ZU5vdygwLCBw
cnVuaW5nUmVhc29uKTsKIAotICAgIHsKLSAgICAgICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpS
ZWxpZWZMb2dnZXIgbG9nKCJQcnVuZSBNZW1vcnlDYWNoZSBsaXZlIHJlc291cmNlcyIpOwotICAg
ICAgICBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucHJ1bmVMaXZlUmVzb3VyY2VzVG9TaXplKDAs
IC8qc2hvdWxkRGVzdHJveURlY29kZWREYXRhRm9yQWxsTGl2ZVJlc291cmNlcyovIHRydWUpOwot
ICAgIH0KKyAgICBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucHJ1bmVMaXZlUmVzb3VyY2VzVG9T
aXplKDAsIC8qc2hvdWxkRGVzdHJveURlY29kZWREYXRhRm9yQWxsTGl2ZVJlc291cmNlcyovIHRy
dWUpOwogCi0gICAgewotICAgICAgICBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dl
ciBsb2coIkRyYWluIENTU1ZhbHVlUG9vbCIpOwotICAgICAgICBDU1NWYWx1ZVBvb2w6OnNpbmds
ZXRvbigpLmRyYWluKCk7Ci0gICAgfQorICAgIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuZHJh
aW4oKTsKIAotICAgIHsKLSAgICAgICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dn
ZXIgbG9nKCJEaXNjYXJkIFN0eWxlUmVzb2x2ZXJzIik7Ci0gICAgICAgIFZlY3RvcjxSZWZQdHI8
RG9jdW1lbnQ+PiBkb2N1bWVudHM7Ci0gICAgICAgIGNvcHlUb1ZlY3RvcihEb2N1bWVudDo6YWxs
RG9jdW1lbnRzKCksIGRvY3VtZW50cyk7Ci0gICAgICAgIGZvciAoYXV0byYgZG9jdW1lbnQgOiBk
b2N1bWVudHMpCi0gICAgICAgICAgICBkb2N1bWVudC0+c3R5bGVTY29wZSgpLmNsZWFyUmVzb2x2
ZXIoKTsKLSAgICB9CisgICAgVmVjdG9yPFJlZlB0cjxEb2N1bWVudD4+IGRvY3VtZW50czsKKyAg
ICBjb3B5VG9WZWN0b3IoRG9jdW1lbnQ6OmFsbERvY3VtZW50cygpLCBkb2N1bWVudHMpOworICAg
IGZvciAoYXV0byYgZG9jdW1lbnQgOiBkb2N1bWVudHMpCisgICAgICAgIGRvY3VtZW50LT5zdHls
ZVNjb3BlKCkuY2xlYXJSZXNvbHZlcigpOwogCi0gICAgewotICAgICAgICBNZW1vcnlQcmVzc3Vy
ZUhhbmRsZXI6OlJlbGllZkxvZ2dlciBsb2coIkRpc2NhcmQgYWxsIEpJVC1jb21waWxlZCBjb2Rl
Iik7Ci0gICAgICAgIEdDQ29udHJvbGxlcjo6c2luZ2xldG9uKCkuZGVsZXRlQWxsQ29kZShKU0M6
OkRlbGV0ZUFsbENvZGVJZk5vdENvbGxlY3RpbmcpOwotICAgIH0KKyAgICBHQ0NvbnRyb2xsZXI6
OnNpbmdsZXRvbigpLmRlbGV0ZUFsbENvZGUoSlNDOjpEZWxldGVBbGxDb2RlSWZOb3RDb2xsZWN0
aW5nKTsKIAogI2lmIEVOQUJMRShWSURFTykKLSAgICB7Ci0gICAgICAgIE1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6UmVsaWVmTG9nZ2VyIGxvZygiRHJvcHBpbmcgYnVmZmVyZWQgZGF0YSBmcm9tIHBh
dXNlZCBtZWRpYSBlbGVtZW50cyIpOwotICAgICAgICBmb3IgKGF1dG8qIG1lZGlhRWxlbWVudCA6
IEhUTUxNZWRpYUVsZW1lbnQ6OmFsbE1lZGlhRWxlbWVudHMoKSkgewotICAgICAgICAgICAgaWYg
KG1lZGlhRWxlbWVudC0+cGF1c2VkKCkpCi0gICAgICAgICAgICAgICAgbWVkaWFFbGVtZW50LT5w
dXJnZUJ1ZmZlcmVkRGF0YUlmUG9zc2libGUoKTsKLSAgICAgICAgfQorICAgIGZvciAoYXV0byog
bWVkaWFFbGVtZW50IDogSFRNTE1lZGlhRWxlbWVudDo6YWxsTWVkaWFFbGVtZW50cygpKSB7Cisg
ICAgICAgIGlmIChtZWRpYUVsZW1lbnQtPnBhdXNlZCgpKQorICAgICAgICAgICAgbWVkaWFFbGVt
ZW50LT5wdXJnZUJ1ZmZlcmVkRGF0YUlmUG9zc2libGUoKTsKICAgICB9CiAjZW5kaWYKIAogICAg
IGlmIChzeW5jaHJvbm91cyA9PSBTeW5jaHJvbm91czo6WWVzKSB7Ci0gICAgICAgIE1lbW9yeVBy
ZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyIGxvZygiQ29sbGVjdGluZyBKYXZhU2NyaXB0IGdh
cmJhZ2UiKTsKICAgICAgICAgR0NDb250cm9sbGVyOjpzaW5nbGV0b24oKS5nYXJiYWdlQ29sbGVj
dE5vdygpOwogICAgIH0gZWxzZSB7CiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMTQ4LDE3ICsxMTEs
MTQgQEAgdm9pZCByZWxlYXNlTWVtb3J5KENyaXRpY2FsIGNyaXRpY2FsLCBTeW5jaHJvbm91cyBz
eW5jaHJvbm91cykKIAogICAgIHBsYXRmb3JtUmVsZWFzZU1lbW9yeShjcml0aWNhbCk7CiAKLSAg
ICB7Ci0gICAgICAgIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyIGxvZygiUmVs
ZWFzZSBmcmVlIEZhc3RNYWxsb2MgbWVtb3J5Iik7Ci0gICAgICAgIC8vIEZhc3RNYWxsb2MgaGFz
IGxvY2stZnJlZSB0aHJlYWQgc3BlY2lmaWMgY2FjaGVzIHRoYXQgY2FuIG9ubHkgYmUgY2xlYXJl
ZCBmcm9tIHRoZSB0aHJlYWQgaXRzZWxmLgotICAgICAgICBXb3JrZXJUaHJlYWQ6OnJlbGVhc2VG
YXN0TWFsbG9jRnJlZU1lbW9yeUluQWxsVGhyZWFkcygpOworICAgIC8vIEZhc3RNYWxsb2MgaGFz
IGxvY2stZnJlZSB0aHJlYWQgc3BlY2lmaWMgY2FjaGVzIHRoYXQgY2FuIG9ubHkgYmUgY2xlYXJl
ZCBmcm9tIHRoZSB0aHJlYWQgaXRzZWxmLgorICAgIFdvcmtlclRocmVhZDo6cmVsZWFzZUZhc3RN
YWxsb2NGcmVlTWVtb3J5SW5BbGxUaHJlYWRzKCk7CiAjaWYgRU5BQkxFKEFTWU5DX1NDUk9MTElO
RykgJiYgIVBMQVRGT1JNKElPUykKLSAgICAgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChb
XSgpIHsKLSAgICAgICAgICAgIFdURjo6cmVsZWFzZUZhc3RNYWxsb2NGcmVlTWVtb3J5KCk7Ci0g
ICAgICAgIH0pOwotI2VuZGlmCisgICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChbXSgpIHsK
ICAgICAgICAgV1RGOjpyZWxlYXNlRmFzdE1hbGxvY0ZyZWVNZW1vcnkoKTsKLSAgICB9CisgICAg
fSk7CisjZW5kaWYKKyAgICBXVEY6OnJlbGVhc2VGYXN0TWFsbG9jRnJlZU1lbW9yeSgpOwogCiAj
aWYgRU5BQkxFKFJFU09VUkNFX1VTQUdFKQogICAgIFBhZ2U6OmZvckVhY2hQYWdlKFsmXShQYWdl
JiBwYWdlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NvY29hL01lbW9yeVJl
bGVhc2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY29jb2EvTWVtb3J5UmVsZWFzZUNv
Y29hLm1tCmluZGV4IGY4NDYwYTgwYjE1NTc1NWJhNGYwZTE1MWJmN2Q3ZjhlNjlkMzAzZDMuLjhk
NDBmMjQwNzdlYmEwNzQ5OGFjMjU0OTUwNTQ1ZDU2YmQ4NThkZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvY29jb2EvTWVtb3J5UmVsZWFzZUNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvY29jb2EvTWVtb3J5UmVsZWFzZUNvY29hLm1tCkBAIC0zNywyMSArMzcsMTMg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIHBsYXRmb3JtUmVsZWFzZU1lbW9yeShDcml0
aWNhbCkKIHsKLSAgICB7Ci0gICAgICAgIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9n
Z2VyIGxvZygiUHVyZ2luZyBTUUxpdGUgY2FjaGVzIik7Ci0gICAgICAgIF9zcWxpdGUzX3B1cmdl
RWxpZ2libGVQYWdlckNhY2hlTWVtb3J5KCk7Ci0gICAgfQorICAgIF9zcWxpdGUzX3B1cmdlRWxp
Z2libGVQYWdlckNhY2hlTWVtb3J5KCk7CisKKyAgICBmb3IgKGF1dG8mIHBvb2wgOiBMYXllclBv
b2w6OmFsbExheWVyUG9vbHMoKSkKKyAgICAgICAgcG9vbC0+ZHJhaW4oKTsKIAotICAgIHsKLSAg
ICAgICAgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXIgbG9nKCJEcmFpbiBMYXll
clBvb2xzIik7Ci0gICAgICAgIGZvciAoYXV0byYgcG9vbCA6IExheWVyUG9vbDo6YWxsTGF5ZXJQ
b29scygpKQotICAgICAgICAgICAgcG9vbC0+ZHJhaW4oKTsKLSAgICB9CiAjaWYgVVNFKElPU1VS
RkFDRSkKLSAgICB7Ci0gICAgICAgIE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2Vy
IGxvZygiRHJhaW4gSU9TdXJmYWNlUG9vbCIpOwotICAgICAgICBJT1N1cmZhY2VQb29sOjpzaGFy
ZWRQb29sKCkuZGlzY2FyZEFsbFN1cmZhY2VzKCk7Ci0gICAgfQorICAgIElPU3VyZmFjZVBvb2w6
OnNoYXJlZFBvb2woKS5kaXNjYXJkQWxsU3VyZmFjZXMoKTsKICNlbmRpZgogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmNwcAppbmRleCA5
NWFjM2YyNzhiOWY0MGVmMDNlNGFhMDQ5YmRjNjUzNGJjY2I2NDZjLi5iOWFjMGU1OTAwZGJmZjkw
OTZlN2IxMWY4MWYwYzZhOWE5NzU0N2IwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9NZW1vcnlQcmVzc3VyZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5jcHAKQEAgLTYxLDYgKzYxLDcgQEAgdm9pZCBNZW1v
cnlQcmVzc3VyZUhhbmRsZXI6OnJlbGVhc2VNZW1vcnkoQ3JpdGljYWwgY3JpdGljYWwsIFN5bmNo
cm9ub3VzIHN5bmNocm8KICAgICBpZiAoIW1fbG93TWVtb3J5SGFuZGxlcikKICAgICAgICAgcmV0
dXJuOwogCisgICAgUmVsaWVmTG9nZ2VyIGxvZygiVG90YWwiKTsKICAgICBtX2xvd01lbW9yeUhh
bmRsZXIoY3JpdGljYWwsIHN5bmNocm9ub3VzKTsKICAgICBwbGF0Zm9ybVJlbGVhc2VNZW1vcnko
Y3JpdGljYWwpOwogfQpAQCAtNzUsMTkgKzc2LDE5IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5k
bGVyOjpSZWxpZWZMb2dnZXI6OmxvZ01lbW9yeVVzYWdlQ2hhbmdlKCkKICNkZWZpbmUgTUVNT1JZ
UFJFU1NVUkVfTE9HKC4uLikgV1RGTG9nQWx3YXlzKF9fVkFfQVJHU19fKQogI2VuZGlmCiAKLSAg
ICBzaXplX3QgY3VycmVudE1lbW9yeSA9IHBsYXRmb3JtTWVtb3J5VXNhZ2UoKTsKLSAgICBpZiAo
Y3VycmVudE1lbW9yeSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KC0xKSB8fCBtX2luaXRpYWxNZW1v
cnkgPT0gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSkpIHsKKyAgICBhdXRvIGN1cnJlbnRNZW1vcnkg
PSBwbGF0Zm9ybU1lbW9yeVVzYWdlKCk7CisgICAgaWYgKCFjdXJyZW50TWVtb3J5IHx8ICFtX2lu
aXRpYWxNZW1vcnkpIHsKICAgICAgICAgTUVNT1JZUFJFU1NVUkVfTE9HKCJNZW1vcnkgcHJlc3N1
cmUgcmVsaWVmOiAiIFNUUklOR19TUEVDSUZJQ0FUSU9OICI6IChVbmFibGUgdG8gZ2V0IGRpcnR5
IG1lbW9yeSBpbmZvcm1hdGlvbiBmb3IgcHJvY2VzcykiLCBtX2xvZ1N0cmluZyk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBsb25nIG1lbW9yeURpZmYgPSBjdXJyZW50TWVtb3J5IC0g
bV9pbml0aWFsTWVtb3J5OwotICAgIGlmIChtZW1vcnlEaWZmIDwgMCkKLSAgICAgICAgTUVNT1JZ
UFJFU1NVUkVfTE9HKCJNZW1vcnkgcHJlc3N1cmUgcmVsaWVmOiAiIFNUUklOR19TUEVDSUZJQ0FU
SU9OICI6IC1kaXJ0eSAlbGQgYnl0ZXMgKGZyb20gJXp1IHRvICV6dSkiLCBtX2xvZ1N0cmluZywg
KG1lbW9yeURpZmYgKiAtMSksIG1faW5pdGlhbE1lbW9yeSwgY3VycmVudE1lbW9yeSk7Ci0gICAg
ZWxzZSBpZiAobWVtb3J5RGlmZiA+IDApCi0gICAgICAgIE1FTU9SWVBSRVNTVVJFX0xPRygiTWVt
b3J5IHByZXNzdXJlIHJlbGllZjogIiBTVFJJTkdfU1BFQ0lGSUNBVElPTiAiOiArZGlydHkgJWxk
IGJ5dGVzIChmcm9tICV6dSB0byAlenUpIiwgbV9sb2dTdHJpbmcsIG1lbW9yeURpZmYsIG1faW5p
dGlhbE1lbW9yeSwgY3VycmVudE1lbW9yeSk7Ci0gICAgZWxzZQotICAgICAgICBNRU1PUllQUkVT
U1VSRV9MT0coIk1lbW9yeSBwcmVzc3VyZSByZWxpZWY6ICIgU1RSSU5HX1NQRUNJRklDQVRJT04g
IjogPWRpcnR5IChhdCAlenUgYnl0ZXMpIiwgbV9sb2dTdHJpbmcsIGN1cnJlbnRNZW1vcnkpOwor
ICAgIGxvbmcgcmVzaWRlbnREaWZmID0gY3VycmVudE1lbW9yeS0+cmVzaWRlbnQgLSBtX2luaXRp
YWxNZW1vcnktPnJlc2lkZW50OworICAgIGxvbmcgcGh5c2ljYWxEaWZmID0gY3VycmVudE1lbW9y
eS0+cGh5c2ljYWwgLSBtX2luaXRpYWxNZW1vcnktPnBoeXNpY2FsOworCisgICAgTUVNT1JZUFJF
U1NVUkVfTE9HKCJNZW1vcnkgcHJlc3N1cmUgcmVsaWVmOiAiIFNUUklOR19TUEVDSUZJQ0FUSU9O
ICI6IHJlcyA9ICV6dS8lenUvJWxkLCByZXMrc3dhcCA9ICV6dS8lenUvJWxkIiwKKyAgICAgICAg
bV9sb2dTdHJpbmcsCisgICAgICAgIG1faW5pdGlhbE1lbW9yeS0+cmVzaWRlbnQsIGN1cnJlbnRN
ZW1vcnktPnJlc2lkZW50LCByZXNpZGVudERpZmYsCisgICAgICAgIG1faW5pdGlhbE1lbW9yeS0+
cGh5c2ljYWwsIGN1cnJlbnRNZW1vcnktPnBoeXNpY2FsLCBwaHlzaWNhbERpZmYpOwogfQogCiAj
aWYgIVBMQVRGT1JNKENPQ09BKSAmJiAhT1MoTElOVVgpICYmICFQTEFURk9STShXSU4pCkBAIC05
Niw3ICs5Nyw3IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjp1bmluc3RhbGwoKSB7IH0K
IHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpob2xkT2ZmKHVuc2lnbmVkKSB7IH0KIHZvaWQg
TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1vcnlQcmVzc3VyZShDcml0aWNhbCwg
U3luY2hyb25vdXMpIHsgfQogdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnBsYXRmb3JtUmVs
ZWFzZU1lbW9yeShDcml0aWNhbCkgeyB9Ci1zaXplX3QgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpS
ZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UoKSB7IHJldHVybiAwOyB9CitzdGQ6Om9w
dGlvbmFsPE1lbW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpNZW1vcnlVc2FnZT4g
TWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2Uo
KSB7IHJldHVybiBzdGQ6Om51bGxvcHQ7IH0KICNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NZW1vcnlQcmVzc3VyZUhh
bmRsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5o
CmluZGV4IGY5ZmQzYTY5ZmVhZDMwYmY0ZTZmOGNkMTEyMDdlNDdlYTliMjdiZTYuLmY4NmU5YmUz
ZjZlNTY2YzY4NDM0YWNkYjU1NTMzNjNiNmQwMzU0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL01lbW9yeVByZXNzdXJlSGFuZGxlci5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSA8d3RmL0Zhc3RNYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogCiAj
aWYgUExBVEZPUk0oSU9TKQogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CkBAIC05MCwzNCArOTEsMzgg
QEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgZXhwbGljaXQgUmVsaWVmTG9nZ2VyKGNv
bnN0IGNoYXIgKmxvZykKICAgICAgICAgICAgIDogbV9sb2dTdHJpbmcobG9nKQotI2lmICFSRUxF
QVNFX0xPR19ESVNBQkxFRAotICAgICAgICAgICAgLCBtX2luaXRpYWxNZW1vcnkocGxhdGZvcm1N
ZW1vcnlVc2FnZSgpKQotI2Vsc2UKLSAgICAgICAgICAgICwgbV9pbml0aWFsTWVtb3J5KHNfbG9n
Z2luZ0VuYWJsZWQgPyBwbGF0Zm9ybU1lbW9yeVVzYWdlKCkgOiAwKQotI2VuZGlmCisgICAgICAg
ICAgICAsIG1faW5pdGlhbE1lbW9yeShsb2dnaW5nRW5hYmxlZCgpID8gcGxhdGZvcm1NZW1vcnlV
c2FnZSgpIDogTWVtb3J5VXNhZ2UgeyB9KQogICAgICAgICB7CiAgICAgICAgIH0KIAogICAgICAg
ICB+UmVsaWVmTG9nZ2VyKCkKICAgICAgICAgewotI2lmICFSRUxFQVNFX0xPR19ESVNBQkxFRAot
ICAgICAgICAgICAgbG9nTWVtb3J5VXNhZ2VDaGFuZ2UoKTsKLSNlbHNlCi0gICAgICAgICAgICBp
ZiAoc19sb2dnaW5nRW5hYmxlZCkKKyAgICAgICAgICAgIGlmIChsb2dnaW5nRW5hYmxlZCgpKQog
ICAgICAgICAgICAgICAgIGxvZ01lbW9yeVVzYWdlQ2hhbmdlKCk7Ci0jZW5kaWYKICAgICAgICAg
fQogCisKICAgICAgICAgY29uc3QgY2hhciogbG9nU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9s
b2dTdHJpbmc7IH0KICAgICAgICAgc3RhdGljIHZvaWQgc2V0TG9nZ2luZ0VuYWJsZWQoYm9vbCBl
bmFibGVkKSB7IHNfbG9nZ2luZ0VuYWJsZWQgPSBlbmFibGVkOyB9Ci0gICAgICAgIHN0YXRpYyBi
b29sIGxvZ2dpbmdFbmFibGVkKCkgeyByZXR1cm4gc19sb2dnaW5nRW5hYmxlZDsgfQorICAgICAg
ICBzdGF0aWMgYm9vbCBsb2dnaW5nRW5hYmxlZCgpCisgICAgICAgIHsKKyNpZiBSRUxFQVNFX0xP
R19ESVNBQkxFRAorICAgICAgICAgICAgcmV0dXJuIHNfbG9nZ2luZ0VuYWJsZWQ7CisjZWxzZQor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyAgICAgICAgfQogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgc2l6ZV90IHBsYXRmb3JtTWVtb3J5VXNhZ2UoKTsKKyAgICAgICAgc3RydWN0
IE1lbW9yeVVzYWdlIHsKKyAgICAgICAgICAgIHNpemVfdCByZXNpZGVudCB7IDAgfTsKKyAgICAg
ICAgICAgIHNpemVfdCBwaHlzaWNhbCB7IDAgfTsKKyAgICAgICAgfTsKKyAgICAgICAgc3RkOjpv
cHRpb25hbDxNZW1vcnlVc2FnZT4gcGxhdGZvcm1NZW1vcnlVc2FnZSgpOwogICAgICAgICB2b2lk
IGxvZ01lbW9yeVVzYWdlQ2hhbmdlKCk7CiAKICAgICAgICAgY29uc3QgY2hhciogbV9sb2dTdHJp
bmc7Ci0gICAgICAgIHNpemVfdCBtX2luaXRpYWxNZW1vcnk7CisgICAgICAgIHN0ZDo6b3B0aW9u
YWw8TWVtb3J5VXNhZ2U+IG1faW5pdGlhbE1lbW9yeTsKIAogICAgICAgICBXRUJDT1JFX0VYUE9S
VCBzdGF0aWMgYm9vbCBzX2xvZ2dpbmdFbmFibGVkOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9NZW1vcnlQcmVzc3VyZUhhbmRsZXJDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29h
Lm1tCmluZGV4IDNiYjFlMGRiNTU1MjNhNWE3ZDIzNGJkNjdkYzdkNDc4NDMyYzZkMDEuLjNlZWM3
YzdhYzcyYThlNzBmZjY5NjVhYmI1ZjQ3ODhkNzk3ZWU2ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29hLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL01lbW9yeVByZXNzdXJlSGFuZGxlckNvY29h
Lm1tCkBAIC00OSw3ICs0OSw2IEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpwbGF0Zm9y
bVJlbGVhc2VNZW1vcnkoQ3JpdGljYWwgY3JpdGljYWwpCiAgICAgaWYgKGNyaXRpY2FsID09IENy
aXRpY2FsOjpZZXMgJiYgKCFpc1VuZGVyTWVtb3J5UHJlc3N1cmUoKSB8fCBtX2lzU2ltdWxhdGlu
Z01lbW9yeVByZXNzdXJlKSkgewogICAgICAgICAvLyBsaWJjYWNoZSBsaXN0ZW5zIHRvIE9TIG1l
bW9yeSBub3RpZmljYXRpb25zLCBidXQgZm9yIHByb2Nlc3Mgc3VzcGVuc2lvbgogICAgICAgICAv
LyBvciBtZW1vcnkgcHJlc3N1cmUgc2ltdWxhdGlvbiwgd2UgbmVlZCB0byBwcm9kIGl0IG1hbnVh
bGx5OgotICAgICAgICBSZWxpZWZMb2dnZXIgbG9nKCJQdXJnaW5nIGxpYmNhY2hlIGNhY2hlcyIp
OwogICAgICAgICBjYWNoZV9zaW11bGF0ZV9tZW1vcnlfd2FybmluZ19ldmVudChESVNQQVRDSF9N
RU1PUllQUkVTU1VSRV9DUklUSUNBTCk7CiAgICAgfQogfQpAQCAtMTg2LDE1ICsxODUsMTUgQEAg
dm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01lbW9yeVByZXNzdXJlKENyaXRp
Y2FsIGNyaXRpY2FsLCBTeW5jaHJvbm8KICNlbmRpZgogfQogCi1zaXplX3QgTWVtb3J5UHJlc3N1
cmVIYW5kbGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UoKQorc3RkOjpvcHRp
b25hbDxNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxvZ2dlcjo6TWVtb3J5VXNhZ2U+IE1l
bW9yeVByZXNzdXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpwbGF0Zm9ybU1lbW9yeVVzYWdlKCkK
IHsKICAgICB0YXNrX3ZtX2luZm9fZGF0YV90IHZtSW5mbzsKICAgICBtYWNoX21zZ190eXBlX251
bWJlcl90IGNvdW50ID0gVEFTS19WTV9JTkZPX0NPVU5UOwogICAgIGtlcm5fcmV0dXJuX3QgZXJy
ID0gdGFza19pbmZvKG1hY2hfdGFza19zZWxmKCksIFRBU0tfVk1fSU5GTywgKHRhc2tfaW5mb190
KSAmdm1JbmZvLCAmY291bnQpOwogICAgIGlmIChlcnIgIT0gS0VSTl9TVUNDRVNTKQotICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90PigtMSk7CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8c2l6ZV90Pih2bUluZm8uaW50ZXJuYWwp
OworICAgIHJldHVybiBNZW1vcnlVc2FnZSB7c3RhdGljX2Nhc3Q8c2l6ZV90Pih2bUluZm8uaW50
ZXJuYWwpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHZtSW5mby5waHlzX2Zvb3RwcmludCl9OwogfQog
CiAjaWYgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbGludXgvTWVtb3J5UHJlc3N1cmVIYW5kbGVyTGludXguY3BwCmluZGV4IDQyMWM2MTYw
Zjg4OTEyNDY0NzczZDRlYTNmY2FlZDQ5NjNkNWE3ZmQuLjRkMzNhYmZhOGRhYTEyZWNmZmM3MWMy
OTYxMmZhOTM0ZWI4N2NlM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2xp
bnV4L01lbW9yeVByZXNzdXJlSGFuZGxlckxpbnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9saW51eC9NZW1vcnlQcmVzc3VyZUhhbmRsZXJMaW51eC5jcHAKQEAgLTI5MiwxNCAr
MjkyLDEzIEBAIHZvaWQgTWVtb3J5UHJlc3N1cmVIYW5kbGVyOjpyZXNwb25kVG9NZW1vcnlQcmVz
c3VyZShDcml0aWNhbCBjcml0aWNhbCwgU3luY2hyb25vCiB2b2lkIE1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6cGxhdGZvcm1SZWxlYXNlTWVtb3J5KENyaXRpY2FsKQogewogI2lmZGVmIF9fR0xJQkNf
XwotICAgIFJlbGllZkxvZ2dlciBsb2coIlJ1biBtYWxsb2NfdHJpbSIpOwogICAgIG1hbGxvY190
cmltKDApOwogI2VuZGlmCiB9CiAKLXNpemVfdCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGll
ZkxvZ2dlcjo6cGxhdGZvcm1NZW1vcnlVc2FnZSgpCitzdGQ6Om9wdGlvbmFsPE1lbW9yeVByZXNz
dXJlSGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpNZW1vcnlVc2FnZT4gTWVtb3J5UHJlc3N1cmVIYW5k
bGVyOjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UoKQogewotICAgIHJldHVybiBw
cm9jZXNzTWVtb3J5VXNhZ2UoKTsKKyAgICByZXR1cm4gTWVtb3J5VXNhZ2Uge3Byb2Nlc3NNZW1v
cnlVc2FnZSgpLCAwfTsKIH0KIAogdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnNldE1lbW9y
eVByZXNzdXJlTW9uaXRvckhhbmRsZShpbnQgZmQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vTWVtb3J5UHJlc3N1cmVIYW5kbGVyV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9NZW1vcnlQcmVzc3VyZUhhbmRsZXJXaW4uY3BwCmluZGV4IGZjODdi
NzAzMjkyMzg3MTZkMWM2MzU4NzhjZTA3OTJkYmI3ZGZkMzIuLmQxNDgwZGZjZWMzMWY4NzU0MzYw
NjhlMTBkNDIyZTM4ZWM2NDFiM2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3dpbi9NZW1vcnlQcmVzc3VyZUhhbmRsZXJXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9NZW1vcnlQcmVzc3VyZUhhbmRsZXJXaW4uY3BwCkBAIC0xMjQsOSArMTI0LDkg
QEAgdm9pZCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OnJlc3BvbmRUb01lbW9yeVByZXNzdXJlKENy
aXRpY2FsIGNyaXRpY2FsLCBTeW5jaHJvbm8KICAgICByZWxlYXNlTWVtb3J5KGNyaXRpY2FsLCBz
eW5jaHJvbm91cyk7CiB9CiAKLXNpemVfdCBNZW1vcnlQcmVzc3VyZUhhbmRsZXI6OlJlbGllZkxv
Z2dlcjo6cGxhdGZvcm1NZW1vcnlVc2FnZSgpCitzdGQ6Om9wdGlvbmFsPE1lbW9yeVByZXNzdXJl
SGFuZGxlcjo6UmVsaWVmTG9nZ2VyOjpNZW1vcnlVc2FnZT4gTWVtb3J5UHJlc3N1cmVIYW5kbGVy
OjpSZWxpZWZMb2dnZXI6OnBsYXRmb3JtTWVtb3J5VXNhZ2UoKQogewotICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297025</attachid>
            <date>2016-12-13 10:51:07 -0800</date>
            <delta_ts>2016-12-13 22:08:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165533-20161213105018.patch</filename>
            <type>text/plain</type>
            <size>1527</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA5NzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTg4MjMwOGU2ZWM5ZWNh
ZGE4NzkwYzRhNTc5NTQ0ZjljZWIxZDQ2YS4uZjg5MmIxYzE1NzIwOGRkNjNkZTgzMDIyYjhiYzk0
OGJiMGU2ZGQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE2LTEyLTEzICBLZWl0
aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBNZW1vcnkgd2FybmluZyBs
b2dnaW5nIGFwcGVhcnMgdG8gY2FwdHVyZSByZXNpZGVudCBmb290cHJpbnQsIG1pc3NpbmcgY29t
cHJlc3Mvc3dhcC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NTUzMworICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjkzMTg0MTA+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IEdUSyBidWlsZCBieSBh
ZGRpbmcgYW4gZXhwbGljaXQgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9NZW1v
cnlQcmVzc3VyZUhhbmRsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lbW9yeVByZXNzdXJlSGFu
ZGxlcjo6UmVsaWVmTG9nZ2VyOjpNZW1vcnlVc2FnZTo6TWVtb3J5VXNhZ2UpOgorCiAyMDE2LTEy
LTA5ICBLZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KIAogICAgICAgICBNZW1vcnkg
d2FybmluZyBsb2dnaW5nIGFwcGVhcnMgdG8gY2FwdHVyZSByZXNpZGVudCBmb290cHJpbnQsIG1p
c3NpbmcgY29tcHJlc3Mvc3dhcC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L01lbW9yeVByZXNzdXJlSGFuZGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5
UHJlc3N1cmVIYW5kbGVyLmgKaW5kZXggZjg2ZTliZTNmNmU1NjZjNjg0MzRhY2RiNTU1MzM2M2I2
ZDAzNTQwNy4uNjFlMzQyNzVmM2YzM2FiYzYyZWI3OWQzNzhmNDg1ZmZjNzhmNjhiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmgKQEAgLTEx
NSw2ICsxMTUsMTAgQEAgcHVibGljOgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgc3RydWN0IE1l
bW9yeVVzYWdlIHsKKyAgICAgICAgICAgIE1lbW9yeVVzYWdlKCkgPSBkZWZhdWx0OworICAgICAg
ICAgICAgTWVtb3J5VXNhZ2Uoc2l6ZV90IHJlc2lkZW50LCBzaXplX3QgcGh5c2ljYWwpCisgICAg
ICAgICAgICAgICAgOiByZXNpZGVudChyZXNpZGVudCkKKyAgICAgICAgICAgICAgICAsIHBoeXNp
Y2FsKHBoeXNpY2FsKSB7IH0KICAgICAgICAgICAgIHNpemVfdCByZXNpZGVudCB7IDAgfTsKICAg
ICAgICAgICAgIHNpemVfdCBwaHlzaWNhbCB7IDAgfTsKICAgICAgICAgfTsK
</data>
<flag name="review"
          id="319413"
          type_id="1"
          status="+"
          setter="dbates"
    />
          </attachment>
      

    </bug>

</bugzilla>